@cakejp/design-system 0.3.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 (131) hide show
  1. package/AGENTS.md +144 -0
  2. package/CHANGELOG.md +115 -0
  3. package/CLAUDE.md +188 -0
  4. package/CLAUDE_PRODUCTION.md +121 -0
  5. package/MIGRATION.md +228 -0
  6. package/README.md +79 -0
  7. package/RELEASE.md +205 -0
  8. package/bin/init.js +134 -0
  9. package/component-registry.json +1146 -0
  10. package/contracts/components.json +730 -0
  11. package/contracts/rules.json +559 -0
  12. package/dist/index.css +1 -0
  13. package/dist/index.js +9344 -0
  14. package/dist/types/components/ec/_mypage-menu-data.d.ts +15 -0
  15. package/dist/types/components/ec/admin-layout.d.ts +31 -0
  16. package/dist/types/components/ec/anniversary-card.d.ts +50 -0
  17. package/dist/types/components/ec/cake-logo.d.ts +22 -0
  18. package/dist/types/components/ec/chart-controls.d.ts +16 -0
  19. package/dist/types/components/ec/countdown-timer.d.ts +24 -0
  20. package/dist/types/components/ec/coupon-card.d.ts +47 -0
  21. package/dist/types/components/ec/delivery-calendar.d.ts +36 -0
  22. package/dist/types/components/ec/order-section.d.ts +29 -0
  23. package/dist/types/components/ec/order-summary.d.ts +36 -0
  24. package/dist/types/components/ec/payment-method.d.ts +41 -0
  25. package/dist/types/components/ec/product-card.d.ts +77 -0
  26. package/dist/types/components/ec/product-carousel.d.ts +56 -0
  27. package/dist/types/components/ec/product-cta.d.ts +35 -0
  28. package/dist/types/components/ec/product-detail-bar.d.ts +62 -0
  29. package/dist/types/components/ec/product-detail-sidebar.d.ts +115 -0
  30. package/dist/types/components/ec/product-list-item.d.ts +90 -0
  31. package/dist/types/components/ec/product-option.d.ts +62 -0
  32. package/dist/types/components/ec/rating-stars.d.ts +30 -0
  33. package/dist/types/components/ec/review-card.d.ts +44 -0
  34. package/dist/types/components/ec/review-form.d.ts +40 -0
  35. package/dist/types/components/ec/review-summary.d.ts +53 -0
  36. package/dist/types/components/ec/shop-card.d.ts +48 -0
  37. package/dist/types/components/ec/stat-card.d.ts +44 -0
  38. package/dist/types/components/foundations/accordion.d.ts +7 -0
  39. package/dist/types/components/foundations/alert-dialog.d.ts +18 -0
  40. package/dist/types/components/foundations/alert.d.ts +42 -0
  41. package/dist/types/components/foundations/aspect-ratio.d.ts +3 -0
  42. package/dist/types/components/foundations/avatar.d.ts +11 -0
  43. package/dist/types/components/foundations/badge.d.ts +9 -0
  44. package/dist/types/components/foundations/breadcrumb.d.ts +11 -0
  45. package/dist/types/components/foundations/button.d.ts +10 -0
  46. package/dist/types/components/foundations/calendar.d.ts +8 -0
  47. package/dist/types/components/foundations/card.d.ts +9 -0
  48. package/dist/types/components/foundations/checkbox-card.d.ts +30 -0
  49. package/dist/types/components/foundations/checkbox-group.d.ts +53 -0
  50. package/dist/types/components/foundations/checkbox.d.ts +4 -0
  51. package/dist/types/components/foundations/collapsible.d.ts +5 -0
  52. package/dist/types/components/foundations/command.d.ts +18 -0
  53. package/dist/types/components/foundations/context-menu.d.ts +25 -0
  54. package/dist/types/components/foundations/data-table.d.ts +104 -0
  55. package/dist/types/components/foundations/dialog.d.ts +17 -0
  56. package/dist/types/components/foundations/drawer.d.ts +13 -0
  57. package/dist/types/components/foundations/dropdown-menu.d.ts +25 -0
  58. package/dist/types/components/foundations/form.d.ts +24 -0
  59. package/dist/types/components/foundations/hover-card.d.ts +6 -0
  60. package/dist/types/components/foundations/input.d.ts +3 -0
  61. package/dist/types/components/foundations/label.d.ts +7 -0
  62. package/dist/types/components/foundations/menubar.d.ts +26 -0
  63. package/dist/types/components/foundations/navigation-menu.d.ts +14 -0
  64. package/dist/types/components/foundations/pagination.d.ts +13 -0
  65. package/dist/types/components/foundations/popover.d.ts +10 -0
  66. package/dist/types/components/foundations/progress.d.ts +4 -0
  67. package/dist/types/components/foundations/radio-group.d.ts +9 -0
  68. package/dist/types/components/foundations/responsive-dialog.d.ts +52 -0
  69. package/dist/types/components/foundations/scroll-area.d.ts +5 -0
  70. package/dist/types/components/foundations/select.d.ts +15 -0
  71. package/dist/types/components/foundations/separator.d.ts +4 -0
  72. package/dist/types/components/foundations/sheet.d.ts +14 -0
  73. package/dist/types/components/foundations/skeleton.d.ts +2 -0
  74. package/dist/types/components/foundations/slider.d.ts +4 -0
  75. package/dist/types/components/foundations/sonner.d.ts +3 -0
  76. package/dist/types/components/foundations/spinner.d.ts +6 -0
  77. package/dist/types/components/foundations/switch.d.ts +13 -0
  78. package/dist/types/components/foundations/table.d.ts +10 -0
  79. package/dist/types/components/foundations/tabs.d.ts +12 -0
  80. package/dist/types/components/foundations/textarea.d.ts +3 -0
  81. package/dist/types/components/foundations/toggle-group.d.ts +23 -0
  82. package/dist/types/components/foundations/toggle.d.ts +9 -0
  83. package/dist/types/components/foundations/tooltip.d.ts +7 -0
  84. package/dist/types/components/pages/cake/_mypage-shell.d.ts +41 -0
  85. package/dist/types/components/primitives/banner-carousel.d.ts +54 -0
  86. package/dist/types/components/primitives/bottom-tab-bar.d.ts +39 -0
  87. package/dist/types/components/primitives/bulk-action-bar.d.ts +32 -0
  88. package/dist/types/components/primitives/category-scroll.d.ts +70 -0
  89. package/dist/types/components/primitives/category-shortcuts.d.ts +44 -0
  90. package/dist/types/components/primitives/chip.d.ts +44 -0
  91. package/dist/types/components/primitives/coach-mark.d.ts +28 -0
  92. package/dist/types/components/primitives/empty-state.d.ts +36 -0
  93. package/dist/types/components/primitives/error-state.d.ts +41 -0
  94. package/dist/types/components/primitives/filter-bar.d.ts +56 -0
  95. package/dist/types/components/primitives/footer.d.ts +81 -0
  96. package/dist/types/components/primitives/form-field.d.ts +46 -0
  97. package/dist/types/components/primitives/header.d.ts +69 -0
  98. package/dist/types/components/primitives/image-carousel.d.ts +52 -0
  99. package/dist/types/components/primitives/image-gallery.d.ts +35 -0
  100. package/dist/types/components/primitives/image-uploader.d.ts +19 -0
  101. package/dist/types/components/primitives/kebab-menu.d.ts +38 -0
  102. package/dist/types/components/primitives/list-item.d.ts +60 -0
  103. package/dist/types/components/primitives/menu-drawer.d.ts +75 -0
  104. package/dist/types/components/primitives/notification-badge.d.ts +30 -0
  105. package/dist/types/components/primitives/notification-list.d.ts +45 -0
  106. package/dist/types/components/primitives/price-display.d.ts +33 -0
  107. package/dist/types/components/primitives/progress-steps.d.ts +27 -0
  108. package/dist/types/components/primitives/quantity-selector.d.ts +50 -0
  109. package/dist/types/components/primitives/search-bar.d.ts +31 -0
  110. package/dist/types/components/primitives/search-panel.d.ts +41 -0
  111. package/dist/types/components/primitives/section-header.d.ts +51 -0
  112. package/dist/types/components/primitives/share-buttons.d.ts +23 -0
  113. package/dist/types/components/primitives/side-nav.d.ts +62 -0
  114. package/dist/types/components/primitives/social-login-button.d.ts +24 -0
  115. package/dist/types/components/primitives/status-count-tabs.d.ts +14 -0
  116. package/dist/types/components/primitives/sticky-action-bar.d.ts +7 -0
  117. package/dist/types/components/primitives/sub-nav.d.ts +34 -0
  118. package/dist/types/components/primitives/tag.d.ts +19 -0
  119. package/dist/types/index.d.ts +109 -0
  120. package/dist/types/lib/utils.d.ts +2 -0
  121. package/package.json +186 -0
  122. package/scripts/codemod/check-migration.mjs +97 -0
  123. package/scripts/codemod/v0.2-to-v0.3.mjs +192 -0
  124. package/src/preset-standalone.css +109 -0
  125. package/src/preset.css +288 -0
  126. package/src/styles/primitive.css +139 -0
  127. package/src/styles/semantic.css +203 -0
  128. package/src/styles/typography.css +129 -0
  129. package/templates/AGENTS.md +56 -0
  130. package/templates/CLAUDE.md +56 -0
  131. package/tokens.json +127 -0
package/src/preset.css ADDED
@@ -0,0 +1,288 @@
1
+ /* ============================================
2
+ * Cake.jp Design System — Preset
3
+ * ============================================
4
+ *
5
+ * 消費者側の CSS にこの 1 行を追加するだけで、
6
+ * トークン・タイポグラフィ・テーマ設定が全て有効になる。
7
+ *
8
+ * 使い方:
9
+ * @import "tailwindcss";
10
+ * @import "@cakejp/design-system/preset";
11
+ *
12
+ * これで以下が有効になる:
13
+ * - Primitive カラートークン(--Primitive-*)
14
+ * - Semantic カラートークン(--Text-*, --Surface-*, --Border-* 等)
15
+ * - ダークモード自動切替(.dark クラス)
16
+ * - typo-* タイポグラフィユーティリティ
17
+ * - shadcn bridge トークン(--primary, --foreground 等)
18
+ * - Tailwind 標準色 → Cake.jp マッピング(bg-red-600 等)
19
+ * - シャドウ・角丸トークン
20
+ * - アニメーションユーティリティ
21
+ * ============================================ */
22
+
23
+ /* --- Layer 1: Primitive Colors --- */
24
+ @import "./styles/primitive.css";
25
+
26
+ /* --- Layer 2: Semantic Colors (+ dark mode) --- */
27
+ @import "./styles/semantic.css";
28
+
29
+ /* --- Layer 3: Typography Utilities --- */
30
+ @import "./styles/typography.css";
31
+
32
+ /* --- Dark mode variant --- */
33
+ @custom-variant dark (&:is(.dark *));
34
+
35
+ /* --- Theme: Tailwind integration --- */
36
+ @theme inline {
37
+ /* Radius */
38
+ --radius-sm: calc(var(--radius) - 4px);
39
+ --radius-md: calc(var(--radius) - 2px);
40
+ --radius-lg: var(--radius);
41
+ --radius-xl: calc(var(--radius) + 4px);
42
+ --radius-2xl: calc(var(--radius) + 8px);
43
+ --radius-3xl: calc(var(--radius) + 12px);
44
+ --radius-4xl: calc(var(--radius) + 16px);
45
+
46
+ /* shadcn → Tailwind color bridge */
47
+ --color-background: var(--background);
48
+ --color-foreground: var(--foreground);
49
+ --color-card: var(--card);
50
+ --color-card-foreground: var(--card-foreground);
51
+ --color-popover: var(--popover);
52
+ --color-popover-foreground: var(--popover-foreground);
53
+ --color-primary: var(--primary);
54
+ --color-primary-foreground: var(--primary-foreground);
55
+ --color-secondary: var(--secondary);
56
+ --color-secondary-foreground: var(--secondary-foreground);
57
+ --color-muted: var(--muted);
58
+ --color-muted-foreground: var(--muted-foreground);
59
+ --color-accent: var(--accent);
60
+ --color-accent-foreground: var(--accent-foreground);
61
+ --color-destructive: var(--destructive);
62
+ --color-border: var(--border);
63
+ --color-input: var(--input);
64
+ --color-ring: var(--ring);
65
+ --color-chart-1: var(--chart-1);
66
+ --color-chart-2: var(--chart-2);
67
+ --color-chart-3: var(--chart-3);
68
+ --color-chart-4: var(--chart-4);
69
+ --color-chart-5: var(--chart-5);
70
+ --color-sidebar: var(--sidebar);
71
+ --color-sidebar-foreground: var(--sidebar-foreground);
72
+ --color-sidebar-primary: var(--sidebar-primary);
73
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
74
+ --color-sidebar-accent: var(--sidebar-accent);
75
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
76
+ --color-sidebar-border: var(--sidebar-border);
77
+ --color-sidebar-ring: var(--sidebar-ring);
78
+
79
+ /* Tailwind 標準色 → Cake.jp Primitive マッピング */
80
+ --color-red-50: var(--Primitive-Sun-50);
81
+ --color-red-100: var(--Primitive-Sun-100);
82
+ --color-red-200: var(--Primitive-Sun-200);
83
+ --color-red-300: var(--Primitive-Sun-300);
84
+ --color-red-400: var(--Primitive-Sun-400);
85
+ --color-red-500: var(--Primitive-Sun-500);
86
+ --color-red-600: var(--Primitive-Sun-600);
87
+ --color-red-700: var(--Primitive-Sun-700);
88
+ --color-red-800: var(--Primitive-Sun-800);
89
+ --color-red-900: var(--Primitive-Sun-900);
90
+
91
+ --color-orange-50: var(--Primitive-Orange-50);
92
+ --color-orange-100: var(--Primitive-Orange-100);
93
+ --color-orange-200: var(--Primitive-Orange-200);
94
+ --color-orange-300: var(--Primitive-Orange-300);
95
+ --color-orange-400: var(--Primitive-Orange-400);
96
+ --color-orange-500: var(--Primitive-Orange-500);
97
+ --color-orange-600: var(--Primitive-Orange-600);
98
+ --color-orange-700: var(--Primitive-Orange-700);
99
+ --color-orange-800: var(--Primitive-Orange-800);
100
+ --color-orange-900: var(--Primitive-Orange-900);
101
+
102
+ --color-amber-50: var(--Primitive-Wood-50);
103
+ --color-amber-100: var(--Primitive-Wood-100);
104
+ --color-amber-200: var(--Primitive-Wood-200);
105
+ --color-amber-300: var(--Primitive-Wood-300);
106
+ --color-amber-400: var(--Primitive-Wood-400);
107
+ --color-amber-500: var(--Primitive-Wood-500);
108
+ --color-amber-600: var(--Primitive-Wood-600);
109
+ --color-amber-700: var(--Primitive-Wood-700);
110
+ --color-amber-800: var(--Primitive-Wood-800);
111
+ --color-amber-900: var(--Primitive-Wood-900);
112
+
113
+ --color-green-50: var(--Primitive-Forest-50);
114
+ --color-green-100: var(--Primitive-Forest-100);
115
+ --color-green-200: var(--Primitive-Forest-200);
116
+ --color-green-300: var(--Primitive-Forest-300);
117
+ --color-green-400: var(--Primitive-Forest-400);
118
+ --color-green-500: var(--Primitive-Forest-500);
119
+ --color-green-600: var(--Primitive-Forest-600);
120
+ --color-green-700: var(--Primitive-Forest-700);
121
+ --color-green-800: var(--Primitive-Forest-800);
122
+ --color-green-900: var(--Primitive-Forest-900);
123
+
124
+ --color-teal-50: var(--Primitive-Teal-50);
125
+ --color-teal-100: var(--Primitive-Teal-100);
126
+ --color-teal-200: var(--Primitive-Teal-200);
127
+ --color-teal-300: var(--Primitive-Teal-300);
128
+ --color-teal-400: var(--Primitive-Teal-400);
129
+ --color-teal-500: var(--Primitive-Teal-500);
130
+ --color-teal-600: var(--Primitive-Teal-600);
131
+ --color-teal-700: var(--Primitive-Teal-700);
132
+ --color-teal-800: var(--Primitive-Teal-800);
133
+ --color-teal-900: var(--Primitive-Teal-900);
134
+
135
+ --color-blue-50: var(--Primitive-Sea-50);
136
+ --color-blue-100: var(--Primitive-Sea-100);
137
+ --color-blue-200: var(--Primitive-Sea-200);
138
+ --color-blue-300: var(--Primitive-Sea-300);
139
+ --color-blue-400: var(--Primitive-Sea-400);
140
+ --color-blue-500: var(--Primitive-Sea-500);
141
+ --color-blue-600: var(--Primitive-Sea-600);
142
+ --color-blue-700: var(--Primitive-Sea-700);
143
+ --color-blue-800: var(--Primitive-Sea-800);
144
+ --color-blue-900: var(--Primitive-Sea-900);
145
+
146
+ --color-pink-50: var(--Primitive-Berry-50);
147
+ --color-pink-100: var(--Primitive-Berry-100);
148
+ --color-pink-200: var(--Primitive-Berry-200);
149
+ --color-pink-300: var(--Primitive-Berry-300);
150
+ --color-pink-400: var(--Primitive-Berry-400);
151
+ --color-pink-500: var(--Primitive-Berry-500);
152
+ --color-pink-600: var(--Primitive-Berry-600);
153
+ --color-pink-700: var(--Primitive-Berry-700);
154
+ --color-pink-800: var(--Primitive-Berry-800);
155
+ --color-pink-900: var(--Primitive-Berry-900);
156
+
157
+ --color-gray-50: var(--Primitive-Gray-50);
158
+ --color-gray-100: var(--Primitive-Gray-100);
159
+ --color-gray-200: var(--Primitive-Gray-200);
160
+ --color-gray-300: var(--Primitive-Gray-300);
161
+ --color-gray-400: var(--Primitive-Gray-400);
162
+ --color-gray-500: var(--Primitive-Gray-500);
163
+ --color-gray-600: var(--Primitive-Gray-600);
164
+ --color-gray-700: var(--Primitive-Gray-700);
165
+ --color-gray-800: var(--Primitive-Gray-800);
166
+ --color-gray-900: var(--Primitive-Gray-900);
167
+
168
+ /* Shadow tokens */
169
+ --shadow-md: 0px 7px 7px 0px rgba(0, 0, 0, 0.07), 0px 2px 16px 0px rgba(0, 0, 0, 0.12);
170
+ --shadow-lg: 0px 12px 32px -4px rgba(24, 39, 75, 0.12), 0px 8px 16px -6px rgba(24, 39, 75, 0.12), 0px 1px 4px 1px rgba(0, 0, 0, 0.2);
171
+ --shadow-menu: var(--shadow-md);
172
+ --shadow-tooltip: 0px 8px 8px -4px rgba(24, 39, 75, 0.08), 0px 4px 6px -4px rgba(24, 39, 75, 0.12);
173
+ --shadow-dialog: var(--shadow-lg);
174
+ --shadow-modal: var(--shadow-lg);
175
+ --shadow-overlay: 0 24px 80px rgba(24, 39, 75, 0.16); /* ドロワー・フルスクリーンパネル */
176
+
177
+ /* Gradient tokens */
178
+ --Gradient-Warm-Footer: linear-gradient(180deg, rgba(255, 255, 255, 0.92), rgba(255, 244, 236, 0.96));
179
+ --Gradient-Warm-Drawer: linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(255, 244, 236, 0.98));
180
+ }
181
+
182
+ /* --- Bridge: Semantic → shadcn tokens --- */
183
+ :root {
184
+ /* Spacing tokens from tokens.json scale */
185
+ --spacing-1: 0.25rem; /* 4px - scale 1 */
186
+ --spacing-2: 0.5rem; /* 8px - scale 2 */
187
+ --spacing-3: 0.75rem; /* 12px - scale 3 */
188
+ --spacing-4: 1rem; /* 16px - scale 4 */
189
+ --spacing-5: 1.25rem; /* 20px - interpolated */
190
+ --spacing-6: 1.5rem; /* 24px - scale 6 */
191
+
192
+ --radius: 0.625rem;
193
+
194
+ --background: var(--Surface-Primary);
195
+ --foreground: var(--Text-High-Emphasis);
196
+ --card: var(--Surface-Secondary);
197
+ --card-foreground: var(--Text-High-Emphasis);
198
+ --popover: var(--Surface-Primary);
199
+ --popover-foreground: var(--Text-High-Emphasis);
200
+ --primary: var(--Brand-Cake-Orange);
201
+ --primary-foreground: var(--Text-on-Inverse);
202
+ --secondary: var(--Surface-Secondary);
203
+ --secondary-foreground: var(--Text-Medium-Emphasis);
204
+ --muted: var(--Surface-Tertiary);
205
+ --muted-foreground: var(--Text-Low-Emphasis);
206
+ --accent: var(--Surface-Secondary);
207
+ --accent-foreground: var(--Text-High-Emphasis);
208
+ --destructive: var(--Object-Caution);
209
+ --border: var(--Border-Medium-Emphasis);
210
+ --input: var(--Border-Medium-Emphasis);
211
+ --ring: var(--Focus-High-Emphasis);
212
+
213
+ --chart-1: var(--Primitive-Sea-600);
214
+ --chart-2: var(--Primitive-Berry-600);
215
+ --chart-3: var(--Primitive-Teal-600);
216
+ --chart-4: var(--Primitive-Wood-600);
217
+ --chart-5: var(--Primitive-Forest-600);
218
+
219
+ --sidebar: var(--Surface-Primary);
220
+ --sidebar-foreground: var(--Text-High-Emphasis);
221
+ --sidebar-primary: var(--Brand-Cake-Orange);
222
+ --sidebar-primary-foreground: var(--Text-on-Inverse);
223
+ --sidebar-accent: var(--Object-Accent-Primary);
224
+ --sidebar-accent-foreground: var(--Object-High-Emphasis-on-Inverse);
225
+ --sidebar-border: var(--Border-Low-Emphasis);
226
+ --sidebar-ring: var(--Overlay-Medium);
227
+ }
228
+
229
+ .dark {
230
+ --background: var(--Surface-Primary);
231
+ --foreground: var(--Text-High-Emphasis);
232
+ --card: var(--Surface-Secondary);
233
+ --card-foreground: var(--Text-High-Emphasis);
234
+ --popover: var(--Surface-Primary);
235
+ --popover-foreground: var(--Text-High-Emphasis);
236
+ --primary: var(--Brand-Cake-Orange);
237
+ --primary-foreground: var(--Text-on-Inverse);
238
+ --secondary: var(--Surface-Tertiary);
239
+ --secondary-foreground: var(--Text-Medium-Emphasis);
240
+ --muted: var(--Surface-Tertiary);
241
+ --muted-foreground: var(--Text-Low-Emphasis);
242
+ --accent: var(--Surface-Secondary);
243
+ --accent-foreground: var(--Text-High-Emphasis);
244
+ --destructive: var(--Object-Caution);
245
+ --border: var(--Border-Medium-Emphasis);
246
+ --input: var(--Border-Medium-Emphasis);
247
+ --ring: var(--Focus-High-Emphasis);
248
+ --chart-1: var(--Primitive-Sea-600);
249
+ --chart-2: var(--Primitive-Berry-600);
250
+ --chart-3: var(--Primitive-Teal-600);
251
+ --chart-4: var(--Primitive-Wood-600);
252
+ --chart-5: var(--Primitive-Forest-600);
253
+ --sidebar: var(--Surface-Primary);
254
+ --sidebar-foreground: var(--Text-High-Emphasis);
255
+ --sidebar-primary: var(--Brand-Cake-Orange);
256
+ --sidebar-primary-foreground: var(--Text-on-Inverse);
257
+ --sidebar-accent: var(--Object-Accent-Primary);
258
+ --sidebar-accent-foreground: var(--Object-High-Emphasis-on-Inverse);
259
+ --sidebar-border: var(--Border-Low-Emphasis);
260
+ --sidebar-ring: var(--Overlay-Medium);
261
+ }
262
+
263
+ /* --- Animations --- */
264
+ @keyframes slide-in-right {
265
+ from { transform: translateX(30%); opacity: 0; }
266
+ to { transform: translateX(0); opacity: 1; }
267
+ }
268
+ @keyframes slide-in-left {
269
+ from { transform: translateX(-30%); opacity: 0; }
270
+ to { transform: translateX(0); opacity: 1; }
271
+ }
272
+
273
+ @utility animate-slide-in-right {
274
+ animation: slide-in-right 200ms ease-out;
275
+ }
276
+ @utility animate-slide-in-left {
277
+ animation: slide-in-left 200ms ease-out;
278
+ }
279
+
280
+ /* --- Base layer --- */
281
+ @layer base {
282
+ * {
283
+ @apply border-border outline-ring/50;
284
+ }
285
+ body {
286
+ @apply bg-background text-foreground;
287
+ }
288
+ }
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Cake.jp Design System カラーパレット
3
+ *
4
+ * Figma Plugin: Export Variables (CSS/SCSS/Tailwind) を使い、CSS HEXコードでエクスポート。
5
+ * https://www.figma.com/community/plugin/1382804904426179542/export-variables-css-scss-tailwind
6
+ */
7
+ @theme {
8
+ /* Orange */
9
+ --Primitive-Orange-50: #FFECD9FF;
10
+ --Primitive-Orange-100: #FFD4B2FF;
11
+ --Primitive-Orange-200: #FFBA84FF;
12
+ --Primitive-Orange-300: #FFA66BFF;
13
+ --Primitive-Orange-400: #FF8E4CFF;
14
+ --Primitive-Orange-500: #F97732FF;
15
+ --Primitive-Orange-600: #F16311FF;
16
+ --Primitive-Orange-700: #E04B00FF; /* primary */
17
+ --Primitive-Orange-800: #BD3200FF;
18
+ --Primitive-Orange-900: #A62700FF;
19
+
20
+ /* Gray */
21
+ --Primitive-Gray-50: #FBF9F8FF;
22
+ --Primitive-Gray-100: #F4F2F1FF;
23
+ --Primitive-Gray-200: #EBE9E8FF;
24
+ --Primitive-Gray-300: #DBD9D8FF;
25
+ --Primitive-Gray-400: #B7B5B4FF;
26
+ --Primitive-Gray-500: #979594FF;
27
+ --Primitive-Gray-600: #787675FF;
28
+ --Primitive-Gray-700: #575352FF;
29
+ --Primitive-Gray-800: #3A3736FF;
30
+ --Primitive-Gray-900: #1C1A1AFF;
31
+
32
+ /* Forest */
33
+ --Primitive-Forest-50: #E6F5ECFF;
34
+ --Primitive-Forest-100: #C2E5D1FF;
35
+ --Primitive-Forest-200: #9BD4B5FF;
36
+ --Primitive-Forest-300: #71C598FF;
37
+ --Primitive-Forest-400: #51B883FF;
38
+ --Primitive-Forest-500: #2CAC6EFF;
39
+ --Primitive-Forest-600: #259D63FF;
40
+ --Primitive-Forest-700: #1D8B56FF;
41
+ --Primitive-Forest-800: #197A4BFF; /* primary */
42
+ --Primitive-Forest-900: #115A36FF;
43
+
44
+ /* Sun */
45
+ --Primitive-Sun-50: #FFE7E6FF;
46
+ --Primitive-Sun-100: #FFC8B8FF;
47
+ --Primitive-Sun-200: #FFA28BFF;
48
+ --Primitive-Sun-300: #FF7B5CFF;
49
+ --Primitive-Sun-400: #FF5838FF;
50
+ --Primitive-Sun-500: #FF4B36FF;
51
+ --Primitive-Sun-600: #FF220DFF;
52
+ --Primitive-Sun-700: #FA1606FF;
53
+ --Primitive-Sun-800: #EC0000FF; /* primary */
54
+ --Primitive-Sun-900: #D50000FF;
55
+
56
+ /* Teal */
57
+ --Primitive-Teal-50: #F0FCF8FF;
58
+ --Primitive-Teal-100: #D0F6E9FF;
59
+ --Primitive-Teal-200: #ACEED8FF;
60
+ --Primitive-Teal-300: #81E6C4FF;
61
+ --Primitive-Teal-400: #59D9AEFF;
62
+ --Primitive-Teal-500: #51C79FFF;
63
+ --Primitive-Teal-600: #49B18EFF;
64
+ --Primitive-Teal-700: #3E987AFF;
65
+ --Primitive-Teal-800: #317860FF; /* primary */
66
+ --Primitive-Teal-900: #1D4739FF;
67
+
68
+ /* Sea */
69
+ --Primitive-Sea-50: #E8F1FEFF;
70
+ --Primitive-Sea-100: #C5D7FBFF;
71
+ --Primitive-Sea-200: #9DB7F9FF;
72
+ --Primitive-Sea-300: #7096F8FF;
73
+ --Primitive-Sea-400: #4979F5FF;
74
+ --Primitive-Sea-500: #295FF3FF;
75
+ --Primitive-Sea-600: #003EE5FF; /* primary */
76
+ --Primitive-Sea-700: #0031D8FF;
77
+ --Primitive-Sea-800: #0024CEFF;
78
+ --Primitive-Sea-900: #0017B6FF;
79
+
80
+ /* Wood */
81
+ --Primitive-Wood-50: #F8F1E0FF;
82
+ --Primitive-Wood-100: #EFDBB1FF;
83
+ --Primitive-Wood-200: #E5C47FFF;
84
+ --Primitive-Wood-300: #DCAC4DFF;
85
+ --Primitive-Wood-400: #D69C2BFF;
86
+ --Primitive-Wood-500: #D18D0FFF;
87
+ --Primitive-Wood-600: #CD820AFF;
88
+ --Primitive-Wood-700: #C87504FF;
89
+ --Primitive-Wood-800: #C16800FF; /* primary */
90
+ --Primitive-Wood-900: #B65200FF;
91
+
92
+ /* Berry */
93
+ --Primitive-Berry-50: #FBD4E0FF;
94
+ --Primitive-Berry-100: #F7B1C8FF;
95
+ --Primitive-Berry-200: #F491B2FF;
96
+ --Primitive-Berry-300: #F1749EFF;
97
+ --Primitive-Berry-400: #EE598BFF;
98
+ --Primitive-Berry-500: #EC407AFF;
99
+ --Primitive-Berry-600: #EA296AFF;
100
+ --Primitive-Berry-700: #E5175CFF; /* primary */
101
+ --Primitive-Berry-800: #B5175CFF;
102
+ --Primitive-Berry-900: #9E103FFF;
103
+
104
+ /* Black */
105
+ --Primitive-Black-2-1000: #000000FF;
106
+ }
107
+
108
+ /*
109
+ * Alpha 変数は :root に直接定義する。
110
+ * semantic.css で参照されていないシェードが Tailwind CSS v4 の
111
+ * tree-shaking で除去されるのを防ぐため。
112
+ */
113
+ :root {
114
+ /* Gray alpha */
115
+ --Primitive-Gray-alpha-50: #0000000D;
116
+ --Primitive-Gray-alpha-100: #0000001A;
117
+ --Primitive-Gray-alpha-200: #00000033;
118
+ --Primitive-Gray-alpha-300: #0000004D;
119
+ --Primitive-Gray-alpha-400: #00000066;
120
+ --Primitive-Gray-alpha-500: #00000080;
121
+ --Primitive-Gray-alpha-600: #00000099;
122
+ --Primitive-Gray-alpha-700: #000000B2;
123
+ --Primitive-Gray-alpha-800: #000000CC;
124
+ --Primitive-Gray-alpha-900: #000000E5;
125
+ --Primitive-Gray-alpha-1000: #000000FF;
126
+
127
+ /* White alpha */
128
+ --Primitive-White-alpha-50: #FFFFFF0D;
129
+ --Primitive-White-alpha-100: #FFFFFF1A;
130
+ --Primitive-White-alpha-200: #FFFFFF33;
131
+ --Primitive-White-alpha-300: #FFFFFF4D;
132
+ --Primitive-White-alpha-400: #FFFFFF66;
133
+ --Primitive-White-alpha-500: #FFFFFF80;
134
+ --Primitive-White-alpha-600: #FFFFFF99;
135
+ --Primitive-White-alpha-700: #FFFFFFB2;
136
+ --Primitive-White-alpha-800: #FFFFFFCC;
137
+ --Primitive-White-alpha-900: #FFFFFFE5;
138
+ --Primitive-White-alpha-1000: #FFFFFFFF;
139
+ }
@@ -0,0 +1,203 @@
1
+ /**
2
+ * Cake.jp Design System セマンティックカラー
3
+ *
4
+ * Primitive を参照して割り当て。
5
+ * Surface / Text / Object / Hover / Active / Border / Brand / Overlay
6
+ *
7
+ * Light / Dark の両モードを定義。
8
+ * Figma Variables の Light.tokens.json / Dark.tokens.json と完全一致。
9
+ */
10
+ @theme inline {
11
+ /* ============================================
12
+ * Light Mode(デフォルト)
13
+ * ============================================ */
14
+
15
+ /* Surface */
16
+ --Surface-Primary: var(--Primitive-White-alpha-1000);
17
+ --Surface-Secondary: var(--Primitive-Gray-50);
18
+ --Surface-Tertiary: var(--Primitive-Gray-100);
19
+ --Surface-Caution: var(--Primitive-Sun-800);
20
+ --Surface-Caution-Light: var(--Primitive-Sun-50);
21
+ --Surface-Accent-Primary: var(--Primitive-Orange-700);
22
+ --Surface-Accent-Primary-Light: var(--Primitive-Orange-50);
23
+ --Surface-Success: var(--Primitive-Forest-600);
24
+ --Surface-Warning: var(--Primitive-Wood-50);
25
+ --Surface-Info: var(--Primitive-Sea-600);
26
+ --Surface-Info-Light: var(--Primitive-Sea-50);
27
+
28
+ /* Text */
29
+ --Text-High-Emphasis: var(--Primitive-Gray-900);
30
+ --Text-Medium-Emphasis: var(--Primitive-Gray-700);
31
+ --Text-Low-Emphasis: var(--Primitive-Gray-600);
32
+ --Text-Disable: var(--Primitive-Gray-400);
33
+ --Text-Accent-Primary: var(--Brand-Cake-Orange);
34
+ --Text-Accent-Secondary: var(--Primitive-Orange-200);
35
+ --Text-on-Inverse: var(--Primitive-White-alpha-1000);
36
+ --Text-Success: var(--Primitive-Forest-600);
37
+ --Text-Caution: var(--Primitive-Sun-800);
38
+ --Text-Warning: var(--Primitive-Wood-800);
39
+ --Text-Info: var(--Primitive-Sea-600);
40
+
41
+ /* Object */
42
+ --Object-Favorite: var(--Brand-Cake-Orange);
43
+ --Object-Accent-Primary: var(--Brand-Cake-Orange);
44
+ --Object-Accent-Primary-Light: var(--Brand-Cake-Orange-Ultra-Light);
45
+ --Object-High-Emphasis: var(--Primitive-Gray-900);
46
+ --Object-Medium-Emphasis: var(--Primitive-Gray-700);
47
+ --Object-Low-Emphasis: var(--Primitive-Gray-600);
48
+ --Object-Disable: var(--Primitive-Gray-400);
49
+ --Object-High-Emphasis-on-Inverse: var(--Primitive-White-alpha-1000);
50
+ --Object-Caution: var(--Primitive-Sun-800);
51
+ --Object-Warning: var(--Primitive-Wood-800);
52
+ --Object-Success: var(--Primitive-Forest-600);
53
+ --Object-Info: var(--Primitive-Sea-600);
54
+
55
+ /* Hover / Active */
56
+ --Hover-Primary-Button: var(--Primitive-Orange-800);
57
+ --Hover-Secondary-Button: var(--Primitive-Orange-100);
58
+ --Hover-Tertiary-Button: var(--Primitive-Gray-200);
59
+ --Hover-Text-Button: var(--Primitive-Gray-200);
60
+ --Hover-Caution-Button: var(--Primitive-Sun-100);
61
+ --Active-Primary-Button: var(--Primitive-Orange-800);
62
+ --Active-Secondary-Button: var(--Primitive-Orange-100);
63
+ --Active-Tertiary-Button: var(--Primitive-Gray-200);
64
+ --Active-Text-Button: var(--Primitive-Gray-100);
65
+ --Active-Caution-Button: var(--Primitive-Sun-100);
66
+
67
+ /* Border */
68
+ --Border-High-Emphasis: var(--Primitive-Gray-700);
69
+ --Border-Medium-Emphasis: var(--Primitive-Gray-300);
70
+ --Border-Low-Emphasis: var(--Primitive-Gray-50);
71
+ --Border-Accent-Primary: var(--Brand-Cake-Orange);
72
+ --Border-Favorite: var(--Brand-Cake-Orange);
73
+ --Border-Caution: var(--Surface-Caution);
74
+ --Border-Info: var(--Primitive-Sea-600);
75
+
76
+ /* Brand */
77
+ --Brand-Cake-Orange: var(--Primitive-Orange-700);
78
+ --Brand-Cake-Orange-Light: var(--Primitive-Orange-100);
79
+ --Brand-Cake-Orange-Ultra-Light: var(--Primitive-Orange-50);
80
+
81
+ /* Overlay */
82
+ --Overlay-Dark: var(--Primitive-Gray-alpha-800);
83
+ --Overlay-Medium: var(--Primitive-Gray-alpha-600);
84
+ --Overlay-Light: var(--Primitive-Gray-alpha-200);
85
+ --Overlay-Scrim: rgba(17, 17, 17, 0.28); /* モーダル・ドロワーのスクリム */
86
+
87
+ /* Glass surfaces(半透明白背景) */
88
+ --Surface-Glass: var(--Primitive-White-alpha-800); /* rgba(255,255,255,0.8) */
89
+ --Surface-Glass-Soft: rgba(255, 255, 255, 0.76); /* ドロワーナビ背景 */
90
+ --Surface-Glass-Faint: var(--Primitive-White-alpha-700); /* rgba(255,255,255,0.698≈0.7) */
91
+ --Surface-Brand-Ghost: rgba(255, 236, 217, 0.7); /* Orange-50 at 70%。閉じるボタン等 */
92
+
93
+ /* Border alphas */
94
+ --Border-Hairline: rgba(28, 26, 26, 0.08); /* Gray-900 8%。微細ボーダー */
95
+ --Border-Brand-Subtle: rgba(224, 75, 0, 0.16); /* Brand-Orange 16%。SNSリンクボーダー等 */
96
+
97
+ /* Caution / Focus */
98
+ --Caution-Base: var(--Primitive-Sun-800);
99
+ --Caution-Light: var(--Primitive-Sun-200);
100
+ --Caution-Ultra-Light: var(--Primitive-Sun-50);
101
+ --Focus-High-Emphasis: #0C9E66FF;
102
+
103
+ /* Third-Party */
104
+ --Third-Party-Youtube: #FF0000FF;
105
+ --Third-Party-Facebook: #1877F2FF;
106
+ --Third-Party-Twitter: #1DA1F2FF;
107
+ --Third-Party-Instagram-Pink: #F20076FF;
108
+ --Third-Party-Amazon: #FAD676FF;
109
+ --Third-Party-LINE: #06C755FF;
110
+ --Third-Party-Apple: #000000FF;
111
+ --Third-Party-X: #000000FF;
112
+ }
113
+
114
+ /* ============================================
115
+ * Dark Mode
116
+ * .dark クラスがルートに付いたとき、セマンティックトークン自体を切り替える。
117
+ * Figma Dark.tokens.json と完全一致。
118
+ * ============================================ */
119
+ .dark {
120
+ /* Surface */
121
+ --Surface-Primary: var(--Primitive-Gray-alpha-900);
122
+ --Surface-Secondary: var(--Primitive-White-alpha-100);
123
+ --Surface-Tertiary: var(--Primitive-White-alpha-200);
124
+ --Surface-Caution: var(--Primitive-Sun-800);
125
+ --Surface-Caution-Light: var(--Primitive-Sun-50);
126
+ --Surface-Accent-Primary: var(--Primitive-Orange-700);
127
+ --Surface-Accent-Primary-Light: #E04B0026; /* Brand-Orange at ~15% alpha — ダーク背景で濁らないよう調整 */
128
+ --Surface-Success: var(--Primitive-Forest-600);
129
+ --Surface-Warning: var(--Primitive-Wood-50);
130
+ --Surface-Info: var(--Primitive-Sea-600);
131
+ --Surface-Info-Light: var(--Primitive-Sea-50);
132
+
133
+ /* Text */
134
+ --Text-High-Emphasis: var(--Primitive-White-alpha-1000);
135
+ --Text-Medium-Emphasis: var(--Primitive-White-alpha-800);
136
+ --Text-Low-Emphasis: var(--Primitive-White-alpha-600);
137
+ --Text-Disable: var(--Primitive-White-alpha-300);
138
+ --Text-Accent-Primary: var(--Primitive-Orange-600);
139
+ --Text-Accent-Secondary: var(--Primitive-Orange-100);
140
+ --Text-on-Inverse: var(--Primitive-White-alpha-1000); /* ブランドカラー背景上で使用するため白を維持 */
141
+ --Text-Success: var(--Primitive-Forest-600);
142
+ --Text-Caution: var(--Primitive-Sun-400);
143
+ --Text-Warning: var(--Primitive-Wood-800);
144
+ --Text-Info: var(--Primitive-Sea-400);
145
+
146
+ /* Object */
147
+ --Object-Favorite: var(--Primitive-Orange-600);
148
+ --Object-Accent-Primary: var(--Primitive-Orange-600);
149
+ --Object-Accent-Primary-Light: var(--Brand-Cake-Orange-Ultra-Light);
150
+ --Object-High-Emphasis: var(--Primitive-White-alpha-1000);
151
+ --Object-Medium-Emphasis: var(--Primitive-White-alpha-800);
152
+ --Object-Low-Emphasis: var(--Primitive-White-alpha-600);
153
+ --Object-Disable: var(--Primitive-White-alpha-400);
154
+ --Object-High-Emphasis-on-Inverse: var(--Primitive-White-alpha-1000); /* ブランドカラー背景上で使用するため白を維持 */
155
+ --Object-Caution: var(--Caution-Light);
156
+ --Object-Warning: var(--Primitive-Wood-800);
157
+ --Object-Success: var(--Primitive-Forest-600);
158
+ --Object-Info: var(--Primitive-Sea-400);
159
+
160
+ /* Hover / Active */
161
+ --Hover-Primary-Button: var(--Primitive-Orange-800);
162
+ --Hover-Secondary-Button: var(--Primitive-White-alpha-100);
163
+ --Hover-Tertiary-Button: var(--Primitive-White-alpha-50);
164
+ --Hover-Text-Button: var(--Primitive-White-alpha-200);
165
+ --Hover-Caution-Button: var(--Primitive-Sun-50);
166
+ --Active-Primary-Button: var(--Primitive-Orange-800);
167
+ --Active-Secondary-Button: var(--Primitive-White-alpha-100);
168
+ --Active-Tertiary-Button: var(--Primitive-White-alpha-50);
169
+ --Active-Text-Button: var(--Primitive-White-alpha-100);
170
+ --Active-Caution-Button: var(--Primitive-Sun-50);
171
+
172
+ /* Border */
173
+ --Border-High-Emphasis: var(--Primitive-White-alpha-500);
174
+ --Border-Medium-Emphasis: var(--Primitive-White-alpha-200);
175
+ --Border-Low-Emphasis: var(--Primitive-White-alpha-50);
176
+ --Border-Accent-Primary: var(--Primitive-Orange-600);
177
+ --Border-Favorite: var(--Primitive-Orange-600);
178
+ --Border-Caution: var(--Surface-Caution);
179
+ --Border-Info: var(--Primitive-Sea-400);
180
+
181
+ /* Brand(ダークでも同じ) */
182
+ --Brand-Cake-Orange: var(--Primitive-Orange-700);
183
+ --Brand-Cake-Orange-Light: var(--Primitive-Orange-100);
184
+ --Brand-Cake-Orange-Ultra-Light: var(--Primitive-Orange-50);
185
+
186
+ /* Overlay(ダークモードでは白系に切替、背景が暗いためグレー系では視認不能) */
187
+ --Overlay-Dark: var(--Primitive-White-alpha-300);
188
+ --Overlay-Medium: var(--Primitive-White-alpha-200);
189
+ --Overlay-Light: var(--Primitive-White-alpha-100);
190
+ --Overlay-Scrim: rgba(0, 0, 0, 0.48);
191
+
192
+ /* Glass surfaces */
193
+ --Surface-Glass: var(--Primitive-White-alpha-100);
194
+ --Surface-Glass-Soft: var(--Primitive-White-alpha-100);
195
+ --Surface-Glass-Faint: var(--Primitive-White-alpha-50);
196
+ --Surface-Brand-Ghost: rgba(224, 75, 0, 0.12);
197
+
198
+ /* Border alphas */
199
+ --Border-Hairline: var(--Primitive-White-alpha-100);
200
+ --Border-Brand-Subtle: rgba(224, 75, 0, 0.24);
201
+
202
+ /* Third-Party(ダークでも同じ) */
203
+ }