@sixthshift/design-system 0.7.0 → 0.9.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 (177) hide show
  1. package/README.md +5 -4
  2. package/dist/components/Badge/Badge.d.ts +17 -35
  3. package/dist/components/Badge/Badge.d.ts.map +1 -1
  4. package/dist/components/Badge/Badge.js +19 -22
  5. package/dist/components/Badge/Badge.js.map +1 -1
  6. package/dist/components/Badge/index.d.ts +1 -1
  7. package/dist/components/Badge/index.d.ts.map +1 -1
  8. package/dist/components/Badge/index.js +1 -1
  9. package/dist/components/Badge/index.js.map +1 -1
  10. package/dist/components/Button/Button.d.ts +23 -41
  11. package/dist/components/Button/Button.d.ts.map +1 -1
  12. package/dist/components/Button/Button.js +28 -35
  13. package/dist/components/Button/Button.js.map +1 -1
  14. package/dist/components/Button/index.d.ts +1 -1
  15. package/dist/components/Button/index.d.ts.map +1 -1
  16. package/dist/components/Button/index.js +1 -1
  17. package/dist/components/Button/index.js.map +1 -1
  18. package/dist/components/Card/Card.d.ts +2 -2
  19. package/dist/components/Card/Card.js +1 -1
  20. package/dist/components/Card/Card.js.map +1 -1
  21. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +20 -16
  22. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts.map +1 -1
  23. package/dist/components/CheckboxGroup/CheckboxGroup.js +12 -10
  24. package/dist/components/CheckboxGroup/CheckboxGroup.js.map +1 -1
  25. package/dist/components/Code/Workspace/Toolbar.d.ts +2 -1
  26. package/dist/components/Code/Workspace/Toolbar.d.ts.map +1 -1
  27. package/dist/components/Code/Workspace/Toolbar.js.map +1 -1
  28. package/dist/components/DataTable/DataTable.d.ts +89 -0
  29. package/dist/components/DataTable/DataTable.d.ts.map +1 -0
  30. package/dist/components/DataTable/DataTable.js +107 -0
  31. package/dist/components/DataTable/DataTable.js.map +1 -0
  32. package/dist/components/DataTable/index.d.ts +2 -0
  33. package/dist/components/DataTable/index.d.ts.map +1 -0
  34. package/dist/components/DataTable/index.js +2 -0
  35. package/dist/components/DataTable/index.js.map +1 -0
  36. package/dist/components/FileDropzone/FileDropzone.d.ts +87 -0
  37. package/dist/components/FileDropzone/FileDropzone.d.ts.map +1 -0
  38. package/dist/components/FileDropzone/FileDropzone.js +146 -0
  39. package/dist/components/FileDropzone/FileDropzone.js.map +1 -0
  40. package/dist/components/FileDropzone/index.d.ts +2 -0
  41. package/dist/components/FileDropzone/index.d.ts.map +1 -0
  42. package/dist/components/FileDropzone/index.js +2 -0
  43. package/dist/components/FileDropzone/index.js.map +1 -0
  44. package/dist/components/FormField/FormField.d.ts +3 -1
  45. package/dist/components/FormField/FormField.d.ts.map +1 -1
  46. package/dist/components/FormField/FormField.js.map +1 -1
  47. package/dist/components/ImageGallery/ImageGallery.d.ts +93 -0
  48. package/dist/components/ImageGallery/ImageGallery.d.ts.map +1 -0
  49. package/dist/components/ImageGallery/ImageGallery.js +121 -0
  50. package/dist/components/ImageGallery/ImageGallery.js.map +1 -0
  51. package/dist/components/ImageGallery/index.d.ts +2 -0
  52. package/dist/components/ImageGallery/index.d.ts.map +1 -0
  53. package/dist/components/ImageGallery/index.js +2 -0
  54. package/dist/components/ImageGallery/index.js.map +1 -0
  55. package/dist/components/Input/Input.d.ts +3 -3
  56. package/dist/components/Input/Input.js +3 -3
  57. package/dist/components/Markdown/Markdown.js +1 -1
  58. package/dist/components/Markdown/Markdown.js.map +1 -1
  59. package/dist/components/NumberStepper/NumberStepper.d.ts +78 -0
  60. package/dist/components/NumberStepper/NumberStepper.d.ts.map +1 -0
  61. package/dist/components/NumberStepper/NumberStepper.js +129 -0
  62. package/dist/components/NumberStepper/NumberStepper.js.map +1 -0
  63. package/dist/components/NumberStepper/index.d.ts +2 -0
  64. package/dist/components/NumberStepper/index.d.ts.map +1 -0
  65. package/dist/components/NumberStepper/index.js +2 -0
  66. package/dist/components/NumberStepper/index.js.map +1 -0
  67. package/dist/components/ProgressBar/ProgressBar.d.ts +11 -0
  68. package/dist/components/ProgressBar/ProgressBar.d.ts.map +1 -1
  69. package/dist/components/ProgressBar/ProgressBar.js +6 -2
  70. package/dist/components/ProgressBar/ProgressBar.js.map +1 -1
  71. package/dist/components/ProgressBar/index.d.ts +1 -1
  72. package/dist/components/ProgressBar/index.d.ts.map +1 -1
  73. package/dist/components/ProgressBar/index.js.map +1 -1
  74. package/dist/components/RadioButtonGroup/RadioButtonGroup.d.ts +19 -16
  75. package/dist/components/RadioButtonGroup/RadioButtonGroup.d.ts.map +1 -1
  76. package/dist/components/RadioButtonGroup/RadioButtonGroup.js +13 -12
  77. package/dist/components/RadioButtonGroup/RadioButtonGroup.js.map +1 -1
  78. package/dist/components/SearchInput/SearchInput.d.ts +3 -2
  79. package/dist/components/SearchInput/SearchInput.d.ts.map +1 -1
  80. package/dist/components/SearchInput/SearchInput.js +13 -8
  81. package/dist/components/SearchInput/SearchInput.js.map +1 -1
  82. package/dist/components/Sparkline/Sparkline.d.ts +8 -4
  83. package/dist/components/Sparkline/Sparkline.d.ts.map +1 -1
  84. package/dist/components/Sparkline/Sparkline.js +1 -1
  85. package/dist/components/Sparkline/Sparkline.js.map +1 -1
  86. package/dist/components/Sparkline/index.d.ts +1 -1
  87. package/dist/components/Sparkline/index.d.ts.map +1 -1
  88. package/dist/components/Sparkline/index.js.map +1 -1
  89. package/dist/components/Steps/Steps.d.ts +65 -0
  90. package/dist/components/Steps/Steps.d.ts.map +1 -0
  91. package/dist/components/Steps/Steps.js +62 -0
  92. package/dist/components/Steps/Steps.js.map +1 -0
  93. package/dist/components/Steps/index.d.ts +2 -0
  94. package/dist/components/Steps/index.d.ts.map +1 -0
  95. package/dist/components/Steps/index.js +2 -0
  96. package/dist/components/Steps/index.js.map +1 -0
  97. package/dist/components/TagChip/TagChip.d.ts +0 -13
  98. package/dist/components/TagChip/TagChip.d.ts.map +1 -1
  99. package/dist/components/TagChip/TagChip.js +10 -4
  100. package/dist/components/TagChip/TagChip.js.map +1 -1
  101. package/dist/components/TextInline/TextInline.d.ts +2 -2
  102. package/dist/components/Toast/Toast.js +1 -1
  103. package/dist/components/Toast/Toast.js.map +1 -1
  104. package/dist/components/Toggle/Toggle.d.ts +29 -18
  105. package/dist/components/Toggle/Toggle.d.ts.map +1 -1
  106. package/dist/components/Toggle/Toggle.js +48 -11
  107. package/dist/components/Toggle/Toggle.js.map +1 -1
  108. package/dist/components/Toggle/index.d.ts +1 -1
  109. package/dist/components/Toggle/index.d.ts.map +1 -1
  110. package/dist/components/Toggle/index.js +1 -1
  111. package/dist/components/Toggle/index.js.map +1 -1
  112. package/dist/components/ToggleGroup/ToggleGroup.d.ts +4 -4
  113. package/dist/components/ToggleGroup/ToggleGroup.js +4 -4
  114. package/dist/components/ToggleGroup/ToggleGroupItem.d.ts +1 -1
  115. package/dist/components/ToggleGroup/ToggleGroupItem.d.ts.map +1 -1
  116. package/dist/components/ToggleGroup/ToggleGroupItem.js +37 -7
  117. package/dist/components/ToggleGroup/ToggleGroupItem.js.map +1 -1
  118. package/dist/components/ToggleGroup/ToggleGroupMultiple.d.ts +3 -3
  119. package/dist/components/ToggleGroup/ToggleGroupSingle.d.ts +3 -3
  120. package/dist/components/ToggleGroup/index.d.ts +1 -1
  121. package/dist/components/ToggleGroup/index.d.ts.map +1 -1
  122. package/dist/components/ToggleGroup/toggleGroup.types.d.ts +18 -16
  123. package/dist/components/ToggleGroup/toggleGroup.types.d.ts.map +1 -1
  124. package/dist/typography/Code.js +1 -1
  125. package/dist/typography/Code.js.map +1 -1
  126. package/package.json +22 -1
  127. package/src/components/Badge/Badge.tsx +38 -45
  128. package/src/components/Badge/badge.recipe.css +20 -101
  129. package/src/components/Badge/index.ts +0 -1
  130. package/src/components/Button/Button.tsx +57 -51
  131. package/src/components/Button/button.recipe.css +39 -122
  132. package/src/components/Button/index.ts +0 -1
  133. package/src/components/Card/Card.tsx +1 -1
  134. package/src/components/CheckboxGroup/CheckboxGroup.tsx +17 -15
  135. package/src/components/Code/Workspace/Toolbar.tsx +2 -2
  136. package/src/components/DataTable/DataTable.tsx +261 -0
  137. package/src/components/DataTable/data-table.recipe.css +28 -0
  138. package/src/components/DataTable/index.ts +10 -0
  139. package/src/components/FileDropzone/FileDropzone.tsx +239 -0
  140. package/src/components/FileDropzone/file-dropzone.recipe.css +38 -0
  141. package/src/components/FileDropzone/index.ts +1 -0
  142. package/src/components/FormField/FormField.tsx +3 -2
  143. package/src/components/ImageGallery/ImageGallery.tsx +285 -0
  144. package/src/components/ImageGallery/image-gallery.recipe.css +50 -0
  145. package/src/components/ImageGallery/index.ts +7 -0
  146. package/src/components/Input/Input.tsx +3 -3
  147. package/src/components/Markdown/Markdown.tsx +1 -1
  148. package/src/components/Message/message.recipe.css +13 -28
  149. package/src/components/NumberStepper/NumberStepper.tsx +227 -0
  150. package/src/components/NumberStepper/index.ts +1 -0
  151. package/src/components/NumberStepper/number-stepper.recipe.css +31 -0
  152. package/src/components/ProgressBar/ProgressBar.tsx +16 -4
  153. package/src/components/ProgressBar/index.ts +1 -1
  154. package/src/components/ProgressBar/progress-bar.recipe.css +29 -0
  155. package/src/components/RadioButtonGroup/RadioButtonGroup.tsx +18 -17
  156. package/src/components/SearchInput/SearchInput.tsx +34 -20
  157. package/src/components/SearchInput/search-input.recipe.css +14 -6
  158. package/src/components/Sparkline/Sparkline.tsx +9 -4
  159. package/src/components/Sparkline/index.ts +1 -1
  160. package/src/components/Steps/Steps.tsx +149 -0
  161. package/src/components/Steps/index.ts +1 -0
  162. package/src/components/Steps/steps.recipe.css +51 -0
  163. package/src/components/TagChip/TagChip.tsx +17 -8
  164. package/src/components/TagChip/tag-chip.recipe.css +12 -12
  165. package/src/components/Toast/Toast.tsx +1 -1
  166. package/src/components/Toggle/Toggle.tsx +67 -21
  167. package/src/components/Toggle/index.ts +9 -1
  168. package/src/components/Toggle/toggle.recipe.css +45 -73
  169. package/src/components/ToggleGroup/ToggleGroup.tsx +4 -4
  170. package/src/components/ToggleGroup/ToggleGroupItem.tsx +46 -11
  171. package/src/components/ToggleGroup/index.ts +9 -1
  172. package/src/components/ToggleGroup/toggle-group.recipe.css +62 -0
  173. package/src/components/ToggleGroup/toggleGroup.types.ts +18 -16
  174. package/src/theme/linen/theme.css +21 -0
  175. package/src/theming/intents.css +112 -0
  176. package/src/theming/tailwind.css +22 -1
  177. package/src/typography/Code.tsx +1 -1
@@ -18,10 +18,11 @@ export type CheckboxGroupProps = Omit<React.HTMLAttributes<HTMLDivElement>, "onC
18
18
  onValueChange?: (value: string[]) => void;
19
19
  /** Layout orientation */
20
20
  orientation?: "vertical" | "horizontal";
21
- /** Visual variant */
22
- variant?: "default" | "button";
23
- /** Button appearance (only applies when variant="button") */
24
- appearance?: "segmented" | "separate";
21
+ /**
22
+ * How the options render: `control` (the default) is one `Checkbox` per option;
23
+ * `segmented` and `separate` are a row or column of buttons, joined or apart.
24
+ */
25
+ appearance?: "control" | "segmented" | "separate";
25
26
  /** Input name for form submission */
26
27
  name?: string;
27
28
  /** Disable all options */
@@ -34,17 +35,19 @@ export type CheckboxGroupProps = Omit<React.HTMLAttributes<HTMLDivElement>, "onC
34
35
  * selection, via the `value`/`defaultValue`/`onValueChange` triad
35
36
  * (`useControllableState`).
36
37
  *
37
- * `variant="default"` (the default) renders one `Checkbox` per option, each
38
+ * `appearance="control"` (the default) renders one `Checkbox` per option, each
38
39
  * with its own visible label, laid out in a column or row per
39
- * `orientation`. `variant="button"` is a separate rendering path — not a
40
- * re-skinned `Checkbox` — a row/column of plain buttons with
41
- * `role="checkbox"` and no separate label; contiguous buttons touch and
42
- * share borders (`appearance="segmented"`, the default) or sit apart with
43
- * their own rounded corners (`appearance="separate"`).
40
+ * `orientation`. `appearance="segmented"` or `"separate"` is a separate
41
+ * rendering path — not a re-skinned `Checkbox` — a row/column of plain
42
+ * buttons with `role="checkbox"` and no separate label; contiguous buttons
43
+ * touch and share borders (`segmented`) or sit apart with their own rounded
44
+ * corners (`separate`). One prop rather than a
45
+ * `variant` + `appearance` pair, so "appearance without buttons" — which
46
+ * used to mean nothing — cannot be written.
44
47
  *
45
- * Form submission only happens when `name` is set. In the default variant
48
+ * Form submission only happens when `name` is set. With `control`
46
49
  * that means each underlying `Checkbox` gets `name`, so one hidden native
47
- * checkbox input is rendered per option; in the button variant the group
50
+ * checkbox input is rendered per option; with the button appearances the group
48
51
  * itself renders one hidden `<input type="checkbox">` per *currently
49
52
  * selected* value.
50
53
  *
@@ -62,10 +65,11 @@ declare const CheckboxGroup: React.ForwardRefExoticComponent<Omit<React.HTMLAttr
62
65
  onValueChange?: (value: string[]) => void;
63
66
  /** Layout orientation */
64
67
  orientation?: "vertical" | "horizontal";
65
- /** Visual variant */
66
- variant?: "default" | "button";
67
- /** Button appearance (only applies when variant="button") */
68
- appearance?: "segmented" | "separate";
68
+ /**
69
+ * How the options render: `control` (the default) is one `Checkbox` per option;
70
+ * `segmented` and `separate` are a row or column of buttons, joined or apart.
71
+ */
72
+ appearance?: "control" | "segmented" | "separate";
69
73
  /** Input name for form submission */
70
74
  name?: string;
71
75
  /** Disable all options */
@@ -1 +1 @@
1
- {"version":3,"file":"CheckboxGroup.d.ts","sourceRoot":"","sources":["../../../src/components/CheckboxGroup/CheckboxGroup.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,MAAM,mBAAmB,GAAG;IAChC,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC,GAAG;IACnG,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,wBAAwB;IACxB,OAAO,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACxC,oCAAoC;IACpC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC1C,yBAAyB;IACzB,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC,qBAAqB;IACrB,OAAO,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC/B,6DAA6D;IAC7D,UAAU,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC;IACtC,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,QAAA,MAAM,aAAa;IA5CjB,iCAAiC;YACzB,MAAM,EAAE;IAChB,oDAAoD;mBACrC,MAAM,EAAE;IACvB,wBAAwB;aACf,SAAS,mBAAmB,EAAE;IACvC,oCAAoC;oBACpB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI;IACzC,yBAAyB;kBACX,UAAU,GAAG,YAAY;IACvC,qBAAqB;cACX,SAAS,GAAG,QAAQ;IAC9B,6DAA6D;iBAChD,WAAW,GAAG,UAAU;IACrC,qCAAqC;WAC9B,MAAM;IACb,0BAA0B;eACf,OAAO;IAClB,kDAAkD;aACzC,MAAM,IAAI;wCA4JpB,CAAC;AAGF,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"CheckboxGroup.d.ts","sourceRoot":"","sources":["../../../src/components/CheckboxGroup/CheckboxGroup.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,MAAM,mBAAmB,GAAG;IAChC,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC,GAAG;IACnG,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,wBAAwB;IACxB,OAAO,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACxC,oCAAoC;IACpC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC1C,yBAAyB;IACzB,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;IAClD,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,QAAA,MAAM,aAAa;IA/CjB,iCAAiC;YACzB,MAAM,EAAE;IAChB,oDAAoD;mBACrC,MAAM,EAAE;IACvB,wBAAwB;aACf,SAAS,mBAAmB,EAAE;IACvC,oCAAoC;oBACpB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI;IACzC,yBAAyB;kBACX,UAAU,GAAG,YAAY;IACvC;;;OAGG;iBACU,SAAS,GAAG,WAAW,GAAG,UAAU;IACjD,qCAAqC;WAC9B,MAAM;IACb,0BAA0B;eACf,OAAO;IAClB,kDAAkD;aACzC,MAAM,IAAI;wCA6JpB,CAAC;AAGF,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -9,24 +9,26 @@ import * as React from "react";
9
9
  * selection, via the `value`/`defaultValue`/`onValueChange` triad
10
10
  * (`useControllableState`).
11
11
  *
12
- * `variant="default"` (the default) renders one `Checkbox` per option, each
12
+ * `appearance="control"` (the default) renders one `Checkbox` per option, each
13
13
  * with its own visible label, laid out in a column or row per
14
- * `orientation`. `variant="button"` is a separate rendering path — not a
15
- * re-skinned `Checkbox` — a row/column of plain buttons with
16
- * `role="checkbox"` and no separate label; contiguous buttons touch and
17
- * share borders (`appearance="segmented"`, the default) or sit apart with
18
- * their own rounded corners (`appearance="separate"`).
14
+ * `orientation`. `appearance="segmented"` or `"separate"` is a separate
15
+ * rendering path — not a re-skinned `Checkbox` — a row/column of plain
16
+ * buttons with `role="checkbox"` and no separate label; contiguous buttons
17
+ * touch and share borders (`segmented`) or sit apart with their own rounded
18
+ * corners (`separate`). One prop rather than a
19
+ * `variant` + `appearance` pair, so "appearance without buttons" — which
20
+ * used to mean nothing — cannot be written.
19
21
  *
20
- * Form submission only happens when `name` is set. In the default variant
22
+ * Form submission only happens when `name` is set. With `control`
21
23
  * that means each underlying `Checkbox` gets `name`, so one hidden native
22
- * checkbox input is rendered per option; in the button variant the group
24
+ * checkbox input is rendered per option; with the button appearances the group
23
25
  * itself renders one hidden `<input type="checkbox">` per *currently
24
26
  * selected* value.
25
27
  *
26
28
  * Renders `role="group"`; focus leaving the whole group — not just moving
27
29
  * between options — fires `onBlur`.
28
30
  */
29
- const CheckboxGroup = React.forwardRef(({ value: controlledValue, defaultValue = [], options, onValueChange, orientation = "vertical", variant = "default", appearance = "segmented", name, disabled, onBlur, className, ...props }, ref) => {
31
+ const CheckboxGroup = React.forwardRef(({ value: controlledValue, defaultValue = [], options, onValueChange, orientation = "vertical", appearance = "control", name, disabled, onBlur, className, ...props }, ref) => {
30
32
  const [value, setValue] = useControllableState({
31
33
  value: controlledValue,
32
34
  defaultValue,
@@ -53,7 +55,7 @@ const CheckboxGroup = React.forwardRef(({ value: controlledValue, defaultValue =
53
55
  setValue(value.filter((v) => v !== optionValue));
54
56
  }
55
57
  };
56
- if (variant === "button") {
58
+ if (appearance === "segmented" || appearance === "separate") {
57
59
  const isVertical = orientation === "vertical";
58
60
  const isSegmented = appearance === "segmented";
59
61
  return (
@@ -1 +1 @@
1
- {"version":3,"file":"CheckboxGroup.js","sourceRoot":"","sources":["../../../src/components/CheckboxGroup/CheckboxGroup.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,EAAE,EAAE,MAAM,iCAAiC,CAAC;AACrD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAmC/B;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CACpC,CACE,EACE,KAAK,EAAE,eAAe,EACtB,YAAY,GAAG,EAAE,EACjB,OAAO,EACP,aAAa,EACb,WAAW,GAAG,UAAU,EACxB,OAAO,GAAG,SAAS,EACnB,UAAU,GAAG,WAAW,EACxB,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,SAAS,EACT,GAAG,KAAK,EACT,EACD,GAAG,EACH,EAAE;IACF,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,oBAAoB,CAAC;QAC7C,KAAK,EAAE,eAAe;QACtB,YAAY;QACZ,QAAQ,EAAE,aAAa;KACxB,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAwB,IAAI,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CACjC,CAAC,IAA2B,EAAE,EAAE;QAC9B,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;QACxB,IAAI,OAAO,GAAG,KAAK,UAAU;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC;aACpC,IAAI,GAAG;YAAG,GAAgD,CAAC,OAAO,GAAG,IAAI,CAAC;IACjF,CAAC,EACD,CAAC,GAAG,CAAC,CACN,CAAC;IAEF,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CACtC,CAAC,CAAmB,EAAE,EAAE;QACtB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,aAAqB,CAAC,EAAE,CAAC;YACzD,MAAM,EAAE,EAAE,CAAC;QACb,CAAC;IACH,CAAC,EACD,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,MAAM,kBAAkB,GAAG,CAAC,WAAmB,EAAE,OAAgB,EAAE,EAAE;QACnE,IAAI,OAAO,EAAE,CAAC;YACZ,QAAQ,CAAC,CAAC,GAAG,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,WAAW,KAAK,UAAU,CAAC;QAC9C,MAAM,WAAW,GAAG,UAAU,KAAK,WAAW,CAAC;QAE/C,OAAO;QACL,2GAA2G;QAC3G,eACE,GAAG,EAAE,SAAS,EACd,IAAI,EAAC,OAAO,EACZ,aAAa,EAAE,cAAc,EAC7B,SAAS,EAAE,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,WAAW,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,KAC3H,KAAK,aAER,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBAC7B,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC/C,MAAM,UAAU,GAAG,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC;oBAC/C,MAAM,OAAO,GAAG,KAAK,KAAK,CAAC,CAAC;oBAC5B,MAAM,MAAM,GAAG,KAAK,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;oBAE5C,OAAO;oBACL,0HAA0H;oBAC1H,iBAEE,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,UAAU,kBACD,SAAS,EACvB,QAAQ,EAAE,UAAU,EACpB,OAAO,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,EAC3D,SAAS,EAAE,EAAE,CACX,yFAAyF,EACzF,6GAA6G,EAC7G,iDAAiD,EACjD,WAAW;4BACT,CAAC,CAAC,EAAE,CACA,QAAQ,EACR,UAAU;gCACR,CAAC,CAAC,EAAE,CAAC,OAAO,IAAI,cAAc,EAAE,MAAM,IAAI,cAAc,EAAE,CAAC,OAAO,IAAI,QAAQ,CAAC;gCAC/E,CAAC,CAAC,EAAE,CAAC,OAAO,IAAI,cAAc,EAAE,MAAM,IAAI,cAAc,EAAE,CAAC,OAAO,IAAI,QAAQ,CAAC,CAClF;4BACH,CAAC,CAAC,mBAAmB,EACvB,SAAS,CAAC,CAAC,CAAC,kDAAkD,CAAC,CAAC,CAAC,qEAAqE,CACvI,YAEA,MAAM,CAAC,KAAK,IArBR,MAAM,CAAC,KAAK,CAsBV,CACV,CAAC;gBACJ,CAAC,CAAC,EACD,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAe,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,IAArC,CAAC,CAAwC,CAAC,IAC5E,CACP,CAAC;IACJ,CAAC;IAED,OAAO;IACL,mGAAmG;IACnG,cACE,GAAG,EAAE,SAAS,EACd,IAAI,EAAC,OAAO,EACZ,aAAa,EAAE,cAAc,EAC7B,SAAS,EAAE,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,EAAE,SAAS,CAAC,KAC9F,KAAK,YAER,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACtB,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/C,MAAM,UAAU,GAAG,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC;YAE/C,OAAO,CACL,KAAC,QAAQ,OAEH,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC1B,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,OAAO,EAAE,SAAS,EAClB,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,OAAkB,CAAC,EAClF,QAAQ,EAAE,UAAU,EACpB,KAAK,EAAE,MAAM,CAAC,KAAK,IANd,MAAM,CAAC,KAAK,CAOjB,CACH,CAAC;QACJ,CAAC,CAAC,GACE,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AACF,aAAa,CAAC,WAAW,GAAG,eAAe,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"CheckboxGroup.js","sourceRoot":"","sources":["../../../src/components/CheckboxGroup/CheckboxGroup.tsx"],"names":[],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  import type { HTMLAttributes, ReactNode } from "react";
2
+ import { type ButtonVariant } from "../../Button/index.js";
2
3
  export type Action = {
3
4
  id: string;
4
5
  label: string;
5
6
  icon?: ReactNode;
6
7
  onClick: () => void;
7
8
  disabled?: boolean;
8
- variant?: "solid" | "outline" | "ghost" | "link";
9
+ variant?: ButtonVariant;
9
10
  };
10
11
  export type ToolbarProps = HTMLAttributes<HTMLDivElement> & {
11
12
  actions?: Action[] | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"Toolbar.d.ts","sourceRoot":"","sources":["../../../../src/components/Code/Workspace/Toolbar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvD,MAAM,MAAM,MAAM,GAAG;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,cAAc,CAAC,cAAc,CAAC,GAAG;IAC1D,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO,+EAAqF,YAAY,gCAwBpH,CAAC"}
1
+ {"version":3,"file":"Toolbar.d.ts","sourceRoot":"","sources":["../../../../src/components/Code/Workspace/Toolbar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAU,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAE1D,MAAM,MAAM,MAAM,GAAG;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,cAAc,CAAC,cAAc,CAAC,GAAG;IAC1D,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO,+EAAqF,YAAY,gCAwBpH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Toolbar.js","sourceRoot":"","sources":["../../../../src/components/Code/Workspace/Toolbar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAkBtC;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,EAAE,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,KAAK,EAAgB,EAAE,EAAE;IACvH,OAAO,CACL,kBAAS,KAAK,EAAE,SAAS,EAAE,0FAA0F,SAAS,IAAI,EAAE,EAAE,aAEpI,cAAK,SAAS,EAAC,yBAAyB,YAAE,WAAW,GAAO,EAG5D,eAAK,SAAS,EAAC,yBAAyB,aACrC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACvB,MAAC,MAAM,IAAiB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO,EAAE,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,aACrH,MAAM,CAAC,IAAI,IAAI,eAAM,SAAS,EAAC,MAAM,YAAE,MAAM,CAAC,IAAI,GAAQ,EAC1D,MAAM,CAAC,KAAK,KAFF,MAAM,CAAC,EAAE,CAGb,CACV,CAAC,EACD,aAAa,IAAI,CAChB,MAAC,MAAM,IAAC,OAAO,EAAE,aAAa,CAAC,OAAO,IAAI,OAAO,EAAE,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,QAAQ,aAC1H,aAAa,CAAC,IAAI,IAAI,eAAM,SAAS,EAAC,MAAM,YAAE,aAAa,CAAC,IAAI,GAAQ,EACxE,aAAa,CAAC,KAAK,IACb,CACV,EACA,YAAY,IACT,IACF,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"Toolbar.js","sourceRoot":"","sources":["../../../../src/components/Code/Workspace/Toolbar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,MAAM,EAAsB,MAAM,cAAc,CAAC;AAkB1D;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,EAAE,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,KAAK,EAAgB,EAAE,EAAE;IACvH,OAAO,CACL,kBAAS,KAAK,EAAE,SAAS,EAAE,0FAA0F,SAAS,IAAI,EAAE,EAAE,aAEpI,cAAK,SAAS,EAAC,yBAAyB,YAAE,WAAW,GAAO,EAG5D,eAAK,SAAS,EAAC,yBAAyB,aACrC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACvB,MAAC,MAAM,IAAiB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO,EAAE,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,aACrH,MAAM,CAAC,IAAI,IAAI,eAAM,SAAS,EAAC,MAAM,YAAE,MAAM,CAAC,IAAI,GAAQ,EAC1D,MAAM,CAAC,KAAK,KAFF,MAAM,CAAC,EAAE,CAGb,CACV,CAAC,EACD,aAAa,IAAI,CAChB,MAAC,MAAM,IAAC,OAAO,EAAE,aAAa,CAAC,OAAO,IAAI,OAAO,EAAE,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,QAAQ,aAC1H,aAAa,CAAC,IAAI,IAAI,eAAM,SAAS,EAAC,MAAM,YAAE,aAAa,CAAC,IAAI,GAAQ,EACxE,aAAa,CAAC,KAAK,IACb,CACV,EACA,YAAY,IACT,IACF,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,89 @@
1
+ import { type VariantProps } from "class-variance-authority";
2
+ import { type HTMLAttributes, type ReactElement, type ReactNode, type Ref } from "react";
3
+ /**
4
+ * Geometry only. Every colour reads a `--data-table-*` component token whose
5
+ * value is decided by src/components/DataTable/data-table.recipe.css.
6
+ *
7
+ * `size` is cell density: `sm` for back-office lists scanned dozens of rows at
8
+ * a time, `md` for tables that are the page's main content.
9
+ */
10
+ declare const cellVariants: (props?: ({
11
+ size?: "sm" | "md" | null | undefined;
12
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
13
+ export type DataTableSize = NonNullable<VariantProps<typeof cellVariants>["size"]>;
14
+ export type DataTableAlign = "start" | "center" | "end";
15
+ export type DataTableColumn<Row> = {
16
+ /** Stable key — also what `sort.columnId` refers to. */
17
+ id: string;
18
+ /** Header content. */
19
+ header: ReactNode;
20
+ /** Cell content for one row. */
21
+ cell: (row: Row) => ReactNode;
22
+ /**
23
+ * Makes the column sortable. The returned value is what rows are compared
24
+ * by — return cents, not a formatted price, and an ISO date, not "Tue 3rd".
25
+ */
26
+ sortValue?: (row: Row) => string | number;
27
+ /** Text alignment for header and cells. Numbers read best at `end`. */
28
+ align?: DataTableAlign;
29
+ /** A CSS width for the column, e.g. `"8rem"` or `"20%"`. */
30
+ width?: string;
31
+ /** Extra classes for this column's `<td>`s. */
32
+ className?: string;
33
+ };
34
+ export type DataTableSortDirection = "asc" | "desc";
35
+ export type DataTableSort = {
36
+ columnId: string;
37
+ direction: DataTableSortDirection;
38
+ };
39
+ export type DataTableProps<Row> = Omit<HTMLAttributes<HTMLDivElement>, "children"> & VariantProps<typeof cellVariants> & {
40
+ columns: readonly DataTableColumn<Row>[];
41
+ rows: readonly Row[];
42
+ /** Stable id per row, used as the React key. */
43
+ getRowId: (row: Row) => string;
44
+ /** Controlled sort. `null` is unsorted — rows in the order given. */
45
+ sort?: DataTableSort | null;
46
+ /** Initial sort in uncontrolled mode. */
47
+ defaultSort?: DataTableSort | null;
48
+ /** Called when a header is clicked: ascending, then descending, then unsorted. */
49
+ onSortChange?: (sort: DataTableSort | null) => void;
50
+ /**
51
+ * Report sort changes without reordering `rows`, for data sorted where it
52
+ * is fetched. The headers still show the sort state.
53
+ */
54
+ manualSorting?: boolean;
55
+ /** Makes every row activatable by pointer, `Enter` or `Space`. */
56
+ onRowClick?: (row: Row) => void;
57
+ /** Shown in place of the body when `rows` is empty. */
58
+ empty?: ReactNode;
59
+ /** Names the table for assistive tech. Visually hidden unless `showCaption`. */
60
+ caption?: ReactNode;
61
+ showCaption?: boolean;
62
+ /** Keep the header row visible while the wrapper scrolls vertically. Give the wrapper a height via `className`. */
63
+ stickyHeader?: boolean;
64
+ };
65
+ /**
66
+ * A data table for back-office lists — orders, products, customers.
67
+ *
68
+ * Props-based, per docs/component-api-design.md: rows are uniform, so they
69
+ * arrive as a `rows` array and a `columns` config, and each column's `cell`
70
+ * renders one row's content. Anything interactive in a cell — a status
71
+ * Badge, an action Button — is just what `cell` returns.
72
+ *
73
+ * A column with `sortValue` gets a header button cycling ascending →
74
+ * descending → unsorted, and `aria-sort` on its `<th>`. Sorting is
75
+ * client-side and stable; pass `manualSorting` to only report the change when
76
+ * the data is sorted where it is fetched. Sort state is controlled or
77
+ * uncontrolled through `sort`/`defaultSort`/`onSortChange`.
78
+ *
79
+ * `onRowClick` makes every row a tab stop activated by pointer, `Enter` or
80
+ * `Space` — keys pressed on a control inside the row are left to that control.
81
+ *
82
+ * The wrapper scrolls, so a wide table on a phone scrolls sideways inside its
83
+ * border rather than widening the page.
84
+ */
85
+ export declare const DataTable: <Row>(props: DataTableProps<Row> & {
86
+ ref?: Ref<HTMLDivElement>;
87
+ }) => ReactElement;
88
+ export { cellVariants as dataTableCellVariants };
89
+ //# sourceMappingURL=DataTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../../src/components/DataTable/DataTable.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAc,KAAK,cAAc,EAAsB,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,KAAK,GAAG,EAAW,MAAM,OAAO,CAAC;AAElI;;;;;;GAMG;AACH,QAAA,MAAM,YAAY;;8EAUhB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAEnF,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;AAExD,MAAM,MAAM,eAAe,CAAC,GAAG,IAAI;IACjC,wDAAwD;IACxD,EAAE,EAAE,MAAM,CAAC;IACX,sBAAsB;IACtB,MAAM,EAAE,SAAS,CAAC;IAClB,gCAAgC;IAChC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,SAAS,CAAC;IAC9B;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,GAAG,MAAM,CAAC;IAC1C,uEAAuE;IACvE,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,KAAK,GAAG,MAAM,CAAC;AAEpD,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,sBAAsB,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,GAChF,YAAY,CAAC,OAAO,YAAY,CAAC,GAAG;IAClC,OAAO,EAAE,SAAS,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;IACzC,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC;IACrB,gDAAgD;IAChD,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC;IAC/B,qEAAqE;IACrE,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC5B,yCAAyC;IACzC,WAAW,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACnC,kFAAkF;IAClF,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,KAAK,IAAI,CAAC;IACpD;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kEAAkE;IAClE,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAChC,uDAAuD;IACvD,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gFAAgF;IAChF,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mHAAmH;IACnH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AA0JJ;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,SAAS,EAAoB,CAAC,GAAG,EAAE,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAA;CAAE,KAAK,YAAY,CAAC;AAE5H,OAAO,EAAE,YAAY,IAAI,qBAAqB,EAAE,CAAC"}
@@ -0,0 +1,107 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useControllableState } from "@sixthshift/design-system/hooks";
4
+ import { cn } from "@sixthshift/design-system/utils";
5
+ import { cva } from "class-variance-authority";
6
+ import { ArrowDown, ArrowUp, ChevronsUpDown } from "lucide-react";
7
+ import { forwardRef, useMemo } from "react";
8
+ /**
9
+ * Geometry only. Every colour reads a `--data-table-*` component token whose
10
+ * value is decided by src/components/DataTable/data-table.recipe.css.
11
+ *
12
+ * `size` is cell density: `sm` for back-office lists scanned dozens of rows at
13
+ * a time, `md` for tables that are the page's main content.
14
+ */
15
+ const cellVariants = cva("px-3 align-middle", {
16
+ variants: {
17
+ size: {
18
+ sm: "h-9 py-1.5 text-xs",
19
+ md: "h-11 py-2 text-sm",
20
+ },
21
+ },
22
+ defaultVariants: {
23
+ size: "md",
24
+ },
25
+ });
26
+ const alignClass = {
27
+ start: "text-start",
28
+ center: "text-center",
29
+ end: "text-end",
30
+ };
31
+ const ariaSort = { asc: "ascending", desc: "descending" };
32
+ function nextSort(current, columnId) {
33
+ if (current?.columnId !== columnId)
34
+ return { columnId, direction: "asc" };
35
+ return current.direction === "asc" ? { columnId, direction: "desc" } : null;
36
+ }
37
+ function compare(a, b) {
38
+ if (typeof a === "number" && typeof b === "number")
39
+ return a - b;
40
+ return String(a).localeCompare(String(b), undefined, { numeric: true, sensitivity: "base" });
41
+ }
42
+ /**
43
+ * `forwardRef` erases the generic, so the implementation takes the ref as an
44
+ * argument and the export below restores `<Row>` — the same arrangement
45
+ * Select.tsx uses for `<T>`.
46
+ */
47
+ const DataTableRoot = forwardRef(function DataTableRoot({ className, columns, rows, getRowId, size = "md", sort: controlledSort, defaultSort = null, onSortChange, manualSorting = false, onRowClick, empty, caption, showCaption = false, stickyHeader = false, ...props }, ref) {
48
+ const [sort, setSort] = useControllableState({
49
+ value: controlledSort,
50
+ defaultValue: defaultSort,
51
+ onChange: onSortChange,
52
+ });
53
+ const sortedRows = useMemo(() => {
54
+ if (manualSorting || sort === null)
55
+ return rows;
56
+ const sortValue = columns.find((column) => column.id === sort.columnId)?.sortValue;
57
+ if (!sortValue)
58
+ return rows;
59
+ const factor = sort.direction === "asc" ? 1 : -1;
60
+ // Array.prototype.sort is stable, so equal keys keep the caller's order.
61
+ return [...rows].sort((a, b) => factor * compare(sortValue(a), sortValue(b)));
62
+ }, [rows, columns, sort, manualSorting]);
63
+ const interactive = onRowClick !== undefined;
64
+ const handleRowKeyDown = (event, row) => {
65
+ if (event.target !== event.currentTarget)
66
+ return; // a button inside the row keeps its own keys
67
+ if (event.key === "Enter" || event.key === " ") {
68
+ event.preventDefault();
69
+ onRowClick?.(row);
70
+ }
71
+ };
72
+ return (_jsx("div", { ref: ref, className: cn("data-table border-(color:--data-table-border) w-full overflow-auto rounded-lg border bg-(--data-table-bg) text-(--data-table-fg)", className), ...props, children: _jsxs("table", { className: "w-full border-collapse", children: [caption !== undefined && _jsx("caption", { className: cn(showCaption ? "px-3 py-2 text-start font-medium text-sm" : "sr-only"), children: caption }), _jsx("thead", { className: cn("bg-(--data-table-header-bg)", stickyHeader && "sticky top-0 z-10"), children: _jsx("tr", { className: "border-(color:--data-table-border) border-b", children: columns.map((column) => {
73
+ const align = column.align ?? "start";
74
+ const sorted = sort?.columnId === column.id ? sort.direction : undefined;
75
+ const Icon = sorted === "asc" ? ArrowUp : sorted === "desc" ? ArrowDown : ChevronsUpDown;
76
+ return (_jsx("th", { scope: "col", "aria-sort": column.sortValue ? (sorted ? ariaSort[sorted] : "none") : undefined, style: column.width ? { width: column.width } : undefined, className: cn(cellVariants({ size }), alignClass[align], "whitespace-nowrap font-medium text-(--data-table-header-fg)"), children: column.sortValue ? (_jsxs("button", { type: "button", onClick: () => setSort(nextSort(sort, column.id)), className: cn("focus-visible:ring-(color:--data-table-ring) -mx-1 inline-flex cursor-pointer items-center gap-1 rounded-sm px-1 hover:text-(--data-table-fg) focus-visible:outline-hidden focus-visible:ring-2", align === "end" && "flex-row-reverse"), children: [column.header, _jsx(Icon, { "aria-hidden": "true", className: cn("size-3.5 shrink-0", sorted === undefined && "opacity-50") })] })) : (column.header) }, column.id));
77
+ }) }) }), _jsx("tbody", { children: sortedRows.length === 0 ? (_jsx("tr", { children: _jsx("td", { colSpan: columns.length, className: "px-3 py-10 text-center text-(--data-table-empty-fg) text-sm", children: empty ?? "Nothing to show" }) })) : (sortedRows.map((row) => (_jsx("tr", { "data-interactive": interactive || undefined, onClick: interactive ? () => onRowClick(row) : undefined, onKeyDown: interactive ? (event) => handleRowKeyDown(event, row) : undefined,
78
+ // A row is not a native control, but a clickable table row is the
79
+ // established back-office pattern. It stays a `row` so the table
80
+ // semantics survive, and gains a tab stop and Enter/Space like
81
+ // Card does when it is clickable.
82
+ tabIndex: interactive ? 0 : undefined, className: cn("border-(color:--data-table-border) border-b last:border-b-0", interactive &&
83
+ "focus-visible:outline-(color:--data-table-ring) cursor-pointer hover:bg-(--data-table-row-bg-hovered) focus-visible:outline-2 focus-visible:-outline-offset-2"), children: columns.map((column) => (_jsx("td", { className: cn(cellVariants({ size }), alignClass[column.align ?? "start"], column.className), children: column.cell(row) }, column.id))) }, getRowId(row))))) })] }) }));
84
+ });
85
+ /**
86
+ * A data table for back-office lists — orders, products, customers.
87
+ *
88
+ * Props-based, per docs/component-api-design.md: rows are uniform, so they
89
+ * arrive as a `rows` array and a `columns` config, and each column's `cell`
90
+ * renders one row's content. Anything interactive in a cell — a status
91
+ * Badge, an action Button — is just what `cell` returns.
92
+ *
93
+ * A column with `sortValue` gets a header button cycling ascending →
94
+ * descending → unsorted, and `aria-sort` on its `<th>`. Sorting is
95
+ * client-side and stable; pass `manualSorting` to only report the change when
96
+ * the data is sorted where it is fetched. Sort state is controlled or
97
+ * uncontrolled through `sort`/`defaultSort`/`onSortChange`.
98
+ *
99
+ * `onRowClick` makes every row a tab stop activated by pointer, `Enter` or
100
+ * `Space` — keys pressed on a control inside the row are left to that control.
101
+ *
102
+ * The wrapper scrolls, so a wide table on a phone scrolls sideways inside its
103
+ * border rather than widening the page.
104
+ */
105
+ export const DataTable = DataTableRoot;
106
+ export { cellVariants as dataTableCellVariants };
107
+ //# sourceMappingURL=DataTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataTable.js","sourceRoot":"","sources":["../../../src/components/DataTable/DataTable.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { DataTable, type DataTableAlign, type DataTableColumn, type DataTableProps, type DataTableSize, type DataTableSort, type DataTableSortDirection, dataTableCellVariants, } from "./DataTable.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/DataTable/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,qBAAqB,GACtB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { DataTable, dataTableCellVariants, } from "./DataTable.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/DataTable/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAOT,qBAAqB,GACtB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,87 @@
1
+ import { type VariantProps } from "class-variance-authority";
2
+ import * as React from "react";
3
+ /**
4
+ * Geometry only. Every colour reads a `--file-dropzone-*` component token
5
+ * whose value is decided by src/components/FileDropzone/file-dropzone.recipe.css.
6
+ *
7
+ * `size` is the target's footprint: `sm` sits inline in a form row beside other
8
+ * fields, `md` is a panel of its own (an image manager's "add photos" tile).
9
+ */
10
+ declare const fileDropzoneVariants: (props?: ({
11
+ size?: "sm" | "md" | null | undefined;
12
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
13
+ export type FileDropzoneSize = NonNullable<VariantProps<typeof fileDropzoneVariants>["size"]>;
14
+ export type FileDropzoneRejection = {
15
+ file: File;
16
+ /** `type` — not in `accept`; `size` — over `maxSize`. */
17
+ reason: "type" | "size";
18
+ };
19
+ export type FileDropzoneProps = Omit<React.HTMLAttributes<HTMLDivElement>, "onDrop" | "children"> & VariantProps<typeof fileDropzoneVariants> & {
20
+ /** Called with the accepted files from a drop or the file picker. Never called with an empty list. */
21
+ onFilesChange: (files: File[]) => void;
22
+ /** Called with files that failed `accept` or `maxSize`, when any did. */
23
+ onFilesRejected?: (rejections: FileDropzoneRejection[]) => void;
24
+ /** Same syntax as the native `accept` attribute: `"image/*"`, `".pdf,.docx"`. Also checked on drop. */
25
+ accept?: string;
26
+ /** Allow more than one file per drop or pick. */
27
+ multiple?: boolean;
28
+ /** Largest accepted file, in bytes. */
29
+ maxSize?: number;
30
+ disabled?: boolean;
31
+ /** Shows a busy state (e.g. while uploading) and blocks new files without disabling the control. */
32
+ pending?: boolean;
33
+ /** The main line. Default: "Drop files here or click to browse". */
34
+ label?: React.ReactNode;
35
+ /** A secondary line, e.g. accepted types and size limit. */
36
+ hint?: React.ReactNode;
37
+ /** Replaces the default upload icon. Pass `null` for none. */
38
+ icon?: React.ReactNode;
39
+ /** Input name, for native form submission of the picked files. */
40
+ name?: string;
41
+ };
42
+ /**
43
+ * A drop target for files that doubles as a file-picker button — product
44
+ * photos, attachments, imports.
45
+ *
46
+ * The whole surface is one control: `role="button"`, a tab stop, and `Enter`
47
+ * or `Space` opens the native picker, the same as a click. Dragging files over
48
+ * it sets `data-state="active"`, which the recipe styles. The hidden `<input
49
+ * type="file">` is the real picker, so `accept`, `multiple` and `name` behave
50
+ * natively; `accept` and `maxSize` are also enforced on drop, where the
51
+ * browser does not, and failures go to `onFilesRejected` rather than being
52
+ * silently dropped. Without `multiple`, a drop of several files keeps the first.
53
+ *
54
+ * `pending` shows a spinner-free busy state (`aria-busy`) and ignores new
55
+ * files while an upload runs, without leaving the tab order — the same split
56
+ * Switch makes between `pending` and `disabled`.
57
+ *
58
+ * The component holds no file list of its own: it reports files and the
59
+ * caller decides what to show, so there is no value/defaultValue triad.
60
+ */
61
+ export declare const FileDropzone: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLDivElement>, "children" | "onDrop"> & VariantProps<(props?: ({
62
+ size?: "sm" | "md" | null | undefined;
63
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string> & {
64
+ /** Called with the accepted files from a drop or the file picker. Never called with an empty list. */
65
+ onFilesChange: (files: File[]) => void;
66
+ /** Called with files that failed `accept` or `maxSize`, when any did. */
67
+ onFilesRejected?: (rejections: FileDropzoneRejection[]) => void;
68
+ /** Same syntax as the native `accept` attribute: `"image/*"`, `".pdf,.docx"`. Also checked on drop. */
69
+ accept?: string;
70
+ /** Allow more than one file per drop or pick. */
71
+ multiple?: boolean;
72
+ /** Largest accepted file, in bytes. */
73
+ maxSize?: number;
74
+ disabled?: boolean;
75
+ /** Shows a busy state (e.g. while uploading) and blocks new files without disabling the control. */
76
+ pending?: boolean;
77
+ /** The main line. Default: "Drop files here or click to browse". */
78
+ label?: React.ReactNode;
79
+ /** A secondary line, e.g. accepted types and size limit. */
80
+ hint?: React.ReactNode;
81
+ /** Replaces the default upload icon. Pass `null` for none. */
82
+ icon?: React.ReactNode;
83
+ /** Input name, for native form submission of the picked files. */
84
+ name?: string;
85
+ } & React.RefAttributes<HTMLDivElement>>;
86
+ export { fileDropzoneVariants };
87
+ //# sourceMappingURL=FileDropzone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileDropzone.d.ts","sourceRoot":"","sources":["../../../src/components/FileDropzone/FileDropzone.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;;;;GAMG;AACH,QAAA,MAAM,oBAAoB;;8EAczB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC,YAAY,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAE9F,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,IAAI,CAAC;IACX,yDAAyD;IACzD,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,GAC/F,YAAY,CAAC,OAAO,oBAAoB,CAAC,GAAG;IAC1C,sGAAsG;IACtG,aAAa,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IACvC,yEAAyE;IACzE,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,qBAAqB,EAAE,KAAK,IAAI,CAAC;IAChE,uGAAuG;IACvG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oGAAoG;IACpG,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oEAAoE;IACpE,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,kEAAkE;IAClE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAkBJ;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,YAAY;;;IA1DrB,sGAAsG;mBACvF,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI;IACtC,yEAAyE;sBACvD,CAAC,UAAU,EAAE,qBAAqB,EAAE,KAAK,IAAI;IAC/D,uGAAuG;aAC9F,MAAM;IACf,iDAAiD;eACtC,OAAO;IAClB,uCAAuC;cAC7B,MAAM;eACL,OAAO;IAClB,oGAAoG;cAC1F,OAAO;IACjB,oEAAoE;YAC5D,KAAK,CAAC,SAAS;IACvB,4DAA4D;WACrD,KAAK,CAAC,SAAS;IACtB,8DAA8D;WACvD,KAAK,CAAC,SAAS;IACtB,kEAAkE;WAC3D,MAAM;wCAgLhB,CAAC;AAGF,OAAO,EAAE,oBAAoB,EAAE,CAAC"}