@epilot/spark-ui 0.20.0 → 0.20.2

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 (314) hide show
  1. package/dist/components/accordion.cjs +7 -7
  2. package/dist/components/accordion.cjs.map +1 -1
  3. package/dist/components/accordion.d.ts +1 -1
  4. package/dist/components/accordion.js +1 -1
  5. package/dist/components/alert-dialog.cjs +10 -10
  6. package/dist/components/alert-dialog.cjs.map +1 -1
  7. package/dist/components/alert-dialog.js +1 -1
  8. package/dist/components/attachment.cjs +10 -10
  9. package/dist/components/attachment.cjs.map +1 -1
  10. package/dist/components/attachment.d.cts +2 -2
  11. package/dist/components/attachment.d.ts +2 -2
  12. package/dist/components/autocomplete.cjs +13 -13
  13. package/dist/components/autocomplete.cjs.map +1 -1
  14. package/dist/components/autocomplete.js +1 -1
  15. package/dist/components/avatar.cjs +2 -2
  16. package/dist/components/avatar.cjs.map +1 -1
  17. package/dist/components/avatar.js +1 -1
  18. package/dist/components/badge.cjs +2 -2
  19. package/dist/components/badge.cjs.map +1 -1
  20. package/dist/components/badge.js +2 -2
  21. package/dist/components/badge.js.map +1 -1
  22. package/dist/components/bar-chart-with-total.d.cts +1 -1
  23. package/dist/components/bar-chart-with-total.d.ts +1 -1
  24. package/dist/components/bar-chart.cjs +4 -4
  25. package/dist/components/bar-chart.cjs.map +1 -1
  26. package/dist/components/bar-chart.js +2 -2
  27. package/dist/components/bar-chart.js.map +1 -1
  28. package/dist/components/box.cjs +2 -2
  29. package/dist/components/box.cjs.map +1 -1
  30. package/dist/components/box.js +1 -1
  31. package/dist/components/breadcrumbs.cjs +7 -7
  32. package/dist/components/breadcrumbs.cjs.map +1 -1
  33. package/dist/components/bubble.cjs +5 -5
  34. package/dist/components/bubble.cjs.map +1 -1
  35. package/dist/components/bubble.d.cts +1 -1
  36. package/dist/components/bubble.d.ts +1 -1
  37. package/dist/components/button-group.cjs +5 -5
  38. package/dist/components/button-group.cjs.map +1 -1
  39. package/dist/components/button-group.js +1 -1
  40. package/dist/components/button.cjs +2 -2
  41. package/dist/components/button.cjs.map +1 -1
  42. package/dist/components/button.d.cts +3 -3
  43. package/dist/components/button.d.ts +3 -3
  44. package/dist/components/button.js +1 -1
  45. package/dist/components/button.js.map +1 -1
  46. package/dist/components/calendar.cjs +12 -11
  47. package/dist/components/calendar.cjs.map +1 -1
  48. package/dist/components/calendar.js +5 -4
  49. package/dist/components/calendar.js.map +1 -1
  50. package/dist/components/callout.cjs +8 -8
  51. package/dist/components/callout.cjs.map +1 -1
  52. package/dist/components/callout.d.ts +1 -1
  53. package/dist/components/callout.js +1 -1
  54. package/dist/components/card.cjs +16 -16
  55. package/dist/components/card.cjs.map +1 -1
  56. package/dist/components/card.js +2 -2
  57. package/dist/components/card.js.map +1 -1
  58. package/dist/components/chart.cjs +2 -2
  59. package/dist/components/chart.cjs.map +1 -1
  60. package/dist/components/checkbox.cjs +2 -2
  61. package/dist/components/checkbox.cjs.map +1 -1
  62. package/dist/components/checkbox.js +1 -1
  63. package/dist/components/checkbox.js.map +1 -1
  64. package/dist/components/circular-gauge.cjs +3 -3
  65. package/dist/components/circular-gauge.cjs.map +1 -1
  66. package/dist/components/circular-gauge.js +1 -1
  67. package/dist/components/circular-gauge.js.map +1 -1
  68. package/dist/components/day-of-week-picker.cjs +4 -4
  69. package/dist/components/day-of-week-picker.cjs.map +1 -1
  70. package/dist/components/dialog.cjs +9 -9
  71. package/dist/components/dialog.cjs.map +1 -1
  72. package/dist/components/dialog.js +1 -1
  73. package/dist/components/donut-chart.cjs.map +1 -1
  74. package/dist/components/donut-chart.js.map +1 -1
  75. package/dist/components/drawer.cjs +8 -8
  76. package/dist/components/drawer.cjs.map +1 -1
  77. package/dist/components/drawer.js +2 -2
  78. package/dist/components/drawer.js.map +1 -1
  79. package/dist/components/dropdown-menu.cjs +11 -11
  80. package/dist/components/dropdown-menu.cjs.map +1 -1
  81. package/dist/components/dropdown-menu.js +1 -1
  82. package/dist/components/empty-state.d.ts +1 -1
  83. package/dist/components/energy-breakdown.cjs +80 -0
  84. package/dist/components/energy-breakdown.cjs.map +1 -0
  85. package/dist/components/energy-breakdown.d.cts +24 -0
  86. package/dist/components/energy-breakdown.d.ts +24 -0
  87. package/dist/components/energy-breakdown.js +79 -0
  88. package/dist/components/energy-breakdown.js.map +1 -0
  89. package/dist/components/energy-history-chart.cjs +63 -0
  90. package/dist/components/energy-history-chart.cjs.map +1 -0
  91. package/dist/components/energy-history-chart.d.cts +64 -0
  92. package/dist/components/energy-history-chart.d.ts +64 -0
  93. package/dist/components/energy-history-chart.js +62 -0
  94. package/dist/components/energy-history-chart.js.map +1 -0
  95. package/dist/components/entity-card.cjs +11 -11
  96. package/dist/components/entity-card.cjs.map +1 -1
  97. package/dist/components/entity-card.d.ts +1 -1
  98. package/dist/components/field.cjs +16 -16
  99. package/dist/components/field.cjs.map +1 -1
  100. package/dist/components/field.js +1 -1
  101. package/dist/components/field.js.map +1 -1
  102. package/dist/components/hero-metric.cjs +4 -4
  103. package/dist/components/hero-metric.cjs.map +1 -1
  104. package/dist/components/icon.cjs +6 -6
  105. package/dist/components/icon.cjs.map +1 -1
  106. package/dist/components/icon.js +5 -5
  107. package/dist/components/icon.js.map +1 -1
  108. package/dist/components/info-block.cjs +9 -9
  109. package/dist/components/info-block.cjs.map +1 -1
  110. package/dist/components/info-block.d.cts +1 -1
  111. package/dist/components/info-block.d.ts +1 -1
  112. package/dist/components/input-date.cjs +5 -4
  113. package/dist/components/input-date.cjs.map +1 -1
  114. package/dist/components/input-date.d.cts +3 -1
  115. package/dist/components/input-date.d.ts +3 -1
  116. package/dist/components/input-date.js +3 -2
  117. package/dist/components/input-date.js.map +1 -1
  118. package/dist/components/input-group.cjs +5 -5
  119. package/dist/components/input-group.cjs.map +1 -1
  120. package/dist/components/input-otp.cjs +3 -3
  121. package/dist/components/input-otp.cjs.map +1 -1
  122. package/dist/components/input-otp.js +1 -1
  123. package/dist/components/input.cjs +3 -3
  124. package/dist/components/input.cjs.map +1 -1
  125. package/dist/components/input.js +1 -1
  126. package/dist/components/label.cjs +2 -2
  127. package/dist/components/label.cjs.map +1 -1
  128. package/dist/components/layout.cjs +2 -2
  129. package/dist/components/layout.cjs.map +1 -1
  130. package/dist/components/line-chart.cjs +7 -7
  131. package/dist/components/line-chart.cjs.map +1 -1
  132. package/dist/components/line-chart.js +5 -5
  133. package/dist/components/line-chart.js.map +1 -1
  134. package/dist/components/list.cjs +11 -11
  135. package/dist/components/list.cjs.map +1 -1
  136. package/dist/components/list.d.cts +7 -2
  137. package/dist/components/list.d.ts +7 -2
  138. package/dist/components/list.js +2 -2
  139. package/dist/components/list.js.map +1 -1
  140. package/dist/components/marker.cjs +4 -4
  141. package/dist/components/marker.cjs.map +1 -1
  142. package/dist/components/marker.d.cts +1 -1
  143. package/dist/components/marker.d.ts +1 -1
  144. package/dist/components/message-scroller.cjs +8 -8
  145. package/dist/components/message-scroller.cjs.map +1 -1
  146. package/dist/components/message-scroller.js +4 -4
  147. package/dist/components/message-scroller.js.map +1 -1
  148. package/dist/components/message.cjs +7 -7
  149. package/dist/components/message.cjs.map +1 -1
  150. package/dist/components/number-flow.d.cts +2 -12
  151. package/dist/components/number-flow.d.ts +2 -12
  152. package/dist/components/page-header.cjs +6 -6
  153. package/dist/components/page-header.cjs.map +1 -1
  154. package/dist/components/page-header.js +1 -1
  155. package/dist/components/period-tabs.cjs +6 -6
  156. package/dist/components/period-tabs.cjs.map +1 -1
  157. package/dist/components/pill.cjs +4 -4
  158. package/dist/components/pill.cjs.map +1 -1
  159. package/dist/components/pill.js +4 -4
  160. package/dist/components/pill.js.map +1 -1
  161. package/dist/components/popover.cjs +2 -2
  162. package/dist/components/popover.cjs.map +1 -1
  163. package/dist/components/power-history-chart.cjs +498 -0
  164. package/dist/components/power-history-chart.cjs.map +1 -0
  165. package/dist/components/power-history-chart.d.cts +71 -0
  166. package/dist/components/power-history-chart.d.ts +71 -0
  167. package/dist/components/power-history-chart.js +496 -0
  168. package/dist/components/power-history-chart.js.map +1 -0
  169. package/dist/components/power-network.cjs +559 -0
  170. package/dist/components/power-network.cjs.map +1 -0
  171. package/dist/components/power-network.d.cts +80 -0
  172. package/dist/components/power-network.d.ts +80 -0
  173. package/dist/components/power-network.js +553 -0
  174. package/dist/components/power-network.js.map +1 -0
  175. package/dist/components/progress.cjs +3 -3
  176. package/dist/components/progress.cjs.map +1 -1
  177. package/dist/components/progress.js +1 -1
  178. package/dist/components/progress.js.map +1 -1
  179. package/dist/components/radio-card-group.cjs +3 -3
  180. package/dist/components/radio-card-group.cjs.map +1 -1
  181. package/dist/components/radio.cjs +3 -3
  182. package/dist/components/radio.cjs.map +1 -1
  183. package/dist/components/radio.js +1 -1
  184. package/dist/components/sankey-chart.cjs +15 -5
  185. package/dist/components/sankey-chart.cjs.map +1 -1
  186. package/dist/components/sankey-chart.d.cts +3 -2
  187. package/dist/components/sankey-chart.d.ts +3 -2
  188. package/dist/components/sankey-chart.js +13 -4
  189. package/dist/components/sankey-chart.js.map +1 -1
  190. package/dist/components/schedule-editor.cjs +9 -9
  191. package/dist/components/schedule-editor.cjs.map +1 -1
  192. package/dist/components/schedule-list.cjs +11 -11
  193. package/dist/components/schedule-list.cjs.map +1 -1
  194. package/dist/components/schedule-list.js +1 -1
  195. package/dist/components/scroll-area.cjs +3 -3
  196. package/dist/components/scroll-area.cjs.map +1 -1
  197. package/dist/components/segmented-control.cjs +8 -8
  198. package/dist/components/segmented-control.cjs.map +1 -1
  199. package/dist/components/segmented-control.d.cts +2 -16
  200. package/dist/components/segmented-control.d.ts +2 -16
  201. package/dist/components/segmented-control.js +5 -5
  202. package/dist/components/segmented-control.js.map +1 -1
  203. package/dist/components/select.cjs +13 -13
  204. package/dist/components/select.cjs.map +1 -1
  205. package/dist/components/select.js +2 -2
  206. package/dist/components/separator.cjs +3 -3
  207. package/dist/components/separator.cjs.map +1 -1
  208. package/dist/components/series-legend.cjs +4 -4
  209. package/dist/components/series-legend.cjs.map +1 -1
  210. package/dist/components/sheet.cjs +9 -9
  211. package/dist/components/sheet.cjs.map +1 -1
  212. package/dist/components/sheet.js +1 -1
  213. package/dist/components/skeleton.cjs +3 -3
  214. package/dist/components/skeleton.cjs.map +1 -1
  215. package/dist/components/slider.cjs +11 -11
  216. package/dist/components/slider.cjs.map +1 -1
  217. package/dist/components/slider.js.map +1 -1
  218. package/dist/components/solar-forecast-chart.cjs +108 -0
  219. package/dist/components/solar-forecast-chart.cjs.map +1 -0
  220. package/dist/components/solar-forecast-chart.d.cts +77 -0
  221. package/dist/components/solar-forecast-chart.d.ts +77 -0
  222. package/dist/components/solar-forecast-chart.js +103 -0
  223. package/dist/components/solar-forecast-chart.js.map +1 -0
  224. package/dist/components/sortable-list.cjs +3 -3
  225. package/dist/components/sortable-list.cjs.map +1 -1
  226. package/dist/components/spinner.cjs +2 -2
  227. package/dist/components/spinner.cjs.map +1 -1
  228. package/dist/components/stat-card.cjs +8 -8
  229. package/dist/components/stat-card.cjs.map +1 -1
  230. package/dist/components/stepper.cjs +3 -3
  231. package/dist/components/stepper.cjs.map +1 -1
  232. package/dist/components/stepper.js +1 -1
  233. package/dist/components/switch.cjs +3 -3
  234. package/dist/components/switch.cjs.map +1 -1
  235. package/dist/components/switch.js +2 -2
  236. package/dist/components/switch.js.map +1 -1
  237. package/dist/components/table.cjs +9 -9
  238. package/dist/components/table.cjs.map +1 -1
  239. package/dist/components/table.js +1 -1
  240. package/dist/components/tabs.cjs +10 -10
  241. package/dist/components/tabs.cjs.map +1 -1
  242. package/dist/components/tabs.d.cts +1 -8
  243. package/dist/components/tabs.d.ts +1 -8
  244. package/dist/components/tabs.js +3 -3
  245. package/dist/components/tabs.js.map +1 -1
  246. package/dist/components/textarea.cjs +3 -3
  247. package/dist/components/textarea.cjs.map +1 -1
  248. package/dist/components/textarea.js +1 -1
  249. package/dist/components/theme.cjs +2 -2
  250. package/dist/components/theme.cjs.map +1 -1
  251. package/dist/components/theme.js +1 -1
  252. package/dist/components/thumbnail.cjs +3 -3
  253. package/dist/components/thumbnail.cjs.map +1 -1
  254. package/dist/components/time-picker.cjs +3 -3
  255. package/dist/components/time-picker.cjs.map +1 -1
  256. package/dist/components/toast.cjs +40 -15
  257. package/dist/components/toast.cjs.map +1 -1
  258. package/dist/components/toast.d.cts +15 -2
  259. package/dist/components/toast.d.ts +15 -2
  260. package/dist/components/toast.js +33 -8
  261. package/dist/components/toast.js.map +1 -1
  262. package/dist/components/toggle-group.cjs +40 -0
  263. package/dist/components/toggle-group.cjs.map +1 -0
  264. package/dist/components/toggle-group.d.cts +28 -0
  265. package/dist/components/toggle-group.d.ts +28 -0
  266. package/dist/components/toggle-group.js +37 -0
  267. package/dist/components/toggle-group.js.map +1 -0
  268. package/dist/components/toggle.cjs +69 -0
  269. package/dist/components/toggle.cjs.map +1 -0
  270. package/dist/components/toggle.d.cts +23 -0
  271. package/dist/components/toggle.d.ts +23 -0
  272. package/dist/components/toggle.js +66 -0
  273. package/dist/components/toggle.js.map +1 -0
  274. package/dist/components/tooltip.cjs +4 -4
  275. package/dist/components/tooltip.cjs.map +1 -1
  276. package/dist/components/tooltip.js +2 -2
  277. package/dist/components/tooltip.js.map +1 -1
  278. package/dist/components/typography.cjs +6 -6
  279. package/dist/components/typography.cjs.map +1 -1
  280. package/dist/components/wizard-layout.cjs +8 -8
  281. package/dist/components/wizard-layout.cjs.map +1 -1
  282. package/dist/lib/generate-radix-colors.cjs +1 -1
  283. package/dist/lib/generate-radix-colors.cjs.map +1 -1
  284. package/dist/lib/generate-radix-colors.js +1 -1
  285. package/dist/lib/generate-radix-colors.js.map +1 -1
  286. package/dist/lib/input-box-variants.cjs +9 -9
  287. package/dist/lib/input-box-variants.cjs.map +1 -1
  288. package/dist/lib/toggle-group-context.cjs +12 -0
  289. package/dist/lib/toggle-group-context.cjs.map +1 -0
  290. package/dist/lib/toggle-group-context.d.cts +17 -0
  291. package/dist/lib/toggle-group-context.d.ts +17 -0
  292. package/dist/lib/toggle-group-context.js +9 -0
  293. package/dist/lib/toggle-group-context.js.map +1 -0
  294. package/dist/number-flow-Bch81ixZ.d.cts +14 -0
  295. package/dist/number-flow-Bch81ixZ.d.ts +14 -0
  296. package/dist/styles/spark-default.css +11 -0
  297. package/dist/styles/theme.css +15 -4
  298. package/dist/utils/build-sankey-nodes.cjs +72 -0
  299. package/dist/utils/build-sankey-nodes.cjs.map +1 -0
  300. package/dist/utils/build-sankey-nodes.d.cts +27 -0
  301. package/dist/utils/build-sankey-nodes.d.ts +27 -0
  302. package/dist/utils/build-sankey-nodes.js +71 -0
  303. package/dist/utils/build-sankey-nodes.js.map +1 -0
  304. package/dist/utils/cn.cjs +2 -2
  305. package/dist/utils/cn.d.cts +1 -1
  306. package/dist/utils/cn.d.ts +1 -1
  307. package/dist/utils/cn.js +1 -1
  308. package/dist/utils/format.cjs +14 -0
  309. package/dist/utils/format.cjs.map +1 -1
  310. package/dist/utils/format.d.cts +8 -1
  311. package/dist/utils/format.d.ts +8 -1
  312. package/dist/utils/format.js +12 -1
  313. package/dist/utils/format.js.map +1 -1
  314. package/package.json +1 -1
@@ -0,0 +1,37 @@
1
+ "use client";
2
+ "use client";
3
+ import { accentByColor } from "../lib/accent-colors.js";
4
+ import { cn } from "../utils/cn.js";
5
+ import { ToggleGroupContext } from "../lib/toggle-group-context.js";
6
+ import * as React$1 from "react";
7
+ import { jsx } from "react/jsx-runtime";
8
+ import { ToggleGroup as ToggleGroup$1 } from "@base-ui/react/toggle-group";
9
+ //#region src/components/toggle-group.tsx
10
+ /**
11
+ * Children are `Toggle`s with a `value`. Arrow keys move focus between them
12
+ * (roving tabindex); pass `multiple` to let more than one stay pressed.
13
+ */
14
+ const ToggleGroup = React$1.forwardRef(function ToggleGroup({ className, styleVariant, color, size, showCheck, ...props }, ref) {
15
+ const look = styleVariant !== void 0 || color !== void 0 ? styleVariant ?? "solid" : void 0;
16
+ return /* @__PURE__ */ jsx(ToggleGroupContext.Provider, {
17
+ value: {
18
+ styleVariant,
19
+ color,
20
+ size,
21
+ showCheck
22
+ },
23
+ children: /* @__PURE__ */ jsx(ToggleGroup$1, {
24
+ "data-slot": "toggle-group",
25
+ "data-style": look,
26
+ "data-accent-color": color ? accentByColor[color] : void 0,
27
+ className: cn("isolate inline-flex *:focus-visible:z-10", "data-[orientation=horizontal]:*:not-first:rounded-l-none data-[orientation=horizontal]:*:not-last:rounded-r-none", "data-[orientation=vertical]:flex-col data-[orientation=vertical]:*:not-first:rounded-t-none data-[orientation=vertical]:*:not-last:rounded-b-none", look === "soft" ? "gap-[calc(var(--spark-layout-gap)*0.5)]" : "data-[orientation=horizontal]:*:not-first:-ml-px data-[orientation=vertical]:*:not-first:-mt-px", className),
28
+ ref,
29
+ ...props
30
+ })
31
+ });
32
+ });
33
+ ToggleGroup.displayName = "ToggleGroup";
34
+ //#endregion
35
+ export { ToggleGroup };
36
+
37
+ //# sourceMappingURL=toggle-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle-group.js","names":["React","ToggleGroupPrimitive"],"sources":["../../src/components/toggle-group.tsx"],"sourcesContent":["'use client'\n\nimport { ToggleGroup as ToggleGroupPrimitive } from '@base-ui/react/toggle-group'\nimport * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport { ToggleGroupContext } from '../lib/toggle-group-context'\nimport { cn } from '../utils/cn'\nimport type { SparkButtonColor } from './button'\nimport type { ToggleProps, ToggleStyle } from './toggle'\n\nexport interface ToggleGroupProps extends Omit<\n React.ComponentProps<typeof ToggleGroupPrimitive>,\n 'ref'\n> {\n /**\n * Pressed look for every item -- unlike ButtonGroup, unpressed items keep\n * the neutral outline, or a neutral fill in a soft group. Each of the three\n * is overridden per item by that item's own prop.\n */\n styleVariant?: ToggleStyle\n color?: SparkButtonColor\n size?: ToggleProps['size']\n /** Default `showCheck` for every item. */\n showCheck?: boolean\n}\n\n/**\n * Children are `Toggle`s with a `value`. Arrow keys move focus between them\n * (roving tabindex); pass `multiple` to let more than one stay pressed.\n */\nconst ToggleGroup = React.forwardRef<HTMLDivElement, ToggleGroupProps>(\n function ToggleGroup(\n { className, styleVariant, color, size, showCheck, ...props },\n ref,\n ) {\n const hasLook = styleVariant !== undefined || color !== undefined\n const look = hasLook ? (styleVariant ?? 'solid') : undefined\n\n return (\n <ToggleGroupContext.Provider\n value={{ styleVariant, color, size, showCheck }}\n >\n <ToggleGroupPrimitive\n data-slot=\"toggle-group\"\n data-style={look}\n data-accent-color={color ? accentByColor[color] : undefined}\n className={cn(\n 'isolate inline-flex *:focus-visible:z-10',\n 'data-[orientation=horizontal]:*:not-first:rounded-l-none data-[orientation=horizontal]:*:not-last:rounded-r-none',\n 'data-[orientation=vertical]:flex-col data-[orientation=vertical]:*:not-first:rounded-t-none data-[orientation=vertical]:*:not-last:rounded-b-none',\n // Soft fills are translucent, so glued neighbours' outlines would\n // frame a pressed item; List's soft rows space out the same way.\n look === 'soft'\n ? 'gap-[calc(var(--spark-layout-gap)*0.5)]'\n : 'data-[orientation=horizontal]:*:not-first:-ml-px data-[orientation=vertical]:*:not-first:-mt-px',\n className,\n )}\n ref={ref}\n {...props}\n />\n </ToggleGroupContext.Provider>\n )\n },\n)\n\nToggleGroup.displayName = 'ToggleGroup'\n\nexport { ToggleGroup }\n"],"mappings":";;;;;;;;;;;;;AA8BA,MAAM,cAAcA,QAAM,WACxB,SAAS,YACP,EAAE,WAAW,cAAc,OAAO,MAAM,WAAW,GAAG,SACtD,KACA;CAEA,MAAM,OADU,iBAAiB,KAAA,KAAa,UAAU,KAAA,IAChC,gBAAgB,UAAW,KAAA;CAEnD,OACE,oBAAC,mBAAmB,UAApB;EACE,OAAO;GAAE;GAAc;GAAO;GAAM;EAAU;YAE9C,oBAACC,eAAD;GACE,aAAU;GACV,cAAY;GACZ,qBAAmB,QAAQ,cAAc,SAAS,KAAA;GAClD,WAAW,GACT,4CACA,oHACA,qJAGA,SAAS,SACL,4CACA,mGACJ,SACF;GACK;GACL,GAAI;EACL,CAAA;CAC0B,CAAA;AAEjC,CACF;AAEA,YAAY,cAAc"}
@@ -0,0 +1,69 @@
1
+ "use client";
2
+ "use client";
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
4
+ const require_chunk = require("../chunk-DY84GLCh.cjs");
5
+ const require_lib_accent_colors = require("../lib/accent-colors.cjs");
6
+ const require_lib_toggle_group_context = require("../lib/toggle-group-context.cjs");
7
+ const require_components_button = require("./button.cjs");
8
+ let react = require("react");
9
+ react = require_chunk.__toESM(react);
10
+ let react_jsx_runtime = require("react/jsx-runtime");
11
+ let _base_ui_react_toggle = require("@base-ui/react/toggle");
12
+ let cn = require("cn");
13
+ //#region src/components/toggle.tsx
14
+ function DrawnCheck() {
15
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
16
+ xmlns: "http://www.w3.org/2000/svg",
17
+ viewBox: "0 0 24 24",
18
+ fill: "none",
19
+ stroke: "currentColor",
20
+ strokeWidth: 2.5,
21
+ strokeLinecap: "round",
22
+ strokeLinejoin: "round",
23
+ "aria-hidden": "true",
24
+ "data-slot": "toggle-check",
25
+ className: "absolute start-0 top-1/2 size-(--spark-icon-size) -translate-y-1/2 [opacity:var(--check-drawn,0)] transition-[stroke-dashoffset] [transition-duration:calc(var(--check-drawn,0)*260ms)] ease-out [stroke-dashoffset:calc(1_-_var(--check-drawn,0))] motion-reduce:transition-none",
26
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
27
+ d: "M5 12.5l4.5 4.5L19 7.5",
28
+ pathLength: 1,
29
+ strokeDasharray: 1
30
+ })
31
+ });
32
+ }
33
+ const spacerClasses = "min-w-0 shrink-[1000] w-[calc(var(--check-room)/2)] transition-[width] duration-200 ease-out motion-reduce:transition-none";
34
+ const Toggle = react.forwardRef(function Toggle({ className, styleVariant, color, size, showCheck, children, ...props }, ref) {
35
+ const group = react.useContext(require_lib_toggle_group_context.ToggleGroupContext);
36
+ const resolvedSize = size ?? group.size ?? "default";
37
+ const resolvedColor = color ?? group.color;
38
+ const hasOwnLook = styleVariant !== void 0 || color !== void 0;
39
+ const look = styleVariant ?? group.styleVariant ?? "solid";
40
+ const withCheck = (showCheck ?? group.showCheck ?? true) && !resolvedSize.startsWith("icon");
41
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react_toggle.Toggle, {
42
+ "data-slot": "toggle",
43
+ "data-style": hasOwnLook ? look : void 0,
44
+ "data-accent-color": color ? require_lib_accent_colors.accentByColor[color] : void 0,
45
+ className: (0, cn.cn)(require_components_button.buttonVariants({
46
+ variant: "secondary",
47
+ size: resolvedSize,
48
+ color: resolvedColor
49
+ }), "group/toggle [--check-drawn:0] data-disabled:pointer-events-none data-disabled:opacity-50", "data-pressed:bg-(--spark-style-bg,var(--color-primary)) data-pressed:text-(--spark-style-fg,var(--color-primary-foreground)) data-pressed:shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)] data-pressed:[--check-drawn:1] data-pressed:hover:bg-(--spark-style-bg-hover,var(--color-primary-hover))", look === "solid" && "[[data-slot=toggle-group][data-orientation=horizontal]>[data-pressed]+&]:data-pressed:shadow-[inset_1px_0_0_0_color-mix(in_oklab,currentColor_25%,transparent)] [[data-slot=toggle-group][data-orientation=vertical]>[data-pressed]+&]:data-pressed:shadow-[inset_0_1px_0_0_color-mix(in_oklab,currentColor_25%,transparent)]", group.styleVariant === "soft" && "not-data-pressed:bg-gray-a2 not-data-pressed:shadow-none not-data-pressed:hover:bg-gray-a3", withCheck && "gap-0 [--check-room:calc(var(--spark-icon-size)_+_0.5rem)]", className),
50
+ ref,
51
+ ...props,
52
+ children: withCheck ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
53
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
54
+ className: (0, cn.cn)(spacerClasses, "relative self-stretch group-data-pressed/toggle:w-(--check-room) group-data-pressed/toggle:shrink-0"),
55
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DrawnCheck, {})
56
+ }),
57
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
58
+ className: "inline-flex min-w-0 items-center gap-2",
59
+ children
60
+ }),
61
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: (0, cn.cn)(spacerClasses, "group-data-pressed/toggle:w-0") })
62
+ ] }) : children
63
+ });
64
+ });
65
+ Toggle.displayName = "Toggle";
66
+ //#endregion
67
+ exports.Toggle = Toggle;
68
+
69
+ //# sourceMappingURL=toggle.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle.cjs","names":["React","ToggleGroupContext","TogglePrimitive","accentByColor","buttonVariants"],"sources":["../../src/components/toggle.tsx"],"sourcesContent":["'use client'\n\nimport { Toggle as TogglePrimitive } from '@base-ui/react/toggle'\nimport type { VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { ToggleGroupContext } from '../lib/toggle-group-context'\nimport { cn } from '../utils/cn'\nimport { buttonVariants, type SparkButtonColor } from './button'\n\ntype ToggleSize = NonNullable<VariantProps<typeof buttonVariants>['size']>\n\n// ghost and outline are left out: pressed, they read weaker than the unpressed outline.\nexport type ToggleStyle = Extract<SparkStyle, 'solid' | 'soft' | 'surface'>\n\nexport interface ToggleProps extends Omit<\n React.ComponentProps<typeof TogglePrimitive>,\n 'ref'\n> {\n /** The pressed look; unpressed is the neutral outline, or a neutral fill in a soft group. */\n styleVariant?: ToggleStyle\n color?: SparkButtonColor\n size?: ToggleSize\n /** Draws a check on press. Icon sizes never show one. Defaults to `true`. */\n showCheck?: boolean\n}\n\n// Ported from volt-ui-experimental `lib/icons.tsx` DrawnCheck. Undrawing is\n// instant: the duration scales with --check-drawn.\nfunction DrawnCheck() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n data-slot=\"toggle-check\"\n className=\"absolute start-0 top-1/2 size-(--spark-icon-size) -translate-y-1/2 [opacity:var(--check-drawn,0)] transition-[stroke-dashoffset] [transition-duration:calc(var(--check-drawn,0)*260ms)] ease-out [stroke-dashoffset:calc(1_-_var(--check-drawn,0))] motion-reduce:transition-none\"\n >\n <path d=\"M5 12.5l4.5 4.5L19 7.5\" pathLength={1} strokeDasharray={1} />\n </svg>\n )\n}\n\n// volt SegmentedControl's split spacers: unpressed, the check's room is split\n// either side of the label; pressed, it moves left under the check. The label\n// slides, and the Toggle never resizes or shifts its group siblings.\nconst spacerClasses =\n 'min-w-0 shrink-[1000] w-[calc(var(--check-room)/2)] transition-[width] duration-200 ease-out motion-reduce:transition-none'\n\n// forwardRef keeps refs working for React 18 consumers (ref-as-prop is 19-only)\nconst Toggle = React.forwardRef<HTMLButtonElement, ToggleProps>(function Toggle(\n { className, styleVariant, color, size, showCheck, children, ...props },\n ref,\n) {\n const group = React.useContext(ToggleGroupContext)\n const resolvedSize = size ?? group.size ?? 'default'\n const resolvedColor = color ?? group.color\n const hasOwnLook = styleVariant !== undefined || color !== undefined\n const look = styleVariant ?? group.styleVariant ?? 'solid'\n const withCheck =\n (showCheck ?? group.showCheck ?? true) && !resolvedSize.startsWith('icon')\n\n return (\n <TogglePrimitive\n data-slot=\"toggle\"\n data-style={hasOwnLook ? look : undefined}\n data-accent-color={color ? accentByColor[color] : undefined}\n className={cn(\n buttonVariants({\n variant: 'secondary',\n size: resolvedSize,\n color: resolvedColor,\n }),\n 'group/toggle [--check-drawn:0] data-disabled:pointer-events-none data-disabled:opacity-50',\n 'data-pressed:bg-(--spark-style-bg,var(--color-primary)) data-pressed:text-(--spark-style-fg,var(--color-primary-foreground)) data-pressed:shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)] data-pressed:[--check-drawn:1] data-pressed:hover:bg-(--spark-style-bg-hover,var(--color-primary-hover))',\n // Solid has no pressed border, so two glued pressed items would merge;\n // the line matches ButtonGroupSeparator's.\n look === 'solid' &&\n '[[data-slot=toggle-group][data-orientation=horizontal]>[data-pressed]+&]:data-pressed:shadow-[inset_1px_0_0_0_color-mix(in_oklab,currentColor_25%,transparent)] [[data-slot=toggle-group][data-orientation=vertical]>[data-pressed]+&]:data-pressed:shadow-[inset_0_1px_0_0_color-mix(in_oklab,currentColor_25%,transparent)]',\n // In a soft group the outline would frame the spaced items. The fill sits\n // a step under soft's a3 so a pressed neutral item still stands out.\n group.styleVariant === 'soft' &&\n 'not-data-pressed:bg-gray-a2 not-data-pressed:shadow-none not-data-pressed:hover:bg-gray-a3',\n withCheck &&\n 'gap-0 [--check-room:calc(var(--spark-icon-size)_+_0.5rem)]',\n className,\n )}\n ref={ref}\n {...props}\n >\n {withCheck ? (\n <>\n <span\n className={cn(\n spacerClasses,\n 'relative self-stretch group-data-pressed/toggle:w-(--check-room) group-data-pressed/toggle:shrink-0',\n )}\n >\n <DrawnCheck />\n </span>\n <span className=\"inline-flex min-w-0 items-center gap-2\">\n {children}\n </span>\n <span\n className={cn(spacerClasses, 'group-data-pressed/toggle:w-0')}\n />\n </>\n ) : (\n children\n )}\n </TogglePrimitive>\n )\n})\n\nToggle.displayName = 'Toggle'\n\nexport { Toggle }\n"],"mappings":";;;;;;;;;;;;;AA8BA,SAAS,aAAa;CACpB,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,OAAM;EACN,SAAQ;EACR,MAAK;EACL,QAAO;EACP,aAAa;EACb,eAAc;EACd,gBAAe;EACf,eAAY;EACZ,aAAU;EACV,WAAU;YAEV,iBAAA,GAAA,kBAAA,KAAC,QAAD;GAAM,GAAE;GAAyB,YAAY;GAAG,iBAAiB;EAAI,CAAA;CAClE,CAAA;AAET;AAKA,MAAM,gBACJ;AAGF,MAAM,SAASA,MAAM,WAA2C,SAAS,OACvE,EAAE,WAAW,cAAc,OAAO,MAAM,WAAW,UAAU,GAAG,SAChE,KACA;CACA,MAAM,QAAQA,MAAM,WAAWC,iCAAAA,kBAAkB;CACjD,MAAM,eAAe,QAAQ,MAAM,QAAQ;CAC3C,MAAM,gBAAgB,SAAS,MAAM;CACrC,MAAM,aAAa,iBAAiB,KAAA,KAAa,UAAU,KAAA;CAC3D,MAAM,OAAO,gBAAgB,MAAM,gBAAgB;CACnD,MAAM,aACH,aAAa,MAAM,aAAa,SAAS,CAAC,aAAa,WAAW,MAAM;CAE3E,OACE,iBAAA,GAAA,kBAAA,KAACC,sBAAAA,QAAD;EACE,aAAU;EACV,cAAY,aAAa,OAAO,KAAA;EAChC,qBAAmB,QAAQC,0BAAAA,cAAc,SAAS,KAAA;EAClD,YAAA,GAAA,GAAA,IACEC,0BAAAA,eAAe;GACb,SAAS;GACT,MAAM;GACN,OAAO;EACT,CAAC,GACD,6FACA,qVAGA,SAAS,WACP,iUAGF,MAAM,iBAAiB,UACrB,8FACF,aACE,8DACF,SACF;EACK;EACL,GAAI;YAEH,YACC,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA;GACE,iBAAA,GAAA,kBAAA,KAAC,QAAD;IACE,YAAA,GAAA,GAAA,IACE,eACA,qGACF;cAEA,iBAAA,GAAA,kBAAA,KAAC,YAAD,CAAa,CAAA;GACT,CAAA;GACN,iBAAA,GAAA,kBAAA,KAAC,QAAD;IAAM,WAAU;IACb;GACG,CAAA;GACN,iBAAA,GAAA,kBAAA,KAAC,QAAD,EACE,YAAA,GAAA,GAAA,IAAc,eAAe,+BAA+B,EAC7D,CAAA;EACD,EAAA,CAAA,IAEF;CAEa,CAAA;AAErB,CAAC;AAED,OAAO,cAAc"}
@@ -0,0 +1,23 @@
1
+ "use client";
2
+
3
+ import { f as SparkStyle } from "../theme-types-Bn5E15-P.cjs";
4
+ import { SparkButtonColor, buttonVariants } from "./button.cjs";
5
+ import * as React$1 from "react";
6
+ import { VariantProps } from "class-variance-authority";
7
+ import { Toggle as Toggle$1 } from "@base-ui/react/toggle";
8
+
9
+ //#region src/components/toggle.d.ts
10
+ type ToggleSize = NonNullable<VariantProps<typeof buttonVariants>['size']>;
11
+ type ToggleStyle = Extract<SparkStyle, 'solid' | 'soft' | 'surface'>;
12
+ interface ToggleProps extends Omit<React$1.ComponentProps<typeof Toggle$1>, 'ref'> {
13
+ /** The pressed look; unpressed is the neutral outline, or a neutral fill in a soft group. */
14
+ styleVariant?: ToggleStyle;
15
+ color?: SparkButtonColor;
16
+ size?: ToggleSize;
17
+ /** Draws a check on press. Icon sizes never show one. Defaults to `true`. */
18
+ showCheck?: boolean;
19
+ }
20
+ declare const Toggle: React$1.ForwardRefExoticComponent<ToggleProps & React$1.RefAttributes<HTMLButtonElement>>;
21
+ //#endregion
22
+ export { Toggle, ToggleProps, ToggleStyle };
23
+ //# sourceMappingURL=toggle.d.cts.map
@@ -0,0 +1,23 @@
1
+ "use client";
2
+
3
+ import { f as SparkStyle } from "../theme-types-Bn5E15-P.js";
4
+ import { SparkButtonColor, buttonVariants } from "./button.js";
5
+ import * as React$1 from "react";
6
+ import { VariantProps } from "class-variance-authority";
7
+ import { Toggle as Toggle$1 } from "@base-ui/react/toggle";
8
+
9
+ //#region src/components/toggle.d.ts
10
+ type ToggleSize = NonNullable<VariantProps<typeof buttonVariants>['size']>;
11
+ type ToggleStyle = Extract<SparkStyle, 'solid' | 'soft' | 'surface'>;
12
+ interface ToggleProps extends Omit<React$1.ComponentProps<typeof Toggle$1>, 'ref'> {
13
+ /** The pressed look; unpressed is the neutral outline, or a neutral fill in a soft group. */
14
+ styleVariant?: ToggleStyle;
15
+ color?: SparkButtonColor;
16
+ size?: ToggleSize;
17
+ /** Draws a check on press. Icon sizes never show one. Defaults to `true`. */
18
+ showCheck?: boolean;
19
+ }
20
+ declare const Toggle: React$1.ForwardRefExoticComponent<ToggleProps & React$1.RefAttributes<HTMLButtonElement>>;
21
+ //#endregion
22
+ export { Toggle, ToggleProps, ToggleStyle };
23
+ //# sourceMappingURL=toggle.d.ts.map
@@ -0,0 +1,66 @@
1
+ "use client";
2
+ "use client";
3
+ import { accentByColor } from "../lib/accent-colors.js";
4
+ import { cn } from "../utils/cn.js";
5
+ import { ToggleGroupContext } from "../lib/toggle-group-context.js";
6
+ import { buttonVariants } from "./button.js";
7
+ import * as React$1 from "react";
8
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
9
+ import { Toggle as Toggle$1 } from "@base-ui/react/toggle";
10
+ //#region src/components/toggle.tsx
11
+ function DrawnCheck() {
12
+ return /* @__PURE__ */ jsx("svg", {
13
+ xmlns: "http://www.w3.org/2000/svg",
14
+ viewBox: "0 0 24 24",
15
+ fill: "none",
16
+ stroke: "currentColor",
17
+ strokeWidth: 2.5,
18
+ strokeLinecap: "round",
19
+ strokeLinejoin: "round",
20
+ "aria-hidden": "true",
21
+ "data-slot": "toggle-check",
22
+ className: "absolute start-0 top-1/2 size-(--spark-icon-size) -translate-y-1/2 [opacity:var(--check-drawn,0)] transition-[stroke-dashoffset] [transition-duration:calc(var(--check-drawn,0)*260ms)] ease-out [stroke-dashoffset:calc(1_-_var(--check-drawn,0))] motion-reduce:transition-none",
23
+ children: /* @__PURE__ */ jsx("path", {
24
+ d: "M5 12.5l4.5 4.5L19 7.5",
25
+ pathLength: 1,
26
+ strokeDasharray: 1
27
+ })
28
+ });
29
+ }
30
+ const spacerClasses = "min-w-0 shrink-[1000] w-[calc(var(--check-room)/2)] transition-[width] duration-200 ease-out motion-reduce:transition-none";
31
+ const Toggle = React$1.forwardRef(function Toggle({ className, styleVariant, color, size, showCheck, children, ...props }, ref) {
32
+ const group = React$1.useContext(ToggleGroupContext);
33
+ const resolvedSize = size ?? group.size ?? "default";
34
+ const resolvedColor = color ?? group.color;
35
+ const hasOwnLook = styleVariant !== void 0 || color !== void 0;
36
+ const look = styleVariant ?? group.styleVariant ?? "solid";
37
+ const withCheck = (showCheck ?? group.showCheck ?? true) && !resolvedSize.startsWith("icon");
38
+ return /* @__PURE__ */ jsx(Toggle$1, {
39
+ "data-slot": "toggle",
40
+ "data-style": hasOwnLook ? look : void 0,
41
+ "data-accent-color": color ? accentByColor[color] : void 0,
42
+ className: cn(buttonVariants({
43
+ variant: "secondary",
44
+ size: resolvedSize,
45
+ color: resolvedColor
46
+ }), "group/toggle [--check-drawn:0] data-disabled:pointer-events-none data-disabled:opacity-50", "data-pressed:bg-(--spark-style-bg,var(--color-primary)) data-pressed:text-(--spark-style-fg,var(--color-primary-foreground)) data-pressed:shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)] data-pressed:[--check-drawn:1] data-pressed:hover:bg-(--spark-style-bg-hover,var(--color-primary-hover))", look === "solid" && "[[data-slot=toggle-group][data-orientation=horizontal]>[data-pressed]+&]:data-pressed:shadow-[inset_1px_0_0_0_color-mix(in_oklab,currentColor_25%,transparent)] [[data-slot=toggle-group][data-orientation=vertical]>[data-pressed]+&]:data-pressed:shadow-[inset_0_1px_0_0_color-mix(in_oklab,currentColor_25%,transparent)]", group.styleVariant === "soft" && "not-data-pressed:bg-gray-a2 not-data-pressed:shadow-none not-data-pressed:hover:bg-gray-a3", withCheck && "gap-0 [--check-room:calc(var(--spark-icon-size)_+_0.5rem)]", className),
47
+ ref,
48
+ ...props,
49
+ children: withCheck ? /* @__PURE__ */ jsxs(Fragment, { children: [
50
+ /* @__PURE__ */ jsx("span", {
51
+ className: cn(spacerClasses, "relative self-stretch group-data-pressed/toggle:w-(--check-room) group-data-pressed/toggle:shrink-0"),
52
+ children: /* @__PURE__ */ jsx(DrawnCheck, {})
53
+ }),
54
+ /* @__PURE__ */ jsx("span", {
55
+ className: "inline-flex min-w-0 items-center gap-2",
56
+ children
57
+ }),
58
+ /* @__PURE__ */ jsx("span", { className: cn(spacerClasses, "group-data-pressed/toggle:w-0") })
59
+ ] }) : children
60
+ });
61
+ });
62
+ Toggle.displayName = "Toggle";
63
+ //#endregion
64
+ export { Toggle };
65
+
66
+ //# sourceMappingURL=toggle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle.js","names":["React","TogglePrimitive"],"sources":["../../src/components/toggle.tsx"],"sourcesContent":["'use client'\n\nimport { Toggle as TogglePrimitive } from '@base-ui/react/toggle'\nimport type { VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { ToggleGroupContext } from '../lib/toggle-group-context'\nimport { cn } from '../utils/cn'\nimport { buttonVariants, type SparkButtonColor } from './button'\n\ntype ToggleSize = NonNullable<VariantProps<typeof buttonVariants>['size']>\n\n// ghost and outline are left out: pressed, they read weaker than the unpressed outline.\nexport type ToggleStyle = Extract<SparkStyle, 'solid' | 'soft' | 'surface'>\n\nexport interface ToggleProps extends Omit<\n React.ComponentProps<typeof TogglePrimitive>,\n 'ref'\n> {\n /** The pressed look; unpressed is the neutral outline, or a neutral fill in a soft group. */\n styleVariant?: ToggleStyle\n color?: SparkButtonColor\n size?: ToggleSize\n /** Draws a check on press. Icon sizes never show one. Defaults to `true`. */\n showCheck?: boolean\n}\n\n// Ported from volt-ui-experimental `lib/icons.tsx` DrawnCheck. Undrawing is\n// instant: the duration scales with --check-drawn.\nfunction DrawnCheck() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n data-slot=\"toggle-check\"\n className=\"absolute start-0 top-1/2 size-(--spark-icon-size) -translate-y-1/2 [opacity:var(--check-drawn,0)] transition-[stroke-dashoffset] [transition-duration:calc(var(--check-drawn,0)*260ms)] ease-out [stroke-dashoffset:calc(1_-_var(--check-drawn,0))] motion-reduce:transition-none\"\n >\n <path d=\"M5 12.5l4.5 4.5L19 7.5\" pathLength={1} strokeDasharray={1} />\n </svg>\n )\n}\n\n// volt SegmentedControl's split spacers: unpressed, the check's room is split\n// either side of the label; pressed, it moves left under the check. The label\n// slides, and the Toggle never resizes or shifts its group siblings.\nconst spacerClasses =\n 'min-w-0 shrink-[1000] w-[calc(var(--check-room)/2)] transition-[width] duration-200 ease-out motion-reduce:transition-none'\n\n// forwardRef keeps refs working for React 18 consumers (ref-as-prop is 19-only)\nconst Toggle = React.forwardRef<HTMLButtonElement, ToggleProps>(function Toggle(\n { className, styleVariant, color, size, showCheck, children, ...props },\n ref,\n) {\n const group = React.useContext(ToggleGroupContext)\n const resolvedSize = size ?? group.size ?? 'default'\n const resolvedColor = color ?? group.color\n const hasOwnLook = styleVariant !== undefined || color !== undefined\n const look = styleVariant ?? group.styleVariant ?? 'solid'\n const withCheck =\n (showCheck ?? group.showCheck ?? true) && !resolvedSize.startsWith('icon')\n\n return (\n <TogglePrimitive\n data-slot=\"toggle\"\n data-style={hasOwnLook ? look : undefined}\n data-accent-color={color ? accentByColor[color] : undefined}\n className={cn(\n buttonVariants({\n variant: 'secondary',\n size: resolvedSize,\n color: resolvedColor,\n }),\n 'group/toggle [--check-drawn:0] data-disabled:pointer-events-none data-disabled:opacity-50',\n 'data-pressed:bg-(--spark-style-bg,var(--color-primary)) data-pressed:text-(--spark-style-fg,var(--color-primary-foreground)) data-pressed:shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)] data-pressed:[--check-drawn:1] data-pressed:hover:bg-(--spark-style-bg-hover,var(--color-primary-hover))',\n // Solid has no pressed border, so two glued pressed items would merge;\n // the line matches ButtonGroupSeparator's.\n look === 'solid' &&\n '[[data-slot=toggle-group][data-orientation=horizontal]>[data-pressed]+&]:data-pressed:shadow-[inset_1px_0_0_0_color-mix(in_oklab,currentColor_25%,transparent)] [[data-slot=toggle-group][data-orientation=vertical]>[data-pressed]+&]:data-pressed:shadow-[inset_0_1px_0_0_color-mix(in_oklab,currentColor_25%,transparent)]',\n // In a soft group the outline would frame the spaced items. The fill sits\n // a step under soft's a3 so a pressed neutral item still stands out.\n group.styleVariant === 'soft' &&\n 'not-data-pressed:bg-gray-a2 not-data-pressed:shadow-none not-data-pressed:hover:bg-gray-a3',\n withCheck &&\n 'gap-0 [--check-room:calc(var(--spark-icon-size)_+_0.5rem)]',\n className,\n )}\n ref={ref}\n {...props}\n >\n {withCheck ? (\n <>\n <span\n className={cn(\n spacerClasses,\n 'relative self-stretch group-data-pressed/toggle:w-(--check-room) group-data-pressed/toggle:shrink-0',\n )}\n >\n <DrawnCheck />\n </span>\n <span className=\"inline-flex min-w-0 items-center gap-2\">\n {children}\n </span>\n <span\n className={cn(spacerClasses, 'group-data-pressed/toggle:w-0')}\n />\n </>\n ) : (\n children\n )}\n </TogglePrimitive>\n )\n})\n\nToggle.displayName = 'Toggle'\n\nexport { Toggle }\n"],"mappings":";;;;;;;;;;AA8BA,SAAS,aAAa;CACpB,OACE,oBAAC,OAAD;EACE,OAAM;EACN,SAAQ;EACR,MAAK;EACL,QAAO;EACP,aAAa;EACb,eAAc;EACd,gBAAe;EACf,eAAY;EACZ,aAAU;EACV,WAAU;YAEV,oBAAC,QAAD;GAAM,GAAE;GAAyB,YAAY;GAAG,iBAAiB;EAAI,CAAA;CAClE,CAAA;AAET;AAKA,MAAM,gBACJ;AAGF,MAAM,SAASA,QAAM,WAA2C,SAAS,OACvE,EAAE,WAAW,cAAc,OAAO,MAAM,WAAW,UAAU,GAAG,SAChE,KACA;CACA,MAAM,QAAQA,QAAM,WAAW,kBAAkB;CACjD,MAAM,eAAe,QAAQ,MAAM,QAAQ;CAC3C,MAAM,gBAAgB,SAAS,MAAM;CACrC,MAAM,aAAa,iBAAiB,KAAA,KAAa,UAAU,KAAA;CAC3D,MAAM,OAAO,gBAAgB,MAAM,gBAAgB;CACnD,MAAM,aACH,aAAa,MAAM,aAAa,SAAS,CAAC,aAAa,WAAW,MAAM;CAE3E,OACE,oBAACC,UAAD;EACE,aAAU;EACV,cAAY,aAAa,OAAO,KAAA;EAChC,qBAAmB,QAAQ,cAAc,SAAS,KAAA;EAClD,WAAW,GACT,eAAe;GACb,SAAS;GACT,MAAM;GACN,OAAO;EACT,CAAC,GACD,6FACA,qVAGA,SAAS,WACP,iUAGF,MAAM,iBAAiB,UACrB,8FACF,aACE,8DACF,SACF;EACK;EACL,GAAI;YAEH,YACC,qBAAA,UAAA,EAAA,UAAA;GACE,oBAAC,QAAD;IACE,WAAW,GACT,eACA,qGACF;cAEA,oBAAC,YAAD,CAAa,CAAA;GACT,CAAA;GACN,oBAAC,QAAD;IAAM,WAAU;IACb;GACG,CAAA;GACN,oBAAC,QAAD,EACE,WAAW,GAAG,eAAe,+BAA+B,EAC7D,CAAA;EACD,EAAA,CAAA,IAEF;CAEa,CAAA;AAErB,CAAC;AAED,OAAO,cAAc"}
@@ -1,12 +1,12 @@
1
1
  "use client";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const require_chunk = require("../chunk-DY84GLCh.cjs");
4
- let _epilot_spark_icons = require("@epilot/spark-icons");
5
4
  let react = require("react");
6
5
  react = require_chunk.__toESM(react);
6
+ let _epilot_spark_icons = require("@epilot/spark-icons");
7
7
  let react_jsx_runtime = require("react/jsx-runtime");
8
8
  let _base_ui_react_tooltip = require("@base-ui/react/tooltip");
9
- let cnfast = require("cnfast");
9
+ let cn = require("cn");
10
10
  //#region src/components/tooltip.tsx
11
11
  const TooltipProvider = ({ delay = 0, ...props }) => {
12
12
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react_tooltip.Tooltip.Provider, {
@@ -39,11 +39,11 @@ const TooltipContent = ({ className, hideArrow = false, variant = "default", chi
39
39
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_base_ui_react_tooltip.Tooltip.Popup, {
40
40
  "data-slot": "tooltip-content",
41
41
  "data-variant": variant,
42
- className: (0, cnfast.cn)("z-50 w-fit origin-(--transform-origin) rounded-lg p-2 text-xs leading-none transition-[opacity,scale,translate] duration-150", "data-starting-style:scale-95 data-starting-style:opacity-0", "data-[side=bottom]:data-starting-style:-translate-y-1 data-[side=left]:data-starting-style:translate-x-1 data-[side=right]:data-starting-style:-translate-x-1 data-[side=top]:data-starting-style:translate-y-1", "data-ending-style:opacity-0 data-ending-style:duration-0", "data-[variant=default]:bg-gray-12 data-[variant=default]:text-gray-1", "data-[variant=destructive]:bg-red-12 data-[variant=destructive]:text-red-1", className),
42
+ className: (0, cn.cn)("z-50 w-fit origin-(--transform-origin) rounded-lg p-2 text-xs leading-none transition-[opacity,scale,translate] duration-150 motion-reduce:transition-opacity", "data-starting-style:scale-95 data-starting-style:opacity-0", "data-[side=bottom]:data-starting-style:-translate-y-1 data-[side=left]:data-starting-style:translate-x-1 data-[side=right]:data-starting-style:-translate-x-1 data-[side=top]:data-starting-style:translate-y-1", "data-ending-style:opacity-0 data-ending-style:duration-0", "data-[variant=default]:bg-gray-12 data-[variant=default]:text-gray-1", "data-[variant=destructive]:bg-red-12 data-[variant=destructive]:text-red-1", className),
43
43
  ...props,
44
44
  children: [children, !hideArrow && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react_tooltip.Tooltip.Arrow, {
45
45
  "data-variant": variant,
46
- className: (0, cnfast.cn)("z-50", "data-[side=bottom]:top-[-8px]", "data-[side=top]:bottom-[-8px] data-[side=top]:rotate-180", "data-[side=left]:right-[-13px] data-[side=left]:rotate-90", "data-[side=right]:left-[-13px] data-[side=right]:-rotate-90", "data-[variant=default]:text-gray-12", "data-[variant=destructive]:text-red-12"),
46
+ className: (0, cn.cn)("z-50", "data-[side=bottom]:top-[-8px]", "data-[side=top]:bottom-[-8px] data-[side=top]:rotate-180", "data-[side=left]:right-[-13px] data-[side=left]:rotate-90", "data-[side=right]:left-[-13px] data-[side=right]:-rotate-90", "data-[variant=default]:text-gray-12", "data-[variant=destructive]:text-red-12"),
47
47
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
48
48
  fill: "none",
49
49
  height: "10",
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.cjs","names":["TooltipPrimitive","Info"],"sources":["../../src/components/tooltip.tsx"],"sourcesContent":["import { Tooltip as TooltipPrimitive } from '@base-ui/react/tooltip'\nimport { Info } from '@epilot/spark-icons'\nimport * as React from 'react'\nimport { cn } from '../utils/cn'\n\nconst TooltipProvider = ({\n delay = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) => {\n return <TooltipPrimitive.Provider delay={delay} {...props} />\n}\n\nconst TooltipPortal = ({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Portal>) => {\n return <TooltipPrimitive.Portal data-slot=\"tooltip-portal\" {...props} />\n}\n\ntype TooltipProps = React.ComponentProps<typeof TooltipPrimitive.Root>\n\nconst Tooltip = ({ ...props }: TooltipProps) => {\n return <TooltipPrimitive.Root {...props} />\n}\n\nconst TooltipTrigger = ({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) => {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\ntype TooltipContentProps = React.ComponentProps<typeof TooltipPrimitive.Popup> &\n Pick<\n TooltipPrimitive.Positioner.Props,\n 'align' | 'alignOffset' | 'side' | 'sideOffset'\n > & {\n hideArrow?: boolean\n variant?: 'default' | 'destructive'\n }\n\nconst TooltipContent = ({\n className,\n hideArrow = false,\n variant = 'default',\n children,\n align,\n alignOffset,\n side,\n sideOffset = 4,\n ...props\n}: TooltipContentProps) => {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n className=\"isolate z-50\"\n side={side}\n sideOffset={sideOffset}\n >\n <TooltipPrimitive.Popup\n data-slot=\"tooltip-content\"\n data-variant={variant}\n className={cn(\n 'z-50 w-fit origin-(--transform-origin) rounded-lg p-2 text-xs leading-none transition-[opacity,scale,translate] duration-150',\n // enter: fade + zoom + a slight per-side slide (was animate-in)\n 'data-starting-style:scale-95 data-starting-style:opacity-0',\n 'data-[side=bottom]:data-starting-style:-translate-y-1 data-[side=left]:data-starting-style:translate-x-1 data-[side=right]:data-starting-style:-translate-x-1 data-[side=top]:data-starting-style:translate-y-1',\n // exit: instant (was data-[state=closed]:duration-0)\n 'data-ending-style:opacity-0 data-ending-style:duration-0',\n 'data-[variant=default]:bg-gray-12 data-[variant=default]:text-gray-1',\n 'data-[variant=destructive]:bg-red-12 data-[variant=destructive]:text-red-1',\n className,\n )}\n {...props}\n >\n {children}\n {!hideArrow && (\n <TooltipPrimitive.Arrow\n data-variant={variant}\n className={cn(\n 'z-50',\n // svg tip points up; rotate per side, overlap 2px for a seamless join\n 'data-[side=bottom]:top-[-8px]',\n 'data-[side=top]:bottom-[-8px] data-[side=top]:rotate-180',\n 'data-[side=left]:right-[-13px] data-[side=left]:rotate-90',\n 'data-[side=right]:left-[-13px] data-[side=right]:-rotate-90',\n 'data-[variant=default]:text-gray-12',\n 'data-[variant=destructive]:text-red-12',\n )}\n >\n <svg fill=\"none\" height=\"10\" viewBox=\"0 0 20 10\" width=\"20\">\n <path\n d=\"M9.66437 2.60207L4.80758 6.97318C4.07308 7.63423 3.11989 8 2.13172 8H0V10H20V8H18.5349C17.5468 8 16.5936 7.63423 15.8591 6.97318L11.0023 2.60207C10.622 2.2598 10.0447 2.25979 9.66437 2.60207Z\"\n fill=\"currentColor\"\n />\n </svg>\n </TooltipPrimitive.Arrow>\n )}\n </TooltipPrimitive.Popup>\n </TooltipPrimitive.Positioner>\n </TooltipPrimitive.Portal>\n )\n}\n\ninterface InfoTooltipProps {\n content: string\n label: string\n 'aria-label'?: string\n}\n\nconst InfoTooltip = ({\n content,\n label,\n 'aria-label': ariaLabel,\n}: InfoTooltipProps) => {\n return (\n <Tooltip>\n <TooltipTrigger\n render={\n <button\n aria-label={ariaLabel ?? label}\n className=\"touch-target inline-flex size-6 min-h-[24px] min-w-[24px] shrink-0 cursor-help items-center justify-center rounded-full p-0 text-gray-light transition-colors hover:text-gray focus-visible:ring-2 focus-visible:ring-primary focus-visible:outline-none\"\n type=\"button\"\n />\n }\n >\n <Info className=\"text-sm!\" />\n </TooltipTrigger>\n <TooltipContent className=\"max-w-xs whitespace-pre-line\">\n {content}\n </TooltipContent>\n </Tooltip>\n )\n}\n\nexport {\n Tooltip,\n TooltipTrigger,\n TooltipContent,\n TooltipProvider,\n TooltipPortal,\n InfoTooltip,\n}\n"],"mappings":";;;;;;;;;;AAKA,MAAM,mBAAmB,EACvB,QAAQ,GACR,GAAG,YACyD;CAC5D,OAAO,iBAAA,GAAA,kBAAA,KAACA,uBAAAA,QAAiB,UAAlB;EAAkC;EAAO,GAAI;CAAQ,CAAA;AAC9D;AAEA,MAAM,iBAAiB,EACrB,GAAG,YACuD;CAC1D,OAAO,iBAAA,GAAA,kBAAA,KAACA,uBAAAA,QAAiB,QAAlB;EAAyB,aAAU;EAAiB,GAAI;CAAQ,CAAA;AACzE;AAIA,MAAM,WAAW,EAAE,GAAG,YAA0B;CAC9C,OAAO,iBAAA,GAAA,kBAAA,KAACA,uBAAAA,QAAiB,MAAlB,EAAuB,GAAI,MAAQ,CAAA;AAC5C;AAEA,MAAM,kBAAkB,EACtB,GAAG,YACwD;CAC3D,OAAO,iBAAA,GAAA,kBAAA,KAACA,uBAAAA,QAAiB,SAAlB;EAA0B,aAAU;EAAkB,GAAI;CAAQ,CAAA;AAC3E;AAWA,MAAM,kBAAkB,EACtB,WACA,YAAY,OACZ,UAAU,WACV,UACA,OACA,aACA,MACA,aAAa,GACb,GAAG,YACsB;CACzB,OACE,iBAAA,GAAA,kBAAA,KAACA,uBAAAA,QAAiB,QAAlB,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACA,uBAAAA,QAAiB,YAAlB;EACS;EACM;EACb,WAAU;EACJ;EACM;YAEZ,iBAAA,GAAA,kBAAA,MAACA,uBAAAA,QAAiB,OAAlB;GACE,aAAU;GACV,gBAAc;GACd,YAAA,GAAA,OAAA,IACE,gIAEA,8DACA,mNAEA,4DACA,wEACA,8EACA,SACF;GACA,GAAI;aAdN,CAgBG,UACA,CAAC,aACA,iBAAA,GAAA,kBAAA,KAACA,uBAAAA,QAAiB,OAAlB;IACE,gBAAc;IACd,YAAA,GAAA,OAAA,IACE,QAEA,iCACA,4DACA,6DACA,+DACA,uCACA,wCACF;cAEA,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,MAAK;KAAO,QAAO;KAAK,SAAQ;KAAY,OAAM;eACrD,iBAAA,GAAA,kBAAA,KAAC,QAAD;MACE,GAAE;MACF,MAAK;KACN,CAAA;IACE,CAAA;GACiB,CAAA,CAEJ;;CACG,CAAA,EACN,CAAA;AAE7B;AAQA,MAAM,eAAe,EACnB,SACA,OACA,cAAc,gBACQ;CACtB,OACE,iBAAA,GAAA,kBAAA,MAAC,SAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAC,gBAAD;EACE,QACE,iBAAA,GAAA,kBAAA,KAAC,UAAD;GACE,cAAY,aAAa;GACzB,WAAU;GACV,MAAK;EACN,CAAA;YAGH,iBAAA,GAAA,kBAAA,KAACC,oBAAAA,MAAD,EAAM,WAAU,WAAY,CAAA;CACd,CAAA,GAChB,iBAAA,GAAA,kBAAA,KAAC,gBAAD;EAAgB,WAAU;YACvB;CACa,CAAA,CACT,EAAA,CAAA;AAEb"}
1
+ {"version":3,"file":"tooltip.cjs","names":["TooltipPrimitive","Info"],"sources":["../../src/components/tooltip.tsx"],"sourcesContent":["import { Tooltip as TooltipPrimitive } from '@base-ui/react/tooltip'\nimport { Info } from '@epilot/spark-icons'\nimport * as React from 'react'\nimport { cn } from '../utils/cn'\n\nconst TooltipProvider = ({\n delay = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) => {\n return <TooltipPrimitive.Provider delay={delay} {...props} />\n}\n\nconst TooltipPortal = ({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Portal>) => {\n return <TooltipPrimitive.Portal data-slot=\"tooltip-portal\" {...props} />\n}\n\ntype TooltipProps = React.ComponentProps<typeof TooltipPrimitive.Root>\n\nconst Tooltip = ({ ...props }: TooltipProps) => {\n return <TooltipPrimitive.Root {...props} />\n}\n\nconst TooltipTrigger = ({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) => {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\ntype TooltipContentProps = React.ComponentProps<typeof TooltipPrimitive.Popup> &\n Pick<\n TooltipPrimitive.Positioner.Props,\n 'align' | 'alignOffset' | 'side' | 'sideOffset'\n > & {\n hideArrow?: boolean\n variant?: 'default' | 'destructive'\n }\n\nconst TooltipContent = ({\n className,\n hideArrow = false,\n variant = 'default',\n children,\n align,\n alignOffset,\n side,\n sideOffset = 4,\n ...props\n}: TooltipContentProps) => {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n className=\"isolate z-50\"\n side={side}\n sideOffset={sideOffset}\n >\n <TooltipPrimitive.Popup\n data-slot=\"tooltip-content\"\n data-variant={variant}\n className={cn(\n 'z-50 w-fit origin-(--transform-origin) rounded-lg p-2 text-xs leading-none transition-[opacity,scale,translate] duration-150 motion-reduce:transition-opacity',\n // enter: fade + zoom + a slight per-side slide (was animate-in)\n 'data-starting-style:scale-95 data-starting-style:opacity-0',\n 'data-[side=bottom]:data-starting-style:-translate-y-1 data-[side=left]:data-starting-style:translate-x-1 data-[side=right]:data-starting-style:-translate-x-1 data-[side=top]:data-starting-style:translate-y-1',\n // exit: instant (was data-[state=closed]:duration-0)\n 'data-ending-style:opacity-0 data-ending-style:duration-0',\n 'data-[variant=default]:bg-gray-12 data-[variant=default]:text-gray-1',\n 'data-[variant=destructive]:bg-red-12 data-[variant=destructive]:text-red-1',\n className,\n )}\n {...props}\n >\n {children}\n {!hideArrow && (\n <TooltipPrimitive.Arrow\n data-variant={variant}\n className={cn(\n 'z-50',\n // svg tip points up; rotate per side, overlap 2px for a seamless join\n 'data-[side=bottom]:top-[-8px]',\n 'data-[side=top]:bottom-[-8px] data-[side=top]:rotate-180',\n 'data-[side=left]:right-[-13px] data-[side=left]:rotate-90',\n 'data-[side=right]:left-[-13px] data-[side=right]:-rotate-90',\n 'data-[variant=default]:text-gray-12',\n 'data-[variant=destructive]:text-red-12',\n )}\n >\n <svg fill=\"none\" height=\"10\" viewBox=\"0 0 20 10\" width=\"20\">\n <path\n d=\"M9.66437 2.60207L4.80758 6.97318C4.07308 7.63423 3.11989 8 2.13172 8H0V10H20V8H18.5349C17.5468 8 16.5936 7.63423 15.8591 6.97318L11.0023 2.60207C10.622 2.2598 10.0447 2.25979 9.66437 2.60207Z\"\n fill=\"currentColor\"\n />\n </svg>\n </TooltipPrimitive.Arrow>\n )}\n </TooltipPrimitive.Popup>\n </TooltipPrimitive.Positioner>\n </TooltipPrimitive.Portal>\n )\n}\n\ninterface InfoTooltipProps {\n content: string\n label: string\n 'aria-label'?: string\n}\n\nconst InfoTooltip = ({\n content,\n label,\n 'aria-label': ariaLabel,\n}: InfoTooltipProps) => {\n return (\n <Tooltip>\n <TooltipTrigger\n render={\n <button\n aria-label={ariaLabel ?? label}\n className=\"touch-target inline-flex size-6 min-h-[24px] min-w-[24px] shrink-0 cursor-help items-center justify-center rounded-full p-0 text-gray-light transition-colors hover:text-gray focus-visible:ring-2 focus-visible:ring-primary focus-visible:outline-none\"\n type=\"button\"\n />\n }\n >\n <Info className=\"text-sm!\" />\n </TooltipTrigger>\n <TooltipContent className=\"max-w-xs whitespace-pre-line\">\n {content}\n </TooltipContent>\n </Tooltip>\n )\n}\n\nexport {\n Tooltip,\n TooltipTrigger,\n TooltipContent,\n TooltipProvider,\n TooltipPortal,\n InfoTooltip,\n}\n"],"mappings":";;;;;;;;;;AAKA,MAAM,mBAAmB,EACvB,QAAQ,GACR,GAAG,YACyD;CAC5D,OAAO,iBAAA,GAAA,kBAAA,KAACA,uBAAAA,QAAiB,UAAlB;EAAkC;EAAO,GAAI;CAAQ,CAAA;AAC9D;AAEA,MAAM,iBAAiB,EACrB,GAAG,YACuD;CAC1D,OAAO,iBAAA,GAAA,kBAAA,KAACA,uBAAAA,QAAiB,QAAlB;EAAyB,aAAU;EAAiB,GAAI;CAAQ,CAAA;AACzE;AAIA,MAAM,WAAW,EAAE,GAAG,YAA0B;CAC9C,OAAO,iBAAA,GAAA,kBAAA,KAACA,uBAAAA,QAAiB,MAAlB,EAAuB,GAAI,MAAQ,CAAA;AAC5C;AAEA,MAAM,kBAAkB,EACtB,GAAG,YACwD;CAC3D,OAAO,iBAAA,GAAA,kBAAA,KAACA,uBAAAA,QAAiB,SAAlB;EAA0B,aAAU;EAAkB,GAAI;CAAQ,CAAA;AAC3E;AAWA,MAAM,kBAAkB,EACtB,WACA,YAAY,OACZ,UAAU,WACV,UACA,OACA,aACA,MACA,aAAa,GACb,GAAG,YACsB;CACzB,OACE,iBAAA,GAAA,kBAAA,KAACA,uBAAAA,QAAiB,QAAlB,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACA,uBAAAA,QAAiB,YAAlB;EACS;EACM;EACb,WAAU;EACJ;EACM;YAEZ,iBAAA,GAAA,kBAAA,MAACA,uBAAAA,QAAiB,OAAlB;GACE,aAAU;GACV,gBAAc;GACd,YAAA,GAAA,GAAA,IACE,iKAEA,8DACA,mNAEA,4DACA,wEACA,8EACA,SACF;GACA,GAAI;aAdN,CAgBG,UACA,CAAC,aACA,iBAAA,GAAA,kBAAA,KAACA,uBAAAA,QAAiB,OAAlB;IACE,gBAAc;IACd,YAAA,GAAA,GAAA,IACE,QAEA,iCACA,4DACA,6DACA,+DACA,uCACA,wCACF;cAEA,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,MAAK;KAAO,QAAO;KAAK,SAAQ;KAAY,OAAM;eACrD,iBAAA,GAAA,kBAAA,KAAC,QAAD;MACE,GAAE;MACF,MAAK;KACN,CAAA;IACE,CAAA;GACiB,CAAA,CAEJ;;CACG,CAAA,EACN,CAAA;AAE7B;AAQA,MAAM,eAAe,EACnB,SACA,OACA,cAAc,gBACQ;CACtB,OACE,iBAAA,GAAA,kBAAA,MAAC,SAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAC,gBAAD;EACE,QACE,iBAAA,GAAA,kBAAA,KAAC,UAAD;GACE,cAAY,aAAa;GACzB,WAAU;GACV,MAAK;EACN,CAAA;YAGH,iBAAA,GAAA,kBAAA,KAACC,oBAAAA,MAAD,EAAM,WAAU,WAAY,CAAA;CACd,CAAA,GAChB,iBAAA,GAAA,kBAAA,KAAC,gBAAD;EAAgB,WAAU;YACvB;CACa,CAAA,CACT,EAAA,CAAA;AAEb"}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { cn } from "../utils/cn.js";
3
- import { Info } from "@epilot/spark-icons";
4
3
  import "react";
4
+ import { Info } from "@epilot/spark-icons";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  import { Tooltip as Tooltip$1 } from "@base-ui/react/tooltip";
7
7
  //#region src/components/tooltip.tsx
@@ -36,7 +36,7 @@ const TooltipContent = ({ className, hideArrow = false, variant = "default", chi
36
36
  children: /* @__PURE__ */ jsxs(Tooltip$1.Popup, {
37
37
  "data-slot": "tooltip-content",
38
38
  "data-variant": variant,
39
- className: cn("z-50 w-fit origin-(--transform-origin) rounded-lg p-2 text-xs leading-none transition-[opacity,scale,translate] duration-150", "data-starting-style:scale-95 data-starting-style:opacity-0", "data-[side=bottom]:data-starting-style:-translate-y-1 data-[side=left]:data-starting-style:translate-x-1 data-[side=right]:data-starting-style:-translate-x-1 data-[side=top]:data-starting-style:translate-y-1", "data-ending-style:opacity-0 data-ending-style:duration-0", "data-[variant=default]:bg-gray-12 data-[variant=default]:text-gray-1", "data-[variant=destructive]:bg-red-12 data-[variant=destructive]:text-red-1", className),
39
+ className: cn("z-50 w-fit origin-(--transform-origin) rounded-lg p-2 text-xs leading-none transition-[opacity,scale,translate] duration-150 motion-reduce:transition-opacity", "data-starting-style:scale-95 data-starting-style:opacity-0", "data-[side=bottom]:data-starting-style:-translate-y-1 data-[side=left]:data-starting-style:translate-x-1 data-[side=right]:data-starting-style:-translate-x-1 data-[side=top]:data-starting-style:translate-y-1", "data-ending-style:opacity-0 data-ending-style:duration-0", "data-[variant=default]:bg-gray-12 data-[variant=default]:text-gray-1", "data-[variant=destructive]:bg-red-12 data-[variant=destructive]:text-red-1", className),
40
40
  ...props,
41
41
  children: [children, !hideArrow && /* @__PURE__ */ jsx(Tooltip$1.Arrow, {
42
42
  "data-variant": variant,
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.js","names":["TooltipPrimitive"],"sources":["../../src/components/tooltip.tsx"],"sourcesContent":["import { Tooltip as TooltipPrimitive } from '@base-ui/react/tooltip'\nimport { Info } from '@epilot/spark-icons'\nimport * as React from 'react'\nimport { cn } from '../utils/cn'\n\nconst TooltipProvider = ({\n delay = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) => {\n return <TooltipPrimitive.Provider delay={delay} {...props} />\n}\n\nconst TooltipPortal = ({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Portal>) => {\n return <TooltipPrimitive.Portal data-slot=\"tooltip-portal\" {...props} />\n}\n\ntype TooltipProps = React.ComponentProps<typeof TooltipPrimitive.Root>\n\nconst Tooltip = ({ ...props }: TooltipProps) => {\n return <TooltipPrimitive.Root {...props} />\n}\n\nconst TooltipTrigger = ({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) => {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\ntype TooltipContentProps = React.ComponentProps<typeof TooltipPrimitive.Popup> &\n Pick<\n TooltipPrimitive.Positioner.Props,\n 'align' | 'alignOffset' | 'side' | 'sideOffset'\n > & {\n hideArrow?: boolean\n variant?: 'default' | 'destructive'\n }\n\nconst TooltipContent = ({\n className,\n hideArrow = false,\n variant = 'default',\n children,\n align,\n alignOffset,\n side,\n sideOffset = 4,\n ...props\n}: TooltipContentProps) => {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n className=\"isolate z-50\"\n side={side}\n sideOffset={sideOffset}\n >\n <TooltipPrimitive.Popup\n data-slot=\"tooltip-content\"\n data-variant={variant}\n className={cn(\n 'z-50 w-fit origin-(--transform-origin) rounded-lg p-2 text-xs leading-none transition-[opacity,scale,translate] duration-150',\n // enter: fade + zoom + a slight per-side slide (was animate-in)\n 'data-starting-style:scale-95 data-starting-style:opacity-0',\n 'data-[side=bottom]:data-starting-style:-translate-y-1 data-[side=left]:data-starting-style:translate-x-1 data-[side=right]:data-starting-style:-translate-x-1 data-[side=top]:data-starting-style:translate-y-1',\n // exit: instant (was data-[state=closed]:duration-0)\n 'data-ending-style:opacity-0 data-ending-style:duration-0',\n 'data-[variant=default]:bg-gray-12 data-[variant=default]:text-gray-1',\n 'data-[variant=destructive]:bg-red-12 data-[variant=destructive]:text-red-1',\n className,\n )}\n {...props}\n >\n {children}\n {!hideArrow && (\n <TooltipPrimitive.Arrow\n data-variant={variant}\n className={cn(\n 'z-50',\n // svg tip points up; rotate per side, overlap 2px for a seamless join\n 'data-[side=bottom]:top-[-8px]',\n 'data-[side=top]:bottom-[-8px] data-[side=top]:rotate-180',\n 'data-[side=left]:right-[-13px] data-[side=left]:rotate-90',\n 'data-[side=right]:left-[-13px] data-[side=right]:-rotate-90',\n 'data-[variant=default]:text-gray-12',\n 'data-[variant=destructive]:text-red-12',\n )}\n >\n <svg fill=\"none\" height=\"10\" viewBox=\"0 0 20 10\" width=\"20\">\n <path\n d=\"M9.66437 2.60207L4.80758 6.97318C4.07308 7.63423 3.11989 8 2.13172 8H0V10H20V8H18.5349C17.5468 8 16.5936 7.63423 15.8591 6.97318L11.0023 2.60207C10.622 2.2598 10.0447 2.25979 9.66437 2.60207Z\"\n fill=\"currentColor\"\n />\n </svg>\n </TooltipPrimitive.Arrow>\n )}\n </TooltipPrimitive.Popup>\n </TooltipPrimitive.Positioner>\n </TooltipPrimitive.Portal>\n )\n}\n\ninterface InfoTooltipProps {\n content: string\n label: string\n 'aria-label'?: string\n}\n\nconst InfoTooltip = ({\n content,\n label,\n 'aria-label': ariaLabel,\n}: InfoTooltipProps) => {\n return (\n <Tooltip>\n <TooltipTrigger\n render={\n <button\n aria-label={ariaLabel ?? label}\n className=\"touch-target inline-flex size-6 min-h-[24px] min-w-[24px] shrink-0 cursor-help items-center justify-center rounded-full p-0 text-gray-light transition-colors hover:text-gray focus-visible:ring-2 focus-visible:ring-primary focus-visible:outline-none\"\n type=\"button\"\n />\n }\n >\n <Info className=\"text-sm!\" />\n </TooltipTrigger>\n <TooltipContent className=\"max-w-xs whitespace-pre-line\">\n {content}\n </TooltipContent>\n </Tooltip>\n )\n}\n\nexport {\n Tooltip,\n TooltipTrigger,\n TooltipContent,\n TooltipProvider,\n TooltipPortal,\n InfoTooltip,\n}\n"],"mappings":";;;;;;;AAKA,MAAM,mBAAmB,EACvB,QAAQ,GACR,GAAG,YACyD;CAC5D,OAAO,oBAACA,UAAiB,UAAlB;EAAkC;EAAO,GAAI;CAAQ,CAAA;AAC9D;AAEA,MAAM,iBAAiB,EACrB,GAAG,YACuD;CAC1D,OAAO,oBAACA,UAAiB,QAAlB;EAAyB,aAAU;EAAiB,GAAI;CAAQ,CAAA;AACzE;AAIA,MAAM,WAAW,EAAE,GAAG,YAA0B;CAC9C,OAAO,oBAACA,UAAiB,MAAlB,EAAuB,GAAI,MAAQ,CAAA;AAC5C;AAEA,MAAM,kBAAkB,EACtB,GAAG,YACwD;CAC3D,OAAO,oBAACA,UAAiB,SAAlB;EAA0B,aAAU;EAAkB,GAAI;CAAQ,CAAA;AAC3E;AAWA,MAAM,kBAAkB,EACtB,WACA,YAAY,OACZ,UAAU,WACV,UACA,OACA,aACA,MACA,aAAa,GACb,GAAG,YACsB;CACzB,OACE,oBAACA,UAAiB,QAAlB,EAAA,UACE,oBAACA,UAAiB,YAAlB;EACS;EACM;EACb,WAAU;EACJ;EACM;YAEZ,qBAACA,UAAiB,OAAlB;GACE,aAAU;GACV,gBAAc;GACd,WAAW,GACT,gIAEA,8DACA,mNAEA,4DACA,wEACA,8EACA,SACF;GACA,GAAI;aAdN,CAgBG,UACA,CAAC,aACA,oBAACA,UAAiB,OAAlB;IACE,gBAAc;IACd,WAAW,GACT,QAEA,iCACA,4DACA,6DACA,+DACA,uCACA,wCACF;cAEA,oBAAC,OAAD;KAAK,MAAK;KAAO,QAAO;KAAK,SAAQ;KAAY,OAAM;eACrD,oBAAC,QAAD;MACE,GAAE;MACF,MAAK;KACN,CAAA;IACE,CAAA;GACiB,CAAA,CAEJ;;CACG,CAAA,EACN,CAAA;AAE7B;AAQA,MAAM,eAAe,EACnB,SACA,OACA,cAAc,gBACQ;CACtB,OACE,qBAAC,SAAD,EAAA,UAAA,CACE,oBAAC,gBAAD;EACE,QACE,oBAAC,UAAD;GACE,cAAY,aAAa;GACzB,WAAU;GACV,MAAK;EACN,CAAA;YAGH,oBAAC,MAAD,EAAM,WAAU,WAAY,CAAA;CACd,CAAA,GAChB,oBAAC,gBAAD;EAAgB,WAAU;YACvB;CACa,CAAA,CACT,EAAA,CAAA;AAEb"}
1
+ {"version":3,"file":"tooltip.js","names":["TooltipPrimitive"],"sources":["../../src/components/tooltip.tsx"],"sourcesContent":["import { Tooltip as TooltipPrimitive } from '@base-ui/react/tooltip'\nimport { Info } from '@epilot/spark-icons'\nimport * as React from 'react'\nimport { cn } from '../utils/cn'\n\nconst TooltipProvider = ({\n delay = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) => {\n return <TooltipPrimitive.Provider delay={delay} {...props} />\n}\n\nconst TooltipPortal = ({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Portal>) => {\n return <TooltipPrimitive.Portal data-slot=\"tooltip-portal\" {...props} />\n}\n\ntype TooltipProps = React.ComponentProps<typeof TooltipPrimitive.Root>\n\nconst Tooltip = ({ ...props }: TooltipProps) => {\n return <TooltipPrimitive.Root {...props} />\n}\n\nconst TooltipTrigger = ({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) => {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\ntype TooltipContentProps = React.ComponentProps<typeof TooltipPrimitive.Popup> &\n Pick<\n TooltipPrimitive.Positioner.Props,\n 'align' | 'alignOffset' | 'side' | 'sideOffset'\n > & {\n hideArrow?: boolean\n variant?: 'default' | 'destructive'\n }\n\nconst TooltipContent = ({\n className,\n hideArrow = false,\n variant = 'default',\n children,\n align,\n alignOffset,\n side,\n sideOffset = 4,\n ...props\n}: TooltipContentProps) => {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n className=\"isolate z-50\"\n side={side}\n sideOffset={sideOffset}\n >\n <TooltipPrimitive.Popup\n data-slot=\"tooltip-content\"\n data-variant={variant}\n className={cn(\n 'z-50 w-fit origin-(--transform-origin) rounded-lg p-2 text-xs leading-none transition-[opacity,scale,translate] duration-150 motion-reduce:transition-opacity',\n // enter: fade + zoom + a slight per-side slide (was animate-in)\n 'data-starting-style:scale-95 data-starting-style:opacity-0',\n 'data-[side=bottom]:data-starting-style:-translate-y-1 data-[side=left]:data-starting-style:translate-x-1 data-[side=right]:data-starting-style:-translate-x-1 data-[side=top]:data-starting-style:translate-y-1',\n // exit: instant (was data-[state=closed]:duration-0)\n 'data-ending-style:opacity-0 data-ending-style:duration-0',\n 'data-[variant=default]:bg-gray-12 data-[variant=default]:text-gray-1',\n 'data-[variant=destructive]:bg-red-12 data-[variant=destructive]:text-red-1',\n className,\n )}\n {...props}\n >\n {children}\n {!hideArrow && (\n <TooltipPrimitive.Arrow\n data-variant={variant}\n className={cn(\n 'z-50',\n // svg tip points up; rotate per side, overlap 2px for a seamless join\n 'data-[side=bottom]:top-[-8px]',\n 'data-[side=top]:bottom-[-8px] data-[side=top]:rotate-180',\n 'data-[side=left]:right-[-13px] data-[side=left]:rotate-90',\n 'data-[side=right]:left-[-13px] data-[side=right]:-rotate-90',\n 'data-[variant=default]:text-gray-12',\n 'data-[variant=destructive]:text-red-12',\n )}\n >\n <svg fill=\"none\" height=\"10\" viewBox=\"0 0 20 10\" width=\"20\">\n <path\n d=\"M9.66437 2.60207L4.80758 6.97318C4.07308 7.63423 3.11989 8 2.13172 8H0V10H20V8H18.5349C17.5468 8 16.5936 7.63423 15.8591 6.97318L11.0023 2.60207C10.622 2.2598 10.0447 2.25979 9.66437 2.60207Z\"\n fill=\"currentColor\"\n />\n </svg>\n </TooltipPrimitive.Arrow>\n )}\n </TooltipPrimitive.Popup>\n </TooltipPrimitive.Positioner>\n </TooltipPrimitive.Portal>\n )\n}\n\ninterface InfoTooltipProps {\n content: string\n label: string\n 'aria-label'?: string\n}\n\nconst InfoTooltip = ({\n content,\n label,\n 'aria-label': ariaLabel,\n}: InfoTooltipProps) => {\n return (\n <Tooltip>\n <TooltipTrigger\n render={\n <button\n aria-label={ariaLabel ?? label}\n className=\"touch-target inline-flex size-6 min-h-[24px] min-w-[24px] shrink-0 cursor-help items-center justify-center rounded-full p-0 text-gray-light transition-colors hover:text-gray focus-visible:ring-2 focus-visible:ring-primary focus-visible:outline-none\"\n type=\"button\"\n />\n }\n >\n <Info className=\"text-sm!\" />\n </TooltipTrigger>\n <TooltipContent className=\"max-w-xs whitespace-pre-line\">\n {content}\n </TooltipContent>\n </Tooltip>\n )\n}\n\nexport {\n Tooltip,\n TooltipTrigger,\n TooltipContent,\n TooltipProvider,\n TooltipPortal,\n InfoTooltip,\n}\n"],"mappings":";;;;;;;AAKA,MAAM,mBAAmB,EACvB,QAAQ,GACR,GAAG,YACyD;CAC5D,OAAO,oBAACA,UAAiB,UAAlB;EAAkC;EAAO,GAAI;CAAQ,CAAA;AAC9D;AAEA,MAAM,iBAAiB,EACrB,GAAG,YACuD;CAC1D,OAAO,oBAACA,UAAiB,QAAlB;EAAyB,aAAU;EAAiB,GAAI;CAAQ,CAAA;AACzE;AAIA,MAAM,WAAW,EAAE,GAAG,YAA0B;CAC9C,OAAO,oBAACA,UAAiB,MAAlB,EAAuB,GAAI,MAAQ,CAAA;AAC5C;AAEA,MAAM,kBAAkB,EACtB,GAAG,YACwD;CAC3D,OAAO,oBAACA,UAAiB,SAAlB;EAA0B,aAAU;EAAkB,GAAI;CAAQ,CAAA;AAC3E;AAWA,MAAM,kBAAkB,EACtB,WACA,YAAY,OACZ,UAAU,WACV,UACA,OACA,aACA,MACA,aAAa,GACb,GAAG,YACsB;CACzB,OACE,oBAACA,UAAiB,QAAlB,EAAA,UACE,oBAACA,UAAiB,YAAlB;EACS;EACM;EACb,WAAU;EACJ;EACM;YAEZ,qBAACA,UAAiB,OAAlB;GACE,aAAU;GACV,gBAAc;GACd,WAAW,GACT,iKAEA,8DACA,mNAEA,4DACA,wEACA,8EACA,SACF;GACA,GAAI;aAdN,CAgBG,UACA,CAAC,aACA,oBAACA,UAAiB,OAAlB;IACE,gBAAc;IACd,WAAW,GACT,QAEA,iCACA,4DACA,6DACA,+DACA,uCACA,wCACF;cAEA,oBAAC,OAAD;KAAK,MAAK;KAAO,QAAO;KAAK,SAAQ;KAAY,OAAM;eACrD,oBAAC,QAAD;MACE,GAAE;MACF,MAAK;KACN,CAAA;IACE,CAAA;GACiB,CAAA,CAEJ;;CACG,CAAA,EACN,CAAA;AAE7B;AAQA,MAAM,eAAe,EACnB,SACA,OACA,cAAc,gBACQ;CACtB,OACE,qBAAC,SAAD,EAAA,UAAA,CACE,oBAAC,gBAAD;EACE,QACE,oBAAC,UAAD;GACE,cAAY,aAAa;GACzB,WAAU;GACV,MAAK;EACN,CAAA;YAGH,oBAAC,MAAD,EAAM,WAAU,WAAY,CAAA;CACd,CAAA,GAChB,oBAAC,gBAAD;EAAgB,WAAU;YACvB;CACa,CAAA,CACT,EAAA,CAAA;AAEb"}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  let react_jsx_runtime = require("react/jsx-runtime");
4
- let cnfast = require("cnfast");
4
+ let cn = require("cn");
5
5
  //#region src/components/typography.tsx
6
6
  const PowerValue = ({ "aria-label": ariaLabel, ...props }) => {
7
7
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h2", {
@@ -12,31 +12,31 @@ const PowerValue = ({ "aria-label": ariaLabel, ...props }) => {
12
12
  };
13
13
  const PageTitle = ({ className, ...props }) => {
14
14
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h2", {
15
- className: (0, cnfast.cn)("text-xl font-bold wrap-break-word", className),
15
+ className: (0, cn.cn)("text-xl font-bold wrap-break-word", className),
16
16
  ...props
17
17
  });
18
18
  };
19
19
  const SectionTitle = ({ className, ...props }) => {
20
20
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
21
- className: (0, cnfast.cn)("text-base font-bold text-gray", className),
21
+ className: (0, cn.cn)("text-base font-bold text-gray", className),
22
22
  ...props
23
23
  });
24
24
  };
25
25
  const SectionDescription = ({ className, ...props }) => {
26
26
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
27
- className: (0, cnfast.cn)("text-sm text-gray-light", className),
27
+ className: (0, cn.cn)("text-sm text-gray-light", className),
28
28
  ...props
29
29
  });
30
30
  };
31
31
  const SectionSubtitle = ({ className, ...props }) => {
32
32
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h4", {
33
- className: (0, cnfast.cn)("text-sm font-bold tracking-wider text-gray-light uppercase", className),
33
+ className: (0, cn.cn)("text-sm font-bold tracking-wider text-gray-light uppercase", className),
34
34
  ...props
35
35
  });
36
36
  };
37
37
  const StateValue = ({ className, ...props }) => {
38
38
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
39
- className: (0, cnfast.cn)("text-xl font-black tabular-nums", className),
39
+ className: (0, cn.cn)("text-xl font-black tabular-nums", className),
40
40
  ...props
41
41
  });
42
42
  };
@@ -1 +1 @@
1
- {"version":3,"file":"typography.cjs","names":[],"sources":["../../src/components/typography.tsx"],"sourcesContent":["import { cn } from '../utils/cn'\n\ntype PowerValueProps = Omit<React.ComponentProps<'h2'>, 'aria-label'> & {\n 'aria-label': string\n}\n\nconst PowerValue = ({ 'aria-label': ariaLabel, ...props }: PowerValueProps) => {\n return (\n <h2\n className=\"text-3xl font-bold text-gray tabular-nums\"\n aria-label={ariaLabel}\n {...props}\n />\n )\n}\n\nconst PageTitle = ({ className, ...props }: React.ComponentProps<'h2'>) => {\n return (\n <h2\n className={cn('text-xl font-bold wrap-break-word', className)}\n {...props}\n />\n )\n}\n\nconst SectionTitle = ({ className, ...props }: React.ComponentProps<'h2'>) => {\n return (\n <h3 className={cn('text-base font-bold text-gray', className)} {...props} />\n )\n}\n\nconst SectionDescription = ({\n className,\n ...props\n}: React.ComponentProps<'p'>) => {\n return <p className={cn('text-sm text-gray-light', className)} {...props} />\n}\n\nconst SectionSubtitle = ({\n className,\n ...props\n}: React.ComponentProps<'h3'>) => {\n return (\n <h4\n className={cn(\n 'text-sm font-bold tracking-wider text-gray-light uppercase',\n className,\n )}\n {...props}\n />\n )\n}\n\nconst StateValue = ({ className, ...props }: React.ComponentProps<'span'>) => {\n return (\n <span\n className={cn('text-xl font-black tabular-nums', className)}\n {...props}\n />\n )\n}\n\nexport {\n PowerValue,\n PageTitle,\n SectionTitle,\n SectionDescription,\n SectionSubtitle,\n StateValue,\n}\n"],"mappings":";;;;;AAMA,MAAM,cAAc,EAAE,cAAc,WAAW,GAAG,YAA6B;CAC7E,OACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;EACE,WAAU;EACV,cAAY;EACZ,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,aAAa,EAAE,WAAW,GAAG,YAAwC;CACzE,OACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;EACE,YAAA,GAAA,OAAA,IAAc,qCAAqC,SAAS;EAC5D,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,gBAAgB,EAAE,WAAW,GAAG,YAAwC;CAC5E,OACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;EAAI,YAAA,GAAA,OAAA,IAAc,iCAAiC,SAAS;EAAG,GAAI;CAAQ,CAAA;AAE/E;AAEA,MAAM,sBAAsB,EAC1B,WACA,GAAG,YAC4B;CAC/B,OAAO,iBAAA,GAAA,kBAAA,KAAC,KAAD;EAAG,YAAA,GAAA,OAAA,IAAc,2BAA2B,SAAS;EAAG,GAAI;CAAQ,CAAA;AAC7E;AAEA,MAAM,mBAAmB,EACvB,WACA,GAAG,YAC6B;CAChC,OACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;EACE,YAAA,GAAA,OAAA,IACE,8DACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,cAAc,EAAE,WAAW,GAAG,YAA0C;CAC5E,OACE,iBAAA,GAAA,kBAAA,KAAC,QAAD;EACE,YAAA,GAAA,OAAA,IAAc,mCAAmC,SAAS;EAC1D,GAAI;CACL,CAAA;AAEL"}
1
+ {"version":3,"file":"typography.cjs","names":[],"sources":["../../src/components/typography.tsx"],"sourcesContent":["import { cn } from '../utils/cn'\n\ntype PowerValueProps = Omit<React.ComponentProps<'h2'>, 'aria-label'> & {\n 'aria-label': string\n}\n\nconst PowerValue = ({ 'aria-label': ariaLabel, ...props }: PowerValueProps) => {\n return (\n <h2\n className=\"text-3xl font-bold text-gray tabular-nums\"\n aria-label={ariaLabel}\n {...props}\n />\n )\n}\n\nconst PageTitle = ({ className, ...props }: React.ComponentProps<'h2'>) => {\n return (\n <h2\n className={cn('text-xl font-bold wrap-break-word', className)}\n {...props}\n />\n )\n}\n\nconst SectionTitle = ({ className, ...props }: React.ComponentProps<'h2'>) => {\n return (\n <h3 className={cn('text-base font-bold text-gray', className)} {...props} />\n )\n}\n\nconst SectionDescription = ({\n className,\n ...props\n}: React.ComponentProps<'p'>) => {\n return <p className={cn('text-sm text-gray-light', className)} {...props} />\n}\n\nconst SectionSubtitle = ({\n className,\n ...props\n}: React.ComponentProps<'h3'>) => {\n return (\n <h4\n className={cn(\n 'text-sm font-bold tracking-wider text-gray-light uppercase',\n className,\n )}\n {...props}\n />\n )\n}\n\nconst StateValue = ({ className, ...props }: React.ComponentProps<'span'>) => {\n return (\n <span\n className={cn('text-xl font-black tabular-nums', className)}\n {...props}\n />\n )\n}\n\nexport {\n PowerValue,\n PageTitle,\n SectionTitle,\n SectionDescription,\n SectionSubtitle,\n StateValue,\n}\n"],"mappings":";;;;;AAMA,MAAM,cAAc,EAAE,cAAc,WAAW,GAAG,YAA6B;CAC7E,OACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;EACE,WAAU;EACV,cAAY;EACZ,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,aAAa,EAAE,WAAW,GAAG,YAAwC;CACzE,OACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;EACE,YAAA,GAAA,GAAA,IAAc,qCAAqC,SAAS;EAC5D,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,gBAAgB,EAAE,WAAW,GAAG,YAAwC;CAC5E,OACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;EAAI,YAAA,GAAA,GAAA,IAAc,iCAAiC,SAAS;EAAG,GAAI;CAAQ,CAAA;AAE/E;AAEA,MAAM,sBAAsB,EAC1B,WACA,GAAG,YAC4B;CAC/B,OAAO,iBAAA,GAAA,kBAAA,KAAC,KAAD;EAAG,YAAA,GAAA,GAAA,IAAc,2BAA2B,SAAS;EAAG,GAAI;CAAQ,CAAA;AAC7E;AAEA,MAAM,mBAAmB,EACvB,WACA,GAAG,YAC6B;CAChC,OACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;EACE,YAAA,GAAA,GAAA,IACE,8DACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,cAAc,EAAE,WAAW,GAAG,YAA0C;CAC5E,OACE,iBAAA,GAAA,kBAAA,KAAC,QAAD;EACE,YAAA,GAAA,GAAA,IAAc,mCAAmC,SAAS;EAC1D,GAAI;CACL,CAAA;AAEL"}
@@ -1,47 +1,47 @@
1
1
  "use client";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  let react_jsx_runtime = require("react/jsx-runtime");
4
- let cnfast = require("cnfast");
4
+ let cn = require("cn");
5
5
  //#region src/components/wizard-layout.tsx
6
6
  const WizardLayout = ({ className, ...rest }) => {
7
7
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
8
- className: (0, cnfast.cn)("flex flex-col gap-[calc(var(--spark-layout-gap)*6)]", className),
8
+ className: (0, cn.cn)("flex flex-col gap-[calc(var(--spark-layout-gap)*6)]", className),
9
9
  ...rest
10
10
  });
11
11
  };
12
12
  const WizardLayoutHeader = ({ className, ...rest }) => {
13
13
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
14
- className: (0, cnfast.cn)("flex flex-col gap-[calc(var(--spark-layout-gap)*3)] pt-4", className),
14
+ className: (0, cn.cn)("flex flex-col gap-[calc(var(--spark-layout-gap)*3)] pt-4", className),
15
15
  ...rest
16
16
  });
17
17
  };
18
18
  const WizardLayoutHeading = ({ className, ...rest }) => {
19
19
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
20
- className: (0, cnfast.cn)("flex flex-col gap-[calc(var(--spark-layout-gap)*1)]", className),
20
+ className: (0, cn.cn)("flex flex-col gap-[calc(var(--spark-layout-gap)*1)]", className),
21
21
  ...rest
22
22
  });
23
23
  };
24
24
  const WizardLayoutTitleRow = ({ className, ...rest }) => {
25
25
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
26
- className: (0, cnfast.cn)("flex items-center justify-between", className),
26
+ className: (0, cn.cn)("flex items-center justify-between", className),
27
27
  ...rest
28
28
  });
29
29
  };
30
30
  const WizardLayoutTitle = ({ className, ...rest }) => {
31
31
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h2", {
32
- className: (0, cnfast.cn)("text-lg font-bold text-gray", className),
32
+ className: (0, cn.cn)("text-lg font-bold text-gray", className),
33
33
  ...rest
34
34
  });
35
35
  };
36
36
  const WizardLayoutDescription = ({ className, ...rest }) => {
37
37
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
38
- className: (0, cnfast.cn)("text-sm text-gray-light", className),
38
+ className: (0, cn.cn)("text-sm text-gray-light", className),
39
39
  ...rest
40
40
  });
41
41
  };
42
42
  const WizardLayoutFooter = ({ className, ...rest }) => {
43
43
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
44
- className: (0, cnfast.cn)("flex items-center justify-between", className),
44
+ className: (0, cn.cn)("flex items-center justify-between", className),
45
45
  ...rest
46
46
  });
47
47
  };
@@ -1 +1 @@
1
- {"version":3,"file":"wizard-layout.cjs","names":[],"sources":["../../src/components/wizard-layout.tsx"],"sourcesContent":["import { cn } from '../utils/cn'\n\nconst WizardLayout = ({ className, ...rest }: React.ComponentProps<'div'>) => {\n return (\n <div\n className={cn(\n 'flex flex-col gap-[calc(var(--spark-layout-gap)*6)]',\n className,\n )}\n {...rest}\n />\n )\n}\n\nconst WizardLayoutHeader = ({\n className,\n ...rest\n}: React.ComponentProps<'div'>) => {\n return (\n <div\n className={cn(\n 'flex flex-col gap-[calc(var(--spark-layout-gap)*3)] pt-4',\n className,\n )}\n {...rest}\n />\n )\n}\n\nconst WizardLayoutHeading = ({\n className,\n ...rest\n}: React.ComponentProps<'div'>) => {\n return (\n <div\n className={cn(\n 'flex flex-col gap-[calc(var(--spark-layout-gap)*1)]',\n className,\n )}\n {...rest}\n />\n )\n}\n\nconst WizardLayoutTitleRow = ({\n className,\n ...rest\n}: React.ComponentProps<'div'>) => {\n return (\n <div\n className={cn('flex items-center justify-between', className)}\n {...rest}\n />\n )\n}\n\nconst WizardLayoutTitle = ({\n className,\n ...rest\n}: React.ComponentProps<'h2'>) => {\n return (\n <h2 className={cn('text-lg font-bold text-gray', className)} {...rest} />\n )\n}\n\nconst WizardLayoutDescription = ({\n className,\n ...rest\n}: React.ComponentProps<'p'>) => {\n return <p className={cn('text-sm text-gray-light', className)} {...rest} />\n}\n\nconst WizardLayoutFooter = ({\n className,\n ...rest\n}: React.ComponentProps<'div'>) => {\n return (\n <div\n className={cn('flex items-center justify-between', className)}\n {...rest}\n />\n )\n}\n\nexport {\n WizardLayout,\n WizardLayoutHeader,\n WizardLayoutHeading,\n WizardLayoutTitleRow,\n WizardLayoutTitle,\n WizardLayoutDescription,\n WizardLayoutFooter,\n}\n"],"mappings":";;;;;AAEA,MAAM,gBAAgB,EAAE,WAAW,GAAG,WAAwC;CAC5E,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,YAAA,GAAA,OAAA,IACE,uDACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,sBAAsB,EAC1B,WACA,GAAG,WAC8B;CACjC,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,YAAA,GAAA,OAAA,IACE,4DACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,uBAAuB,EAC3B,WACA,GAAG,WAC8B;CACjC,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,YAAA,GAAA,OAAA,IACE,uDACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,wBAAwB,EAC5B,WACA,GAAG,WAC8B;CACjC,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,YAAA,GAAA,OAAA,IAAc,qCAAqC,SAAS;EAC5D,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,qBAAqB,EACzB,WACA,GAAG,WAC6B;CAChC,OACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;EAAI,YAAA,GAAA,OAAA,IAAc,+BAA+B,SAAS;EAAG,GAAI;CAAO,CAAA;AAE5E;AAEA,MAAM,2BAA2B,EAC/B,WACA,GAAG,WAC4B;CAC/B,OAAO,iBAAA,GAAA,kBAAA,KAAC,KAAD;EAAG,YAAA,GAAA,OAAA,IAAc,2BAA2B,SAAS;EAAG,GAAI;CAAO,CAAA;AAC5E;AAEA,MAAM,sBAAsB,EAC1B,WACA,GAAG,WAC8B;CACjC,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,YAAA,GAAA,OAAA,IAAc,qCAAqC,SAAS;EAC5D,GAAI;CACL,CAAA;AAEL"}
1
+ {"version":3,"file":"wizard-layout.cjs","names":[],"sources":["../../src/components/wizard-layout.tsx"],"sourcesContent":["import { cn } from '../utils/cn'\n\nconst WizardLayout = ({ className, ...rest }: React.ComponentProps<'div'>) => {\n return (\n <div\n className={cn(\n 'flex flex-col gap-[calc(var(--spark-layout-gap)*6)]',\n className,\n )}\n {...rest}\n />\n )\n}\n\nconst WizardLayoutHeader = ({\n className,\n ...rest\n}: React.ComponentProps<'div'>) => {\n return (\n <div\n className={cn(\n 'flex flex-col gap-[calc(var(--spark-layout-gap)*3)] pt-4',\n className,\n )}\n {...rest}\n />\n )\n}\n\nconst WizardLayoutHeading = ({\n className,\n ...rest\n}: React.ComponentProps<'div'>) => {\n return (\n <div\n className={cn(\n 'flex flex-col gap-[calc(var(--spark-layout-gap)*1)]',\n className,\n )}\n {...rest}\n />\n )\n}\n\nconst WizardLayoutTitleRow = ({\n className,\n ...rest\n}: React.ComponentProps<'div'>) => {\n return (\n <div\n className={cn('flex items-center justify-between', className)}\n {...rest}\n />\n )\n}\n\nconst WizardLayoutTitle = ({\n className,\n ...rest\n}: React.ComponentProps<'h2'>) => {\n return (\n <h2 className={cn('text-lg font-bold text-gray', className)} {...rest} />\n )\n}\n\nconst WizardLayoutDescription = ({\n className,\n ...rest\n}: React.ComponentProps<'p'>) => {\n return <p className={cn('text-sm text-gray-light', className)} {...rest} />\n}\n\nconst WizardLayoutFooter = ({\n className,\n ...rest\n}: React.ComponentProps<'div'>) => {\n return (\n <div\n className={cn('flex items-center justify-between', className)}\n {...rest}\n />\n )\n}\n\nexport {\n WizardLayout,\n WizardLayoutHeader,\n WizardLayoutHeading,\n WizardLayoutTitleRow,\n WizardLayoutTitle,\n WizardLayoutDescription,\n WizardLayoutFooter,\n}\n"],"mappings":";;;;;AAEA,MAAM,gBAAgB,EAAE,WAAW,GAAG,WAAwC;CAC5E,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,YAAA,GAAA,GAAA,IACE,uDACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,sBAAsB,EAC1B,WACA,GAAG,WAC8B;CACjC,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,YAAA,GAAA,GAAA,IACE,4DACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,uBAAuB,EAC3B,WACA,GAAG,WAC8B;CACjC,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,YAAA,GAAA,GAAA,IACE,uDACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,wBAAwB,EAC5B,WACA,GAAG,WAC8B;CACjC,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,YAAA,GAAA,GAAA,IAAc,qCAAqC,SAAS;EAC5D,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,qBAAqB,EACzB,WACA,GAAG,WAC6B;CAChC,OACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;EAAI,YAAA,GAAA,GAAA,IAAc,+BAA+B,SAAS;EAAG,GAAI;CAAO,CAAA;AAE5E;AAEA,MAAM,2BAA2B,EAC/B,WACA,GAAG,WAC4B;CAC/B,OAAO,iBAAA,GAAA,kBAAA,KAAC,KAAD;EAAG,YAAA,GAAA,GAAA,IAAc,2BAA2B,SAAS;EAAG,GAAI;CAAO,CAAA;AAC5E;AAEA,MAAM,sBAAsB,EAC1B,WACA,GAAG,WAC8B;CACjC,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,YAAA,GAAA,GAAA,IAAc,qCAAqC,SAAS;EAC5D,GAAI;CACL,CAAA;AAEL"}
@@ -189,7 +189,7 @@ function getScaleFromColor(source, scales, backgroundColor) {
189
189
  const scaleA = scales[colorA.scale];
190
190
  const scaleB = scales[colorB.scale];
191
191
  const scale = arrayOf12.map((i) => new colorjs_io.default(colorjs_io.default.mix(scaleA[i], scaleB[i], ratio)).to("oklch"));
192
- const baseColor = scale.slice().sort((a, b) => source.deltaEOK(a) - source.deltaEOK(b))[0];
192
+ const baseColor = scale.toSorted((a, b) => source.deltaEOK(a) - source.deltaEOK(b))[0];
193
193
  const ratioC = source.coords[1] / baseColor.coords[1];
194
194
  scale.forEach((color) => {
195
195
  color.coords[1] = Math.min(source.coords[1] * 1.5, color.coords[1] * ratioC);