@cakejp/design-system 0.17.1 → 0.20.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 (101) hide show
  1. package/CHANGELOG.md +85 -0
  2. package/CLAUDE.md +16 -0
  3. package/bin/init.js +191 -28
  4. package/contracts/components.json +176 -17
  5. package/contracts/composition.json +1 -1
  6. package/contracts/rules.json +5 -1
  7. package/contracts/screen-patterns.json +1 -1
  8. package/dist/components/ec/admin-shell.js +7 -6
  9. package/dist/components/ec/order-summary.js +16 -15
  10. package/dist/components/ec/product-card.js +107 -102
  11. package/dist/components/ec/product-option.js +1 -0
  12. package/dist/components/ec/review-card.js +22 -20
  13. package/dist/components/ec/review-form.js +1 -0
  14. package/dist/components/foundations/accordion.js +23 -22
  15. package/dist/components/foundations/alert-dialog.js +7 -7
  16. package/dist/components/foundations/alert.js +1 -0
  17. package/dist/components/foundations/aspect-ratio.js +3 -2
  18. package/dist/components/foundations/avatar.js +1 -0
  19. package/dist/components/foundations/button.js +7 -1
  20. package/dist/components/foundations/calendar.js +1 -0
  21. package/dist/components/foundations/checkbox-group.js +1 -0
  22. package/dist/components/foundations/checkbox.js +1 -0
  23. package/dist/components/foundations/command.js +1 -0
  24. package/dist/components/foundations/context-menu.js +1 -0
  25. package/dist/components/foundations/data-table.js +489 -16
  26. package/dist/components/foundations/dialog.js +13 -13
  27. package/dist/components/foundations/drawer.js +6 -5
  28. package/dist/components/foundations/file-input.js +1 -0
  29. package/dist/components/foundations/form.js +26 -25
  30. package/dist/components/foundations/pagination.js +49 -46
  31. package/dist/components/foundations/popover.js +9 -8
  32. package/dist/components/foundations/radio-group.js +3 -2
  33. package/dist/components/foundations/responsive-dialog.js +1 -0
  34. package/dist/components/foundations/separator.js +7 -6
  35. package/dist/components/foundations/sheet.js +41 -34
  36. package/dist/components/foundations/slider.js +7 -6
  37. package/dist/components/foundations/social-icon.js +30 -10
  38. package/dist/components/foundations/sonner.js +5 -4
  39. package/dist/components/foundations/tabs.js +45 -25
  40. package/dist/components/foundations/toggle-group.js +6 -5
  41. package/dist/components/primitives/admin-header.js +1 -1
  42. package/dist/components/primitives/admin-side-nav.js +196 -86
  43. package/dist/components/primitives/bottom-tab-bar.js +20 -20
  44. package/dist/components/primitives/chat-composer.js +1 -0
  45. package/dist/components/primitives/combobox.js +1 -0
  46. package/dist/components/primitives/content-card.js +111 -0
  47. package/dist/components/primitives/content-carousel.js +9 -8
  48. package/dist/components/primitives/date-picker.js +9 -8
  49. package/dist/components/primitives/footer.js +169 -100
  50. package/dist/components/primitives/form-field.js +1 -0
  51. package/dist/components/primitives/header.js +226 -176
  52. package/dist/components/primitives/image-carousel.js +8 -7
  53. package/dist/components/primitives/image-gallery.js +15 -14
  54. package/dist/components/primitives/image-input.js +9 -8
  55. package/dist/components/primitives/list-item.js +9 -8
  56. package/dist/components/primitives/menu-drawer.js +60 -56
  57. package/dist/components/primitives/multi-select.js +7 -6
  58. package/dist/components/primitives/number-input.js +1 -0
  59. package/dist/components/primitives/prose.js +52 -0
  60. package/dist/components/primitives/search-bar.js +81 -66
  61. package/dist/components/primitives/section-header.js +58 -55
  62. package/dist/components/primitives/share-buttons.js +93 -85
  63. package/dist/components/primitives/status-count-tabs.js +8 -7
  64. package/dist/components/primitives/sticky-action-bar.js +2 -1
  65. package/dist/components/primitives/sub-nav.js +52 -52
  66. package/dist/index.css +1 -1
  67. package/dist/index.js +2027 -752
  68. package/dist/lib/field-labelling.js +7 -6
  69. package/dist/lib/link-component.js +6 -0
  70. package/dist/lib/use-value-length.js +1 -0
  71. package/dist/types/components/ec/product-card.d.ts +12 -19
  72. package/dist/types/components/ec/review-card.d.ts +6 -1
  73. package/dist/types/components/foundations/button.d.ts +1 -1
  74. package/dist/types/components/foundations/chip-variants.d.ts +1 -1
  75. package/dist/types/components/foundations/data-table.d.ts +9 -1
  76. package/dist/types/components/foundations/pagination.d.ts +7 -1
  77. package/dist/types/components/foundations/sheet.d.ts +6 -1
  78. package/dist/types/components/foundations/social-icon.d.ts +1 -1
  79. package/dist/types/components/foundations/tabs.d.ts +2 -1
  80. package/dist/types/components/primitives/admin-side-nav.d.ts +3 -0
  81. package/dist/types/components/primitives/content-card.d.ts +67 -0
  82. package/dist/types/components/primitives/footer.d.ts +21 -1
  83. package/dist/types/components/primitives/header.d.ts +30 -2
  84. package/dist/types/components/primitives/menu-drawer.d.ts +7 -1
  85. package/dist/types/components/primitives/prose.d.ts +35 -0
  86. package/dist/types/components/primitives/search-bar.d.ts +14 -1
  87. package/dist/types/components/primitives/section-header.d.ts +2 -1
  88. package/dist/types/components/primitives/share-buttons.d.ts +26 -4
  89. package/dist/types/components/primitives/sub-nav.d.ts +16 -1
  90. package/dist/types/index.d.ts +7 -2
  91. package/dist/types/lib/link-component.d.ts +35 -0
  92. package/package.json +5 -4
  93. package/src/components/COMPONENT_LOOKUP.md +8 -6
  94. package/src/preset-standalone.css +3 -0
  95. package/src/preset.css +21 -3
  96. package/src/styles/semantic.css +11 -0
  97. package/templates/AGENTS.md +4 -2
  98. package/templates/AGENTS.stub.md +25 -0
  99. package/templates/CLAUDE.md +4 -2
  100. package/templates/CLAUDE.stub.md +25 -0
  101. package/tokens.json +17 -1
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsx as n } from "react/jsx-runtime";
2
3
  import * as m from "react";
3
4
  import { ChevronLeftIcon as y, ChevronRightIcon as x, ChevronDownIcon as h } from "lucide-react";
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsxs as i, jsx as e } from "react/jsx-runtime";
2
3
  import * as p from "react";
3
4
  import x from "iconsax-reactjs/dist/esm/TickSquare.js";
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsx as e, jsxs as c } from "react/jsx-runtime";
2
3
  import * as p from "react";
3
4
  import y from "iconsax-reactjs/dist/esm/TickSquare.js";
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsx as t, jsxs as d } from "react/jsx-runtime";
2
3
  import "react";
3
4
  import { Command as r } from "cmdk";
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsx as e, jsxs as d } from "react/jsx-runtime";
2
3
  import "react";
3
4
  import { CheckIcon as i, CircleIcon as u, ChevronRightIcon as c } from "lucide-react";
@@ -1,25 +1,61 @@
1
- import { jsx as e } from "react/jsx-runtime";
2
- import "react";
3
- import { cva as r } from "class-variance-authority";
4
- import "iconsax-reactjs/dist/esm/ArrowSwapVertical.js";
5
- import "iconsax-reactjs/dist/esm/ArrowUp.js";
6
- import "iconsax-reactjs/dist/esm/ArrowDown.js";
7
- import "iconsax-reactjs/dist/esm/ArrowDown2.js";
8
- import "iconsax-reactjs/dist/esm/More.js";
9
- import "iconsax-reactjs/dist/esm/Add.js";
10
- import "iconsax-reactjs/dist/esm/ExportSquare.js";
11
- import { cn as o } from "../../lib/utils.js";
12
- function x({ className: t, ...a }) {
1
+ import { jsx as e, jsxs as s } from "react/jsx-runtime";
2
+ import * as b from "react";
3
+ import { cva as p } from "class-variance-authority";
4
+ import x from "iconsax-reactjs/dist/esm/ArrowSwapVertical.js";
5
+ import f from "iconsax-reactjs/dist/esm/ArrowUp.js";
6
+ import v from "iconsax-reactjs/dist/esm/ArrowDown.js";
7
+ import g from "iconsax-reactjs/dist/esm/ArrowDown2.js";
8
+ import w from "iconsax-reactjs/dist/esm/More.js";
9
+ import y from "iconsax-reactjs/dist/esm/Add.js";
10
+ import N from "iconsax-reactjs/dist/esm/ExportSquare.js";
11
+ import { cn as i } from "../../lib/utils.js";
12
+ import { FOCUS_RING as T } from "../../lib/focus-ring.js";
13
+ import { Checkbox as C } from "./checkbox.js";
14
+ import { Button as E } from "./button.js";
15
+ import { Avatar as S, AvatarImage as D, AvatarFallback as k } from "./avatar.js";
16
+ import { Select as A, SelectTrigger as L, SelectValue as _, SelectContent as B, SelectItem as H } from "./select.js";
17
+ import { DropdownMenu as z, DropdownMenuTrigger as M, DropdownMenuContent as P, DropdownMenuSeparator as I, DropdownMenuItem as R } from "./dropdown-menu.js";
18
+ function te({ className: r, ...a }) {
13
19
  return /* @__PURE__ */ e(
14
20
  "div",
15
21
  {
16
22
  "data-slot": "data-table",
17
- className: o("relative w-full overflow-x-auto rounded-lg border border-[var(--Border-Low-Emphasis)]", t),
23
+ className: i("relative w-full overflow-x-auto rounded-lg border border-[var(--Border-Low-Emphasis)]", r),
18
24
  ...a
19
25
  }
20
26
  );
21
27
  }
22
- r(
28
+ function le({ className: r, ...a }) {
29
+ return /* @__PURE__ */ e(
30
+ "table",
31
+ {
32
+ "data-slot": "data-table-table",
33
+ className: i("w-full caption-bottom typo-body-md border-collapse", r),
34
+ ...a
35
+ }
36
+ );
37
+ }
38
+ function ne({ className: r, ...a }) {
39
+ return /* @__PURE__ */ e(
40
+ "thead",
41
+ {
42
+ "data-slot": "data-table-header",
43
+ className: i("bg-[var(--Surface-Secondary)] [&_tr]:border-b [&_tr]:border-[var(--Border-Low-Emphasis)]", r),
44
+ ...a
45
+ }
46
+ );
47
+ }
48
+ function ie({ className: r, ...a }) {
49
+ return /* @__PURE__ */ e(
50
+ "tbody",
51
+ {
52
+ "data-slot": "data-table-body",
53
+ className: i("[&_tr:last-child]:border-b-0", r),
54
+ ...a
55
+ }
56
+ );
57
+ }
58
+ const V = p(
23
59
  "group/row border-b border-[var(--Border-Low-Emphasis)] transition-colors",
24
60
  {
25
61
  variants: {
@@ -33,7 +69,80 @@ r(
33
69
  }
34
70
  }
35
71
  );
36
- r(
72
+ function oe({
73
+ className: r,
74
+ state: a,
75
+ ...t
76
+ }) {
77
+ return /* @__PURE__ */ e(
78
+ "tr",
79
+ {
80
+ "data-slot": "data-table-row",
81
+ className: i(V({ state: a }), r),
82
+ ...t
83
+ }
84
+ );
85
+ }
86
+ function se({
87
+ className: r,
88
+ sortable: a,
89
+ sortDirection: t,
90
+ onSort: n,
91
+ width: l,
92
+ srLabel: o,
93
+ children: c,
94
+ ...d
95
+ }) {
96
+ const h = t === "asc" ? f : t === "desc" ? v : x, u = t === "asc" ? "ascending" : t === "desc" ? "descending" : "none";
97
+ return /* @__PURE__ */ s(
98
+ "th",
99
+ {
100
+ "data-slot": "data-table-head",
101
+ className: i(
102
+ "h-16 px-4 text-left align-middle typo-label-sm whitespace-nowrap text-[var(--Text-Medium-Emphasis)]",
103
+ "[&:has([role=checkbox])]:w-12 [&:has([role=checkbox])]:pr-0",
104
+ a && "hover:bg-[var(--Surface-Tertiary)]",
105
+ l === "max" && "min-w-[320px] max-w-[360px]",
106
+ l === "hug" && "min-w-0 w-0",
107
+ r
108
+ ),
109
+ "aria-sort": a ? u : void 0,
110
+ ...d,
111
+ children: [
112
+ a ? (
113
+ // th の onClick はマウスにしか届かない(キーボードで到達できず role も無い)。
114
+ // 本物の <button> にして Tab / Enter / Space で並び替えられるようにする。
115
+ /* @__PURE__ */ s(
116
+ "button",
117
+ {
118
+ type: "button",
119
+ onClick: n,
120
+ className: i(
121
+ "inline-flex items-center gap-1 rounded-sm outline-none",
122
+ "cursor-pointer select-none",
123
+ T,
124
+ t && "typo-label-sm font-bold text-[var(--Text-High-Emphasis)]"
125
+ ),
126
+ children: [
127
+ c,
128
+ /* @__PURE__ */ e(
129
+ h,
130
+ {
131
+ size: 14,
132
+ "aria-hidden": "true",
133
+ className: i(t ? "text-[var(--Text-High-Emphasis)]" : "text-[var(--Text-Low-Emphasis)]")
134
+ }
135
+ )
136
+ ]
137
+ }
138
+ )
139
+ ) : c,
140
+ o && /* @__PURE__ */ e("span", { className: "sr-only", children: o })
141
+ ]
142
+ }
143
+ );
144
+ }
145
+ const j = p(
37
146
  "px-4 py-4 align-middle whitespace-nowrap typo-body-md text-[var(--Text-High-Emphasis)] [&:has([role=checkbox])]:w-12 [&:has([role=checkbox])]:pr-0",
38
147
  {
39
148
  variants: {
@@ -54,6 +163,370 @@ r(
54
163
  }
55
164
  }
56
165
  );
166
+ function m({
167
+ className: r,
168
+ width: a,
169
+ align: t,
170
+ ...n
171
+ }) {
172
+ return /* @__PURE__ */ e(
173
+ "td",
174
+ {
175
+ "data-slot": "data-table-cell",
176
+ className: i(j({ width: a, align: t }), r),
177
+ ...n
178
+ }
179
+ );
180
+ }
181
+ function ce({
182
+ className: r,
183
+ src: a,
184
+ fallback: t,
185
+ title: n,
186
+ caption: l,
187
+ ...o
188
+ }) {
189
+ return /* @__PURE__ */ e(m, { className: i("min-w-[200px]", r), ...o, children: /* @__PURE__ */ s("div", { className: "flex items-center gap-3", children: [
190
+ /* @__PURE__ */ s(S, { children: [
191
+ a && /* @__PURE__ */ e(D, { src: a, alt: n }),
192
+ /* @__PURE__ */ e(k, { children: t || n.charAt(0) })
193
+ ] }),
194
+ /* @__PURE__ */ s("div", { className: "min-w-0", children: [
195
+ /* @__PURE__ */ e("p", { className: "typo-label-sm text-[var(--Text-High-Emphasis)] truncate", children: n }),
196
+ l && /* @__PURE__ */ e("p", { className: "typo-body-xs text-[var(--Text-Low-Emphasis)] truncate", children: l })
197
+ ] })
198
+ ] }) });
199
+ }
200
+ function de({
201
+ className: r,
202
+ checked: a,
203
+ onCheckedChange: t,
204
+ indeterminate: n,
205
+ "aria-label": l,
206
+ ...o
207
+ }) {
208
+ return /* @__PURE__ */ e(
209
+ "td",
210
+ {
211
+ "data-slot": "data-table-checkbox-cell",
212
+ className: i("w-16 px-4 py-4 align-middle cursor-pointer", r),
213
+ onClick: (c) => {
214
+ c.stopPropagation(), t?.(!(!n && a));
215
+ },
216
+ ...o,
217
+ children: /* @__PURE__ */ e(
218
+ C,
219
+ {
220
+ checked: n ? "indeterminate" : a,
221
+ onCheckedChange: (c) => t?.(c === !0),
222
+ "aria-label": l || "行を選択",
223
+ className: "pointer-events-none"
224
+ }
225
+ )
226
+ }
227
+ );
228
+ }
229
+ function me({
230
+ className: r,
231
+ actions: a,
232
+ onClick: t,
233
+ ...n
234
+ }) {
235
+ return /* @__PURE__ */ e(
236
+ m,
237
+ {
238
+ className: i("w-10", r),
239
+ onClick: (l) => {
240
+ l.stopPropagation(), t?.(l);
241
+ },
242
+ ...n,
243
+ children: /* @__PURE__ */ s(z, { children: [
244
+ /* @__PURE__ */ e(M, { asChild: !0, children: /* @__PURE__ */ e(E, { variant: "ghost", size: "sm", className: "size-8 p-0", "aria-label": "アクションメニュー", children: /* @__PURE__ */ e(w, { size: 16 }) }) }),
245
+ /* @__PURE__ */ e(P, { align: "end", children: a.map((l, o) => /* @__PURE__ */ s(b.Fragment, { children: [
246
+ l.separator && /* @__PURE__ */ e(I, {}),
247
+ /* @__PURE__ */ e(
248
+ R,
249
+ {
250
+ onClick: l.onClick,
251
+ variant: l.destructive ? "destructive" : "default",
252
+ children: l.label
253
+ }
254
+ )
255
+ ] }, o)) })
256
+ ] })
257
+ }
258
+ );
259
+ }
260
+ function pe({
261
+ className: r,
262
+ selectedCount: a,
263
+ children: t,
264
+ ...n
265
+ }) {
266
+ return a === 0 ? null : /* @__PURE__ */ s(
267
+ "div",
268
+ {
269
+ "data-slot": "data-table-bulk-actions",
270
+ className: i(
271
+ "flex items-center gap-3 px-4 py-3 bg-[var(--Surface-Accent-Primary-Light)] border-b border-[var(--Border-Low-Emphasis)]",
272
+ r
273
+ ),
274
+ ...n,
275
+ children: [
276
+ /* @__PURE__ */ s("span", { className: "typo-label-sm text-[var(--Text-High-Emphasis)]", children: [
277
+ a,
278
+ "件を選択中"
279
+ ] }),
280
+ /* @__PURE__ */ e("div", { className: "flex items-center gap-2", children: t })
281
+ ]
282
+ }
283
+ );
284
+ }
285
+ function he({
286
+ className: r,
287
+ title: a,
288
+ colSpan: t,
289
+ expanded: n,
290
+ onToggle: l,
291
+ actions: o,
292
+ ...c
293
+ }) {
294
+ return /* @__PURE__ */ e(
295
+ "tr",
296
+ {
297
+ "data-slot": "data-table-section-row",
298
+ className: i("border-b border-[var(--Border-Low-Emphasis)] bg-[var(--Surface-Secondary)]", r),
299
+ ...c,
300
+ children: /* @__PURE__ */ e("td", { colSpan: t, className: "px-4 py-3", children: /* @__PURE__ */ s("div", { className: "flex items-center justify-between", children: [
301
+ /* @__PURE__ */ s(
302
+ "button",
303
+ {
304
+ type: "button",
305
+ className: "flex items-center gap-1.5 typo-label-md text-[var(--Text-High-Emphasis)] cursor-pointer",
306
+ onClick: l,
307
+ "aria-expanded": n,
308
+ children: [
309
+ /* @__PURE__ */ e(g, { size: 16, className: i("transition-transform", n ? "" : "-rotate-90") }),
310
+ a
311
+ ]
312
+ }
313
+ ),
314
+ o && /* @__PURE__ */ e("div", { className: "flex items-center gap-2", children: o })
315
+ ] }) })
316
+ }
317
+ );
318
+ }
319
+ function ue({
320
+ className: r,
321
+ colSpan: a,
322
+ label: t = "新しく追加",
323
+ onClick: n,
324
+ ...l
325
+ }) {
326
+ return /* @__PURE__ */ e(
327
+ "tr",
328
+ {
329
+ "data-slot": "data-table-add-row",
330
+ className: i("border-b border-[var(--Border-Low-Emphasis)] hover:bg-[var(--Surface-Tertiary)] cursor-pointer transition-colors", r),
331
+ onClick: n,
332
+ ...l,
333
+ children: /* @__PURE__ */ e("td", { colSpan: a, className: "px-4 py-4", children: /* @__PURE__ */ s("span", { className: "inline-flex items-center gap-2 typo-body-md text-[var(--Text-Medium-Emphasis)]", children: [
334
+ /* @__PURE__ */ e(y, { size: 16 }),
335
+ t
336
+ ] }) })
337
+ }
338
+ );
339
+ }
340
+ function be({
341
+ className: r,
342
+ colSpan: a,
343
+ message: t = "対象のデータはありません",
344
+ icon: n,
345
+ description: l,
346
+ action: o,
347
+ ...c
348
+ }) {
349
+ return /* @__PURE__ */ e(
350
+ "tr",
351
+ {
352
+ "data-slot": "data-table-empty-state",
353
+ className: i("", r),
354
+ ...c,
355
+ children: /* @__PURE__ */ e("td", { colSpan: a, children: n ? /* @__PURE__ */ s("div", { className: "flex flex-col items-center justify-center px-4 py-16", children: [
356
+ /* @__PURE__ */ e("div", { className: "text-[var(--Border-Medium-Emphasis)]", children: n }),
357
+ /* @__PURE__ */ e("p", { className: "mt-4 typo-heading-md text-[var(--Text-High-Emphasis)]", children: t }),
358
+ l && /* @__PURE__ */ e("div", { className: "mt-1 text-center typo-body-md text-[var(--Text-Medium-Emphasis)]", children: l }),
359
+ o && /* @__PURE__ */ e("div", { className: "mt-6", children: o })
360
+ ] }) : /* @__PURE__ */ e("p", { className: "py-12 text-center typo-body-md text-[var(--Text-Low-Emphasis)]", children: t }) })
361
+ }
362
+ );
363
+ }
364
+ function xe({
365
+ className: r,
366
+ src: a,
367
+ alt: t,
368
+ title: n,
369
+ caption: l,
370
+ ...o
371
+ }) {
372
+ return /* @__PURE__ */ e(m, { className: i("min-w-[200px]", r), ...o, children: /* @__PURE__ */ s("div", { className: "flex items-center gap-3", children: [
373
+ /* @__PURE__ */ e("div", { className: "size-10 rounded-lg bg-[var(--Surface-Tertiary)] overflow-hidden shrink-0", children: a && /* @__PURE__ */ e(
374
+ "img",
375
+ {
376
+ src: a,
377
+ alt: t || n,
378
+ className: "size-full object-cover",
379
+ loading: "lazy"
380
+ }
381
+ ) }),
382
+ /* @__PURE__ */ s("div", { className: "min-w-0", children: [
383
+ /* @__PURE__ */ e("p", { className: "typo-body-md text-[var(--Text-High-Emphasis)] line-clamp-2", children: n }),
384
+ l && /* @__PURE__ */ e("p", { className: "typo-body-xs text-[var(--Text-Low-Emphasis)] truncate", children: l })
385
+ ] })
386
+ ] }) });
387
+ }
388
+ function fe({
389
+ className: r,
390
+ ...a
391
+ }) {
392
+ return /* @__PURE__ */ e(
393
+ "td",
394
+ {
395
+ "data-slot": "data-table-drag-handle-cell",
396
+ className: i("w-10 px-2 py-4 align-middle cursor-grab active:cursor-grabbing", r),
397
+ ...a,
398
+ children: /* @__PURE__ */ s(
399
+ "svg",
400
+ {
401
+ width: "16",
402
+ height: "16",
403
+ viewBox: "0 0 16 16",
404
+ fill: "none",
405
+ xmlns: "http://www.w3.org/2000/svg",
406
+ className: "text-[var(--Text-Low-Emphasis)]",
407
+ "aria-hidden": "true",
408
+ children: [
409
+ /* @__PURE__ */ e("circle", { cx: "6", cy: "3", r: "1.5", fill: "currentColor" }),
410
+ /* @__PURE__ */ e("circle", { cx: "10", cy: "3", r: "1.5", fill: "currentColor" }),
411
+ /* @__PURE__ */ e("circle", { cx: "6", cy: "8", r: "1.5", fill: "currentColor" }),
412
+ /* @__PURE__ */ e("circle", { cx: "10", cy: "8", r: "1.5", fill: "currentColor" }),
413
+ /* @__PURE__ */ e("circle", { cx: "6", cy: "13", r: "1.5", fill: "currentColor" }),
414
+ /* @__PURE__ */ e("circle", { cx: "10", cy: "13", r: "1.5", fill: "currentColor" })
415
+ ]
416
+ }
417
+ )
418
+ }
419
+ );
420
+ }
421
+ function ve({
422
+ className: r,
423
+ href: a = "#",
424
+ external: t,
425
+ children: n,
426
+ ...l
427
+ }) {
428
+ return /* @__PURE__ */ e(m, { className: r, ...l, children: /* @__PURE__ */ s(
429
+ "a",
430
+ {
431
+ href: a,
432
+ className: "inline-flex items-center gap-1 typo-body-md text-[var(--Text-Accent-Primary)] hover:underline",
433
+ ...t ? { target: "_blank", rel: "noopener noreferrer" } : {},
434
+ children: [
435
+ n,
436
+ t && /* @__PURE__ */ e(N, { size: 14 })
437
+ ]
438
+ }
439
+ ) });
440
+ }
441
+ function ge({
442
+ className: r,
443
+ value: a,
444
+ onChange: t,
445
+ placeholder: n,
446
+ type: l = "text",
447
+ name: o,
448
+ ...c
449
+ }) {
450
+ return /* @__PURE__ */ e(
451
+ "td",
452
+ {
453
+ "data-slot": "data-table-input-cell",
454
+ className: i(
455
+ "px-4 py-4 align-middle whitespace-nowrap",
456
+ "hover:shadow-[inset_0_0_0_2px_var(--Border-Accent-Primary)] hover:rounded",
457
+ "has-[input:focus]:shadow-[inset_0_0_0_2px_var(--Border-Accent-Primary)] has-[input:focus]:rounded",
458
+ r
459
+ ),
460
+ ...c,
461
+ children: /* @__PURE__ */ e(
462
+ "input",
463
+ {
464
+ type: l,
465
+ name: o,
466
+ value: a,
467
+ onChange: (d) => t?.(d.target.value),
468
+ placeholder: n,
469
+ className: "w-full bg-transparent outline-none typo-body-md text-[var(--Text-High-Emphasis)] placeholder:text-[var(--Text-Low-Emphasis)]"
470
+ }
471
+ )
472
+ }
473
+ );
474
+ }
475
+ function we({
476
+ className: r,
477
+ value: a,
478
+ onValueChange: t,
479
+ options: n,
480
+ placeholder: l = "選択してください",
481
+ "aria-label": o,
482
+ ...c
483
+ }) {
484
+ return /* @__PURE__ */ e(
485
+ m,
486
+ {
487
+ className: i("hover:bg-[var(--Surface-Tertiary)] cursor-pointer p-0", r),
488
+ ...c,
489
+ children: /* @__PURE__ */ s(A, { value: a, onValueChange: t, children: [
490
+ /* @__PURE__ */ e(
491
+ L,
492
+ {
493
+ size: "sm",
494
+ "aria-label": o ?? l,
495
+ className: "w-full min-w-[160px] border-0 bg-transparent rounded-none px-4 py-4 h-auto hover:bg-transparent focus-visible:ring-0 focus-visible:border-0",
496
+ children: /* @__PURE__ */ e(_, { placeholder: l })
497
+ }
498
+ ),
499
+ /* @__PURE__ */ e(B, { children: n.map((d) => /* @__PURE__ */ e(H, { value: d.value, children: d.label }, d.value)) })
500
+ ] })
501
+ }
502
+ );
503
+ }
504
+ function ye({
505
+ className: r,
506
+ children: a,
507
+ ...t
508
+ }) {
509
+ return /* @__PURE__ */ e(m, { align: "right", className: r, ...t, children: a });
510
+ }
57
511
  export {
58
- x as DataTable
512
+ te as DataTable,
513
+ me as DataTableActionCell,
514
+ ue as DataTableAddRow,
515
+ ce as DataTableAvatarCell,
516
+ ie as DataTableBody,
517
+ pe as DataTableBulkActions,
518
+ m as DataTableCell,
519
+ de as DataTableCheckboxCell,
520
+ fe as DataTableDragHandleCell,
521
+ be as DataTableEmptyState,
522
+ se as DataTableHead,
523
+ ne as DataTableHeader,
524
+ xe as DataTableImageCell,
525
+ ge as DataTableInputCell,
526
+ ve as DataTableLinkCell,
527
+ ye as DataTableNumberCell,
528
+ oe as DataTableRow,
529
+ he as DataTableSectionRow,
530
+ we as DataTableSelectCell,
531
+ le as DataTableTable
59
532
  };
@@ -1,4 +1,4 @@
1
- import { jsx as t, jsxs as s } from "react/jsx-runtime";
1
+ import { jsx as t, jsxs as l } from "react/jsx-runtime";
2
2
  import "react";
3
3
  import { XIcon as d } from "lucide-react";
4
4
  import { Dialog as o } from "radix-ui";
@@ -43,24 +43,24 @@ function u({
43
43
  function N({
44
44
  className: a,
45
45
  children: e,
46
- showCloseButton: l = !0,
46
+ showCloseButton: s = !0,
47
47
  ...r
48
48
  }) {
49
- return /* @__PURE__ */ s(g, { "data-slot": "dialog-portal", children: [
49
+ return /* @__PURE__ */ l(g, { "data-slot": "dialog-portal", children: [
50
50
  /* @__PURE__ */ t(u, {}),
51
- /* @__PURE__ */ s(
51
+ /* @__PURE__ */ l(
52
52
  o.Content,
53
53
  {
54
54
  "data-slot": "dialog-content",
55
55
  onOpenAutoFocus: (n) => n.preventDefault(),
56
56
  className: i(
57
- "fixed top-[50%] left-[50%] z-[var(--Z-Modal)] grid w-[calc(100%_-_32px)] max-w-[calc(100%_-_32px)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-2xl bg-background dark:bg-[var(--Primitive-Gray-800)] p-6 shadow-lg duration-[var(--Motion-Duration-Base)] outline-none focus-visible:ring-2 focus-visible:ring-[var(--Focus-High-Emphasis)] data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 sm:max-w-lg",
57
+ "fixed top-[50%] left-[50%] z-[var(--Z-Modal)] grid w-[calc(100%_-_32px)] max-w-[calc(100%_-_32px)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-2xl bg-[var(--Surface-Elevated)] p-6 shadow-lg duration-[var(--Motion-Duration-Base)] outline-none focus-visible:ring-2 focus-visible:ring-[var(--Focus-High-Emphasis)] data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 sm:max-w-lg",
58
58
  a
59
59
  ),
60
60
  ...r,
61
61
  children: [
62
62
  e,
63
- l && /* @__PURE__ */ s(
63
+ s && /* @__PURE__ */ l(
64
64
  o.Close,
65
65
  {
66
66
  "data-slot": "dialog-close",
@@ -89,10 +89,10 @@ function T({ className: a, ...e }) {
89
89
  function C({
90
90
  className: a,
91
91
  showCloseButton: e = !1,
92
- children: l,
92
+ children: s,
93
93
  ...r
94
94
  }) {
95
- return /* @__PURE__ */ s(
95
+ return /* @__PURE__ */ l(
96
96
  "div",
97
97
  {
98
98
  "data-slot": "dialog-footer",
@@ -102,13 +102,13 @@ function C({
102
102
  ),
103
103
  ...r,
104
104
  children: [
105
- l,
105
+ s,
106
106
  e && /* @__PURE__ */ t(o.Close, { asChild: !0, children: /* @__PURE__ */ t(c, { variant: "tertiary", children: "Close" }) })
107
107
  ]
108
108
  }
109
109
  );
110
110
  }
111
- function w({
111
+ function E({
112
112
  className: a,
113
113
  ...e
114
114
  }) {
@@ -121,7 +121,7 @@ function w({
121
121
  }
122
122
  );
123
123
  }
124
- function z({
124
+ function w({
125
125
  className: a,
126
126
  ...e
127
127
  }) {
@@ -138,11 +138,11 @@ export {
138
138
  D as Dialog,
139
139
  b as DialogClose,
140
140
  N as DialogContent,
141
- z as DialogDescription,
141
+ w as DialogDescription,
142
142
  C as DialogFooter,
143
143
  T as DialogHeader,
144
144
  u as DialogOverlay,
145
145
  g as DialogPortal,
146
- w as DialogTitle,
146
+ E as DialogTitle,
147
147
  y as DialogTrigger
148
148
  };
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsx as t, jsxs as o } from "react/jsx-runtime";
2
3
  import "react";
3
4
  import { Drawer as e } from "vaul";
@@ -50,7 +51,7 @@ function f({
50
51
  {
51
52
  "data-slot": "drawer-content",
52
53
  className: d(
53
- "group/drawer-content fixed z-[var(--Z-Modal)] flex h-auto flex-col border-[var(--Border-Medium-Emphasis)] bg-background",
54
+ "group/drawer-content fixed z-[var(--Z-Modal)] flex h-auto flex-col border-[var(--Border-Medium-Emphasis)] bg-[var(--Surface-Elevated)]",
54
55
  "data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b",
55
56
  "data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-lg data-[vaul-drawer-direction=bottom]:border-t",
56
57
  "data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:sm:max-w-sm",
@@ -89,7 +90,7 @@ function x({ className: r, ...a }) {
89
90
  }
90
91
  );
91
92
  }
92
- function b({
93
+ function h({
93
94
  className: r,
94
95
  ...a
95
96
  }) {
@@ -102,7 +103,7 @@ function b({
102
103
  }
103
104
  );
104
105
  }
105
- function h({
106
+ function b({
106
107
  className: r,
107
108
  ...a
108
109
  }) {
@@ -119,11 +120,11 @@ export {
119
120
  m as Drawer,
120
121
  p as DrawerClose,
121
122
  f as DrawerContent,
122
- h as DrawerDescription,
123
+ b as DrawerDescription,
123
124
  x as DrawerFooter,
124
125
  g as DrawerHeader,
125
126
  l as DrawerOverlay,
126
127
  n as DrawerPortal,
127
- b as DrawerTitle,
128
+ h as DrawerTitle,
128
129
  v as DrawerTrigger
129
130
  };
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsxs as b, jsx as n } from "react/jsx-runtime";
2
3
  import * as g from "react";
3
4
  import { Paperclip as H, X as _ } from "lucide-react";