shadcn-glass-ui 2.0.11 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/CHANGELOG.md +109 -5
  2. package/README.md +132 -43
  3. package/context7.json +2 -1
  4. package/dist/cli/index.cjs +1 -1
  5. package/dist/components.cjs +4 -4
  6. package/dist/components.d.ts +103 -29
  7. package/dist/components.js +1 -1
  8. package/dist/demo-screenshot-aurora.png +0 -0
  9. package/dist/demo-screenshot.png +0 -0
  10. package/dist/demo-screenshot.png.zip +0 -0
  11. package/dist/hooks.cjs +2 -2
  12. package/dist/index.cjs +5 -5
  13. package/dist/index.js +28 -28
  14. package/dist/index.js.map +1 -1
  15. package/dist/r/ai-card-glass.json +1 -1
  16. package/dist/r/avatar-glass.json +1 -1
  17. package/dist/r/badge-glass.json +1 -1
  18. package/dist/r/button-glass.json +1 -1
  19. package/dist/r/combobox-glass.json +1 -1
  20. package/dist/r/registry.json +2 -2
  21. package/dist/r/repository-card-glass.json +2 -1
  22. package/dist/r/slider-glass.json +4 -5
  23. package/dist/r/toggle-glass.json +2 -2
  24. package/dist/r/year-card-glass.json +1 -1
  25. package/dist/shadcn-glass-ui.css +1 -1
  26. package/dist/{theme-context-DNe_2vWJ.cjs → theme-context-BHXYJ4RE.cjs} +2 -2
  27. package/dist/{theme-context-DNe_2vWJ.cjs.map → theme-context-BHXYJ4RE.cjs.map} +1 -1
  28. package/dist/themes.cjs +1 -1
  29. package/dist/{trust-score-card-glass-Dgu46oWI.cjs → trust-score-card-glass-CGXmOIfq.cjs} +850 -150
  30. package/dist/trust-score-card-glass-CGXmOIfq.cjs.map +1 -0
  31. package/dist/{trust-score-card-glass-A7kas5OS.js → trust-score-card-glass-L9g0qamo.js} +1182 -482
  32. package/dist/trust-score-card-glass-L9g0qamo.js.map +1 -0
  33. package/dist/{use-focus-BRkQtQCj.cjs → use-focus-CeNHOiBa.cjs} +2 -2
  34. package/dist/{use-focus-BRkQtQCj.cjs.map → use-focus-CeNHOiBa.cjs.map} +1 -1
  35. package/dist/{use-wallpaper-tint-CfShPBo2.cjs → use-wallpaper-tint-Bt2G3g1v.cjs} +2 -2
  36. package/dist/{use-wallpaper-tint-CfShPBo2.cjs.map → use-wallpaper-tint-Bt2G3g1v.cjs.map} +1 -1
  37. package/dist/{utils-BXN7AcRu.cjs → utils-LYxxWvUn.cjs} +2 -2
  38. package/dist/{utils-BXN7AcRu.cjs.map → utils-LYxxWvUn.cjs.map} +1 -1
  39. package/dist/utils.cjs +1 -1
  40. package/docs/ADVANCED_PATTERNS.md +584 -0
  41. package/docs/AI_USAGE.md +135 -611
  42. package/docs/BEST_PRACTICES.md +2 -2
  43. package/docs/BREAKING_CHANGES.md +239 -0
  44. package/docs/COMPONENTS_CATALOG.md +8 -8
  45. package/docs/EXPORTS_STRUCTURE.md +3 -3
  46. package/docs/GETTING_STARTED.md +13 -8
  47. package/docs/PUBLISHING.md +1 -1
  48. package/docs/REGISTRY_SUMMARY.md +2 -2
  49. package/docs/REGISTRY_USAGE.md +1 -1
  50. package/docs/api/README.md +11 -11
  51. package/docs/api/interfaces/BadgeGlassProps.md +21 -14
  52. package/docs/api/interfaces/ButtonGlassProps.md +37 -30
  53. package/package.json +4 -3
  54. package/dist/trust-score-card-glass-A7kas5OS.js.map +0 -1
  55. package/dist/trust-score-card-glass-Dgu46oWI.cjs.map +0 -1
  56. package/dist/vite.svg +0 -1
  57. package/docs/migration/modal-glass-compound-api.md +0 -458
  58. package/docs/migration/select-to-combobox.md +0 -386
  59. package/docs/migration/tabs-glass-compound-api.md +0 -579
@@ -1,4 +1,4 @@
1
- import { $ as BaseProgressGlass, At as GlassCard, Dt as ModalGlass, G as SegmentedControlGlass, Jt as ComboBoxGlass, K as RainbowProgressGlass, Mt as DropdownGlass, Q as StatusIndicatorGlass, Qt as ButtonGlass, Tt as NotificationGlass, X as LanguageBarGlass, Xt as CircularProgressGlass, Y as ProfileAvatarGlass, Z as FlagAlertGlass, Zt as CheckboxGlass, _ as ContributionMetricsGlass, _t as SliderGlass, a as HeaderBrandingGlass, b as AICardGlass, bt as PopoverGlass, c as YearCardGlass, cn as AlertGlass, ct as ExpandableHeaderGlass, d as TrustScoreDisplayGlass, dn as InteractiveCard, en as BadgeGlass, et as ThemeToggleGlass, f as RepositoryMetadataGlass, fn as FormFieldWrapper, g as MetricCardGlass, gt as TabsGlass, h as MetricsGridGlass, i as HeaderNavGlass, kt as InputGlass, l as UserStatsLineGlass, lt as TooltipGlass, m as RepositoryCardGlass, mt as ToggleGlass, n as ProjectsListGlass, nn as AvatarGlass, nt as SortDropdownGlass, o as FlagsSectionGlass, p as RepositoryHeaderGlass, pn as TouchTarget, q as ProgressGlass, r as ProfileHeaderGlass, rt as SearchBoxGlass, s as CareerStatsGlass, st as IconButtonGlass, t as TrustScoreCardGlass, tt as StatItemGlass, u as UserInfoGlass, v as CircularMetricGlass, vt as SkeletonGlass, y as CareerStatsHeaderGlass } from "./trust-score-card-glass-A7kas5OS.js";
1
+ import { $ as BaseProgressGlass, At as GlassCard, Dt as ModalGlass, G as SegmentedControlGlass, Jt as ComboBoxGlass, K as RainbowProgressGlass, Mt as DropdownGlass, Q as StatusIndicatorGlass, Qt as ButtonGlass, Tt as NotificationGlass, X as LanguageBarGlass, Xt as CircularProgressGlass, Y as ProfileAvatarGlass, Z as FlagAlertGlass, Zt as CheckboxGlass, _ as ContributionMetricsGlass, _t as SliderGlass, a as HeaderBrandingGlass, b as AICardGlass, bt as PopoverGlass, c as YearCardGlass, cn as AlertGlass, ct as ExpandableHeaderGlass, d as TrustScoreDisplayGlass, dn as InteractiveCard, en as BadgeGlass, et as ThemeToggleGlass, f as RepositoryMetadataGlass, fn as FormFieldWrapper, g as MetricCardGlass, gt as TabsGlass, h as MetricsGridGlass, i as HeaderNavGlass, kt as InputGlass, l as UserStatsLineGlass, lt as TooltipGlass, m as RepositoryCardGlass, mt as ToggleGlass, n as ProjectsListGlass, nn as AvatarGlass, nt as SortDropdownGlass, o as FlagsSectionGlass, p as RepositoryHeaderGlass, pn as TouchTarget, q as ProgressGlass, r as ProfileHeaderGlass, rt as SearchBoxGlass, s as CareerStatsGlass, st as IconButtonGlass, t as TrustScoreCardGlass, tt as StatItemGlass, u as UserInfoGlass, v as CircularMetricGlass, vt as SkeletonGlass, y as CareerStatsHeaderGlass } from "./trust-score-card-glass-L9g0qamo.js";
2
2
  import "./utils-CcyeqpKQ.js";
3
3
  import "./use-focus-CX0TJJIj.js";
4
4
  import "./theme-context-_T5r1KG4.js";
Binary file
Binary file
Binary file
package/dist/hooks.cjs CHANGED
@@ -1,5 +1,5 @@
1
- const require_use_focus = require("./use-focus-BRkQtQCj.cjs");
2
- const require_use_wallpaper_tint = require("./use-wallpaper-tint-CfShPBo2.cjs");
1
+ const require_use_focus = require("./use-focus-CeNHOiBa.cjs");
2
+ const require_use_wallpaper_tint = require("./use-wallpaper-tint-Bt2G3g1v.cjs");
3
3
  exports.useFocus = require_use_focus.useFocus;
4
4
  exports.useHover = require_use_focus.useHover;
5
5
  exports.useResponsive = require_use_wallpaper_tint.useResponsive;
package/dist/index.cjs CHANGED
@@ -1,8 +1,8 @@
1
- const require_trust_score_card_glass = require("./trust-score-card-glass-Dgu46oWI.cjs");
2
- const require_utils = require("./utils-BXN7AcRu.cjs");
3
- const require_use_focus = require("./use-focus-BRkQtQCj.cjs");
4
- const require_theme_context = require("./theme-context-DNe_2vWJ.cjs");
5
- const require_use_wallpaper_tint = require("./use-wallpaper-tint-CfShPBo2.cjs");
1
+ const require_trust_score_card_glass = require("./trust-score-card-glass-CGXmOIfq.cjs");
2
+ const require_utils = require("./utils-LYxxWvUn.cjs");
3
+ const require_use_focus = require("./use-focus-CeNHOiBa.cjs");
4
+ const require_theme_context = require("./theme-context-BHXYJ4RE.cjs");
5
+ const require_use_wallpaper_tint = require("./use-wallpaper-tint-Bt2G3g1v.cjs");
6
6
  let react = require("react");
7
7
  react = require_trust_score_card_glass.__toESM(react);
8
8
  let lucide_react = require("lucide-react");
package/dist/index.js CHANGED
@@ -1,9 +1,9 @@
1
- import { $ as BaseProgressGlass, $t as buttonGlassVariants, A as useChartHeight, At as GlassCard, B as adaptEventsOfChild, Bt as DropdownMenuGlassRadioGroup, C as sparklineContainerVariants, Ct as PopoverGlassLegacy, D as Tooltip, Dt as ModalGlass, E as Cell, Et as notificationVariants, F as selectLegendPayload, Ft as DropdownMenuGlassContent, G as SegmentedControlGlass, Gt as DropdownMenuGlassSubContent, H as isNumber, Ht as DropdownMenuGlassSeparator, I as useAppDispatch, It as DropdownMenuGlassGroup, J as progressSizes, Jt as ComboBoxGlass, K as RainbowProgressGlass, Kt as DropdownMenuGlassSubTrigger, L as useAppSelector, Lt as DropdownMenuGlassItem, M as useMargin, Mt as DropdownGlass, N as ResponsiveContainer, Nt as DropdownMenuGlass, O as setLegendSettings, Ot as modalSizes, P as useElementOffset, Pt as DropdownMenuGlassCheckboxItem, Q as StatusIndicatorGlass, Qt as ButtonGlass, R as getUniqPayload, Rt as DropdownMenuGlassLabel, S as sparklineBarVariants, St as PopoverGlassContent, T as Bar, Tt as NotificationGlass, U as useLegendPortal, Ut as DropdownMenuGlassShortcut, V as Symbols, Vt as DropdownMenuGlassRadioItem, W as Surface, Wt as DropdownMenuGlassSub, X as LanguageBarGlass, Xt as CircularProgressGlass, Y as ProfileAvatarGlass, Yt as inputVariants, Z as FlagAlertGlass, Zt as CheckboxGlass, _ as ContributionMetricsGlass, _t as SliderGlass, a as HeaderBrandingGlass, an as AvatarGlassSimple, at as insightCardVariants, b as AICardGlass, bt as PopoverGlass, c as YearCardGlass, cn as AlertGlass, ct as ExpandableHeaderGlass, d as TrustScoreDisplayGlass, dn as InteractiveCard, dt as TooltipGlassProvider, en as BadgeGlass, et as ThemeToggleGlass, f as RepositoryMetadataGlass, fn as FormFieldWrapper, ft as TooltipGlassSimple, g as MetricCardGlass, gt as TabsGlass, h as MetricsGridGlass, ht as toggleSizes, i as HeaderNavGlass, in as AvatarGlassImage, it as InsightCardGlass, j as useChartWidth, jt as cardIntensity, k as setLegendSize, kt as InputGlass, l as UserStatsLineGlass, ln as AlertGlassDescription, lt as TooltipGlass, m as RepositoryCardGlass, mn as alertVariants, mt as ToggleGlass, n as ProjectsListGlass, nn as AvatarGlass, nt as SortDropdownGlass, o as FlagsSectionGlass, on as avatarSizes, ot as insightVariantConfig, p as RepositoryHeaderGlass, pn as TouchTarget, pt as TooltipGlassTrigger, q as ProgressGlass, qt as DropdownMenuGlassTrigger, r as ProfileHeaderGlass, rn as AvatarGlassFallback, rt as SearchBoxGlass, s as CareerStatsGlass, sn as statusSizes, st as IconButtonGlass, t as TrustScoreCardGlass, tn as badgeVariants, tt as StatItemGlass, u as UserInfoGlass, un as AlertGlassTitle, ut as TooltipGlassContent, v as CircularMetricGlass, vt as SkeletonGlass, w as BarChart, wt as PopoverGlassTrigger, x as SparklineGlass, xt as PopoverGlassAnchor, y as CareerStatsHeaderGlass, yt as skeletonVariants, z as resolveDefaultProps, zt as DropdownMenuGlassPortal } from "./trust-score-card-glass-A7kas5OS.js";
1
+ import { $ as BaseProgressGlass, $t as buttonGlassVariants, A as useChartHeight, At as GlassCard, B as adaptEventsOfChild, Bt as DropdownMenuGlassRadioGroup, C as sparklineContainerVariants, Ct as PopoverGlassLegacy, D as Tooltip, Dt as ModalGlass, E as Cell, Et as notificationVariants, F as selectLegendPayload, Ft as DropdownMenuGlassContent, G as SegmentedControlGlass, Gt as DropdownMenuGlassSubContent, H as isNumber, Ht as DropdownMenuGlassSeparator, I as useAppDispatch, It as DropdownMenuGlassGroup, J as progressSizes, Jt as ComboBoxGlass, K as RainbowProgressGlass, Kt as DropdownMenuGlassSubTrigger, L as useAppSelector, Lt as DropdownMenuGlassItem, M as useMargin, Mt as DropdownGlass, N as ResponsiveContainer, Nt as DropdownMenuGlass, O as setLegendSettings, Ot as modalSizes, P as useElementOffset, Pt as DropdownMenuGlassCheckboxItem, Q as StatusIndicatorGlass, Qt as ButtonGlass, R as getUniqPayload, Rt as DropdownMenuGlassLabel, S as sparklineBarVariants, St as PopoverGlassContent, T as Bar, Tt as NotificationGlass, U as useLegendPortal, Ut as DropdownMenuGlassShortcut, V as Symbols, Vt as DropdownMenuGlassRadioItem, W as Surface, Wt as DropdownMenuGlassSub, X as LanguageBarGlass, Xt as CircularProgressGlass, Y as ProfileAvatarGlass, Yt as inputVariants, Z as FlagAlertGlass, Zt as CheckboxGlass, _ as ContributionMetricsGlass, _t as SliderGlass, a as HeaderBrandingGlass, an as AvatarGlassSimple, at as insightCardVariants, b as AICardGlass, bt as PopoverGlass, c as YearCardGlass, cn as AlertGlass, ct as ExpandableHeaderGlass, d as TrustScoreDisplayGlass, dn as InteractiveCard, dt as TooltipGlassProvider, en as BadgeGlass, et as ThemeToggleGlass, f as RepositoryMetadataGlass, fn as FormFieldWrapper, ft as TooltipGlassSimple, g as MetricCardGlass, gt as TabsGlass, h as MetricsGridGlass, ht as toggleSizes, i as HeaderNavGlass, in as AvatarGlassImage, it as InsightCardGlass, j as useChartWidth, jt as cardIntensity, k as setLegendSize, kt as InputGlass, l as UserStatsLineGlass, ln as AlertGlassDescription, lt as TooltipGlass, m as RepositoryCardGlass, mn as alertVariants, mt as ToggleGlass, n as ProjectsListGlass, nn as AvatarGlass, nt as SortDropdownGlass, o as FlagsSectionGlass, on as avatarSizes, ot as insightVariantConfig, p as RepositoryHeaderGlass, pn as TouchTarget, pt as TooltipGlassTrigger, q as ProgressGlass, qt as DropdownMenuGlassTrigger, r as ProfileHeaderGlass, rn as AvatarGlassFallback, rt as SearchBoxGlass, s as CareerStatsGlass, sn as statusSizes, st as IconButtonGlass, t as TrustScoreCardGlass, tn as badgeVariants, tt as StatItemGlass, u as UserInfoGlass, un as AlertGlassTitle, ut as TooltipGlassContent, v as CircularMetricGlass, vt as SkeletonGlass, w as BarChart, wt as PopoverGlassTrigger, x as SparklineGlass, xt as PopoverGlassAnchor, y as CareerStatsHeaderGlass, yt as skeletonVariants, z as resolveDefaultProps, zt as DropdownMenuGlassPortal } from "./trust-score-card-glass-L9g0qamo.js";
2
2
  import { t as cn } from "./utils-CcyeqpKQ.js";
3
3
  import { n as useHover, t as useFocus } from "./use-focus-CX0TJJIj.js";
4
4
  import { a as getThemeConfig, i as getNextTheme, n as THEME_CONFIG, o as useTheme, r as ThemeProvider, t as THEMES } from "./theme-context-_T5r1KG4.js";
5
5
  import { n as useResponsive, t as useWallpaperTint } from "./use-wallpaper-tint-DUgmytlY.js";
6
- import * as React from "react";
6
+ import * as React$1 from "react";
7
7
  import { createContext, forwardRef, useCallback, useContext, useEffect, useLayoutEffect, useMemo, useState } from "react";
8
8
  import { Check } from "lucide-react";
9
9
  import { clsx } from "clsx";
@@ -440,7 +440,7 @@ function Icon(_ref) {
440
440
  if (preferredIcon === "none") return null;
441
441
  if (preferredIcon === "plainline") {
442
442
  var _data$payload;
443
- return /* @__PURE__ */ React.createElement("line", {
443
+ return /* @__PURE__ */ React$1.createElement("line", {
444
444
  strokeWidth: 4,
445
445
  fill: "none",
446
446
  stroke: color,
@@ -452,25 +452,25 @@ function Icon(_ref) {
452
452
  className: "recharts-legend-icon"
453
453
  });
454
454
  }
455
- if (preferredIcon === "line") return /* @__PURE__ */ React.createElement("path", {
455
+ if (preferredIcon === "line") return /* @__PURE__ */ React$1.createElement("path", {
456
456
  strokeWidth: 4,
457
457
  fill: "none",
458
458
  stroke: color,
459
459
  d: "M0,".concat(halfSize, "h").concat(thirdSize, "\n A").concat(sixthSize, ",").concat(sixthSize, ",0,1,1,").concat(2 * thirdSize, ",").concat(halfSize, "\n H").concat(SIZE, "M").concat(2 * thirdSize, ",").concat(halfSize, "\n A").concat(sixthSize, ",").concat(sixthSize, ",0,1,1,").concat(thirdSize, ",").concat(halfSize),
460
460
  className: "recharts-legend-icon"
461
461
  });
462
- if (preferredIcon === "rect") return /* @__PURE__ */ React.createElement("path", {
462
+ if (preferredIcon === "rect") return /* @__PURE__ */ React$1.createElement("path", {
463
463
  stroke: "none",
464
464
  fill: color,
465
465
  d: "M0,".concat(SIZE / 8, "h").concat(SIZE, "v").concat(SIZE * 3 / 4, "h").concat(-SIZE, "z"),
466
466
  className: "recharts-legend-icon"
467
467
  });
468
- if (/* @__PURE__ */ React.isValidElement(data.legendIcon)) {
468
+ if (/* @__PURE__ */ React$1.isValidElement(data.legendIcon)) {
469
469
  var iconProps = _objectSpread$1({}, data);
470
470
  delete iconProps.legendIcon;
471
- return /* @__PURE__ */ React.cloneElement(data.legendIcon, iconProps);
471
+ return /* @__PURE__ */ React$1.cloneElement(data.legendIcon, iconProps);
472
472
  }
473
- return /* @__PURE__ */ React.createElement(Symbols, {
473
+ return /* @__PURE__ */ React$1.createElement(Symbols, {
474
474
  fill: color,
475
475
  cx: halfSize,
476
476
  cy: halfSize,
@@ -506,21 +506,21 @@ function Items(props) {
506
506
  if (entry.type === "none") return null;
507
507
  var color = entry.inactive ? inactiveColor : entry.color;
508
508
  var finalValue = finalFormatter ? finalFormatter(entry.value, entry, i) : entry.value;
509
- return /* @__PURE__ */ React.createElement("li", _extends$1({
509
+ return /* @__PURE__ */ React$1.createElement("li", _extends$1({
510
510
  className,
511
511
  style: itemStyle,
512
512
  key: "legend-item-".concat(i)
513
- }, adaptEventsOfChild(props, entry, i)), /* @__PURE__ */ React.createElement(Surface, {
513
+ }, adaptEventsOfChild(props, entry, i)), /* @__PURE__ */ React$1.createElement(Surface, {
514
514
  width: iconSize,
515
515
  height: iconSize,
516
516
  viewBox,
517
517
  style: svgStyle,
518
518
  "aria-label": "".concat(finalValue, " legend icon")
519
- }, /* @__PURE__ */ React.createElement(Icon, {
519
+ }, /* @__PURE__ */ React$1.createElement(Icon, {
520
520
  data: entry,
521
521
  iconType,
522
522
  inactiveColor
523
- })), /* @__PURE__ */ React.createElement("span", {
523
+ })), /* @__PURE__ */ React$1.createElement("span", {
524
524
  className: "recharts-legend-item-text",
525
525
  style: { color }
526
526
  }, finalValue));
@@ -535,10 +535,10 @@ var DefaultLegendContent = (outsideProps) => {
535
535
  margin: 0,
536
536
  textAlign: layout === "horizontal" ? align : "left"
537
537
  };
538
- return /* @__PURE__ */ React.createElement("ul", {
538
+ return /* @__PURE__ */ React$1.createElement("ul", {
539
539
  className: "recharts-default-legend",
540
540
  style: finalStyle
541
- }, /* @__PURE__ */ React.createElement(Items, _extends$1({}, props, { payload })));
541
+ }, /* @__PURE__ */ React$1.createElement(Items, _extends$1({}, props, { payload })));
542
542
  };
543
543
  function useLegendPayload() {
544
544
  return useAppSelector(selectLegendPayload);
@@ -621,9 +621,9 @@ function LegendContent(props) {
621
621
  var { contextPayload } = props, otherProps = _objectWithoutProperties(props, _excluded);
622
622
  var finalPayload = getUniqPayload(contextPayload, props.payloadUniqBy, defaultUniqBy);
623
623
  var contentProps = _objectSpread(_objectSpread({}, otherProps), {}, { payload: finalPayload });
624
- if (/* @__PURE__ */ React.isValidElement(props.content)) return /* @__PURE__ */ React.cloneElement(props.content, contentProps);
625
- if (typeof props.content === "function") return /* @__PURE__ */ React.createElement(props.content, contentProps);
626
- return /* @__PURE__ */ React.createElement(DefaultLegendContent, contentProps);
624
+ if (/* @__PURE__ */ React$1.isValidElement(props.content)) return /* @__PURE__ */ React$1.cloneElement(props.content, contentProps);
625
+ if (typeof props.content === "function") return /* @__PURE__ */ React$1.createElement(props.content, contentProps);
626
+ return /* @__PURE__ */ React$1.createElement(DefaultLegendContent, contentProps);
627
627
  }
628
628
  function getDefaultPosition(style, props, margin, chartWidth, chartHeight, box) {
629
629
  var { layout, align, verticalAlign } = props;
@@ -685,19 +685,19 @@ function Legend(outsideProps) {
685
685
  }, getDefaultPosition(wrapperStyle, props, margin, chartWidth, chartHeight, lastBoundingBox)), wrapperStyle);
686
686
  var legendPortal = portalFromProps !== null && portalFromProps !== void 0 ? portalFromProps : legendPortalFromContext;
687
687
  if (legendPortal == null || contextPayload == null) return null;
688
- return /* @__PURE__ */ createPortal(/* @__PURE__ */ React.createElement("div", {
688
+ return /* @__PURE__ */ createPortal(/* @__PURE__ */ React$1.createElement("div", {
689
689
  className: "recharts-legend-wrapper",
690
690
  style: outerStyle,
691
691
  ref: updateBoundingBox
692
- }, /* @__PURE__ */ React.createElement(LegendSettingsDispatcher, {
692
+ }, /* @__PURE__ */ React$1.createElement(LegendSettingsDispatcher, {
693
693
  layout: props.layout,
694
694
  align: props.align,
695
695
  verticalAlign: props.verticalAlign,
696
696
  itemSorter: props.itemSorter
697
- }), !portalFromProps && /* @__PURE__ */ React.createElement(LegendSizeDispatcher, {
697
+ }), !portalFromProps && /* @__PURE__ */ React$1.createElement(LegendSizeDispatcher, {
698
698
  width: lastBoundingBox.width,
699
699
  height: lastBoundingBox.height
700
- }), /* @__PURE__ */ React.createElement(LegendContent, _extends({}, props, widthOrHeight, {
700
+ }), /* @__PURE__ */ React$1.createElement(LegendContent, _extends({}, props, widthOrHeight, {
701
701
  margin,
702
702
  chartWidth,
703
703
  chartHeight,
@@ -705,14 +705,14 @@ function Legend(outsideProps) {
705
705
  }))), legendPortal);
706
706
  }
707
707
  Legend.displayName = "Legend";
708
- var ChartContext = React.createContext(null);
708
+ var ChartContext = React$1.createContext(null);
709
709
  function useChart() {
710
- const context = React.useContext(ChartContext);
710
+ const context = React$1.useContext(ChartContext);
711
711
  if (!context) throw new Error("useChart must be used within a <ChartContainer />");
712
712
  return context;
713
713
  }
714
- var ChartContainer = React.forwardRef(({ id, className, children, config, ...props }, ref) => {
715
- const uniqueId = React.useId();
714
+ var ChartContainer = React$1.forwardRef(({ id, className, children, config, ...props }, ref) => {
715
+ const uniqueId = React$1.useId();
716
716
  const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
717
717
  return /* @__PURE__ */ jsx(ChartContext.Provider, {
718
718
  value: { config },
@@ -750,9 +750,9 @@ ${colorConfig.map(([key, itemConfig]) => {
750
750
  ` } });
751
751
  };
752
752
  var ChartTooltip = Tooltip;
753
- var ChartTooltipContent = React.forwardRef(({ active, payload, className, indicator = "dot", hideLabel = false, hideIndicator = false, label, labelFormatter, labelClassName, nameKey, labelKey, valueFormatter }, ref) => {
753
+ var ChartTooltipContent = React$1.forwardRef(({ active, payload, className, indicator = "dot", hideLabel = false, hideIndicator = false, label, labelFormatter, labelClassName, nameKey, labelKey, valueFormatter }, ref) => {
754
754
  const { config } = useChart();
755
- const tooltipLabel = React.useMemo(() => {
755
+ const tooltipLabel = React$1.useMemo(() => {
756
756
  if (hideLabel || !payload?.length) return null;
757
757
  const [item] = payload;
758
758
  const itemConfig = getPayloadConfigFromPayload(config, item, `${labelKey || item?.dataKey || item?.name || "value"}`);
@@ -818,7 +818,7 @@ var ChartTooltipContent = React.forwardRef(({ active, payload, className, indica
818
818
  });
819
819
  ChartTooltipContent.displayName = "ChartTooltipContent";
820
820
  var ChartLegend = Legend;
821
- var ChartLegendContent = React.forwardRef(({ className, hideIcon = false, payload, verticalAlign = "bottom", nameKey }, ref) => {
821
+ var ChartLegendContent = React$1.forwardRef(({ className, hideIcon = false, payload, verticalAlign = "bottom", nameKey }, ref) => {
822
822
  const { config } = useChart();
823
823
  if (!payload?.length) return null;
824
824
  return /* @__PURE__ */ jsx("div", {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["StepperRoot: FC<StepperRootProps>","indicatorStyles: CSSProperties","connectorStyles: CSSProperties","labelStyles: CSSProperties","descriptionStyles: CSSProperties","StepperContent: FC<StepperContentProps>","_extends","ownKeys","r","_objectSpread","_defineProperty","_toPropertyKey","_toPrimitive","r","configLabelKey: string"],"sources":["../src/lib/variants/stepper-glass-variants.ts","../src/components/glass/ui/stepper-glass.tsx","../node_modules/recharts/es6/component/DefaultLegendContent.js","../node_modules/recharts/es6/context/legendPayloadContext.js","../node_modules/recharts/es6/component/Legend.js","../src/components/ui/chart.tsx","../src/lib/variants/dropdown-glass-variants.ts","../src/lib/variants/tooltip-glass-variants.ts","../src/lib/variants/alert-variants.ts","../src/lib/variants/badge-variants.ts","../src/lib/variants/button-variants.ts"],"sourcesContent":["/**\n * StepperGlass CVA Variants\n *\n * Type-safe variant definitions for the StepperGlass compound component.\n * Extracted for Fast Refresh compatibility and reusability.\n *\n * @module stepper-glass-variants\n */\n\nimport { cva } from 'class-variance-authority';\n\n// ========================================\n// TYPE DEFINITIONS\n// ========================================\n\nexport type StepperOrientation = 'horizontal' | 'vertical';\nexport type StepperVariant = 'numbered' | 'icon' | 'dots';\nexport type StepperSize = 'sm' | 'md' | 'lg';\nexport type StepStatus = 'pending' | 'active' | 'completed' | 'disabled';\n\n// ========================================\n// ROOT VARIANTS\n// ========================================\n\nexport const stepperRootVariants = cva('flex w-full', {\n variants: {\n orientation: {\n horizontal: 'flex-col',\n vertical: 'flex-col',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n});\n\n// ========================================\n// LIST VARIANTS\n// ========================================\n\nexport const stepperListVariants = cva('flex', {\n variants: {\n orientation: {\n horizontal: 'flex-row items-center w-full',\n vertical: 'flex-col gap-0',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n});\n\n// ========================================\n// STEP CONTAINER VARIANTS\n// ========================================\n\nexport const stepperStepContainerVariants = cva('relative flex transition-all duration-300', {\n variants: {\n orientation: {\n horizontal: 'flex-col items-center flex-1',\n vertical: 'flex-row items-start gap-3',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n});\n\n// ========================================\n// STEP INDICATOR VARIANTS\n// ========================================\n\nexport const stepperIndicatorVariants = cva(\n 'relative flex items-center justify-center rounded-full font-medium transition-all duration-300 shrink-0',\n {\n variants: {\n size: {\n sm: 'w-8 h-8 text-xs',\n md: 'w-10 h-10 text-sm',\n lg: 'w-12 h-12 text-base',\n },\n variant: {\n numbered: '',\n icon: '',\n dots: '',\n },\n },\n defaultVariants: {\n size: 'md',\n variant: 'numbered',\n },\n compoundVariants: [\n // Dots variant has smaller indicators\n { variant: 'dots', size: 'sm', className: '!w-2.5 !h-2.5' },\n { variant: 'dots', size: 'md', className: '!w-3 !h-3' },\n { variant: 'dots', size: 'lg', className: '!w-4 !h-4' },\n ],\n }\n);\n\n// ========================================\n// CONNECTOR VARIANTS\n// ========================================\n\nexport const stepperConnectorVariants = cva('transition-all duration-500 ease-out', {\n variants: {\n orientation: {\n horizontal: 'h-0.5 flex-1 mx-2 md:mx-3',\n vertical: 'w-0.5 min-h-6 ml-5 my-1',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n});\n\n// ========================================\n// LABEL VARIANTS\n// ========================================\n\nexport const stepperLabelVariants = cva(\n 'font-medium transition-colors duration-300 whitespace-nowrap',\n {\n variants: {\n size: {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base',\n },\n orientation: {\n horizontal: 'mt-2 text-center',\n vertical: '',\n },\n },\n defaultVariants: {\n size: 'md',\n orientation: 'horizontal',\n },\n }\n);\n\n// ========================================\n// DESCRIPTION VARIANTS\n// ========================================\n\nexport const stepperDescriptionVariants = cva('transition-colors duration-300', {\n variants: {\n size: {\n sm: 'text-[10px]',\n md: 'text-xs',\n lg: 'text-sm',\n },\n orientation: {\n horizontal: 'text-center max-w-[100px] md:max-w-[120px]',\n vertical: 'max-w-[200px]',\n },\n },\n defaultVariants: {\n size: 'md',\n orientation: 'horizontal',\n },\n});\n\n// ========================================\n// CONTENT VARIANTS\n// ========================================\n\nexport const stepperContentVariants = cva('animate-in fade-in-0 duration-200', {\n variants: {\n orientation: {\n horizontal: 'mt-6',\n vertical: 'mt-4',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n});\n","/* eslint-disable react-refresh/only-export-components */\n/**\n * StepperGlass Component (Compound API)\n *\n * Glass-themed step indicator with:\n * - Theme-aware styling (glass/light/aurora)\n * - Horizontal and vertical orientations\n * - Numbered, icon, and dots variants\n * - Linear mode (lock future steps)\n * - Animated connector lines\n * - Compound component API for advanced composition\n *\n * @example\n * ```tsx\n * <StepperGlass.Root value=\"step2\" onValueChange={setStep}>\n * <StepperGlass.List>\n * <StepperGlass.Step value=\"step1\" label=\"Account\" description=\"Create your account\" />\n * <StepperGlass.Step value=\"step2\" label=\"Profile\" description=\"Setup your profile\" />\n * <StepperGlass.Step value=\"step3\" label=\"Complete\" description=\"Finish setup\" />\n * </StepperGlass.List>\n * <StepperGlass.Content value=\"step1\">Step 1 content</StepperGlass.Content>\n * <StepperGlass.Content value=\"step2\">Step 2 content</StepperGlass.Content>\n * <StepperGlass.Content value=\"step3\">Step 3 content</StepperGlass.Content>\n * </StepperGlass.Root>\n * ```\n *\n * @accessibility\n * - **Keyboard Navigation:** Arrow keys navigate between steps (WCAG 2.1.1)\n * - **Focus Management:** Visible focus ring using `--focus-glow` (WCAG 2.4.7)\n * - **Screen Readers:** Uses `role=\"tablist\"`, `role=\"tab\"` (WCAG 4.1.3)\n * - **ARIA Attributes:** `aria-current=\"step\"`, `aria-disabled` for state\n * - **Touch Targets:** 44x44px minimum touch targets (WCAG 2.5.5)\n * - **Color Contrast:** All states meet WCAG AA 4.5:1 ratio\n * - **Motion:** Respects `prefers-reduced-motion`\n */\n\nimport {\n forwardRef,\n createContext,\n useContext,\n useMemo,\n useState,\n useCallback,\n useLayoutEffect,\n type CSSProperties,\n type FC,\n type ReactNode,\n} from 'react';\nimport { cn } from '@/lib/utils';\nimport { useFocus } from '@/lib/hooks/use-focus';\nimport { Check } from 'lucide-react';\nimport {\n stepperRootVariants,\n stepperListVariants,\n stepperStepContainerVariants,\n stepperIndicatorVariants,\n stepperConnectorVariants,\n stepperLabelVariants,\n stepperDescriptionVariants,\n stepperContentVariants,\n type StepperOrientation,\n type StepperVariant,\n type StepperSize,\n type StepStatus,\n} from '@/lib/variants/stepper-glass-variants';\nimport '@/glass-theme.css';\n\n// ========================================\n// CONTEXT\n// ========================================\n\ninterface StepperContextValue {\n value: string;\n onValueChange?: (value: string) => void;\n orientation: StepperOrientation;\n variant: StepperVariant;\n size: StepperSize;\n linear: boolean;\n steps: string[];\n registerStep: (value: string, index: number) => void;\n unregisterStep: (value: string) => void;\n}\n\nconst StepperContext = createContext<StepperContextValue | null>(null);\n\nconst useStepperContext = () => {\n const context = useContext(StepperContext);\n if (!context) {\n throw new Error('Stepper compound components must be used within StepperGlass.Root');\n }\n return context;\n};\n\n// ========================================\n// UTILITY: GET STEP STATUS\n// ========================================\n\nfunction getStepStatus(\n stepValue: string,\n currentValue: string,\n steps: string[],\n linear: boolean,\n disabled?: boolean\n): StepStatus {\n if (disabled) return 'disabled';\n\n const stepIndex = steps.indexOf(stepValue);\n const currentIndex = steps.indexOf(currentValue);\n\n if (stepIndex === -1 || currentIndex === -1) return 'pending';\n if (stepIndex === currentIndex) return 'active';\n if (stepIndex < currentIndex) return 'completed';\n if (linear && stepIndex > currentIndex) return 'disabled';\n return 'pending';\n}\n\n// ========================================\n// ROOT COMPONENT\n// ========================================\n\ninterface StepperRootProps {\n /** Current active step value */\n value: string;\n /** Callback when step value changes */\n onValueChange?: (value: string) => void;\n /** Orientation of the stepper */\n orientation?: StepperOrientation;\n /** Visual variant */\n variant?: StepperVariant;\n /** Size of step indicators */\n size?: StepperSize;\n /** Lock future steps (require sequential completion) */\n linear?: boolean;\n /** Child components */\n children: ReactNode;\n /** Optional className */\n className?: string;\n}\n\nconst StepperRoot: FC<StepperRootProps> = ({\n value,\n onValueChange,\n orientation = 'horizontal',\n variant = 'numbered',\n size = 'md',\n linear = false,\n children,\n className,\n}) => {\n const [steps, setSteps] = useState<string[]>([]);\n\n const registerStep = useCallback((stepValue: string, index: number) => {\n setSteps((prev) => {\n if (prev.includes(stepValue)) return prev;\n const newSteps = [...prev];\n // Insert at correct position to maintain order\n newSteps.splice(index, 0, stepValue);\n return newSteps;\n });\n }, []);\n\n const unregisterStep = useCallback((stepValue: string) => {\n setSteps((prev) => prev.filter((s) => s !== stepValue));\n }, []);\n\n const contextValue = useMemo(\n () => ({\n value,\n onValueChange,\n orientation,\n variant,\n size,\n linear,\n steps,\n registerStep,\n unregisterStep,\n }),\n [value, onValueChange, orientation, variant, size, linear, steps, registerStep, unregisterStep]\n );\n\n return (\n <StepperContext.Provider value={contextValue}>\n <div\n className={cn(stepperRootVariants({ orientation }), className)}\n aria-label=\"Progress steps\"\n >\n {children}\n </div>\n </StepperContext.Provider>\n );\n};\n\n// ========================================\n// LIST COMPONENT\n// ========================================\n\ninterface StepperListProps extends React.HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n className?: string;\n}\n\nconst StepperList = forwardRef<HTMLDivElement, StepperListProps>(\n ({ children, className, ...props }, ref) => {\n const { orientation } = useStepperContext();\n\n return (\n <div\n ref={ref}\n role=\"tablist\"\n aria-orientation={orientation}\n className={cn(stepperListVariants({ orientation }), className)}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nStepperList.displayName = 'StepperList';\n\n// ========================================\n// STEP COMPONENT\n// ========================================\n\ninterface StepperStepProps {\n /** Unique value for this step */\n value: string;\n /** Step label (required for accessibility) */\n label: string;\n /** Optional description */\n description?: string;\n /** Custom icon (for icon variant) */\n icon?: ReactNode;\n /** Completed icon override */\n completedIcon?: ReactNode;\n /** Force disabled state */\n disabled?: boolean;\n /** Optional className */\n className?: string;\n /** Step index for ordering (auto-detected) */\n index?: number;\n}\n\nconst StepperStep = forwardRef<HTMLButtonElement, StepperStepProps>(\n (\n {\n value: stepValue,\n label,\n description,\n icon,\n completedIcon,\n disabled: forcedDisabled,\n className,\n index: providedIndex,\n },\n ref\n ) => {\n const {\n value: currentValue,\n onValueChange,\n orientation,\n variant,\n size,\n linear,\n steps,\n registerStep,\n unregisterStep,\n } = useStepperContext();\n\n const { isFocusVisible, focusProps } = useFocus({ focusVisible: true });\n\n // Track mount order for step registration\n const [mountIndex] = useState(() => providedIndex ?? Date.now());\n\n // Register step on mount\n // Use useLayoutEffect to register before paint\n useLayoutEffect(() => {\n registerStep(stepValue, mountIndex);\n return () => unregisterStep(stepValue);\n }, [stepValue, mountIndex, registerStep, unregisterStep]);\n\n const status = getStepStatus(stepValue, currentValue, steps, linear, forcedDisabled);\n const stepIndex = steps.indexOf(stepValue);\n const isLast = stepIndex === steps.length - 1;\n const isClickable = status !== 'disabled';\n\n // Styles based on status\n const indicatorStyles: CSSProperties = {\n background:\n status === 'completed'\n ? 'var(--stepper-step-completed-bg)'\n : status === 'active'\n ? 'var(--stepper-step-active-bg)'\n : status === 'disabled'\n ? 'var(--stepper-step-disabled-bg)'\n : 'var(--stepper-step-bg)',\n border: `2px solid ${\n status === 'completed'\n ? 'var(--stepper-step-completed-border)'\n : status === 'active'\n ? 'var(--stepper-step-active-border)'\n : status === 'disabled'\n ? 'var(--stepper-step-disabled-border)'\n : 'var(--stepper-step-border)'\n }`,\n color:\n status === 'completed'\n ? 'var(--stepper-step-completed-text)'\n : status === 'active'\n ? 'var(--stepper-step-active-text)'\n : status === 'disabled'\n ? 'var(--stepper-step-disabled-text)'\n : 'var(--stepper-step-text)',\n boxShadow:\n status === 'active'\n ? 'var(--stepper-step-active-glow)'\n : status === 'completed'\n ? 'var(--stepper-step-glow)'\n : isFocusVisible\n ? 'var(--focus-glow)'\n : 'none',\n backdropFilter: 'blur(var(--blur-sm))',\n };\n\n const connectorStyles: CSSProperties = {\n background:\n stepIndex < steps.indexOf(currentValue)\n ? 'var(--stepper-connector-active-bg)'\n : 'var(--stepper-connector-bg)',\n };\n\n const labelStyles: CSSProperties = {\n color:\n status === 'active' || status === 'completed'\n ? 'var(--stepper-label-text)'\n : 'var(--stepper-description-text)',\n };\n\n const descriptionStyles: CSSProperties = {\n color: 'var(--stepper-description-text)',\n };\n\n // Render indicator content\n const renderIndicatorContent = () => {\n if (status === 'completed') {\n if (completedIcon) return completedIcon;\n return <Check className=\"w-4 h-4\" />;\n }\n if (variant === 'icon' && icon) return icon;\n if (variant === 'dots') return null;\n // Numbered variant\n return stepIndex >= 0 ? stepIndex + 1 : '';\n };\n\n const handleClick = () => {\n if (isClickable && onValueChange) {\n onValueChange(stepValue);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (!isClickable) return;\n\n const stepList = e.currentTarget.closest('[role=\"tablist\"]');\n if (!stepList) return;\n\n const allSteps = Array.from(\n stepList.querySelectorAll('[role=\"tab\"]:not([aria-disabled=\"true\"])')\n ) as HTMLButtonElement[];\n const currentIdx = allSteps.indexOf(e.currentTarget as HTMLButtonElement);\n\n let nextIdx = currentIdx;\n const isHorizontal = orientation === 'horizontal';\n\n switch (e.key) {\n case isHorizontal ? 'ArrowRight' : 'ArrowDown':\n e.preventDefault();\n nextIdx = (currentIdx + 1) % allSteps.length;\n break;\n case isHorizontal ? 'ArrowLeft' : 'ArrowUp':\n e.preventDefault();\n nextIdx = currentIdx - 1 < 0 ? allSteps.length - 1 : currentIdx - 1;\n break;\n case 'Home':\n e.preventDefault();\n nextIdx = 0;\n break;\n case 'End':\n e.preventDefault();\n nextIdx = allSteps.length - 1;\n break;\n default:\n return;\n }\n\n const nextStep = allSteps[nextIdx];\n if (nextStep) {\n nextStep.focus();\n const nextValue = nextStep.getAttribute('data-value');\n if (nextValue && onValueChange) {\n onValueChange(nextValue);\n }\n }\n };\n\n // For horizontal, we need step + connector inline\n // For vertical, step is a row with connector below\n if (orientation === 'horizontal') {\n return (\n <>\n <div className={cn(stepperStepContainerVariants({ orientation }), className)}>\n <button\n ref={ref}\n type=\"button\"\n role=\"tab\"\n aria-selected={status === 'active'}\n aria-disabled={!isClickable}\n aria-current={status === 'active' ? 'step' : undefined}\n data-value={stepValue}\n data-status={status}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n onFocus={focusProps.onFocus}\n onBlur={focusProps.onBlur}\n disabled={!isClickable}\n className={cn(\n stepperIndicatorVariants({ size, variant }),\n !isClickable && 'cursor-not-allowed opacity-60',\n isClickable && 'cursor-pointer hover:scale-105',\n // Ensure minimum touch target\n 'min-w-[44px] min-h-[44px]'\n )}\n style={indicatorStyles}\n >\n {renderIndicatorContent()}\n </button>\n\n {label && (\n <div className=\"flex flex-col items-center\">\n <span\n className={cn(stepperLabelVariants({ size, orientation }))}\n style={labelStyles}\n >\n {label}\n </span>\n {description && (\n <span\n className={cn(stepperDescriptionVariants({ size, orientation }))}\n style={descriptionStyles}\n >\n {description}\n </span>\n )}\n </div>\n )}\n </div>\n\n {/* Connector line between steps */}\n {!isLast && (\n <div\n className={cn(stepperConnectorVariants({ orientation }))}\n style={connectorStyles}\n aria-hidden=\"true\"\n />\n )}\n </>\n );\n }\n\n // Vertical orientation\n return (\n <div className=\"flex flex-col\">\n <div className={cn(stepperStepContainerVariants({ orientation }), className)}>\n <button\n ref={ref}\n type=\"button\"\n role=\"tab\"\n aria-selected={status === 'active'}\n aria-disabled={!isClickable}\n aria-current={status === 'active' ? 'step' : undefined}\n data-value={stepValue}\n data-status={status}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n onFocus={focusProps.onFocus}\n onBlur={focusProps.onBlur}\n disabled={!isClickable}\n className={cn(\n stepperIndicatorVariants({ size, variant }),\n !isClickable && 'cursor-not-allowed opacity-60',\n isClickable && 'cursor-pointer hover:scale-105',\n 'min-w-[44px] min-h-[44px]'\n )}\n style={indicatorStyles}\n >\n {renderIndicatorContent()}\n </button>\n\n {label && (\n <div className=\"flex flex-col justify-center\">\n <span className={cn(stepperLabelVariants({ size, orientation }))} style={labelStyles}>\n {label}\n </span>\n {description && (\n <span\n className={cn(stepperDescriptionVariants({ size, orientation }))}\n style={descriptionStyles}\n >\n {description}\n </span>\n )}\n </div>\n )}\n </div>\n\n {/* Vertical connector */}\n {!isLast && (\n <div\n className={cn(stepperConnectorVariants({ orientation }))}\n style={connectorStyles}\n aria-hidden=\"true\"\n />\n )}\n </div>\n );\n }\n);\n\nStepperStep.displayName = 'StepperStep';\n\n// ========================================\n// CONTENT COMPONENT\n// ========================================\n\ninterface StepperContentProps {\n /** Value of the step this content belongs to */\n value: string;\n /** Content to display when step is active */\n children: ReactNode;\n /** Optional className */\n className?: string;\n}\n\nconst StepperContent: FC<StepperContentProps> = ({ value, children, className }) => {\n const { value: currentValue, orientation } = useStepperContext();\n const isActive = currentValue === value;\n\n if (!isActive) return null;\n\n return (\n <div\n role=\"tabpanel\"\n aria-hidden={!isActive}\n className={cn(stepperContentVariants({ orientation }), className)}\n >\n {children}\n </div>\n );\n};\n\n// ========================================\n// EXPORT COMPOUND COMPONENT\n// ========================================\n\nexport const StepperGlass = {\n Root: StepperRoot,\n List: StepperList,\n Step: StepperStep,\n Content: StepperContent,\n};\n\n// Also export individual components for flexibility\nexport { StepperRoot, StepperList, StepperStep, StepperContent };\n\n// Re-export types\nexport type {\n StepperRootProps,\n StepperListProps,\n StepperStepProps,\n StepperContentProps,\n StepperOrientation,\n StepperVariant,\n StepperSize,\n StepStatus,\n};\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Default Legend Content\n */\nimport * as React from 'react';\nimport { clsx } from 'clsx';\nimport { Surface } from '../container/Surface';\nimport { Symbols } from '../shape/Symbols';\nimport { adaptEventsOfChild } from '../util/types';\nimport { resolveDefaultProps } from '../util/resolveDefaultProps';\nvar SIZE = 32;\nvar defaultLegendContentDefaultProps = {\n align: 'center',\n iconSize: 14,\n inactiveColor: '#ccc',\n layout: 'horizontal',\n verticalAlign: 'middle'\n};\nfunction Icon(_ref) {\n var {\n data,\n iconType,\n inactiveColor\n } = _ref;\n var halfSize = SIZE / 2;\n var sixthSize = SIZE / 6;\n var thirdSize = SIZE / 3;\n var color = data.inactive ? inactiveColor : data.color;\n var preferredIcon = iconType !== null && iconType !== void 0 ? iconType : data.type;\n if (preferredIcon === 'none') {\n return null;\n }\n if (preferredIcon === 'plainline') {\n var _data$payload;\n return /*#__PURE__*/React.createElement(\"line\", {\n strokeWidth: 4,\n fill: \"none\",\n stroke: color,\n strokeDasharray: (_data$payload = data.payload) === null || _data$payload === void 0 ? void 0 : _data$payload.strokeDasharray,\n x1: 0,\n y1: halfSize,\n x2: SIZE,\n y2: halfSize,\n className: \"recharts-legend-icon\"\n });\n }\n if (preferredIcon === 'line') {\n return /*#__PURE__*/React.createElement(\"path\", {\n strokeWidth: 4,\n fill: \"none\",\n stroke: color,\n d: \"M0,\".concat(halfSize, \"h\").concat(thirdSize, \"\\n A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n H\").concat(SIZE, \"M\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(thirdSize, \",\").concat(halfSize),\n className: \"recharts-legend-icon\"\n });\n }\n if (preferredIcon === 'rect') {\n return /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n fill: color,\n d: \"M0,\".concat(SIZE / 8, \"h\").concat(SIZE, \"v\").concat(SIZE * 3 / 4, \"h\").concat(-SIZE, \"z\"),\n className: \"recharts-legend-icon\"\n });\n }\n if (/*#__PURE__*/React.isValidElement(data.legendIcon)) {\n var iconProps = _objectSpread({}, data);\n delete iconProps.legendIcon;\n return /*#__PURE__*/React.cloneElement(data.legendIcon, iconProps);\n }\n return /*#__PURE__*/React.createElement(Symbols, {\n fill: color,\n cx: halfSize,\n cy: halfSize,\n size: SIZE,\n sizeType: \"diameter\",\n type: preferredIcon\n });\n}\nfunction Items(props) {\n var {\n payload,\n iconSize,\n layout,\n formatter,\n inactiveColor,\n iconType\n } = props;\n var viewBox = {\n x: 0,\n y: 0,\n width: SIZE,\n height: SIZE\n };\n var itemStyle = {\n display: layout === 'horizontal' ? 'inline-block' : 'block',\n marginRight: 10\n };\n var svgStyle = {\n display: 'inline-block',\n verticalAlign: 'middle',\n marginRight: 4\n };\n return payload.map((entry, i) => {\n var finalFormatter = entry.formatter || formatter;\n var className = clsx({\n 'recharts-legend-item': true,\n [\"legend-item-\".concat(i)]: true,\n inactive: entry.inactive\n });\n if (entry.type === 'none') {\n return null;\n }\n var color = entry.inactive ? inactiveColor : entry.color;\n var finalValue = finalFormatter ? finalFormatter(entry.value, entry, i) : entry.value;\n return /*#__PURE__*/React.createElement(\"li\", _extends({\n className: className,\n style: itemStyle,\n key: \"legend-item-\".concat(i)\n }, adaptEventsOfChild(props, entry, i)), /*#__PURE__*/React.createElement(Surface, {\n width: iconSize,\n height: iconSize,\n viewBox: viewBox,\n style: svgStyle,\n \"aria-label\": \"\".concat(finalValue, \" legend icon\")\n }, /*#__PURE__*/React.createElement(Icon, {\n data: entry,\n iconType: iconType,\n inactiveColor: inactiveColor\n })), /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-legend-item-text\",\n style: {\n color\n }\n }, finalValue));\n });\n}\nexport var DefaultLegendContent = outsideProps => {\n var props = resolveDefaultProps(outsideProps, defaultLegendContentDefaultProps);\n var {\n payload,\n layout,\n align\n } = props;\n if (!payload || !payload.length) {\n return null;\n }\n var finalStyle = {\n padding: 0,\n margin: 0,\n textAlign: layout === 'horizontal' ? align : 'left'\n };\n return /*#__PURE__*/React.createElement(\"ul\", {\n className: \"recharts-default-legend\",\n style: finalStyle\n }, /*#__PURE__*/React.createElement(Items, _extends({}, props, {\n payload: payload\n })));\n};","import { useAppSelector } from '../state/hooks';\nimport { selectLegendPayload } from '../state/selectors/legendSelectors';\n\n/**\n * Use this hook in Legend, or anywhere else where you want to read the current Legend items.\n * @return all Legend items ready to be rendered\n */\nexport function useLegendPayload() {\n return useAppSelector(selectLegendPayload);\n}","var _excluded = [\"contextPayload\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from 'react';\nimport { useEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useLegendPortal } from '../context/legendPortalContext';\nimport { DefaultLegendContent } from './DefaultLegendContent';\nimport { isNumber } from '../util/DataUtils';\nimport { getUniqPayload } from '../util/payload/getUniqPayload';\nimport { useLegendPayload } from '../context/legendPayloadContext';\nimport { useElementOffset } from '../util/useElementOffset';\nimport { useChartHeight, useChartWidth, useMargin } from '../context/chartLayoutContext';\nimport { setLegendSettings, setLegendSize } from '../state/legendSlice';\nimport { useAppDispatch } from '../state/hooks';\nimport { resolveDefaultProps } from '../util/resolveDefaultProps';\nfunction defaultUniqBy(entry) {\n return entry.value;\n}\nfunction LegendContent(props) {\n var {\n contextPayload\n } = props,\n otherProps = _objectWithoutProperties(props, _excluded);\n var finalPayload = getUniqPayload(contextPayload, props.payloadUniqBy, defaultUniqBy);\n var contentProps = _objectSpread(_objectSpread({}, otherProps), {}, {\n payload: finalPayload\n });\n if (/*#__PURE__*/React.isValidElement(props.content)) {\n return /*#__PURE__*/React.cloneElement(props.content, contentProps);\n }\n if (typeof props.content === 'function') {\n return /*#__PURE__*/React.createElement(props.content, contentProps);\n }\n return /*#__PURE__*/React.createElement(DefaultLegendContent, contentProps);\n}\nfunction getDefaultPosition(style, props, margin, chartWidth, chartHeight, box) {\n var {\n layout,\n align,\n verticalAlign\n } = props;\n var hPos, vPos;\n if (!style || (style.left === undefined || style.left === null) && (style.right === undefined || style.right === null)) {\n if (align === 'center' && layout === 'vertical') {\n hPos = {\n left: ((chartWidth || 0) - box.width) / 2\n };\n } else {\n hPos = align === 'right' ? {\n right: margin && margin.right || 0\n } : {\n left: margin && margin.left || 0\n };\n }\n }\n if (!style || (style.top === undefined || style.top === null) && (style.bottom === undefined || style.bottom === null)) {\n if (verticalAlign === 'middle') {\n vPos = {\n top: ((chartHeight || 0) - box.height) / 2\n };\n } else {\n vPos = verticalAlign === 'bottom' ? {\n bottom: margin && margin.bottom || 0\n } : {\n top: margin && margin.top || 0\n };\n }\n }\n return _objectSpread(_objectSpread({}, hPos), vPos);\n}\nfunction LegendSettingsDispatcher(props) {\n var dispatch = useAppDispatch();\n useEffect(() => {\n dispatch(setLegendSettings(props));\n }, [dispatch, props]);\n return null;\n}\nfunction LegendSizeDispatcher(props) {\n var dispatch = useAppDispatch();\n useEffect(() => {\n dispatch(setLegendSize(props));\n return () => {\n dispatch(setLegendSize({\n width: 0,\n height: 0\n }));\n };\n }, [dispatch, props]);\n return null;\n}\nfunction getWidthOrHeight(layout, height, width, maxWidth) {\n if (layout === 'vertical' && isNumber(height)) {\n return {\n height\n };\n }\n if (layout === 'horizontal') {\n return {\n width: width || maxWidth\n };\n }\n return null;\n}\nexport var legendDefaultProps = {\n align: 'center',\n iconSize: 14,\n itemSorter: 'value',\n layout: 'horizontal',\n verticalAlign: 'bottom'\n};\nexport function Legend(outsideProps) {\n var props = resolveDefaultProps(outsideProps, legendDefaultProps);\n var contextPayload = useLegendPayload();\n var legendPortalFromContext = useLegendPortal();\n var margin = useMargin();\n var {\n width: widthFromProps,\n height: heightFromProps,\n wrapperStyle,\n portal: portalFromProps\n } = props;\n // The contextPayload is not used directly inside the hook, but we need the onBBoxUpdate call\n // when the payload changes, therefore it's here as a dependency.\n var [lastBoundingBox, updateBoundingBox] = useElementOffset([contextPayload]);\n var chartWidth = useChartWidth();\n var chartHeight = useChartHeight();\n if (chartWidth == null || chartHeight == null) {\n return null;\n }\n var maxWidth = chartWidth - ((margin === null || margin === void 0 ? void 0 : margin.left) || 0) - ((margin === null || margin === void 0 ? void 0 : margin.right) || 0);\n var widthOrHeight = getWidthOrHeight(props.layout, heightFromProps, widthFromProps, maxWidth);\n // if the user supplies their own portal, only use their defined wrapper styles\n var outerStyle = portalFromProps ? wrapperStyle : _objectSpread(_objectSpread({\n position: 'absolute',\n width: (widthOrHeight === null || widthOrHeight === void 0 ? void 0 : widthOrHeight.width) || widthFromProps || 'auto',\n height: (widthOrHeight === null || widthOrHeight === void 0 ? void 0 : widthOrHeight.height) || heightFromProps || 'auto'\n }, getDefaultPosition(wrapperStyle, props, margin, chartWidth, chartHeight, lastBoundingBox)), wrapperStyle);\n var legendPortal = portalFromProps !== null && portalFromProps !== void 0 ? portalFromProps : legendPortalFromContext;\n if (legendPortal == null || contextPayload == null) {\n return null;\n }\n var legendElement = /*#__PURE__*/React.createElement(\"div\", {\n className: \"recharts-legend-wrapper\",\n style: outerStyle,\n ref: updateBoundingBox\n }, /*#__PURE__*/React.createElement(LegendSettingsDispatcher, {\n layout: props.layout,\n align: props.align,\n verticalAlign: props.verticalAlign,\n itemSorter: props.itemSorter\n }), !portalFromProps && /*#__PURE__*/React.createElement(LegendSizeDispatcher, {\n width: lastBoundingBox.width,\n height: lastBoundingBox.height\n }), /*#__PURE__*/React.createElement(LegendContent, _extends({}, props, widthOrHeight, {\n margin: margin,\n chartWidth: chartWidth,\n chartHeight: chartHeight,\n contextPayload: contextPayload\n })));\n return /*#__PURE__*/createPortal(legendElement, legendPortal);\n}\nLegend.displayName = 'Legend';","/* eslint-disable react-refresh/only-export-components */\n// ========================================\n// CHART COMPONENTS (shadcn/ui pattern)\n// Base chart utilities following shadcn/ui Charts API\n// ========================================\n\nimport * as React from 'react';\nimport * as RechartsPrimitive from 'recharts';\n\nimport { cn } from '@/lib/utils';\n\n// ========================================\n// CHART CONFIG TYPE\n// ========================================\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode;\n icon?: React.ComponentType;\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: { light: string; dark: string } }\n );\n};\n\n// ========================================\n// CHART CONTEXT\n// ========================================\n\ntype ChartContextProps = {\n config: ChartConfig;\n};\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\n\nfunction useChart() {\n const context = React.useContext(ChartContext);\n\n if (!context) {\n throw new Error('useChart must be used within a <ChartContainer />');\n }\n\n return context;\n}\n\n// ========================================\n// CHART CONTAINER\n// ========================================\n\ninterface ChartContainerProps\n extends React.ComponentProps<'div'>, Pick<ChartContextProps, 'config'> {\n children: React.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>['children'];\n}\n\nconst ChartContainer = React.forwardRef<HTMLDivElement, ChartContainerProps>(\n ({ id, className, children, config, ...props }, ref) => {\n const uniqueId = React.useId();\n const chartId = `chart-${id || uniqueId.replace(/:/g, '')}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-chart={chartId}\n ref={ref}\n className={cn(\n \"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-[var(--text-muted)] [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-[var(--glass-border)] [&_.recharts-curve.recharts-tooltip-cursor]:stroke-[var(--glass-border)] [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-[var(--glass-border)] [&_.recharts-radial-bar-background-sector]:fill-[var(--glass-frost-5)] [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-[var(--glass-frost-10)] [&_.recharts-reference-line_[stroke='#ccc']]:stroke-[var(--glass-border)] [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none\",\n className\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>{children}</RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n );\n }\n);\nChartContainer.displayName = 'ChartContainer';\n\n// ========================================\n// CHART STYLE (CSS Variables injection)\n// ========================================\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, itemConfig]) => itemConfig.color || itemConfig.theme\n );\n\n if (!colorConfig.length) {\n return null;\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: `\n[data-chart=\"${id}\"] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color = itemConfig.color || itemConfig.theme?.light;\n return color ? ` --color-${key}: ${color};` : null;\n })\n .filter(Boolean)\n .join('\\n')}\n}\n\n[data-theme=\"glass\"] [data-chart=\"${id}\"],\n.dark [data-chart=\"${id}\"] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color = itemConfig.theme?.dark || itemConfig.color;\n return color ? ` --color-${key}: ${color};` : null;\n })\n .filter(Boolean)\n .join('\\n')}\n}\n`,\n }}\n />\n );\n};\n\n// ========================================\n// CHART TOOLTIP\n// ========================================\n\nconst ChartTooltip = RechartsPrimitive.Tooltip;\n\ninterface TooltipPayloadItem {\n dataKey?: string | number;\n name?: string;\n value?: number;\n color?: string;\n payload?: Record<string, unknown>;\n fill?: string;\n type?: string;\n}\n\ninterface ChartTooltipContentProps {\n active?: boolean;\n payload?: TooltipPayloadItem[];\n label?: string;\n className?: string;\n labelClassName?: string;\n hideLabel?: boolean;\n hideIndicator?: boolean;\n indicator?: 'line' | 'dot' | 'dashed';\n nameKey?: string;\n labelKey?: string;\n labelFormatter?: (label: string, payload: TooltipPayloadItem[]) => React.ReactNode;\n valueFormatter?: (value: number) => string;\n}\n\nconst ChartTooltipContent = React.forwardRef<HTMLDivElement, ChartTooltipContentProps>(\n (\n {\n active,\n payload,\n className,\n indicator = 'dot',\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n nameKey,\n labelKey,\n valueFormatter,\n },\n ref\n ) => {\n const { config } = useChart();\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null;\n }\n\n const [item] = payload;\n const key = `${labelKey || item?.dataKey || item?.name || 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value =\n !labelKey && typeof label === 'string'\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label;\n\n if (labelFormatter && typeof label === 'string') {\n return (\n <div className={cn('font-medium', labelClassName)}>{labelFormatter(label, payload)}</div>\n );\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn('font-medium', labelClassName)}>{value}</div>;\n }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);\n\n if (!active || !payload?.length) {\n return null;\n }\n\n const nestLabel = payload.length === 1 && indicator !== 'dot';\n\n return (\n <div\n ref={ref}\n className={cn(\n 'grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-[var(--glass-border)] bg-[var(--glass-bg)] px-2.5 py-1.5 text-xs shadow-xl backdrop-blur-md',\n className\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.map((item: TooltipPayloadItem, index: number) => {\n const key = `${nameKey || item.name || item.dataKey || 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const indicatorColor = item.fill || item.color;\n\n return (\n <div\n key={`${item.dataKey}-${index}`}\n className={cn(\n 'flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-[var(--text-muted)]',\n indicator === 'dot' && 'items-center'\n )}\n >\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n 'shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]',\n {\n 'h-2.5 w-2.5': indicator === 'dot',\n 'w-1': indicator === 'line',\n 'w-0 border-[1.5px] border-dashed bg-transparent': indicator === 'dashed',\n 'my-0.5': nestLabel && indicator === 'dashed',\n }\n )}\n style={\n {\n '--color-bg': indicatorColor,\n '--color-border': indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n 'flex flex-1 justify-between leading-none',\n nestLabel ? 'items-end' : 'items-center'\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-[var(--text-muted)]\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value !== undefined && (\n <span className=\"font-mono font-medium tabular-nums text-[var(--text-primary)]\">\n {valueFormatter ? valueFormatter(item.value) : item.value.toLocaleString()}\n </span>\n )}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n }\n);\nChartTooltipContent.displayName = 'ChartTooltipContent';\n\n// ========================================\n// CHART LEGEND\n// ========================================\n\nconst ChartLegend = RechartsPrimitive.Legend;\n\ninterface LegendPayloadItem {\n value?: string;\n dataKey?: string | number;\n color?: string;\n}\n\ninterface ChartLegendContentProps extends React.ComponentProps<'div'> {\n payload?: LegendPayloadItem[];\n verticalAlign?: 'top' | 'bottom';\n hideIcon?: boolean;\n nameKey?: string;\n}\n\nconst ChartLegendContent = React.forwardRef<HTMLDivElement, ChartLegendContentProps>(\n ({ className, hideIcon = false, payload, verticalAlign = 'bottom', nameKey }, ref) => {\n const { config } = useChart();\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n 'flex items-center justify-center gap-4',\n verticalAlign === 'top' ? 'pb-3' : 'pt-3',\n className\n )}\n >\n {payload.map((item: LegendPayloadItem) => {\n const key = `${nameKey || item.dataKey || 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n return (\n <div\n key={item.value}\n className={cn(\n 'flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-[var(--text-muted)]'\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n );\n })}\n </div>\n );\n }\n);\nChartLegendContent.displayName = 'ChartLegendContent';\n\n// ========================================\n// HELPER FUNCTIONS\n// ========================================\n\nfunction getPayloadConfigFromPayload(config: ChartConfig, payload: unknown, key: string) {\n if (typeof payload !== 'object' || payload === null) {\n return undefined;\n }\n\n const payloadPayload =\n 'payload' in payload && typeof payload.payload === 'object' && payload.payload !== null\n ? payload.payload\n : undefined;\n\n let configLabelKey: string = key;\n\n if (key in config) {\n return config[key];\n }\n\n if (payloadPayload && key in payloadPayload) {\n configLabelKey = payloadPayload[key as keyof typeof payloadPayload] as string;\n }\n\n return configLabelKey in config ? config[configLabelKey] : config[key];\n}\n\n// ========================================\n// EXPORTS\n// ========================================\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n useChart,\n};\n","/**\n * DropdownGlass CVA Variants\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport type DropdownAlign = 'left' | 'right';\n\nexport const dropdownAlign = cva('absolute mt-2 min-w-[160px] md:min-w-[200px] rounded-2xl py-1.5 md:py-2', {\n variants: {\n align: {\n left: 'left-0',\n right: 'right-0',\n },\n },\n defaultVariants: {\n align: 'left',\n },\n});\n","/**\n * TooltipGlass CVA Variants\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\nexport const tooltipPositions = cva(\n 'absolute z-50 px-2 py-1 md:px-3 md:py-1.5 rounded-lg text-[10px] md:text-xs font-medium whitespace-nowrap transition-opacity duration-200',\n {\n variants: {\n position: {\n top: 'bottom-full left-1/2 -translate-x-1/2 mb-2',\n bottom: 'top-full left-1/2 -translate-x-1/2 mt-2',\n left: 'right-full top-1/2 -translate-y-1/2 mr-2',\n right: 'left-full top-1/2 -translate-y-1/2 ml-2',\n },\n },\n defaultVariants: {\n position: 'top',\n },\n }\n);\n","/**\n * Alert CVA Variants (shadcn/ui)\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport const alertVariants = cva(\n \"relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive:\n \"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n","/**\n * Badge CVA Variants (shadcn/ui)\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport const badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n destructive:\n \"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n","/**\n * Button CVA Variants (shadcn/ui)\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport const buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n"],"x_google_ignoreList":[2,3,4],"mappings":";;;;;;;;;;;;AAwBA,MAAa,sBAAsB,IAAI,eAAe;CACpD,UAAU,EACR,aAAa;EACX,YAAY;EACZ,UAAU;EACX,EACF;CACD,iBAAiB,EACf,aAAa,cACd;CACF,CAAC;AAMF,MAAa,sBAAsB,IAAI,QAAQ;CAC7C,UAAU,EACR,aAAa;EACX,YAAY;EACZ,UAAU;EACX,EACF;CACD,iBAAiB,EACf,aAAa,cACd;CACF,CAAC;AAMF,MAAa,+BAA+B,IAAI,6CAA6C;CAC3F,UAAU,EACR,aAAa;EACX,YAAY;EACZ,UAAU;EACX,EACF;CACD,iBAAiB,EACf,aAAa,cACd;CACF,CAAC;AAMF,MAAa,2BAA2B,IACtC,2GACA;CACE,UAAU;EACR,MAAM;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACL;EACD,SAAS;GACP,UAAU;GACV,MAAM;GACN,MAAM;GACP;EACF;CACD,iBAAiB;EACf,MAAM;EACN,SAAS;EACV;CACD,kBAAkB;EAEhB;GAAE,SAAS;GAAQ,MAAM;GAAM,WAAW;GAAiB;EAC3D;GAAE,SAAS;GAAQ,MAAM;GAAM,WAAW;GAAa;EACvD;GAAE,SAAS;GAAQ,MAAM;GAAM,WAAW;GAAa;EACxD;CACF,CACF;AAMD,MAAa,2BAA2B,IAAI,wCAAwC;CAClF,UAAU,EACR,aAAa;EACX,YAAY;EACZ,UAAU;EACX,EACF;CACD,iBAAiB,EACf,aAAa,cACd;CACF,CAAC;AAMF,MAAa,uBAAuB,IAClC,gEACA;CACE,UAAU;EACR,MAAM;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACL;EACD,aAAa;GACX,YAAY;GACZ,UAAU;GACX;EACF;CACD,iBAAiB;EACf,MAAM;EACN,aAAa;EACd;CACF,CACF;AAMD,MAAa,6BAA6B,IAAI,kCAAkC;CAC9E,UAAU;EACR,MAAM;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACL;EACD,aAAa;GACX,YAAY;GACZ,UAAU;GACX;EACF;CACD,iBAAiB;EACf,MAAM;EACN,aAAa;EACd;CACF,CAAC;AAMF,MAAa,yBAAyB,IAAI,qCAAqC;CAC7E,UAAU,EACR,aAAa;EACX,YAAY;EACZ,UAAU;EACX,EACF;CACD,iBAAiB,EACf,aAAa,cACd;CACF,CAAC;AC9FF,IAAM,iBAAiB,cAA0C,KAAK;AAEtE,IAAM,0BAA0B;CAC9B,MAAM,UAAU,WAAW,eAAe;AAC1C,KAAI,CAAC,QACH,OAAM,IAAI,MAAM,oEAAoE;AAEtF,QAAO;;AAOT,SAAS,cACP,WACA,cACA,OACA,QACA,UACY;AACZ,KAAI,SAAU,QAAO;CAErB,MAAM,YAAY,MAAM,QAAQ,UAAU;CAC1C,MAAM,eAAe,MAAM,QAAQ,aAAa;AAEhD,KAAI,cAAc,MAAM,iBAAiB,GAAI,QAAO;AACpD,KAAI,cAAc,aAAc,QAAO;AACvC,KAAI,YAAY,aAAc,QAAO;AACrC,KAAI,UAAU,YAAY,aAAc,QAAO;AAC/C,QAAO;;AA0BT,IAAMA,eAAqC,EACzC,OACA,eACA,cAAc,cACd,UAAU,YACV,OAAO,MACP,SAAS,OACT,UACA,gBACI;CACJ,MAAM,CAAC,OAAO,YAAY,SAAmB,EAAE,CAAC;CAEhD,MAAM,eAAe,aAAa,WAAmB,UAAkB;AACrE,YAAU,SAAS;AACjB,OAAI,KAAK,SAAS,UAAU,CAAE,QAAO;GACrC,MAAM,WAAW,CAAC,GAAG,KAAK;AAE1B,YAAS,OAAO,OAAO,GAAG,UAAU;AACpC,UAAO;IACP;IACD,EAAE,CAAC;CAEN,MAAM,iBAAiB,aAAa,cAAsB;AACxD,YAAU,SAAS,KAAK,QAAQ,MAAM,MAAM,UAAU,CAAC;IACtD,EAAE,CAAC;CAEN,MAAM,eAAe,eACZ;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,GACD;EAAC;EAAO;EAAe;EAAa;EAAS;EAAM;EAAQ;EAAO;EAAc;EAAe,CAChG;AAED,QACE,oBAAC,eAAe,UAAA;EAAS,OAAO;YAC9B,oBAAC,OAAA;GACC,WAAW,GAAG,oBAAoB,EAAE,aAAa,CAAC,EAAE,UAAU;GAC9D,cAAW;GAEV;IACG;GACkB;;AAa9B,IAAM,cAAc,YACjB,EAAE,UAAU,WAAW,GAAG,SAAS,QAAQ;CAC1C,MAAM,EAAE,gBAAgB,mBAAmB;AAE3C,QACE,oBAAC,OAAA;EACM;EACL,MAAK;EACL,oBAAkB;EAClB,WAAW,GAAG,oBAAoB,EAAE,aAAa,CAAC,EAAE,UAAU;EAC9D,GAAI;EAEH;GACG;EAGX;AAED,YAAY,cAAc;AAyB1B,IAAM,cAAc,YAEhB,EACE,OAAO,WACP,OACA,aACA,MACA,eACA,UAAU,gBACV,WACA,OAAO,iBAET,QACG;CACH,MAAM,EACJ,OAAO,cACP,eACA,aACA,SACA,MACA,QACA,OACA,cACA,mBACE,mBAAmB;CAEvB,MAAM,EAAE,gBAAgB,eAAe,SAAS,EAAE,cAAc,MAAM,CAAC;CAGvE,MAAM,CAAC,cAAc,eAAe,iBAAiB,KAAK,KAAK,CAAC;AAIhE,uBAAsB;AACpB,eAAa,WAAW,WAAW;AACnC,eAAa,eAAe,UAAU;IACrC;EAAC;EAAW;EAAY;EAAc;EAAe,CAAC;CAEzD,MAAM,SAAS,cAAc,WAAW,cAAc,OAAO,QAAQ,eAAe;CACpF,MAAM,YAAY,MAAM,QAAQ,UAAU;CAC1C,MAAM,SAAS,cAAc,MAAM,SAAS;CAC5C,MAAM,cAAc,WAAW;CAG/B,MAAMC,kBAAiC;EACrC,YACE,WAAW,cACP,qCACA,WAAW,WACT,kCACA,WAAW,aACT,oCACA;EACV,QAAQ,aACN,WAAW,cACP,yCACA,WAAW,WACT,sCACA,WAAW,aACT,wCACA;EAEV,OACE,WAAW,cACP,uCACA,WAAW,WACT,oCACA,WAAW,aACT,sCACA;EACV,WACE,WAAW,WACP,oCACA,WAAW,cACT,6BACA,iBACE,sBACA;EACV,gBAAgB;EACjB;CAED,MAAMC,kBAAiC,EACrC,YACE,YAAY,MAAM,QAAQ,aAAa,GACnC,uCACA,+BACP;CAED,MAAMC,cAA6B,EACjC,OACE,WAAW,YAAY,WAAW,cAC9B,8BACA,mCACP;CAED,MAAMC,oBAAmC,EACvC,OAAO,mCACR;CAGD,MAAM,+BAA+B;AACnC,MAAI,WAAW,aAAa;AAC1B,OAAI,cAAe,QAAO;AAC1B,UAAO,oBAAC,OAAA,EAAM,WAAU,WAAA,CAAY;;AAEtC,MAAI,YAAY,UAAU,KAAM,QAAO;AACvC,MAAI,YAAY,OAAQ,QAAO;AAE/B,SAAO,aAAa,IAAI,YAAY,IAAI;;CAG1C,MAAM,oBAAoB;AACxB,MAAI,eAAe,cACjB,eAAc,UAAU;;CAI5B,MAAM,iBAAiB,MAA2B;AAChD,MAAI,CAAC,YAAa;EAElB,MAAM,WAAW,EAAE,cAAc,QAAQ,qBAAmB;AAC5D,MAAI,CAAC,SAAU;EAEf,MAAM,WAAW,MAAM,KACrB,SAAS,iBAAiB,+CAA2C,CACtE;EACD,MAAM,aAAa,SAAS,QAAQ,EAAE,cAAmC;EAEzE,IAAI,UAAU;EACd,MAAM,eAAe,gBAAgB;AAErC,UAAQ,EAAE,KAAV;GACE,KAAK,eAAe,eAAe;AACjC,MAAE,gBAAgB;AAClB,eAAW,aAAa,KAAK,SAAS;AACtC;GACF,KAAK,eAAe,cAAc;AAChC,MAAE,gBAAgB;AAClB,cAAU,aAAa,IAAI,IAAI,SAAS,SAAS,IAAI,aAAa;AAClE;GACF,KAAK;AACH,MAAE,gBAAgB;AAClB,cAAU;AACV;GACF,KAAK;AACH,MAAE,gBAAgB;AAClB,cAAU,SAAS,SAAS;AAC5B;GACF,QACE;;EAGJ,MAAM,WAAW,SAAS;AAC1B,MAAI,UAAU;AACZ,YAAS,OAAO;GAChB,MAAM,YAAY,SAAS,aAAa,aAAa;AACrD,OAAI,aAAa,cACf,eAAc,UAAU;;;AAO9B,KAAI,gBAAgB,aAClB,QACE,qBAAA,UAAA,EAAA,UAAA,CACE,qBAAC,OAAA;EAAI,WAAW,GAAG,6BAA6B,EAAE,aAAa,CAAC,EAAE,UAAU;aAC1E,oBAAC,UAAA;GACM;GACL,MAAK;GACL,MAAK;GACL,iBAAe,WAAW;GAC1B,iBAAe,CAAC;GAChB,gBAAc,WAAW,WAAW,SAAS,KAAA;GAC7C,cAAY;GACZ,eAAa;GACb,SAAS;GACT,WAAW;GACX,SAAS,WAAW;GACpB,QAAQ,WAAW;GACnB,UAAU,CAAC;GACX,WAAW,GACT,yBAAyB;IAAE;IAAM;IAAS,CAAC,EAC3C,CAAC,eAAe,iCAChB,eAAe,kCAEf,4BACD;GACD,OAAO;aAEN,wBAAwB;IAClB,EAER,SACC,qBAAC,OAAA;GAAI,WAAU;cACb,oBAAC,QAAA;IACC,WAAW,GAAG,qBAAqB;KAAE;KAAM;KAAa,CAAC,CAAC;IAC1D,OAAO;cAEN;KACI,EACN,eACC,oBAAC,QAAA;IACC,WAAW,GAAG,2BAA2B;KAAE;KAAM;KAAa,CAAC,CAAC;IAChE,OAAO;cAEN;KACI,CAAA;IAEL,CAAA;GAEJ,EAGL,CAAC,UACA,oBAAC,OAAA;EACC,WAAW,GAAG,yBAAyB,EAAE,aAAa,CAAC,CAAC;EACxD,OAAO;EACP,eAAY;GACZ,CAAA,EAAA,CAEH;AAKP,QACE,qBAAC,OAAA;EAAI,WAAU;aACb,qBAAC,OAAA;GAAI,WAAW,GAAG,6BAA6B,EAAE,aAAa,CAAC,EAAE,UAAU;cAC1E,oBAAC,UAAA;IACM;IACL,MAAK;IACL,MAAK;IACL,iBAAe,WAAW;IAC1B,iBAAe,CAAC;IAChB,gBAAc,WAAW,WAAW,SAAS,KAAA;IAC7C,cAAY;IACZ,eAAa;IACb,SAAS;IACT,WAAW;IACX,SAAS,WAAW;IACpB,QAAQ,WAAW;IACnB,UAAU,CAAC;IACX,WAAW,GACT,yBAAyB;KAAE;KAAM;KAAS,CAAC,EAC3C,CAAC,eAAe,iCAChB,eAAe,kCACf,4BACD;IACD,OAAO;cAEN,wBAAwB;KAClB,EAER,SACC,qBAAC,OAAA;IAAI,WAAU;eACb,oBAAC,QAAA;KAAK,WAAW,GAAG,qBAAqB;MAAE;MAAM;MAAa,CAAC,CAAC;KAAE,OAAO;eACtE;MACI,EACN,eACC,oBAAC,QAAA;KACC,WAAW,GAAG,2BAA2B;MAAE;MAAM;MAAa,CAAC,CAAC;KAChE,OAAO;eAEN;MACI,CAAA;KAEL,CAAA;IAEJ,EAGL,CAAC,UACA,oBAAC,OAAA;GACC,WAAW,GAAG,yBAAyB,EAAE,aAAa,CAAC,CAAC;GACxD,OAAO;GACP,eAAY;IACZ,CAAA;GAEA;EAGX;AAED,YAAY,cAAc;AAe1B,IAAMC,kBAA2C,EAAE,OAAO,UAAU,gBAAgB;CAClF,MAAM,EAAE,OAAO,cAAc,gBAAgB,mBAAmB;CAChE,MAAM,WAAW,iBAAiB;AAElC,KAAI,CAAC,SAAU,QAAO;AAEtB,QACE,oBAAC,OAAA;EACC,MAAK;EACL,eAAa,CAAC;EACd,WAAW,GAAG,uBAAuB,EAAE,aAAa,CAAC,EAAE,UAAU;EAEhE;GACG;;AAQV,MAAa,eAAe;CAC1B,MAAM;CACN,MAAM;CACN,MAAM;CACN,SAAS;CACV;AC1jBD,SAASC,aAAW;AAAE,QAAO,aAAW,OAAO,SAAS,OAAO,OAAO,MAAM,GAAG,SAAU,GAAG;AAAE,OAAK,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;GAAE,IAAI,IAAI,UAAU;AAAI,QAAK,IAAI,KAAK,EAAG,EAAC,EAAE,EAAE,eAAe,KAAK,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;;AAAO,SAAO;IAAMA,WAAS,MAAM,MAAM,UAAU;;AACjR,SAASC,UAAQ,GAAG,GAAG;CAAE,IAAI,IAAI,OAAO,KAAK,EAAE;AAAE,KAAI,OAAO,uBAAuB;EAAE,IAAI,IAAI,OAAO,sBAAsB,EAAE;AAAE,QAAM,IAAI,EAAE,OAAO,SAAU,KAAG;AAAE,UAAO,OAAO,yBAAyB,GAAGC,IAAE,CAAC;IAAc,GAAG,EAAE,KAAK,MAAM,GAAG,EAAE;;AAAI,QAAO;;AAC3P,SAASC,gBAAc,GAAG;AAAE,MAAK,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;EAAE,IAAI,IAAI,QAAQ,UAAU,KAAK,UAAU,KAAK,EAAE;AAAE,MAAI,IAAIF,UAAQ,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,SAAU,KAAG;AAAE,qBAAgB,GAAGC,KAAG,EAAEA,KAAG;IAAI,GAAG,OAAO,4BAA4B,OAAO,iBAAiB,GAAG,OAAO,0BAA0B,EAAE,CAAC,GAAGD,UAAQ,OAAO,EAAE,CAAC,CAAC,QAAQ,SAAU,KAAG;AAAE,UAAO,eAAe,GAAGC,KAAG,OAAO,yBAAyB,GAAGA,IAAE,CAAC;IAAI;;AAAI,QAAO;;AACnb,SAASE,kBAAgB,GAAG,GAAG,GAAG;AAAE,SAAQ,IAAIC,iBAAe,EAAE,KAAK,IAAI,OAAO,eAAe,GAAG,GAAG;EAAE,OAAO;EAAG,YAAY,CAAC;EAAG,cAAc,CAAC;EAAG,UAAU,CAAC;EAAG,CAAC,GAAG,EAAE,KAAK,GAAG;;AAChL,SAASA,iBAAe,GAAG;CAAE,IAAI,IAAIC,eAAa,GAAG,SAAS;AAAE,QAAO,YAAY,OAAO,IAAI,IAAI,IAAI;;AACtG,SAASA,eAAa,GAAG,GAAG;AAAE,KAAI,YAAY,OAAO,KAAK,CAAC,EAAG,QAAO;CAAG,IAAI,IAAI,EAAE,OAAO;AAAc,KAAI,KAAK,MAAM,GAAG;EAAE,IAAI,IAAI,EAAE,KAAK,GAAG,KAAK,UAAU;AAAE,MAAI,YAAY,OAAO,EAAG,QAAO;AAAG,QAAM,IAAI,UAAU,+CAA+C;;AAAI,SAAQ,aAAa,IAAI,SAAS,QAAQ,EAAE;;AAUrT,IAAI,OAAO;AACX,IAAI,mCAAmC;CACrC,OAAO;CACP,UAAU;CACV,eAAe;CACf,QAAQ;CACR,eAAe;CAChB;AACD,SAAS,KAAK,MAAM;CAClB,IAAI,EACF,MACA,UACA,kBACE;CACJ,IAAI,WAAW,OAAO;CACtB,IAAI,YAAY,OAAO;CACvB,IAAI,YAAY,OAAO;CACvB,IAAI,QAAQ,KAAK,WAAW,gBAAgB,KAAK;CACjD,IAAI,gBAAgB,aAAa,QAAQ,aAAa,KAAK,IAAI,WAAW,KAAK;AAC/E,KAAI,kBAAkB,OACpB,QAAO;AAET,KAAI,kBAAkB,aAAa;EACjC,IAAI;AACJ,SAAoB,sBAAM,cAAc,QAAQ;GAC9C,aAAa;GACb,MAAM;GACN,QAAQ;GACR,kBAAkB,gBAAgB,KAAK,aAAa,QAAQ,kBAAkB,KAAK,IAAI,KAAK,IAAI,cAAc;GAC9G,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,WAAW;GACZ,CAAC;;AAEJ,KAAI,kBAAkB,OACpB,QAAoB,sBAAM,cAAc,QAAQ;EAC9C,aAAa;EACb,MAAM;EACN,QAAQ;EACR,GAAG,MAAM,OAAO,UAAU,IAAI,CAAC,OAAO,WAAW,kBAAkB,CAAC,OAAO,WAAW,IAAI,CAAC,OAAO,WAAW,UAAU,CAAC,OAAO,IAAI,WAAW,IAAI,CAAC,OAAO,UAAU,kBAAkB,CAAC,OAAO,MAAM,IAAI,CAAC,OAAO,IAAI,WAAW,IAAI,CAAC,OAAO,UAAU,kBAAkB,CAAC,OAAO,WAAW,IAAI,CAAC,OAAO,WAAW,UAAU,CAAC,OAAO,WAAW,IAAI,CAAC,OAAO,SAAS;EACnW,WAAW;EACZ,CAAC;AAEJ,KAAI,kBAAkB,OACpB,QAAoB,sBAAM,cAAc,QAAQ;EAC9C,QAAQ;EACR,MAAM;EACN,GAAG,MAAM,OAAO,OAAO,GAAG,IAAI,CAAC,OAAO,MAAM,IAAI,CAAC,OAAO,OAAO,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI;EAC7F,WAAW;EACZ,CAAC;AAEJ,KAAiB,sBAAM,eAAe,KAAK,WAAW,EAAE;EACtD,IAAI,YAAYH,gBAAc,EAAE,EAAE,KAAK;AACvC,SAAO,UAAU;AACjB,SAAoB,sBAAM,aAAa,KAAK,YAAY,UAAU;;AAEpE,QAAoB,sBAAM,cAAc,SAAS;EAC/C,MAAM;EACN,IAAI;EACJ,IAAI;EACJ,MAAM;EACN,UAAU;EACV,MAAM;EACP,CAAC;;AAEJ,SAAS,MAAM,OAAO;CACpB,IAAI,EACF,SACA,UACA,QACA,WACA,eACA,aACE;CACJ,IAAI,UAAU;EACZ,GAAG;EACH,GAAG;EACH,OAAO;EACP,QAAQ;EACT;CACD,IAAI,YAAY;EACd,SAAS,WAAW,eAAe,iBAAiB;EACpD,aAAa;EACd;CACD,IAAI,WAAW;EACb,SAAS;EACT,eAAe;EACf,aAAa;EACd;AACD,QAAO,QAAQ,KAAK,OAAO,MAAM;EAC/B,IAAI,iBAAiB,MAAM,aAAa;EACxC,IAAI,YAAY,KAAK;GACnB,wBAAwB;IACvB,eAAe,OAAO,EAAE,GAAG;GAC5B,UAAU,MAAM;GACjB,CAAC;AACF,MAAI,MAAM,SAAS,OACjB,QAAO;EAET,IAAI,QAAQ,MAAM,WAAW,gBAAgB,MAAM;EACnD,IAAI,aAAa,iBAAiB,eAAe,MAAM,OAAO,OAAO,EAAE,GAAG,MAAM;AAChF,SAAoB,sBAAM,cAAc,MAAMH,WAAS;GAC1C;GACX,OAAO;GACP,KAAK,eAAe,OAAO,EAAE;GAC9B,EAAE,mBAAmB,OAAO,OAAO,EAAE,CAAC,EAAe,sBAAM,cAAc,SAAS;GACjF,OAAO;GACP,QAAQ;GACC;GACT,OAAO;GACP,cAAc,GAAG,OAAO,YAAY,eAAe;GACpD,EAAe,sBAAM,cAAc,MAAM;GACxC,MAAM;GACI;GACK;GAChB,CAAC,CAAC,EAAe,sBAAM,cAAc,QAAQ;GAC5C,WAAW;GACX,OAAO,EACL,OACD;GACF,EAAE,WAAW,CAAC;GACf;;AAEJ,IAAW,wBAAuB,iBAAgB;CAChD,IAAI,QAAQ,oBAAoB,cAAc,iCAAiC;CAC/E,IAAI,EACF,SACA,QACA,UACE;AACJ,KAAI,CAAC,WAAW,CAAC,QAAQ,OACvB,QAAO;CAET,IAAI,aAAa;EACf,SAAS;EACT,QAAQ;EACR,WAAW,WAAW,eAAe,QAAQ;EAC9C;AACD,QAAoB,sBAAM,cAAc,MAAM;EAC5C,WAAW;EACX,OAAO;EACR,EAAe,sBAAM,cAAc,OAAOA,WAAS,EAAE,EAAE,OAAO,EACpD,SACV,CAAC,CAAC,CAAC;;ACzJN,SAAgB,mBAAmB;AACjC,QAAO,eAAe,oBAAoB;;ACR5C,IAAI,YAAY,CAAC,iBAAiB;AAClC,SAAS,WAAW;AAAE,QAAO,WAAW,OAAO,SAAS,OAAO,OAAO,MAAM,GAAG,SAAU,GAAG;AAAE,OAAK,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;GAAE,IAAI,IAAI,UAAU;AAAI,QAAK,IAAI,KAAK,EAAG,EAAC,EAAE,EAAE,eAAe,KAAK,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;;AAAO,SAAO;IAAM,SAAS,MAAM,MAAM,UAAU;;AACjR,SAAS,QAAQ,GAAG,GAAG;CAAE,IAAI,IAAI,OAAO,KAAK,EAAE;AAAE,KAAI,OAAO,uBAAuB;EAAE,IAAI,IAAI,OAAO,sBAAsB,EAAE;AAAE,QAAM,IAAI,EAAE,OAAO,SAAU,KAAG;AAAE,UAAO,OAAO,yBAAyB,GAAGO,IAAE,CAAC;IAAc,GAAG,EAAE,KAAK,MAAM,GAAG,EAAE;;AAAI,QAAO;;AAC3P,SAAS,cAAc,GAAG;AAAE,MAAK,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;EAAE,IAAI,IAAI,QAAQ,UAAU,KAAK,UAAU,KAAK,EAAE;AAAE,MAAI,IAAI,QAAQ,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,SAAU,KAAG;AAAE,mBAAgB,GAAGA,KAAG,EAAEA,KAAG;IAAI,GAAG,OAAO,4BAA4B,OAAO,iBAAiB,GAAG,OAAO,0BAA0B,EAAE,CAAC,GAAG,QAAQ,OAAO,EAAE,CAAC,CAAC,QAAQ,SAAU,KAAG;AAAE,UAAO,eAAe,GAAGA,KAAG,OAAO,yBAAyB,GAAGA,IAAE,CAAC;IAAI;;AAAI,QAAO;;AACnb,SAAS,gBAAgB,GAAG,GAAG,GAAG;AAAE,SAAQ,IAAI,eAAe,EAAE,KAAK,IAAI,OAAO,eAAe,GAAG,GAAG;EAAE,OAAO;EAAG,YAAY,CAAC;EAAG,cAAc,CAAC;EAAG,UAAU,CAAC;EAAG,CAAC,GAAG,EAAE,KAAK,GAAG;;AAChL,SAAS,eAAe,GAAG;CAAE,IAAI,IAAI,aAAa,GAAG,SAAS;AAAE,QAAO,YAAY,OAAO,IAAI,IAAI,IAAI;;AACtG,SAAS,aAAa,GAAG,GAAG;AAAE,KAAI,YAAY,OAAO,KAAK,CAAC,EAAG,QAAO;CAAG,IAAI,IAAI,EAAE,OAAO;AAAc,KAAI,KAAK,MAAM,GAAG;EAAE,IAAI,IAAI,EAAE,KAAK,GAAG,KAAK,UAAU;AAAE,MAAI,YAAY,OAAO,EAAG,QAAO;AAAG,QAAM,IAAI,UAAU,+CAA+C;;AAAI,SAAQ,aAAa,IAAI,SAAS,QAAQ,EAAE;;AACrT,SAAS,yBAAyB,GAAG,GAAG;AAAE,KAAI,QAAQ,EAAG,QAAO,EAAE;CAAE,IAAI,GAAG,GAAG,IAAI,8BAA8B,GAAG,EAAE;AAAE,KAAI,OAAO,uBAAuB;EAAE,IAAI,IAAI,OAAO,sBAAsB,EAAE;AAAE,OAAK,IAAI,GAAG,IAAI,EAAE,QAAQ,IAAK,KAAI,EAAE,IAAI,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,qBAAqB,KAAK,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;;AAAO,QAAO;;AAClU,SAAS,8BAA8B,GAAG,GAAG;AAAE,KAAI,QAAQ,EAAG,QAAO,EAAE;CAAE,IAAI,IAAI,EAAE;AAAE,MAAK,IAAI,KAAK,EAAG,KAAI,EAAE,CAAC,eAAe,KAAK,GAAG,EAAE,EAAE;AAAE,MAAI,OAAO,EAAE,QAAQ,EAAE,CAAE;AAAU,IAAE,KAAK,EAAE;;AAAM,QAAO;;AAcnM,SAAS,cAAc,OAAO;AAC5B,QAAO,MAAM;;AAEf,SAAS,cAAc,OAAO;CAC5B,IAAI,EACA,mBACE,OACJ,aAAa,yBAAyB,OAAO,UAAU;CACzD,IAAI,eAAe,eAAe,gBAAgB,MAAM,eAAe,cAAc;CACrF,IAAI,eAAe,cAAc,cAAc,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,EAClE,SAAS,cACV,CAAC;AACF,KAAiB,sBAAM,eAAe,MAAM,QAAQ,CAClD,QAAoB,sBAAM,aAAa,MAAM,SAAS,aAAa;AAErE,KAAI,OAAO,MAAM,YAAY,WAC3B,QAAoB,sBAAM,cAAc,MAAM,SAAS,aAAa;AAEtE,QAAoB,sBAAM,cAAc,sBAAsB,aAAa;;AAE7E,SAAS,mBAAmB,OAAO,OAAO,QAAQ,YAAY,aAAa,KAAK;CAC9E,IAAI,EACF,QACA,OACA,kBACE;CACJ,IAAI,MAAM;AACV,KAAI,CAAC,UAAU,MAAM,SAAS,KAAA,KAAa,MAAM,SAAS,UAAU,MAAM,UAAU,KAAA,KAAa,MAAM,UAAU,MAC/G,KAAI,UAAU,YAAY,WAAW,WACnC,QAAO,EACL,QAAQ,cAAc,KAAK,IAAI,SAAS,GACzC;KAED,QAAO,UAAU,UAAU,EACzB,OAAO,UAAU,OAAO,SAAS,GAClC,GAAG,EACF,MAAM,UAAU,OAAO,QAAQ,GAChC;AAGL,KAAI,CAAC,UAAU,MAAM,QAAQ,KAAA,KAAa,MAAM,QAAQ,UAAU,MAAM,WAAW,KAAA,KAAa,MAAM,WAAW,MAC/G,KAAI,kBAAkB,SACpB,QAAO,EACL,OAAO,eAAe,KAAK,IAAI,UAAU,GAC1C;KAED,QAAO,kBAAkB,WAAW,EAClC,QAAQ,UAAU,OAAO,UAAU,GACpC,GAAG,EACF,KAAK,UAAU,OAAO,OAAO,GAC9B;AAGL,QAAO,cAAc,cAAc,EAAE,EAAE,KAAK,EAAE,KAAK;;AAErD,SAAS,yBAAyB,OAAO;CACvC,IAAI,WAAW,gBAAgB;AAC/B,iBAAgB;AACd,WAAS,kBAAkB,MAAM,CAAC;IACjC,CAAC,UAAU,MAAM,CAAC;AACrB,QAAO;;AAET,SAAS,qBAAqB,OAAO;CACnC,IAAI,WAAW,gBAAgB;AAC/B,iBAAgB;AACd,WAAS,cAAc,MAAM,CAAC;AAC9B,eAAa;AACX,YAAS,cAAc;IACrB,OAAO;IACP,QAAQ;IACT,CAAC,CAAC;;IAEJ,CAAC,UAAU,MAAM,CAAC;AACrB,QAAO;;AAET,SAAS,iBAAiB,QAAQ,QAAQ,OAAO,UAAU;AACzD,KAAI,WAAW,cAAc,SAAS,OAAO,CAC3C,QAAO,EACL,QACD;AAEH,KAAI,WAAW,aACb,QAAO,EACL,OAAO,SAAS,UACjB;AAEH,QAAO;;AAET,IAAW,qBAAqB;CAC9B,OAAO;CACP,UAAU;CACV,YAAY;CACZ,QAAQ;CACR,eAAe;CAChB;AACD,SAAgB,OAAO,cAAc;CACnC,IAAI,QAAQ,oBAAoB,cAAc,mBAAmB;CACjE,IAAI,iBAAiB,kBAAkB;CACvC,IAAI,0BAA0B,iBAAiB;CAC/C,IAAI,SAAS,WAAW;CACxB,IAAI,EACF,OAAO,gBACP,QAAQ,iBACR,cACA,QAAQ,oBACN;CAGJ,IAAI,CAAC,iBAAiB,qBAAqB,iBAAiB,CAAC,eAAe,CAAC;CAC7E,IAAI,aAAa,eAAe;CAChC,IAAI,cAAc,gBAAgB;AAClC,KAAI,cAAc,QAAQ,eAAe,KACvC,QAAO;CAET,IAAI,WAAW,eAAe,WAAW,QAAQ,WAAW,KAAK,IAAI,KAAK,IAAI,OAAO,SAAS,OAAO,WAAW,QAAQ,WAAW,KAAK,IAAI,KAAK,IAAI,OAAO,UAAU;CACtK,IAAI,gBAAgB,iBAAiB,MAAM,QAAQ,iBAAiB,gBAAgB,SAAS;CAE7F,IAAI,aAAa,kBAAkB,eAAe,cAAc,cAAc;EAC5E,UAAU;EACV,QAAQ,kBAAkB,QAAQ,kBAAkB,KAAK,IAAI,KAAK,IAAI,cAAc,UAAU,kBAAkB;EAChH,SAAS,kBAAkB,QAAQ,kBAAkB,KAAK,IAAI,KAAK,IAAI,cAAc,WAAW,mBAAmB;EACpH,EAAE,mBAAmB,cAAc,OAAO,QAAQ,YAAY,aAAa,gBAAgB,CAAC,EAAE,aAAa;CAC5G,IAAI,eAAe,oBAAoB,QAAQ,oBAAoB,KAAK,IAAI,kBAAkB;AAC9F,KAAI,gBAAgB,QAAQ,kBAAkB,KAC5C,QAAO;AAoBT,QAAoB,6BAlBa,sBAAM,cAAc,OAAO;EAC1D,WAAW;EACX,OAAO;EACP,KAAK;EACN,EAAe,sBAAM,cAAc,0BAA0B;EAC5D,QAAQ,MAAM;EACd,OAAO,MAAM;EACb,eAAe,MAAM;EACrB,YAAY,MAAM;EACnB,CAAC,EAAE,CAAC,mBAAgC,sBAAM,cAAc,sBAAsB;EAC7E,OAAO,gBAAgB;EACvB,QAAQ,gBAAgB;EACzB,CAAC,EAAe,sBAAM,cAAc,eAAe,SAAS,EAAE,EAAE,OAAO,eAAe;EAC7E;EACI;EACC;EACG;EACjB,CAAC,CAAC,CAAC,EAC4C,aAAa;;AAE/D,OAAO,cAAc;ACvIrB,IAAM,eAAe,MAAM,cAAwC,KAAK;AAExE,SAAS,WAAW;CAClB,MAAM,UAAU,MAAM,WAAW,aAAa;AAE9C,KAAI,CAAC,QACH,OAAM,IAAI,MAAM,oDAAoD;AAGtE,QAAO;;AAYT,IAAM,iBAAiB,MAAM,YAC1B,EAAE,IAAI,WAAW,UAAU,QAAQ,GAAG,SAAS,QAAQ;CACtD,MAAM,WAAW,MAAM,OAAO;CAC9B,MAAM,UAAU,SAAS,MAAM,SAAS,QAAQ,MAAM,GAAG;AAEzD,QACE,oBAAC,aAAa,UAAA;EAAS,OAAO,EAAE,QAAQ;YACtC,qBAAC,OAAA;GACC,cAAY;GACP;GACL,WAAW,GACT,wvBACA,UACD;GACD,GAAI;cAEJ,oBAAC,YAAA;IAAW,IAAI;IAAiB;KAAU,EAC3C,oBAAC,qBAAkB,EAAqB,UAAA,CAAiD,CAAA;IACrF;GACgB;EAG7B;AACD,eAAe,cAAc;AAM7B,IAAM,cAAc,EAAE,IAAI,aAAkD;CAC1E,MAAM,cAAc,OAAO,QAAQ,OAAO,CAAC,QACxC,GAAG,gBAAgB,WAAW,SAAS,WAAW,MACpD;AAED,KAAI,CAAC,YAAY,OACf,QAAO;AAGT,QACE,oBAAC,SAAA,EACC,yBAAyB,EACvB,QAAQ;eACD,GAAG;EAChB,YACC,KAAK,CAAC,KAAK,gBAAgB;EAC1B,MAAM,QAAQ,WAAW,SAAS,WAAW,OAAO;AACpD,SAAO,QAAQ,aAAa,IAAI,IAAI,MAAM,KAAK;GAC/C,CACD,OAAO,QAAQ,CACf,KAAK,KAAK,CAAC;;;oCAGsB,GAAG;qBAClB,GAAG;EACtB,YACC,KAAK,CAAC,KAAK,gBAAgB;EAC1B,MAAM,QAAQ,WAAW,OAAO,QAAQ,WAAW;AACnD,SAAO,QAAQ,aAAa,IAAI,IAAI,MAAM,KAAK;GAC/C,CACD,OAAO,QAAQ,CACf,KAAK,KAAK,CAAC;;GAGP,EAAA,CACD;;AAQN,IAAM,eAAe;AA2BrB,IAAM,sBAAsB,MAAM,YAE9B,EACE,QACA,SACA,WACA,YAAY,OACZ,YAAY,OACZ,gBAAgB,OAChB,OACA,gBACA,gBACA,SACA,UACA,kBAEF,QACG;CACH,MAAM,EAAE,WAAW,UAAU;CAE7B,MAAM,eAAe,MAAM,cAAc;AACvC,MAAI,aAAa,CAAC,SAAS,OACzB,QAAO;EAGT,MAAM,CAAC,QAAQ;EAEf,MAAM,aAAa,4BAA4B,QAAQ,MAD3C,GAAG,YAAY,MAAM,WAAW,MAAM,QAAQ,UACO;EACjE,MAAM,QACJ,CAAC,YAAY,OAAO,UAAU,WAC1B,OAAO,QAA+B,SAAS,QAC/C,YAAY;AAElB,MAAI,kBAAkB,OAAO,UAAU,SACrC,QACE,oBAAC,OAAA;GAAI,WAAW,GAAG,eAAe,eAAe;aAAG,eAAe,OAAO,QAAQ;IAAO;AAI7F,MAAI,CAAC,MACH,QAAO;AAGT,SAAO,oBAAC,OAAA;GAAI,WAAW,GAAG,eAAe,eAAe;aAAG;IAAY;IACtE;EAAC;EAAO;EAAgB;EAAS;EAAW;EAAgB;EAAQ;EAAS,CAAC;AAEjF,KAAI,CAAC,UAAU,CAAC,SAAS,OACvB,QAAO;CAGT,MAAM,YAAY,QAAQ,WAAW,KAAK,cAAc;AAExD,QACE,qBAAC,OAAA;EACM;EACL,WAAW,GACT,8JACA,UACD;aAEA,CAAC,YAAY,eAAe,MAC7B,oBAAC,OAAA;GAAI,WAAU;aACZ,QAAQ,KAAK,MAA0B,UAAkB;IAExD,MAAM,aAAa,4BAA4B,QAAQ,MAD3C,GAAG,WAAW,KAAK,QAAQ,KAAK,WAAW,UACU;IACjE,MAAM,iBAAiB,KAAK,QAAQ,KAAK;AAEzC,WACE,qBAAC,OAAA;KAEC,WAAW,GACT,0GACA,cAAc,SAAS,eACxB;gBAEA,YAAY,OACX,oBAAC,WAAW,MAAA,EAAA,CAAO,GAEnB,CAAC,iBACC,oBAAC,OAAA;MACC,WAAW,GACT,kEACA;OACE,eAAe,cAAc;OAC7B,OAAO,cAAc;OACrB,mDAAmD,cAAc;OACjE,UAAU,aAAa,cAAc;OACtC,CACF;MACD,OACE;OACE,cAAc;OACd,kBAAkB;OACnB;OAEH,EAGN,qBAAC,OAAA;MACC,WAAW,GACT,4CACA,YAAY,cAAc,eAC3B;iBAED,qBAAC,OAAA;OAAI,WAAU;kBACZ,YAAY,eAAe,MAC5B,oBAAC,QAAA;QAAK,WAAU;kBACb,YAAY,SAAS,KAAK;SACtB,CAAA;QACH,EACL,KAAK,UAAU,KAAA,KACd,oBAAC,QAAA;OAAK,WAAU;iBACb,iBAAiB,eAAe,KAAK,MAAM,GAAG,KAAK,MAAM,gBAAgB;QACrE,CAAA;OAEL,CAAA;OA9CD,GAAG,KAAK,QAAQ,GAAG,QA+CpB;KAER;IACE,CAAA;GACF;EAGX;AACD,oBAAoB,cAAc;AAMlC,IAAM,cAAc;AAepB,IAAM,qBAAqB,MAAM,YAC9B,EAAE,WAAW,WAAW,OAAO,SAAS,gBAAgB,UAAU,WAAW,QAAQ;CACpF,MAAM,EAAE,WAAW,UAAU;AAE7B,KAAI,CAAC,SAAS,OACZ,QAAO;AAGT,QACE,oBAAC,OAAA;EACM;EACL,WAAW,GACT,0CACA,kBAAkB,QAAQ,SAAS,QACnC,UACD;YAEA,QAAQ,KAAK,SAA4B;GAExC,MAAM,aAAa,4BAA4B,QAAQ,MAD3C,GAAG,WAAW,KAAK,WAAW,UACuB;AAEjE,UACE,qBAAC,OAAA;IAEC,WAAW,GACT,qFACD;eAEA,YAAY,QAAQ,CAAC,WACpB,oBAAC,WAAW,MAAA,EAAA,CAAO,GAEnB,oBAAC,OAAA;KACC,WAAU;KACV,OAAO,EACL,iBAAiB,KAAK,OACvB;MACD,EAEH,YAAY,MAAA;MAfR,KAAK,MAgBN;IAER;GACE;EAGX;AACD,mBAAmB,cAAc;AAMjC,SAAS,4BAA4B,QAAqB,SAAkB,KAAa;AACvF,KAAI,OAAO,YAAY,YAAY,YAAY,KAC7C;CAGF,MAAM,iBACJ,aAAa,WAAW,OAAO,QAAQ,YAAY,YAAY,QAAQ,YAAY,OAC/E,QAAQ,UACR,KAAA;CAEN,IAAIC,iBAAyB;AAE7B,KAAI,OAAO,OACT,QAAO,OAAO;AAGhB,KAAI,kBAAkB,OAAO,eAC3B,kBAAiB,eAAe;AAGlC,QAAO,kBAAkB,SAAS,OAAO,kBAAkB,OAAO;;ACzWpE,MAAa,gBAAgB,IAAI,2EAA2E;CAC1G,UAAU,EACR,OAAO;EACL,MAAM;EACN,OAAO;EACR,EACF;CACD,iBAAiB,EACf,OAAO,QACR;CACF,CAAC;ACVF,MAAa,mBAAmB,IAC9B,6IACA;CACE,UAAU,EACR,UAAU;EACR,KAAK;EACL,QAAQ;EACR,MAAM;EACN,OAAO;EACR,EACF;CACD,iBAAiB,EACf,UAAU,OACX;CACF,CACF;ACjBD,MAAa,kBAAgB,IAC3B,qOACA;CACE,UAAU,EACR,SAAS;EACP,SAAS;EACT,aACE;EACH,EACF;CACD,iBAAiB,EACf,SAAS,WACV;CACF,CACF;ACdD,MAAa,kBAAgB,IAC3B,oZACA;CACE,UAAU,EACR,SAAS;EACP,SACE;EACF,WACE;EACF,aACE;EACF,SACE;EACH,EACF;CACD,iBAAiB,EACf,SAAS,WACV;CACF,CACF;ACnBD,MAAa,iBAAiB,IAC5B,+bACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,aACE;GACF,SACE;GACF,WACE;GACF,OACE;GACF,MAAM;GACP;EACD,MAAM;GACJ,SAAS;GACT,IAAI;GACJ,IAAI;GACJ,MAAM;GACN,WAAW;GACX,WAAW;GACZ;EACF;CACD,iBAAiB;EACf,SAAS;EACT,MAAM;EACP;CACF,CACF"}
1
+ {"version":3,"file":"index.js","names":["StepperRoot: FC<StepperRootProps>","indicatorStyles: CSSProperties","connectorStyles: CSSProperties","labelStyles: CSSProperties","descriptionStyles: CSSProperties","StepperContent: FC<StepperContentProps>","_extends","ownKeys","r","_objectSpread","_defineProperty","_toPropertyKey","_toPrimitive","r","configLabelKey: string"],"sources":["../src/lib/variants/stepper-glass-variants.ts","../src/components/glass/ui/stepper-glass.tsx","../node_modules/recharts/es6/component/DefaultLegendContent.js","../node_modules/recharts/es6/context/legendPayloadContext.js","../node_modules/recharts/es6/component/Legend.js","../src/components/ui/chart.tsx","../src/lib/variants/dropdown-glass-variants.ts","../src/lib/variants/tooltip-glass-variants.ts","../src/lib/variants/alert-variants.ts","../src/lib/variants/badge-variants.ts","../src/lib/variants/button-variants.ts"],"sourcesContent":["/**\n * StepperGlass CVA Variants\n *\n * Type-safe variant definitions for the StepperGlass compound component.\n * Extracted for Fast Refresh compatibility and reusability.\n *\n * @module stepper-glass-variants\n */\n\nimport { cva } from 'class-variance-authority';\n\n// ========================================\n// TYPE DEFINITIONS\n// ========================================\n\nexport type StepperOrientation = 'horizontal' | 'vertical';\nexport type StepperVariant = 'numbered' | 'icon' | 'dots';\nexport type StepperSize = 'sm' | 'md' | 'lg';\nexport type StepStatus = 'pending' | 'active' | 'completed' | 'disabled';\n\n// ========================================\n// ROOT VARIANTS\n// ========================================\n\nexport const stepperRootVariants = cva('flex w-full', {\n variants: {\n orientation: {\n horizontal: 'flex-col',\n vertical: 'flex-col',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n});\n\n// ========================================\n// LIST VARIANTS\n// ========================================\n\nexport const stepperListVariants = cva('flex', {\n variants: {\n orientation: {\n horizontal: 'flex-row items-center w-full',\n vertical: 'flex-col gap-0',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n});\n\n// ========================================\n// STEP CONTAINER VARIANTS\n// ========================================\n\nexport const stepperStepContainerVariants = cva('relative flex transition-all duration-300', {\n variants: {\n orientation: {\n horizontal: 'flex-col items-center flex-1',\n vertical: 'flex-row items-start gap-3',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n});\n\n// ========================================\n// STEP INDICATOR VARIANTS\n// ========================================\n\nexport const stepperIndicatorVariants = cva(\n 'relative flex items-center justify-center rounded-full font-medium transition-all duration-300 shrink-0',\n {\n variants: {\n size: {\n sm: 'w-8 h-8 text-xs',\n md: 'w-10 h-10 text-sm',\n lg: 'w-12 h-12 text-base',\n },\n variant: {\n numbered: '',\n icon: '',\n dots: '',\n },\n },\n defaultVariants: {\n size: 'md',\n variant: 'numbered',\n },\n compoundVariants: [\n // Dots variant has smaller indicators\n { variant: 'dots', size: 'sm', className: '!w-2.5 !h-2.5' },\n { variant: 'dots', size: 'md', className: '!w-3 !h-3' },\n { variant: 'dots', size: 'lg', className: '!w-4 !h-4' },\n ],\n }\n);\n\n// ========================================\n// CONNECTOR VARIANTS\n// ========================================\n\nexport const stepperConnectorVariants = cva('transition-all duration-500 ease-out', {\n variants: {\n orientation: {\n horizontal: 'h-0.5 flex-1 mx-2 md:mx-3',\n vertical: 'w-0.5 min-h-6 ml-5 my-1',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n});\n\n// ========================================\n// LABEL VARIANTS\n// ========================================\n\nexport const stepperLabelVariants = cva(\n 'font-medium transition-colors duration-300 whitespace-nowrap',\n {\n variants: {\n size: {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base',\n },\n orientation: {\n horizontal: 'mt-2 text-center',\n vertical: '',\n },\n },\n defaultVariants: {\n size: 'md',\n orientation: 'horizontal',\n },\n }\n);\n\n// ========================================\n// DESCRIPTION VARIANTS\n// ========================================\n\nexport const stepperDescriptionVariants = cva('transition-colors duration-300', {\n variants: {\n size: {\n sm: 'text-[10px]',\n md: 'text-xs',\n lg: 'text-sm',\n },\n orientation: {\n horizontal: 'text-center max-w-[100px] md:max-w-[120px]',\n vertical: 'max-w-[200px]',\n },\n },\n defaultVariants: {\n size: 'md',\n orientation: 'horizontal',\n },\n});\n\n// ========================================\n// CONTENT VARIANTS\n// ========================================\n\nexport const stepperContentVariants = cva('animate-in fade-in-0 duration-200', {\n variants: {\n orientation: {\n horizontal: 'mt-6',\n vertical: 'mt-4',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n});\n","/* eslint-disable react-refresh/only-export-components */\n/**\n * StepperGlass Component (Compound API)\n *\n * Glass-themed step indicator with:\n * - Theme-aware styling (glass/light/aurora)\n * - Horizontal and vertical orientations\n * - Numbered, icon, and dots variants\n * - Linear mode (lock future steps)\n * - Animated connector lines\n * - Compound component API for advanced composition\n *\n * @example\n * ```tsx\n * <StepperGlass.Root value=\"step2\" onValueChange={setStep}>\n * <StepperGlass.List>\n * <StepperGlass.Step value=\"step1\" label=\"Account\" description=\"Create your account\" />\n * <StepperGlass.Step value=\"step2\" label=\"Profile\" description=\"Setup your profile\" />\n * <StepperGlass.Step value=\"step3\" label=\"Complete\" description=\"Finish setup\" />\n * </StepperGlass.List>\n * <StepperGlass.Content value=\"step1\">Step 1 content</StepperGlass.Content>\n * <StepperGlass.Content value=\"step2\">Step 2 content</StepperGlass.Content>\n * <StepperGlass.Content value=\"step3\">Step 3 content</StepperGlass.Content>\n * </StepperGlass.Root>\n * ```\n *\n * @accessibility\n * - **Keyboard Navigation:** Arrow keys navigate between steps (WCAG 2.1.1)\n * - **Focus Management:** Visible focus ring using `--focus-glow` (WCAG 2.4.7)\n * - **Screen Readers:** Uses `role=\"tablist\"`, `role=\"tab\"` (WCAG 4.1.3)\n * - **ARIA Attributes:** `aria-current=\"step\"`, `aria-disabled` for state\n * - **Touch Targets:** 44x44px minimum touch targets (WCAG 2.5.5)\n * - **Color Contrast:** All states meet WCAG AA 4.5:1 ratio\n * - **Motion:** Respects `prefers-reduced-motion`\n */\n\nimport {\n forwardRef,\n createContext,\n useContext,\n useMemo,\n useState,\n useCallback,\n useLayoutEffect,\n type CSSProperties,\n type FC,\n type ReactNode,\n} from 'react';\nimport { cn } from '@/lib/utils';\nimport { useFocus } from '@/lib/hooks/use-focus';\nimport { Check } from 'lucide-react';\nimport {\n stepperRootVariants,\n stepperListVariants,\n stepperStepContainerVariants,\n stepperIndicatorVariants,\n stepperConnectorVariants,\n stepperLabelVariants,\n stepperDescriptionVariants,\n stepperContentVariants,\n type StepperOrientation,\n type StepperVariant,\n type StepperSize,\n type StepStatus,\n} from '@/lib/variants/stepper-glass-variants';\nimport '@/glass-theme.css';\n\n// ========================================\n// CONTEXT\n// ========================================\n\ninterface StepperContextValue {\n value: string;\n onValueChange?: (value: string) => void;\n orientation: StepperOrientation;\n variant: StepperVariant;\n size: StepperSize;\n linear: boolean;\n steps: string[];\n registerStep: (value: string, index: number) => void;\n unregisterStep: (value: string) => void;\n}\n\nconst StepperContext = createContext<StepperContextValue | null>(null);\n\nconst useStepperContext = () => {\n const context = useContext(StepperContext);\n if (!context) {\n throw new Error('Stepper compound components must be used within StepperGlass.Root');\n }\n return context;\n};\n\n// ========================================\n// UTILITY: GET STEP STATUS\n// ========================================\n\nfunction getStepStatus(\n stepValue: string,\n currentValue: string,\n steps: string[],\n linear: boolean,\n disabled?: boolean\n): StepStatus {\n if (disabled) return 'disabled';\n\n const stepIndex = steps.indexOf(stepValue);\n const currentIndex = steps.indexOf(currentValue);\n\n if (stepIndex === -1 || currentIndex === -1) return 'pending';\n if (stepIndex === currentIndex) return 'active';\n if (stepIndex < currentIndex) return 'completed';\n if (linear && stepIndex > currentIndex) return 'disabled';\n return 'pending';\n}\n\n// ========================================\n// ROOT COMPONENT\n// ========================================\n\ninterface StepperRootProps {\n /** Current active step value */\n value: string;\n /** Callback when step value changes */\n onValueChange?: (value: string) => void;\n /** Orientation of the stepper */\n orientation?: StepperOrientation;\n /** Visual variant */\n variant?: StepperVariant;\n /** Size of step indicators */\n size?: StepperSize;\n /** Lock future steps (require sequential completion) */\n linear?: boolean;\n /** Child components */\n children: ReactNode;\n /** Optional className */\n className?: string;\n}\n\nconst StepperRoot: FC<StepperRootProps> = ({\n value,\n onValueChange,\n orientation = 'horizontal',\n variant = 'numbered',\n size = 'md',\n linear = false,\n children,\n className,\n}) => {\n const [steps, setSteps] = useState<string[]>([]);\n\n const registerStep = useCallback((stepValue: string, index: number) => {\n setSteps((prev) => {\n if (prev.includes(stepValue)) return prev;\n const newSteps = [...prev];\n // Insert at correct position to maintain order\n newSteps.splice(index, 0, stepValue);\n return newSteps;\n });\n }, []);\n\n const unregisterStep = useCallback((stepValue: string) => {\n setSteps((prev) => prev.filter((s) => s !== stepValue));\n }, []);\n\n const contextValue = useMemo(\n () => ({\n value,\n onValueChange,\n orientation,\n variant,\n size,\n linear,\n steps,\n registerStep,\n unregisterStep,\n }),\n [value, onValueChange, orientation, variant, size, linear, steps, registerStep, unregisterStep]\n );\n\n return (\n <StepperContext.Provider value={contextValue}>\n <div\n className={cn(stepperRootVariants({ orientation }), className)}\n aria-label=\"Progress steps\"\n >\n {children}\n </div>\n </StepperContext.Provider>\n );\n};\n\n// ========================================\n// LIST COMPONENT\n// ========================================\n\ninterface StepperListProps extends React.HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n className?: string;\n}\n\nconst StepperList = forwardRef<HTMLDivElement, StepperListProps>(\n ({ children, className, ...props }, ref) => {\n const { orientation } = useStepperContext();\n\n return (\n <div\n ref={ref}\n role=\"tablist\"\n aria-orientation={orientation}\n className={cn(stepperListVariants({ orientation }), className)}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nStepperList.displayName = 'StepperList';\n\n// ========================================\n// STEP COMPONENT\n// ========================================\n\ninterface StepperStepProps {\n /** Unique value for this step */\n value: string;\n /** Step label (required for accessibility) */\n label: string;\n /** Optional description */\n description?: string;\n /** Custom icon (for icon variant) */\n icon?: ReactNode;\n /** Completed icon override */\n completedIcon?: ReactNode;\n /** Force disabled state */\n disabled?: boolean;\n /** Optional className */\n className?: string;\n /** Step index for ordering (auto-detected) */\n index?: number;\n}\n\nconst StepperStep = forwardRef<HTMLButtonElement, StepperStepProps>(\n (\n {\n value: stepValue,\n label,\n description,\n icon,\n completedIcon,\n disabled: forcedDisabled,\n className,\n index: providedIndex,\n },\n ref\n ) => {\n const {\n value: currentValue,\n onValueChange,\n orientation,\n variant,\n size,\n linear,\n steps,\n registerStep,\n unregisterStep,\n } = useStepperContext();\n\n const { isFocusVisible, focusProps } = useFocus({ focusVisible: true });\n\n // Track mount order for step registration\n const [mountIndex] = useState(() => providedIndex ?? Date.now());\n\n // Register step on mount\n // Use useLayoutEffect to register before paint\n useLayoutEffect(() => {\n registerStep(stepValue, mountIndex);\n return () => unregisterStep(stepValue);\n }, [stepValue, mountIndex, registerStep, unregisterStep]);\n\n const status = getStepStatus(stepValue, currentValue, steps, linear, forcedDisabled);\n const stepIndex = steps.indexOf(stepValue);\n const isLast = stepIndex === steps.length - 1;\n const isClickable = status !== 'disabled';\n\n // Styles based on status\n const indicatorStyles: CSSProperties = {\n background:\n status === 'completed'\n ? 'var(--stepper-step-completed-bg)'\n : status === 'active'\n ? 'var(--stepper-step-active-bg)'\n : status === 'disabled'\n ? 'var(--stepper-step-disabled-bg)'\n : 'var(--stepper-step-bg)',\n border: `2px solid ${\n status === 'completed'\n ? 'var(--stepper-step-completed-border)'\n : status === 'active'\n ? 'var(--stepper-step-active-border)'\n : status === 'disabled'\n ? 'var(--stepper-step-disabled-border)'\n : 'var(--stepper-step-border)'\n }`,\n color:\n status === 'completed'\n ? 'var(--stepper-step-completed-text)'\n : status === 'active'\n ? 'var(--stepper-step-active-text)'\n : status === 'disabled'\n ? 'var(--stepper-step-disabled-text)'\n : 'var(--stepper-step-text)',\n boxShadow:\n status === 'active'\n ? 'var(--stepper-step-active-glow)'\n : status === 'completed'\n ? 'var(--stepper-step-glow)'\n : isFocusVisible\n ? 'var(--focus-glow)'\n : 'none',\n backdropFilter: 'blur(var(--blur-sm))',\n };\n\n const connectorStyles: CSSProperties = {\n background:\n stepIndex < steps.indexOf(currentValue)\n ? 'var(--stepper-connector-active-bg)'\n : 'var(--stepper-connector-bg)',\n };\n\n const labelStyles: CSSProperties = {\n color:\n status === 'active' || status === 'completed'\n ? 'var(--stepper-label-text)'\n : 'var(--stepper-description-text)',\n };\n\n const descriptionStyles: CSSProperties = {\n color: 'var(--stepper-description-text)',\n };\n\n // Render indicator content\n const renderIndicatorContent = () => {\n if (status === 'completed') {\n if (completedIcon) return completedIcon;\n return <Check className=\"w-4 h-4\" />;\n }\n if (variant === 'icon' && icon) return icon;\n if (variant === 'dots') return null;\n // Numbered variant\n return stepIndex >= 0 ? stepIndex + 1 : '';\n };\n\n const handleClick = () => {\n if (isClickable && onValueChange) {\n onValueChange(stepValue);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (!isClickable) return;\n\n const stepList = e.currentTarget.closest('[role=\"tablist\"]');\n if (!stepList) return;\n\n const allSteps = Array.from(\n stepList.querySelectorAll('[role=\"tab\"]:not([aria-disabled=\"true\"])')\n ) as HTMLButtonElement[];\n const currentIdx = allSteps.indexOf(e.currentTarget as HTMLButtonElement);\n\n let nextIdx = currentIdx;\n const isHorizontal = orientation === 'horizontal';\n\n switch (e.key) {\n case isHorizontal ? 'ArrowRight' : 'ArrowDown':\n e.preventDefault();\n nextIdx = (currentIdx + 1) % allSteps.length;\n break;\n case isHorizontal ? 'ArrowLeft' : 'ArrowUp':\n e.preventDefault();\n nextIdx = currentIdx - 1 < 0 ? allSteps.length - 1 : currentIdx - 1;\n break;\n case 'Home':\n e.preventDefault();\n nextIdx = 0;\n break;\n case 'End':\n e.preventDefault();\n nextIdx = allSteps.length - 1;\n break;\n default:\n return;\n }\n\n const nextStep = allSteps[nextIdx];\n if (nextStep) {\n nextStep.focus();\n const nextValue = nextStep.getAttribute('data-value');\n if (nextValue && onValueChange) {\n onValueChange(nextValue);\n }\n }\n };\n\n // For horizontal, we need step + connector inline\n // For vertical, step is a row with connector below\n if (orientation === 'horizontal') {\n return (\n <>\n <div className={cn(stepperStepContainerVariants({ orientation }), className)}>\n <button\n ref={ref}\n type=\"button\"\n role=\"tab\"\n aria-selected={status === 'active'}\n aria-disabled={!isClickable}\n aria-current={status === 'active' ? 'step' : undefined}\n data-value={stepValue}\n data-status={status}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n onFocus={focusProps.onFocus}\n onBlur={focusProps.onBlur}\n disabled={!isClickable}\n className={cn(\n stepperIndicatorVariants({ size, variant }),\n !isClickable && 'cursor-not-allowed opacity-60',\n isClickable && 'cursor-pointer hover:scale-105',\n // Ensure minimum touch target\n 'min-w-[44px] min-h-[44px]'\n )}\n style={indicatorStyles}\n >\n {renderIndicatorContent()}\n </button>\n\n {label && (\n <div className=\"flex flex-col items-center\">\n <span\n className={cn(stepperLabelVariants({ size, orientation }))}\n style={labelStyles}\n >\n {label}\n </span>\n {description && (\n <span\n className={cn(stepperDescriptionVariants({ size, orientation }))}\n style={descriptionStyles}\n >\n {description}\n </span>\n )}\n </div>\n )}\n </div>\n\n {/* Connector line between steps */}\n {!isLast && (\n <div\n className={cn(stepperConnectorVariants({ orientation }))}\n style={connectorStyles}\n aria-hidden=\"true\"\n />\n )}\n </>\n );\n }\n\n // Vertical orientation\n return (\n <div className=\"flex flex-col\">\n <div className={cn(stepperStepContainerVariants({ orientation }), className)}>\n <button\n ref={ref}\n type=\"button\"\n role=\"tab\"\n aria-selected={status === 'active'}\n aria-disabled={!isClickable}\n aria-current={status === 'active' ? 'step' : undefined}\n data-value={stepValue}\n data-status={status}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n onFocus={focusProps.onFocus}\n onBlur={focusProps.onBlur}\n disabled={!isClickable}\n className={cn(\n stepperIndicatorVariants({ size, variant }),\n !isClickable && 'cursor-not-allowed opacity-60',\n isClickable && 'cursor-pointer hover:scale-105',\n 'min-w-[44px] min-h-[44px]'\n )}\n style={indicatorStyles}\n >\n {renderIndicatorContent()}\n </button>\n\n {label && (\n <div className=\"flex flex-col justify-center\">\n <span className={cn(stepperLabelVariants({ size, orientation }))} style={labelStyles}>\n {label}\n </span>\n {description && (\n <span\n className={cn(stepperDescriptionVariants({ size, orientation }))}\n style={descriptionStyles}\n >\n {description}\n </span>\n )}\n </div>\n )}\n </div>\n\n {/* Vertical connector */}\n {!isLast && (\n <div\n className={cn(stepperConnectorVariants({ orientation }))}\n style={connectorStyles}\n aria-hidden=\"true\"\n />\n )}\n </div>\n );\n }\n);\n\nStepperStep.displayName = 'StepperStep';\n\n// ========================================\n// CONTENT COMPONENT\n// ========================================\n\ninterface StepperContentProps {\n /** Value of the step this content belongs to */\n value: string;\n /** Content to display when step is active */\n children: ReactNode;\n /** Optional className */\n className?: string;\n}\n\nconst StepperContent: FC<StepperContentProps> = ({ value, children, className }) => {\n const { value: currentValue, orientation } = useStepperContext();\n const isActive = currentValue === value;\n\n if (!isActive) return null;\n\n return (\n <div\n role=\"tabpanel\"\n aria-hidden={!isActive}\n className={cn(stepperContentVariants({ orientation }), className)}\n >\n {children}\n </div>\n );\n};\n\n// ========================================\n// EXPORT COMPOUND COMPONENT\n// ========================================\n\nexport const StepperGlass = {\n Root: StepperRoot,\n List: StepperList,\n Step: StepperStep,\n Content: StepperContent,\n};\n\n// Also export individual components for flexibility\nexport { StepperRoot, StepperList, StepperStep, StepperContent };\n\n// Re-export types\nexport type {\n StepperRootProps,\n StepperListProps,\n StepperStepProps,\n StepperContentProps,\n StepperOrientation,\n StepperVariant,\n StepperSize,\n StepStatus,\n};\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Default Legend Content\n */\nimport * as React from 'react';\nimport { clsx } from 'clsx';\nimport { Surface } from '../container/Surface';\nimport { Symbols } from '../shape/Symbols';\nimport { adaptEventsOfChild } from '../util/types';\nimport { resolveDefaultProps } from '../util/resolveDefaultProps';\nvar SIZE = 32;\nvar defaultLegendContentDefaultProps = {\n align: 'center',\n iconSize: 14,\n inactiveColor: '#ccc',\n layout: 'horizontal',\n verticalAlign: 'middle'\n};\nfunction Icon(_ref) {\n var {\n data,\n iconType,\n inactiveColor\n } = _ref;\n var halfSize = SIZE / 2;\n var sixthSize = SIZE / 6;\n var thirdSize = SIZE / 3;\n var color = data.inactive ? inactiveColor : data.color;\n var preferredIcon = iconType !== null && iconType !== void 0 ? iconType : data.type;\n if (preferredIcon === 'none') {\n return null;\n }\n if (preferredIcon === 'plainline') {\n var _data$payload;\n return /*#__PURE__*/React.createElement(\"line\", {\n strokeWidth: 4,\n fill: \"none\",\n stroke: color,\n strokeDasharray: (_data$payload = data.payload) === null || _data$payload === void 0 ? void 0 : _data$payload.strokeDasharray,\n x1: 0,\n y1: halfSize,\n x2: SIZE,\n y2: halfSize,\n className: \"recharts-legend-icon\"\n });\n }\n if (preferredIcon === 'line') {\n return /*#__PURE__*/React.createElement(\"path\", {\n strokeWidth: 4,\n fill: \"none\",\n stroke: color,\n d: \"M0,\".concat(halfSize, \"h\").concat(thirdSize, \"\\n A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n H\").concat(SIZE, \"M\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(thirdSize, \",\").concat(halfSize),\n className: \"recharts-legend-icon\"\n });\n }\n if (preferredIcon === 'rect') {\n return /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n fill: color,\n d: \"M0,\".concat(SIZE / 8, \"h\").concat(SIZE, \"v\").concat(SIZE * 3 / 4, \"h\").concat(-SIZE, \"z\"),\n className: \"recharts-legend-icon\"\n });\n }\n if (/*#__PURE__*/React.isValidElement(data.legendIcon)) {\n var iconProps = _objectSpread({}, data);\n delete iconProps.legendIcon;\n return /*#__PURE__*/React.cloneElement(data.legendIcon, iconProps);\n }\n return /*#__PURE__*/React.createElement(Symbols, {\n fill: color,\n cx: halfSize,\n cy: halfSize,\n size: SIZE,\n sizeType: \"diameter\",\n type: preferredIcon\n });\n}\nfunction Items(props) {\n var {\n payload,\n iconSize,\n layout,\n formatter,\n inactiveColor,\n iconType\n } = props;\n var viewBox = {\n x: 0,\n y: 0,\n width: SIZE,\n height: SIZE\n };\n var itemStyle = {\n display: layout === 'horizontal' ? 'inline-block' : 'block',\n marginRight: 10\n };\n var svgStyle = {\n display: 'inline-block',\n verticalAlign: 'middle',\n marginRight: 4\n };\n return payload.map((entry, i) => {\n var finalFormatter = entry.formatter || formatter;\n var className = clsx({\n 'recharts-legend-item': true,\n [\"legend-item-\".concat(i)]: true,\n inactive: entry.inactive\n });\n if (entry.type === 'none') {\n return null;\n }\n var color = entry.inactive ? inactiveColor : entry.color;\n var finalValue = finalFormatter ? finalFormatter(entry.value, entry, i) : entry.value;\n return /*#__PURE__*/React.createElement(\"li\", _extends({\n className: className,\n style: itemStyle,\n key: \"legend-item-\".concat(i)\n }, adaptEventsOfChild(props, entry, i)), /*#__PURE__*/React.createElement(Surface, {\n width: iconSize,\n height: iconSize,\n viewBox: viewBox,\n style: svgStyle,\n \"aria-label\": \"\".concat(finalValue, \" legend icon\")\n }, /*#__PURE__*/React.createElement(Icon, {\n data: entry,\n iconType: iconType,\n inactiveColor: inactiveColor\n })), /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-legend-item-text\",\n style: {\n color\n }\n }, finalValue));\n });\n}\nexport var DefaultLegendContent = outsideProps => {\n var props = resolveDefaultProps(outsideProps, defaultLegendContentDefaultProps);\n var {\n payload,\n layout,\n align\n } = props;\n if (!payload || !payload.length) {\n return null;\n }\n var finalStyle = {\n padding: 0,\n margin: 0,\n textAlign: layout === 'horizontal' ? align : 'left'\n };\n return /*#__PURE__*/React.createElement(\"ul\", {\n className: \"recharts-default-legend\",\n style: finalStyle\n }, /*#__PURE__*/React.createElement(Items, _extends({}, props, {\n payload: payload\n })));\n};","import { useAppSelector } from '../state/hooks';\nimport { selectLegendPayload } from '../state/selectors/legendSelectors';\n\n/**\n * Use this hook in Legend, or anywhere else where you want to read the current Legend items.\n * @return all Legend items ready to be rendered\n */\nexport function useLegendPayload() {\n return useAppSelector(selectLegendPayload);\n}","var _excluded = [\"contextPayload\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from 'react';\nimport { useEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useLegendPortal } from '../context/legendPortalContext';\nimport { DefaultLegendContent } from './DefaultLegendContent';\nimport { isNumber } from '../util/DataUtils';\nimport { getUniqPayload } from '../util/payload/getUniqPayload';\nimport { useLegendPayload } from '../context/legendPayloadContext';\nimport { useElementOffset } from '../util/useElementOffset';\nimport { useChartHeight, useChartWidth, useMargin } from '../context/chartLayoutContext';\nimport { setLegendSettings, setLegendSize } from '../state/legendSlice';\nimport { useAppDispatch } from '../state/hooks';\nimport { resolveDefaultProps } from '../util/resolveDefaultProps';\nfunction defaultUniqBy(entry) {\n return entry.value;\n}\nfunction LegendContent(props) {\n var {\n contextPayload\n } = props,\n otherProps = _objectWithoutProperties(props, _excluded);\n var finalPayload = getUniqPayload(contextPayload, props.payloadUniqBy, defaultUniqBy);\n var contentProps = _objectSpread(_objectSpread({}, otherProps), {}, {\n payload: finalPayload\n });\n if (/*#__PURE__*/React.isValidElement(props.content)) {\n return /*#__PURE__*/React.cloneElement(props.content, contentProps);\n }\n if (typeof props.content === 'function') {\n return /*#__PURE__*/React.createElement(props.content, contentProps);\n }\n return /*#__PURE__*/React.createElement(DefaultLegendContent, contentProps);\n}\nfunction getDefaultPosition(style, props, margin, chartWidth, chartHeight, box) {\n var {\n layout,\n align,\n verticalAlign\n } = props;\n var hPos, vPos;\n if (!style || (style.left === undefined || style.left === null) && (style.right === undefined || style.right === null)) {\n if (align === 'center' && layout === 'vertical') {\n hPos = {\n left: ((chartWidth || 0) - box.width) / 2\n };\n } else {\n hPos = align === 'right' ? {\n right: margin && margin.right || 0\n } : {\n left: margin && margin.left || 0\n };\n }\n }\n if (!style || (style.top === undefined || style.top === null) && (style.bottom === undefined || style.bottom === null)) {\n if (verticalAlign === 'middle') {\n vPos = {\n top: ((chartHeight || 0) - box.height) / 2\n };\n } else {\n vPos = verticalAlign === 'bottom' ? {\n bottom: margin && margin.bottom || 0\n } : {\n top: margin && margin.top || 0\n };\n }\n }\n return _objectSpread(_objectSpread({}, hPos), vPos);\n}\nfunction LegendSettingsDispatcher(props) {\n var dispatch = useAppDispatch();\n useEffect(() => {\n dispatch(setLegendSettings(props));\n }, [dispatch, props]);\n return null;\n}\nfunction LegendSizeDispatcher(props) {\n var dispatch = useAppDispatch();\n useEffect(() => {\n dispatch(setLegendSize(props));\n return () => {\n dispatch(setLegendSize({\n width: 0,\n height: 0\n }));\n };\n }, [dispatch, props]);\n return null;\n}\nfunction getWidthOrHeight(layout, height, width, maxWidth) {\n if (layout === 'vertical' && isNumber(height)) {\n return {\n height\n };\n }\n if (layout === 'horizontal') {\n return {\n width: width || maxWidth\n };\n }\n return null;\n}\nexport var legendDefaultProps = {\n align: 'center',\n iconSize: 14,\n itemSorter: 'value',\n layout: 'horizontal',\n verticalAlign: 'bottom'\n};\nexport function Legend(outsideProps) {\n var props = resolveDefaultProps(outsideProps, legendDefaultProps);\n var contextPayload = useLegendPayload();\n var legendPortalFromContext = useLegendPortal();\n var margin = useMargin();\n var {\n width: widthFromProps,\n height: heightFromProps,\n wrapperStyle,\n portal: portalFromProps\n } = props;\n // The contextPayload is not used directly inside the hook, but we need the onBBoxUpdate call\n // when the payload changes, therefore it's here as a dependency.\n var [lastBoundingBox, updateBoundingBox] = useElementOffset([contextPayload]);\n var chartWidth = useChartWidth();\n var chartHeight = useChartHeight();\n if (chartWidth == null || chartHeight == null) {\n return null;\n }\n var maxWidth = chartWidth - ((margin === null || margin === void 0 ? void 0 : margin.left) || 0) - ((margin === null || margin === void 0 ? void 0 : margin.right) || 0);\n var widthOrHeight = getWidthOrHeight(props.layout, heightFromProps, widthFromProps, maxWidth);\n // if the user supplies their own portal, only use their defined wrapper styles\n var outerStyle = portalFromProps ? wrapperStyle : _objectSpread(_objectSpread({\n position: 'absolute',\n width: (widthOrHeight === null || widthOrHeight === void 0 ? void 0 : widthOrHeight.width) || widthFromProps || 'auto',\n height: (widthOrHeight === null || widthOrHeight === void 0 ? void 0 : widthOrHeight.height) || heightFromProps || 'auto'\n }, getDefaultPosition(wrapperStyle, props, margin, chartWidth, chartHeight, lastBoundingBox)), wrapperStyle);\n var legendPortal = portalFromProps !== null && portalFromProps !== void 0 ? portalFromProps : legendPortalFromContext;\n if (legendPortal == null || contextPayload == null) {\n return null;\n }\n var legendElement = /*#__PURE__*/React.createElement(\"div\", {\n className: \"recharts-legend-wrapper\",\n style: outerStyle,\n ref: updateBoundingBox\n }, /*#__PURE__*/React.createElement(LegendSettingsDispatcher, {\n layout: props.layout,\n align: props.align,\n verticalAlign: props.verticalAlign,\n itemSorter: props.itemSorter\n }), !portalFromProps && /*#__PURE__*/React.createElement(LegendSizeDispatcher, {\n width: lastBoundingBox.width,\n height: lastBoundingBox.height\n }), /*#__PURE__*/React.createElement(LegendContent, _extends({}, props, widthOrHeight, {\n margin: margin,\n chartWidth: chartWidth,\n chartHeight: chartHeight,\n contextPayload: contextPayload\n })));\n return /*#__PURE__*/createPortal(legendElement, legendPortal);\n}\nLegend.displayName = 'Legend';","/* eslint-disable react-refresh/only-export-components */\n// ========================================\n// CHART COMPONENTS (shadcn/ui pattern)\n// Base chart utilities following shadcn/ui Charts API\n// ========================================\n\nimport * as React from 'react';\nimport * as RechartsPrimitive from 'recharts';\n\nimport { cn } from '@/lib/utils';\n\n// ========================================\n// CHART CONFIG TYPE\n// ========================================\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode;\n icon?: React.ComponentType;\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: { light: string; dark: string } }\n );\n};\n\n// ========================================\n// CHART CONTEXT\n// ========================================\n\ntype ChartContextProps = {\n config: ChartConfig;\n};\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\n\nfunction useChart() {\n const context = React.useContext(ChartContext);\n\n if (!context) {\n throw new Error('useChart must be used within a <ChartContainer />');\n }\n\n return context;\n}\n\n// ========================================\n// CHART CONTAINER\n// ========================================\n\ninterface ChartContainerProps\n extends React.ComponentProps<'div'>, Pick<ChartContextProps, 'config'> {\n children: React.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>['children'];\n}\n\nconst ChartContainer = React.forwardRef<HTMLDivElement, ChartContainerProps>(\n ({ id, className, children, config, ...props }, ref) => {\n const uniqueId = React.useId();\n const chartId = `chart-${id || uniqueId.replace(/:/g, '')}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-chart={chartId}\n ref={ref}\n className={cn(\n \"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-[var(--text-muted)] [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-[var(--glass-border)] [&_.recharts-curve.recharts-tooltip-cursor]:stroke-[var(--glass-border)] [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-[var(--glass-border)] [&_.recharts-radial-bar-background-sector]:fill-[var(--glass-frost-5)] [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-[var(--glass-frost-10)] [&_.recharts-reference-line_[stroke='#ccc']]:stroke-[var(--glass-border)] [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none\",\n className\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>{children}</RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n );\n }\n);\nChartContainer.displayName = 'ChartContainer';\n\n// ========================================\n// CHART STYLE (CSS Variables injection)\n// ========================================\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, itemConfig]) => itemConfig.color || itemConfig.theme\n );\n\n if (!colorConfig.length) {\n return null;\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: `\n[data-chart=\"${id}\"] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color = itemConfig.color || itemConfig.theme?.light;\n return color ? ` --color-${key}: ${color};` : null;\n })\n .filter(Boolean)\n .join('\\n')}\n}\n\n[data-theme=\"glass\"] [data-chart=\"${id}\"],\n.dark [data-chart=\"${id}\"] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color = itemConfig.theme?.dark || itemConfig.color;\n return color ? ` --color-${key}: ${color};` : null;\n })\n .filter(Boolean)\n .join('\\n')}\n}\n`,\n }}\n />\n );\n};\n\n// ========================================\n// CHART TOOLTIP\n// ========================================\n\nconst ChartTooltip = RechartsPrimitive.Tooltip;\n\ninterface TooltipPayloadItem {\n dataKey?: string | number;\n name?: string;\n value?: number;\n color?: string;\n payload?: Record<string, unknown>;\n fill?: string;\n type?: string;\n}\n\ninterface ChartTooltipContentProps {\n active?: boolean;\n payload?: TooltipPayloadItem[];\n label?: string;\n className?: string;\n labelClassName?: string;\n hideLabel?: boolean;\n hideIndicator?: boolean;\n indicator?: 'line' | 'dot' | 'dashed';\n nameKey?: string;\n labelKey?: string;\n labelFormatter?: (label: string, payload: TooltipPayloadItem[]) => React.ReactNode;\n valueFormatter?: (value: number) => string;\n}\n\nconst ChartTooltipContent = React.forwardRef<HTMLDivElement, ChartTooltipContentProps>(\n (\n {\n active,\n payload,\n className,\n indicator = 'dot',\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n nameKey,\n labelKey,\n valueFormatter,\n },\n ref\n ) => {\n const { config } = useChart();\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null;\n }\n\n const [item] = payload;\n const key = `${labelKey || item?.dataKey || item?.name || 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value =\n !labelKey && typeof label === 'string'\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label;\n\n if (labelFormatter && typeof label === 'string') {\n return (\n <div className={cn('font-medium', labelClassName)}>{labelFormatter(label, payload)}</div>\n );\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn('font-medium', labelClassName)}>{value}</div>;\n }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);\n\n if (!active || !payload?.length) {\n return null;\n }\n\n const nestLabel = payload.length === 1 && indicator !== 'dot';\n\n return (\n <div\n ref={ref}\n className={cn(\n 'grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-[var(--glass-border)] bg-[var(--glass-bg)] px-2.5 py-1.5 text-xs shadow-xl backdrop-blur-md',\n className\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.map((item: TooltipPayloadItem, index: number) => {\n const key = `${nameKey || item.name || item.dataKey || 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const indicatorColor = item.fill || item.color;\n\n return (\n <div\n key={`${item.dataKey}-${index}`}\n className={cn(\n 'flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-[var(--text-muted)]',\n indicator === 'dot' && 'items-center'\n )}\n >\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n 'shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]',\n {\n 'h-2.5 w-2.5': indicator === 'dot',\n 'w-1': indicator === 'line',\n 'w-0 border-[1.5px] border-dashed bg-transparent': indicator === 'dashed',\n 'my-0.5': nestLabel && indicator === 'dashed',\n }\n )}\n style={\n {\n '--color-bg': indicatorColor,\n '--color-border': indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n 'flex flex-1 justify-between leading-none',\n nestLabel ? 'items-end' : 'items-center'\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-[var(--text-muted)]\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value !== undefined && (\n <span className=\"font-mono font-medium tabular-nums text-[var(--text-primary)]\">\n {valueFormatter ? valueFormatter(item.value) : item.value.toLocaleString()}\n </span>\n )}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n }\n);\nChartTooltipContent.displayName = 'ChartTooltipContent';\n\n// ========================================\n// CHART LEGEND\n// ========================================\n\nconst ChartLegend = RechartsPrimitive.Legend;\n\ninterface LegendPayloadItem {\n value?: string;\n dataKey?: string | number;\n color?: string;\n}\n\ninterface ChartLegendContentProps extends React.ComponentProps<'div'> {\n payload?: LegendPayloadItem[];\n verticalAlign?: 'top' | 'bottom';\n hideIcon?: boolean;\n nameKey?: string;\n}\n\nconst ChartLegendContent = React.forwardRef<HTMLDivElement, ChartLegendContentProps>(\n ({ className, hideIcon = false, payload, verticalAlign = 'bottom', nameKey }, ref) => {\n const { config } = useChart();\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n 'flex items-center justify-center gap-4',\n verticalAlign === 'top' ? 'pb-3' : 'pt-3',\n className\n )}\n >\n {payload.map((item: LegendPayloadItem) => {\n const key = `${nameKey || item.dataKey || 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n return (\n <div\n key={item.value}\n className={cn(\n 'flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-[var(--text-muted)]'\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n );\n })}\n </div>\n );\n }\n);\nChartLegendContent.displayName = 'ChartLegendContent';\n\n// ========================================\n// HELPER FUNCTIONS\n// ========================================\n\nfunction getPayloadConfigFromPayload(config: ChartConfig, payload: unknown, key: string) {\n if (typeof payload !== 'object' || payload === null) {\n return undefined;\n }\n\n const payloadPayload =\n 'payload' in payload && typeof payload.payload === 'object' && payload.payload !== null\n ? payload.payload\n : undefined;\n\n let configLabelKey: string = key;\n\n if (key in config) {\n return config[key];\n }\n\n if (payloadPayload && key in payloadPayload) {\n configLabelKey = payloadPayload[key as keyof typeof payloadPayload] as string;\n }\n\n return configLabelKey in config ? config[configLabelKey] : config[key];\n}\n\n// ========================================\n// EXPORTS\n// ========================================\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n useChart,\n};\n","/**\n * DropdownGlass CVA Variants\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport type DropdownAlign = 'left' | 'right';\n\nexport const dropdownAlign = cva('absolute mt-2 min-w-[160px] md:min-w-[200px] rounded-2xl py-1.5 md:py-2', {\n variants: {\n align: {\n left: 'left-0',\n right: 'right-0',\n },\n },\n defaultVariants: {\n align: 'left',\n },\n});\n","/**\n * TooltipGlass CVA Variants\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\nexport const tooltipPositions = cva(\n 'absolute z-50 px-2 py-1 md:px-3 md:py-1.5 rounded-lg text-[10px] md:text-xs font-medium whitespace-nowrap transition-opacity duration-200',\n {\n variants: {\n position: {\n top: 'bottom-full left-1/2 -translate-x-1/2 mb-2',\n bottom: 'top-full left-1/2 -translate-x-1/2 mt-2',\n left: 'right-full top-1/2 -translate-y-1/2 mr-2',\n right: 'left-full top-1/2 -translate-y-1/2 ml-2',\n },\n },\n defaultVariants: {\n position: 'top',\n },\n }\n);\n","/**\n * Alert CVA Variants (shadcn/ui)\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport const alertVariants = cva(\n \"relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive:\n \"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n","/**\n * Badge CVA Variants (shadcn/ui)\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport const badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n destructive:\n \"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n","/**\n * Button CVA Variants (shadcn/ui)\n * Extracted for Fast Refresh compatibility\n */\n\nimport { cva } from 'class-variance-authority';\n\nexport const buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n"],"x_google_ignoreList":[2,3,4],"mappings":"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AAI,OAAO,OACT,QAAO,OAAO;AAGhB,KAAI,kBAAkB,OAAO,eAC3B,kBAAiB,eAAe;AAGlC,QAAO,kBAAkB,SAAS,OAAO,kBAAkB,OAAO;;ACzWpE,MAAa,gBAAgB,IAAI,2EAA2E;CAC1G,UAAU,EACR,OAAO;EACL,MAAM;EACN,OAAO;EACR,EACF;CACD,iBAAiB,EACf,OAAO,QACR;CACF,CAAC;ACVF,MAAa,mBAAmB,IAC9B,6IACA;CACE,UAAU,EACR,UAAU;EACR,KAAK;EACL,QAAQ;EACR,MAAM;EACN,OAAO;EACR,EACF;CACD,iBAAiB,EACf,UAAU,OACX;CACF,CACF;ACjBD,MAAa,kBAAgB,IAC3B,qOACA;CACE,UAAU,EACR,SAAS;EACP,SAAS;EACT,aACE;EACH,EACF;CACD,iBAAiB,EACf,SAAS,WACV;CACF,CACF;ACdD,MAAa,kBAAgB,IAC3B,oZACA;CACE,UAAU,EACR,SAAS;EACP,SACE;EACF,WACE;EACF,aACE;EACF,SACE;EACH,EACF;CACD,iBAAiB,EACf,SAAS,WACV;CACF,CACF;ACnBD,MAAa,iBAAiB,IAC5B,+bACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,aACE;GACF,SACE;GACF,WACE;GACF,OACE;GACF,MAAM;GACP;EACD,MAAM;GACJ,SAAS;GACT,IAAI;GACJ,IAAI;GACJ,MAAM;GACN,WAAW;GACX,WAAW;GACZ;EACF;CACD,iBAAiB;EACf,SAAS;EACT,MAAM;EACP;CACF,CACF"}