@cakejp/design-system 0.16.0 → 0.17.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 (181) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/CLAUDE.md +1 -0
  3. package/bin/init.js +29 -6
  4. package/contracts/components.json +42 -7
  5. package/contracts/composition.json +8 -2
  6. package/contracts/rules.json +5 -1
  7. package/contracts/screen-patterns.json +1 -1
  8. package/dist/components/ec/_mypage-menu-data.js +166 -0
  9. package/dist/components/ec/admin-shell.js +202 -0
  10. package/dist/components/ec/anniversary-card.js +63 -0
  11. package/dist/components/ec/cake-logo.js +38 -0
  12. package/dist/components/ec/chart-controls.js +91 -0
  13. package/dist/components/ec/countdown-timer.js +50 -0
  14. package/dist/components/ec/coupon-card.js +136 -0
  15. package/dist/components/ec/delivery-calendar.js +105 -0
  16. package/dist/components/ec/mypage-shell.js +98 -0
  17. package/dist/components/ec/order-section.js +53 -0
  18. package/dist/components/ec/order-summary.js +78 -0
  19. package/dist/components/ec/payment-method.js +81 -0
  20. package/dist/components/ec/product-card.js +235 -0
  21. package/dist/components/ec/product-carousel.js +106 -0
  22. package/dist/components/ec/product-cta.js +80 -0
  23. package/dist/components/ec/product-detail-bar.js +86 -0
  24. package/dist/components/ec/product-detail-sidebar.js +296 -0
  25. package/dist/components/ec/product-list-item.js +266 -0
  26. package/dist/components/ec/product-option.js +165 -0
  27. package/dist/components/ec/rating-stars.js +74 -0
  28. package/dist/components/ec/review-card.js +126 -0
  29. package/dist/components/ec/review-form.js +181 -0
  30. package/dist/components/ec/review-summary.js +95 -0
  31. package/dist/components/ec/shop-card.js +179 -0
  32. package/dist/components/ec/stat-card.js +50 -0
  33. package/dist/components/foundations/accordion.js +67 -0
  34. package/dist/components/foundations/alert-dialog.js +165 -0
  35. package/dist/components/foundations/alert.js +218 -0
  36. package/dist/components/foundations/aspect-ratio.js +10 -0
  37. package/dist/components/foundations/avatar.js +58 -0
  38. package/dist/components/foundations/badge.js +54 -0
  39. package/dist/components/foundations/breadcrumb.js +104 -0
  40. package/dist/components/foundations/button.js +99 -0
  41. package/dist/components/foundations/calendar.js +173 -0
  42. package/dist/components/foundations/card.js +109 -0
  43. package/dist/components/foundations/checkbox-card.js +111 -0
  44. package/dist/components/foundations/checkbox-group.js +92 -0
  45. package/dist/components/foundations/checkbox.js +90 -0
  46. package/dist/components/foundations/chip-variants.js +41 -0
  47. package/dist/components/foundations/collapsible.js +34 -0
  48. package/dist/components/foundations/command.js +171 -0
  49. package/dist/components/foundations/context-menu.js +225 -0
  50. package/dist/components/foundations/data-table.js +59 -0
  51. package/dist/components/foundations/dialog.js +148 -0
  52. package/dist/components/foundations/drawer.js +129 -0
  53. package/dist/components/foundations/dropdown-menu.js +232 -0
  54. package/dist/components/foundations/field.js +150 -0
  55. package/dist/components/foundations/file-input.js +116 -0
  56. package/dist/components/foundations/form.js +101 -0
  57. package/dist/components/foundations/hover-card.js +41 -0
  58. package/dist/components/foundations/icon-badge.js +41 -0
  59. package/dist/components/foundations/input.js +74 -0
  60. package/dist/components/foundations/label.js +29 -0
  61. package/dist/components/foundations/menubar.js +252 -0
  62. package/dist/components/foundations/navigation-menu.js +171 -0
  63. package/dist/components/foundations/pagination.js +120 -0
  64. package/dist/components/foundations/popover.js +45 -0
  65. package/dist/components/foundations/progress.js +34 -0
  66. package/dist/components/foundations/radio-group.js +134 -0
  67. package/dist/components/foundations/responsive-dialog.js +76 -0
  68. package/dist/components/foundations/scroll-area.js +62 -0
  69. package/dist/components/foundations/select.js +190 -0
  70. package/dist/components/foundations/separator.js +27 -0
  71. package/dist/components/foundations/sheet.js +130 -0
  72. package/dist/components/foundations/skeleton.js +15 -0
  73. package/dist/components/foundations/skip-link.js +27 -0
  74. package/dist/components/foundations/slider.js +81 -0
  75. package/dist/components/foundations/social-icon.js +36 -0
  76. package/dist/components/foundations/sonner.js +49 -0
  77. package/dist/components/foundations/spinner.js +28 -0
  78. package/dist/components/foundations/switch.js +54 -0
  79. package/dist/components/foundations/table.js +115 -0
  80. package/dist/components/foundations/tabs.js +102 -0
  81. package/dist/components/foundations/textarea.js +65 -0
  82. package/dist/components/foundations/toggle-group.js +107 -0
  83. package/dist/components/foundations/toggle.js +44 -0
  84. package/dist/components/foundations/tooltip.js +56 -0
  85. package/dist/components/primitives/admin-header.js +31 -0
  86. package/dist/components/primitives/admin-side-nav.js +135 -0
  87. package/dist/components/primitives/banner-carousel.js +97 -0
  88. package/dist/components/primitives/bottom-tab-bar.js +81 -0
  89. package/dist/components/primitives/bulk-action-bar.js +27 -0
  90. package/dist/components/primitives/category-scroll.js +110 -0
  91. package/dist/components/primitives/category-shortcuts.js +66 -0
  92. package/dist/components/primitives/chat-composer.js +141 -0
  93. package/dist/components/primitives/chip.js +123 -0
  94. package/dist/components/primitives/coach-mark.js +102 -0
  95. package/dist/components/primitives/combobox.js +88 -0
  96. package/dist/components/primitives/container.js +50 -0
  97. package/dist/components/primitives/content-carousel.js +144 -0
  98. package/dist/components/primitives/date-picker.js +175 -0
  99. package/dist/components/primitives/empty-state.js +32 -0
  100. package/dist/components/primitives/error-state.js +115 -0
  101. package/dist/components/primitives/filter-bar.js +144 -0
  102. package/dist/components/primitives/footer.js +247 -0
  103. package/dist/components/primitives/form-field.js +38 -0
  104. package/dist/components/primitives/funnel-shell.js +99 -0
  105. package/dist/components/primitives/header.js +257 -0
  106. package/dist/components/primitives/image-carousel.js +156 -0
  107. package/dist/components/primitives/image-gallery.js +177 -0
  108. package/dist/components/primitives/image-input.js +207 -0
  109. package/dist/components/primitives/image-uploader.js +69 -0
  110. package/dist/components/primitives/kebab-menu.js +40 -0
  111. package/dist/components/primitives/list-item.js +80 -0
  112. package/dist/components/primitives/menu-drawer.js +154 -0
  113. package/dist/components/primitives/multi-select.js +93 -0
  114. package/dist/components/primitives/notification-badge.js +61 -0
  115. package/dist/components/primitives/notification-list.js +72 -0
  116. package/dist/components/primitives/number-input.js +235 -0
  117. package/dist/components/primitives/price-display.js +101 -0
  118. package/dist/components/primitives/progress-steps.js +62 -0
  119. package/dist/components/primitives/search-bar.js +81 -0
  120. package/dist/components/primitives/search-panel.js +43 -0
  121. package/dist/components/primitives/section-header.js +148 -0
  122. package/dist/components/primitives/section-nav.js +85 -0
  123. package/dist/components/primitives/section.js +78 -0
  124. package/dist/components/primitives/share-buttons.js +102 -0
  125. package/dist/components/primitives/side-nav.js +98 -0
  126. package/dist/components/primitives/social-login-button.js +53 -0
  127. package/dist/components/primitives/standard-page-shell.js +34 -0
  128. package/dist/components/primitives/status-count-tabs.js +42 -0
  129. package/dist/components/primitives/sticky-action-bar.js +26 -0
  130. package/dist/components/primitives/sub-nav.js +67 -0
  131. package/dist/components/primitives/tag.js +57 -0
  132. package/dist/components/primitives/timeline.js +55 -0
  133. package/dist/components/primitives/workspace-shell.js +57 -0
  134. package/dist/index.css +1 -1
  135. package/dist/index.js +22961 -13130
  136. package/dist/lib/field-labelling.js +29 -0
  137. package/dist/lib/focus-ring.js +6 -0
  138. package/dist/lib/pagination-range.js +42 -0
  139. package/dist/lib/use-value-length.js +63 -0
  140. package/dist/lib/utils.js +33 -0
  141. package/dist/types/components/ec/_mypage-menu-data.d.ts +3 -3
  142. package/dist/types/components/ec/admin-shell.d.ts +1 -1
  143. package/dist/types/components/ec/anniversary-card.d.ts +1 -1
  144. package/dist/types/components/ec/mypage-shell.d.ts +3 -3
  145. package/dist/types/components/ec/product-card.d.ts +1 -1
  146. package/dist/types/components/ec/product-carousel.d.ts +3 -3
  147. package/dist/types/components/ec/stat-card.d.ts +1 -1
  148. package/dist/types/components/foundations/accordion.d.ts +8 -1
  149. package/dist/types/components/foundations/alert-dialog.d.ts +1 -1
  150. package/dist/types/components/foundations/calendar.d.ts +1 -1
  151. package/dist/types/components/foundations/checkbox-group.d.ts +1 -1
  152. package/dist/types/components/foundations/command.d.ts +1 -1
  153. package/dist/types/components/foundations/data-table.d.ts +6 -1
  154. package/dist/types/components/foundations/field.d.ts +2 -2
  155. package/dist/types/components/foundations/file-input.d.ts +1 -1
  156. package/dist/types/components/foundations/pagination.d.ts +1 -1
  157. package/dist/types/components/foundations/responsive-dialog.d.ts +1 -1
  158. package/dist/types/components/foundations/skip-link.d.ts +1 -1
  159. package/dist/types/components/foundations/slider.d.ts +13 -1
  160. package/dist/types/components/primitives/admin-header.d.ts +11 -1
  161. package/dist/types/components/primitives/admin-side-nav.d.ts +19 -1
  162. package/dist/types/components/primitives/banner-carousel.d.ts +2 -2
  163. package/dist/types/components/primitives/category-scroll.d.ts +2 -2
  164. package/dist/types/components/primitives/category-shortcuts.d.ts +1 -1
  165. package/dist/types/components/primitives/chat-composer.d.ts +1 -1
  166. package/dist/types/components/primitives/chip.d.ts +1 -1
  167. package/dist/types/components/primitives/combobox.d.ts +9 -1
  168. package/dist/types/components/primitives/content-carousel.d.ts +1 -1
  169. package/dist/types/components/primitives/form-field.d.ts +1 -1
  170. package/dist/types/components/primitives/image-input.d.ts +1 -1
  171. package/dist/types/components/primitives/kebab-menu.d.ts +1 -1
  172. package/dist/types/components/primitives/menu-drawer.d.ts +0 -16
  173. package/dist/types/components/primitives/multi-select.d.ts +9 -1
  174. package/dist/types/components/primitives/notification-list.d.ts +1 -1
  175. package/dist/types/components/primitives/search-panel.d.ts +1 -1
  176. package/dist/types/components/primitives/section-nav.d.ts +1 -1
  177. package/dist/types/components/primitives/side-nav.d.ts +1 -1
  178. package/dist/types/components/primitives/social-login-button.d.ts +1 -1
  179. package/dist/types/lib/field-labelling.d.ts +66 -0
  180. package/package.json +2 -2
  181. package/scripts/codemod/README.md +9 -0
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * ### インポート
7
7
  * ```tsx
8
- * import { NotificationList } from '../../components/primitives/notification-list'
8
+ * import { NotificationList } from '../../../components/primitives/notification-list'
9
9
  * ```
10
10
  *
11
11
  * ### Props(主要なもの)
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * ### インポート
8
8
  * ```tsx
9
- * import { SearchPanel } from '../../components/primitives/search-panel'
9
+ * import { SearchPanel } from '../../../components/primitives/search-panel'
10
10
  * ```
11
11
  *
12
12
  * ### Props
@@ -43,7 +43,7 @@ export interface SectionNavProps extends React.HTMLAttributes<HTMLElement> {
43
43
  *
44
44
  * ### インポート
45
45
  * ```tsx
46
- * import { SectionNav } from '../../components/primitives/section-nav'
46
+ * import { SectionNav } from '../../../components/primitives/section-nav'
47
47
  * ```
48
48
  *
49
49
  * ### 使い方(vertical=既定)
@@ -51,7 +51,7 @@ export interface SideNavProps extends React.HTMLAttributes<HTMLElement> {
51
51
  *
52
52
  * ### インポート
53
53
  * ```tsx
54
- * import { SideNav } from '../../components/primitives/side-nav'
54
+ * import { SideNav } from '../../../components/primitives/side-nav'
55
55
  * ```
56
56
  *
57
57
  * ### 使い方
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import { type SocialPlatform } from "../../components/foundations/social-icon";
2
+ import { type SocialPlatform } from "../../../components/foundations/social-icon";
3
3
  export type SocialProvider = Extract<SocialPlatform, "line" | "amazon" | "google" | "apple">;
4
4
  export interface SocialLoginButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
5
5
  /** ソーシャルプロバイダー */
@@ -0,0 +1,66 @@
1
+ /**
2
+ * ## フィールドのラベル関連付け(DS 全体の方針 / issue #202)
3
+ *
4
+ * Radix ベースのコントロール(Select / Switch / Checkbox / Slider 等)は
5
+ * `<button>` や `<span role="...">` として描画されるため、**隣に `<Label htmlFor>` を
6
+ * 置いてもアクセシブルネームにならない**(`<label for>` が名前を与えるのは
7
+ * labelable な要素だけで、`<button>` は対象外)。
8
+ *
9
+ * そこで DS は次の方針を採る:
10
+ *
11
+ * 1. フィールドのラッパー(`FormField`)がラベル要素に **id を採番**し、
12
+ * その id を context で配下のコントロールへ渡す。
13
+ * 2. コントロール側は `aria-labelledby` を **既定値として** その id にする。
14
+ * 利用側が `aria-label` / `aria-labelledby` を明示した場合はそちらを優先する。
15
+ * 3. ラッパー無しで単体利用するときは、利用側が `aria-label`(日本語)を書く。
16
+ *
17
+ * `<label for>` が有効なネイティブ入力(Input / Textarea)は従来どおり
18
+ * `htmlFor` ↔ `id` の関連付けで足りるため、context の `controlId` を使う。
19
+ */
20
+ import * as React from "react";
21
+ export interface FieldLabellingValue {
22
+ /** ラベル要素の id。コントロールの aria-labelledby 既定値になる */
23
+ labelId: string;
24
+ /** コントロールに割り当てる id(ネイティブ入力の htmlFor 対応用) */
25
+ controlId: string;
26
+ /** 説明文の id。存在するときだけ設定される */
27
+ descriptionId?: string;
28
+ /** エラーメッセージの id。存在するときだけ設定される */
29
+ errorId?: string;
30
+ }
31
+ /**
32
+ * ラッパー(FormField 等)が配下のコントロールへ id を渡す context。
33
+ * Provider は利用側で `<FieldLabellingContext.Provider value={...}>` として使う
34
+ * (このファイルはコンポーネントを export しない = fast refresh の制約に合わせる)。
35
+ */
36
+ declare const FieldLabellingContext: React.Context<FieldLabellingValue>;
37
+ /** ラッパー内かどうかを問わず使える。ラッパー外では null。 */
38
+ declare function useFieldLabelling(): FieldLabellingValue | null;
39
+ /**
40
+ * Radix トリガー系コントロール向けの aria 属性を解決する。
41
+ *
42
+ * 利用側の明示指定(aria-label / aria-labelledby / id / aria-describedby)を必ず優先し、
43
+ * 何も指定が無いときだけラッパーの id を当てる。
44
+ */
45
+ declare function resolveFieldAria(props: {
46
+ id?: string;
47
+ "aria-label"?: string;
48
+ "aria-labelledby"?: string;
49
+ "aria-describedby"?: string;
50
+ }, field: FieldLabellingValue | null): {
51
+ id?: string;
52
+ "aria-labelledby"?: string;
53
+ "aria-describedby"?: string;
54
+ };
55
+ /**
56
+ * ネイティブ入力(Input / Textarea)向け。
57
+ * 名前は `<label for>` ↔ `id` で付くので、ここでは id と説明の関連付けだけ行う。
58
+ */
59
+ declare function resolveNativeFieldAria(props: {
60
+ id?: string;
61
+ "aria-describedby"?: string;
62
+ }, field: FieldLabellingValue | null): {
63
+ id?: string;
64
+ "aria-describedby"?: string;
65
+ };
66
+ export { FieldLabellingContext, useFieldLabelling, resolveFieldAria, resolveNativeFieldAria, };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cakejp/design-system",
3
- "version": "0.16.0",
3
+ "version": "0.17.0",
4
4
  "type": "module",
5
5
  "description": "Cake.jp Design System — UI コンポーネント・カラートークン・タイポグラフィ",
6
6
  "license": "UNLICENSED",
@@ -80,7 +80,7 @@
80
80
  "scripts": {
81
81
  "dev": "vite",
82
82
  "build": "tsc -b && vite build",
83
- "build:lib": "vite build --config vite.config.lib.ts && tsc --project tsconfig.lib.json && tsc-alias --project tsconfig.lib.json",
83
+ "build:lib": "vite build --config vite.config.lib.ts && node scripts/append-tailwind-source-manifest.mjs && tsc --project tsconfig.lib.json && tsc-alias --project tsconfig.lib.json",
84
84
  "prepack": "npm run build:lib",
85
85
  "prepare": "npm run build:lib",
86
86
  "postinstall": "node ./bin/init.js postinstall",
@@ -9,6 +9,15 @@ node scripts/codemod/v1-to-v2.mjs --dry ./src
9
9
  node scripts/codemod/v1-to-v2.mjs ./src
10
10
  ```
11
11
 
12
+ ここに置いたファイル名がそのまま consumer 側の codemod 名になります(dispatch の
13
+ 書き換えは不要)。`template.mjs` と `check-migration.mjs` は一覧から除外されます。
14
+
15
+ ```bash
16
+ npx cakejp-ds codemod # 使える codemod 名の一覧
17
+ npx cakejp-ds codemod v1-to-v2 --dry ./src
18
+ npx cakejp-ds codemod v1-to-v2 ./src
19
+ ```
20
+
12
21
  正規表現ベースのため、必ずコミット済みの利用側で `--dry` を先に実行し、
13
22
  適用後は `git diff` と ESLint の `@cakejp/design-system/eslint/deprecated`
14
23
  で残件を確認してください。