@epilot/spark-ui 1.0.0-alpha.4 → 1.0.0-alpha.6

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 (201) hide show
  1. package/dist/accent-colors-Ch2J0EEY.js +13 -0
  2. package/dist/accent-colors-Ch2J0EEY.js.map +1 -0
  3. package/dist/accent-colors-CjHCf8fH.cjs +18 -0
  4. package/dist/accent-colors-CjHCf8fH.cjs.map +1 -0
  5. package/dist/components/accordion.cjs +3 -3
  6. package/dist/components/accordion.cjs.map +1 -1
  7. package/dist/components/accordion.d.ts +1 -1
  8. package/dist/components/accordion.js +3 -3
  9. package/dist/components/accordion.js.map +1 -1
  10. package/dist/components/attachment.d.cts +1 -1
  11. package/dist/components/attachment.d.ts +1 -1
  12. package/dist/components/badge.cjs +12 -7
  13. package/dist/components/badge.cjs.map +1 -1
  14. package/dist/components/badge.d.cts +5 -1
  15. package/dist/components/badge.d.ts +5 -1
  16. package/dist/components/badge.js +12 -7
  17. package/dist/components/badge.js.map +1 -1
  18. package/dist/components/bar-chart.cjs +12 -9
  19. package/dist/components/bar-chart.cjs.map +1 -1
  20. package/dist/components/bar-chart.js +12 -9
  21. package/dist/components/bar-chart.js.map +1 -1
  22. package/dist/components/battery-progress-row.cjs +10 -16
  23. package/dist/components/battery-progress-row.cjs.map +1 -1
  24. package/dist/components/battery-progress-row.d.cts +1 -1
  25. package/dist/components/battery-progress-row.d.ts +2 -2
  26. package/dist/components/battery-progress-row.js +10 -16
  27. package/dist/components/battery-progress-row.js.map +1 -1
  28. package/dist/components/breadcrumbs.cjs +1 -1
  29. package/dist/components/breadcrumbs.cjs.map +1 -1
  30. package/dist/components/breadcrumbs.js +1 -1
  31. package/dist/components/breadcrumbs.js.map +1 -1
  32. package/dist/components/bubble.d.cts +1 -1
  33. package/dist/components/bubble.d.ts +1 -1
  34. package/dist/components/button.cjs +5 -2
  35. package/dist/components/button.cjs.map +1 -1
  36. package/dist/components/button.d.cts +7 -6
  37. package/dist/components/button.d.ts +7 -6
  38. package/dist/components/button.js +5 -2
  39. package/dist/components/button.js.map +1 -1
  40. package/dist/components/calendar.cjs +3 -2
  41. package/dist/components/calendar.cjs.map +1 -1
  42. package/dist/components/calendar.d.cts +5 -1
  43. package/dist/components/calendar.d.ts +5 -1
  44. package/dist/components/calendar.js +3 -2
  45. package/dist/components/calendar.js.map +1 -1
  46. package/dist/components/callout.d.cts +1 -1
  47. package/dist/components/callout.d.ts +1 -1
  48. package/dist/components/card.d.cts +1 -1
  49. package/dist/components/card.d.ts +1 -1
  50. package/dist/components/chart.cjs +1 -1
  51. package/dist/components/chart.cjs.map +1 -1
  52. package/dist/components/chart.js +1 -1
  53. package/dist/components/chart.js.map +1 -1
  54. package/dist/components/checkbox.cjs +30 -23
  55. package/dist/components/checkbox.cjs.map +1 -1
  56. package/dist/components/checkbox.d.cts +5 -1
  57. package/dist/components/checkbox.d.ts +5 -1
  58. package/dist/components/checkbox.js +30 -23
  59. package/dist/components/checkbox.js.map +1 -1
  60. package/dist/components/circular-gauge.d.ts +1 -1
  61. package/dist/components/day-of-week-picker.cjs +2 -2
  62. package/dist/components/day-of-week-picker.cjs.map +1 -1
  63. package/dist/components/day-of-week-picker.js +2 -2
  64. package/dist/components/day-of-week-picker.js.map +1 -1
  65. package/dist/components/device-card.d.ts +1 -1
  66. package/dist/components/donut-chart.cjs +3 -3
  67. package/dist/components/donut-chart.cjs.map +1 -1
  68. package/dist/components/donut-chart.js +3 -3
  69. package/dist/components/donut-chart.js.map +1 -1
  70. package/dist/components/energy-bar-chart.d.ts +1 -1
  71. package/dist/components/energy-breakdown.cjs +1 -1
  72. package/dist/components/energy-breakdown.cjs.map +1 -1
  73. package/dist/components/energy-breakdown.js +1 -1
  74. package/dist/components/energy-breakdown.js.map +1 -1
  75. package/dist/components/feed-in-hero.d.ts +1 -1
  76. package/dist/components/field.cjs +1 -1
  77. package/dist/components/field.d.cts +1 -1
  78. package/dist/components/field.d.ts +1 -1
  79. package/dist/components/field.js +1 -1
  80. package/dist/components/info-block.d.cts +1 -1
  81. package/dist/components/info-block.d.ts +1 -1
  82. package/dist/components/input-group.cjs +1 -1
  83. package/dist/components/input-group.js +1 -1
  84. package/dist/components/input-otp.cjs +1 -1
  85. package/dist/components/input-otp.js +1 -1
  86. package/dist/components/input.cjs +1 -1
  87. package/dist/components/input.d.cts +1 -1
  88. package/dist/components/input.d.ts +1 -1
  89. package/dist/components/input.js +1 -1
  90. package/dist/components/line-chart.cjs +11 -9
  91. package/dist/components/line-chart.cjs.map +1 -1
  92. package/dist/components/line-chart.js +11 -9
  93. package/dist/components/line-chart.js.map +1 -1
  94. package/dist/components/list.cjs +1 -1
  95. package/dist/components/list.cjs.map +1 -1
  96. package/dist/components/list.js +1 -1
  97. package/dist/components/list.js.map +1 -1
  98. package/dist/components/metering-row.d.ts +1 -1
  99. package/dist/components/money-saved-block.cjs +1 -1
  100. package/dist/components/money-saved-block.cjs.map +1 -1
  101. package/dist/components/money-saved-block.js +1 -1
  102. package/dist/components/money-saved-block.js.map +1 -1
  103. package/dist/components/number-flow.d.ts +1 -1
  104. package/dist/components/power-history-chart.cjs +9 -7
  105. package/dist/components/power-history-chart.cjs.map +1 -1
  106. package/dist/components/power-history-chart.js +9 -7
  107. package/dist/components/power-history-chart.js.map +1 -1
  108. package/dist/components/power-history.cjs +1 -1
  109. package/dist/components/power-history.cjs.map +1 -1
  110. package/dist/components/power-history.js +1 -1
  111. package/dist/components/power-history.js.map +1 -1
  112. package/dist/components/power-network.cjs +36 -11
  113. package/dist/components/power-network.cjs.map +1 -1
  114. package/dist/components/power-network.js +36 -11
  115. package/dist/components/power-network.js.map +1 -1
  116. package/dist/components/progress.cjs +1 -1
  117. package/dist/components/progress.cjs.map +1 -1
  118. package/dist/components/progress.js +1 -1
  119. package/dist/components/progress.js.map +1 -1
  120. package/dist/components/radio-card-group.cjs +26 -1
  121. package/dist/components/radio-card-group.cjs.map +1 -1
  122. package/dist/components/radio-card-group.js +26 -1
  123. package/dist/components/radio-card-group.js.map +1 -1
  124. package/dist/components/radio.cjs +11 -4
  125. package/dist/components/radio.cjs.map +1 -1
  126. package/dist/components/radio.d.cts +15 -3
  127. package/dist/components/radio.d.ts +15 -3
  128. package/dist/components/radio.js +11 -4
  129. package/dist/components/radio.js.map +1 -1
  130. package/dist/components/sankey-chart.cjs +4 -4
  131. package/dist/components/sankey-chart.cjs.map +1 -1
  132. package/dist/components/sankey-chart.d.ts +1 -1
  133. package/dist/components/sankey-chart.js +4 -4
  134. package/dist/components/sankey-chart.js.map +1 -1
  135. package/dist/components/schedule-list.cjs +3 -3
  136. package/dist/components/schedule-list.cjs.map +1 -1
  137. package/dist/components/schedule-list.js +3 -3
  138. package/dist/components/schedule-list.js.map +1 -1
  139. package/dist/components/segmented-control.cjs +2 -2
  140. package/dist/components/segmented-control.cjs.map +1 -1
  141. package/dist/components/segmented-control.d.cts +1 -1
  142. package/dist/components/segmented-control.d.ts +1 -1
  143. package/dist/components/segmented-control.js +2 -2
  144. package/dist/components/segmented-control.js.map +1 -1
  145. package/dist/components/select.cjs +1 -1
  146. package/dist/components/select.d.cts +1 -1
  147. package/dist/components/select.d.ts +1 -1
  148. package/dist/components/select.js +1 -1
  149. package/dist/components/series-legend.cjs +1 -1
  150. package/dist/components/series-legend.cjs.map +1 -1
  151. package/dist/components/series-legend.js +1 -1
  152. package/dist/components/series-legend.js.map +1 -1
  153. package/dist/components/slider.cjs +6 -19
  154. package/dist/components/slider.cjs.map +1 -1
  155. package/dist/components/slider.d.cts +0 -13
  156. package/dist/components/slider.d.ts +0 -13
  157. package/dist/components/slider.js +6 -19
  158. package/dist/components/slider.js.map +1 -1
  159. package/dist/components/stepper.cjs +2 -2
  160. package/dist/components/stepper.cjs.map +1 -1
  161. package/dist/components/stepper.js +2 -2
  162. package/dist/components/stepper.js.map +1 -1
  163. package/dist/components/switch.cjs +8 -3
  164. package/dist/components/switch.cjs.map +1 -1
  165. package/dist/components/switch.d.cts +9 -4
  166. package/dist/components/switch.d.ts +9 -4
  167. package/dist/components/switch.js +8 -3
  168. package/dist/components/switch.js.map +1 -1
  169. package/dist/components/tabs.cjs +4 -4
  170. package/dist/components/tabs.cjs.map +1 -1
  171. package/dist/components/tabs.js +4 -4
  172. package/dist/components/tabs.js.map +1 -1
  173. package/dist/components/theme.cjs +1 -1
  174. package/dist/components/theme.d.cts +1 -1
  175. package/dist/components/theme.d.ts +1 -1
  176. package/dist/components/theme.js +1 -1
  177. package/dist/components/time-picker.cjs +1 -1
  178. package/dist/components/time-picker.cjs.map +1 -1
  179. package/dist/components/time-picker.js +1 -1
  180. package/dist/components/time-picker.js.map +1 -1
  181. package/dist/hooks/use-reduced-motion.cjs +22 -0
  182. package/dist/hooks/use-reduced-motion.cjs.map +1 -0
  183. package/dist/hooks/use-reduced-motion.d.cts +7 -0
  184. package/dist/hooks/use-reduced-motion.d.ts +7 -0
  185. package/dist/hooks/use-reduced-motion.js +20 -0
  186. package/dist/hooks/use-reduced-motion.js.map +1 -0
  187. package/dist/{input-box-variants-Dr1K7uYE.js → input-box-variants-DcajYXvo.js} +1 -1
  188. package/dist/{input-box-variants-Dr1K7uYE.js.map → input-box-variants-DcajYXvo.js.map} +1 -1
  189. package/dist/{input-box-variants-BMDdwvqg.cjs → input-box-variants-ZCtgs-1S.cjs} +1 -1
  190. package/dist/{input-box-variants-BMDdwvqg.cjs.map → input-box-variants-ZCtgs-1S.cjs.map} +1 -1
  191. package/dist/{number-flow-DSbucQ_K.d.ts → number-flow-D9zsxH0-.d.ts} +1 -1
  192. package/dist/styles/index.css +4 -2
  193. package/dist/styles/spark-default.css +78 -0
  194. package/dist/{theme-C19BbKfO.js → theme-8PDO9E0S.js} +1 -1
  195. package/dist/{theme-C19BbKfO.js.map → theme-8PDO9E0S.js.map} +1 -1
  196. package/dist/{theme-CfFWrMEF.cjs → theme-ClRJhexF.cjs} +1 -1
  197. package/dist/{theme-CfFWrMEF.cjs.map → theme-ClRJhexF.cjs.map} +1 -1
  198. package/dist/{theme-types-DoROIXpi.d.ts → theme-types-BDdoRxXa.d.ts} +2 -3
  199. package/dist/{theme-types-r20EJfEC.d.cts → theme-types-BwSJKdsB.d.cts} +2 -3
  200. package/dist/{tones-DyCkL71h.d.ts → tones-PXJGlSpe.d.ts} +1 -1
  201. package/package.json +1 -1
@@ -0,0 +1,13 @@
1
+ "use client";
2
+ //#region src/lib/accent-colors.ts
3
+ const accentByColor = {
4
+ accent: void 0,
5
+ neutral: "gray",
6
+ success: "green",
7
+ warning: "orange",
8
+ danger: "red"
9
+ };
10
+ //#endregion
11
+ export { accentByColor as t };
12
+
13
+ //# sourceMappingURL=accent-colors-Ch2J0EEY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accent-colors-Ch2J0EEY.js","names":[],"sources":["../src/lib/accent-colors.ts"],"sourcesContent":["export type SparkAccentColor =\n | 'accent'\n | 'neutral'\n | 'success'\n | 'warning'\n | 'danger'\n\nexport const accentByColor: Record<\n SparkAccentColor,\n 'gray' | 'red' | 'green' | 'orange' | undefined\n> = {\n accent: undefined,\n neutral: 'gray',\n success: 'green',\n warning: 'orange',\n danger: 'red',\n}\n"],"mappings":";;AAOA,MAAa,gBAGT;CACF,QAAQ,KAAA;CACR,SAAS;CACT,SAAS;CACT,SAAS;CACT,QAAQ;CACT"}
@@ -0,0 +1,18 @@
1
+ "use client";
2
+ //#region src/lib/accent-colors.ts
3
+ const accentByColor = {
4
+ accent: void 0,
5
+ neutral: "gray",
6
+ success: "green",
7
+ warning: "orange",
8
+ danger: "red"
9
+ };
10
+ //#endregion
11
+ Object.defineProperty(exports, "accentByColor", {
12
+ enumerable: true,
13
+ get: function() {
14
+ return accentByColor;
15
+ }
16
+ });
17
+
18
+ //# sourceMappingURL=accent-colors-CjHCf8fH.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accent-colors-CjHCf8fH.cjs","names":[],"sources":["../src/lib/accent-colors.ts"],"sourcesContent":["export type SparkAccentColor =\n | 'accent'\n | 'neutral'\n | 'success'\n | 'warning'\n | 'danger'\n\nexport const accentByColor: Record<\n SparkAccentColor,\n 'gray' | 'red' | 'green' | 'orange' | undefined\n> = {\n accent: undefined,\n neutral: 'gray',\n success: 'green',\n warning: 'orange',\n danger: 'red',\n}\n"],"mappings":";;AAOA,MAAa,gBAGT;CACF,QAAQ,KAAA;CACR,SAAS;CACT,SAAS;CACT,SAAS;CACT,QAAQ;CACT"}
@@ -4,8 +4,8 @@ const require_chunk = require("../chunk-aJGBMT86.cjs");
4
4
  const require_icons_material_symbol = require("../icons/material-symbol.cjs");
5
5
  let react = require("react");
6
6
  react = require_chunk.__toESM(react);
7
- let _base_ui_react_accordion = require("@base-ui/react/accordion");
8
7
  let react_jsx_runtime = require("react/jsx-runtime");
8
+ let _base_ui_react_accordion = require("@base-ui/react/accordion");
9
9
  let cnfast = require("cnfast");
10
10
  //#region src/components/accordion.tsx
11
11
  function Accordion({ className, variant = "soft", ...props }) {
@@ -19,7 +19,7 @@ function Accordion({ className, variant = "soft", ...props }) {
19
19
  function AccordionItem({ className, ...props }) {
20
20
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react_accordion.Accordion.Item, {
21
21
  "data-slot": "accordion-item",
22
- className: (0, cnfast.cn)("group-data-[variant=soft]/accordion:rounded-md group-data-[variant=soft]/accordion:bg-gray-a2", "group-data-[variant=surface]/accordion:bg-gray-2", "group-data-[variant=surface]/accordion:border-x group-data-[variant=surface]/accordion:border-t group-data-[variant=surface]/accordion:border-gray-a6 group-data-[variant=surface]/accordion:first:rounded-t-md group-data-[variant=surface]/accordion:last:rounded-b-md group-data-[variant=surface]/accordion:last:border-b", "group-data-[variant=outline]/accordion:border-x group-data-[variant=outline]/accordion:border-t group-data-[variant=outline]/accordion:border-gray-a6 group-data-[variant=outline]/accordion:first:rounded-t-md group-data-[variant=outline]/accordion:last:rounded-b-md group-data-[variant=outline]/accordion:last:border-b", className),
22
+ className: (0, cnfast.cn)("group-data-[variant=soft]/accordion:rounded-md group-data-[variant=soft]/accordion:bg-gray-a2 dark:group-data-[variant=soft]/accordion:bg-gray-a3", "group-data-[variant=surface]/accordion:bg-gray-2", "group-data-[variant=surface]/accordion:border-x group-data-[variant=surface]/accordion:border-t group-data-[variant=surface]/accordion:border-gray-a6 group-data-[variant=surface]/accordion:first:rounded-t-md group-data-[variant=surface]/accordion:last:rounded-b-md group-data-[variant=surface]/accordion:last:border-b", "group-data-[variant=outline]/accordion:border-x group-data-[variant=outline]/accordion:border-t group-data-[variant=outline]/accordion:border-gray-a6 group-data-[variant=outline]/accordion:first:rounded-t-md group-data-[variant=outline]/accordion:last:rounded-b-md group-data-[variant=outline]/accordion:last:border-b", className),
23
23
  ...props
24
24
  });
25
25
  }
@@ -28,7 +28,7 @@ function AccordionTrigger({ className, children, ...props }) {
28
28
  className: "flex",
29
29
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_base_ui_react_accordion.Accordion.Trigger, {
30
30
  "data-slot": "accordion-trigger",
31
- className: (0, cnfast.cn)("flex min-h-[2.75rem] flex-1 cursor-pointer items-center justify-between gap-4 py-3 text-left font-medium text-gray-12", "focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden", "disabled:pointer-events-none disabled:opacity-50", "group-data-[variant=outline]/accordion:px-4 group-data-[variant=soft]/accordion:px-4 group-data-[variant=surface]/accordion:px-4", "[&[data-panel-open]>:last-child]:rotate-180", className),
31
+ className: (0, cnfast.cn)("flex min-h-[2.75rem] flex-1 cursor-pointer items-center justify-between gap-4 py-3 text-left font-medium text-gray-12", "rounded-md focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden", "disabled:pointer-events-none disabled:opacity-50", "group-data-[variant=outline]/accordion:px-4 group-data-[variant=soft]/accordion:px-4 group-data-[variant=surface]/accordion:px-4", "[&[data-panel-open]>:last-child]:rotate-180", className),
32
32
  ...props,
33
33
  children: [children, /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_icons_material_symbol.MaterialSymbol, {
34
34
  className: "shrink-0 text-gray-11 transition-transform duration-200 motion-reduce:transition-none",
@@ -1 +1 @@
1
- {"version":3,"file":"accordion.cjs","names":["AccordionPrimitive","MaterialSymbol"],"sources":["../../src/components/accordion.tsx"],"sourcesContent":["import { Accordion as AccordionPrimitive } from '@base-ui/react/accordion'\nimport * as React from 'react'\nimport { MaterialSymbol } from '../icons/material-symbol'\nimport { cn } from '../utils/cn'\n\ntype AccordionVariant = 'ghost' | 'soft' | 'surface' | 'outline'\n\ntype AccordionProps = React.ComponentProps<typeof AccordionPrimitive.Root> & {\n /**\n * Container chrome (neutral):\n * - `ghost` — no border/fill, just the trigger + spacing;\n * - `soft` (default) — separate soft-tinted rounded cards, 2px gap between them;\n * - `surface` — items glued into one bordered panel with an opaque fill;\n * - `outline` — the same glued bordered panel, but no fill (transparent).\n * A `variant` prop, NOT the ambient `data-style` knob — that would cascade into\n * the panel content. Spacing + scaling still come from the ambient knobs.\n */\n variant?: AccordionVariant\n}\n\nfunction Accordion({ className, variant = 'soft', ...props }: AccordionProps) {\n return (\n <AccordionPrimitive.Root\n data-slot=\"accordion\"\n // group/accordion + data-variant drive every item/trigger's per-variant\n // chrome; soft stacks its separate cards with a gap (below).\n data-variant={variant}\n className={cn(\n 'group/accordion',\n // soft = separate cards → stack them with a small (2px) gap. surface/outline\n // glue their items into one bordered panel (default block, no gap).\n 'data-[variant=soft]:flex data-[variant=soft]:flex-col data-[variant=soft]:gap-0.5',\n className,\n )}\n {...props}\n />\n )\n}\n\ntype AccordionItemProps = React.ComponentProps<typeof AccordionPrimitive.Item>\n\nfunction AccordionItem({ className, ...props }: AccordionItemProps) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\n // NEUTRAL container chrome per the accordion variant (group/accordion) — mirrors\n // ListItem's group-data-[variant=X]/list: block (list.tsx); keep both in sync if\n // this pattern changes. ghost carries no chrome. Radius = rounded-md (tracks the\n // radius knob but never goes fully round). No text underline / per-item separator\n // anymore.\n\n // soft (default): each item is its own borderless soft-tinted rounded card;\n // the root separates them with a 2px gap (the gap IS the separator).\n 'group-data-[variant=soft]/accordion:rounded-md group-data-[variant=soft]/accordion:bg-gray-a2',\n // surface + outline share ONE glued-panel frame: full thin border around the\n // stack (sides on all, top on each as divider/frame, bottom on the last),\n // first/last round the outer corners. surface fills it (opaque bg); outline\n // leaves it transparent.\n 'group-data-[variant=surface]/accordion:bg-gray-2',\n 'group-data-[variant=surface]/accordion:border-x group-data-[variant=surface]/accordion:border-t group-data-[variant=surface]/accordion:border-gray-a6 group-data-[variant=surface]/accordion:first:rounded-t-md group-data-[variant=surface]/accordion:last:rounded-b-md group-data-[variant=surface]/accordion:last:border-b',\n 'group-data-[variant=outline]/accordion:border-x group-data-[variant=outline]/accordion:border-t group-data-[variant=outline]/accordion:border-gray-a6 group-data-[variant=outline]/accordion:first:rounded-t-md group-data-[variant=outline]/accordion:last:rounded-b-md group-data-[variant=outline]/accordion:last:border-b',\n className,\n )}\n {...props}\n />\n )\n}\n\ntype AccordionTriggerProps = React.ComponentProps<\n typeof AccordionPrimitive.Trigger\n>\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: AccordionTriggerProps) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n // WCAG 2.5.5: min 44px touch target — a HARD floor (min-h-[2.75rem], not\n // min-h-11, which scales below 44px under dense/scaled knobs). py/text still\n // scale with the spacing + scaling knobs, growing the target past 44px.\n // No text underline (was hover:underline).\n 'flex min-h-[2.75rem] flex-1 cursor-pointer items-center justify-between gap-4 py-3 text-left font-medium text-gray-12',\n // default focus style (matches Button): 2px ring + 2px offset, accent colour\n 'focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden',\n 'disabled:pointer-events-none disabled:opacity-50',\n // horizontal padding sits INSIDE the chrome (soft/surface/outline); ghost\n // keeps the label flush (\"just plain text and spacing\").\n 'group-data-[variant=outline]/accordion:px-4 group-data-[variant=soft]/accordion:px-4 group-data-[variant=surface]/accordion:px-4',\n // chevron (last child) flips when open\n '[&[data-panel-open]>:last-child]:rotate-180',\n className,\n )}\n {...props}\n >\n {children}\n <MaterialSymbol\n className=\"shrink-0 text-gray-11 transition-transform duration-200 motion-reduce:transition-none\"\n name=\"expand_more\"\n />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\ntype AccordionContentProps = React.ComponentProps<\n typeof AccordionPrimitive.Panel\n>\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: AccordionContentProps) {\n return (\n <AccordionPrimitive.Panel\n data-slot=\"accordion-content\"\n // Base UI sets --accordion-panel-height + starting/ending styles on the\n // panel; the height transition replaces the radix keyframe animation.\n className=\"h-(--accordion-panel-height) overflow-hidden text-sm text-gray-11 transition-[height] duration-200 ease-out data-ending-style:h-0 data-starting-style:h-0 motion-reduce:transition-none\"\n {...props}\n >\n {/* padding aligns with the trigger: flush for ghost, inside the chrome otherwise */}\n <div\n className={cn(\n 'pb-4 group-data-[variant=outline]/accordion:px-4 group-data-[variant=soft]/accordion:px-4 group-data-[variant=surface]/accordion:px-4',\n className,\n )}\n >\n {children}\n </div>\n </AccordionPrimitive.Panel>\n )\n}\n\nexport { Accordion, AccordionContent, AccordionItem, AccordionTrigger }\nexport type { AccordionProps, AccordionVariant }\n"],"mappings":";;;;;;;;;;AAoBA,SAAS,UAAU,EAAE,WAAW,UAAU,QAAQ,GAAG,SAAyB;AAC5E,QACE,iBAAA,GAAA,kBAAA,KAACA,yBAAAA,UAAmB,MAApB;EACE,aAAU;EAGV,gBAAc;EACd,YAAA,GAAA,OAAA,IACE,mBAGA,qFACA,UACD;EACD,GAAI;EACJ,CAAA;;AAMN,SAAS,cAAc,EAAE,WAAW,GAAG,SAA6B;AAClE,QACE,iBAAA,GAAA,kBAAA,KAACA,yBAAAA,UAAmB,MAApB;EACE,aAAU;EACV,YAAA,GAAA,OAAA,IASE,iGAKA,oDACA,iUACA,iUACA,UACD;EACD,GAAI;EACJ,CAAA;;AAQN,SAAS,iBAAiB,EACxB,WACA,UACA,GAAG,SACqB;AACxB,QACE,iBAAA,GAAA,kBAAA,KAACA,yBAAAA,UAAmB,QAApB;EAA2B,WAAU;YACnC,iBAAA,GAAA,kBAAA,MAACA,yBAAAA,UAAmB,SAApB;GACE,aAAU;GACV,YAAA,GAAA,OAAA,IAKE,yHAEA,iFACA,oDAGA,oIAEA,+CACA,UACD;GACD,GAAI;aAlBN,CAoBG,UACD,iBAAA,GAAA,kBAAA,KAACC,8BAAAA,gBAAD;IACE,WAAU;IACV,MAAK;IACL,CAAA,CACyB;;EACH,CAAA;;AAQhC,SAAS,iBAAiB,EACxB,WACA,UACA,GAAG,SACqB;AACxB,QACE,iBAAA,GAAA,kBAAA,KAACD,yBAAAA,UAAmB,OAApB;EACE,aAAU;EAGV,WAAU;EACV,GAAI;YAGJ,iBAAA,GAAA,kBAAA,KAAC,OAAD;GACE,YAAA,GAAA,OAAA,IACE,yIACA,UACD;GAEA;GACG,CAAA;EACmB,CAAA"}
1
+ {"version":3,"file":"accordion.cjs","names":["AccordionPrimitive","MaterialSymbol"],"sources":["../../src/components/accordion.tsx"],"sourcesContent":["import { Accordion as AccordionPrimitive } from '@base-ui/react/accordion'\nimport * as React from 'react'\nimport { MaterialSymbol } from '../icons/material-symbol'\nimport { cn } from '../utils/cn'\n\ntype AccordionVariant = 'ghost' | 'soft' | 'surface' | 'outline'\n\ntype AccordionProps = React.ComponentProps<typeof AccordionPrimitive.Root> & {\n /**\n * Container chrome (neutral):\n * - `ghost` — no border/fill, just the trigger + spacing;\n * - `soft` (default) — separate soft-tinted rounded cards, 2px gap between them;\n * - `surface` — items glued into one bordered panel with an opaque fill;\n * - `outline` — the same glued bordered panel, but no fill (transparent).\n * A `variant` prop, NOT the ambient `data-style` knob — that would cascade into\n * the panel content. Spacing + scaling still come from the ambient knobs.\n */\n variant?: AccordionVariant\n}\n\nfunction Accordion({ className, variant = 'soft', ...props }: AccordionProps) {\n return (\n <AccordionPrimitive.Root\n data-slot=\"accordion\"\n // group/accordion + data-variant drive every item/trigger's per-variant\n // chrome; soft stacks its separate cards with a gap (below).\n data-variant={variant}\n className={cn(\n 'group/accordion',\n // soft = separate cards → stack them with a small (2px) gap. surface/outline\n // glue their items into one bordered panel (default block, no gap).\n 'data-[variant=soft]:flex data-[variant=soft]:flex-col data-[variant=soft]:gap-0.5',\n className,\n )}\n {...props}\n />\n )\n}\n\ntype AccordionItemProps = React.ComponentProps<typeof AccordionPrimitive.Item>\n\nfunction AccordionItem({ className, ...props }: AccordionItemProps) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\n // NEUTRAL container chrome per the accordion variant (group/accordion) — mirrors\n // ListItem's group-data-[variant=X]/list: block (list.tsx); keep both in sync if\n // this pattern changes. ghost carries no chrome. Radius = rounded-md (tracks the\n // radius knob but never goes fully round). No text underline / per-item separator\n // anymore.\n\n // soft (default): each item is its own borderless soft-tinted rounded card;\n // the root separates them with a 2px gap (the gap IS the separator).\n 'group-data-[variant=soft]/accordion:rounded-md group-data-[variant=soft]/accordion:bg-gray-a2 dark:group-data-[variant=soft]/accordion:bg-gray-a3',\n // surface + outline share ONE glued-panel frame: full thin border around the\n // stack (sides on all, top on each as divider/frame, bottom on the last),\n // first/last round the outer corners. surface fills it (opaque bg); outline\n // leaves it transparent.\n 'group-data-[variant=surface]/accordion:bg-gray-2',\n 'group-data-[variant=surface]/accordion:border-x group-data-[variant=surface]/accordion:border-t group-data-[variant=surface]/accordion:border-gray-a6 group-data-[variant=surface]/accordion:first:rounded-t-md group-data-[variant=surface]/accordion:last:rounded-b-md group-data-[variant=surface]/accordion:last:border-b',\n 'group-data-[variant=outline]/accordion:border-x group-data-[variant=outline]/accordion:border-t group-data-[variant=outline]/accordion:border-gray-a6 group-data-[variant=outline]/accordion:first:rounded-t-md group-data-[variant=outline]/accordion:last:rounded-b-md group-data-[variant=outline]/accordion:last:border-b',\n className,\n )}\n {...props}\n />\n )\n}\n\ntype AccordionTriggerProps = React.ComponentProps<\n typeof AccordionPrimitive.Trigger\n>\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: AccordionTriggerProps) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n // WCAG 2.5.5: min 44px touch target — a HARD floor (min-h-[2.75rem], not\n // min-h-11, which scales below 44px under dense/scaled knobs). py/text still\n // scale with the spacing + scaling knobs, growing the target past 44px.\n // No text underline (was hover:underline).\n 'flex min-h-[2.75rem] flex-1 cursor-pointer items-center justify-between gap-4 py-3 text-left font-medium text-gray-12',\n // default focus style (matches Button): 2px ring + 2px offset, accent colour\n 'rounded-md focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden',\n 'disabled:pointer-events-none disabled:opacity-50',\n // horizontal padding sits INSIDE the chrome (soft/surface/outline); ghost\n // keeps the label flush (\"just plain text and spacing\").\n 'group-data-[variant=outline]/accordion:px-4 group-data-[variant=soft]/accordion:px-4 group-data-[variant=surface]/accordion:px-4',\n // chevron (last child) flips when open\n '[&[data-panel-open]>:last-child]:rotate-180',\n className,\n )}\n {...props}\n >\n {children}\n <MaterialSymbol\n className=\"shrink-0 text-gray-11 transition-transform duration-200 motion-reduce:transition-none\"\n name=\"expand_more\"\n />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\ntype AccordionContentProps = React.ComponentProps<\n typeof AccordionPrimitive.Panel\n>\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: AccordionContentProps) {\n return (\n <AccordionPrimitive.Panel\n data-slot=\"accordion-content\"\n // Base UI sets --accordion-panel-height + starting/ending styles on the\n // panel; the height transition replaces the radix keyframe animation.\n className=\"h-(--accordion-panel-height) overflow-hidden text-sm text-gray-11 transition-[height] duration-200 ease-out data-ending-style:h-0 data-starting-style:h-0 motion-reduce:transition-none\"\n {...props}\n >\n {/* padding aligns with the trigger: flush for ghost, inside the chrome otherwise */}\n <div\n className={cn(\n 'pb-4 group-data-[variant=outline]/accordion:px-4 group-data-[variant=soft]/accordion:px-4 group-data-[variant=surface]/accordion:px-4',\n className,\n )}\n >\n {children}\n </div>\n </AccordionPrimitive.Panel>\n )\n}\n\nexport { Accordion, AccordionContent, AccordionItem, AccordionTrigger }\nexport type { AccordionProps, AccordionVariant }\n"],"mappings":";;;;;;;;;;AAoBA,SAAS,UAAU,EAAE,WAAW,UAAU,QAAQ,GAAG,SAAyB;AAC5E,QACE,iBAAA,GAAA,kBAAA,KAACA,yBAAAA,UAAmB,MAApB;EACE,aAAU;EAGV,gBAAc;EACd,YAAA,GAAA,OAAA,IACE,mBAGA,qFACA,UACD;EACD,GAAI;EACJ,CAAA;;AAMN,SAAS,cAAc,EAAE,WAAW,GAAG,SAA6B;AAClE,QACE,iBAAA,GAAA,kBAAA,KAACA,yBAAAA,UAAmB,MAApB;EACE,aAAU;EACV,YAAA,GAAA,OAAA,IASE,qJAKA,oDACA,iUACA,iUACA,UACD;EACD,GAAI;EACJ,CAAA;;AAQN,SAAS,iBAAiB,EACxB,WACA,UACA,GAAG,SACqB;AACxB,QACE,iBAAA,GAAA,kBAAA,KAACA,yBAAAA,UAAmB,QAApB;EAA2B,WAAU;YACnC,iBAAA,GAAA,kBAAA,MAACA,yBAAAA,UAAmB,SAApB;GACE,aAAU;GACV,YAAA,GAAA,OAAA,IAKE,yHAEA,4FACA,oDAGA,oIAEA,+CACA,UACD;GACD,GAAI;aAlBN,CAoBG,UACD,iBAAA,GAAA,kBAAA,KAACC,8BAAAA,gBAAD;IACE,WAAU;IACV,MAAK;IACL,CAAA,CACyB;;EACH,CAAA;;AAQhC,SAAS,iBAAiB,EACxB,WACA,UACA,GAAG,SACqB;AACxB,QACE,iBAAA,GAAA,kBAAA,KAACD,yBAAAA,UAAmB,OAApB;EACE,aAAU;EAGV,WAAU;EACV,GAAI;YAGJ,iBAAA,GAAA,kBAAA,KAAC,OAAD;GACE,YAAA,GAAA,OAAA,IACE,yIACA,UACD;GAEA;GACG,CAAA;EACmB,CAAA"}
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
 
3
3
  import * as React$1 from "react";
4
- import { Accordion as Accordion$1 } from "@base-ui/react/accordion";
5
4
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
5
+ import { Accordion as Accordion$1 } from "@base-ui/react/accordion";
6
6
 
7
7
  //#region src/components/accordion.d.ts
8
8
  type AccordionVariant = 'ghost' | 'soft' | 'surface' | 'outline';
@@ -2,8 +2,8 @@
2
2
  import { cn } from "../utils/cn.js";
3
3
  import { MaterialSymbol } from "../icons/material-symbol.js";
4
4
  import "react";
5
- import { Accordion as Accordion$1 } from "@base-ui/react/accordion";
6
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
+ import { Accordion as Accordion$1 } from "@base-ui/react/accordion";
7
7
  //#region src/components/accordion.tsx
8
8
  function Accordion({ className, variant = "soft", ...props }) {
9
9
  return /* @__PURE__ */ jsx(Accordion$1.Root, {
@@ -16,7 +16,7 @@ function Accordion({ className, variant = "soft", ...props }) {
16
16
  function AccordionItem({ className, ...props }) {
17
17
  return /* @__PURE__ */ jsx(Accordion$1.Item, {
18
18
  "data-slot": "accordion-item",
19
- className: cn("group-data-[variant=soft]/accordion:rounded-md group-data-[variant=soft]/accordion:bg-gray-a2", "group-data-[variant=surface]/accordion:bg-gray-2", "group-data-[variant=surface]/accordion:border-x group-data-[variant=surface]/accordion:border-t group-data-[variant=surface]/accordion:border-gray-a6 group-data-[variant=surface]/accordion:first:rounded-t-md group-data-[variant=surface]/accordion:last:rounded-b-md group-data-[variant=surface]/accordion:last:border-b", "group-data-[variant=outline]/accordion:border-x group-data-[variant=outline]/accordion:border-t group-data-[variant=outline]/accordion:border-gray-a6 group-data-[variant=outline]/accordion:first:rounded-t-md group-data-[variant=outline]/accordion:last:rounded-b-md group-data-[variant=outline]/accordion:last:border-b", className),
19
+ className: cn("group-data-[variant=soft]/accordion:rounded-md group-data-[variant=soft]/accordion:bg-gray-a2 dark:group-data-[variant=soft]/accordion:bg-gray-a3", "group-data-[variant=surface]/accordion:bg-gray-2", "group-data-[variant=surface]/accordion:border-x group-data-[variant=surface]/accordion:border-t group-data-[variant=surface]/accordion:border-gray-a6 group-data-[variant=surface]/accordion:first:rounded-t-md group-data-[variant=surface]/accordion:last:rounded-b-md group-data-[variant=surface]/accordion:last:border-b", "group-data-[variant=outline]/accordion:border-x group-data-[variant=outline]/accordion:border-t group-data-[variant=outline]/accordion:border-gray-a6 group-data-[variant=outline]/accordion:first:rounded-t-md group-data-[variant=outline]/accordion:last:rounded-b-md group-data-[variant=outline]/accordion:last:border-b", className),
20
20
  ...props
21
21
  });
22
22
  }
@@ -25,7 +25,7 @@ function AccordionTrigger({ className, children, ...props }) {
25
25
  className: "flex",
26
26
  children: /* @__PURE__ */ jsxs(Accordion$1.Trigger, {
27
27
  "data-slot": "accordion-trigger",
28
- className: cn("flex min-h-[2.75rem] flex-1 cursor-pointer items-center justify-between gap-4 py-3 text-left font-medium text-gray-12", "focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden", "disabled:pointer-events-none disabled:opacity-50", "group-data-[variant=outline]/accordion:px-4 group-data-[variant=soft]/accordion:px-4 group-data-[variant=surface]/accordion:px-4", "[&[data-panel-open]>:last-child]:rotate-180", className),
28
+ className: cn("flex min-h-[2.75rem] flex-1 cursor-pointer items-center justify-between gap-4 py-3 text-left font-medium text-gray-12", "rounded-md focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden", "disabled:pointer-events-none disabled:opacity-50", "group-data-[variant=outline]/accordion:px-4 group-data-[variant=soft]/accordion:px-4 group-data-[variant=surface]/accordion:px-4", "[&[data-panel-open]>:last-child]:rotate-180", className),
29
29
  ...props,
30
30
  children: [children, /* @__PURE__ */ jsx(MaterialSymbol, {
31
31
  className: "shrink-0 text-gray-11 transition-transform duration-200 motion-reduce:transition-none",
@@ -1 +1 @@
1
- {"version":3,"file":"accordion.js","names":["AccordionPrimitive"],"sources":["../../src/components/accordion.tsx"],"sourcesContent":["import { Accordion as AccordionPrimitive } from '@base-ui/react/accordion'\nimport * as React from 'react'\nimport { MaterialSymbol } from '../icons/material-symbol'\nimport { cn } from '../utils/cn'\n\ntype AccordionVariant = 'ghost' | 'soft' | 'surface' | 'outline'\n\ntype AccordionProps = React.ComponentProps<typeof AccordionPrimitive.Root> & {\n /**\n * Container chrome (neutral):\n * - `ghost` — no border/fill, just the trigger + spacing;\n * - `soft` (default) — separate soft-tinted rounded cards, 2px gap between them;\n * - `surface` — items glued into one bordered panel with an opaque fill;\n * - `outline` — the same glued bordered panel, but no fill (transparent).\n * A `variant` prop, NOT the ambient `data-style` knob — that would cascade into\n * the panel content. Spacing + scaling still come from the ambient knobs.\n */\n variant?: AccordionVariant\n}\n\nfunction Accordion({ className, variant = 'soft', ...props }: AccordionProps) {\n return (\n <AccordionPrimitive.Root\n data-slot=\"accordion\"\n // group/accordion + data-variant drive every item/trigger's per-variant\n // chrome; soft stacks its separate cards with a gap (below).\n data-variant={variant}\n className={cn(\n 'group/accordion',\n // soft = separate cards → stack them with a small (2px) gap. surface/outline\n // glue their items into one bordered panel (default block, no gap).\n 'data-[variant=soft]:flex data-[variant=soft]:flex-col data-[variant=soft]:gap-0.5',\n className,\n )}\n {...props}\n />\n )\n}\n\ntype AccordionItemProps = React.ComponentProps<typeof AccordionPrimitive.Item>\n\nfunction AccordionItem({ className, ...props }: AccordionItemProps) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\n // NEUTRAL container chrome per the accordion variant (group/accordion) — mirrors\n // ListItem's group-data-[variant=X]/list: block (list.tsx); keep both in sync if\n // this pattern changes. ghost carries no chrome. Radius = rounded-md (tracks the\n // radius knob but never goes fully round). No text underline / per-item separator\n // anymore.\n\n // soft (default): each item is its own borderless soft-tinted rounded card;\n // the root separates them with a 2px gap (the gap IS the separator).\n 'group-data-[variant=soft]/accordion:rounded-md group-data-[variant=soft]/accordion:bg-gray-a2',\n // surface + outline share ONE glued-panel frame: full thin border around the\n // stack (sides on all, top on each as divider/frame, bottom on the last),\n // first/last round the outer corners. surface fills it (opaque bg); outline\n // leaves it transparent.\n 'group-data-[variant=surface]/accordion:bg-gray-2',\n 'group-data-[variant=surface]/accordion:border-x group-data-[variant=surface]/accordion:border-t group-data-[variant=surface]/accordion:border-gray-a6 group-data-[variant=surface]/accordion:first:rounded-t-md group-data-[variant=surface]/accordion:last:rounded-b-md group-data-[variant=surface]/accordion:last:border-b',\n 'group-data-[variant=outline]/accordion:border-x group-data-[variant=outline]/accordion:border-t group-data-[variant=outline]/accordion:border-gray-a6 group-data-[variant=outline]/accordion:first:rounded-t-md group-data-[variant=outline]/accordion:last:rounded-b-md group-data-[variant=outline]/accordion:last:border-b',\n className,\n )}\n {...props}\n />\n )\n}\n\ntype AccordionTriggerProps = React.ComponentProps<\n typeof AccordionPrimitive.Trigger\n>\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: AccordionTriggerProps) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n // WCAG 2.5.5: min 44px touch target — a HARD floor (min-h-[2.75rem], not\n // min-h-11, which scales below 44px under dense/scaled knobs). py/text still\n // scale with the spacing + scaling knobs, growing the target past 44px.\n // No text underline (was hover:underline).\n 'flex min-h-[2.75rem] flex-1 cursor-pointer items-center justify-between gap-4 py-3 text-left font-medium text-gray-12',\n // default focus style (matches Button): 2px ring + 2px offset, accent colour\n 'focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden',\n 'disabled:pointer-events-none disabled:opacity-50',\n // horizontal padding sits INSIDE the chrome (soft/surface/outline); ghost\n // keeps the label flush (\"just plain text and spacing\").\n 'group-data-[variant=outline]/accordion:px-4 group-data-[variant=soft]/accordion:px-4 group-data-[variant=surface]/accordion:px-4',\n // chevron (last child) flips when open\n '[&[data-panel-open]>:last-child]:rotate-180',\n className,\n )}\n {...props}\n >\n {children}\n <MaterialSymbol\n className=\"shrink-0 text-gray-11 transition-transform duration-200 motion-reduce:transition-none\"\n name=\"expand_more\"\n />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\ntype AccordionContentProps = React.ComponentProps<\n typeof AccordionPrimitive.Panel\n>\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: AccordionContentProps) {\n return (\n <AccordionPrimitive.Panel\n data-slot=\"accordion-content\"\n // Base UI sets --accordion-panel-height + starting/ending styles on the\n // panel; the height transition replaces the radix keyframe animation.\n className=\"h-(--accordion-panel-height) overflow-hidden text-sm text-gray-11 transition-[height] duration-200 ease-out data-ending-style:h-0 data-starting-style:h-0 motion-reduce:transition-none\"\n {...props}\n >\n {/* padding aligns with the trigger: flush for ghost, inside the chrome otherwise */}\n <div\n className={cn(\n 'pb-4 group-data-[variant=outline]/accordion:px-4 group-data-[variant=soft]/accordion:px-4 group-data-[variant=surface]/accordion:px-4',\n className,\n )}\n >\n {children}\n </div>\n </AccordionPrimitive.Panel>\n )\n}\n\nexport { Accordion, AccordionContent, AccordionItem, AccordionTrigger }\nexport type { AccordionProps, AccordionVariant }\n"],"mappings":";;;;;;;AAoBA,SAAS,UAAU,EAAE,WAAW,UAAU,QAAQ,GAAG,SAAyB;AAC5E,QACE,oBAACA,YAAmB,MAApB;EACE,aAAU;EAGV,gBAAc;EACd,WAAW,GACT,mBAGA,qFACA,UACD;EACD,GAAI;EACJ,CAAA;;AAMN,SAAS,cAAc,EAAE,WAAW,GAAG,SAA6B;AAClE,QACE,oBAACA,YAAmB,MAApB;EACE,aAAU;EACV,WAAW,GAST,iGAKA,oDACA,iUACA,iUACA,UACD;EACD,GAAI;EACJ,CAAA;;AAQN,SAAS,iBAAiB,EACxB,WACA,UACA,GAAG,SACqB;AACxB,QACE,oBAACA,YAAmB,QAApB;EAA2B,WAAU;YACnC,qBAACA,YAAmB,SAApB;GACE,aAAU;GACV,WAAW,GAKT,yHAEA,iFACA,oDAGA,oIAEA,+CACA,UACD;GACD,GAAI;aAlBN,CAoBG,UACD,oBAAC,gBAAD;IACE,WAAU;IACV,MAAK;IACL,CAAA,CACyB;;EACH,CAAA;;AAQhC,SAAS,iBAAiB,EACxB,WACA,UACA,GAAG,SACqB;AACxB,QACE,oBAACA,YAAmB,OAApB;EACE,aAAU;EAGV,WAAU;EACV,GAAI;YAGJ,oBAAC,OAAD;GACE,WAAW,GACT,yIACA,UACD;GAEA;GACG,CAAA;EACmB,CAAA"}
1
+ {"version":3,"file":"accordion.js","names":["AccordionPrimitive"],"sources":["../../src/components/accordion.tsx"],"sourcesContent":["import { Accordion as AccordionPrimitive } from '@base-ui/react/accordion'\nimport * as React from 'react'\nimport { MaterialSymbol } from '../icons/material-symbol'\nimport { cn } from '../utils/cn'\n\ntype AccordionVariant = 'ghost' | 'soft' | 'surface' | 'outline'\n\ntype AccordionProps = React.ComponentProps<typeof AccordionPrimitive.Root> & {\n /**\n * Container chrome (neutral):\n * - `ghost` — no border/fill, just the trigger + spacing;\n * - `soft` (default) — separate soft-tinted rounded cards, 2px gap between them;\n * - `surface` — items glued into one bordered panel with an opaque fill;\n * - `outline` — the same glued bordered panel, but no fill (transparent).\n * A `variant` prop, NOT the ambient `data-style` knob — that would cascade into\n * the panel content. Spacing + scaling still come from the ambient knobs.\n */\n variant?: AccordionVariant\n}\n\nfunction Accordion({ className, variant = 'soft', ...props }: AccordionProps) {\n return (\n <AccordionPrimitive.Root\n data-slot=\"accordion\"\n // group/accordion + data-variant drive every item/trigger's per-variant\n // chrome; soft stacks its separate cards with a gap (below).\n data-variant={variant}\n className={cn(\n 'group/accordion',\n // soft = separate cards → stack them with a small (2px) gap. surface/outline\n // glue their items into one bordered panel (default block, no gap).\n 'data-[variant=soft]:flex data-[variant=soft]:flex-col data-[variant=soft]:gap-0.5',\n className,\n )}\n {...props}\n />\n )\n}\n\ntype AccordionItemProps = React.ComponentProps<typeof AccordionPrimitive.Item>\n\nfunction AccordionItem({ className, ...props }: AccordionItemProps) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\n // NEUTRAL container chrome per the accordion variant (group/accordion) — mirrors\n // ListItem's group-data-[variant=X]/list: block (list.tsx); keep both in sync if\n // this pattern changes. ghost carries no chrome. Radius = rounded-md (tracks the\n // radius knob but never goes fully round). No text underline / per-item separator\n // anymore.\n\n // soft (default): each item is its own borderless soft-tinted rounded card;\n // the root separates them with a 2px gap (the gap IS the separator).\n 'group-data-[variant=soft]/accordion:rounded-md group-data-[variant=soft]/accordion:bg-gray-a2 dark:group-data-[variant=soft]/accordion:bg-gray-a3',\n // surface + outline share ONE glued-panel frame: full thin border around the\n // stack (sides on all, top on each as divider/frame, bottom on the last),\n // first/last round the outer corners. surface fills it (opaque bg); outline\n // leaves it transparent.\n 'group-data-[variant=surface]/accordion:bg-gray-2',\n 'group-data-[variant=surface]/accordion:border-x group-data-[variant=surface]/accordion:border-t group-data-[variant=surface]/accordion:border-gray-a6 group-data-[variant=surface]/accordion:first:rounded-t-md group-data-[variant=surface]/accordion:last:rounded-b-md group-data-[variant=surface]/accordion:last:border-b',\n 'group-data-[variant=outline]/accordion:border-x group-data-[variant=outline]/accordion:border-t group-data-[variant=outline]/accordion:border-gray-a6 group-data-[variant=outline]/accordion:first:rounded-t-md group-data-[variant=outline]/accordion:last:rounded-b-md group-data-[variant=outline]/accordion:last:border-b',\n className,\n )}\n {...props}\n />\n )\n}\n\ntype AccordionTriggerProps = React.ComponentProps<\n typeof AccordionPrimitive.Trigger\n>\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: AccordionTriggerProps) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n // WCAG 2.5.5: min 44px touch target — a HARD floor (min-h-[2.75rem], not\n // min-h-11, which scales below 44px under dense/scaled knobs). py/text still\n // scale with the spacing + scaling knobs, growing the target past 44px.\n // No text underline (was hover:underline).\n 'flex min-h-[2.75rem] flex-1 cursor-pointer items-center justify-between gap-4 py-3 text-left font-medium text-gray-12',\n // default focus style (matches Button): 2px ring + 2px offset, accent colour\n 'rounded-md focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden',\n 'disabled:pointer-events-none disabled:opacity-50',\n // horizontal padding sits INSIDE the chrome (soft/surface/outline); ghost\n // keeps the label flush (\"just plain text and spacing\").\n 'group-data-[variant=outline]/accordion:px-4 group-data-[variant=soft]/accordion:px-4 group-data-[variant=surface]/accordion:px-4',\n // chevron (last child) flips when open\n '[&[data-panel-open]>:last-child]:rotate-180',\n className,\n )}\n {...props}\n >\n {children}\n <MaterialSymbol\n className=\"shrink-0 text-gray-11 transition-transform duration-200 motion-reduce:transition-none\"\n name=\"expand_more\"\n />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\ntype AccordionContentProps = React.ComponentProps<\n typeof AccordionPrimitive.Panel\n>\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: AccordionContentProps) {\n return (\n <AccordionPrimitive.Panel\n data-slot=\"accordion-content\"\n // Base UI sets --accordion-panel-height + starting/ending styles on the\n // panel; the height transition replaces the radix keyframe animation.\n className=\"h-(--accordion-panel-height) overflow-hidden text-sm text-gray-11 transition-[height] duration-200 ease-out data-ending-style:h-0 data-starting-style:h-0 motion-reduce:transition-none\"\n {...props}\n >\n {/* padding aligns with the trigger: flush for ghost, inside the chrome otherwise */}\n <div\n className={cn(\n 'pb-4 group-data-[variant=outline]/accordion:px-4 group-data-[variant=soft]/accordion:px-4 group-data-[variant=surface]/accordion:px-4',\n className,\n )}\n >\n {children}\n </div>\n </AccordionPrimitive.Panel>\n )\n}\n\nexport { Accordion, AccordionContent, AccordionItem, AccordionTrigger }\nexport type { AccordionProps, AccordionVariant }\n"],"mappings":";;;;;;;AAoBA,SAAS,UAAU,EAAE,WAAW,UAAU,QAAQ,GAAG,SAAyB;AAC5E,QACE,oBAACA,YAAmB,MAApB;EACE,aAAU;EAGV,gBAAc;EACd,WAAW,GACT,mBAGA,qFACA,UACD;EACD,GAAI;EACJ,CAAA;;AAMN,SAAS,cAAc,EAAE,WAAW,GAAG,SAA6B;AAClE,QACE,oBAACA,YAAmB,MAApB;EACE,aAAU;EACV,WAAW,GAST,qJAKA,oDACA,iUACA,iUACA,UACD;EACD,GAAI;EACJ,CAAA;;AAQN,SAAS,iBAAiB,EACxB,WACA,UACA,GAAG,SACqB;AACxB,QACE,oBAACA,YAAmB,QAApB;EAA2B,WAAU;YACnC,qBAACA,YAAmB,SAApB;GACE,aAAU;GACV,WAAW,GAKT,yHAEA,4FACA,oDAGA,oIAEA,+CACA,UACD;GACD,GAAI;aAlBN,CAoBG,UACD,oBAAC,gBAAD;IACE,WAAU;IACV,MAAK;IACL,CAAA,CACyB;;EACH,CAAA;;AAQhC,SAAS,iBAAiB,EACxB,WACA,UACA,GAAG,SACqB;AACxB,QACE,oBAACA,YAAmB,OAApB;EACE,aAAU;EAGV,WAAU;EACV,GAAI;YAGJ,oBAAC,OAAD;GACE,WAAW,GACT,yIACA,UACD;GAEA;GACG,CAAA;EACmB,CAAA"}
@@ -22,7 +22,7 @@ declare function Attachment({
22
22
  state?: 'idle' | 'uploading' | 'processing' | 'error' | 'done';
23
23
  }): _$react_jsx_runtime0.JSX.Element;
24
24
  declare const attachmentMediaVariants: (props?: ({
25
- variant?: "icon" | "image" | null | undefined;
25
+ variant?: "image" | "icon" | null | undefined;
26
26
  } & _$class_variance_authority_types0.ClassProp) | undefined) => string;
27
27
  declare function AttachmentMedia({
28
28
  className,
@@ -22,7 +22,7 @@ declare function Attachment({
22
22
  state?: 'idle' | 'uploading' | 'processing' | 'error' | 'done';
23
23
  }): _$react_jsx_runtime0.JSX.Element;
24
24
  declare const attachmentMediaVariants: (props?: ({
25
- variant?: "icon" | "image" | null | undefined;
25
+ variant?: "image" | "icon" | null | undefined;
26
26
  } & _$class_variance_authority_types0.ClassProp) | undefined) => string;
27
27
  declare function AttachmentMedia({
28
28
  className,
@@ -1,18 +1,23 @@
1
1
  "use client";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const require_chunk = require("../chunk-aJGBMT86.cjs");
4
+ const require_accent_colors = require("../accent-colors-CjHCf8fH.cjs");
4
5
  let react = require("react");
5
6
  react = require_chunk.__toESM(react);
6
7
  let react_jsx_runtime = require("react/jsx-runtime");
7
8
  let cnfast = require("cnfast");
8
9
  //#region src/components/badge.tsx
9
- const Badge = react.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
10
- "data-slot": "badge",
11
- className: (0, cnfast.cn)("inline-flex h-5 min-w-5 items-center justify-center rounded-sm px-1.5 text-center text-xs font-normal tabular-nums", "border-[length:var(--spark-style-border-width,1px)] border-[color:var(--spark-style-border,transparent)]", "bg-[var(--spark-style-bg,var(--color-gray-a3))] text-[color:var(--spark-style-fg,var(--spark-badge-fg,var(--color-gray-a11)))]", className),
12
- ref,
13
- ...props,
14
- children
15
- }));
10
+ const Badge = react.forwardRef(({ className, children, styleVariant, color, ...props }, ref) => {
11
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
12
+ "data-slot": "badge",
13
+ "data-style": styleVariant !== void 0 || color !== void 0 ? styleVariant ?? "soft" : void 0,
14
+ "data-accent-color": color ? require_accent_colors.accentByColor[color] : void 0,
15
+ className: (0, cnfast.cn)("inline-flex h-5 min-w-5 items-center justify-center rounded-sm px-1.5 text-center text-xs font-normal tabular-nums", "border-(length:--spark-style-border-width,1px) border-(--spark-style-border,transparent)", "bg-(--spark-style-bg,var(--color-gray-a3)) text-(--spark-style-fg,var(--spark-badge-fg,var(--color-gray-a11)))", className),
16
+ ref,
17
+ ...props,
18
+ children
19
+ });
20
+ });
16
21
  Badge.displayName = "Badge";
17
22
  //#endregion
18
23
  exports.Badge = Badge;
@@ -1 +1 @@
1
- {"version":3,"file":"badge.cjs","names":["React"],"sources":["../../src/components/badge.tsx"],"sourcesContent":["import * as React from 'react'\nimport { cn } from '../utils/cn'\n\ninterface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n children?: React.ReactNode\n}\n\nconst Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, children, ...props }, ref) => (\n <span\n data-slot=\"badge\"\n className={cn(\n // 20px pill sized for counts + short labels; tabular-nums keeps digit widths steady.\n // rounded-sm (→ --spark-rounded-sm, 3px) — a subtle corner that matches Figma; tracks the radius knob.\n 'inline-flex h-5 min-w-5 items-center justify-center rounded-sm px-1.5 text-center text-xs font-normal tabular-nums',\n // Style knob (data-style) + accent + high-contrast, inherited from the shared\n // --spark-style-* tokens. UNSTYLED = a neutral gray soft chip: the fallbacks read\n // the gray/neutral scale (gray-a3 fill, gray-a11 ink), so a bare <Badge> is quiet\n // and accent-independent (stays gray even inside a themed accent). Any data-style\n // brings in the accent — solid fills it (readable --spark-badge-fg text),\n // surface/outline add a 1px edge. border-box keeps the 20px height constant.\n 'border-[length:var(--spark-style-border-width,1px)] border-[color:var(--spark-style-border,transparent)]',\n 'bg-[var(--spark-style-bg,var(--color-gray-a3))] text-[color:var(--spark-style-fg,var(--spark-badge-fg,var(--color-gray-a11)))]',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n </span>\n ),\n)\n\nBadge.displayName = 'Badge'\n\nexport { Badge }\nexport type { BadgeProps }\n"],"mappings":";;;;;;;;AAOA,MAAM,QAAQA,MAAM,YACjB,EAAE,WAAW,UAAU,GAAG,SAAS,QAClC,iBAAA,GAAA,kBAAA,KAAC,QAAD;CACE,aAAU;CACV,YAAA,GAAA,OAAA,IAGE,sHAOA,4GACA,kIACA,UACD;CACI;CACL,GAAI;CAEH;CACI,CAAA,CAEV;AAED,MAAM,cAAc"}
1
+ {"version":3,"file":"badge.cjs","names":["React","accentByColor"],"sources":["../../src/components/badge.tsx"],"sourcesContent":["import * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\nexport type SparkBadgeColor =\n | 'accent'\n | 'neutral'\n | 'success'\n | 'warning'\n | 'danger'\n\ninterface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n styleVariant?: SparkStyle\n color?: SparkBadgeColor\n children?: React.ReactNode\n}\n\nconst Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, children, styleVariant, color, ...props }, ref) => {\n const hasLook = styleVariant !== undefined || color !== undefined\n return (\n <span\n data-slot=\"badge\"\n data-style={hasLook ? (styleVariant ?? 'soft') : undefined}\n data-accent-color={color ? accentByColor[color] : undefined}\n className={cn(\n 'inline-flex h-5 min-w-5 items-center justify-center rounded-sm px-1.5 text-center text-xs font-normal tabular-nums',\n 'border-(length:--spark-style-border-width,1px) border-(--spark-style-border,transparent)',\n 'bg-(--spark-style-bg,var(--color-gray-a3)) text-(--spark-style-fg,var(--spark-badge-fg,var(--color-gray-a11)))',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n </span>\n )\n },\n)\n\nBadge.displayName = 'Badge'\n\nexport { Badge }\nexport type { BadgeProps }\n"],"mappings":";;;;;;;;;AAkBA,MAAM,QAAQA,MAAM,YACjB,EAAE,WAAW,UAAU,cAAc,OAAO,GAAG,SAAS,QAAQ;AAE/D,QACE,iBAAA,GAAA,kBAAA,KAAC,QAAD;EACE,aAAU;EACV,cAJY,iBAAiB,KAAA,KAAa,UAAU,KAAA,IAI7B,gBAAgB,SAAU,KAAA;EACjD,qBAAmB,QAAQC,sBAAAA,cAAc,SAAS,KAAA;EAClD,YAAA,GAAA,OAAA,IACE,sHACA,4FACA,kHACA,UACD;EACI;EACL,GAAI;EAEH;EACI,CAAA;EAGZ;AAED,MAAM,cAAc"}
@@ -1,12 +1,16 @@
1
1
  "use client";
2
2
 
3
+ import { u as SparkStyle } from "../theme-types-BwSJKdsB.cjs";
3
4
  import * as React$1 from "react";
4
5
 
5
6
  //#region src/components/badge.d.ts
7
+ type SparkBadgeColor = 'accent' | 'neutral' | 'success' | 'warning' | 'danger';
6
8
  interface BadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
9
+ styleVariant?: SparkStyle;
10
+ color?: SparkBadgeColor;
7
11
  children?: React$1.ReactNode;
8
12
  }
9
13
  declare const Badge: React$1.ForwardRefExoticComponent<BadgeProps & React$1.RefAttributes<HTMLSpanElement>>;
10
14
  //#endregion
11
- export { Badge, type BadgeProps };
15
+ export { Badge, type BadgeProps, SparkBadgeColor };
12
16
  //# sourceMappingURL=badge.d.cts.map
@@ -1,12 +1,16 @@
1
1
  "use client";
2
2
 
3
+ import { u as SparkStyle } from "../theme-types-BDdoRxXa.js";
3
4
  import * as React$1 from "react";
4
5
 
5
6
  //#region src/components/badge.d.ts
7
+ type SparkBadgeColor = 'accent' | 'neutral' | 'success' | 'warning' | 'danger';
6
8
  interface BadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
9
+ styleVariant?: SparkStyle;
10
+ color?: SparkBadgeColor;
7
11
  children?: React$1.ReactNode;
8
12
  }
9
13
  declare const Badge: React$1.ForwardRefExoticComponent<BadgeProps & React$1.RefAttributes<HTMLSpanElement>>;
10
14
  //#endregion
11
- export { Badge, type BadgeProps };
15
+ export { Badge, type BadgeProps, SparkBadgeColor };
12
16
  //# sourceMappingURL=badge.d.ts.map
@@ -1,15 +1,20 @@
1
1
  "use client";
2
2
  import { cn } from "../utils/cn.js";
3
+ import { t as accentByColor } from "../accent-colors-Ch2J0EEY.js";
3
4
  import * as React$1 from "react";
4
5
  import { jsx } from "react/jsx-runtime";
5
6
  //#region src/components/badge.tsx
6
- const Badge = React$1.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx("span", {
7
- "data-slot": "badge",
8
- className: cn("inline-flex h-5 min-w-5 items-center justify-center rounded-sm px-1.5 text-center text-xs font-normal tabular-nums", "border-[length:var(--spark-style-border-width,1px)] border-[color:var(--spark-style-border,transparent)]", "bg-[var(--spark-style-bg,var(--color-gray-a3))] text-[color:var(--spark-style-fg,var(--spark-badge-fg,var(--color-gray-a11)))]", className),
9
- ref,
10
- ...props,
11
- children
12
- }));
7
+ const Badge = React$1.forwardRef(({ className, children, styleVariant, color, ...props }, ref) => {
8
+ return /* @__PURE__ */ jsx("span", {
9
+ "data-slot": "badge",
10
+ "data-style": styleVariant !== void 0 || color !== void 0 ? styleVariant ?? "soft" : void 0,
11
+ "data-accent-color": color ? accentByColor[color] : void 0,
12
+ className: cn("inline-flex h-5 min-w-5 items-center justify-center rounded-sm px-1.5 text-center text-xs font-normal tabular-nums", "border-(length:--spark-style-border-width,1px) border-(--spark-style-border,transparent)", "bg-(--spark-style-bg,var(--color-gray-a3)) text-(--spark-style-fg,var(--spark-badge-fg,var(--color-gray-a11)))", className),
13
+ ref,
14
+ ...props,
15
+ children
16
+ });
17
+ });
13
18
  Badge.displayName = "Badge";
14
19
  //#endregion
15
20
  export { Badge };
@@ -1 +1 @@
1
- {"version":3,"file":"badge.js","names":["React"],"sources":["../../src/components/badge.tsx"],"sourcesContent":["import * as React from 'react'\nimport { cn } from '../utils/cn'\n\ninterface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n children?: React.ReactNode\n}\n\nconst Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, children, ...props }, ref) => (\n <span\n data-slot=\"badge\"\n className={cn(\n // 20px pill sized for counts + short labels; tabular-nums keeps digit widths steady.\n // rounded-sm (→ --spark-rounded-sm, 3px) — a subtle corner that matches Figma; tracks the radius knob.\n 'inline-flex h-5 min-w-5 items-center justify-center rounded-sm px-1.5 text-center text-xs font-normal tabular-nums',\n // Style knob (data-style) + accent + high-contrast, inherited from the shared\n // --spark-style-* tokens. UNSTYLED = a neutral gray soft chip: the fallbacks read\n // the gray/neutral scale (gray-a3 fill, gray-a11 ink), so a bare <Badge> is quiet\n // and accent-independent (stays gray even inside a themed accent). Any data-style\n // brings in the accent — solid fills it (readable --spark-badge-fg text),\n // surface/outline add a 1px edge. border-box keeps the 20px height constant.\n 'border-[length:var(--spark-style-border-width,1px)] border-[color:var(--spark-style-border,transparent)]',\n 'bg-[var(--spark-style-bg,var(--color-gray-a3))] text-[color:var(--spark-style-fg,var(--spark-badge-fg,var(--color-gray-a11)))]',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n </span>\n ),\n)\n\nBadge.displayName = 'Badge'\n\nexport { Badge }\nexport type { BadgeProps }\n"],"mappings":";;;;;AAOA,MAAM,QAAQA,QAAM,YACjB,EAAE,WAAW,UAAU,GAAG,SAAS,QAClC,oBAAC,QAAD;CACE,aAAU;CACV,WAAW,GAGT,sHAOA,4GACA,kIACA,UACD;CACI;CACL,GAAI;CAEH;CACI,CAAA,CAEV;AAED,MAAM,cAAc"}
1
+ {"version":3,"file":"badge.js","names":["React"],"sources":["../../src/components/badge.tsx"],"sourcesContent":["import * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\nexport type SparkBadgeColor =\n | 'accent'\n | 'neutral'\n | 'success'\n | 'warning'\n | 'danger'\n\ninterface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n styleVariant?: SparkStyle\n color?: SparkBadgeColor\n children?: React.ReactNode\n}\n\nconst Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, children, styleVariant, color, ...props }, ref) => {\n const hasLook = styleVariant !== undefined || color !== undefined\n return (\n <span\n data-slot=\"badge\"\n data-style={hasLook ? (styleVariant ?? 'soft') : undefined}\n data-accent-color={color ? accentByColor[color] : undefined}\n className={cn(\n 'inline-flex h-5 min-w-5 items-center justify-center rounded-sm px-1.5 text-center text-xs font-normal tabular-nums',\n 'border-(length:--spark-style-border-width,1px) border-(--spark-style-border,transparent)',\n 'bg-(--spark-style-bg,var(--color-gray-a3)) text-(--spark-style-fg,var(--spark-badge-fg,var(--color-gray-a11)))',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n </span>\n )\n },\n)\n\nBadge.displayName = 'Badge'\n\nexport { Badge }\nexport type { BadgeProps }\n"],"mappings":";;;;;;AAkBA,MAAM,QAAQA,QAAM,YACjB,EAAE,WAAW,UAAU,cAAc,OAAO,GAAG,SAAS,QAAQ;AAE/D,QACE,oBAAC,QAAD;EACE,aAAU;EACV,cAJY,iBAAiB,KAAA,KAAa,UAAU,KAAA,IAI7B,gBAAgB,SAAU,KAAA;EACjD,qBAAmB,QAAQ,cAAc,SAAS,KAAA;EAClD,WAAW,GACT,sHACA,4FACA,kHACA,UACD;EACI;EACL,GAAI;EAEH;EACI,CAAA;EAGZ;AAED,MAAM,cAAc"}
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  require("../chunk-aJGBMT86.cjs");
4
+ const require_hooks_use_reduced_motion = require("../hooks/use-reduced-motion.cjs");
4
5
  const require_utils_format = require("../utils/format.cjs");
5
6
  const require_utils_chart_scale = require("../utils/chart-scale.cjs");
6
7
  const require_components_chart = require("./chart.cjs");
@@ -75,6 +76,7 @@ function BarStackLayer({ stackData, series, seriesByKey, xScale, yScale, colorSc
75
76
  });
76
77
  }
77
78
  function FocusBorder({ category, visible, stackData, series, xScale, yScale }) {
79
+ const reducedMotion = require_hooks_use_reduced_motion.useReducedMotion();
78
80
  const x = xScale(category);
79
81
  const datum = stackData.find((entry) => entry.__category === category);
80
82
  if (x === void 0 || !datum) return null;
@@ -106,7 +108,7 @@ function FocusBorder({ category, visible, stackData, series, xScale, yScale }) {
106
108
  pointerEvents: "none",
107
109
  style: {
108
110
  opacity: visible ? 1 : 0,
109
- transition: `x ${FOCUS_TRANSITION_MS}ms ease, y ${FOCUS_TRANSITION_MS}ms ease, width ${FOCUS_TRANSITION_MS}ms ease, height ${FOCUS_TRANSITION_MS}ms ease, opacity ${FOCUS_TRANSITION_MS}ms ease`
111
+ transition: reducedMotion ? `opacity ${FOCUS_TRANSITION_MS}ms ease` : `x ${FOCUS_TRANSITION_MS}ms ease, y ${FOCUS_TRANSITION_MS}ms ease, width ${FOCUS_TRANSITION_MS}ms ease, height ${FOCUS_TRANSITION_MS}ms ease, opacity ${FOCUS_TRANSITION_MS}ms ease`
110
112
  }
111
113
  });
112
114
  }
@@ -152,7 +154,7 @@ function CategoryTicks({ ticks, xScale, height, formatCategory }) {
152
154
  x: x + xScale.bandwidth() / 2,
153
155
  y: height - PADDING_BOTTOM + 16,
154
156
  textAnchor: "middle",
155
- fill: "var(--gray-a11)",
157
+ fill: "var(--neutral-a11)",
156
158
  fontSize: 10,
157
159
  children: formatCategory(category)
158
160
  }, `tick-${String(category)}`);
@@ -163,6 +165,7 @@ function defaultFormatTotal(value) {
163
165
  }
164
166
  function BarChart({ data, series, lines, getCategory, categories, categoryTicks, formatCategory = (category) => String(category), formatTooltipCategory = formatCategory, highlightedCategory, showHighlightLine = false, referenceLine, title, yAxisUnit, height = DEFAULT_HEIGHT, renderTotal, formatTotal = defaultFormatTotal, formatValue, className }) {
165
167
  const containerRef = (0, react.useRef)(null);
168
+ const reducedMotion = require_hooks_use_reduced_motion.useReducedMotion();
166
169
  const [width, setWidth] = (0, react.useState)(0);
167
170
  const [hoveredCategory, setHoveredCategory] = (0, react.useState)(null);
168
171
  const [trailingHoverLabel, setTrailingHoverLabel] = (0, react.useState)(null);
@@ -401,7 +404,7 @@ function BarChart({ data, series, lines, getCategory, categories, categoryTicks,
401
404
  left: tooltipPos.left,
402
405
  top: tooltipPos.top,
403
406
  opacity: tooltipActive ? 1 : 0,
404
- transition: "left 140ms ease-out, top 140ms ease-out, opacity 140ms ease-out"
407
+ transition: reducedMotion ? "opacity 140ms ease-out" : "left 140ms ease-out, top 140ms ease-out, opacity 140ms ease-out"
405
408
  },
406
409
  children: focusCategory !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_chart.ChartTooltipCard, {
407
410
  label: formatTooltipCategory(focusCategory),
@@ -416,7 +419,7 @@ function BarChart({ data, series, lines, getCategory, categories, categoryTicks,
416
419
  x2: Y_AXIS_GUTTER,
417
420
  y1: PADDING_TOP,
418
421
  y2: height - PADDING_BOTTOM,
419
- stroke: "var(--gray-a6)",
422
+ stroke: "var(--neutral-a6)",
420
423
  strokeWidth: 1
421
424
  }),
422
425
  yTicks.map((tick, index) => {
@@ -427,13 +430,13 @@ function BarChart({ data, series, lines, getCategory, categories, categoryTicks,
427
430
  x2: Y_AXIS_GUTTER,
428
431
  y1: y,
429
432
  y2: y,
430
- stroke: "var(--gray-a8)",
433
+ stroke: "var(--neutral-a8)",
431
434
  strokeWidth: 1
432
435
  }), !hideTickLabel && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("text", {
433
436
  x: Y_AXIS_GUTTER - 7,
434
437
  y: y + 3,
435
438
  textAnchor: "end",
436
- fill: "var(--gray-a11)",
439
+ fill: "var(--neutral-a11)",
437
440
  fontSize: 10,
438
441
  children: require_utils_chart_scale.formatYAxisTick(tick)
439
442
  })] }, `y-tick-${tick}`);
@@ -442,7 +445,7 @@ function BarChart({ data, series, lines, getCategory, categories, categoryTicks,
442
445
  x: 0,
443
446
  y: PADDING_TOP - 6,
444
447
  textAnchor: "start",
445
- fill: "var(--gray-a11)",
448
+ fill: "var(--neutral-a11)",
446
449
  fontSize: 10,
447
450
  fontWeight: 600,
448
451
  children: yAxisUnit
@@ -462,7 +465,7 @@ function BarChart({ data, series, lines, getCategory, categories, categoryTicks,
462
465
  x2: width,
463
466
  y1: yScale(0),
464
467
  y2: yScale(0),
465
- stroke: "var(--gray-a5)",
468
+ stroke: "var(--neutral-a5)",
466
469
  strokeWidth: 1
467
470
  }),
468
471
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_visx_group.Group, { children: [
@@ -480,7 +483,7 @@ function BarChart({ data, series, lines, getCategory, categories, categoryTicks,
480
483
  x2: width,
481
484
  y1: yScale(referenceLine.value),
482
485
  y2: yScale(referenceLine.value),
483
- stroke: referenceLine.color ?? "var(--gray-a11)",
486
+ stroke: referenceLine.color ?? "var(--neutral-a11)",
484
487
  strokeWidth: 1.5,
485
488
  pointerEvents: "none"
486
489
  }),