import { useEffect, useState } from 'react' import { useLocale } from '@/lib/useLocale' import { useUITranslation } from '@/lib/useUITranslation' import PrefetchLink from '@/components/PrefetchLink' import FormField from '@/components/common/FormField' import PageTitle from '@/components/common/PageTitle' import MainArea from '@/components/layout/MainArea' import PageHead from '@/components/common/PageHead' import { apiGet } from '@/lib/api' import { dateString, inputClass } from '@/lib/utils' import type { FormEvent , FC } from 'react' import type { WikiPage } from '@/types' const WikiSearchPage: FC = () => { const { message, label } = useUITranslation ('shared') const locale = useLocale () const [title, setTitle] = useState ('') const [text, setText] = useState ('') const [results, setResults] = useState ([]) const search = async () => { setResults (await apiGet ('/wiki', { locale, params: { title } })) } const handleSearch = (ev: FormEvent) => { ev.preventDefault () search () } useEffect (() => { void (async () => { setResults (await apiGet ('/wiki', { locale, params: { title: '' } })) }) () }, [locale]) return (
{label ('navigation:wiki')}
{/* タイトル */} {({ invalid }) => ( setTitle (e.target.value)} className={inputClass (invalid)}/>)} {/* 内容 */} {({ invalid }) => ( setText (e.target.value)} className={inputClass (invalid)}/>)} {/* 検索 */}
{results.map (page => ( ))}
{label ('labels.title')} {label ('labels.lastUpdated')}
{page.title} {page.deprecatedAt != null && label ('labels.deprecatedSuffix')} {dateString (page.updatedAt)}
) } export default WikiSearchPage