# 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 レビューで指摘されやすい点)
- クリックハンドラを付けるなら `