@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.
- package/CHANGELOG.md +68 -1
- package/CLAUDE.md +19 -2
- package/README.md +78 -5
- package/UPDATING.md +45 -0
- package/bin/check-duplicates.mjs +132 -0
- package/bin/init.js +8 -0
- package/contracts/components.json +175 -21
- package/contracts/rules.json +19 -3
- package/dist/index.css +1 -1
- package/dist/index.js +5326 -3367
- package/dist/types/components/ec/admin-shell.d.ts +10 -1
- package/dist/types/components/ec/mypage-shell.d.ts +43 -7
- package/dist/types/components/ec/product-card.d.ts +3 -1
- package/dist/types/components/ec/product-list-item.d.ts +8 -1
- package/dist/types/components/foundations/alert.d.ts +5 -1
- package/dist/types/components/foundations/button.d.ts +1 -1
- package/dist/types/components/foundations/card.d.ts +12 -2
- package/dist/types/components/foundations/chip-variants.d.ts +17 -0
- package/dist/types/components/foundations/field.d.ts +58 -0
- package/dist/types/components/foundations/file-input.d.ts +75 -0
- package/dist/types/components/foundations/icon-badge.d.ts +2 -2
- package/dist/types/components/foundations/input.d.ts +9 -1
- package/dist/types/components/foundations/radio-group.d.ts +12 -2
- package/dist/types/components/foundations/skip-link.d.ts +39 -0
- package/dist/types/components/foundations/textarea.d.ts +9 -1
- package/dist/types/components/primitives/chip.d.ts +2 -7
- package/dist/types/components/primitives/content-carousel.d.ts +52 -0
- package/dist/types/components/primitives/date-picker.d.ts +32 -0
- package/dist/types/components/primitives/error-state.d.ts +43 -16
- package/dist/types/components/primitives/funnel-shell.d.ts +10 -1
- package/dist/types/components/primitives/header.d.ts +15 -1
- package/dist/types/components/primitives/section-nav.d.ts +28 -2
- package/dist/types/components/primitives/share-buttons.d.ts +8 -2
- package/dist/types/components/primitives/side-nav.d.ts +24 -3
- package/dist/types/components/primitives/standard-page-shell.d.ts +11 -1
- package/dist/types/components/primitives/workspace-shell.d.ts +19 -1
- package/dist/types/index.d.ts +66 -2
- package/package.json +8 -26
- package/src/preset-standalone.css +306 -4
- package/src/styles/semantic.css +7 -0
- package/src/styles/typography.css +8 -1
- package/templates/AGENTS.md +43 -7
- package/templates/CLAUDE.md +44 -7
- 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
|
|
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
|
|
20
|
-
*
|
|
40
|
+
* APIエラー・ネットワークエラー・タイムアウト等(`kind="error"`)と、
|
|
41
|
+
* 404 Not Found(`kind="notFound"`)の定番構成を1つのコンポーネントで扱う。
|
|
42
|
+
* EmptyState と同様の中央寄せレイアウト。
|
|
21
43
|
*
|
|
22
44
|
* ### AI 向け使用ルール
|
|
23
45
|
*
|
|
24
|
-
* - `icon
|
|
25
|
-
* - `
|
|
26
|
-
*
|
|
27
|
-
* -
|
|
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 };
|
package/dist/types/index.d.ts
CHANGED
|
@@ -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 {
|
|
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.
|
|
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
|
-
"
|
|
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": {
|