# Frontend (`packages/frontend`) 規約 Vue 3.5 + Vite + Storybook + Cypress E2E。 ## コンポーネント命名 - 共有 / 再利用コンポーネントは **`Mk` プレフィックス** (例: `MkButton.vue`, `MkInput.vue`, `MkAbuseReport.vue`)。 - ページ単位のものは `packages/frontend/src/pages/` 配下に置く。 ## SFC スタイル Composition API + ` ``` ## 国際化 (i18n) - 文字列リテラルを直書きしない。 - 引数なし: `i18n.ts.` で参照する (例: `i18n.ts.deleted`)。 - 引数あり: `i18n.tsx.(...)` で関数呼び出しする (例: `i18n.tsx.takeOverConfirm({ name })`)。 - 新規キーは **`locales/ja-JP.yml` のみ** に追加する (他言語は Crowdin で自動配信)。 - `i18n` は `packages/frontend/src/i18n.ts` (または共有モジュール) から import する。 ## モーダル / 通知 - `os.ts` (`packages/frontend/src/os.ts`) 経由で呼ぶ。 - `os.alert(...)` / `os.confirm(...)` / `os.popup(...)` / `os.success(...)` など。 - ブラウザ標準の `window.alert()` / `window.confirm()` を **直接呼ばない**。 ## アクセシビリティ (PR レビューで指摘されやすい点) - クリックハンドラを付けるなら `