@cakejp/design-system 0.17.1 → 0.19.0

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.
Files changed (88) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/CLAUDE.md +15 -0
  3. package/contracts/components.json +144 -16
  4. package/contracts/composition.json +1 -1
  5. package/contracts/rules.json +5 -1
  6. package/contracts/screen-patterns.json +1 -1
  7. package/dist/components/ec/admin-shell.js +7 -6
  8. package/dist/components/ec/product-card.js +107 -102
  9. package/dist/components/ec/product-option.js +1 -0
  10. package/dist/components/ec/review-card.js +22 -20
  11. package/dist/components/ec/review-form.js +1 -0
  12. package/dist/components/foundations/accordion.js +23 -22
  13. package/dist/components/foundations/alert.js +1 -0
  14. package/dist/components/foundations/aspect-ratio.js +3 -2
  15. package/dist/components/foundations/avatar.js +1 -0
  16. package/dist/components/foundations/button.js +7 -1
  17. package/dist/components/foundations/calendar.js +1 -0
  18. package/dist/components/foundations/checkbox-group.js +1 -0
  19. package/dist/components/foundations/checkbox.js +1 -0
  20. package/dist/components/foundations/command.js +1 -0
  21. package/dist/components/foundations/context-menu.js +1 -0
  22. package/dist/components/foundations/drawer.js +1 -0
  23. package/dist/components/foundations/file-input.js +1 -0
  24. package/dist/components/foundations/form.js +26 -25
  25. package/dist/components/foundations/pagination.js +49 -46
  26. package/dist/components/foundations/popover.js +9 -8
  27. package/dist/components/foundations/radio-group.js +3 -2
  28. package/dist/components/foundations/responsive-dialog.js +1 -0
  29. package/dist/components/foundations/separator.js +7 -6
  30. package/dist/components/foundations/sheet.js +40 -33
  31. package/dist/components/foundations/slider.js +7 -6
  32. package/dist/components/foundations/social-icon.js +30 -10
  33. package/dist/components/foundations/sonner.js +5 -4
  34. package/dist/components/foundations/tabs.js +45 -25
  35. package/dist/components/foundations/toggle-group.js +6 -5
  36. package/dist/components/primitives/admin-side-nav.js +1 -0
  37. package/dist/components/primitives/chat-composer.js +1 -0
  38. package/dist/components/primitives/combobox.js +1 -0
  39. package/dist/components/primitives/content-card.js +111 -0
  40. package/dist/components/primitives/content-carousel.js +9 -8
  41. package/dist/components/primitives/date-picker.js +9 -8
  42. package/dist/components/primitives/footer.js +169 -100
  43. package/dist/components/primitives/form-field.js +1 -0
  44. package/dist/components/primitives/header.js +220 -176
  45. package/dist/components/primitives/image-carousel.js +8 -7
  46. package/dist/components/primitives/image-gallery.js +15 -14
  47. package/dist/components/primitives/image-input.js +9 -8
  48. package/dist/components/primitives/list-item.js +9 -8
  49. package/dist/components/primitives/menu-drawer.js +60 -56
  50. package/dist/components/primitives/multi-select.js +7 -6
  51. package/dist/components/primitives/number-input.js +1 -0
  52. package/dist/components/primitives/prose.js +52 -0
  53. package/dist/components/primitives/search-bar.js +81 -66
  54. package/dist/components/primitives/section-header.js +58 -55
  55. package/dist/components/primitives/share-buttons.js +93 -85
  56. package/dist/components/primitives/status-count-tabs.js +8 -7
  57. package/dist/components/primitives/sub-nav.js +52 -52
  58. package/dist/index.css +1 -1
  59. package/dist/index.js +1513 -559
  60. package/dist/lib/field-labelling.js +7 -6
  61. package/dist/lib/link-component.js +6 -0
  62. package/dist/lib/use-value-length.js +1 -0
  63. package/dist/types/components/ec/product-card.d.ts +12 -19
  64. package/dist/types/components/ec/review-card.d.ts +6 -1
  65. package/dist/types/components/foundations/button.d.ts +1 -1
  66. package/dist/types/components/foundations/chip-variants.d.ts +1 -1
  67. package/dist/types/components/foundations/data-table.d.ts +9 -1
  68. package/dist/types/components/foundations/pagination.d.ts +7 -1
  69. package/dist/types/components/foundations/sheet.d.ts +6 -1
  70. package/dist/types/components/foundations/social-icon.d.ts +1 -1
  71. package/dist/types/components/foundations/tabs.d.ts +2 -1
  72. package/dist/types/components/primitives/content-card.d.ts +67 -0
  73. package/dist/types/components/primitives/footer.d.ts +21 -1
  74. package/dist/types/components/primitives/header.d.ts +30 -2
  75. package/dist/types/components/primitives/menu-drawer.d.ts +7 -1
  76. package/dist/types/components/primitives/prose.d.ts +35 -0
  77. package/dist/types/components/primitives/search-bar.d.ts +14 -1
  78. package/dist/types/components/primitives/section-header.d.ts +2 -1
  79. package/dist/types/components/primitives/share-buttons.d.ts +26 -4
  80. package/dist/types/components/primitives/sub-nav.d.ts +16 -1
  81. package/dist/types/index.d.ts +4 -0
  82. package/dist/types/lib/link-component.d.ts +26 -0
  83. package/package.json +4 -3
  84. package/src/components/COMPONENT_LOOKUP.md +7 -5
  85. package/src/preset-standalone.css +1 -0
  86. package/src/preset.css +8 -0
  87. package/src/styles/semantic.css +1 -0
  88. package/tokens.json +8 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cakejp/design-system",
3
- "version": "0.17.1",
3
+ "version": "0.19.0",
4
4
  "type": "module",
5
5
  "description": "Cake.jp Design System — UI コンポーネント・カラートークン・タイポグラフィ",
6
6
  "license": "UNLICENSED",
@@ -96,10 +96,11 @@
96
96
  "generate:lint-rules": "node scripts/generate-lint-rules.mjs",
97
97
  "generate:lookup": "node scripts/generate-component-lookup.mjs",
98
98
  "lint:contrast": "node scripts/check-contrast.mjs",
99
- "check": "tsc --noEmit -p tsconfig.app.json && npm run typecheck:stories && bash scripts/check-deps.sh && bash scripts/check-drift.sh && bash scripts/check-docs-drift.sh && bash scripts/lint-scratch.sh && bash scripts/check-story-reuse.sh && bash scripts/check-responsive.sh && node scripts/check-border-color.mjs && npm run lint:contrast && bash scripts/lint-scratch.sh --components && bash scripts/check-generated-drift.sh",
99
+ "check": "tsc --noEmit -p tsconfig.app.json && npm run typecheck:stories && bash scripts/check-deps.sh && bash scripts/check-drift.sh && bash scripts/check-docs-drift.sh && bash scripts/lint-scratch.sh && bash scripts/check-story-reuse.sh && bash scripts/check-responsive.sh && node scripts/check-border-color.mjs && npm run lint:contrast && bash scripts/lint-scratch.sh --components && bash scripts/check-generated-drift.sh && bash scripts/check-agents-mirror.sh",
100
100
  "test": "vitest run --config vitest.config.ts",
101
101
  "test:interaction": "vitest run --config vitest.storybook.config.ts",
102
- "test:a11y": "vitest run --config vitest.a11y.config.ts"
102
+ "test:a11y": "vitest run --config vitest.a11y.config.ts",
103
+ "check:consumer-types": "node scripts/check-consumer-types.mjs"
103
104
  },
104
105
  "dependencies": {
105
106
  "class-variance-authority": "^0.7.1",
@@ -57,7 +57,7 @@
57
57
  | Spinner | `@/components/foundations/spinner` | — | Default, Small, Large, InlineWithText, FullPage |
58
58
  | Switch | `@/components/foundations/switch` | — | Default, ON 状態, 無効, サイズ比較, ブロック型, 通知設定例(リスト型) |
59
59
  | Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption | `@/components/foundations/table` | — | Default, フッター付き, 商品比較例, カート注文サマリー |
60
- | Tabs, TabsList, TabsTrigger, TabsContent | `@/components/foundations/tabs` | **variant**: `underbar`, `segment`<br>**scrollable**: `true` | Default(Underbar), タブ数バリエーション, 横スクロール(多数タブ), PC モード(文字幅ベース), Segment(ピル型), Segment 3択, interaction: クリックと矢印キーでの切り替え |
60
+ | Tabs, TabsList, TabsTrigger, TabsContent | `@/components/foundations/tabs` | **variant**: `underbar`, `segment`<br>**scrollable**: `true`<br>**size**: `md`, `sm` | Default(Underbar), タブ数バリエーション, 横スクロール(多数タブ), PC モード(文字幅ベース), Segment(ピル型), Segment 3択, 狭幅(サイドバー 266px), interaction: クリックと矢印キーでの切り替え |
61
61
  | Textarea | `@/components/foundations/textarea` | — | Default, 無効, メッセージカード入力例, エラーパターン, レビュー投稿例, 文字数カウンタ |
62
62
  | ToggleGroup, ToggleGroupItem | `@/components/foundations/toggle-group` | **width**: `fit`, `full`<br>**variant**: `default`, `outline`<br>**size**: `default`, `sm`, `lg`<br>**variant**: `default`, `outline`<br>**size**: `default`, `sm`, `lg` | Default, 複数選択, サイズ, アイコン付き, アイコンのみ, 無効 |
63
63
  | Toggle | `@/components/foundations/toggle` | **variant**: `default`, `outline`<br>**size**: `default`, `sm`, `lg` | Default, TextFormatting, FavoriteToggle, Outline, Sizes |
@@ -81,6 +81,7 @@
81
81
  | CoachMark | `@/components/primitives/coach-mark` | — | オンボーディング, 全方向, オンボーディング各方向 |
82
82
  | Combobox | `@/components/primitives/combobox` | — | Default |
83
83
  | Container | `@/components/primitives/container` | — | Default(page / default gutter), サイズ比較, gutter 比較 |
84
+ | ContentCard, ContentList | `@/components/primitives/content-card` | — | 縦(グリッド一覧), 一覧での高さ揃え, 横(画像が左), リスト(Medium 型), 長いタグラベル |
84
85
  | ContentCarousel | `@/components/primitives/content-carousel` | — | ヒーローバナー, 自動再生(5秒), peek表示, 多列カード(PC 3枚), 1枚のみ |
85
86
  | DatePicker, DateTimePicker | `@/components/primitives/date-picker` | — | 日付ピッカー, 初期値あり, 選択範囲を制限, 特定日を無効化, FormField 連携, 無効化, クリア可能(任意項目) |
86
87
  | EmptyState | `@/components/primitives/empty-state` | — | お気に入り商品(空), カート(空), ブックマーク(空), 検索結果なし, 汎用(説明のみ) |
@@ -89,7 +90,7 @@
89
90
  | Footer | `@/components/primitives/footer` | — | Default, 最小構成, SNSリンク付き, 決済方法付き |
90
91
  | FormField | `@/components/primitives/form-field` | — | — |
91
92
  | FunnelShell | `@/components/primitives/funnel-shell` | — | 注文内容の確認(ご購入手続き) |
92
- | Header | `@/components/primitives/header` | — | ロゴ+アクション, ロゴ+未ログイン, ロゴ+グローバルナビ+検索スロット(PC), ロゴ+長いナビ(中幅で自動退避), ロゴ+ナビ(navBreakpoint=lg), ロゴセンター(決済・申し込み用), 戻る+タイトル, 戻る+検索バー, 戻る+右側アクション, カスタムロゴ |
93
+ | Header | `@/components/primitives/header` | — | ロゴ+アクション, ロゴ+未ログイン, ロゴ+グローバルナビ+検索スロット(PC), ロゴ+長いナビ(中幅で自動退避), ロゴ+ナビ(navBreakpoint=lg), containerSize=page(本文と左端を揃える), ロゴセンター(決済・申し込み用), 戻る+タイトル, 戻る+検索バー, 戻る+右側アクション, カスタムロゴ |
93
94
  | ImageCarousel | `@/components/primitives/image-carousel` | — | バナーカルーセル, 横長バナー, 正方形(商品画像), OGP比率, 自動再生(3秒), PC幅(ビューポート切替で確認), トップページ ヒーローバナー |
94
95
  | ImageGallery | `@/components/primitives/image-gallery` | — | ドット付き, サムネイル付き, バナー(16:9), PC商品詳細, 単一画像 |
95
96
  | ImageInput | `@/components/primitives/image-input` | **aspect**: `square`, `landscape`<br>**size**: `sm`, `md`, `lg` | 基本, 保存済み画像あり, 表示サイズ, FormField 連携, 検証エラー, クリア不可, 無効化 |
@@ -103,12 +104,13 @@
103
104
  | NumberInput, QuantitySelector | `@/components/primitives/number-input` | — | Default, コンパクト型(sm), サイズ比較, 最小・最大値, 無効状態, エラー状態, ゴミ箱アイコン, ゴミ箱+削除確認ダイアログ, 直接入力パターン, 商品詳細での使用例, カート内での使用例, 価格・在庫入力(管理画面), interaction: 増減と min/max のクランプ |
104
105
  | PriceDisplay | `@/components/primitives/price-display` | — | Default, セール価格, サイズ比較, セール × サイズ, 税込ラベルなし, 高額商品, 価格レンジ |
105
106
  | ProgressSteps | `@/components/primitives/progress-steps` | — | ステップ1(カート), ステップ2(注文内容), ステップ3(確認), ステップ4(完了), 全ステップ一覧, 会員登録フロー |
106
- | SearchBar | `@/components/primitives/search-bar` | — | Default, Small(ヘッダー向け), カスタムプレースホルダー |
107
+ | Prose | `@/components/primitives/prose` | — | 記事本文(Container narrow と組み合わせ), children を包む, 幅の広い表(ページを横に伸ばさない) |
108
+ | SearchBar | `@/components/primitives/search-bar` | — | Default, Small(ヘッダー向け), form モード(JS 不要・SEO 向け), カスタムプレースホルダー |
107
109
  | SearchPanel | `@/components/primitives/search-panel` | — | — |
108
- | SectionHeader | `@/components/primitives/section-header` | — | Default, サブタイトル付き, リンクなし, カスタムラベル, カルーセルナビ付き, ナビのみ, ナビ(先頭位置), アクションボタン付き, サブタイトル + アクション, サイズ一覧, キャプション付きサイズ比較, align=, LPヒーロー(SP 3xl / PC 5xl), align=, start / center 比較 |
110
+ | SectionHeader | `@/components/primitives/section-header` | — | Default, サブタイトル付き, リンクなし, カスタムラベル, カルーセルナビ付き, ナビのみ, ナビ(先頭位置), アクションボタン付き, サブタイトル + アクション, 狭幅のサブタイトル + アクション, サイズ一覧, キャプション付きサイズ比較, align=, LPヒーロー(SP 3xl / PC 5xl), align=, start / center 比較 |
109
111
  | SectionNav | `@/components/primitives/section-nav` | — | Vertical, Horizontal |
110
112
  | Section | `@/components/primitives/section` | — | 推奨: Section + Container, 背景画像 + scrim, 背景バリアント, 縦 spacing バリアント, 配下 Card のサーフェス伝播, ランディング見出し |
111
- | ShareButtons | `@/components/primitives/share-buttons` | — | Default, コピーフィードバック |
113
+ | ShareButtons | `@/components/primitives/share-buttons` | — | Default, コピーフィードバック, 共有先を指定(Facebook / はてブ), 組み込みに無い共有先を足す |
112
114
  | SideNav | `@/components/primitives/side-nav` | — | Default, WithGroupLabels, MypageExample, PrefixMatch |
113
115
  | SocialLoginButton | `@/components/primitives/social-login-button` | — | LINE, フルサイズ一覧, アイコンのみ |
114
116
  | StandardPageShell | `@/components/primitives/standard-page-shell` | — | 検索結果ページ |
@@ -266,6 +266,7 @@
266
266
  --Third-Party-LINE: #06C755;
267
267
  --Third-Party-Apple: #000000;
268
268
  --Third-Party-X: #000000;
269
+ --Third-Party-Hatena: #00A4DE;
269
270
  }
270
271
 
271
272
  .dark {
package/src/preset.css CHANGED
@@ -52,6 +52,14 @@
52
52
  --container-md: 48rem; /* 768px — SP/PC 境界(切替段。本番と一致) */
53
53
  --container-lg: 60rem; /* 960px — PC 中段(切替段。本番と一致) */
54
54
  --container-xl: 80rem; /* 1280px — コンテンツ上限段(DS 定義。本番の切替段ではない) */
55
+
56
+ /* ビューポート用(consumer の md: / lg: / xl:)。コンテナクエリ段と同じ値に揃える。
57
+ Tailwind v4 既定の --breakpoint-lg は 64rem(1024px) で、DS の PC 中段 960px と
58
+ 64px ずれる。preset が配らないと全 consumer が @theme で書き直す必要があり、
59
+ 書き忘れたプロダクトだけ切替位置がずれる(issue #242)。 */
60
+ --breakpoint-md: 48rem; /* 768px — SP/PC 境界 */
61
+ --breakpoint-lg: 60rem; /* 960px — PC 中段 */
62
+ --breakpoint-xl: 80rem; /* 1280px — コンテンツ上限段 */
55
63
  }
56
64
 
57
65
  /* --- Theme: Tailwind integration --- */
@@ -116,6 +116,7 @@
116
116
  --Third-Party-LINE: #06C755FF;
117
117
  --Third-Party-Apple: #000000FF;
118
118
  --Third-Party-X: #000000FF;
119
+ --Third-Party-Hatena: #00A4DEFF;
119
120
  }
120
121
 
121
122
  /* ============================================
package/tokens.json CHANGED
@@ -463,6 +463,10 @@
463
463
  "x": {
464
464
  "value": "#000000FF",
465
465
  "usage": "Third-Party-X のCSS契約値"
466
+ },
467
+ "hatena": {
468
+ "value": "#00A4DEFF",
469
+ "usage": "Third-Party-Hatena のCSS契約値(はてなブックマーク)"
466
470
  }
467
471
  }
468
472
  },
@@ -931,11 +935,12 @@
931
935
  }
932
936
  },
933
937
  "breakpoints": {
934
- "comment": "役割は二層。(1) 切替段=md / lg の2つだけ(値は本番 cakejp.css の境界に一致させた正本。レイアウトの変形はこの2段でのみ行う)。(2) 上限段=xl(1280。「切替段」ではなく DS が定めるコンテンツ幅の上限段。本番に 1280 の切替段は無い=1025/1441 はある)。DS 内部はコンテナクエリ @md: / @lg: / @xl:(preset.css の --container-md / --container-lg / --container-xl)で参照し、生 CSS ではこの px 値をメディアクエリに直書きする(CSS 変数はメディアクエリに使えないため、値の配布は本トークンが担う)。独自のブレイクポイント値を発明しない",
938
+ "comment": "役割は二層。(1) 切替段=md / lg の2つだけ(値は本番 cakejp.css の境界に一致させた正本。レイアウトの変形はこの2段でのみ行う)。(2) 上限段=xl(1280。「切替段」ではなく DS が定めるコンテンツ幅の上限段。本番に 1280 の切替段は無い=1025/1441 はある)。DS 内部はコンテナクエリ @md: / @lg: / @xl:(preset.css の --container-md / --container-lg / --container-xl)で参照し、生 CSS ではこの px 値をメディアクエリに直書きする(CSS 変数はメディアクエリに使えないため、値の配布は本トークンが担う)。consumer が書くビューポートの md: / lg: / xl: も preset.css の --breakpoint-md / --breakpoint-lg / --breakpoint-xl が同じ段に揃える(Tailwind v4 既定の lg は 1024px で DS の 960px と 64px ずれるため)。値を変えるときは tokens.json と preset.css の --container-* / --breakpoint-* を必ず同時に更新する。独自のブレイクポイント値を発明しない",
935
939
  "md": {
936
940
  "px": 768,
937
941
  "rem": "48rem",
938
942
  "container": "--container-md",
943
+ "viewport": "--breakpoint-md",
939
944
  "role": "切替段",
940
945
  "usage": "SP/PC 境界。767px 以下=SP / 768px 以上=PC。本番 cakejp.css の max-width:767px / min-width:768px と一致"
941
946
  },
@@ -943,6 +948,7 @@
943
948
  "px": 960,
944
949
  "rem": "60rem",
945
950
  "container": "--container-lg",
951
+ "viewport": "--breakpoint-lg",
946
952
  "role": "切替段",
947
953
  "usage": "PC 中段。本番 cakejp.css の min-width:960px 段と一致"
948
954
  },
@@ -950,6 +956,7 @@
950
956
  "px": 1280,
951
957
  "rem": "80rem",
952
958
  "container": "--container-xl",
959
+ "viewport": "--breakpoint-xl",
953
960
  "role": "上限段",
954
961
  "usage": "コンテンツ上限段(切替段ではない)。ページコンテナの標準上限で、1280px 以上では原則レイアウト変形を追加しない。本番 cakejp.css に 1280 の切替段は無い(1025 / 1441 はある)——DS が定める標準上限。実例: MypageShell の PC グリッド max-w-[1280px]"
955
962
  }