erp-pro-ui 0.1.9 → 0.2.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 (183) hide show
  1. package/README.md +14 -0
  2. package/dist/button.cjs +1 -1
  3. package/dist/button.mjs +1 -1
  4. package/dist/calendar.cjs +1 -1
  5. package/dist/calendar.mjs +1 -1
  6. package/dist/charts.cjs +1 -1
  7. package/dist/charts.mjs +1 -1
  8. package/dist/chip.cjs +1 -1
  9. package/dist/chip.mjs +1 -1
  10. package/dist/chunks/{DropdownMenu-CeD9kl_N.cjs → DropdownMenu-BDrNYO-D.cjs} +5 -4
  11. package/dist/chunks/DropdownMenu-BDrNYO-D.cjs.map +1 -0
  12. package/dist/chunks/{DropdownMenu-CBdZoVQs.mjs → DropdownMenu-BtTOri-A.mjs} +5 -4
  13. package/dist/chunks/DropdownMenu-BtTOri-A.mjs.map +1 -0
  14. package/dist/chunks/{tooltip-PJaQa8_l.cjs → Tooltip-DD30yj3A.cjs} +1 -1
  15. package/dist/chunks/{tooltip-PJaQa8_l.cjs.map → Tooltip-DD30yj3A.cjs.map} +1 -1
  16. package/dist/chunks/{tooltip-CmB8xKOF.mjs → Tooltip-DK3B879v.mjs} +1 -1
  17. package/dist/chunks/{tooltip-CmB8xKOF.mjs.map → Tooltip-DK3B879v.mjs.map} +1 -1
  18. package/dist/chunks/{button-DddUhuR-.mjs → button-A6UTvrOu.mjs} +2 -2
  19. package/dist/chunks/{button-DddUhuR-.mjs.map → button-A6UTvrOu.mjs.map} +1 -1
  20. package/dist/chunks/{button-xqernofO.cjs → button-C4MXPxsC.cjs} +2 -2
  21. package/dist/chunks/{button-xqernofO.cjs.map → button-C4MXPxsC.cjs.map} +1 -1
  22. package/dist/chunks/{calendar-BVuDnWUc.mjs → calendar-5XzPqKbE.mjs} +4 -4
  23. package/dist/chunks/calendar-5XzPqKbE.mjs.map +1 -0
  24. package/dist/chunks/{calendar-CYxkfvDv.cjs → calendar-CQJgQ5H_.cjs} +4 -4
  25. package/dist/chunks/calendar-CQJgQ5H_.cjs.map +1 -0
  26. package/dist/chunks/{charts-DuVZD7el.cjs → charts-BmIV-mJy.cjs} +40 -9
  27. package/dist/chunks/charts-BmIV-mJy.cjs.map +1 -0
  28. package/dist/chunks/{charts-mfevxJSU.mjs → charts-DkVu0rFc.mjs} +40 -9
  29. package/dist/chunks/charts-DkVu0rFc.mjs.map +1 -0
  30. package/dist/chunks/{chip-BDrpg5Ux.cjs → chip-B0YzBwkz.cjs} +7 -4
  31. package/dist/chunks/chip-B0YzBwkz.cjs.map +1 -0
  32. package/dist/chunks/{chip-Dt0p0_zd.mjs → chip-CqcdcSs2.mjs} +7 -4
  33. package/dist/chunks/chip-CqcdcSs2.mjs.map +1 -0
  34. package/dist/chunks/color-palette-C3lesasJ.mjs +329 -0
  35. package/dist/chunks/color-palette-C3lesasJ.mjs.map +1 -0
  36. package/dist/chunks/color-palette-pLh6En3n.cjs +384 -0
  37. package/dist/chunks/color-palette-pLh6En3n.cjs.map +1 -0
  38. package/dist/chunks/{combobox-0n1_tB8L.mjs → combobox-B6yk5U82.mjs} +4 -4
  39. package/dist/chunks/combobox-B6yk5U82.mjs.map +1 -0
  40. package/dist/chunks/{combobox-Ca7-BcLO.cjs → combobox-CtNrGmuR.cjs} +4 -4
  41. package/dist/chunks/combobox-CtNrGmuR.cjs.map +1 -0
  42. package/dist/chunks/{data-table-Bt2c9dog.mjs → data-table-Dtf6lKpp.mjs} +11 -11
  43. package/dist/chunks/{data-table-Bt2c9dog.mjs.map → data-table-Dtf6lKpp.mjs.map} +1 -1
  44. package/dist/chunks/{data-table-DhCpQjdf.cjs → data-table-fAEuevPn.cjs} +12 -12
  45. package/dist/chunks/{data-table-DhCpQjdf.cjs.map → data-table-fAEuevPn.cjs.map} +1 -1
  46. package/dist/chunks/{date-picker-CDACysPq.mjs → date-picker-BmQ0rgwH.mjs} +2 -2
  47. package/dist/chunks/{date-picker-CDACysPq.mjs.map → date-picker-BmQ0rgwH.mjs.map} +1 -1
  48. package/dist/chunks/{date-picker-duwF35Rk.cjs → date-picker-qpUZMtZC.cjs} +2 -2
  49. package/dist/chunks/{date-picker-duwF35Rk.cjs.map → date-picker-qpUZMtZC.cjs.map} +1 -1
  50. package/dist/chunks/{form-CvNNjA1i.mjs → form-CtZ6U-_B.mjs} +2 -2
  51. package/dist/chunks/{form-CvNNjA1i.mjs.map → form-CtZ6U-_B.mjs.map} +1 -1
  52. package/dist/chunks/{form-C_JxqsSZ.cjs → form-X6Vyaavl.cjs} +2 -2
  53. package/dist/chunks/{form-C_JxqsSZ.cjs.map → form-X6Vyaavl.cjs.map} +1 -1
  54. package/dist/chunks/{input-BvTrWtRn.mjs → input-Bqo9Q5zF.mjs} +33 -12
  55. package/dist/chunks/input-Bqo9Q5zF.mjs.map +1 -0
  56. package/dist/chunks/{input-wAznik-_.cjs → input-DkCPyWXi.cjs} +33 -12
  57. package/dist/chunks/input-DkCPyWXi.cjs.map +1 -0
  58. package/dist/chunks/{label-CxmbGh0l.cjs → label-BKzqfAAq.cjs} +2 -2
  59. package/dist/chunks/{label-CxmbGh0l.cjs.map → label-BKzqfAAq.cjs.map} +1 -1
  60. package/dist/chunks/{label-C1Ekt3j2.mjs → label-Drxg0cG2.mjs} +2 -2
  61. package/dist/chunks/{label-C1Ekt3j2.mjs.map → label-Drxg0cG2.mjs.map} +1 -1
  62. package/dist/chunks/{multi-select-combobox-CdPcvP_S.cjs → multi-select-combobox-C0DoDzxQ.cjs} +5 -5
  63. package/dist/chunks/multi-select-combobox-C0DoDzxQ.cjs.map +1 -0
  64. package/dist/chunks/{multi-select-combobox-_nuc3cZ3.mjs → multi-select-combobox-Do23ZfOQ.mjs} +5 -5
  65. package/dist/chunks/multi-select-combobox-Do23ZfOQ.mjs.map +1 -0
  66. package/dist/chunks/{password-strength-meter-BEx94cfy.mjs → password-strength-meter-BsvqQBAg.mjs} +3 -3
  67. package/dist/chunks/{password-strength-meter-BEx94cfy.mjs.map → password-strength-meter-BsvqQBAg.mjs.map} +1 -1
  68. package/dist/chunks/{password-strength-meter-BNnmSgLh.cjs → password-strength-meter-DCi_BP7e.cjs} +3 -3
  69. package/dist/chunks/{password-strength-meter-BNnmSgLh.cjs.map → password-strength-meter-DCi_BP7e.cjs.map} +1 -1
  70. package/dist/chunks/radio-CuiM_gDv.mjs +50 -0
  71. package/dist/chunks/radio-CuiM_gDv.mjs.map +1 -0
  72. package/dist/chunks/radio-zx9xEW_C.cjs +56 -0
  73. package/dist/chunks/radio-zx9xEW_C.cjs.map +1 -0
  74. package/dist/chunks/{select-B3tfHqQo.mjs → select-CUaSNR09.mjs} +4 -4
  75. package/dist/chunks/select-CUaSNR09.mjs.map +1 -0
  76. package/dist/chunks/{select-BwB9MsSv.cjs → select-bZ9WqLOc.cjs} +4 -4
  77. package/dist/chunks/select-bZ9WqLOc.cjs.map +1 -0
  78. package/dist/chunks/{sidebar-CCKZ_NMW.mjs → sidebar-DYEDFV2u.mjs} +3 -3
  79. package/dist/chunks/{sidebar-CCKZ_NMW.mjs.map → sidebar-DYEDFV2u.mjs.map} +1 -1
  80. package/dist/chunks/{sidebar-WG9Wnwnv.cjs → sidebar-Kkr45nuN.cjs} +3 -3
  81. package/dist/chunks/{sidebar-WG9Wnwnv.cjs.map → sidebar-Kkr45nuN.cjs.map} +1 -1
  82. package/dist/chunks/{stepper-CvuyKYXC.cjs → stepper-DepvEGfr.cjs} +2 -2
  83. package/dist/chunks/{stepper-CvuyKYXC.cjs.map → stepper-DepvEGfr.cjs.map} +1 -1
  84. package/dist/chunks/{stepper-CjywisS9.mjs → stepper-Jv5OS1nY.mjs} +2 -2
  85. package/dist/chunks/{stepper-CjywisS9.mjs.map → stepper-Jv5OS1nY.mjs.map} +1 -1
  86. package/dist/chunks/{sun-to-moon-button-azXKWDYT.mjs → sun-to-moon-button-BJtBEaa3.mjs} +69 -50
  87. package/dist/chunks/sun-to-moon-button-BJtBEaa3.mjs.map +1 -0
  88. package/dist/chunks/{sun-to-moon-button-A__wuc_4.cjs → sun-to-moon-button-PwgTPsTW.cjs} +69 -50
  89. package/dist/chunks/sun-to-moon-button-PwgTPsTW.cjs.map +1 -0
  90. package/dist/chunks/{switch-DPyzVrNh.cjs → switch-X3l8xnle.cjs} +10 -29
  91. package/dist/chunks/switch-X3l8xnle.cjs.map +1 -0
  92. package/dist/chunks/{switch-C1gKE0m0.mjs → switch-iPsN1NS2.mjs} +10 -29
  93. package/dist/chunks/switch-iPsN1NS2.mjs.map +1 -0
  94. package/dist/color-palette.cjs +9 -1
  95. package/dist/color-palette.mjs +2 -2
  96. package/dist/combobox.cjs +1 -1
  97. package/dist/combobox.mjs +1 -1
  98. package/dist/components/data-display/charts/BarChart.d.ts +5 -0
  99. package/dist/components/data-display/charts/BarChart.d.ts.map +1 -1
  100. package/dist/components/data-display/chip/Chip.d.ts +1 -1
  101. package/dist/components/data-display/chip/Chip.d.ts.map +1 -1
  102. package/dist/components/data-display/color-palette/ColorPalette.d.ts +24 -16
  103. package/dist/components/data-display/color-palette/ColorPalette.d.ts.map +1 -1
  104. package/dist/components/data-display/color-palette/index.d.ts +2 -1
  105. package/dist/components/data-display/color-palette/index.d.ts.map +1 -1
  106. package/dist/components/data-display/dashboard-cards/StatCard.d.ts +11 -3
  107. package/dist/components/data-display/dashboard-cards/StatCard.d.ts.map +1 -1
  108. package/dist/components/effects/sun-to-moon-button/ThemeSwitcherButtons.d.ts +16 -1
  109. package/dist/components/effects/sun-to-moon-button/ThemeSwitcherButtons.d.ts.map +1 -1
  110. package/dist/components/effects/sun-to-moon-button/index.d.ts +1 -1
  111. package/dist/components/effects/sun-to-moon-button/index.d.ts.map +1 -1
  112. package/dist/components/forms/input/Input.d.ts.map +1 -1
  113. package/dist/components/forms/input/types.d.ts +2 -0
  114. package/dist/components/forms/input/types.d.ts.map +1 -1
  115. package/dist/components/forms/radio/Radio.d.ts.map +1 -1
  116. package/dist/components/forms/switch/Switch.d.ts.map +1 -1
  117. package/dist/components/overlays/dropdown-menu/DropdownMenu.d.ts +1 -1
  118. package/dist/components/overlays/dropdown-menu/DropdownMenu.d.ts.map +1 -1
  119. package/dist/components/overlays/dropdown-menu/types.d.ts +1 -0
  120. package/dist/components/overlays/dropdown-menu/types.d.ts.map +1 -1
  121. package/dist/data-table.cjs +1 -1
  122. package/dist/data-table.mjs +1 -1
  123. package/dist/date-picker.cjs +1 -1
  124. package/dist/date-picker.mjs +1 -1
  125. package/dist/form.cjs +1 -1
  126. package/dist/form.mjs +1 -1
  127. package/dist/index.cjs +81 -67
  128. package/dist/index.cjs.map +1 -1
  129. package/dist/index.d.ts +3 -3
  130. package/dist/index.d.ts.map +1 -1
  131. package/dist/index.mjs +74 -68
  132. package/dist/index.mjs.map +1 -1
  133. package/dist/input.cjs +1 -1
  134. package/dist/input.mjs +1 -1
  135. package/dist/label.cjs +1 -1
  136. package/dist/label.mjs +1 -1
  137. package/dist/multi-select-combobox.cjs +1 -1
  138. package/dist/multi-select-combobox.mjs +1 -1
  139. package/dist/password-strength-meter.cjs +1 -1
  140. package/dist/password-strength-meter.mjs +1 -1
  141. package/dist/radio.cjs +1 -1
  142. package/dist/radio.mjs +1 -1
  143. package/dist/select.cjs +1 -1
  144. package/dist/select.mjs +1 -1
  145. package/dist/sidebar.cjs +1 -1
  146. package/dist/sidebar.mjs +1 -1
  147. package/dist/stepper.cjs +1 -1
  148. package/dist/stepper.mjs +1 -1
  149. package/dist/sun-to-moon-button.cjs +1 -1
  150. package/dist/sun-to-moon-button.mjs +1 -1
  151. package/dist/switch.cjs +1 -1
  152. package/dist/switch.mjs +1 -1
  153. package/dist/tooltip.cjs +2 -2
  154. package/dist/tooltip.mjs +1 -1
  155. package/package.json +5 -5
  156. package/dist/chunks/DropdownMenu-CBdZoVQs.mjs.map +0 -1
  157. package/dist/chunks/DropdownMenu-CeD9kl_N.cjs.map +0 -1
  158. package/dist/chunks/calendar-BVuDnWUc.mjs.map +0 -1
  159. package/dist/chunks/calendar-CYxkfvDv.cjs.map +0 -1
  160. package/dist/chunks/charts-DuVZD7el.cjs.map +0 -1
  161. package/dist/chunks/charts-mfevxJSU.mjs.map +0 -1
  162. package/dist/chunks/chip-BDrpg5Ux.cjs.map +0 -1
  163. package/dist/chunks/chip-Dt0p0_zd.mjs.map +0 -1
  164. package/dist/chunks/color-palette-BmQC14gE.cjs +0 -789
  165. package/dist/chunks/color-palette-BmQC14gE.cjs.map +0 -1
  166. package/dist/chunks/color-palette-DnX1sODj.mjs +0 -782
  167. package/dist/chunks/color-palette-DnX1sODj.mjs.map +0 -1
  168. package/dist/chunks/combobox-0n1_tB8L.mjs.map +0 -1
  169. package/dist/chunks/combobox-Ca7-BcLO.cjs.map +0 -1
  170. package/dist/chunks/input-BvTrWtRn.mjs.map +0 -1
  171. package/dist/chunks/input-wAznik-_.cjs.map +0 -1
  172. package/dist/chunks/multi-select-combobox-CdPcvP_S.cjs.map +0 -1
  173. package/dist/chunks/multi-select-combobox-_nuc3cZ3.mjs.map +0 -1
  174. package/dist/chunks/radio-DOkKyKKL.mjs +0 -44
  175. package/dist/chunks/radio-DOkKyKKL.mjs.map +0 -1
  176. package/dist/chunks/radio-DyQ3jF-M.cjs +0 -50
  177. package/dist/chunks/radio-DyQ3jF-M.cjs.map +0 -1
  178. package/dist/chunks/select-B3tfHqQo.mjs.map +0 -1
  179. package/dist/chunks/select-BwB9MsSv.cjs.map +0 -1
  180. package/dist/chunks/sun-to-moon-button-A__wuc_4.cjs.map +0 -1
  181. package/dist/chunks/sun-to-moon-button-azXKWDYT.mjs.map +0 -1
  182. package/dist/chunks/switch-C1gKE0m0.mjs.map +0 -1
  183. package/dist/chunks/switch-DPyzVrNh.cjs.map +0 -1
@@ -1,37 +1,14 @@
1
1
  import { n as useThemeContext } from "./theme-koPrLKQv.mjs";
2
2
  import { n as mergeClassNames } from "./utils-7S0u48mU.mjs";
3
- import { t as Button } from "./button-DddUhuR-.mjs";
3
+ import { t as Button } from "./button-A6UTvrOu.mjs";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  //#region src/components/effects/sun-to-moon-button/ThemeSwitcherButtons.tsx
6
- var BRAND_OPTIONS = [
7
- {
8
- value: "purple",
9
- label: "Purple",
10
- swatch: "var(--ds-brand-purple)"
11
- },
12
- {
13
- value: "teal",
14
- label: "Teal",
15
- swatch: "var(--ds-brand-teal)"
16
- },
17
- {
18
- value: "yellow",
19
- label: "Yellow",
20
- swatch: "var(--ds-brand-yellow)"
21
- },
22
- {
23
- value: "green",
24
- label: "Green",
25
- swatch: "var(--ds-brand-green)"
26
- }
27
- ];
28
- var VARIANT_OPTIONS = [{
29
- value: "default",
30
- label: "Default"
31
- }, {
32
- value: "alt",
33
- label: "Alt"
34
- }];
6
+ var BRAND_SWATCHES = {
7
+ purple: "var(--ds-brand-purple)",
8
+ teal: "var(--ds-brand-teal)",
9
+ yellow: "var(--ds-brand-yellow)",
10
+ green: "var(--ds-brand-green)"
11
+ };
35
12
  function ToggleButton({ label, active, onClick, swatch, showBrandState = false, mode }) {
36
13
  const isLightMode = mode === "light";
37
14
  const toneStyle = (() => {
@@ -51,7 +28,7 @@ function ToggleButton({ label, active, onClick, swatch, showBrandState = false,
51
28
  variant: "secondary",
52
29
  size: "small",
53
30
  onClick,
54
- className: mergeClassNames("group rounded-full border px-3 py-1.5 text-xs font-semibold transition-all duration-200", active ? "border-ds-border-1 bg-ds-surface-2 text-ds-1 shadow-sm" : "border-ds-border-3 bg-ds-surface-1 text-ds-2 hover:border-ds-border-2 hover:text-ds-1", showBrandState && isLightMode ? "bg-ds-surface-1! hover:bg-ds-surface-1!" : null, showBrandState && active ? "text-ds-1" : null),
31
+ className: mergeClassNames("group rounded-full border px-3 py-1.5 text-xs font-semibold transition-all duration-200", active ? "border-ds-border-accent bg-ds-surface-2 text-ds-1 shadow-sm ring-1 ring-ds-border-accent/40" : "border-ds-border-2 bg-ds-surface-1 text-ds-2 hover:border-ds-border-accent/50 hover:bg-ds-surface-2 hover:text-ds-1", showBrandState && isLightMode ? "bg-ds-surface-1! hover:bg-ds-surface-1!" : null, showBrandState && active ? "text-ds-1" : null),
55
32
  style: toneStyle,
56
33
  "aria-pressed": active,
57
34
  children: [swatch ? /* @__PURE__ */ jsx("span", {
@@ -61,52 +38,94 @@ function ToggleButton({ label, active, onClick, swatch, showBrandState = false,
61
38
  }) : null, /* @__PURE__ */ jsx("span", { children: label })]
62
39
  });
63
40
  }
64
- function ThemeSwitcherButtons({ className }) {
41
+ function ThemeSwitcherButtons({ className, labels = {} }) {
65
42
  const { mode, theme, variant, setMode, setTheme, setVariant } = useThemeContext();
43
+ const l = {
44
+ mode: labels.mode ?? "Mode",
45
+ light: labels.light ?? "Light",
46
+ dark: labels.dark ?? "Dark",
47
+ brand: labels.brand ?? "Brand",
48
+ variant: labels.variant ?? "Variant",
49
+ variantDefault: labels.variantDefault ?? "Default",
50
+ variantAlt: labels.variantAlt ?? "Alt",
51
+ purple: labels.purple ?? "Purple",
52
+ teal: labels.teal ?? "Teal",
53
+ yellow: labels.yellow ?? "Yellow",
54
+ green: labels.green ?? "Green"
55
+ };
56
+ const brandOptions = [
57
+ {
58
+ value: "purple",
59
+ label: l.purple,
60
+ swatch: BRAND_SWATCHES.purple
61
+ },
62
+ {
63
+ value: "teal",
64
+ label: l.teal,
65
+ swatch: BRAND_SWATCHES.teal
66
+ },
67
+ {
68
+ value: "yellow",
69
+ label: l.yellow,
70
+ swatch: BRAND_SWATCHES.yellow
71
+ },
72
+ {
73
+ value: "green",
74
+ label: l.green,
75
+ swatch: BRAND_SWATCHES.green
76
+ }
77
+ ];
78
+ const variantOptions = [{
79
+ value: "default",
80
+ label: l.variantDefault
81
+ }, {
82
+ value: "alt",
83
+ label: l.variantAlt
84
+ }];
66
85
  return /* @__PURE__ */ jsx("div", {
67
- className: mergeClassNames("w-full rounded-2xl border border-ds-border-2 bg-ds-surface-1 p-4 shadow-sm", className),
86
+ className: mergeClassNames("w-full rounded-2xl border border-ds-border-2 bg-ds-canvas p-4 shadow-sm", className),
68
87
  children: /* @__PURE__ */ jsxs("div", {
69
88
  className: "space-y-3",
70
89
  children: [
71
90
  /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
72
91
  className: "mb-2 text-[11px] font-semibold uppercase tracking-[0.12em] text-ds-3",
73
- children: "Mode"
92
+ children: l.mode
74
93
  }), /* @__PURE__ */ jsxs("div", {
75
94
  className: "flex flex-wrap gap-2",
76
95
  children: [/* @__PURE__ */ jsx(ToggleButton, {
77
- label: "Light",
96
+ label: l.light,
78
97
  active: mode === "light",
79
98
  onClick: () => setMode("light")
80
99
  }), /* @__PURE__ */ jsx(ToggleButton, {
81
- label: "Dark",
100
+ label: l.dark,
82
101
  active: mode === "dark",
83
102
  onClick: () => setMode("dark")
84
103
  })]
85
104
  })] }),
86
105
  /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
87
106
  className: "mb-2 text-[11px] font-semibold uppercase tracking-[0.12em] text-ds-3",
88
- children: "Brand"
107
+ children: l.brand
89
108
  }), /* @__PURE__ */ jsx("div", {
90
109
  className: "flex flex-wrap gap-2",
91
- children: BRAND_OPTIONS.map((option) => /* @__PURE__ */ jsx(ToggleButton, {
92
- label: option.label,
93
- active: theme === option.value,
94
- onClick: () => setTheme(option.value),
95
- swatch: option.swatch,
110
+ children: brandOptions.map((opt) => /* @__PURE__ */ jsx(ToggleButton, {
111
+ label: opt.label,
112
+ active: theme === opt.value,
113
+ onClick: () => setTheme(opt.value),
114
+ swatch: opt.swatch,
96
115
  showBrandState: true,
97
116
  mode
98
- }, option.value))
117
+ }, opt.value))
99
118
  })] }),
100
119
  /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
101
120
  className: "mb-2 text-[11px] font-semibold uppercase tracking-[0.12em] text-ds-3",
102
- children: "Variant"
121
+ children: l.variant
103
122
  }), /* @__PURE__ */ jsx("div", {
104
123
  className: "flex flex-wrap gap-2",
105
- children: VARIANT_OPTIONS.map((option) => /* @__PURE__ */ jsx(ToggleButton, {
106
- label: option.label,
107
- active: variant === option.value,
108
- onClick: () => setVariant(option.value)
109
- }, option.value))
124
+ children: variantOptions.map((opt) => /* @__PURE__ */ jsx(ToggleButton, {
125
+ label: opt.label,
126
+ active: variant === opt.value,
127
+ onClick: () => setVariant(opt.value)
128
+ }, opt.value))
110
129
  })] })
111
130
  ]
112
131
  })
@@ -115,4 +134,4 @@ function ThemeSwitcherButtons({ className }) {
115
134
  //#endregion
116
135
  export { ThemeSwitcherButtons as t };
117
136
 
118
- //# sourceMappingURL=sun-to-moon-button-azXKWDYT.mjs.map
137
+ //# sourceMappingURL=sun-to-moon-button-BJtBEaa3.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sun-to-moon-button-BJtBEaa3.mjs","names":[],"sources":["../../src/components/effects/sun-to-moon-button/ThemeSwitcherButtons.tsx"],"sourcesContent":["import type {\n ThemeColorType,\n ThemeModeType,\n ThemeVariantType,\n} from \"../../../foundations/theme\";\nimport { useThemeContext } from \"../../../foundations/theme\";\nimport { Button } from \"../../forms/button\";\nimport { mergeClassNames } from \"../../../utils\";\nimport type { CSSProperties } from \"react\";\n\nexport interface ThemeSwitcherLabels {\n mode?: string;\n light?: string;\n dark?: string;\n brand?: string;\n variant?: string;\n variantDefault?: string;\n variantAlt?: string;\n purple?: string;\n teal?: string;\n yellow?: string;\n green?: string;\n}\n\nexport interface ThemeSwitcherButtonsProps {\n className?: string;\n /** Override any label for localisation / translation. */\n labels?: ThemeSwitcherLabels;\n}\n\nconst BRAND_SWATCHES: Record<ThemeColorType, string> = {\n purple: \"var(--ds-brand-purple)\",\n teal: \"var(--ds-brand-teal)\",\n yellow: \"var(--ds-brand-yellow)\",\n green: \"var(--ds-brand-green)\",\n};\n\nfunction ToggleButton({\n label,\n active,\n onClick,\n swatch,\n showBrandState = false,\n mode,\n}: {\n label: string;\n active: boolean;\n onClick: () => void;\n swatch?: string;\n showBrandState?: boolean;\n mode?: ThemeModeType;\n}) {\n const isLightMode = mode === \"light\";\n const toneStyle: CSSProperties | undefined = (() => {\n if (!showBrandState || !swatch) {\n return undefined;\n }\n\n if (isLightMode) {\n return {\n borderColor: active ? swatch : \"var(--ds-border-2)\",\n backgroundColor: active\n ? `color-mix(in srgb, ${swatch} 12%, #ffffff)`\n : \"#ffffff\",\n color: active\n ? `color-mix(in srgb, ${swatch} 76%, var(--ds-text-1))`\n : \"var(--ds-text-2)\",\n boxShadow: active\n ? `0 0 0 1px color-mix(in srgb, ${swatch} 24%, transparent)`\n : \"none\",\n };\n }\n\n return {\n borderColor: active\n ? swatch\n : `color-mix(in srgb, ${swatch} 42%, var(--ds-border-3))`,\n backgroundColor: active\n ? `color-mix(in srgb, ${swatch} 16%, var(--ds-surface-1))`\n : `color-mix(in srgb, ${swatch} 6%, var(--ds-surface-1))`,\n };\n })();\n\n return (\n <Button\n variant=\"secondary\"\n size=\"small\"\n onClick={onClick}\n className={mergeClassNames(\n \"group rounded-full border px-3 py-1.5 text-xs font-semibold transition-all duration-200\",\n active\n ? \"border-ds-border-accent bg-ds-surface-2 text-ds-1 shadow-sm ring-1 ring-ds-border-accent/40\"\n : \"border-ds-border-2 bg-ds-surface-1 text-ds-2 hover:border-ds-border-accent/50 hover:bg-ds-surface-2 hover:text-ds-1\",\n showBrandState && isLightMode\n ? \"bg-ds-surface-1! hover:bg-ds-surface-1!\"\n : null,\n showBrandState && active ? \"text-ds-1\" : null,\n )}\n style={toneStyle}\n aria-pressed={active}\n >\n {swatch ? (\n <span\n className={mergeClassNames(\n \"h-2.5 w-2.5 rounded-full ring-1 ring-black/10 transition-transform duration-200 group-hover:scale-110\",\n active\n ? isLightMode\n ? \"scale-110 ring-2 ring-black/15\"\n : \"scale-110 ring-2 ring-white/35\"\n : \"scale-100 opacity-90\",\n )}\n style={{ backgroundColor: swatch }}\n aria-hidden=\"true\"\n />\n ) : null}\n <span>{label}</span>\n </Button>\n );\n}\n\nexport default function ThemeSwitcherButtons({\n className,\n labels = {},\n}: ThemeSwitcherButtonsProps) {\n const { mode, theme, variant, setMode, setTheme, setVariant } =\n useThemeContext();\n\n const l: Required<ThemeSwitcherLabels> = {\n mode: labels.mode ?? \"Mode\",\n light: labels.light ?? \"Light\",\n dark: labels.dark ?? \"Dark\",\n brand: labels.brand ?? \"Brand\",\n variant: labels.variant ?? \"Variant\",\n variantDefault: labels.variantDefault ?? \"Default\",\n variantAlt: labels.variantAlt ?? \"Alt\",\n purple: labels.purple ?? \"Purple\",\n teal: labels.teal ?? \"Teal\",\n yellow: labels.yellow ?? \"Yellow\",\n green: labels.green ?? \"Green\",\n };\n\n const brandOptions: Array<{ value: ThemeColorType; label: string; swatch: string }> = [\n { value: \"purple\", label: l.purple, swatch: BRAND_SWATCHES.purple },\n { value: \"teal\", label: l.teal, swatch: BRAND_SWATCHES.teal },\n { value: \"yellow\", label: l.yellow, swatch: BRAND_SWATCHES.yellow },\n { value: \"green\", label: l.green, swatch: BRAND_SWATCHES.green },\n ];\n\n const variantOptions: Array<{ value: ThemeVariantType; label: string }> = [\n { value: \"default\", label: l.variantDefault },\n { value: \"alt\", label: l.variantAlt },\n ];\n\n return (\n <div\n className={mergeClassNames(\n \"w-full rounded-2xl border border-ds-border-2 bg-ds-canvas p-4 shadow-sm\",\n className,\n )}\n >\n <div className=\"space-y-3\">\n <div>\n <p className=\"mb-2 text-[11px] font-semibold uppercase tracking-[0.12em] text-ds-3\">\n {l.mode}\n </p>\n <div className=\"flex flex-wrap gap-2\">\n <ToggleButton label={l.light} active={mode === \"light\"} onClick={() => setMode(\"light\")} />\n <ToggleButton label={l.dark} active={mode === \"dark\"} onClick={() => setMode(\"dark\")} />\n </div>\n </div>\n\n <div>\n <p className=\"mb-2 text-[11px] font-semibold uppercase tracking-[0.12em] text-ds-3\">\n {l.brand}\n </p>\n <div className=\"flex flex-wrap gap-2\">\n {brandOptions.map((opt) => (\n <ToggleButton\n key={opt.value}\n label={opt.label}\n active={theme === opt.value}\n onClick={() => setTheme(opt.value)}\n swatch={opt.swatch}\n showBrandState\n mode={mode}\n />\n ))}\n </div>\n </div>\n\n <div>\n <p className=\"mb-2 text-[11px] font-semibold uppercase tracking-[0.12em] text-ds-3\">\n {l.variant}\n </p>\n <div className=\"flex flex-wrap gap-2\">\n {variantOptions.map((opt) => (\n <ToggleButton\n key={opt.value}\n label={opt.label}\n active={variant === opt.value}\n onClick={() => setVariant(opt.value)}\n />\n ))}\n </div>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,38 +1,15 @@
1
1
  require("./chunk-B_GkZjkl.cjs");
2
2
  const require_theme = require("./theme-D6B-FaoE.cjs");
3
3
  const require_utils = require("./utils-LRbEQHYs.cjs");
4
- const require_button = require("./button-xqernofO.cjs");
4
+ const require_button = require("./button-C4MXPxsC.cjs");
5
5
  let react_jsx_runtime = require("react/jsx-runtime");
6
6
  //#region src/components/effects/sun-to-moon-button/ThemeSwitcherButtons.tsx
7
- var BRAND_OPTIONS = [
8
- {
9
- value: "purple",
10
- label: "Purple",
11
- swatch: "var(--ds-brand-purple)"
12
- },
13
- {
14
- value: "teal",
15
- label: "Teal",
16
- swatch: "var(--ds-brand-teal)"
17
- },
18
- {
19
- value: "yellow",
20
- label: "Yellow",
21
- swatch: "var(--ds-brand-yellow)"
22
- },
23
- {
24
- value: "green",
25
- label: "Green",
26
- swatch: "var(--ds-brand-green)"
27
- }
28
- ];
29
- var VARIANT_OPTIONS = [{
30
- value: "default",
31
- label: "Default"
32
- }, {
33
- value: "alt",
34
- label: "Alt"
35
- }];
7
+ var BRAND_SWATCHES = {
8
+ purple: "var(--ds-brand-purple)",
9
+ teal: "var(--ds-brand-teal)",
10
+ yellow: "var(--ds-brand-yellow)",
11
+ green: "var(--ds-brand-green)"
12
+ };
36
13
  function ToggleButton({ label, active, onClick, swatch, showBrandState = false, mode }) {
37
14
  const isLightMode = mode === "light";
38
15
  const toneStyle = (() => {
@@ -52,7 +29,7 @@ function ToggleButton({ label, active, onClick, swatch, showBrandState = false,
52
29
  variant: "secondary",
53
30
  size: "small",
54
31
  onClick,
55
- className: require_utils.mergeClassNames("group rounded-full border px-3 py-1.5 text-xs font-semibold transition-all duration-200", active ? "border-ds-border-1 bg-ds-surface-2 text-ds-1 shadow-sm" : "border-ds-border-3 bg-ds-surface-1 text-ds-2 hover:border-ds-border-2 hover:text-ds-1", showBrandState && isLightMode ? "bg-ds-surface-1! hover:bg-ds-surface-1!" : null, showBrandState && active ? "text-ds-1" : null),
32
+ className: require_utils.mergeClassNames("group rounded-full border px-3 py-1.5 text-xs font-semibold transition-all duration-200", active ? "border-ds-border-accent bg-ds-surface-2 text-ds-1 shadow-sm ring-1 ring-ds-border-accent/40" : "border-ds-border-2 bg-ds-surface-1 text-ds-2 hover:border-ds-border-accent/50 hover:bg-ds-surface-2 hover:text-ds-1", showBrandState && isLightMode ? "bg-ds-surface-1! hover:bg-ds-surface-1!" : null, showBrandState && active ? "text-ds-1" : null),
56
33
  style: toneStyle,
57
34
  "aria-pressed": active,
58
35
  children: [swatch ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
@@ -62,52 +39,94 @@ function ToggleButton({ label, active, onClick, swatch, showBrandState = false,
62
39
  }) : null, /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: label })]
63
40
  });
64
41
  }
65
- function ThemeSwitcherButtons({ className }) {
42
+ function ThemeSwitcherButtons({ className, labels = {} }) {
66
43
  const { mode, theme, variant, setMode, setTheme, setVariant } = require_theme.useThemeContext();
44
+ const l = {
45
+ mode: labels.mode ?? "Mode",
46
+ light: labels.light ?? "Light",
47
+ dark: labels.dark ?? "Dark",
48
+ brand: labels.brand ?? "Brand",
49
+ variant: labels.variant ?? "Variant",
50
+ variantDefault: labels.variantDefault ?? "Default",
51
+ variantAlt: labels.variantAlt ?? "Alt",
52
+ purple: labels.purple ?? "Purple",
53
+ teal: labels.teal ?? "Teal",
54
+ yellow: labels.yellow ?? "Yellow",
55
+ green: labels.green ?? "Green"
56
+ };
57
+ const brandOptions = [
58
+ {
59
+ value: "purple",
60
+ label: l.purple,
61
+ swatch: BRAND_SWATCHES.purple
62
+ },
63
+ {
64
+ value: "teal",
65
+ label: l.teal,
66
+ swatch: BRAND_SWATCHES.teal
67
+ },
68
+ {
69
+ value: "yellow",
70
+ label: l.yellow,
71
+ swatch: BRAND_SWATCHES.yellow
72
+ },
73
+ {
74
+ value: "green",
75
+ label: l.green,
76
+ swatch: BRAND_SWATCHES.green
77
+ }
78
+ ];
79
+ const variantOptions = [{
80
+ value: "default",
81
+ label: l.variantDefault
82
+ }, {
83
+ value: "alt",
84
+ label: l.variantAlt
85
+ }];
67
86
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
68
- className: require_utils.mergeClassNames("w-full rounded-2xl border border-ds-border-2 bg-ds-surface-1 p-4 shadow-sm", className),
87
+ className: require_utils.mergeClassNames("w-full rounded-2xl border border-ds-border-2 bg-ds-canvas p-4 shadow-sm", className),
69
88
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
70
89
  className: "space-y-3",
71
90
  children: [
72
91
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
73
92
  className: "mb-2 text-[11px] font-semibold uppercase tracking-[0.12em] text-ds-3",
74
- children: "Mode"
93
+ children: l.mode
75
94
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
76
95
  className: "flex flex-wrap gap-2",
77
96
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ToggleButton, {
78
- label: "Light",
97
+ label: l.light,
79
98
  active: mode === "light",
80
99
  onClick: () => setMode("light")
81
100
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ToggleButton, {
82
- label: "Dark",
101
+ label: l.dark,
83
102
  active: mode === "dark",
84
103
  onClick: () => setMode("dark")
85
104
  })]
86
105
  })] }),
87
106
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
88
107
  className: "mb-2 text-[11px] font-semibold uppercase tracking-[0.12em] text-ds-3",
89
- children: "Brand"
108
+ children: l.brand
90
109
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
91
110
  className: "flex flex-wrap gap-2",
92
- children: BRAND_OPTIONS.map((option) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ToggleButton, {
93
- label: option.label,
94
- active: theme === option.value,
95
- onClick: () => setTheme(option.value),
96
- swatch: option.swatch,
111
+ children: brandOptions.map((opt) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ToggleButton, {
112
+ label: opt.label,
113
+ active: theme === opt.value,
114
+ onClick: () => setTheme(opt.value),
115
+ swatch: opt.swatch,
97
116
  showBrandState: true,
98
117
  mode
99
- }, option.value))
118
+ }, opt.value))
100
119
  })] }),
101
120
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
102
121
  className: "mb-2 text-[11px] font-semibold uppercase tracking-[0.12em] text-ds-3",
103
- children: "Variant"
122
+ children: l.variant
104
123
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
105
124
  className: "flex flex-wrap gap-2",
106
- children: VARIANT_OPTIONS.map((option) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ToggleButton, {
107
- label: option.label,
108
- active: variant === option.value,
109
- onClick: () => setVariant(option.value)
110
- }, option.value))
125
+ children: variantOptions.map((opt) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ToggleButton, {
126
+ label: opt.label,
127
+ active: variant === opt.value,
128
+ onClick: () => setVariant(opt.value)
129
+ }, opt.value))
111
130
  })] })
112
131
  ]
113
132
  })
@@ -121,4 +140,4 @@ Object.defineProperty(exports, "ThemeSwitcherButtons", {
121
140
  }
122
141
  });
123
142
 
124
- //# sourceMappingURL=sun-to-moon-button-A__wuc_4.cjs.map
143
+ //# sourceMappingURL=sun-to-moon-button-PwgTPsTW.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sun-to-moon-button-PwgTPsTW.cjs","names":[],"sources":["../../src/components/effects/sun-to-moon-button/ThemeSwitcherButtons.tsx"],"sourcesContent":["import type {\n ThemeColorType,\n ThemeModeType,\n ThemeVariantType,\n} from \"../../../foundations/theme\";\nimport { useThemeContext } from \"../../../foundations/theme\";\nimport { Button } from \"../../forms/button\";\nimport { mergeClassNames } from \"../../../utils\";\nimport type { CSSProperties } from \"react\";\n\nexport interface ThemeSwitcherLabels {\n mode?: string;\n light?: string;\n dark?: string;\n brand?: string;\n variant?: string;\n variantDefault?: string;\n variantAlt?: string;\n purple?: string;\n teal?: string;\n yellow?: string;\n green?: string;\n}\n\nexport interface ThemeSwitcherButtonsProps {\n className?: string;\n /** Override any label for localisation / translation. */\n labels?: ThemeSwitcherLabels;\n}\n\nconst BRAND_SWATCHES: Record<ThemeColorType, string> = {\n purple: \"var(--ds-brand-purple)\",\n teal: \"var(--ds-brand-teal)\",\n yellow: \"var(--ds-brand-yellow)\",\n green: \"var(--ds-brand-green)\",\n};\n\nfunction ToggleButton({\n label,\n active,\n onClick,\n swatch,\n showBrandState = false,\n mode,\n}: {\n label: string;\n active: boolean;\n onClick: () => void;\n swatch?: string;\n showBrandState?: boolean;\n mode?: ThemeModeType;\n}) {\n const isLightMode = mode === \"light\";\n const toneStyle: CSSProperties | undefined = (() => {\n if (!showBrandState || !swatch) {\n return undefined;\n }\n\n if (isLightMode) {\n return {\n borderColor: active ? swatch : \"var(--ds-border-2)\",\n backgroundColor: active\n ? `color-mix(in srgb, ${swatch} 12%, #ffffff)`\n : \"#ffffff\",\n color: active\n ? `color-mix(in srgb, ${swatch} 76%, var(--ds-text-1))`\n : \"var(--ds-text-2)\",\n boxShadow: active\n ? `0 0 0 1px color-mix(in srgb, ${swatch} 24%, transparent)`\n : \"none\",\n };\n }\n\n return {\n borderColor: active\n ? swatch\n : `color-mix(in srgb, ${swatch} 42%, var(--ds-border-3))`,\n backgroundColor: active\n ? `color-mix(in srgb, ${swatch} 16%, var(--ds-surface-1))`\n : `color-mix(in srgb, ${swatch} 6%, var(--ds-surface-1))`,\n };\n })();\n\n return (\n <Button\n variant=\"secondary\"\n size=\"small\"\n onClick={onClick}\n className={mergeClassNames(\n \"group rounded-full border px-3 py-1.5 text-xs font-semibold transition-all duration-200\",\n active\n ? \"border-ds-border-accent bg-ds-surface-2 text-ds-1 shadow-sm ring-1 ring-ds-border-accent/40\"\n : \"border-ds-border-2 bg-ds-surface-1 text-ds-2 hover:border-ds-border-accent/50 hover:bg-ds-surface-2 hover:text-ds-1\",\n showBrandState && isLightMode\n ? \"bg-ds-surface-1! hover:bg-ds-surface-1!\"\n : null,\n showBrandState && active ? \"text-ds-1\" : null,\n )}\n style={toneStyle}\n aria-pressed={active}\n >\n {swatch ? (\n <span\n className={mergeClassNames(\n \"h-2.5 w-2.5 rounded-full ring-1 ring-black/10 transition-transform duration-200 group-hover:scale-110\",\n active\n ? isLightMode\n ? \"scale-110 ring-2 ring-black/15\"\n : \"scale-110 ring-2 ring-white/35\"\n : \"scale-100 opacity-90\",\n )}\n style={{ backgroundColor: swatch }}\n aria-hidden=\"true\"\n />\n ) : null}\n <span>{label}</span>\n </Button>\n );\n}\n\nexport default function ThemeSwitcherButtons({\n className,\n labels = {},\n}: ThemeSwitcherButtonsProps) {\n const { mode, theme, variant, setMode, setTheme, setVariant } =\n useThemeContext();\n\n const l: Required<ThemeSwitcherLabels> = {\n mode: labels.mode ?? \"Mode\",\n light: labels.light ?? \"Light\",\n dark: labels.dark ?? \"Dark\",\n brand: labels.brand ?? \"Brand\",\n variant: labels.variant ?? \"Variant\",\n variantDefault: labels.variantDefault ?? \"Default\",\n variantAlt: labels.variantAlt ?? \"Alt\",\n purple: labels.purple ?? \"Purple\",\n teal: labels.teal ?? \"Teal\",\n yellow: labels.yellow ?? \"Yellow\",\n green: labels.green ?? \"Green\",\n };\n\n const brandOptions: Array<{ value: ThemeColorType; label: string; swatch: string }> = [\n { value: \"purple\", label: l.purple, swatch: BRAND_SWATCHES.purple },\n { value: \"teal\", label: l.teal, swatch: BRAND_SWATCHES.teal },\n { value: \"yellow\", label: l.yellow, swatch: BRAND_SWATCHES.yellow },\n { value: \"green\", label: l.green, swatch: BRAND_SWATCHES.green },\n ];\n\n const variantOptions: Array<{ value: ThemeVariantType; label: string }> = [\n { value: \"default\", label: l.variantDefault },\n { value: \"alt\", label: l.variantAlt },\n ];\n\n return (\n <div\n className={mergeClassNames(\n \"w-full rounded-2xl border border-ds-border-2 bg-ds-canvas p-4 shadow-sm\",\n className,\n )}\n >\n <div className=\"space-y-3\">\n <div>\n <p className=\"mb-2 text-[11px] font-semibold uppercase tracking-[0.12em] text-ds-3\">\n {l.mode}\n </p>\n <div className=\"flex flex-wrap gap-2\">\n <ToggleButton label={l.light} active={mode === \"light\"} onClick={() => setMode(\"light\")} />\n <ToggleButton label={l.dark} active={mode === \"dark\"} onClick={() => setMode(\"dark\")} />\n </div>\n </div>\n\n <div>\n <p className=\"mb-2 text-[11px] font-semibold uppercase tracking-[0.12em] text-ds-3\">\n {l.brand}\n </p>\n <div className=\"flex flex-wrap gap-2\">\n {brandOptions.map((opt) => (\n <ToggleButton\n key={opt.value}\n label={opt.label}\n active={theme === opt.value}\n onClick={() => setTheme(opt.value)}\n swatch={opt.swatch}\n showBrandState\n mode={mode}\n />\n ))}\n </div>\n </div>\n\n <div>\n <p className=\"mb-2 text-[11px] font-semibold uppercase tracking-[0.12em] text-ds-3\">\n {l.variant}\n </p>\n <div className=\"flex flex-wrap gap-2\">\n {variantOptions.map((opt) => (\n <ToggleButton\n key={opt.value}\n label={opt.label}\n active={variant === opt.value}\n onClick={() => setVariant(opt.value)}\n />\n ))}\n </div>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -3,35 +3,30 @@ let react = require("react");
3
3
  let react_jsx_runtime = require("react/jsx-runtime");
4
4
  //#region src/components/forms/switch/Switch.tsx
5
5
  var sanitizeId = (value) => value.replace(/[^a-zA-Z0-9_-]/g, "-");
6
- var rtlLanguages = /^(ar|fa|ur|he)(-|$)/i;
7
- function resolveDirection(direction) {
8
- if (direction === "rtl" || direction === "ltr") return direction;
6
+ function getEffectiveDir(dir) {
7
+ if (dir === "rtl" || dir === "ltr") return dir;
9
8
  if (typeof document !== "undefined") {
10
- const explicitDirection = document.documentElement.getAttribute("dir") ?? void 0;
11
- if (explicitDirection === "rtl" || explicitDirection === "ltr") return explicitDirection;
9
+ if (document.documentElement.getAttribute("dir") === "rtl") return "rtl";
12
10
  }
13
- if (typeof navigator !== "undefined" && rtlLanguages.test(navigator.language)) return "rtl";
14
11
  return "ltr";
15
12
  }
16
13
  var Switch = (0, react.forwardRef)(({ className = "", label, error, id, checked, dir, ...props }, ref) => {
17
14
  const generatedId = (0, react.useId)();
18
15
  const switchId = id || `switch-${sanitizeId(generatedId)}`;
19
- const isRtl = resolveDirection(dir) === "rtl";
16
+ const isRtl = getEffectiveDir(dir) === "rtl";
17
+ const thumbClass = checked ? isRtl ? "translate-x-1" : "translate-x-6" : isRtl ? "translate-x-6" : "translate-x-1";
20
18
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
21
19
  className: `flex items-center gap-2 ${className}`.trim().replace(/\s+/g, " "),
22
20
  dir,
23
21
  children: [
24
22
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
25
23
  htmlFor: switchId,
26
- style: {
27
- borderRadius: "var(--border-radius-full, 9999px)",
28
- ...checked ? {} : { background: "#E0E5F2" }
29
- },
24
+ dir: "ltr",
30
25
  className: `
31
26
  relative inline-flex h-6 w-11 cursor-pointer items-center rounded-full transition-colors duration-200
32
27
  focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ds-focus focus-visible:ring-offset-2 focus-visible:ring-offset-ds-surface-1
33
28
  disabled:cursor-not-allowed disabled:opacity-50
34
- ${checked ? "bg-ds-accent" : ""}
29
+ ${checked ? "bg-ds-accent" : "bg-ds-surface-5 ring-1 ring-ds-border-field"}
35
30
  `.trim().replace(/\s+/g, " "),
36
31
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
37
32
  ref,
@@ -40,25 +35,11 @@ var Switch = (0, react.forwardRef)(({ className = "", label, error, id, checked,
40
35
  className: "sr-only",
41
36
  checked,
42
37
  ...props
43
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: `
44
- pointer-events-none
45
- inline-block
46
- h-4
47
- w-4
48
- transform
49
- rounded-full
50
- bg-ds-surface-1
51
- shadow-lg
52
- ring-0
53
- transition-transform
54
- duration-300
55
- ease-in-out
56
- ${checked ? isRtl ? "translate-x-1" : "translate-x-6" : isRtl ? "translate-x-6" : "translate-x-1"}
57
- `.trim().replace(/\s+/g, " ") })]
38
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: `pointer-events-none inline-block h-4 w-4 rounded-full bg-white shadow-md ring-1 ring-ds-border-field transition-all duration-300 ease-in-out ${thumbClass}` })]
58
39
  }),
59
40
  label && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
60
41
  htmlFor: switchId,
61
- className: `cursor-pointer text-sm font-medium leading-none text-ds-1 peer-disabled:cursor-not-allowed peer-disabled:opacity-70 ${isRtl ? "text-right" : "text-left"}`,
42
+ className: "cursor-pointer text-sm font-medium leading-none text-ds-1 text-start peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
62
43
  children: label
63
44
  }),
64
45
  error && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
@@ -77,4 +58,4 @@ Object.defineProperty(exports, "Switch", {
77
58
  }
78
59
  });
79
60
 
80
- //# sourceMappingURL=switch-DPyzVrNh.cjs.map
61
+ //# sourceMappingURL=switch-X3l8xnle.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch-X3l8xnle.cjs","names":[],"sources":["../../src/components/forms/switch/Switch.tsx"],"sourcesContent":["import { forwardRef, useId } from \"react\";\n\nimport type { SwitchProps } from \"./types\";\n\nconst sanitizeId = (value: string) => value.replace(/[^a-zA-Z0-9_-]/g, \"-\");\n\nfunction getEffectiveDir(dir: string | undefined): \"ltr\" | \"rtl\" {\n if (dir === \"rtl\" || dir === \"ltr\") return dir;\n if (typeof document !== \"undefined\") {\n if (document.documentElement.getAttribute(\"dir\") === \"rtl\") return \"rtl\";\n }\n return \"ltr\";\n}\n\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(\n ({ className = \"\", label, error, id, checked, dir, ...props }, ref) => {\n const generatedId = useId();\n const switchId = id || `switch-${sanitizeId(generatedId)}`;\n const isRtl = getEffectiveDir(dir) === \"rtl\";\n\n const thumbClass = checked\n ? isRtl\n ? \"translate-x-1\"\n : \"translate-x-6\"\n : isRtl\n ? \"translate-x-6\"\n : \"translate-x-1\";\n\n return (\n <div\n className={`flex items-center gap-2 ${className}`.trim().replace(/\\s+/g, \" \")}\n dir={dir}\n >\n <label\n htmlFor={switchId}\n dir=\"ltr\"\n className={`\n relative inline-flex h-6 w-11 cursor-pointer items-center rounded-full transition-colors duration-200\n focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ds-focus focus-visible:ring-offset-2 focus-visible:ring-offset-ds-surface-1\n disabled:cursor-not-allowed disabled:opacity-50\n ${checked ? \"bg-ds-accent\" : \"bg-ds-surface-5 ring-1 ring-ds-border-field\"}\n `\n .trim()\n .replace(/\\s+/g, \" \")}\n >\n <input\n ref={ref}\n type=\"checkbox\"\n id={switchId}\n className=\"sr-only\"\n checked={checked}\n {...props}\n />\n <span\n className={`pointer-events-none inline-block h-4 w-4 rounded-full bg-white shadow-md ring-1 ring-ds-border-field transition-all duration-300 ease-in-out ${thumbClass}`}\n />\n </label>\n {label && (\n <label\n htmlFor={switchId}\n className=\"cursor-pointer text-sm font-medium leading-none text-ds-1 text-start peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n >\n {label}\n </label>\n )}\n {error && (\n <p className=\"text-sm font-medium text-destructive mt-1\">{error}</p>\n )}\n </div>\n );\n },\n);\n\nSwitch.displayName = \"Switch\";\n"],"mappings":";;;;AAIA,IAAM,cAAc,UAAkB,MAAM,QAAQ,mBAAmB,IAAI;AAE3E,SAAS,gBAAgB,KAAwC;AAC/D,KAAI,QAAQ,SAAS,QAAQ,MAAO,QAAO;AAC3C,KAAI,OAAO,aAAa;MAClB,SAAS,gBAAgB,aAAa,MAAM,KAAK,MAAO,QAAO;;AAErE,QAAO;;AAGT,IAAa,UAAA,GAAA,MAAA,aACV,EAAE,YAAY,IAAI,OAAO,OAAO,IAAI,SAAS,KAAK,GAAG,SAAS,QAAQ;CACrE,MAAM,eAAA,GAAA,MAAA,QAAqB;CAC3B,MAAM,WAAW,MAAM,UAAU,WAAW,YAAY;CACxD,MAAM,QAAQ,gBAAgB,IAAI,KAAK;CAEvC,MAAM,aAAa,UACf,QACE,kBACA,kBACF,QACE,kBACA;AAEN,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EACE,WAAW,2BAA2B,YAAY,MAAM,CAAC,QAAQ,QAAQ,IAAI;EACxE;YAFP;GAIE,iBAAA,GAAA,kBAAA,MAAC,SAAD;IACE,SAAS;IACT,KAAI;IACJ,WAAW;;;;cAIP,UAAU,iBAAiB,8CAA8C;YAE1E,MAAM,CACN,QAAQ,QAAQ,IAAI;cAVzB,CAYE,iBAAA,GAAA,kBAAA,KAAC,SAAD;KACO;KACL,MAAK;KACL,IAAI;KACJ,WAAU;KACD;KACT,GAAI;KACJ,CAAA,EACF,iBAAA,GAAA,kBAAA,KAAC,QAAD,EACE,WAAW,gJAAgJ,cAC3J,CAAA,CACI;;GACP,SACC,iBAAA,GAAA,kBAAA,KAAC,SAAD;IACE,SAAS;IACT,WAAU;cAET;IACK,CAAA;GAET,SACC,iBAAA,GAAA,kBAAA,KAAC,KAAD;IAAG,WAAU;cAA6C;IAAU,CAAA;GAElE;;EAGX;AAED,OAAO,cAAc"}
@@ -2,35 +2,30 @@ import { forwardRef, useId } from "react";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  //#region src/components/forms/switch/Switch.tsx
4
4
  var sanitizeId = (value) => value.replace(/[^a-zA-Z0-9_-]/g, "-");
5
- var rtlLanguages = /^(ar|fa|ur|he)(-|$)/i;
6
- function resolveDirection(direction) {
7
- if (direction === "rtl" || direction === "ltr") return direction;
5
+ function getEffectiveDir(dir) {
6
+ if (dir === "rtl" || dir === "ltr") return dir;
8
7
  if (typeof document !== "undefined") {
9
- const explicitDirection = document.documentElement.getAttribute("dir") ?? void 0;
10
- if (explicitDirection === "rtl" || explicitDirection === "ltr") return explicitDirection;
8
+ if (document.documentElement.getAttribute("dir") === "rtl") return "rtl";
11
9
  }
12
- if (typeof navigator !== "undefined" && rtlLanguages.test(navigator.language)) return "rtl";
13
10
  return "ltr";
14
11
  }
15
12
  var Switch = forwardRef(({ className = "", label, error, id, checked, dir, ...props }, ref) => {
16
13
  const generatedId = useId();
17
14
  const switchId = id || `switch-${sanitizeId(generatedId)}`;
18
- const isRtl = resolveDirection(dir) === "rtl";
15
+ const isRtl = getEffectiveDir(dir) === "rtl";
16
+ const thumbClass = checked ? isRtl ? "translate-x-1" : "translate-x-6" : isRtl ? "translate-x-6" : "translate-x-1";
19
17
  return /* @__PURE__ */ jsxs("div", {
20
18
  className: `flex items-center gap-2 ${className}`.trim().replace(/\s+/g, " "),
21
19
  dir,
22
20
  children: [
23
21
  /* @__PURE__ */ jsxs("label", {
24
22
  htmlFor: switchId,
25
- style: {
26
- borderRadius: "var(--border-radius-full, 9999px)",
27
- ...checked ? {} : { background: "#E0E5F2" }
28
- },
23
+ dir: "ltr",
29
24
  className: `
30
25
  relative inline-flex h-6 w-11 cursor-pointer items-center rounded-full transition-colors duration-200
31
26
  focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ds-focus focus-visible:ring-offset-2 focus-visible:ring-offset-ds-surface-1
32
27
  disabled:cursor-not-allowed disabled:opacity-50
33
- ${checked ? "bg-ds-accent" : ""}
28
+ ${checked ? "bg-ds-accent" : "bg-ds-surface-5 ring-1 ring-ds-border-field"}
34
29
  `.trim().replace(/\s+/g, " "),
35
30
  children: [/* @__PURE__ */ jsx("input", {
36
31
  ref,
@@ -39,25 +34,11 @@ var Switch = forwardRef(({ className = "", label, error, id, checked, dir, ...pr
39
34
  className: "sr-only",
40
35
  checked,
41
36
  ...props
42
- }), /* @__PURE__ */ jsx("span", { className: `
43
- pointer-events-none
44
- inline-block
45
- h-4
46
- w-4
47
- transform
48
- rounded-full
49
- bg-ds-surface-1
50
- shadow-lg
51
- ring-0
52
- transition-transform
53
- duration-300
54
- ease-in-out
55
- ${checked ? isRtl ? "translate-x-1" : "translate-x-6" : isRtl ? "translate-x-6" : "translate-x-1"}
56
- `.trim().replace(/\s+/g, " ") })]
37
+ }), /* @__PURE__ */ jsx("span", { className: `pointer-events-none inline-block h-4 w-4 rounded-full bg-white shadow-md ring-1 ring-ds-border-field transition-all duration-300 ease-in-out ${thumbClass}` })]
57
38
  }),
58
39
  label && /* @__PURE__ */ jsx("label", {
59
40
  htmlFor: switchId,
60
- className: `cursor-pointer text-sm font-medium leading-none text-ds-1 peer-disabled:cursor-not-allowed peer-disabled:opacity-70 ${isRtl ? "text-right" : "text-left"}`,
41
+ className: "cursor-pointer text-sm font-medium leading-none text-ds-1 text-start peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
61
42
  children: label
62
43
  }),
63
44
  error && /* @__PURE__ */ jsx("p", {
@@ -71,4 +52,4 @@ Switch.displayName = "Switch";
71
52
  //#endregion
72
53
  export { Switch as t };
73
54
 
74
- //# sourceMappingURL=switch-C1gKE0m0.mjs.map
55
+ //# sourceMappingURL=switch-iPsN1NS2.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch-iPsN1NS2.mjs","names":[],"sources":["../../src/components/forms/switch/Switch.tsx"],"sourcesContent":["import { forwardRef, useId } from \"react\";\n\nimport type { SwitchProps } from \"./types\";\n\nconst sanitizeId = (value: string) => value.replace(/[^a-zA-Z0-9_-]/g, \"-\");\n\nfunction getEffectiveDir(dir: string | undefined): \"ltr\" | \"rtl\" {\n if (dir === \"rtl\" || dir === \"ltr\") return dir;\n if (typeof document !== \"undefined\") {\n if (document.documentElement.getAttribute(\"dir\") === \"rtl\") return \"rtl\";\n }\n return \"ltr\";\n}\n\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(\n ({ className = \"\", label, error, id, checked, dir, ...props }, ref) => {\n const generatedId = useId();\n const switchId = id || `switch-${sanitizeId(generatedId)}`;\n const isRtl = getEffectiveDir(dir) === \"rtl\";\n\n const thumbClass = checked\n ? isRtl\n ? \"translate-x-1\"\n : \"translate-x-6\"\n : isRtl\n ? \"translate-x-6\"\n : \"translate-x-1\";\n\n return (\n <div\n className={`flex items-center gap-2 ${className}`.trim().replace(/\\s+/g, \" \")}\n dir={dir}\n >\n <label\n htmlFor={switchId}\n dir=\"ltr\"\n className={`\n relative inline-flex h-6 w-11 cursor-pointer items-center rounded-full transition-colors duration-200\n focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ds-focus focus-visible:ring-offset-2 focus-visible:ring-offset-ds-surface-1\n disabled:cursor-not-allowed disabled:opacity-50\n ${checked ? \"bg-ds-accent\" : \"bg-ds-surface-5 ring-1 ring-ds-border-field\"}\n `\n .trim()\n .replace(/\\s+/g, \" \")}\n >\n <input\n ref={ref}\n type=\"checkbox\"\n id={switchId}\n className=\"sr-only\"\n checked={checked}\n {...props}\n />\n <span\n className={`pointer-events-none inline-block h-4 w-4 rounded-full bg-white shadow-md ring-1 ring-ds-border-field transition-all duration-300 ease-in-out ${thumbClass}`}\n />\n </label>\n {label && (\n <label\n htmlFor={switchId}\n className=\"cursor-pointer text-sm font-medium leading-none text-ds-1 text-start peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n >\n {label}\n </label>\n )}\n {error && (\n <p className=\"text-sm font-medium text-destructive mt-1\">{error}</p>\n )}\n </div>\n );\n },\n);\n\nSwitch.displayName = \"Switch\";\n"],"mappings":";;;AAIA,IAAM,cAAc,UAAkB,MAAM,QAAQ,mBAAmB,IAAI;AAE3E,SAAS,gBAAgB,KAAwC;AAC/D,KAAI,QAAQ,SAAS,QAAQ,MAAO,QAAO;AAC3C,KAAI,OAAO,aAAa;MAClB,SAAS,gBAAgB,aAAa,MAAM,KAAK,MAAO,QAAO;;AAErE,QAAO;;AAGT,IAAa,SAAS,YACnB,EAAE,YAAY,IAAI,OAAO,OAAO,IAAI,SAAS,KAAK,GAAG,SAAS,QAAQ;CACrE,MAAM,cAAc,OAAO;CAC3B,MAAM,WAAW,MAAM,UAAU,WAAW,YAAY;CACxD,MAAM,QAAQ,gBAAgB,IAAI,KAAK;CAEvC,MAAM,aAAa,UACf,QACE,kBACA,kBACF,QACE,kBACA;AAEN,QACE,qBAAC,OAAD;EACE,WAAW,2BAA2B,YAAY,MAAM,CAAC,QAAQ,QAAQ,IAAI;EACxE;YAFP;GAIE,qBAAC,SAAD;IACE,SAAS;IACT,KAAI;IACJ,WAAW;;;;cAIP,UAAU,iBAAiB,8CAA8C;YAE1E,MAAM,CACN,QAAQ,QAAQ,IAAI;cAVzB,CAYE,oBAAC,SAAD;KACO;KACL,MAAK;KACL,IAAI;KACJ,WAAU;KACD;KACT,GAAI;KACJ,CAAA,EACF,oBAAC,QAAD,EACE,WAAW,gJAAgJ,cAC3J,CAAA,CACI;;GACP,SACC,oBAAC,SAAD;IACE,SAAS;IACT,WAAU;cAET;IACK,CAAA;GAET,SACC,oBAAC,KAAD;IAAG,WAAU;cAA6C;IAAU,CAAA;GAElE;;EAGX;AAED,OAAO,cAAc"}
@@ -1,3 +1,11 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_color_palette = require("./chunks/color-palette-BmQC14gE.cjs");
2
+ const require_color_palette = require("./chunks/color-palette-pLh6En3n.cjs");
3
3
  exports.ColorPalette = require_color_palette.ColorPalette;
4
+ exports.accentGroup = require_color_palette.accentGroup;
5
+ exports.accentScaleGroup = require_color_palette.accentScaleGroup;
6
+ exports.borderGroup = require_color_palette.borderGroup;
7
+ exports.brandGroup = require_color_palette.brandGroup;
8
+ exports.defaultGroups = require_color_palette.defaultGroups;
9
+ exports.statusGroup = require_color_palette.statusGroup;
10
+ exports.surfaceGroup = require_color_palette.surfaceGroup;
11
+ exports.textGroup = require_color_palette.textGroup;
@@ -1,2 +1,2 @@
1
- import { t as ColorPalette } from "./chunks/color-palette-DnX1sODj.mjs";
2
- export { ColorPalette };
1
+ import { a as brandGroup, c as surfaceGroup, i as borderGroup, l as textGroup, n as accentGroup, o as defaultGroups, r as accentScaleGroup, s as statusGroup, t as ColorPalette } from "./chunks/color-palette-C3lesasJ.mjs";
2
+ export { ColorPalette, accentGroup, accentScaleGroup, borderGroup, brandGroup, defaultGroups, statusGroup, surfaceGroup, textGroup };
package/dist/combobox.cjs CHANGED
@@ -1,3 +1,3 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_combobox = require("./chunks/combobox-Ca7-BcLO.cjs");
2
+ const require_combobox = require("./chunks/combobox-CtNrGmuR.cjs");
3
3
  exports.Combobox = require_combobox.Combobox;
package/dist/combobox.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import { t as Combobox } from "./chunks/combobox-0n1_tB8L.mjs";
1
+ import { t as Combobox } from "./chunks/combobox-B6yk5U82.mjs";
2
2
  export { Combobox };
@@ -13,6 +13,11 @@ interface BarChartProps {
13
13
  className?: string;
14
14
  layout?: "horizontal" | "vertical";
15
15
  maxBarSize?: number;
16
+ /**
17
+ * Compact mode — strips axes, grid, tooltip, and margins.
18
+ * Designed for small sparkline-style zones (e.g. StatCard md, ~130×68 px).
19
+ */
20
+ compact?: boolean;
16
21
  }
17
22
  export declare const BarChart: React.FC<BarChartProps>;
18
23
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"BarChart.d.ts","sourceRoot":"","sources":["../../../../src/components/data-display/charts/BarChart.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAoB1B,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CAChC;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,UAAU,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7C,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA2G5C,CAAC"}
1
+ {"version":3,"file":"BarChart.d.ts","sourceRoot":"","sources":["../../../../src/components/data-display/charts/BarChart.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAoB1B,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CAChC;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,UAAU,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7C,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAgI5C,CAAC"}
@@ -1,6 +1,6 @@
1
1
  export type ChipVariant = "filled" | "outlined" | "soft" | "glass";
2
2
  export type ChipColor = "default" | "primary" | "secondary" | "success" | "warning" | "error" | "info";
3
- export type ChipSize = "sm" | "md" | "lg";
3
+ export type ChipSize = "xs" | "sm" | "md" | "lg";
4
4
  export interface ChipProps {
5
5
  /** The content of the chip */
6
6
  children: React.ReactNode;