ksk-design-system 2.6.3 → 2.6.4

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.
@@ -0,0 +1,73 @@
1
+ {
2
+ "description": "迷いやすい部品の使い分け。基本用途とルールはcomponents.jsonを参照する。",
3
+ "groups": [
4
+ {
5
+ "names": [
6
+ "Sheet",
7
+ "ResponsiveOverlayFrame",
8
+ "ResponsiveDialog"
9
+ ],
10
+ "difference": "Sheetは幅に追従するシート。ResponsiveDialogとResponsiveOverlayFrameの組み合わせはモバイルのシートをPCでは中央ダイアログに切り替える。シートのままでよい場合はSheetを選ぶ。",
11
+ "avoid": "削除など取り消せない操作の確認にはAlertDialogを使う。"
12
+ },
13
+ {
14
+ "names": [
15
+ "ChipSelector",
16
+ "PillToggle",
17
+ "Select",
18
+ "FilterPill",
19
+ "FilterChip"
20
+ ],
21
+ "difference": "ChipSelectorは複数または単一の選択肢を並べる。PillToggleは少数の値を単一選択する。Selectは候補を開いて選ぶ。FilterPillは条件設定パネルを開く操作と解除、FilterChipは適用中の条件の表示に使う。",
22
+ "avoid": "選択と画面遷移を混ぜない。画面の切り替えにはTabs、ページ移動にはナビゲーションを使う。"
23
+ },
24
+ {
25
+ "names": [
26
+ "FormField",
27
+ "RhfFormField"
28
+ ],
29
+ "difference": "patterns/form-fieldのFormFieldはラベル・説明・エラーを入力に関連付ける。RhfFormFieldはreact-hook-formのController連携用。単純なフォームでは前者を使う。",
30
+ "avoid": "react-hook-formを使わないフォームにRhfFormFieldを導入しない。"
31
+ },
32
+ {
33
+ "names": [
34
+ "Button",
35
+ "IconButton",
36
+ "ActionTile",
37
+ "QuickActionGrid"
38
+ ],
39
+ "difference": "Buttonは文言で操作を示す。IconButtonは意味が明確な短い操作に使いアクセシブルな名前を付ける。ActionTileは説明や選択状態を持つタイル、QuickActionGridはその配置に使う。",
40
+ "avoid": "単なる説明を押せるボタンにしない。複数の値選択は専用の選択コンポーネントを使う。"
41
+ },
42
+ {
43
+ "names": [
44
+ "EmptyState",
45
+ "ErrorState",
46
+ "Skeleton",
47
+ "Spinner"
48
+ ],
49
+ "difference": "取得成功で0件ならEmptyState、取得失敗ならErrorStateと再試行。Skeletonは内容の形が分かる読み込み、Spinnerは処理の進行中を示す。",
50
+ "avoid": "取得に失敗した状態を「0件」と表示しない。"
51
+ },
52
+ {
53
+ "names": [
54
+ "Input",
55
+ "Textarea",
56
+ "AutoGrowTextarea",
57
+ "NumberInput",
58
+ "DateField"
59
+ ],
60
+ "difference": "Inputは短い自由入力、Textareaは複数行、AutoGrowTextareaは内容に応じて高さが伸びる複数行入力です。数値の増減にはNumberInput、日付にはDateFieldを使います。ラベル・説明・エラーはFormFieldで関連付けます。",
61
+ "avoid": "決まった候補から選ぶ場合はSelectやRadioGroupを使います。長い文章の入力を1行のInputに押し込めず、複数行の入力欄を使います。"
62
+ },
63
+ {
64
+ "names": [
65
+ "SubNav",
66
+ "SectionNav",
67
+ "Tabs"
68
+ ],
69
+ "difference": "TabsとSubNavは同じ画面内の表示内容を切り替えるための部品です。SubNavは横スクロールする項目列、Tabsは項目と対応する表示領域を組み合わせます。SectionNavは同じページ内の見出しへ移動する目次です。",
70
+ "avoid": "ページ内の見出しへスクロールするだけの操作をタブ切り替えとして実装しないでください。別ページへ移動する場合はリンクを使います。"
71
+ }
72
+ ]
73
+ }
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "meta": {
3
3
  "name": "KSK Design System — Component Contracts",
4
- "version": "2.6.3",
4
+ "version": "2.6.4",
5
5
  "description": "全コンポーネントの構造化定義。バリアント・アクセシビリティ要件・使用ルールを機械可読形式で管理。",
6
6
  "counts": {
7
- "ui": 68,
7
+ "ui": 69,
8
8
  "patterns": 61,
9
9
  "commerce": 12,
10
10
  "admin": 8,
11
11
  "shells": 3,
12
- "total": 152
12
+ "total": 153
13
13
  },
14
14
  "exportNaming": {
15
15
  "_doc": "contracts の name が `import { name } from \"ksk-design-system\"` で解決できるかを示す。__tests__/contracts-export-integrity.test.ts が src/index.ts の実 export と突き合わせて固定する。",
@@ -1220,6 +1220,29 @@
1220
1220
  "最大幅・中央寄せ・左右 gutter は内側の Container に委ねる",
1221
1221
  "footer の全幅背景帯には as=\"footer\" を使える"
1222
1222
  ]
1223
+ },
1224
+ {
1225
+ "name": "SemanticIcon",
1226
+ "description": "用途から選ぶ装飾アイコン。情報i・警告!・枠なし選択tickを区別。NativeはSVG依存なしのView描画で同じ意味を提供。",
1227
+ "variants": [
1228
+ "selected",
1229
+ "selectedSquare",
1230
+ "success",
1231
+ "close",
1232
+ "info",
1233
+ "warning"
1234
+ ],
1235
+ "rules": [
1236
+ "装飾は既定で読み上げない。単独の情報画像にはaria-labelを指定する。",
1237
+ "アイコンのみの操作はButton / native IconButtonに操作名を付ける。",
1238
+ "Nativeの警告は円形の感嘆符、Webはiconsax Danger。意味は同一だが描画素材に合わせて器の形が異なる。"
1239
+ ],
1240
+ "path": "src/components/ui/semantic-icon.tsx",
1241
+ "props": {
1242
+ "name": "selected | selectedSquare | success | close | info | warning — 意味を必ず指定",
1243
+ "size": "number | string (Web), number (Native) — 既定24",
1244
+ "accessibilityLabel": "string — 単独の情報画像に付ける名前。Webはaria-labelを優先"
1245
+ }
1223
1246
  }
1224
1247
  ],
1225
1248
  "patterns": [
@@ -0,0 +1,29 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "policy": "Record only observations actually performed on the exact revision and stated OS, including failed checks. Bundling, typechecks and React Native Web are not device verification.",
4
+ "checks": [
5
+ { "id": "safe-area", "components": ["Sheet", "Screen"], "procedure": "Open sheet at both snap points; rotate; confirm title and footer avoid notch and home indicator." },
6
+ { "id": "keyboard", "components": ["Input", "KeyboardAwareSheetFooter", "Sheet"], "procedure": "Focus first/last input, enter Japanese, scroll and dismiss keyboard; verify focused field and submit remain reachable, no double inset." },
7
+ { "id": "font-scale", "components": ["Text", "Button", "Input", "Sheet"], "procedure": "Set OS accessibility text size to largest, reopen app; verify full labels wrap and controls remain reachable." },
8
+ { "id": "sheet-gesture", "components": ["Sheet"], "procedure": "Drag handle between 0.5 and 0.9, scroll inner content, dismiss and reopen five times; ensure no invisible input-blocking modal." },
9
+ { "id": "screen-reader", "components": ["Button", "Input", "Sheet"], "procedure": "Enable VoiceOver/TalkBack; verify names, modal focus, field labels and close action." }
10
+ ],
11
+ "observations": [
12
+ {
13
+ "checkId": "keyboard",
14
+ "components": [
15
+ "Input",
16
+ "KeyboardAwareSheetFooter",
17
+ "Sheet"
18
+ ],
19
+ "platform": "ios",
20
+ "os": "26.5",
21
+ "device": "iPhone 17 Pro Simulator",
22
+ "revision": "906f830c278bcef8703bcc2f4179139eec9b58bb",
23
+ "checkedAt": "2026-09-25T05:12:00Z",
24
+ "status": "failed",
25
+ "evidence": "docs/native-review-2026-09-25.md",
26
+ "notes": "項目1への日本語入力後、ソフトキーボードで保存フッターが隠れた。"
27
+ }
28
+ ]
29
+ }
@@ -149,7 +149,8 @@
149
149
  "--Space-Section-2xl"
150
150
  ],
151
151
  "chip": [
152
- "--Chip-Radius"
152
+ "--Chip-Radius",
153
+ "--Chip-Remove-Width"
153
154
  ],
154
155
  "productTypography": [
155
156
  "--Product-Type-Scale"
@@ -185,6 +186,12 @@
185
186
  ],
186
187
  "toast": [
187
188
  "--Toast-Viewport-Offset-Bottom"
189
+ ],
190
+ "settingsRow": [
191
+ "--Settings-Row-Min-Height",
192
+ "--Settings-Row-Gap",
193
+ "--Settings-Row-Padding-X",
194
+ "--Settings-Row-Padding-Y"
188
195
  ]
189
196
  },
190
197
  "dsVariableNamespaces": [
@@ -212,6 +219,7 @@
212
219
  "--Field-",
213
220
  "--Product-",
214
221
  "--Chip-",
222
+ "--Settings-",
215
223
  "--glass-",
216
224
  "--card-surface",
217
225
  "--Nav-",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "meta": {
3
3
  "name": "KSK Design System — Semantic Token Hex Cache",
4
- "version": "2.6.3",
4
+ "version": "2.6.4",
5
5
  "description": "semantic / semanticDark トークン(var(--Primitive-*) 参照)を実 hex に解決したサイドカー生成物。hex はデフォルト(Blue)テーマでの解決値であり、Brand 系(meta.themeDependentKeys に列挙)はテーマ差し替え(orange/green/violet 等)で実色が変わる。テーマ別の完全解決値は `ksk-design-system/native` エクスポート(バンドル済み native トークンモジュール)の themes を参照。tokens.json 本体のスキーマは変更せず、AI がこのファイルだけで実色を把握できるようにし、primitive 値の変更による semantic 実色のドリフトを --check で機械検出する。",
6
6
  "generatedBy": "scripts/generate-token-hex-cache.mjs",
7
7
  "theme": "default",