required-doc 0.0.6 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -99,6 +99,16 @@ createSpecViewer({
99
99
  components: [Input, Button],
100
100
  pages: [loginPage],
101
101
  colors,
102
+ options: {
103
+ devices: [
104
+ { id: 'pc', label: 'PC', frame: 'pc', minWidth: 1024, maxWidth: 1920 },
105
+ { id: 'phone', label: 'Phone', frame: 'phone', minWidth: 320, maxWidth: 1023 },
106
+ ],
107
+ baseColors: {
108
+ light: { bg: '#f5f6f8', font: '#1f2937' },
109
+ dark: { bg: '#131313', font: '#f3f3f3' },
110
+ },
111
+ },
102
112
  }).mount('#app')
103
113
  ```
104
114
 
@@ -159,8 +169,30 @@ const meta: ItemMeta = {
159
169
  export default meta
160
170
  ```
161
171
 
162
- - `view`: モックの表示物。**素の HTML 文字列(`?raw`)** または Vue コンポーネント。
163
- - `req`: 要件の Markdown 文字列(`?raw`)。
172
+ - `view`: 単一 mock のとき。**HTML 文字列(`?raw`)** または Vue コンポーネント。
173
+ - `variants`: 状態別 mock(例: 0件 / 10件)。**2 件以上**で mock 内にタブが出る。`variants` を使う場合 `view` は省略可。
174
+ - `req`: 要件 Markdown(状態共通)。
175
+
176
+ ```ts
177
+ const meta: ItemMeta = {
178
+ name: 'CollageListPage',
179
+ kind: 'page',
180
+ title: 'コラージュ一覧',
181
+ desc: '…',
182
+ latest: 'v1',
183
+ versions: {
184
+ v1: {
185
+ req: CollageListReq,
186
+ variants: [
187
+ { id: 'empty', label: '0件', view: CollageListEmptyMock },
188
+ { id: 'full', label: '10件', view: CollageListFullMock },
189
+ ],
190
+ },
191
+ },
192
+ }
193
+ ```
194
+
195
+ 単一 mock の従来形(`view` のみ)もそのまま使える。
164
196
 
165
197
  作ったら `main.ts` の `components` / `pages` 配列に 1 行足す。
166
198
 
@@ -207,19 +239,19 @@ export const colors: ColorToken[] = [
207
239
 
208
240
  ## オプション(`createSpecViewer({ ..., options })`)
209
241
 
210
- すべて**任意**。省略すればデフォルトが使われる(書くのは変えたい項目だけでOK)。
242
+ `showThemeToggle` 以外は**省略時デフォルトなし**。`devices` と `baseColors` は利用側で必ず指定する。
211
243
 
212
244
  ```ts
213
245
  createSpecViewer({
214
246
  components, pages, colors,
215
247
  options: {
216
- showThemeToggle: true, // ダーク/ライト切替ボタンの表示(既定 true)
217
- devices: [ // mock の端末タブ(既定 PC / Phone)
218
- { id: 'pc', label: 'PC', frame: 'pc', width: 1024 },
219
- { id: 'tablet', label: 'Tablet', frame: 'tablet', width: 768 },
220
- { id: 'phone', label: 'Phone', frame: 'phone', width: 360 },
248
+ showThemeToggle: true, // ダーク/ライト切替ボタン(省略時 true)
249
+ devices: [ // mock の端末タブ(必須)
250
+ { id: 'pc', label: 'PC', frame: 'pc', minWidth: 1024, maxWidth: 1920 },
251
+ { id: 'tablet', label: 'Tablet', frame: 'tablet', minWidth: 768, maxWidth: 1024 },
252
+ { id: 'phone', label: 'Phone', frame: 'phone', minWidth: 320, maxWidth: 1023 },
221
253
  ],
222
- baseColors: { // モック画面の基本色(既定は下記の値)
254
+ baseColors: { // モック画面の基本色(必須)
223
255
  light: { bg: '#f5f6f8', font: '#1f2937' },
224
256
  dark: { bg: '#131313', font: '#f3f3f3' },
225
257
  },
@@ -233,29 +265,36 @@ createSpecViewer({
233
265
 
234
266
  ### devices
235
267
 
236
- mock 上部のタブに出る端末リスト。
268
+ mock 上部のタブに出る端末リスト。**タブごとに min〜max の範囲が独立**している(Phone の max を超えて PC 幅にはならない)。
237
269
 
238
270
  | フィールド | 説明 |
239
271
  | --- | --- |
240
272
  | `id` | タブ識別子(例 `'pc'`) |
241
273
  | `label` | タブ表示名(例 `'PC'`) |
242
274
  | `frame` | 枠の見た目。`'pc'`=ブラウザ風 / `'phone'`=ノッチ付き / `'tablet'`=ノッチなしベゼル |
243
- | `width` | 画面幅(**px・必須**) |
275
+ | `minWidth` | mock の **viewport 最小幅**(px)。端末枠・ノッチは含まない |
276
+ | `maxWidth` | mock の **viewport 最大幅**(px)。端末枠・ノッチは含まない |
244
277
 
245
278
  - 配列を 1 件だけ(例: PC のみ)にすると端末タブ自体が消える。
246
- - `width` は**デザインの実寸**。ペースに収まらなければ縮めず、**全体を縮尺(最大 1x、はみ出す分だけ縮小)**して表示する。
279
+ - `minWidth === maxWidth` の端末は幅固定(リサイズハンドル非表示)。
280
+ - 表示幅は **mock が描画される viewport 幅**。Phone の黒ベゼル・ノッチはその外側の装飾として重ねる(mock の左右 padding は付けない)。
281
+ - 詳細画面: 右端ドラッグで **選択中タブの min〜max** の範囲内に変更。ペースに収まらなければ**端末枠込みで縮尺**(最大 1x)。
282
+ - タブ切替時は現在幅を引き継ぎ、新タブの min〜max に clamp する。
247
283
 
248
284
  ### baseColors
249
285
 
250
- モック画面(PC/Tablet/Phone の画面・全画面プレビュー)の**背景色と基本文字色**を、ライト/ダークごとに指定する。
286
+ モック画面(PC/Tablet/Phone の画面・プレビュー)の**背景色と基本文字色**を、ライト/ダークごとに指定する。
251
287
  ここで指定した値は `/colors` の一覧に `baseBg` / `baseFont` として自動表示される(情報源が二重化しない)。
252
288
 
253
289
  ---
254
290
 
255
291
  ## プレビューモード
256
292
 
257
- - ヘッダの「プレビュー」ボタンで、**要件パネルを隠し画面そのものだけを全画面表示**する。
258
- - 余計な枠・ヘッダ・ラベルは出さず、選択中端末の `width` で実寸レイアウト ビューポートに合わせて縮尺表示。
293
+ - ヘッダの「プレビュー」ボタンで、**要件パネルを隠して全画面表示**する。
294
+ - **詳細画面と同じ端末枠・同じ viewport 幅**で mock を **1:1** 表示する(縮尺なし。はみ出す場合はスクロール)。
295
+ - mock の viewport がブラウザより**狭い**ときだけ、外側に境界線(グレー背景 + ボーダー)を出す。**同幅なら枠なし**。
296
+ - 右端ドラッグで幅変更可能(詳細と同じく、**プレビュー前に選んだ端末タブの min〜max 内**)。
297
+ - 端末タブはプレビュー中は出ない(詳細で選んだ端末を引き継ぐ)。
259
298
  - 退室は **`Esc`** または右上の「閉じる」ボタン。
260
299
 
261
300
  ---
@@ -264,7 +303,7 @@ mock 上部のタブに出る端末リスト。
264
303
 
265
304
  - `createSpecViewer(config)` が `config` を `registryStore` に注入し、ルータ付き Vue アプリを返す。
266
305
  - ルート: `/catalog`, `/components/:name/:ver?`, `/pages/:name/:ver?`, `/colors`。
267
- - `ReqScreen.vue` が額縁(ヘッダ / 左モック / 右要件)と端末枠・縮尺・プレビューを担当。
306
+ - `ReqScreen.vue` が額縁(ヘッダ / mock / 右要件)と端末枠・縮尺・プレビューを担当。端末枠は `MockDeviceFrame.vue`。
268
307
  - Tailwind ユーティリティはパッケージに同梱せず、**利用側の `@source` 経由で生成**(`dist/index.js` 内のクラス文字列を走査)。パッケージ同梱の `style.css` は req-md 等の独自スタイルのみ。
269
308
 
270
309
  ### 公開 API / 型
@@ -290,9 +329,8 @@ import {
290
329
  | --- | --- |
291
330
  | 部品/画面を追加 | `meta.ts` + `v1/*.html` + `v1/*.req.md` を作り、`main.ts` の配列に追加 |
292
331
  | バージョンを増やす | `v2/` を足して `meta.ts` の `versions` と `latest` を更新 |
293
- | 端末を変える | `options.devices` を編集(PC のみ・Tablet 追加など) |
294
- | 端末の幅を変える | device `width`(px) |
332
+ | 端末を変える | 詳細画面の mock 上部タブ、または `options.devices` を編集 |
333
+ | 端末の幅を変える | 詳細 / プレビューで右端ドラッグ(選択中タブの `minWidth`〜`maxWidth` 内) |
295
334
  | ダーク切替を隠す | `options.showThemeToggle: false` |
296
335
  | モックの基本色を変える | `options.baseColors`(`/colors` にも反映) |
297
336
  | ビューア本体を直した | `cd npm_pack && npm run build` で再ビルド |
298
- ```