@cakejp/design-system 0.10.0 → 0.12.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 (44) hide show
  1. package/CHANGELOG.md +68 -1
  2. package/CLAUDE.md +19 -2
  3. package/README.md +78 -5
  4. package/UPDATING.md +45 -0
  5. package/bin/check-duplicates.mjs +132 -0
  6. package/bin/init.js +8 -0
  7. package/contracts/components.json +175 -21
  8. package/contracts/rules.json +19 -3
  9. package/dist/index.css +1 -1
  10. package/dist/index.js +5326 -3367
  11. package/dist/types/components/ec/admin-shell.d.ts +10 -1
  12. package/dist/types/components/ec/mypage-shell.d.ts +43 -7
  13. package/dist/types/components/ec/product-card.d.ts +3 -1
  14. package/dist/types/components/ec/product-list-item.d.ts +8 -1
  15. package/dist/types/components/foundations/alert.d.ts +5 -1
  16. package/dist/types/components/foundations/button.d.ts +1 -1
  17. package/dist/types/components/foundations/card.d.ts +12 -2
  18. package/dist/types/components/foundations/chip-variants.d.ts +17 -0
  19. package/dist/types/components/foundations/field.d.ts +58 -0
  20. package/dist/types/components/foundations/file-input.d.ts +75 -0
  21. package/dist/types/components/foundations/icon-badge.d.ts +2 -2
  22. package/dist/types/components/foundations/input.d.ts +9 -1
  23. package/dist/types/components/foundations/radio-group.d.ts +12 -2
  24. package/dist/types/components/foundations/skip-link.d.ts +39 -0
  25. package/dist/types/components/foundations/textarea.d.ts +9 -1
  26. package/dist/types/components/primitives/chip.d.ts +2 -7
  27. package/dist/types/components/primitives/content-carousel.d.ts +52 -0
  28. package/dist/types/components/primitives/date-picker.d.ts +32 -0
  29. package/dist/types/components/primitives/error-state.d.ts +43 -16
  30. package/dist/types/components/primitives/funnel-shell.d.ts +10 -1
  31. package/dist/types/components/primitives/header.d.ts +15 -1
  32. package/dist/types/components/primitives/section-nav.d.ts +28 -2
  33. package/dist/types/components/primitives/share-buttons.d.ts +8 -2
  34. package/dist/types/components/primitives/side-nav.d.ts +24 -3
  35. package/dist/types/components/primitives/standard-page-shell.d.ts +11 -1
  36. package/dist/types/components/primitives/workspace-shell.d.ts +19 -1
  37. package/dist/types/index.d.ts +66 -2
  38. package/package.json +8 -26
  39. package/src/preset-standalone.css +306 -4
  40. package/src/styles/semantic.css +7 -0
  41. package/src/styles/typography.css +8 -1
  42. package/templates/AGENTS.md +43 -7
  43. package/templates/CLAUDE.md +44 -7
  44. package/tokens.json +10 -1
@@ -1,41 +1,68 @@
1
1
  import * as React from "react";
2
+ export type NotFoundIllustrationProps = React.SVGProps<SVGSVGElement>;
3
+ /**
4
+ * NotFound(404)向けの抽象イラスト(ケーキモチーフ / スライスが欠けた図)。
5
+ *
6
+ * 色は CSS 変数と currentColor のみで構成(HEX 直書きなし)。輪郭は
7
+ * currentColor を継承するため、親の text-color で線色を調整できる。
8
+ * 既定は装飾(`aria-hidden`)。単体で意味を持たせる場合は `aria-label` を渡す。
9
+ *
10
+ * ```tsx
11
+ * <NotFoundIllustration className="w-40 text-[var(--Border-Medium-Emphasis)]" />
12
+ * ```
13
+ */
14
+ declare function NotFoundIllustration({ className, "aria-label": ariaLabel, ...props }: NotFoundIllustrationProps): import("react/jsx-runtime").JSX.Element;
15
+ /** ErrorState の種別。既定は汎用エラー、notFound は 404 向けの定番構成 */
16
+ export type ErrorStateKind = "error" | "notFound";
2
17
  export interface ErrorStateProps extends React.HTMLAttributes<HTMLDivElement> {
3
- /** エラーアイコン */
18
+ /**
19
+ * 状態の種別。
20
+ * - `"error"`(既定): 汎用エラー。`icon` を Object-Caution 色で表示(現行不変)
21
+ * - `"notFound"`: 404 向け。既定でケーキイラスト + 見つからない旨の文言
22
+ */
23
+ kind?: ErrorStateKind;
24
+ /** アイコン / イラスト。省略時、notFound は既定イラスト、error は非表示 */
4
25
  icon?: React.ReactNode;
5
- /** エラータイトル */
6
- title: string;
7
- /** エラーの説明テキスト */
26
+ /** タイトル。省略時は kind に応じた既定文言 */
27
+ title?: string;
28
+ /** 説明テキスト。省略時、notFound は既定文言、error は非表示 */
8
29
  description?: React.ReactNode;
9
30
  /** 再試行ボタンのクリックハンドラ。指定すると再試行ボタンを表示 */
10
31
  onRetry?: () => void;
11
32
  /** 再試行ボタンのラベル */
12
33
  retryLabel?: string;
13
- /** 追加アクション(例: 「ホームに戻る」ボタン) */
34
+ /** 追加アクション(例: 「トップへ戻る」ボタン) */
14
35
  action?: React.ReactNode;
15
36
  }
16
37
  /**
17
- * エラー状態コンポーネント
38
+ * エラー状態 / 404 状態コンポーネント
18
39
  *
19
- * APIエラー、ネットワークエラー、タイムアウト等のエラー状態を表示するUI。
20
- * EmptyState と同様のレイアウトだが、再試行アクションに特化。
40
+ * APIエラー・ネットワークエラー・タイムアウト等(`kind="error"`)と、
41
+ * 404 Not Found(`kind="notFound"`)の定番構成を1つのコンポーネントで扱う。
42
+ * EmptyState と同様の中央寄せレイアウト。
21
43
  *
22
44
  * ### AI 向け使用ルール
23
45
  *
24
- * - `icon` にエラー種別に合ったアイコン(size-16)を渡す
25
- * - `title` でエラー内容を簡潔に伝える
26
- * - `description` で対処方法を案内
27
- * - `onRetry` を渡すと再試行ボタンが表示される
28
- * - `action` に追加のナビゲーションボタンを渡せる
29
- * - ページコンテンツの中央に配置
46
+ * - システムエラーは `kind="error"`(既定)。`icon`(size-16)+ `onRetry` を渡す
47
+ * - 404 ページは `kind="notFound"`。イラスト・見出し・説明は既定で入るため
48
+ * 基本は `action`(「トップへ戻る」等の導線)だけ渡せばよい
49
+ * - データが無いだけ(カート空・検索0件)は EmptyState を使う
30
50
  *
31
51
  * ```tsx
52
+ * // 汎用エラー
32
53
  * <ErrorState
33
54
  * icon={<WifiOff className="size-16" />}
34
55
  * title="接続エラー"
35
56
  * description="ネットワークに接続できませんでした。"
36
57
  * onRetry={() => location.reload()}
37
58
  * />
59
+ *
60
+ * // 404
61
+ * <ErrorState
62
+ * kind="notFound"
63
+ * action={<Button size="lg">トップへ戻る</Button>}
64
+ * />
38
65
  * ```
39
66
  */
40
- declare function ErrorState({ className, icon, title, description, onRetry, retryLabel, action, ...props }: ErrorStateProps): import("react/jsx-runtime").JSX.Element;
41
- export { ErrorState };
67
+ declare function ErrorState({ className, kind, icon, title, description, onRetry, retryLabel, action, ...props }: ErrorStateProps): import("react/jsx-runtime").JSX.Element;
68
+ export { ErrorState, NotFoundIllustration };
@@ -44,6 +44,15 @@ export interface FunnelShellProps {
44
44
  bottomAction?: React.ReactNode;
45
45
  /** ルート要素の追加クラス */
46
46
  className?: string;
47
+ /**
48
+ * `<main>` の id(既定 "main-content")。内蔵の SkipLink の飛び先(`#${mainId}`)と対になる。
49
+ */
50
+ mainId?: string;
51
+ /**
52
+ * DOM 先頭に SkipLink(キーボードで本文へ飛ぶ a11y リンク)を標準内蔵する。
53
+ * `sr-only` なので視覚には影響しない。`false` で無効化。
54
+ */
55
+ skipLink?: false;
47
56
  }
48
57
  /**
49
58
  * FunnelShell — EC 購入導線等のファネル用集中モード(Full Page)のシェル。
@@ -81,5 +90,5 @@ export interface FunnelShellProps {
81
90
  * 管理画面の集中編集は `WorkspaceShell`(EC 購入導線=本コンポーネント)。
82
91
  * 判断基準は contracts/screen-patterns.json(focused-workspace)を参照。
83
92
  */
84
- declare function FunnelShell({ logo, title, onBack, backLabel, steps, activeStep, children, bottomAction, className, }: FunnelShellProps): import("react/jsx-runtime").JSX.Element;
93
+ declare function FunnelShell({ logo, title, onBack, backLabel, steps, activeStep, children, bottomAction, className, mainId, skipLink, }: FunnelShellProps): import("react/jsx-runtime").JSX.Element;
85
94
  export { FunnelShell };
@@ -6,6 +6,12 @@ export interface HeaderAction {
6
6
  label: string;
7
7
  /** クリックハンドラ */
8
8
  onClick?: () => void;
9
+ /**
10
+ * リンク先。指定すると `<a>`(Button asChild)で描画し、
11
+ * 中クリック/Cmd+クリックでの新規タブ・リンクコピー・hoverプレビューが効くようになる。
12
+ * onClick と併用可(両方付与される)
13
+ */
14
+ href?: string;
9
15
  /** バッジ数(通知やカート件数) */
10
16
  badge?: React.ReactNode;
11
17
  }
@@ -46,6 +52,14 @@ export interface HeaderProps extends React.HTMLAttributes<HTMLElement> {
46
52
  * SP では非表示。本番の "ケーキ / スイーツ / ランキング…" メニューに対応。
47
53
  */
48
54
  navItems?: HeaderNavItem[];
55
+ /**
56
+ * PC(@[768px]+)のロゴ行で navItems と actions の間にインライン配置する検索スロット
57
+ * (variant="logo" のみ)。`SearchBar` 等を渡す。`flex-1 max-w-[400px]` で伸縮し、
58
+ * 既存のロゴ・ナビ・アクションを潰さない。SP 行には出さない
59
+ * (SP の常設検索は従来どおり `bottomSlot` で運用する)。
60
+ * navItems が無く searchSlot だけを渡した場合も PC 行を描画する。
61
+ */
62
+ searchSlot?: React.ReactNode;
49
63
  /** 右側に配置するカスタム要素(variant="back"で使用) */
50
64
  rightSlot?: React.ReactNode;
51
65
  /** 検索バーなど中央に配置するカスタム要素(variant="back-search"で使用) */
@@ -65,5 +79,5 @@ export interface HeaderProps extends React.HTMLAttributes<HTMLElement> {
65
79
  * アプリ全体で使われるヘッダーの3パターンを1コンポーネントで提供。
66
80
  * ロゴ+アクション、戻るボタン+タイトル、戻るボタン+検索の3バリエーション。
67
81
  */
68
- declare function Header({ className, variant, logo, title, onBack, backLabel, actions, navItems, rightSlot, centerSlot, bottomSlot, disableSticky, ...props }: HeaderProps): import("react/jsx-runtime").JSX.Element;
82
+ declare function Header({ className, variant, logo, title, onBack, backLabel, actions, navItems, searchSlot, rightSlot, centerSlot, bottomSlot, disableSticky, ...props }: HeaderProps): import("react/jsx-runtime").JSX.Element;
69
83
  export { Header };
@@ -14,6 +14,14 @@ export interface SectionNavProps extends React.HTMLAttributes<HTMLElement> {
14
14
  items: SectionNavItem[];
15
15
  /** アクティブなセクションの key(利用側が scrollspy 等で制御。本体では監視しない) */
16
16
  activeKey?: string;
17
+ /**
18
+ * レイアウト方向(既定 "vertical")。
19
+ * - "vertical": 縦積みの目次(WorkspaceShell の左レール等)。従来の挙動。
20
+ * - "horizontal": 横並びの Tabs アンダーバー式(ガイド・FAQ 等の長い静的ページの
21
+ * ページ内ジャンプナビ)。横スクロール対応(overflow-x-auto)。sticky は内蔵しない
22
+ * (sticky/top オフセットは利用側が className で付与する)。
23
+ */
24
+ orientation?: "vertical" | "horizontal";
17
25
  /** aria-label */
18
26
  ariaLabel?: string;
19
27
  /** 項目クリック時のコールバック(任意) */
@@ -31,13 +39,14 @@ export interface SectionNavProps extends React.HTMLAttributes<HTMLElement> {
31
39
  * - 固有幅・背景・境界を持たない(`w-full`)。パネル化・幅決定はシェル/利用側の責務。
32
40
  * (SideNav の `w-64` 固定が WorkspaceShell で幅ミスマッチを起こした反省)
33
41
  * - IntersectionObserver は内包しない。`activeKey` を利用側が渡す。
42
+ * - sticky は内蔵しない。sticky/top オフセットは利用側が className で付与する。
34
43
  *
35
44
  * ### インポート
36
45
  * ```tsx
37
46
  * import { SectionNav } from '../../components/primitives/section-nav'
38
47
  * ```
39
48
  *
40
- * ### 使い方
49
+ * ### 使い方(vertical=既定)
41
50
  * ```tsx
42
51
  * <SectionNav
43
52
  * activeKey="basic"
@@ -48,13 +57,30 @@ export interface SectionNavProps extends React.HTMLAttributes<HTMLElement> {
48
57
  * />
49
58
  * ```
50
59
  *
60
+ * ### 使い方(horizontal=ページ内ジャンプの sticky アンダーバー)
61
+ * ガイド・FAQ のような長い静的ページ向け。sticky は利用側で付与する。
62
+ * ジャンプ先セクション側には `scroll-mt-*`(sticky ナビ高さ + α)を付けて、
63
+ * 見出しがナビの裏に隠れないようにする。
64
+ * ```tsx
65
+ * // ナビ: ヘッダー(h-14)直下に貼り付ける
66
+ * <SectionNav
67
+ * orientation="horizontal"
68
+ * activeKey={active}
69
+ * className="sticky top-14 z-30 border-b border-[var(--Border-Low-Emphasis)] bg-[var(--Surface-Primary)]"
70
+ * items={items}
71
+ * />
72
+ * // ターゲット: ナビ高さぶん上に余白を確保(scroll-mt-28 ≒ header 56px + nav 48px)
73
+ * <section id="basic" className="scroll-mt-28">…</section>
74
+ * ```
75
+ *
51
76
  * ### Props
52
77
  * | Prop | 型 | デフォルト | 説明 |
53
78
  * |------|-----|-----------|------|
54
79
  * | items | SectionNavItem[] | — | 目次項目(アンカー、必須) |
55
80
  * | activeKey | string | — | アクティブなセクションの key |
81
+ * | orientation | "vertical"\|"horizontal" | "vertical" | 縦積み目次 / 横アンダーバー |
56
82
  * | ariaLabel | string | "ページ内セクション" | aria-label |
57
83
  * | onItemClick | (key: string) => void | — | 項目クリック時のコールバック |
58
84
  */
59
- declare function SectionNav({ items, activeKey, ariaLabel, onItemClick, className, ...props }: SectionNavProps): import("react/jsx-runtime").JSX.Element;
85
+ declare function SectionNav({ items, activeKey, orientation, ariaLabel, onItemClick, className, ...props }: SectionNavProps): import("react/jsx-runtime").JSX.Element;
60
86
  export { SectionNav };
@@ -1,11 +1,17 @@
1
1
  import * as React from "react";
2
- export interface ShareButtonsProps extends React.HTMLAttributes<HTMLDivElement> {
2
+ export interface ShareButtonsProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onCopy"> {
3
3
  /** シェアURL */
4
4
  url?: string;
5
5
  /** シェアテキスト */
6
6
  text?: string;
7
7
  /** コピーボタンのラベル */
8
8
  copyLabel?: string;
9
+ /** コピー成功時に一時表示するラベル(約2秒) */
10
+ copiedLabel?: string;
11
+ /** コピー失敗時に一時表示するラベル(約2秒) */
12
+ copyErrorLabel?: string;
13
+ /** コピー完了時のコールバック(成功/失敗) */
14
+ onCopy?: (result: "success" | "error") => void;
9
15
  }
10
16
  /**
11
17
  * シェアボタンコンポーネント
@@ -19,5 +25,5 @@ export interface ShareButtonsProps extends React.HTMLAttributes<HTMLDivElement>
19
25
  * - `url` と `text` でシェア内容を指定
20
26
  * - ボタンは横並び、等幅表示
21
27
  */
22
- declare function ShareButtons({ className, url, text, copyLabel, ...props }: ShareButtonsProps): import("react/jsx-runtime").JSX.Element;
28
+ declare function ShareButtons({ className, url, text, copyLabel, copiedLabel, copyErrorLabel, onCopy, ...props }: ShareButtonsProps): import("react/jsx-runtime").JSX.Element;
23
29
  export { ShareButtons };
@@ -18,8 +18,26 @@ export interface SideNavGroup {
18
18
  items: SideNavItem[];
19
19
  }
20
20
  export interface SideNavProps extends React.HTMLAttributes<HTMLElement> {
21
- /** 現在アクティブなメニューの key */
21
+ /** 現在アクティブなメニューの key(完全一致)。`currentPath` / `isActive` 未指定時の既定判定。 */
22
22
  activeMenu?: string;
23
+ /**
24
+ * 現在の URL パス。指定すると各項目の `href` と照合してアクティブ項目を自動判定する
25
+ * (`activeMenu` より優先)。詳細ページや配下ページで `activeMenu` を手動指定する必要がなくなる。
26
+ */
27
+ currentPath?: string;
28
+ /**
29
+ * `currentPath` と `href` の照合方法(既定 `"exact"`)。
30
+ * - `"exact"`: `href === currentPath`
31
+ * - `"prefix"`: `currentPath` が `href` 配下(前方一致)。1 項目が配下ページ全体でアクティブになる
32
+ * (例: 「注文履歴」`/mypage/orders/` が `/mypage/orders/123/` でもアクティブ)。
33
+ * 複数項目が一致した場合は**最長 href の 1 項目のみ**アクティブにし、親子の二重アクティブを防ぐ。
34
+ */
35
+ activeMatch?: "exact" | "prefix";
36
+ /**
37
+ * アクティブ判定を完全に上書きする述語(最優先)。
38
+ * consumer 固有の URL 集約ロジック(複数 URL を 1 項目へ束ねる等)を注入する。
39
+ */
40
+ isActive?: (item: SideNavItem) => boolean;
23
41
  /** メニューグループ(必須) */
24
42
  groups: SideNavGroup[];
25
43
  /** aria-label */
@@ -55,8 +73,11 @@ export interface SideNavProps extends React.HTMLAttributes<HTMLElement> {
55
73
  * | Prop | 型 | デフォルト | 説明 |
56
74
  * |------|-----|-----------|------|
57
75
  * | groups | SideNavGroup[] | — | メニューグループ(必須) |
58
- * | activeMenu | string | — | アクティブなメニュー項目の key |
76
+ * | activeMenu | string | — | アクティブなメニュー項目の key(完全一致・後方互換) |
77
+ * | currentPath | string | — | 現在 URL。href と照合して自動判定(activeMenu より優先) |
78
+ * | activeMatch | "exact" \| "prefix" | "exact" | currentPath の照合方法。prefix は配下ページ全体でアクティブ |
79
+ * | isActive | (item) => boolean | — | アクティブ判定を上書きする述語(最優先) |
59
80
  * | ariaLabel | string | "サイドメニュー" | aria-label |
60
81
  */
61
- declare function SideNav({ activeMenu, groups, ariaLabel, className, ...props }: SideNavProps): import("react/jsx-runtime").JSX.Element;
82
+ declare function SideNav({ activeMenu, currentPath, activeMatch, isActive, groups, ariaLabel, className, ...props }: SideNavProps): import("react/jsx-runtime").JSX.Element;
62
83
  export { SideNav };
@@ -21,6 +21,16 @@ export interface StandardPageShellProps {
21
21
  children: React.ReactNode;
22
22
  /** ルート要素の追加クラス。 */
23
23
  className?: string;
24
+ /**
25
+ * `<main>` の id(既定 "main-content")。内蔵の SkipLink の飛び先(`#${mainId}`)と対になる。
26
+ * スキップ先アンカーを別 id にしたい場合に変更する。
27
+ */
28
+ mainId?: string;
29
+ /**
30
+ * DOM 先頭に SkipLink(キーボードで本文へ飛ぶ a11y リンク)を標準内蔵する。
31
+ * `sr-only` なので視覚には影響しない。`false` で無効化。
32
+ */
33
+ skipLink?: false;
24
34
  }
25
35
  /**
26
36
  * StandardPageShell — 消費者向け標準ページ(standard-page-view / standard-page-edit)の骨格。
@@ -47,5 +57,5 @@ export interface StandardPageShellProps {
47
57
  *
48
58
  * 判断基準は contracts/composition.json(pageSkeletons)/ contracts/screen-patterns.json を参照。
49
59
  */
50
- declare function StandardPageShell({ header, bottomTab, footer, children, className, }: StandardPageShellProps): import("react/jsx-runtime").JSX.Element;
60
+ declare function StandardPageShell({ header, bottomTab, footer, children, className, mainId, skipLink, }: StandardPageShellProps): import("react/jsx-runtime").JSX.Element;
51
61
  export { StandardPageShell };
@@ -32,6 +32,24 @@ export interface WorkspaceShellProps {
32
32
  children: React.ReactNode;
33
33
  /** ルート要素の追加クラス */
34
34
  className?: string;
35
+ /**
36
+ * 編集本体 `<main>` の id(既定 "main-content")。内蔵の SkipLink の飛び先(`#${mainId}`)と対になる。
37
+ */
38
+ mainId?: string;
39
+ /**
40
+ * DOM 先頭に SkipLink(キーボードで本文へ飛ぶ a11y リンク)を標準内蔵する。
41
+ * `sr-only` なので視覚には影響しない。`false` で無効化。
42
+ */
43
+ skipLink?: false;
44
+ /**
45
+ * 編集ヘッダーのレイアウト(既定 "start"、現行と同じ挙動)。
46
+ * "center" にすると左=戻る導線/中央=タイトル/右=primaryAction の
47
+ * 3 カラム grid(`grid-cols-[minmax(0,1fr)_auto_minmax(0,1fr)]`)に固定し、
48
+ * primaryAction の有無・幅に関わらずタイトルを真の中央に揃える。
49
+ * consumer が `[&>[data-slot=header]]:!grid ...` のようなセレクタ上書きで
50
+ * 実現していた構成を公開 API として公式化したもの(#112)。
51
+ */
52
+ headerLayout?: "start" | "center";
35
53
  }
36
54
  /**
37
55
  * WorkspaceShell — Focused Workspace(全画面集中編集)のシェル。
@@ -48,5 +66,5 @@ export interface WorkspaceShellProps {
48
66
  *
49
67
  * 判断基準は contracts/screen-patterns.json / guidelines/foundations/screen-patterns.md を参照。
50
68
  */
51
- declare function WorkspaceShell({ title, onBack, backLabel, primaryAction, sectionNav, asidePanel, children, className, }: WorkspaceShellProps): import("react/jsx-runtime").JSX.Element;
69
+ declare function WorkspaceShell({ title, onBack, backLabel, primaryAction, sectionNav, asidePanel, children, className, mainId, skipLink, headerLayout, }: WorkspaceShellProps): import("react/jsx-runtime").JSX.Element;
52
70
  export { WorkspaceShell };
@@ -1,5 +1,6 @@
1
1
  import "./index.css";
2
2
  export { cn } from "./lib/utils";
3
+ export { toast } from "sonner";
3
4
  export { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "./components/foundations/accordion";
4
5
  export { Alert, AlertDescription, AlertTitle } from "./components/foundations/alert";
5
6
  export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger } from "./components/foundations/alert-dialog";
@@ -9,7 +10,7 @@ export { Badge, badgeVariants } from "./components/foundations/badge";
9
10
  export { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator } from "./components/foundations/breadcrumb";
10
11
  export { Button, buttonVariants } from "./components/foundations/button";
11
12
  export { Calendar } from "./components/foundations/calendar";
12
- export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "./components/foundations/card";
13
+ export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, cardVariants } from "./components/foundations/card";
13
14
  export { Checkbox } from "./components/foundations/checkbox";
14
15
  export type { CheckboxProps } from "./components/foundations/checkbox";
15
16
  export { CheckboxCardGroup, CheckboxCardItem } from "./components/foundations/checkbox-card";
@@ -20,10 +21,14 @@ export { DataTable } from "./components/foundations/data-table";
20
21
  export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger } from "./components/foundations/dialog";
21
22
  export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger } from "./components/foundations/drawer";
22
23
  export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger } from "./components/foundations/dropdown-menu";
24
+ export { FieldSet, FieldLegend, FieldGroup, FieldDescription, FieldError, FieldSeparator } from "./components/foundations/field";
25
+ export { FileInput, formatFileNames, validateFileSize } from "./components/foundations/file-input";
26
+ export type { FileInputProps, FileInputError } from "./components/foundations/file-input";
23
27
  export { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, useFormField } from "./components/foundations/form";
24
28
  export { HoverCard, HoverCardContent, HoverCardTrigger } from "./components/foundations/hover-card";
25
29
  export { IconBadge, iconBadgeVariants } from "./components/foundations/icon-badge";
26
30
  export { Input } from "./components/foundations/input";
31
+ export type { InputProps } from "./components/foundations/input";
27
32
  export { Label } from "./components/foundations/label";
28
33
  export { Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger } from "./components/foundations/menubar";
29
34
  export { NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, navigationMenuTriggerStyle } from "./components/foundations/navigation-menu";
@@ -32,17 +37,21 @@ export { Popover, PopoverContent, PopoverTrigger } from "./components/foundation
32
37
  export { Progress } from "./components/foundations/progress";
33
38
  export { ResponsiveDialog, ResponsiveDialogClose, ResponsiveDialogContent, ResponsiveDialogDescription, ResponsiveDialogFooter, ResponsiveDialogHeader, ResponsiveDialogTitle, ResponsiveDialogTrigger, useIsMobile } from "./components/foundations/responsive-dialog";
34
39
  export { RadioGroup, RadioGroupItem } from "./components/foundations/radio-group";
40
+ export type { RadioGroupVariant } from "./components/foundations/radio-group";
35
41
  export { ScrollArea, ScrollBar } from "./components/foundations/scroll-area";
36
42
  export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue } from "./components/foundations/select";
37
43
  export { Separator } from "./components/foundations/separator";
38
44
  export { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger } from "./components/foundations/sheet";
39
45
  export { Skeleton } from "./components/foundations/skeleton";
46
+ export { SkipLink } from "./components/foundations/skip-link";
47
+ export type { SkipLinkProps } from "./components/foundations/skip-link";
40
48
  export { Slider } from "./components/foundations/slider";
41
49
  export { Spinner } from "./components/foundations/spinner";
42
50
  export { Switch } from "./components/foundations/switch";
43
51
  export { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow } from "./components/foundations/table";
44
52
  export { Tabs, TabsContent, TabsList, TabsTrigger } from "./components/foundations/tabs";
45
53
  export { Textarea } from "./components/foundations/textarea";
54
+ export type { TextareaProps } from "./components/foundations/textarea";
46
55
  export { Toaster } from "./components/foundations/sonner";
47
56
  export { Toggle, toggleVariants } from "./components/foundations/toggle";
48
57
  export { ToggleGroup, ToggleGroupItem } from "./components/foundations/toggle-group";
@@ -52,10 +61,16 @@ export type { AdminSideNavProps, AdminNavItem, AdminNavSubItem, AdminNavIconCont
52
61
  export { AdminHeader } from "./components/primitives/admin-header";
53
62
  export type { AdminHeaderProps } from "./components/primitives/admin-header";
54
63
  export { CoachMark } from "./components/primitives/coach-mark";
64
+ export type { CoachMarkProps, CoachMarkDirection } from "./components/primitives/coach-mark";
55
65
  export { BannerCarousel } from "./components/primitives/banner-carousel";
66
+ export type { BannerCarouselProps, BannerItem } from "./components/primitives/banner-carousel";
67
+ export { ContentCarousel } from "./components/primitives/content-carousel";
68
+ export type { ContentCarouselProps } from "./components/primitives/content-carousel";
56
69
  export { StickyActionBar } from "./components/primitives/sticky-action-bar";
57
70
  export { BottomTabBar } from "./components/primitives/bottom-tab-bar";
71
+ export type { BottomTabBarProps, BottomTabBarItem } from "./components/primitives/bottom-tab-bar";
58
72
  export { BulkActionBar } from "./components/primitives/bulk-action-bar";
73
+ export type { BulkActionBarProps } from "./components/primitives/bulk-action-bar";
59
74
  export { CategoryShortcuts } from "./components/primitives/category-shortcuts";
60
75
  export type { CategoryShortcutsProps, CategoryShortcutsItem } from "./components/primitives/category-shortcuts";
61
76
  export { CategoryScroll } from "./components/primitives/category-scroll";
@@ -73,38 +88,65 @@ export { StandardPageShell as EcPageShell } from "./components/primitives/standa
73
88
  /** @deprecated 旧名。`StandardPageShellProps` を使うこと。次のメジャーで削除する。 */
74
89
  export type { StandardPageShellProps as EcPageShellProps } from "./components/primitives/standard-page-shell";
75
90
  export { EmptyState } from "./components/primitives/empty-state";
76
- export { ErrorState } from "./components/primitives/error-state";
91
+ export type { EmptyStateProps } from "./components/primitives/empty-state";
92
+ export { DatePicker, DateTimePicker } from "./components/primitives/date-picker";
93
+ export type { DatePickerProps, DateTimePickerProps } from "./components/primitives/date-picker";
94
+ export { ErrorState, NotFoundIllustration } from "./components/primitives/error-state";
95
+ export type { ErrorStateProps, ErrorStateKind, NotFoundIllustrationProps } from "./components/primitives/error-state";
77
96
  export { FilterBar } from "./components/primitives/filter-bar";
97
+ export type { FilterBarProps, FilterChip } from "./components/primitives/filter-bar";
78
98
  export { Footer } from "./components/primitives/footer";
99
+ export type { FooterProps, FooterLink, FooterLinkGroup, FooterPaymentMethod, FooterTrustBadge } from "./components/primitives/footer";
79
100
  export { FormField as CakeFormField } from "./components/primitives/form-field";
101
+ export type { FormFieldProps as CakeFormFieldProps } from "./components/primitives/form-field";
80
102
  export { FunnelShell } from "./components/primitives/funnel-shell";
81
103
  export type { FunnelShellProps, FunnelStep } from "./components/primitives/funnel-shell";
82
104
  export { Header } from "./components/primitives/header";
105
+ export type { HeaderProps, HeaderAction, HeaderNavItem } from "./components/primitives/header";
83
106
  export { ImageCarousel } from "./components/primitives/image-carousel";
107
+ export type { ImageCarouselProps } from "./components/primitives/image-carousel";
84
108
  export { ImageGallery } from "./components/primitives/image-gallery";
109
+ export type { ImageGalleryProps } from "./components/primitives/image-gallery";
85
110
  export { ImageUploader } from "./components/primitives/image-uploader";
111
+ export type { ImageUploaderProps, ImageUploaderImage } from "./components/primitives/image-uploader";
86
112
  export { KebabMenu } from "./components/primitives/kebab-menu";
113
+ export type { KebabMenuProps, KebabMenuItem } from "./components/primitives/kebab-menu";
87
114
  export { ListItem } from "./components/primitives/list-item";
115
+ export type { ListItemProps } from "./components/primitives/list-item";
88
116
  export { MenuDrawer } from "./components/primitives/menu-drawer";
117
+ export type { MenuDrawerProps, MenuSection, MenuItem, MenuBanner } from "./components/primitives/menu-drawer";
89
118
  export { SubNav } from "./components/primitives/sub-nav";
119
+ export type { SubNavProps, SubNavItem } from "./components/primitives/sub-nav";
90
120
  export { NotificationBadge, notificationBadgeVariants } from "./components/primitives/notification-badge";
121
+ export type { NotificationBadgeProps } from "./components/primitives/notification-badge";
91
122
  export { NotificationList } from "./components/primitives/notification-list";
123
+ export type { NotificationListProps, NotificationItem } from "./components/primitives/notification-list";
92
124
  export { PriceDisplay, priceDisplayVariants } from "./components/primitives/price-display";
125
+ export type { PriceDisplayProps } from "./components/primitives/price-display";
93
126
  export { ProgressSteps } from "./components/primitives/progress-steps";
127
+ export type { ProgressStepsProps } from "./components/primitives/progress-steps";
94
128
  export { QuantitySelector } from "./components/primitives/quantity-selector";
129
+ export type { QuantitySelectorProps } from "./components/primitives/quantity-selector";
95
130
  export { SearchBar } from "./components/primitives/search-bar";
131
+ export type { SearchBarProps } from "./components/primitives/search-bar";
96
132
  export { SearchPanel } from "./components/primitives/search-panel";
133
+ export type { SearchPanelProps } from "./components/primitives/search-panel";
97
134
  export { Container, containerVariants } from "./components/primitives/container";
98
135
  export { Section, sectionVariants } from "./components/primitives/section";
99
136
  export { SectionHeader } from "./components/primitives/section-header";
137
+ export type { SectionHeaderProps, SectionHeaderSize } from "./components/primitives/section-header";
100
138
  export { SectionNav } from "./components/primitives/section-nav";
101
139
  export type { SectionNavProps, SectionNavItem } from "./components/primitives/section-nav";
102
140
  export { ShareButtons } from "./components/primitives/share-buttons";
141
+ export type { ShareButtonsProps } from "./components/primitives/share-buttons";
103
142
  export { SideNav } from "./components/primitives/side-nav";
104
143
  export type { SideNavProps, SideNavGroup, SideNavItem } from "./components/primitives/side-nav";
105
144
  export { SocialLoginButton } from "./components/primitives/social-login-button";
145
+ export type { SocialLoginButtonProps, SocialProvider } from "./components/primitives/social-login-button";
106
146
  export { StatusCountTabs } from "./components/primitives/status-count-tabs";
147
+ export type { StatusCountTabsProps } from "./components/primitives/status-count-tabs";
107
148
  export { Tag, tagVariants } from "./components/primitives/tag";
149
+ export type { TagProps } from "./components/primitives/tag";
108
150
  export { WorkspaceShell } from "./components/primitives/workspace-shell";
109
151
  export type { WorkspaceShellProps } from "./components/primitives/workspace-shell";
110
152
  /**
@@ -126,27 +168,49 @@ export { AdminShell as AdminLayout } from "./components/ec/admin-shell";
126
168
  /** @deprecated 旧名。`AdminShellProps` を使うこと。次のメジャーで削除する。 */
127
169
  export type { AdminShellProps as AdminLayoutProps } from "./components/ec/admin-shell";
128
170
  export { AnniversaryCard } from "./components/ec/anniversary-card";
171
+ export type { AnniversaryCardProps } from "./components/ec/anniversary-card";
129
172
  export { CakeLogo } from "./components/ec/cake-logo";
173
+ export type { CakeLogoProps } from "./components/ec/cake-logo";
130
174
  export { ChartControls } from "./components/ec/chart-controls";
175
+ export type { ChartControlsProps, ChartGranularity, ChartPeriod } from "./components/ec/chart-controls";
131
176
  export { CountdownTimer } from "./components/ec/countdown-timer";
177
+ export type { CountdownTimerProps } from "./components/ec/countdown-timer";
132
178
  export { CouponCard } from "./components/ec/coupon-card";
179
+ export type { CouponCardProps } from "./components/ec/coupon-card";
133
180
  export { DeliveryCalendar } from "./components/ec/delivery-calendar";
181
+ export type { DeliveryCalendarProps, DayAvailability, CalendarDay } from "./components/ec/delivery-calendar";
134
182
  export { mypageMenuGroups } from "./components/ec/_mypage-menu-data";
135
183
  export { OrderSection } from "./components/ec/order-section";
184
+ export type { OrderSectionProps } from "./components/ec/order-section";
136
185
  export { OrderSummary } from "./components/ec/order-summary";
186
+ export type { OrderSummaryProps, OrderSummaryLineItem } from "./components/ec/order-summary";
137
187
  export { PaymentMethodDisplay, CreditCardIcon } from "./components/ec/payment-method";
188
+ export type { PaymentMethodDisplayProps, CreditCardIconProps, CreditCardBrand } from "./components/ec/payment-method";
138
189
  export { ProductCard } from "./components/ec/product-card";
190
+ export type { ProductCardProps } from "./components/ec/product-card";
139
191
  export { ProductCarousel } from "./components/ec/product-carousel";
192
+ export type { ProductCarouselProps } from "./components/ec/product-carousel";
140
193
  export { ProductCTA } from "./components/ec/product-cta";
194
+ export type { ProductCTAProps, ProductCTAVariant } from "./components/ec/product-cta";
141
195
  export { ProductDetailBar } from "./components/ec/product-detail-bar";
196
+ export type { ProductDetailBarProps, ProductDetailBarTab } from "./components/ec/product-detail-bar";
142
197
  export { ProductDetailSidebar } from "./components/ec/product-detail-sidebar";
198
+ export type { ProductDetailSidebarProps, SizeOption, CouponInfo, ProductTag, PromoBanner, PointInfo } from "./components/ec/product-detail-sidebar";
143
199
  export { ProductListItem } from "./components/ec/product-list-item";
200
+ export type { ProductListItemProps, ProductListItemTag } from "./components/ec/product-list-item";
144
201
  export { ProductOption, OptionQuantity, OptionSelect, OptionText, OptionImageUpload } from "./components/ec/product-option";
202
+ export type { ProductOptionProps, ProductOptionType, OptionQuantityProps, OptionSelectProps, OptionTextProps } from "./components/ec/product-option";
145
203
  export { RatingStars, SparkleIcon } from "./components/ec/rating-stars";
204
+ export type { RatingStarsProps } from "./components/ec/rating-stars";
146
205
  export { ReviewCard } from "./components/ec/review-card";
206
+ export type { ReviewCardProps } from "./components/ec/review-card";
147
207
  export { ReviewForm } from "./components/ec/review-form";
208
+ export type { ReviewFormProps } from "./components/ec/review-form";
148
209
  export { ReviewSummary, ReviewItem } from "./components/ec/review-summary";
210
+ export type { ReviewSummaryProps, ReviewGaugeItem, ReviewItemProps } from "./components/ec/review-summary";
149
211
  export { MypageShell } from "./components/ec/mypage-shell";
150
212
  export type { MypageShellProps, MypageShellBreadcrumb } from "./components/ec/mypage-shell";
151
213
  export { ShopCard } from "./components/ec/shop-card";
214
+ export type { ShopCardProps } from "./components/ec/shop-card";
152
215
  export { StatCard } from "./components/ec/stat-card";
216
+ export type { StatCardProps } from "./components/ec/stat-card";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cakejp/design-system",
3
- "version": "0.10.0",
3
+ "version": "0.12.0",
4
4
  "type": "module",
5
5
  "description": "Cake.jp Design System — UI コンポーネント・カラートークン・タイポグラフィ",
6
6
  "license": "UNLICENSED",
@@ -97,52 +97,34 @@
97
97
  "dependencies": {
98
98
  "class-variance-authority": "^0.7.1",
99
99
  "clsx": "^2.1.1",
100
- "tailwind-merge": "^3.5.0"
100
+ "cmdk": "^1.0.0",
101
+ "next-themes": "^0.4.0",
102
+ "react-day-picker": "^9.0.0",
103
+ "react-hook-form": "^7.0.0",
104
+ "sonner": "^2.0.0",
105
+ "tailwind-merge": "^3.5.0",
106
+ "vaul": "^1.0.0"
101
107
  },
102
108
  "peerDependencies": {
103
109
  "@hookform/resolvers": "^5.0.0",
104
- "cmdk": "^1.0.0",
105
110
  "date-fns": "^4.0.0",
106
111
  "iconsax-reactjs": "^0.0.8",
107
112
  "lucide-react": ">=0.400.0",
108
- "next-themes": "^0.4.0",
109
113
  "radix-ui": "^1.0.0",
110
114
  "react": "^18.0.0 || ^19.0.0",
111
- "react-day-picker": "^9.0.0",
112
115
  "react-dom": "^18.0.0 || ^19.0.0",
113
- "react-hook-form": "^7.0.0",
114
- "sonner": "^2.0.0",
115
116
  "tailwindcss": "^4.0.0",
116
- "vaul": "^1.0.0",
117
117
  "zod": "^4.0.0"
118
118
  },
119
119
  "peerDependenciesMeta": {
120
120
  "@hookform/resolvers": {
121
121
  "optional": true
122
122
  },
123
- "react-hook-form": {
124
- "optional": true
125
- },
126
123
  "zod": {
127
124
  "optional": true
128
125
  },
129
- "react-day-picker": {
130
- "optional": true
131
- },
132
126
  "date-fns": {
133
127
  "optional": true
134
- },
135
- "cmdk": {
136
- "optional": true
137
- },
138
- "next-themes": {
139
- "optional": true
140
- },
141
- "vaul": {
142
- "optional": true
143
- },
144
- "sonner": {
145
- "optional": true
146
128
  }
147
129
  },
148
130
  "devDependencies": {