@epilot/spark-ui 0.19.0 → 0.20.1

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 (210) hide show
  1. package/dist/components/attachment.d.cts +2 -2
  2. package/dist/components/attachment.d.ts +2 -2
  3. package/dist/components/avatar.cjs +1 -1
  4. package/dist/components/avatar.cjs.map +1 -1
  5. package/dist/components/avatar.js +1 -1
  6. package/dist/components/avatar.js.map +1 -1
  7. package/dist/components/badge.cjs +1 -1
  8. package/dist/components/badge.cjs.map +1 -1
  9. package/dist/components/badge.d.cts +2 -1
  10. package/dist/components/badge.d.ts +2 -1
  11. package/dist/components/badge.js +1 -1
  12. package/dist/components/badge.js.map +1 -1
  13. package/dist/components/{energy-bar-chart.cjs → bar-chart-with-total.cjs} +4 -4
  14. package/dist/components/bar-chart-with-total.cjs.map +1 -0
  15. package/dist/components/bar-chart-with-total.d.cts +19 -0
  16. package/dist/components/bar-chart-with-total.d.ts +19 -0
  17. package/dist/components/{energy-bar-chart.js → bar-chart-with-total.js} +4 -4
  18. package/dist/components/bar-chart-with-total.js.map +1 -0
  19. package/dist/components/bar-chart.cjs +1 -1
  20. package/dist/components/bar-chart.js +2 -2
  21. package/dist/components/bubble.d.cts +1 -1
  22. package/dist/components/bubble.d.ts +1 -1
  23. package/dist/components/button-group.cjs +2 -2
  24. package/dist/components/button-group.cjs.map +1 -1
  25. package/dist/components/button-group.d.cts +1 -1
  26. package/dist/components/button-group.d.ts +1 -1
  27. package/dist/components/button-group.js +2 -2
  28. package/dist/components/button-group.js.map +1 -1
  29. package/dist/components/button.cjs +6 -4
  30. package/dist/components/button.cjs.map +1 -1
  31. package/dist/components/button.d.cts +6 -5
  32. package/dist/components/button.d.ts +6 -5
  33. package/dist/components/button.js +6 -4
  34. package/dist/components/button.js.map +1 -1
  35. package/dist/components/calendar.cjs +2 -2
  36. package/dist/components/calendar.cjs.map +1 -1
  37. package/dist/components/calendar.js +2 -2
  38. package/dist/components/calendar.js.map +1 -1
  39. package/dist/components/callout.cjs +10 -10
  40. package/dist/components/callout.cjs.map +1 -1
  41. package/dist/components/callout.d.cts +1 -1
  42. package/dist/components/callout.d.ts +1 -1
  43. package/dist/components/callout.js +10 -10
  44. package/dist/components/callout.js.map +1 -1
  45. package/dist/components/checkbox.cjs +1 -1
  46. package/dist/components/checkbox.cjs.map +1 -1
  47. package/dist/components/checkbox.js +1 -1
  48. package/dist/components/checkbox.js.map +1 -1
  49. package/dist/components/circular-gauge.cjs +7 -7
  50. package/dist/components/circular-gauge.cjs.map +1 -1
  51. package/dist/components/circular-gauge.js +7 -7
  52. package/dist/components/circular-gauge.js.map +1 -1
  53. package/dist/components/day-of-week-picker.cjs +21 -41
  54. package/dist/components/day-of-week-picker.cjs.map +1 -1
  55. package/dist/components/day-of-week-picker.d.cts +19 -23
  56. package/dist/components/day-of-week-picker.d.ts +19 -23
  57. package/dist/components/day-of-week-picker.js +21 -41
  58. package/dist/components/day-of-week-picker.js.map +1 -1
  59. package/dist/components/energy-history-chart.cjs +2 -2
  60. package/dist/components/energy-history-chart.cjs.map +1 -1
  61. package/dist/components/energy-history-chart.js +2 -2
  62. package/dist/components/energy-history-chart.js.map +1 -1
  63. package/dist/components/{device-card.cjs → entity-card.cjs} +31 -31
  64. package/dist/components/entity-card.cjs.map +1 -0
  65. package/dist/components/{device-card.d.cts → entity-card.d.cts} +15 -15
  66. package/dist/components/{device-card.d.ts → entity-card.d.ts} +15 -15
  67. package/dist/components/{device-card.js → entity-card.js} +20 -20
  68. package/dist/components/entity-card.js.map +1 -0
  69. package/dist/components/{feed-in-hero.cjs → hero-metric.cjs} +10 -15
  70. package/dist/components/hero-metric.cjs.map +1 -0
  71. package/dist/components/hero-metric.d.cts +27 -0
  72. package/dist/components/hero-metric.d.ts +27 -0
  73. package/dist/components/{feed-in-hero.js → hero-metric.js} +7 -12
  74. package/dist/components/hero-metric.js.map +1 -0
  75. package/dist/components/info-block.d.cts +1 -1
  76. package/dist/components/info-block.d.ts +1 -1
  77. package/dist/components/input-group.d.cts +1 -1
  78. package/dist/components/input-group.d.ts +1 -1
  79. package/dist/components/input-otp.cjs +1 -1
  80. package/dist/components/input-otp.js +1 -1
  81. package/dist/components/input.cjs +1 -1
  82. package/dist/components/input.js +1 -1
  83. package/dist/components/line-chart.cjs +3 -3
  84. package/dist/components/line-chart.js +4 -4
  85. package/dist/components/marker.d.cts +1 -1
  86. package/dist/components/marker.d.ts +1 -1
  87. package/dist/components/message-scroller.cjs +1 -1
  88. package/dist/components/message-scroller.js +2 -2
  89. package/dist/components/period-tabs.cjs +2 -22
  90. package/dist/components/period-tabs.cjs.map +1 -1
  91. package/dist/components/period-tabs.d.cts +5 -22
  92. package/dist/components/period-tabs.d.ts +5 -22
  93. package/dist/components/period-tabs.js +2 -22
  94. package/dist/components/period-tabs.js.map +1 -1
  95. package/dist/components/pill.cjs +2 -2
  96. package/dist/components/pill.cjs.map +1 -1
  97. package/dist/components/pill.js +2 -2
  98. package/dist/components/pill.js.map +1 -1
  99. package/dist/components/power-history-chart.cjs +3 -3
  100. package/dist/components/power-history-chart.js +4 -4
  101. package/dist/components/power-network.js +1 -1
  102. package/dist/components/progress.cjs +1 -1
  103. package/dist/components/progress.cjs.map +1 -1
  104. package/dist/components/progress.js +1 -1
  105. package/dist/components/progress.js.map +1 -1
  106. package/dist/components/radio.cjs +1 -1
  107. package/dist/components/radio.cjs.map +1 -1
  108. package/dist/components/radio.js +1 -1
  109. package/dist/components/radio.js.map +1 -1
  110. package/dist/components/segmented-control.cjs +2 -2
  111. package/dist/components/segmented-control.cjs.map +1 -1
  112. package/dist/components/segmented-control.js +2 -2
  113. package/dist/components/segmented-control.js.map +1 -1
  114. package/dist/components/select.cjs +32 -2
  115. package/dist/components/select.cjs.map +1 -1
  116. package/dist/components/select.d.cts +11 -1
  117. package/dist/components/select.d.ts +11 -1
  118. package/dist/components/select.js +32 -4
  119. package/dist/components/select.js.map +1 -1
  120. package/dist/components/solar-forecast-chart.js +1 -1
  121. package/dist/components/stepper.cjs +1 -1
  122. package/dist/components/stepper.cjs.map +1 -1
  123. package/dist/components/stepper.d.cts +4 -4
  124. package/dist/components/stepper.d.ts +4 -4
  125. package/dist/components/stepper.js +1 -1
  126. package/dist/components/stepper.js.map +1 -1
  127. package/dist/components/textarea.cjs +1 -1
  128. package/dist/components/textarea.js +1 -1
  129. package/dist/components/tooltip.cjs +1 -1
  130. package/dist/components/tooltip.cjs.map +1 -1
  131. package/dist/components/tooltip.js +1 -1
  132. package/dist/components/tooltip.js.map +1 -1
  133. package/dist/components/typography.cjs +1 -1
  134. package/dist/components/typography.cjs.map +1 -1
  135. package/dist/components/typography.d.cts +4 -1
  136. package/dist/components/typography.d.ts +4 -1
  137. package/dist/components/typography.js +1 -1
  138. package/dist/components/typography.js.map +1 -1
  139. package/dist/components/wizard-layout.cjs +57 -0
  140. package/dist/components/wizard-layout.cjs.map +1 -0
  141. package/dist/components/wizard-layout.d.cts +34 -0
  142. package/dist/components/wizard-layout.d.ts +34 -0
  143. package/dist/components/wizard-layout.js +50 -0
  144. package/dist/components/wizard-layout.js.map +1 -0
  145. package/dist/lib/accent-colors.cjs +4 -1
  146. package/dist/lib/accent-colors.cjs.map +1 -1
  147. package/dist/lib/accent-colors.d.cts +1 -1
  148. package/dist/lib/accent-colors.d.ts +1 -1
  149. package/dist/lib/accent-colors.js +4 -1
  150. package/dist/lib/accent-colors.js.map +1 -1
  151. package/dist/lib/accent-theme.cjs +2 -2
  152. package/dist/lib/accent-theme.cjs.map +1 -1
  153. package/dist/lib/accent-theme.js +2 -2
  154. package/dist/lib/accent-theme.js.map +1 -1
  155. package/dist/styles/index.css +1 -1
  156. package/dist/styles/spark-default.css +49 -314
  157. package/dist/styles/theme.css +52 -6
  158. package/package.json +1 -1
  159. package/dist/components/battery-progress-row.cjs +0 -135
  160. package/dist/components/battery-progress-row.cjs.map +0 -1
  161. package/dist/components/battery-progress-row.d.cts +0 -69
  162. package/dist/components/battery-progress-row.d.ts +0 -69
  163. package/dist/components/battery-progress-row.js +0 -125
  164. package/dist/components/battery-progress-row.js.map +0 -1
  165. package/dist/components/device-card.cjs.map +0 -1
  166. package/dist/components/device-card.js.map +0 -1
  167. package/dist/components/energy-bar-chart.cjs.map +0 -1
  168. package/dist/components/energy-bar-chart.d.cts +0 -43
  169. package/dist/components/energy-bar-chart.d.ts +0 -43
  170. package/dist/components/energy-bar-chart.js.map +0 -1
  171. package/dist/components/feed-in-hero.cjs.map +0 -1
  172. package/dist/components/feed-in-hero.d.cts +0 -32
  173. package/dist/components/feed-in-hero.d.ts +0 -32
  174. package/dist/components/feed-in-hero.js.map +0 -1
  175. package/dist/components/metering-row.cjs +0 -59
  176. package/dist/components/metering-row.cjs.map +0 -1
  177. package/dist/components/metering-row.d.cts +0 -31
  178. package/dist/components/metering-row.d.ts +0 -31
  179. package/dist/components/metering-row.js +0 -55
  180. package/dist/components/metering-row.js.map +0 -1
  181. package/dist/components/money-saved-block.cjs +0 -83
  182. package/dist/components/money-saved-block.cjs.map +0 -1
  183. package/dist/components/money-saved-block.d.cts +0 -55
  184. package/dist/components/money-saved-block.d.ts +0 -55
  185. package/dist/components/money-saved-block.js +0 -76
  186. package/dist/components/money-saved-block.js.map +0 -1
  187. package/dist/components/on-off-button.cjs +0 -32
  188. package/dist/components/on-off-button.cjs.map +0 -1
  189. package/dist/components/on-off-button.d.cts +0 -18
  190. package/dist/components/on-off-button.d.ts +0 -18
  191. package/dist/components/on-off-button.js +0 -31
  192. package/dist/components/on-off-button.js.map +0 -1
  193. package/dist/components/onboarding-layout.cjs +0 -67
  194. package/dist/components/onboarding-layout.cjs.map +0 -1
  195. package/dist/components/onboarding-layout.d.cts +0 -44
  196. package/dist/components/onboarding-layout.d.ts +0 -44
  197. package/dist/components/onboarding-layout.js +0 -60
  198. package/dist/components/onboarding-layout.js.map +0 -1
  199. package/dist/components/power-history.cjs +0 -114
  200. package/dist/components/power-history.cjs.map +0 -1
  201. package/dist/components/power-history.d.cts +0 -40
  202. package/dist/components/power-history.d.ts +0 -41
  203. package/dist/components/power-history.js +0 -114
  204. package/dist/components/power-history.js.map +0 -1
  205. package/dist/components/smart-toggle-button.cjs +0 -24
  206. package/dist/components/smart-toggle-button.cjs.map +0 -1
  207. package/dist/components/smart-toggle-button.d.cts +0 -16
  208. package/dist/components/smart-toggle-button.d.ts +0 -16
  209. package/dist/components/smart-toggle-button.js +0 -23
  210. package/dist/components/smart-toggle-button.js.map +0 -1
@@ -10,7 +10,7 @@ declare function InputGroup({
10
10
  ...props
11
11
  }: React$1.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
12
12
  declare const inputGroupAddonVariants: (props?: ({
13
- align?: "inline-start" | "inline-end" | null | undefined;
13
+ align?: "inline-end" | "inline-start" | null | undefined;
14
14
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
15
15
  declare function InputGroupAddon({
16
16
  className,
@@ -10,7 +10,7 @@ declare function InputGroup({
10
10
  ...props
11
11
  }: React$1.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
12
12
  declare const inputGroupAddonVariants: (props?: ({
13
- align?: "inline-start" | "inline-end" | null | undefined;
13
+ align?: "inline-end" | "inline-start" | null | undefined;
14
14
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
15
15
  declare function InputGroupAddon({
16
16
  className,
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const require_lib_input_box_variants = require("../lib/input-box-variants.cjs");
4
3
  const require_components_field = require("./field.cjs");
4
+ const require_lib_input_box_variants = require("../lib/input-box-variants.cjs");
5
5
  let react_jsx_runtime = require("react/jsx-runtime");
6
6
  let class_variance_authority = require("class-variance-authority");
7
7
  let _base_ui_react_otp_field = require("@base-ui/react/otp-field");
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { cn } from "../utils/cn.js";
3
- import { GHOST_UNDERLINE, boxChrome } from "../lib/input-box-variants.js";
4
3
  import { useFieldControl } from "./field.js";
4
+ import { GHOST_UNDERLINE, boxChrome } from "../lib/input-box-variants.js";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  import { cva } from "class-variance-authority";
7
7
  import { OTPField } from "@base-ui/react/otp-field";
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const require_chunk = require("../chunk-DY84GLCh.cjs");
4
- const require_lib_input_box_variants = require("../lib/input-box-variants.cjs");
5
4
  const require_components_field = require("./field.cjs");
5
+ const require_lib_input_box_variants = require("../lib/input-box-variants.cjs");
6
6
  let react = require("react");
7
7
  react = require_chunk.__toESM(react);
8
8
  let react_jsx_runtime = require("react/jsx-runtime");
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { cn } from "../utils/cn.js";
3
- import { GHOST_UNDERLINE, boxChrome } from "../lib/input-box-variants.js";
4
3
  import { useFieldControl } from "./field.js";
4
+ import { GHOST_UNDERLINE, boxChrome } from "../lib/input-box-variants.js";
5
5
  import * as React$1 from "react";
6
6
  import { jsx } from "react/jsx-runtime";
7
7
  import { cva } from "class-variance-authority";
@@ -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
- const require_utils_format = require("../utils/format.cjs");
5
- const require_utils_chart_scale = require("../utils/chart-scale.cjs");
6
- const require_utils_chart_time_ticks = require("../utils/chart-time-ticks.cjs");
7
4
  const require_hooks_use_chart_zoom = require("../hooks/use-chart-zoom.cjs");
8
5
  const require_hooks_use_reduced_motion = require("../hooks/use-reduced-motion.cjs");
6
+ const require_utils_format = require("../utils/format.cjs");
7
+ const require_utils_chart_scale = require("../utils/chart-scale.cjs");
9
8
  const require_components_chart = require("./chart.cjs");
9
+ const require_utils_chart_time_ticks = require("../utils/chart-time-ticks.cjs");
10
10
  let react = require("react");
11
11
  react = require_chunk.__toESM(react);
12
12
  let react_jsx_runtime = require("react/jsx-runtime");
@@ -1,11 +1,11 @@
1
1
  "use client";
2
- import { localeNumberFormat } from "../utils/format.js";
3
- import { buildYAxisScale, formatYAxisTick } from "../utils/chart-scale.js";
4
- import { buildTimeTicks } from "../utils/chart-time-ticks.js";
5
- import { cn } from "../utils/cn.js";
6
2
  import { useAnimatedChartDomain, useChartZoom } from "../hooks/use-chart-zoom.js";
7
3
  import { useReducedMotion } from "../hooks/use-reduced-motion.js";
4
+ import { cn } from "../utils/cn.js";
5
+ import { localeNumberFormat } from "../utils/format.js";
6
+ import { buildYAxisScale, formatYAxisTick } from "../utils/chart-scale.js";
8
7
  import { ChartTooltipCard, ChartZoomResetButton, clampTooltipPosition, useMeasuredSize } from "./chart.js";
8
+ import { buildTimeTicks } from "../utils/chart-time-ticks.js";
9
9
  import * as React$1 from "react";
10
10
  import { useCallback, useMemo } from "react";
11
11
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -6,7 +6,7 @@ import { useRender } from "@base-ui/react/use-render";
6
6
 
7
7
  //#region src/components/marker.d.ts
8
8
  declare const markerVariants: (props?: ({
9
- variant?: "default" | "border" | "separator" | null | undefined;
9
+ variant?: "default" | "separator" | "border" | null | undefined;
10
10
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
11
11
  declare function Marker({
12
12
  className,
@@ -6,7 +6,7 @@ import { useRender } from "@base-ui/react/use-render";
6
6
 
7
7
  //#region src/components/marker.d.ts
8
8
  declare const markerVariants: (props?: ({
9
- variant?: "default" | "border" | "separator" | null | undefined;
9
+ variant?: "default" | "separator" | "border" | null | undefined;
10
10
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
11
11
  declare function Marker({
12
12
  className,
@@ -1,9 +1,9 @@
1
1
  "use client";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const require_chunk = require("../chunk-DY84GLCh.cjs");
4
- const require_lib_message_animations = require("../lib/message-animations.cjs");
5
4
  const require_hooks_use_reduced_motion = require("../hooks/use-reduced-motion.cjs");
6
5
  const require_components_button = require("./button.cjs");
6
+ const require_lib_message_animations = require("../lib/message-animations.cjs");
7
7
  let react = require("react");
8
8
  react = require_chunk.__toESM(react);
9
9
  let _epilot_spark_icons = require("@epilot/spark-icons");
@@ -1,8 +1,8 @@
1
1
  "use client";
2
- import { cn } from "../utils/cn.js";
3
- import { MESSAGE_ANIMATIONS } from "../lib/message-animations.js";
4
2
  import { useReducedMotion } from "../hooks/use-reduced-motion.js";
3
+ import { cn } from "../utils/cn.js";
5
4
  import { Button } from "./button.js";
5
+ import { MESSAGE_ANIMATIONS } from "../lib/message-animations.js";
6
6
  import * as React$1 from "react";
7
7
  import { ArrowDownward, ArrowUpward } from "@epilot/spark-icons";
8
8
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -5,40 +5,25 @@ let _epilot_spark_icons = require("@epilot/spark-icons");
5
5
  let react_jsx_runtime = require("react/jsx-runtime");
6
6
  let cnfast = require("cnfast");
7
7
  //#region src/components/period-tabs.tsx
8
- /**
9
- * Outer container for a period picker — typically wraps a tabs row on top of
10
- * a date stepper.
11
- */
12
8
  const PeriodTabs = ({ className, ...rest }) => {
13
9
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
14
10
  className: (0, cnfast.cn)("flex flex-col items-center gap-2", className),
15
11
  ...rest
16
12
  });
17
13
  };
18
- /**
19
- * Date stepper row — renders prev / label / next children inline. Pair with
20
- * any icon button + `PeriodStepperLabel` (or custom content) inside.
21
- */
22
14
  const PeriodStepper = ({ className, ...rest }) => {
23
15
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
24
16
  className: (0, cnfast.cn)("flex items-center gap-2 text-gray-light", className),
25
17
  ...rest
26
18
  });
27
19
  };
28
- /** Centered label between the stepper buttons. Has a fixed min-width so the
29
- * stepper doesn't jump as the label text changes length. */
30
20
  const PeriodStepperLabel = ({ className, ...rest }) => {
31
21
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
32
22
  className: (0, cnfast.cn)("min-w-40 text-center text-sm font-medium text-gray", className),
33
23
  ...rest
34
24
  });
35
25
  };
36
- /**
37
- * Previous-period button — chevron-left icon button with sensible defaults
38
- * (`styleVariant="ghost"`, `color="neutral"`, `size="icon-small"`, accessible label, and disabled-state
39
- * styling that matches the next button).
40
- */
41
- const PeriodStepperButtonPrev = ({ className, "aria-label": ariaLabel = "Previous period", ...rest }) => {
26
+ const PeriodStepperButtonPrev = ({ className, "aria-label": ariaLabel, ...rest }) => {
42
27
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_button.Button, {
43
28
  "aria-label": ariaLabel,
44
29
  className: (0, cnfast.cn)("disabled:text-gray-light/60 disabled:opacity-40", className),
@@ -49,12 +34,7 @@ const PeriodStepperButtonPrev = ({ className, "aria-label": ariaLabel = "Previou
49
34
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_epilot_spark_icons.ChevronLeft, {})
50
35
  });
51
36
  };
52
- /**
53
- * Next-period button — chevron-right icon button with sensible defaults
54
- * (`styleVariant="ghost"`, `color="neutral"`, `size="icon-small"`, accessible label, and disabled-state
55
- * styling that matches the previous button).
56
- */
57
- const PeriodStepperButtonNext = ({ className, "aria-label": ariaLabel = "Next period", ...rest }) => {
37
+ const PeriodStepperButtonNext = ({ className, "aria-label": ariaLabel, ...rest }) => {
58
38
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_button.Button, {
59
39
  "aria-label": ariaLabel,
60
40
  className: (0, cnfast.cn)("disabled:text-gray-light/60 disabled:opacity-40", className),
@@ -1 +1 @@
1
- {"version":3,"file":"period-tabs.cjs","names":["Button","ChevronLeft","ChevronRight"],"sources":["../../src/components/period-tabs.tsx"],"sourcesContent":["import { ChevronLeft, ChevronRight } from '@epilot/spark-icons'\nimport { cn } from '../utils/cn'\nimport { Button, type ButtonProps } from './button'\n\n/**\n * Outer container for a period picker — typically wraps a tabs row on top of\n * a date stepper.\n */\nconst PeriodTabs = ({ className, ...rest }: React.ComponentProps<'div'>) => {\n return (\n <div\n className={cn('flex flex-col items-center gap-2', className)}\n {...rest}\n />\n )\n}\n\n/**\n * Date stepper row — renders prev / label / next children inline. Pair with\n * any icon button + `PeriodStepperLabel` (or custom content) inside.\n */\nconst PeriodStepper = ({ className, ...rest }: React.ComponentProps<'div'>) => {\n return (\n <div\n className={cn('flex items-center gap-2 text-gray-light', className)}\n {...rest}\n />\n )\n}\n\n/** Centered label between the stepper buttons. Has a fixed min-width so the\n * stepper doesn't jump as the label text changes length. */\nconst PeriodStepperLabel = ({\n className,\n ...rest\n}: React.ComponentProps<'span'>) => {\n return (\n <span\n className={cn(\n 'min-w-40 text-center text-sm font-medium text-gray',\n className,\n )}\n {...rest}\n />\n )\n}\n\n/**\n * Previous-period button — chevron-left icon button with sensible defaults\n * (`styleVariant=\"ghost\"`, `color=\"neutral\"`, `size=\"icon-small\"`, accessible label, and disabled-state\n * styling that matches the next button).\n */\nconst PeriodStepperButtonPrev = ({\n className,\n 'aria-label': ariaLabel = 'Previous period',\n ...rest\n}: Omit<ButtonProps, 'styleVariant' | 'color' | 'size' | 'children'>) => {\n return (\n <Button\n aria-label={ariaLabel}\n className={cn(\n 'disabled:text-gray-light/60 disabled:opacity-40',\n className,\n )}\n size=\"icon-small\"\n styleVariant=\"ghost\"\n color=\"neutral\"\n {...rest}\n >\n <ChevronLeft />\n </Button>\n )\n}\n\n/**\n * Next-period button — chevron-right icon button with sensible defaults\n * (`styleVariant=\"ghost\"`, `color=\"neutral\"`, `size=\"icon-small\"`, accessible label, and disabled-state\n * styling that matches the previous button).\n */\nconst PeriodStepperButtonNext = ({\n className,\n 'aria-label': ariaLabel = 'Next period',\n ...rest\n}: Omit<ButtonProps, 'styleVariant' | 'color' | 'size' | 'children'>) => {\n return (\n <Button\n aria-label={ariaLabel}\n className={cn(\n 'disabled:text-gray-light/60 disabled:opacity-40',\n className,\n )}\n size=\"icon-small\"\n styleVariant=\"ghost\"\n color=\"neutral\"\n {...rest}\n >\n <ChevronRight />\n </Button>\n )\n}\n\nexport {\n PeriodTabs,\n PeriodStepper,\n PeriodStepperLabel,\n PeriodStepperButtonPrev,\n PeriodStepperButtonNext,\n}\n"],"mappings":";;;;;;;;;;;AAQA,MAAM,cAAc,EAAE,WAAW,GAAG,WAAwC;CAC1E,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,YAAA,GAAA,OAAA,IAAc,oCAAoC,SAAS;EAC3D,GAAI;CACL,CAAA;AAEL;;;;;AAMA,MAAM,iBAAiB,EAAE,WAAW,GAAG,WAAwC;CAC7E,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,YAAA,GAAA,OAAA,IAAc,2CAA2C,SAAS;EAClE,GAAI;CACL,CAAA;AAEL;;;AAIA,MAAM,sBAAsB,EAC1B,WACA,GAAG,WAC+B;CAClC,OACE,iBAAA,GAAA,kBAAA,KAAC,QAAD;EACE,YAAA,GAAA,OAAA,IACE,sDACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;;;;;AAOA,MAAM,2BAA2B,EAC/B,WACA,cAAc,YAAY,mBAC1B,GAAG,WACoE;CACvE,OACE,iBAAA,GAAA,kBAAA,KAACA,0BAAAA,QAAD;EACE,cAAY;EACZ,YAAA,GAAA,OAAA,IACE,mDACA,SACF;EACA,MAAK;EACL,cAAa;EACb,OAAM;EACN,GAAI;YAEJ,iBAAA,GAAA,kBAAA,KAACC,oBAAAA,aAAD,CAAc,CAAA;CACR,CAAA;AAEZ;;;;;;AAOA,MAAM,2BAA2B,EAC/B,WACA,cAAc,YAAY,eAC1B,GAAG,WACoE;CACvE,OACE,iBAAA,GAAA,kBAAA,KAACD,0BAAAA,QAAD;EACE,cAAY;EACZ,YAAA,GAAA,OAAA,IACE,mDACA,SACF;EACA,MAAK;EACL,cAAa;EACb,OAAM;EACN,GAAI;YAEJ,iBAAA,GAAA,kBAAA,KAACE,oBAAAA,cAAD,CAAe,CAAA;CACT,CAAA;AAEZ"}
1
+ {"version":3,"file":"period-tabs.cjs","names":["Button","ChevronLeft","ChevronRight"],"sources":["../../src/components/period-tabs.tsx"],"sourcesContent":["import { ChevronLeft, ChevronRight } from '@epilot/spark-icons'\nimport { cn } from '../utils/cn'\nimport { Button, type ButtonProps } from './button'\n\ntype PeriodStepperButtonProps = Omit<\n ButtonProps,\n 'styleVariant' | 'color' | 'size' | 'children' | 'aria-label'\n> & {\n 'aria-label': string\n}\n\nconst PeriodTabs = ({ className, ...rest }: React.ComponentProps<'div'>) => {\n return (\n <div\n className={cn('flex flex-col items-center gap-2', className)}\n {...rest}\n />\n )\n}\n\nconst PeriodStepper = ({ className, ...rest }: React.ComponentProps<'div'>) => {\n return (\n <div\n className={cn('flex items-center gap-2 text-gray-light', className)}\n {...rest}\n />\n )\n}\n\nconst PeriodStepperLabel = ({\n className,\n ...rest\n}: React.ComponentProps<'span'>) => {\n return (\n <span\n className={cn(\n 'min-w-40 text-center text-sm font-medium text-gray',\n className,\n )}\n {...rest}\n />\n )\n}\n\nconst PeriodStepperButtonPrev = ({\n className,\n 'aria-label': ariaLabel,\n ...rest\n}: PeriodStepperButtonProps) => {\n return (\n <Button\n aria-label={ariaLabel}\n className={cn(\n 'disabled:text-gray-light/60 disabled:opacity-40',\n className,\n )}\n size=\"icon-small\"\n styleVariant=\"ghost\"\n color=\"neutral\"\n {...rest}\n >\n <ChevronLeft />\n </Button>\n )\n}\n\nconst PeriodStepperButtonNext = ({\n className,\n 'aria-label': ariaLabel,\n ...rest\n}: PeriodStepperButtonProps) => {\n return (\n <Button\n aria-label={ariaLabel}\n className={cn(\n 'disabled:text-gray-light/60 disabled:opacity-40',\n className,\n )}\n size=\"icon-small\"\n styleVariant=\"ghost\"\n color=\"neutral\"\n {...rest}\n >\n <ChevronRight />\n </Button>\n )\n}\n\nexport {\n PeriodTabs,\n PeriodStepper,\n PeriodStepperLabel,\n PeriodStepperButtonPrev,\n PeriodStepperButtonNext,\n}\n"],"mappings":";;;;;;;AAWA,MAAM,cAAc,EAAE,WAAW,GAAG,WAAwC;CAC1E,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,YAAA,GAAA,OAAA,IAAc,oCAAoC,SAAS;EAC3D,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,iBAAiB,EAAE,WAAW,GAAG,WAAwC;CAC7E,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,YAAA,GAAA,OAAA,IAAc,2CAA2C,SAAS;EAClE,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,sBAAsB,EAC1B,WACA,GAAG,WAC+B;CAClC,OACE,iBAAA,GAAA,kBAAA,KAAC,QAAD;EACE,YAAA,GAAA,OAAA,IACE,sDACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,2BAA2B,EAC/B,WACA,cAAc,WACd,GAAG,WAC2B;CAC9B,OACE,iBAAA,GAAA,kBAAA,KAACA,0BAAAA,QAAD;EACE,cAAY;EACZ,YAAA,GAAA,OAAA,IACE,mDACA,SACF;EACA,MAAK;EACL,cAAa;EACb,OAAM;EACN,GAAI;YAEJ,iBAAA,GAAA,kBAAA,KAACC,oBAAAA,aAAD,CAAc,CAAA;CACR,CAAA;AAEZ;AAEA,MAAM,2BAA2B,EAC/B,WACA,cAAc,WACd,GAAG,WAC2B;CAC9B,OACE,iBAAA,GAAA,kBAAA,KAACD,0BAAAA,QAAD;EACE,cAAY;EACZ,YAAA,GAAA,OAAA,IACE,mDACA,SACF;EACA,MAAK;EACL,cAAa;EACb,OAAM;EACN,GAAI;YAEJ,iBAAA,GAAA,kBAAA,KAACE,oBAAAA,cAAD,CAAe,CAAA;CACT,CAAA;AAEZ"}
@@ -3,48 +3,31 @@
3
3
  import { ButtonProps } from "./button.cjs";
4
4
 
5
5
  //#region src/components/period-tabs.d.ts
6
- /**
7
- * Outer container for a period picker — typically wraps a tabs row on top of
8
- * a date stepper.
9
- */
6
+ type PeriodStepperButtonProps = Omit<ButtonProps, 'styleVariant' | 'color' | 'size' | 'children' | 'aria-label'> & {
7
+ 'aria-label': string;
8
+ };
10
9
  declare const PeriodTabs: ({
11
10
  className,
12
11
  ...rest
13
12
  }: React.ComponentProps<"div">) => import("react/jsx-runtime").JSX.Element;
14
- /**
15
- * Date stepper row — renders prev / label / next children inline. Pair with
16
- * any icon button + `PeriodStepperLabel` (or custom content) inside.
17
- */
18
13
  declare const PeriodStepper: ({
19
14
  className,
20
15
  ...rest
21
16
  }: React.ComponentProps<"div">) => import("react/jsx-runtime").JSX.Element;
22
- /** Centered label between the stepper buttons. Has a fixed min-width so the
23
- * stepper doesn't jump as the label text changes length. */
24
17
  declare const PeriodStepperLabel: ({
25
18
  className,
26
19
  ...rest
27
20
  }: React.ComponentProps<"span">) => import("react/jsx-runtime").JSX.Element;
28
- /**
29
- * Previous-period button — chevron-left icon button with sensible defaults
30
- * (`styleVariant="ghost"`, `color="neutral"`, `size="icon-small"`, accessible label, and disabled-state
31
- * styling that matches the next button).
32
- */
33
21
  declare const PeriodStepperButtonPrev: ({
34
22
  className,
35
23
  "aria-label": ariaLabel,
36
24
  ...rest
37
- }: Omit<ButtonProps, "styleVariant" | "color" | "size" | "children">) => import("react/jsx-runtime").JSX.Element;
38
- /**
39
- * Next-period button — chevron-right icon button with sensible defaults
40
- * (`styleVariant="ghost"`, `color="neutral"`, `size="icon-small"`, accessible label, and disabled-state
41
- * styling that matches the previous button).
42
- */
25
+ }: PeriodStepperButtonProps) => import("react/jsx-runtime").JSX.Element;
43
26
  declare const PeriodStepperButtonNext: ({
44
27
  className,
45
28
  "aria-label": ariaLabel,
46
29
  ...rest
47
- }: Omit<ButtonProps, "styleVariant" | "color" | "size" | "children">) => import("react/jsx-runtime").JSX.Element;
30
+ }: PeriodStepperButtonProps) => import("react/jsx-runtime").JSX.Element;
48
31
  //#endregion
49
32
  export { PeriodStepper, PeriodStepperButtonNext, PeriodStepperButtonPrev, PeriodStepperLabel, PeriodTabs };
50
33
  //# sourceMappingURL=period-tabs.d.cts.map
@@ -3,48 +3,31 @@
3
3
  import { ButtonProps } from "./button.js";
4
4
 
5
5
  //#region src/components/period-tabs.d.ts
6
- /**
7
- * Outer container for a period picker — typically wraps a tabs row on top of
8
- * a date stepper.
9
- */
6
+ type PeriodStepperButtonProps = Omit<ButtonProps, 'styleVariant' | 'color' | 'size' | 'children' | 'aria-label'> & {
7
+ 'aria-label': string;
8
+ };
10
9
  declare const PeriodTabs: ({
11
10
  className,
12
11
  ...rest
13
12
  }: React.ComponentProps<"div">) => import("react/jsx-runtime").JSX.Element;
14
- /**
15
- * Date stepper row — renders prev / label / next children inline. Pair with
16
- * any icon button + `PeriodStepperLabel` (or custom content) inside.
17
- */
18
13
  declare const PeriodStepper: ({
19
14
  className,
20
15
  ...rest
21
16
  }: React.ComponentProps<"div">) => import("react/jsx-runtime").JSX.Element;
22
- /** Centered label between the stepper buttons. Has a fixed min-width so the
23
- * stepper doesn't jump as the label text changes length. */
24
17
  declare const PeriodStepperLabel: ({
25
18
  className,
26
19
  ...rest
27
20
  }: React.ComponentProps<"span">) => import("react/jsx-runtime").JSX.Element;
28
- /**
29
- * Previous-period button — chevron-left icon button with sensible defaults
30
- * (`styleVariant="ghost"`, `color="neutral"`, `size="icon-small"`, accessible label, and disabled-state
31
- * styling that matches the next button).
32
- */
33
21
  declare const PeriodStepperButtonPrev: ({
34
22
  className,
35
23
  "aria-label": ariaLabel,
36
24
  ...rest
37
- }: Omit<ButtonProps, "styleVariant" | "color" | "size" | "children">) => import("react/jsx-runtime").JSX.Element;
38
- /**
39
- * Next-period button — chevron-right icon button with sensible defaults
40
- * (`styleVariant="ghost"`, `color="neutral"`, `size="icon-small"`, accessible label, and disabled-state
41
- * styling that matches the previous button).
42
- */
25
+ }: PeriodStepperButtonProps) => import("react/jsx-runtime").JSX.Element;
43
26
  declare const PeriodStepperButtonNext: ({
44
27
  className,
45
28
  "aria-label": ariaLabel,
46
29
  ...rest
47
- }: Omit<ButtonProps, "styleVariant" | "color" | "size" | "children">) => import("react/jsx-runtime").JSX.Element;
30
+ }: PeriodStepperButtonProps) => import("react/jsx-runtime").JSX.Element;
48
31
  //#endregion
49
32
  export { PeriodStepper, PeriodStepperButtonNext, PeriodStepperButtonPrev, PeriodStepperLabel, PeriodTabs };
50
33
  //# sourceMappingURL=period-tabs.d.ts.map
@@ -4,40 +4,25 @@ import { Button } from "./button.js";
4
4
  import { ChevronLeft, ChevronRight } from "@epilot/spark-icons";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region src/components/period-tabs.tsx
7
- /**
8
- * Outer container for a period picker — typically wraps a tabs row on top of
9
- * a date stepper.
10
- */
11
7
  const PeriodTabs = ({ className, ...rest }) => {
12
8
  return /* @__PURE__ */ jsx("div", {
13
9
  className: cn("flex flex-col items-center gap-2", className),
14
10
  ...rest
15
11
  });
16
12
  };
17
- /**
18
- * Date stepper row — renders prev / label / next children inline. Pair with
19
- * any icon button + `PeriodStepperLabel` (or custom content) inside.
20
- */
21
13
  const PeriodStepper = ({ className, ...rest }) => {
22
14
  return /* @__PURE__ */ jsx("div", {
23
15
  className: cn("flex items-center gap-2 text-gray-light", className),
24
16
  ...rest
25
17
  });
26
18
  };
27
- /** Centered label between the stepper buttons. Has a fixed min-width so the
28
- * stepper doesn't jump as the label text changes length. */
29
19
  const PeriodStepperLabel = ({ className, ...rest }) => {
30
20
  return /* @__PURE__ */ jsx("span", {
31
21
  className: cn("min-w-40 text-center text-sm font-medium text-gray", className),
32
22
  ...rest
33
23
  });
34
24
  };
35
- /**
36
- * Previous-period button — chevron-left icon button with sensible defaults
37
- * (`styleVariant="ghost"`, `color="neutral"`, `size="icon-small"`, accessible label, and disabled-state
38
- * styling that matches the next button).
39
- */
40
- const PeriodStepperButtonPrev = ({ className, "aria-label": ariaLabel = "Previous period", ...rest }) => {
25
+ const PeriodStepperButtonPrev = ({ className, "aria-label": ariaLabel, ...rest }) => {
41
26
  return /* @__PURE__ */ jsx(Button, {
42
27
  "aria-label": ariaLabel,
43
28
  className: cn("disabled:text-gray-light/60 disabled:opacity-40", className),
@@ -48,12 +33,7 @@ const PeriodStepperButtonPrev = ({ className, "aria-label": ariaLabel = "Previou
48
33
  children: /* @__PURE__ */ jsx(ChevronLeft, {})
49
34
  });
50
35
  };
51
- /**
52
- * Next-period button — chevron-right icon button with sensible defaults
53
- * (`styleVariant="ghost"`, `color="neutral"`, `size="icon-small"`, accessible label, and disabled-state
54
- * styling that matches the previous button).
55
- */
56
- const PeriodStepperButtonNext = ({ className, "aria-label": ariaLabel = "Next period", ...rest }) => {
36
+ const PeriodStepperButtonNext = ({ className, "aria-label": ariaLabel, ...rest }) => {
57
37
  return /* @__PURE__ */ jsx(Button, {
58
38
  "aria-label": ariaLabel,
59
39
  className: cn("disabled:text-gray-light/60 disabled:opacity-40", className),
@@ -1 +1 @@
1
- {"version":3,"file":"period-tabs.js","names":[],"sources":["../../src/components/period-tabs.tsx"],"sourcesContent":["import { ChevronLeft, ChevronRight } from '@epilot/spark-icons'\nimport { cn } from '../utils/cn'\nimport { Button, type ButtonProps } from './button'\n\n/**\n * Outer container for a period picker — typically wraps a tabs row on top of\n * a date stepper.\n */\nconst PeriodTabs = ({ className, ...rest }: React.ComponentProps<'div'>) => {\n return (\n <div\n className={cn('flex flex-col items-center gap-2', className)}\n {...rest}\n />\n )\n}\n\n/**\n * Date stepper row — renders prev / label / next children inline. Pair with\n * any icon button + `PeriodStepperLabel` (or custom content) inside.\n */\nconst PeriodStepper = ({ className, ...rest }: React.ComponentProps<'div'>) => {\n return (\n <div\n className={cn('flex items-center gap-2 text-gray-light', className)}\n {...rest}\n />\n )\n}\n\n/** Centered label between the stepper buttons. Has a fixed min-width so the\n * stepper doesn't jump as the label text changes length. */\nconst PeriodStepperLabel = ({\n className,\n ...rest\n}: React.ComponentProps<'span'>) => {\n return (\n <span\n className={cn(\n 'min-w-40 text-center text-sm font-medium text-gray',\n className,\n )}\n {...rest}\n />\n )\n}\n\n/**\n * Previous-period button — chevron-left icon button with sensible defaults\n * (`styleVariant=\"ghost\"`, `color=\"neutral\"`, `size=\"icon-small\"`, accessible label, and disabled-state\n * styling that matches the next button).\n */\nconst PeriodStepperButtonPrev = ({\n className,\n 'aria-label': ariaLabel = 'Previous period',\n ...rest\n}: Omit<ButtonProps, 'styleVariant' | 'color' | 'size' | 'children'>) => {\n return (\n <Button\n aria-label={ariaLabel}\n className={cn(\n 'disabled:text-gray-light/60 disabled:opacity-40',\n className,\n )}\n size=\"icon-small\"\n styleVariant=\"ghost\"\n color=\"neutral\"\n {...rest}\n >\n <ChevronLeft />\n </Button>\n )\n}\n\n/**\n * Next-period button — chevron-right icon button with sensible defaults\n * (`styleVariant=\"ghost\"`, `color=\"neutral\"`, `size=\"icon-small\"`, accessible label, and disabled-state\n * styling that matches the previous button).\n */\nconst PeriodStepperButtonNext = ({\n className,\n 'aria-label': ariaLabel = 'Next period',\n ...rest\n}: Omit<ButtonProps, 'styleVariant' | 'color' | 'size' | 'children'>) => {\n return (\n <Button\n aria-label={ariaLabel}\n className={cn(\n 'disabled:text-gray-light/60 disabled:opacity-40',\n className,\n )}\n size=\"icon-small\"\n styleVariant=\"ghost\"\n color=\"neutral\"\n {...rest}\n >\n <ChevronRight />\n </Button>\n )\n}\n\nexport {\n PeriodTabs,\n PeriodStepper,\n PeriodStepperLabel,\n PeriodStepperButtonPrev,\n PeriodStepperButtonNext,\n}\n"],"mappings":";;;;;;;;;;AAQA,MAAM,cAAc,EAAE,WAAW,GAAG,WAAwC;CAC1E,OACE,oBAAC,OAAD;EACE,WAAW,GAAG,oCAAoC,SAAS;EAC3D,GAAI;CACL,CAAA;AAEL;;;;;AAMA,MAAM,iBAAiB,EAAE,WAAW,GAAG,WAAwC;CAC7E,OACE,oBAAC,OAAD;EACE,WAAW,GAAG,2CAA2C,SAAS;EAClE,GAAI;CACL,CAAA;AAEL;;;AAIA,MAAM,sBAAsB,EAC1B,WACA,GAAG,WAC+B;CAClC,OACE,oBAAC,QAAD;EACE,WAAW,GACT,sDACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;;;;;AAOA,MAAM,2BAA2B,EAC/B,WACA,cAAc,YAAY,mBAC1B,GAAG,WACoE;CACvE,OACE,oBAAC,QAAD;EACE,cAAY;EACZ,WAAW,GACT,mDACA,SACF;EACA,MAAK;EACL,cAAa;EACb,OAAM;EACN,GAAI;YAEJ,oBAAC,aAAD,CAAc,CAAA;CACR,CAAA;AAEZ;;;;;;AAOA,MAAM,2BAA2B,EAC/B,WACA,cAAc,YAAY,eAC1B,GAAG,WACoE;CACvE,OACE,oBAAC,QAAD;EACE,cAAY;EACZ,WAAW,GACT,mDACA,SACF;EACA,MAAK;EACL,cAAa;EACb,OAAM;EACN,GAAI;YAEJ,oBAAC,cAAD,CAAe,CAAA;CACT,CAAA;AAEZ"}
1
+ {"version":3,"file":"period-tabs.js","names":[],"sources":["../../src/components/period-tabs.tsx"],"sourcesContent":["import { ChevronLeft, ChevronRight } from '@epilot/spark-icons'\nimport { cn } from '../utils/cn'\nimport { Button, type ButtonProps } from './button'\n\ntype PeriodStepperButtonProps = Omit<\n ButtonProps,\n 'styleVariant' | 'color' | 'size' | 'children' | 'aria-label'\n> & {\n 'aria-label': string\n}\n\nconst PeriodTabs = ({ className, ...rest }: React.ComponentProps<'div'>) => {\n return (\n <div\n className={cn('flex flex-col items-center gap-2', className)}\n {...rest}\n />\n )\n}\n\nconst PeriodStepper = ({ className, ...rest }: React.ComponentProps<'div'>) => {\n return (\n <div\n className={cn('flex items-center gap-2 text-gray-light', className)}\n {...rest}\n />\n )\n}\n\nconst PeriodStepperLabel = ({\n className,\n ...rest\n}: React.ComponentProps<'span'>) => {\n return (\n <span\n className={cn(\n 'min-w-40 text-center text-sm font-medium text-gray',\n className,\n )}\n {...rest}\n />\n )\n}\n\nconst PeriodStepperButtonPrev = ({\n className,\n 'aria-label': ariaLabel,\n ...rest\n}: PeriodStepperButtonProps) => {\n return (\n <Button\n aria-label={ariaLabel}\n className={cn(\n 'disabled:text-gray-light/60 disabled:opacity-40',\n className,\n )}\n size=\"icon-small\"\n styleVariant=\"ghost\"\n color=\"neutral\"\n {...rest}\n >\n <ChevronLeft />\n </Button>\n )\n}\n\nconst PeriodStepperButtonNext = ({\n className,\n 'aria-label': ariaLabel,\n ...rest\n}: PeriodStepperButtonProps) => {\n return (\n <Button\n aria-label={ariaLabel}\n className={cn(\n 'disabled:text-gray-light/60 disabled:opacity-40',\n className,\n )}\n size=\"icon-small\"\n styleVariant=\"ghost\"\n color=\"neutral\"\n {...rest}\n >\n <ChevronRight />\n </Button>\n )\n}\n\nexport {\n PeriodTabs,\n PeriodStepper,\n PeriodStepperLabel,\n PeriodStepperButtonPrev,\n PeriodStepperButtonNext,\n}\n"],"mappings":";;;;;;AAWA,MAAM,cAAc,EAAE,WAAW,GAAG,WAAwC;CAC1E,OACE,oBAAC,OAAD;EACE,WAAW,GAAG,oCAAoC,SAAS;EAC3D,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,iBAAiB,EAAE,WAAW,GAAG,WAAwC;CAC7E,OACE,oBAAC,OAAD;EACE,WAAW,GAAG,2CAA2C,SAAS;EAClE,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,sBAAsB,EAC1B,WACA,GAAG,WAC+B;CAClC,OACE,oBAAC,QAAD;EACE,WAAW,GACT,sDACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,2BAA2B,EAC/B,WACA,cAAc,WACd,GAAG,WAC2B;CAC9B,OACE,oBAAC,QAAD;EACE,cAAY;EACZ,WAAW,GACT,mDACA,SACF;EACA,MAAK;EACL,cAAa;EACb,OAAM;EACN,GAAI;YAEJ,oBAAC,aAAD,CAAc,CAAA;CACR,CAAA;AAEZ;AAEA,MAAM,2BAA2B,EAC/B,WACA,cAAc,WACd,GAAG,WAC2B;CAC9B,OACE,oBAAC,QAAD;EACE,cAAY;EACZ,WAAW,GACT,mDACA,SACF;EACA,MAAK;EACL,cAAa;EACb,OAAM;EACN,GAAI;YAEJ,oBAAC,cAAD,CAAe,CAAA;CACT,CAAA;AAEZ"}
@@ -42,7 +42,7 @@ const Pill = react.forwardRef(function Pill({ className, children, styleVariant,
42
42
  "data-accent-color": color ? require_lib_accent_colors.accentByColor[color] : void 0,
43
43
  ...interaction,
44
44
  ref,
45
- className: (0, cnfast.cn)("inline-flex h-7 items-center gap-1 rounded-full px-2.5 text-xs font-medium select-none", "bg-(--spark-style-bg,var(--neutral-a3)) text-(--spark-style-fg,var(--spark-badge-fg,var(--neutral-a11)))", "shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]", focusable && "transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden motion-reduce:transition-none", clickable && "cursor-pointer hover:bg-(--spark-style-bg-hover,var(--neutral-a4))", disabled && "pointer-events-none opacity-50", className),
45
+ className: (0, cnfast.cn)("inline-flex h-7 items-center gap-1 rounded-full px-2.5 text-xs font-medium select-none", "bg-(--spark-style-bg,var(--color-base-gray-soft)) text-(--spark-style-fg,var(--spark-badge-fg,var(--color-gray-high-contrast)))", "shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]", focusable && "transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden motion-reduce:transition-none", clickable && "cursor-pointer hover:bg-(--spark-style-bg-hover,var(--color-gray-a4))", disabled && "pointer-events-none opacity-50", className),
46
46
  ...props,
47
47
  children: [children, removable ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
48
48
  className: "sr-only",
@@ -54,7 +54,7 @@ const Pill = react.forwardRef(function Pill({ className, children, styleVariant,
54
54
  event.stopPropagation();
55
55
  onRemove?.(event);
56
56
  },
57
- className: "-mr-1 inline-flex size-4 shrink-0 items-center justify-center rounded-full transition-colors hover:bg-(--spark-style-bg-hover,var(--neutral-a4)) motion-reduce:transition-none",
57
+ className: "-mr-1 inline-flex size-4 shrink-0 items-center justify-center rounded-full transition-colors hover:bg-(--spark-style-bg-hover,var(--color-gray-a4)) motion-reduce:transition-none",
58
58
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_epilot_spark_icons.Close, { className: "[--spark-icon-size:14px]" })
59
59
  })] }) : null]
60
60
  });
@@ -1 +1 @@
1
- {"version":3,"file":"pill.cjs","names":["React","accentByColor","Close"],"sources":["../../src/components/pill.tsx"],"sourcesContent":["import { Close } from '@epilot/spark-icons'\nimport * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkAccentColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\ntype PillRemoveProps =\n | { onRemove?: undefined; removeLabel?: string }\n | {\n /** Fires on a pointer click of the (decorative) glyph, or Delete/Backspace while the pill has focus. */\n onRemove: (event: React.SyntheticEvent) => void\n /** Visually-hidden text folded into the pill's accessible name -- the glyph itself is `aria-hidden`. */\n removeLabel: string\n }\n\ntype PillProps = Omit<React.HTMLAttributes<HTMLSpanElement>, 'onClick'> &\n PillRemoveProps & {\n styleVariant?: SparkStyle\n color?: SparkAccentColor\n disabled?: boolean\n onClick?: (event: React.SyntheticEvent<HTMLSpanElement>) => void\n }\n\n/**\n * Like Badge, but interactive: `onClick` makes the whole pill a button\n * (Enter/Space), `onRemove` adds a Delete/Backspace-and-click affordance.\n * Both are optional -- with neither, it's a static label.\n */\nconst Pill = React.forwardRef<HTMLSpanElement, PillProps>(function Pill(\n {\n className,\n children,\n styleVariant,\n color,\n disabled = false,\n onClick,\n onRemove,\n removeLabel,\n onKeyDown,\n ...props\n },\n ref,\n) {\n const clickable = !disabled && onClick !== undefined\n const removable = !disabled && onRemove !== undefined\n const focusable = clickable || removable\n const hasLook = styleVariant !== undefined || color !== undefined\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLSpanElement>) => {\n onKeyDown?.(event)\n if (clickable && (event.key === 'Enter' || event.key === ' ')) {\n if (event.key === ' ') event.preventDefault()\n onClick?.(event)\n }\n if (removable && (event.key === 'Delete' || event.key === 'Backspace')) {\n onRemove?.(event)\n }\n }\n\n // button role and click handler travel together, so a clickable pill always\n // answers Enter/Space; a removable-only pill stays generic and answers Delete\n const interaction = {\n onKeyDown: handleKeyDown,\n ...(clickable && { role: 'button' as const, onClick }),\n ...(focusable && { tabIndex: 0 }),\n }\n\n return (\n <span\n aria-disabled={disabled || undefined}\n aria-keyshortcuts={removable ? 'Delete' : undefined}\n data-slot=\"pill\"\n data-style={hasLook ? (styleVariant ?? 'soft') : undefined}\n data-accent-color={color ? accentByColor[color] : undefined}\n {...interaction}\n ref={ref}\n className={cn(\n 'inline-flex h-7 items-center gap-1 rounded-full px-2.5 text-xs font-medium select-none',\n // shared chip ink with Badge: solid leaves --spark-style-fg unset, so without the\n // --spark-badge-fg link solid text falls through to a11 on the step-9 fill (fails AA)\n 'bg-(--spark-style-bg,var(--neutral-a3)) text-(--spark-style-fg,var(--spark-badge-fg,var(--neutral-a11)))',\n // surface/outline are defined by their edge; painted inset like Button's so it\n // costs no layout, unlike Badge's real border\n 'shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]',\n focusable &&\n 'transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden motion-reduce:transition-none',\n clickable &&\n 'cursor-pointer hover:bg-(--spark-style-bg-hover,var(--neutral-a4))',\n disabled && 'pointer-events-none opacity-50',\n className,\n )}\n {...props}\n >\n {children}\n {removable ? (\n <>\n {/* aria-hidden hides the glyph itself; this carries removeLabel into the pill's own accessible name */}\n <span className=\"sr-only\">{removeLabel}</span>\n <span\n aria-hidden=\"true\"\n data-slot=\"pill-remove\"\n onClick={(event) => {\n event.stopPropagation()\n onRemove?.(event)\n }}\n className=\"-mr-1 inline-flex size-4 shrink-0 items-center justify-center rounded-full transition-colors hover:bg-(--spark-style-bg-hover,var(--neutral-a4)) motion-reduce:transition-none\"\n >\n <Close className=\"[--spark-icon-size:14px]\" />\n </span>\n </>\n ) : null}\n </span>\n )\n})\n\nPill.displayName = 'Pill'\n\nexport { Pill }\nexport type { PillProps }\n"],"mappings":";;;;;;;;;;;;;;;AA6BA,MAAM,OAAOA,MAAM,WAAuC,SAAS,KACjE,EACE,WACA,UACA,cACA,OACA,WAAW,OACX,SACA,UACA,aACA,WACA,GAAG,SAEL,KACA;CACA,MAAM,YAAY,CAAC,YAAY,YAAY,KAAA;CAC3C,MAAM,YAAY,CAAC,YAAY,aAAa,KAAA;CAC5C,MAAM,YAAY,aAAa;CAC/B,MAAM,UAAU,iBAAiB,KAAA,KAAa,UAAU,KAAA;CAExD,MAAM,iBAAiB,UAAgD;EACrE,YAAY,KAAK;EACjB,IAAI,cAAc,MAAM,QAAQ,WAAW,MAAM,QAAQ,MAAM;GAC7D,IAAI,MAAM,QAAQ,KAAK,MAAM,eAAe;GAC5C,UAAU,KAAK;EACjB;EACA,IAAI,cAAc,MAAM,QAAQ,YAAY,MAAM,QAAQ,cACxD,WAAW,KAAK;CAEpB;CAIA,MAAM,cAAc;EAClB,WAAW;EACX,GAAI,aAAa;GAAE,MAAM;GAAmB;EAAQ;EACpD,GAAI,aAAa,EAAE,UAAU,EAAE;CACjC;CAEA,OACE,iBAAA,GAAA,kBAAA,MAAC,QAAD;EACE,iBAAe,YAAY,KAAA;EAC3B,qBAAmB,YAAY,WAAW,KAAA;EAC1C,aAAU;EACV,cAAY,UAAW,gBAAgB,SAAU,KAAA;EACjD,qBAAmB,QAAQC,0BAAAA,cAAc,SAAS,KAAA;EAClD,GAAI;EACC;EACL,YAAA,GAAA,OAAA,IACE,0FAGA,4GAGA,kGACA,aACE,iIACF,aACE,sEACF,YAAY,kCACZ,SACF;EACA,GAAI;YAvBN,CAyBG,UACA,YACC,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CAEE,iBAAA,GAAA,kBAAA,KAAC,QAAD;GAAM,WAAU;aAAW;EAAkB,CAAA,GAC7C,iBAAA,GAAA,kBAAA,KAAC,QAAD;GACE,eAAY;GACZ,aAAU;GACV,UAAU,UAAU;IAClB,MAAM,gBAAgB;IACtB,WAAW,KAAK;GAClB;GACA,WAAU;aAEV,iBAAA,GAAA,kBAAA,KAACC,oBAAAA,OAAD,EAAO,WAAU,2BAA4B,CAAA;EACzC,CAAA,CACN,EAAA,CAAA,IACA,IACA;;AAEV,CAAC;AAED,KAAK,cAAc"}
1
+ {"version":3,"file":"pill.cjs","names":["React","accentByColor","Close"],"sources":["../../src/components/pill.tsx"],"sourcesContent":["import { Close } from '@epilot/spark-icons'\nimport * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkAccentColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\ntype PillRemoveProps =\n | { onRemove?: undefined; removeLabel?: string }\n | {\n /** Fires on a pointer click of the (decorative) glyph, or Delete/Backspace while the pill has focus. */\n onRemove: (event: React.SyntheticEvent) => void\n /** Visually-hidden text folded into the pill's accessible name -- the glyph itself is `aria-hidden`. */\n removeLabel: string\n }\n\ntype PillProps = Omit<React.HTMLAttributes<HTMLSpanElement>, 'onClick'> &\n PillRemoveProps & {\n styleVariant?: SparkStyle\n color?: SparkAccentColor\n disabled?: boolean\n onClick?: (event: React.SyntheticEvent<HTMLSpanElement>) => void\n }\n\n/**\n * Like Badge, but interactive: `onClick` makes the whole pill a button\n * (Enter/Space), `onRemove` adds a Delete/Backspace-and-click affordance.\n * Both are optional -- with neither, it's a static label.\n */\nconst Pill = React.forwardRef<HTMLSpanElement, PillProps>(function Pill(\n {\n className,\n children,\n styleVariant,\n color,\n disabled = false,\n onClick,\n onRemove,\n removeLabel,\n onKeyDown,\n ...props\n },\n ref,\n) {\n const clickable = !disabled && onClick !== undefined\n const removable = !disabled && onRemove !== undefined\n const focusable = clickable || removable\n const hasLook = styleVariant !== undefined || color !== undefined\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLSpanElement>) => {\n onKeyDown?.(event)\n if (clickable && (event.key === 'Enter' || event.key === ' ')) {\n if (event.key === ' ') event.preventDefault()\n onClick?.(event)\n }\n if (removable && (event.key === 'Delete' || event.key === 'Backspace')) {\n onRemove?.(event)\n }\n }\n\n // button role and click handler travel together, so a clickable pill always\n // answers Enter/Space; a removable-only pill stays generic and answers Delete\n const interaction = {\n onKeyDown: handleKeyDown,\n ...(clickable && { role: 'button' as const, onClick }),\n ...(focusable && { tabIndex: 0 }),\n }\n\n return (\n <span\n aria-disabled={disabled || undefined}\n aria-keyshortcuts={removable ? 'Delete' : undefined}\n data-slot=\"pill\"\n data-style={hasLook ? (styleVariant ?? 'soft') : undefined}\n data-accent-color={color ? accentByColor[color] : undefined}\n {...interaction}\n ref={ref}\n className={cn(\n 'inline-flex h-7 items-center gap-1 rounded-full px-2.5 text-xs font-medium select-none',\n 'bg-(--spark-style-bg,var(--color-base-gray-soft)) text-(--spark-style-fg,var(--spark-badge-fg,var(--color-gray-high-contrast)))',\n 'shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]',\n focusable &&\n 'transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden motion-reduce:transition-none',\n clickable &&\n 'cursor-pointer hover:bg-(--spark-style-bg-hover,var(--color-gray-a4))',\n disabled && 'pointer-events-none opacity-50',\n className,\n )}\n {...props}\n >\n {children}\n {removable ? (\n <>\n {/* aria-hidden hides the glyph itself; this carries removeLabel into the pill's own accessible name */}\n <span className=\"sr-only\">{removeLabel}</span>\n <span\n aria-hidden=\"true\"\n data-slot=\"pill-remove\"\n onClick={(event) => {\n event.stopPropagation()\n onRemove?.(event)\n }}\n className=\"-mr-1 inline-flex size-4 shrink-0 items-center justify-center rounded-full transition-colors hover:bg-(--spark-style-bg-hover,var(--color-gray-a4)) motion-reduce:transition-none\"\n >\n <Close className=\"[--spark-icon-size:14px]\" />\n </span>\n </>\n ) : null}\n </span>\n )\n})\n\nPill.displayName = 'Pill'\n\nexport { Pill }\nexport type { PillProps }\n"],"mappings":";;;;;;;;;;;;;;;AA6BA,MAAM,OAAOA,MAAM,WAAuC,SAAS,KACjE,EACE,WACA,UACA,cACA,OACA,WAAW,OACX,SACA,UACA,aACA,WACA,GAAG,SAEL,KACA;CACA,MAAM,YAAY,CAAC,YAAY,YAAY,KAAA;CAC3C,MAAM,YAAY,CAAC,YAAY,aAAa,KAAA;CAC5C,MAAM,YAAY,aAAa;CAC/B,MAAM,UAAU,iBAAiB,KAAA,KAAa,UAAU,KAAA;CAExD,MAAM,iBAAiB,UAAgD;EACrE,YAAY,KAAK;EACjB,IAAI,cAAc,MAAM,QAAQ,WAAW,MAAM,QAAQ,MAAM;GAC7D,IAAI,MAAM,QAAQ,KAAK,MAAM,eAAe;GAC5C,UAAU,KAAK;EACjB;EACA,IAAI,cAAc,MAAM,QAAQ,YAAY,MAAM,QAAQ,cACxD,WAAW,KAAK;CAEpB;CAIA,MAAM,cAAc;EAClB,WAAW;EACX,GAAI,aAAa;GAAE,MAAM;GAAmB;EAAQ;EACpD,GAAI,aAAa,EAAE,UAAU,EAAE;CACjC;CAEA,OACE,iBAAA,GAAA,kBAAA,MAAC,QAAD;EACE,iBAAe,YAAY,KAAA;EAC3B,qBAAmB,YAAY,WAAW,KAAA;EAC1C,aAAU;EACV,cAAY,UAAW,gBAAgB,SAAU,KAAA;EACjD,qBAAmB,QAAQC,0BAAAA,cAAc,SAAS,KAAA;EAClD,GAAI;EACC;EACL,YAAA,GAAA,OAAA,IACE,0FACA,mIACA,kGACA,aACE,iIACF,aACE,yEACF,YAAY,kCACZ,SACF;EACA,GAAI;YAnBN,CAqBG,UACA,YACC,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CAEE,iBAAA,GAAA,kBAAA,KAAC,QAAD;GAAM,WAAU;aAAW;EAAkB,CAAA,GAC7C,iBAAA,GAAA,kBAAA,KAAC,QAAD;GACE,eAAY;GACZ,aAAU;GACV,UAAU,UAAU;IAClB,MAAM,gBAAgB;IACtB,WAAW,KAAK;GAClB;GACA,WAAU;aAEV,iBAAA,GAAA,kBAAA,KAACC,oBAAAA,OAAD,EAAO,WAAU,2BAA4B,CAAA;EACzC,CAAA,CACN,EAAA,CAAA,IACA,IACA;;AAEV,CAAC;AAED,KAAK,cAAc"}
@@ -39,7 +39,7 @@ const Pill = React$1.forwardRef(function Pill({ className, children, styleVarian
39
39
  "data-accent-color": color ? accentByColor[color] : void 0,
40
40
  ...interaction,
41
41
  ref,
42
- className: cn("inline-flex h-7 items-center gap-1 rounded-full px-2.5 text-xs font-medium select-none", "bg-(--spark-style-bg,var(--neutral-a3)) text-(--spark-style-fg,var(--spark-badge-fg,var(--neutral-a11)))", "shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]", focusable && "transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden motion-reduce:transition-none", clickable && "cursor-pointer hover:bg-(--spark-style-bg-hover,var(--neutral-a4))", disabled && "pointer-events-none opacity-50", className),
42
+ className: cn("inline-flex h-7 items-center gap-1 rounded-full px-2.5 text-xs font-medium select-none", "bg-(--spark-style-bg,var(--color-base-gray-soft)) text-(--spark-style-fg,var(--spark-badge-fg,var(--color-gray-high-contrast)))", "shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]", focusable && "transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden motion-reduce:transition-none", clickable && "cursor-pointer hover:bg-(--spark-style-bg-hover,var(--color-gray-a4))", disabled && "pointer-events-none opacity-50", className),
43
43
  ...props,
44
44
  children: [children, removable ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("span", {
45
45
  className: "sr-only",
@@ -51,7 +51,7 @@ const Pill = React$1.forwardRef(function Pill({ className, children, styleVarian
51
51
  event.stopPropagation();
52
52
  onRemove?.(event);
53
53
  },
54
- className: "-mr-1 inline-flex size-4 shrink-0 items-center justify-center rounded-full transition-colors hover:bg-(--spark-style-bg-hover,var(--neutral-a4)) motion-reduce:transition-none",
54
+ className: "-mr-1 inline-flex size-4 shrink-0 items-center justify-center rounded-full transition-colors hover:bg-(--spark-style-bg-hover,var(--color-gray-a4)) motion-reduce:transition-none",
55
55
  children: /* @__PURE__ */ jsx(Close, { className: "[--spark-icon-size:14px]" })
56
56
  })] }) : null]
57
57
  });
@@ -1 +1 @@
1
- {"version":3,"file":"pill.js","names":["React"],"sources":["../../src/components/pill.tsx"],"sourcesContent":["import { Close } from '@epilot/spark-icons'\nimport * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkAccentColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\ntype PillRemoveProps =\n | { onRemove?: undefined; removeLabel?: string }\n | {\n /** Fires on a pointer click of the (decorative) glyph, or Delete/Backspace while the pill has focus. */\n onRemove: (event: React.SyntheticEvent) => void\n /** Visually-hidden text folded into the pill's accessible name -- the glyph itself is `aria-hidden`. */\n removeLabel: string\n }\n\ntype PillProps = Omit<React.HTMLAttributes<HTMLSpanElement>, 'onClick'> &\n PillRemoveProps & {\n styleVariant?: SparkStyle\n color?: SparkAccentColor\n disabled?: boolean\n onClick?: (event: React.SyntheticEvent<HTMLSpanElement>) => void\n }\n\n/**\n * Like Badge, but interactive: `onClick` makes the whole pill a button\n * (Enter/Space), `onRemove` adds a Delete/Backspace-and-click affordance.\n * Both are optional -- with neither, it's a static label.\n */\nconst Pill = React.forwardRef<HTMLSpanElement, PillProps>(function Pill(\n {\n className,\n children,\n styleVariant,\n color,\n disabled = false,\n onClick,\n onRemove,\n removeLabel,\n onKeyDown,\n ...props\n },\n ref,\n) {\n const clickable = !disabled && onClick !== undefined\n const removable = !disabled && onRemove !== undefined\n const focusable = clickable || removable\n const hasLook = styleVariant !== undefined || color !== undefined\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLSpanElement>) => {\n onKeyDown?.(event)\n if (clickable && (event.key === 'Enter' || event.key === ' ')) {\n if (event.key === ' ') event.preventDefault()\n onClick?.(event)\n }\n if (removable && (event.key === 'Delete' || event.key === 'Backspace')) {\n onRemove?.(event)\n }\n }\n\n // button role and click handler travel together, so a clickable pill always\n // answers Enter/Space; a removable-only pill stays generic and answers Delete\n const interaction = {\n onKeyDown: handleKeyDown,\n ...(clickable && { role: 'button' as const, onClick }),\n ...(focusable && { tabIndex: 0 }),\n }\n\n return (\n <span\n aria-disabled={disabled || undefined}\n aria-keyshortcuts={removable ? 'Delete' : undefined}\n data-slot=\"pill\"\n data-style={hasLook ? (styleVariant ?? 'soft') : undefined}\n data-accent-color={color ? accentByColor[color] : undefined}\n {...interaction}\n ref={ref}\n className={cn(\n 'inline-flex h-7 items-center gap-1 rounded-full px-2.5 text-xs font-medium select-none',\n // shared chip ink with Badge: solid leaves --spark-style-fg unset, so without the\n // --spark-badge-fg link solid text falls through to a11 on the step-9 fill (fails AA)\n 'bg-(--spark-style-bg,var(--neutral-a3)) text-(--spark-style-fg,var(--spark-badge-fg,var(--neutral-a11)))',\n // surface/outline are defined by their edge; painted inset like Button's so it\n // costs no layout, unlike Badge's real border\n 'shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]',\n focusable &&\n 'transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden motion-reduce:transition-none',\n clickable &&\n 'cursor-pointer hover:bg-(--spark-style-bg-hover,var(--neutral-a4))',\n disabled && 'pointer-events-none opacity-50',\n className,\n )}\n {...props}\n >\n {children}\n {removable ? (\n <>\n {/* aria-hidden hides the glyph itself; this carries removeLabel into the pill's own accessible name */}\n <span className=\"sr-only\">{removeLabel}</span>\n <span\n aria-hidden=\"true\"\n data-slot=\"pill-remove\"\n onClick={(event) => {\n event.stopPropagation()\n onRemove?.(event)\n }}\n className=\"-mr-1 inline-flex size-4 shrink-0 items-center justify-center rounded-full transition-colors hover:bg-(--spark-style-bg-hover,var(--neutral-a4)) motion-reduce:transition-none\"\n >\n <Close className=\"[--spark-icon-size:14px]\" />\n </span>\n </>\n ) : null}\n </span>\n )\n})\n\nPill.displayName = 'Pill'\n\nexport { Pill }\nexport type { PillProps }\n"],"mappings":";;;;;;;;;;;;AA6BA,MAAM,OAAOA,QAAM,WAAuC,SAAS,KACjE,EACE,WACA,UACA,cACA,OACA,WAAW,OACX,SACA,UACA,aACA,WACA,GAAG,SAEL,KACA;CACA,MAAM,YAAY,CAAC,YAAY,YAAY,KAAA;CAC3C,MAAM,YAAY,CAAC,YAAY,aAAa,KAAA;CAC5C,MAAM,YAAY,aAAa;CAC/B,MAAM,UAAU,iBAAiB,KAAA,KAAa,UAAU,KAAA;CAExD,MAAM,iBAAiB,UAAgD;EACrE,YAAY,KAAK;EACjB,IAAI,cAAc,MAAM,QAAQ,WAAW,MAAM,QAAQ,MAAM;GAC7D,IAAI,MAAM,QAAQ,KAAK,MAAM,eAAe;GAC5C,UAAU,KAAK;EACjB;EACA,IAAI,cAAc,MAAM,QAAQ,YAAY,MAAM,QAAQ,cACxD,WAAW,KAAK;CAEpB;CAIA,MAAM,cAAc;EAClB,WAAW;EACX,GAAI,aAAa;GAAE,MAAM;GAAmB;EAAQ;EACpD,GAAI,aAAa,EAAE,UAAU,EAAE;CACjC;CAEA,OACE,qBAAC,QAAD;EACE,iBAAe,YAAY,KAAA;EAC3B,qBAAmB,YAAY,WAAW,KAAA;EAC1C,aAAU;EACV,cAAY,UAAW,gBAAgB,SAAU,KAAA;EACjD,qBAAmB,QAAQ,cAAc,SAAS,KAAA;EAClD,GAAI;EACC;EACL,WAAW,GACT,0FAGA,4GAGA,kGACA,aACE,iIACF,aACE,sEACF,YAAY,kCACZ,SACF;EACA,GAAI;YAvBN,CAyBG,UACA,YACC,qBAAA,UAAA,EAAA,UAAA,CAEE,oBAAC,QAAD;GAAM,WAAU;aAAW;EAAkB,CAAA,GAC7C,oBAAC,QAAD;GACE,eAAY;GACZ,aAAU;GACV,UAAU,UAAU;IAClB,MAAM,gBAAgB;IACtB,WAAW,KAAK;GAClB;GACA,WAAU;aAEV,oBAAC,OAAD,EAAO,WAAU,2BAA4B,CAAA;EACzC,CAAA,CACN,EAAA,CAAA,IACA,IACA;;AAEV,CAAC;AAED,KAAK,cAAc"}
1
+ {"version":3,"file":"pill.js","names":["React"],"sources":["../../src/components/pill.tsx"],"sourcesContent":["import { Close } from '@epilot/spark-icons'\nimport * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkAccentColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\ntype PillRemoveProps =\n | { onRemove?: undefined; removeLabel?: string }\n | {\n /** Fires on a pointer click of the (decorative) glyph, or Delete/Backspace while the pill has focus. */\n onRemove: (event: React.SyntheticEvent) => void\n /** Visually-hidden text folded into the pill's accessible name -- the glyph itself is `aria-hidden`. */\n removeLabel: string\n }\n\ntype PillProps = Omit<React.HTMLAttributes<HTMLSpanElement>, 'onClick'> &\n PillRemoveProps & {\n styleVariant?: SparkStyle\n color?: SparkAccentColor\n disabled?: boolean\n onClick?: (event: React.SyntheticEvent<HTMLSpanElement>) => void\n }\n\n/**\n * Like Badge, but interactive: `onClick` makes the whole pill a button\n * (Enter/Space), `onRemove` adds a Delete/Backspace-and-click affordance.\n * Both are optional -- with neither, it's a static label.\n */\nconst Pill = React.forwardRef<HTMLSpanElement, PillProps>(function Pill(\n {\n className,\n children,\n styleVariant,\n color,\n disabled = false,\n onClick,\n onRemove,\n removeLabel,\n onKeyDown,\n ...props\n },\n ref,\n) {\n const clickable = !disabled && onClick !== undefined\n const removable = !disabled && onRemove !== undefined\n const focusable = clickable || removable\n const hasLook = styleVariant !== undefined || color !== undefined\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLSpanElement>) => {\n onKeyDown?.(event)\n if (clickable && (event.key === 'Enter' || event.key === ' ')) {\n if (event.key === ' ') event.preventDefault()\n onClick?.(event)\n }\n if (removable && (event.key === 'Delete' || event.key === 'Backspace')) {\n onRemove?.(event)\n }\n }\n\n // button role and click handler travel together, so a clickable pill always\n // answers Enter/Space; a removable-only pill stays generic and answers Delete\n const interaction = {\n onKeyDown: handleKeyDown,\n ...(clickable && { role: 'button' as const, onClick }),\n ...(focusable && { tabIndex: 0 }),\n }\n\n return (\n <span\n aria-disabled={disabled || undefined}\n aria-keyshortcuts={removable ? 'Delete' : undefined}\n data-slot=\"pill\"\n data-style={hasLook ? (styleVariant ?? 'soft') : undefined}\n data-accent-color={color ? accentByColor[color] : undefined}\n {...interaction}\n ref={ref}\n className={cn(\n 'inline-flex h-7 items-center gap-1 rounded-full px-2.5 text-xs font-medium select-none',\n 'bg-(--spark-style-bg,var(--color-base-gray-soft)) text-(--spark-style-fg,var(--spark-badge-fg,var(--color-gray-high-contrast)))',\n 'shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]',\n focusable &&\n 'transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden motion-reduce:transition-none',\n clickable &&\n 'cursor-pointer hover:bg-(--spark-style-bg-hover,var(--color-gray-a4))',\n disabled && 'pointer-events-none opacity-50',\n className,\n )}\n {...props}\n >\n {children}\n {removable ? (\n <>\n {/* aria-hidden hides the glyph itself; this carries removeLabel into the pill's own accessible name */}\n <span className=\"sr-only\">{removeLabel}</span>\n <span\n aria-hidden=\"true\"\n data-slot=\"pill-remove\"\n onClick={(event) => {\n event.stopPropagation()\n onRemove?.(event)\n }}\n className=\"-mr-1 inline-flex size-4 shrink-0 items-center justify-center rounded-full transition-colors hover:bg-(--spark-style-bg-hover,var(--color-gray-a4)) motion-reduce:transition-none\"\n >\n <Close className=\"[--spark-icon-size:14px]\" />\n </span>\n </>\n ) : null}\n </span>\n )\n})\n\nPill.displayName = 'Pill'\n\nexport { Pill }\nexport type { PillProps }\n"],"mappings":";;;;;;;;;;;;AA6BA,MAAM,OAAOA,QAAM,WAAuC,SAAS,KACjE,EACE,WACA,UACA,cACA,OACA,WAAW,OACX,SACA,UACA,aACA,WACA,GAAG,SAEL,KACA;CACA,MAAM,YAAY,CAAC,YAAY,YAAY,KAAA;CAC3C,MAAM,YAAY,CAAC,YAAY,aAAa,KAAA;CAC5C,MAAM,YAAY,aAAa;CAC/B,MAAM,UAAU,iBAAiB,KAAA,KAAa,UAAU,KAAA;CAExD,MAAM,iBAAiB,UAAgD;EACrE,YAAY,KAAK;EACjB,IAAI,cAAc,MAAM,QAAQ,WAAW,MAAM,QAAQ,MAAM;GAC7D,IAAI,MAAM,QAAQ,KAAK,MAAM,eAAe;GAC5C,UAAU,KAAK;EACjB;EACA,IAAI,cAAc,MAAM,QAAQ,YAAY,MAAM,QAAQ,cACxD,WAAW,KAAK;CAEpB;CAIA,MAAM,cAAc;EAClB,WAAW;EACX,GAAI,aAAa;GAAE,MAAM;GAAmB;EAAQ;EACpD,GAAI,aAAa,EAAE,UAAU,EAAE;CACjC;CAEA,OACE,qBAAC,QAAD;EACE,iBAAe,YAAY,KAAA;EAC3B,qBAAmB,YAAY,WAAW,KAAA;EAC1C,aAAU;EACV,cAAY,UAAW,gBAAgB,SAAU,KAAA;EACjD,qBAAmB,QAAQ,cAAc,SAAS,KAAA;EAClD,GAAI;EACC;EACL,WAAW,GACT,0FACA,mIACA,kGACA,aACE,iIACF,aACE,yEACF,YAAY,kCACZ,SACF;EACA,GAAI;YAnBN,CAqBG,UACA,YACC,qBAAA,UAAA,EAAA,UAAA,CAEE,oBAAC,QAAD;GAAM,WAAU;aAAW;EAAkB,CAAA,GAC7C,oBAAC,QAAD;GACE,eAAY;GACZ,aAAU;GACV,UAAU,UAAU;IAClB,MAAM,gBAAgB;IACtB,WAAW,KAAK;GAClB;GACA,WAAU;aAEV,oBAAC,OAAD,EAAO,WAAU,2BAA4B,CAAA;EACzC,CAAA,CACN,EAAA,CAAA,IACA,IACA;;AAEV,CAAC;AAED,KAAK,cAAc"}
@@ -1,15 +1,15 @@
1
1
  "use client";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const require_chunk = require("../chunk-DY84GLCh.cjs");
4
+ const require_hooks_use_chart_zoom = require("../hooks/use-chart-zoom.cjs");
5
+ const require_hooks_use_reduced_motion = require("../hooks/use-reduced-motion.cjs");
4
6
  require("../utils/chars.cjs");
5
7
  const require_utils_format = require("../utils/format.cjs");
6
8
  const require_utils_chart_scale = require("../utils/chart-scale.cjs");
7
- const require_utils_chart_time_ticks = require("../utils/chart-time-ticks.cjs");
8
- const require_hooks_use_chart_zoom = require("../hooks/use-chart-zoom.cjs");
9
- const require_hooks_use_reduced_motion = require("../hooks/use-reduced-motion.cjs");
10
9
  const require_components_chart = require("./chart.cjs");
11
10
  const require_components_series_legend = require("./series-legend.cjs");
12
11
  const require_components_typography = require("./typography.cjs");
12
+ const require_utils_chart_time_ticks = require("../utils/chart-time-ticks.cjs");
13
13
  let react = require("react");
14
14
  react = require_chunk.__toESM(react);
15
15
  let react_jsx_runtime = require("react/jsx-runtime");
@@ -1,14 +1,14 @@
1
1
  "use client";
2
+ import { useAnimatedChartDomain, useChartZoom } from "../hooks/use-chart-zoom.js";
3
+ import { useReducedMotion } from "../hooks/use-reduced-motion.js";
4
+ import { cn } from "../utils/cn.js";
2
5
  import "../utils/chars.js";
3
6
  import { twoDecimalFormat } from "../utils/format.js";
4
7
  import { buildYAxisScale, formatYAxisTick, measureYAxisGutter } from "../utils/chart-scale.js";
5
- import { buildTimeTicks } from "../utils/chart-time-ticks.js";
6
- import { cn } from "../utils/cn.js";
7
- import { useAnimatedChartDomain, useChartZoom } from "../hooks/use-chart-zoom.js";
8
- import { useReducedMotion } from "../hooks/use-reduced-motion.js";
9
8
  import { ChartTooltipCard, ChartZoomResetButton, clampTooltipPosition, useMeasuredSize } from "./chart.js";
10
9
  import { SeriesLegend } from "./series-legend.js";
11
10
  import { SectionTitle } from "./typography.js";
11
+ import { buildTimeTicks } from "../utils/chart-time-ticks.js";
12
12
  import * as React$1 from "react";
13
13
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
14
14
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { cn } from "../utils/cn.js";
3
2
  import { useReducedMotion } from "../hooks/use-reduced-motion.js";
3
+ import { cn } from "../utils/cn.js";
4
4
  import { Skeleton } from "./skeleton.js";
5
5
  import { SectionTitle } from "./typography.js";
6
6
  import NumberFlow from "./number-flow.js";
@@ -22,7 +22,7 @@ const Progress = react.forwardRef(({ className, value, max = 100, size = "defaul
22
22
  role: "progressbar",
23
23
  ...props,
24
24
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
25
- className: "h-full rounded-full bg-(--spark-style-bg,var(--spark-9)) transition-all duration-300",
25
+ className: "h-full rounded-full bg-(--spark-style-bg,var(--color-primary)) transition-all duration-300",
26
26
  style: { width: `${percentage}%` }
27
27
  })
28
28
  });
@@ -1 +1 @@
1
- {"version":3,"file":"progress.cjs","names":["React"],"sources":["../../src/components/progress.tsx"],"sourcesContent":["import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface ProgressProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Current value */\n value: number\n /** Maximum value. Default: 100 */\n max?: number\n /** Height variant */\n size?: 'sm' | 'default' | 'lg'\n}\n\nconst sizeClasses = {\n sm: 'h-1',\n default: 'h-2',\n lg: 'h-3',\n} as const\n\nconst Progress = React.forwardRef<HTMLDivElement, ProgressProps>(\n ({ className, value, max = 100, size = 'default', ...props }, ref) => {\n const percentage = Math.min(100, Math.max(0, (value / max) * 100))\n\n return (\n <div\n aria-valuemax={max}\n aria-valuemin={0}\n aria-valuenow={value}\n className={cn(\n 'w-full overflow-hidden rounded-full bg-gray-a4',\n sizeClasses[size],\n className,\n )}\n ref={ref}\n role=\"progressbar\"\n {...props}\n >\n <div\n className=\"h-full rounded-full bg-(--spark-style-bg,var(--spark-9)) transition-all duration-300\"\n style={{ width: `${percentage}%` }}\n />\n </div>\n )\n },\n)\n\nProgress.displayName = 'Progress'\n\nexport { Progress }\n"],"mappings":";;;;;;;;AAYA,MAAM,cAAc;CAClB,IAAI;CACJ,SAAS;CACT,IAAI;AACN;AAEA,MAAM,WAAWA,MAAM,YACpB,EAAE,WAAW,OAAO,MAAM,KAAK,OAAO,WAAW,GAAG,SAAS,QAAQ;CACpE,MAAM,aAAa,KAAK,IAAI,KAAK,KAAK,IAAI,GAAI,QAAQ,MAAO,GAAG,CAAC;CAEjE,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,iBAAe;EACf,iBAAe;EACf,iBAAe;EACf,YAAA,GAAA,OAAA,IACE,kDACA,YAAY,OACZ,SACF;EACK;EACL,MAAK;EACL,GAAI;YAEJ,iBAAA,GAAA,kBAAA,KAAC,OAAD;GACE,WAAU;GACV,OAAO,EAAE,OAAO,GAAG,WAAW,GAAG;EAClC,CAAA;CACE,CAAA;AAET,CACF;AAEA,SAAS,cAAc"}
1
+ {"version":3,"file":"progress.cjs","names":["React"],"sources":["../../src/components/progress.tsx"],"sourcesContent":["import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface ProgressProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Current value */\n value: number\n /** Maximum value. Default: 100 */\n max?: number\n /** Height variant */\n size?: 'sm' | 'default' | 'lg'\n}\n\nconst sizeClasses = {\n sm: 'h-1',\n default: 'h-2',\n lg: 'h-3',\n} as const\n\nconst Progress = React.forwardRef<HTMLDivElement, ProgressProps>(\n ({ className, value, max = 100, size = 'default', ...props }, ref) => {\n const percentage = Math.min(100, Math.max(0, (value / max) * 100))\n\n return (\n <div\n aria-valuemax={max}\n aria-valuemin={0}\n aria-valuenow={value}\n className={cn(\n 'w-full overflow-hidden rounded-full bg-gray-a4',\n sizeClasses[size],\n className,\n )}\n ref={ref}\n role=\"progressbar\"\n {...props}\n >\n <div\n className=\"h-full rounded-full bg-(--spark-style-bg,var(--color-primary)) transition-all duration-300\"\n style={{ width: `${percentage}%` }}\n />\n </div>\n )\n },\n)\n\nProgress.displayName = 'Progress'\n\nexport { Progress }\n"],"mappings":";;;;;;;;AAYA,MAAM,cAAc;CAClB,IAAI;CACJ,SAAS;CACT,IAAI;AACN;AAEA,MAAM,WAAWA,MAAM,YACpB,EAAE,WAAW,OAAO,MAAM,KAAK,OAAO,WAAW,GAAG,SAAS,QAAQ;CACpE,MAAM,aAAa,KAAK,IAAI,KAAK,KAAK,IAAI,GAAI,QAAQ,MAAO,GAAG,CAAC;CAEjE,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,iBAAe;EACf,iBAAe;EACf,iBAAe;EACf,YAAA,GAAA,OAAA,IACE,kDACA,YAAY,OACZ,SACF;EACK;EACL,MAAK;EACL,GAAI;YAEJ,iBAAA,GAAA,kBAAA,KAAC,OAAD;GACE,WAAU;GACV,OAAO,EAAE,OAAO,GAAG,WAAW,GAAG;EAClC,CAAA;CACE,CAAA;AAET,CACF;AAEA,SAAS,cAAc"}
@@ -19,7 +19,7 @@ const Progress = React$1.forwardRef(({ className, value, max = 100, size = "defa
19
19
  role: "progressbar",
20
20
  ...props,
21
21
  children: /* @__PURE__ */ jsx("div", {
22
- className: "h-full rounded-full bg-(--spark-style-bg,var(--spark-9)) transition-all duration-300",
22
+ className: "h-full rounded-full bg-(--spark-style-bg,var(--color-primary)) transition-all duration-300",
23
23
  style: { width: `${percentage}%` }
24
24
  })
25
25
  });
@@ -1 +1 @@
1
- {"version":3,"file":"progress.js","names":["React"],"sources":["../../src/components/progress.tsx"],"sourcesContent":["import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface ProgressProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Current value */\n value: number\n /** Maximum value. Default: 100 */\n max?: number\n /** Height variant */\n size?: 'sm' | 'default' | 'lg'\n}\n\nconst sizeClasses = {\n sm: 'h-1',\n default: 'h-2',\n lg: 'h-3',\n} as const\n\nconst Progress = React.forwardRef<HTMLDivElement, ProgressProps>(\n ({ className, value, max = 100, size = 'default', ...props }, ref) => {\n const percentage = Math.min(100, Math.max(0, (value / max) * 100))\n\n return (\n <div\n aria-valuemax={max}\n aria-valuemin={0}\n aria-valuenow={value}\n className={cn(\n 'w-full overflow-hidden rounded-full bg-gray-a4',\n sizeClasses[size],\n className,\n )}\n ref={ref}\n role=\"progressbar\"\n {...props}\n >\n <div\n className=\"h-full rounded-full bg-(--spark-style-bg,var(--spark-9)) transition-all duration-300\"\n style={{ width: `${percentage}%` }}\n />\n </div>\n )\n },\n)\n\nProgress.displayName = 'Progress'\n\nexport { Progress }\n"],"mappings":";;;;;AAYA,MAAM,cAAc;CAClB,IAAI;CACJ,SAAS;CACT,IAAI;AACN;AAEA,MAAM,WAAWA,QAAM,YACpB,EAAE,WAAW,OAAO,MAAM,KAAK,OAAO,WAAW,GAAG,SAAS,QAAQ;CACpE,MAAM,aAAa,KAAK,IAAI,KAAK,KAAK,IAAI,GAAI,QAAQ,MAAO,GAAG,CAAC;CAEjE,OACE,oBAAC,OAAD;EACE,iBAAe;EACf,iBAAe;EACf,iBAAe;EACf,WAAW,GACT,kDACA,YAAY,OACZ,SACF;EACK;EACL,MAAK;EACL,GAAI;YAEJ,oBAAC,OAAD;GACE,WAAU;GACV,OAAO,EAAE,OAAO,GAAG,WAAW,GAAG;EAClC,CAAA;CACE,CAAA;AAET,CACF;AAEA,SAAS,cAAc"}
1
+ {"version":3,"file":"progress.js","names":["React"],"sources":["../../src/components/progress.tsx"],"sourcesContent":["import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface ProgressProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Current value */\n value: number\n /** Maximum value. Default: 100 */\n max?: number\n /** Height variant */\n size?: 'sm' | 'default' | 'lg'\n}\n\nconst sizeClasses = {\n sm: 'h-1',\n default: 'h-2',\n lg: 'h-3',\n} as const\n\nconst Progress = React.forwardRef<HTMLDivElement, ProgressProps>(\n ({ className, value, max = 100, size = 'default', ...props }, ref) => {\n const percentage = Math.min(100, Math.max(0, (value / max) * 100))\n\n return (\n <div\n aria-valuemax={max}\n aria-valuemin={0}\n aria-valuenow={value}\n className={cn(\n 'w-full overflow-hidden rounded-full bg-gray-a4',\n sizeClasses[size],\n className,\n )}\n ref={ref}\n role=\"progressbar\"\n {...props}\n >\n <div\n className=\"h-full rounded-full bg-(--spark-style-bg,var(--color-primary)) transition-all duration-300\"\n style={{ width: `${percentage}%` }}\n />\n </div>\n )\n },\n)\n\nProgress.displayName = 'Progress'\n\nexport { Progress }\n"],"mappings":";;;;;AAYA,MAAM,cAAc;CAClB,IAAI;CACJ,SAAS;CACT,IAAI;AACN;AAEA,MAAM,WAAWA,QAAM,YACpB,EAAE,WAAW,OAAO,MAAM,KAAK,OAAO,WAAW,GAAG,SAAS,QAAQ;CACpE,MAAM,aAAa,KAAK,IAAI,KAAK,KAAK,IAAI,GAAI,QAAQ,MAAO,GAAG,CAAC;CAEjE,OACE,oBAAC,OAAD;EACE,iBAAe;EACf,iBAAe;EACf,iBAAe;EACf,WAAW,GACT,kDACA,YAAY,OACZ,SACF;EACK;EACL,MAAK;EACL,GAAI;YAEJ,oBAAC,OAAD;GACE,WAAU;GACV,OAAO,EAAE,OAAO,GAAG,WAAW,GAAG;EAClC,CAAA;CACE,CAAA;AAET,CACF;AAEA,SAAS,cAAc"}