@etus/ui 0.4.0-beta.6 → 0.4.0-beta.8

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 (225) hide show
  1. package/dist/{chunk-2Y7PQ6ZL.js → chunk-237TQKWH.js} +4 -4
  2. package/dist/{chunk-2Y7PQ6ZL.js.map → chunk-237TQKWH.js.map} +1 -1
  3. package/dist/{chunk-KR3IVNQH.js → chunk-2FJJOHHH.js} +16 -10
  4. package/dist/chunk-2FJJOHHH.js.map +1 -0
  5. package/dist/{chunk-W4NC5CU5.js → chunk-2Q4I4VDB.js} +4 -4
  6. package/dist/{chunk-W4NC5CU5.js.map → chunk-2Q4I4VDB.js.map} +1 -1
  7. package/dist/{chunk-2HM5Z2YP.js → chunk-2YWWZEPE.js} +3 -3
  8. package/dist/{chunk-2HM5Z2YP.js.map → chunk-2YWWZEPE.js.map} +1 -1
  9. package/dist/chunk-2Z722V5K.js +231 -0
  10. package/dist/chunk-2Z722V5K.js.map +1 -0
  11. package/dist/chunk-37IIHQP4.js +233 -0
  12. package/dist/chunk-37IIHQP4.js.map +1 -0
  13. package/dist/{chunk-UFRMZ3M6.js → chunk-3JCV72FO.js} +6 -2
  14. package/dist/chunk-3JCV72FO.js.map +1 -0
  15. package/dist/{chunk-HT5XM6XK.js → chunk-43BS3PPX.js} +3 -3
  16. package/dist/{chunk-HT5XM6XK.js.map → chunk-43BS3PPX.js.map} +1 -1
  17. package/dist/{chunk-2UGDLAYC.js → chunk-45D4O7RK.js} +10 -3
  18. package/dist/chunk-45D4O7RK.js.map +1 -0
  19. package/dist/{chunk-32IJQOUV.js → chunk-4EYYCHLD.js} +4 -4
  20. package/dist/{chunk-32IJQOUV.js.map → chunk-4EYYCHLD.js.map} +1 -1
  21. package/dist/{chunk-J62TFQHR.js → chunk-5I7AXWJU.js} +13 -13
  22. package/dist/chunk-5I7AXWJU.js.map +1 -0
  23. package/dist/{chunk-65YSTUD2.js → chunk-5SUD32RK.js} +44 -14
  24. package/dist/chunk-5SUD32RK.js.map +1 -0
  25. package/dist/{chunk-23BHD62H.js → chunk-5TZDEGZN.js} +4 -4
  26. package/dist/chunk-5TZDEGZN.js.map +1 -0
  27. package/dist/{chunk-VPNFYQBL.js → chunk-6DN2UAIR.js} +3 -3
  28. package/dist/chunk-6DN2UAIR.js.map +1 -0
  29. package/dist/{chunk-EGYWK2XX.js → chunk-7CTFBOD4.js} +3 -3
  30. package/dist/{chunk-EGYWK2XX.js.map → chunk-7CTFBOD4.js.map} +1 -1
  31. package/dist/{chunk-36XTKR3B.js → chunk-BMNCNBPA.js} +3 -3
  32. package/dist/{chunk-36XTKR3B.js.map → chunk-BMNCNBPA.js.map} +1 -1
  33. package/dist/{chunk-AWYOWR5N.js → chunk-C5HSYDJC.js} +3 -3
  34. package/dist/{chunk-AWYOWR5N.js.map → chunk-C5HSYDJC.js.map} +1 -1
  35. package/dist/{chunk-VFALJSXB.js → chunk-DCUFQJYP.js} +3 -3
  36. package/dist/chunk-DCUFQJYP.js.map +1 -0
  37. package/dist/{chunk-LATTRPLQ.js → chunk-E2TI5V67.js} +3 -3
  38. package/dist/{chunk-LATTRPLQ.js.map → chunk-E2TI5V67.js.map} +1 -1
  39. package/dist/{chunk-IRKDMISK.js → chunk-G2MAGZHQ.js} +4 -3
  40. package/dist/chunk-G2MAGZHQ.js.map +1 -0
  41. package/dist/{chunk-ONQCNOLU.js → chunk-HDOR3SN3.js} +3 -3
  42. package/dist/{chunk-ONQCNOLU.js.map → chunk-HDOR3SN3.js.map} +1 -1
  43. package/dist/{chunk-PLLJNHWU.js → chunk-HI3T55XK.js} +3 -33
  44. package/dist/chunk-HI3T55XK.js.map +1 -0
  45. package/dist/chunk-HJ4E6YPW.js +236 -0
  46. package/dist/chunk-HJ4E6YPW.js.map +1 -0
  47. package/dist/{chunk-LS3WD6IZ.js → chunk-I55QJ4CU.js} +4 -4
  48. package/dist/{chunk-LS3WD6IZ.js.map → chunk-I55QJ4CU.js.map} +1 -1
  49. package/dist/{chunk-HKXQLWGR.js → chunk-IOWHM7ZY.js} +13 -11
  50. package/dist/chunk-IOWHM7ZY.js.map +1 -0
  51. package/dist/{chunk-ILAV2AZ4.js → chunk-IZC5YFGO.js} +3 -3
  52. package/dist/{chunk-ILAV2AZ4.js.map → chunk-IZC5YFGO.js.map} +1 -1
  53. package/dist/{chunk-Y7UFBSAD.js → chunk-KHOCAVQO.js} +3 -3
  54. package/dist/{chunk-Y7UFBSAD.js.map → chunk-KHOCAVQO.js.map} +1 -1
  55. package/dist/{chunk-IBVCSZCH.js → chunk-KVJOKWP4.js} +5 -4
  56. package/dist/chunk-KVJOKWP4.js.map +1 -0
  57. package/dist/{chunk-KC6CHPT3.js → chunk-KZRTQF64.js} +3 -3
  58. package/dist/{chunk-KC6CHPT3.js.map → chunk-KZRTQF64.js.map} +1 -1
  59. package/dist/{chunk-QIETN4UU.js → chunk-LEAK22ZP.js} +3 -3
  60. package/dist/{chunk-QIETN4UU.js.map → chunk-LEAK22ZP.js.map} +1 -1
  61. package/dist/{chunk-OWOVCGUZ.js → chunk-M2C7HBR5.js} +3 -3
  62. package/dist/{chunk-OWOVCGUZ.js.map → chunk-M2C7HBR5.js.map} +1 -1
  63. package/dist/{chunk-33JGPMUW.js → chunk-M7TPROVH.js} +20 -7
  64. package/dist/chunk-M7TPROVH.js.map +1 -0
  65. package/dist/{chunk-AVR3LVOQ.js → chunk-MQMRVBUL.js} +4 -4
  66. package/dist/{chunk-AVR3LVOQ.js.map → chunk-MQMRVBUL.js.map} +1 -1
  67. package/dist/{chunk-KPNNSUXM.js → chunk-O7AUE5GP.js} +5 -3
  68. package/dist/chunk-O7AUE5GP.js.map +1 -0
  69. package/dist/{chunk-6HEURMY3.js → chunk-OCXGG7UP.js} +5 -5
  70. package/dist/{chunk-6HEURMY3.js.map → chunk-OCXGG7UP.js.map} +1 -1
  71. package/dist/{chunk-V7XHE25E.js → chunk-ON7WFRYH.js} +3 -3
  72. package/dist/{chunk-V7XHE25E.js.map → chunk-ON7WFRYH.js.map} +1 -1
  73. package/dist/{chunk-FSMHI7DW.js → chunk-OXDWUKGP.js} +3 -3
  74. package/dist/chunk-OXDWUKGP.js.map +1 -0
  75. package/dist/{chunk-SJSYKUCL.js → chunk-Q335YODG.js} +3 -3
  76. package/dist/{chunk-SJSYKUCL.js.map → chunk-Q335YODG.js.map} +1 -1
  77. package/dist/{chunk-DDM2I5C6.js → chunk-R5OIL4I4.js} +3 -3
  78. package/dist/{chunk-DDM2I5C6.js.map → chunk-R5OIL4I4.js.map} +1 -1
  79. package/dist/{chunk-FYJHWYPM.js → chunk-S524YVMO.js} +3 -3
  80. package/dist/{chunk-FYJHWYPM.js.map → chunk-S524YVMO.js.map} +1 -1
  81. package/dist/{chunk-OWIFNJXZ.js → chunk-S7TVRVRU.js} +3 -3
  82. package/dist/chunk-S7TVRVRU.js.map +1 -0
  83. package/dist/{chunk-TNROOKX3.js → chunk-UDY3IDCY.js} +10 -2
  84. package/dist/chunk-UDY3IDCY.js.map +1 -0
  85. package/dist/{chunk-3WOGOTOV.js → chunk-UPYT2XM5.js} +7 -7
  86. package/dist/chunk-UPYT2XM5.js.map +1 -0
  87. package/dist/{chunk-YWA63YN3.js → chunk-VAVE4ZJF.js} +2 -2
  88. package/dist/chunk-VAVE4ZJF.js.map +1 -0
  89. package/dist/chunk-WKWLKGNI.js +643 -0
  90. package/dist/chunk-WKWLKGNI.js.map +1 -0
  91. package/dist/{chunk-Z3FL7LEK.js → chunk-X253YD45.js} +71 -6
  92. package/dist/chunk-X253YD45.js.map +1 -0
  93. package/dist/{chunk-6XY7QYVR.js → chunk-X3AXEE3S.js} +3 -3
  94. package/dist/{chunk-6XY7QYVR.js.map → chunk-X3AXEE3S.js.map} +1 -1
  95. package/dist/{chunk-R4UOT76L.js → chunk-XAIUZJOJ.js} +8 -8
  96. package/dist/chunk-XAIUZJOJ.js.map +1 -0
  97. package/dist/{chunk-ZO2EKJZM.js → chunk-XCZMJA2D.js} +7 -7
  98. package/dist/{chunk-ZO2EKJZM.js.map → chunk-XCZMJA2D.js.map} +1 -1
  99. package/dist/{chunk-XRMKL43Y.js → chunk-XOLV7G4S.js} +3 -3
  100. package/dist/{chunk-XRMKL43Y.js.map → chunk-XOLV7G4S.js.map} +1 -1
  101. package/dist/chunk-XYYOV5GW.js +186 -0
  102. package/dist/chunk-XYYOV5GW.js.map +1 -0
  103. package/dist/{chunk-4MQNDQ4O.js → chunk-YACIRNVP.js} +12 -4
  104. package/dist/chunk-YACIRNVP.js.map +1 -0
  105. package/dist/{chunk-JKYB5QAP.js → chunk-YDZBLZVZ.js} +3 -3
  106. package/dist/{chunk-JKYB5QAP.js.map → chunk-YDZBLZVZ.js.map} +1 -1
  107. package/dist/{chunk-5XQIH6WM.js → chunk-YM5YBDRM.js} +4 -4
  108. package/dist/{chunk-5XQIH6WM.js.map → chunk-YM5YBDRM.js.map} +1 -1
  109. package/dist/{chunk-AUCDXPWH.js → chunk-YQX7XZES.js} +4 -4
  110. package/dist/{chunk-AUCDXPWH.js.map → chunk-YQX7XZES.js.map} +1 -1
  111. package/dist/{chunk-CP2PEDG2.js → chunk-Z4KW5VW6.js} +3 -3
  112. package/dist/chunk-Z4KW5VW6.js.map +1 -0
  113. package/dist/{chunk-Y3BOERVB.js → chunk-ZEFK3AXP.js} +3 -3
  114. package/dist/{chunk-Y3BOERVB.js.map → chunk-ZEFK3AXP.js.map} +1 -1
  115. package/dist/{chunk-L3Z5FAJE.js → chunk-ZEYLSDSG.js} +3 -3
  116. package/dist/{chunk-L3Z5FAJE.js.map → chunk-ZEYLSDSG.js.map} +1 -1
  117. package/dist/components/advanced/Calendar/index.js +3 -3
  118. package/dist/components/advanced/Command/index.js +1 -1
  119. package/dist/components/advanced/EventCalendar/index.js +3 -3
  120. package/dist/components/advanced/FileDropzone/index.js +1 -1
  121. package/dist/components/advanced/FilterBuilder/index.js +3 -3
  122. package/dist/components/advanced/MarkdownEditor/index.js +2 -2
  123. package/dist/components/advanced/ReportBuilder/index.js +2 -2
  124. package/dist/components/advanced/RichTextEditor/index.js +2 -2
  125. package/dist/components/advanced/index.js +13 -13
  126. package/dist/components/data-display/AreaChart/index.js +1 -1
  127. package/dist/components/data-display/BarChart/index.js +1 -1
  128. package/dist/components/data-display/Carousel/index.js +3 -3
  129. package/dist/components/data-display/ChartCard/index.js +2 -2
  130. package/dist/components/data-display/DashboardFilterbar/index.js +5 -5
  131. package/dist/components/data-display/DataTable/FilterBuilder/index.js +3 -3
  132. package/dist/components/data-display/DataTable/index.js +6 -6
  133. package/dist/components/data-display/ImageGallery/index.js +6 -6
  134. package/dist/components/data-display/KPICard/index.js +3 -3
  135. package/dist/components/data-display/Lightbox/index.js +1 -1
  136. package/dist/components/data-display/LineChart/index.js +1 -1
  137. package/dist/components/data-display/List/index.js +2 -2
  138. package/dist/components/data-display/Table/index.js +1 -1
  139. package/dist/components/data-display/VirtualTable/index.js +2 -2
  140. package/dist/components/data-display/index.js +29 -29
  141. package/dist/components/feedback/Alert/index.js +1 -1
  142. package/dist/components/feedback/AlertDialog/index.js +3 -3
  143. package/dist/components/feedback/ConfirmModal/index.js +4 -4
  144. package/dist/components/feedback/Modal/index.js +1 -1
  145. package/dist/components/feedback/index.js +8 -8
  146. package/dist/components/forms/ColorPicker/index.js +1 -1
  147. package/dist/components/forms/DatePicker/index.js +4 -4
  148. package/dist/components/forms/DateRangePicker/index.js +4 -4
  149. package/dist/components/forms/IftaLabel/index.js +1 -1
  150. package/dist/components/forms/InputGroup/index.js +3 -3
  151. package/dist/components/forms/MultiSelect/index.js +2 -1
  152. package/dist/components/forms/RadioButton/index.js +1 -1
  153. package/dist/components/forms/Rating/index.js +1 -1
  154. package/dist/components/forms/Slider/index.js +1 -1
  155. package/dist/components/forms/TagsInput/index.js +2 -2
  156. package/dist/components/forms/ToggleGroup/index.js +1 -1
  157. package/dist/components/forms/index.js +19 -19
  158. package/dist/components/index.js +104 -104
  159. package/dist/components/layout/index.js +2 -2
  160. package/dist/components/navigation/AccountSwitch/index.js +3 -3
  161. package/dist/components/navigation/Drawer/index.js +1 -1
  162. package/dist/components/navigation/DropdownMenu/index.js +1 -1
  163. package/dist/components/navigation/Header/index.js +1 -1
  164. package/dist/components/navigation/MobileSidebar/index.js +3 -3
  165. package/dist/components/navigation/Pagination/index.js +3 -3
  166. package/dist/components/navigation/Sidebar/index.js +3 -3
  167. package/dist/components/navigation/UserProfileDropdown/index.js +1 -1
  168. package/dist/components/navigation/WorkspaceDropdown/index.js +1 -1
  169. package/dist/components/navigation/index.js +13 -13
  170. package/dist/components/primitives/AspectRatio/index.js +1 -1
  171. package/dist/components/primitives/Badge/index.js +1 -1
  172. package/dist/components/primitives/Button/index.js +2 -2
  173. package/dist/components/primitives/ConfirmButton/index.js +4 -4
  174. package/dist/components/primitives/ProgressBar/index.js +1 -1
  175. package/dist/components/primitives/SplitButton/index.js +2 -2
  176. package/dist/components/primitives/StatusIndicator/index.js +1 -1
  177. package/dist/components/primitives/Tag/index.js +1 -1
  178. package/dist/components/primitives/Toggle/index.js +1 -1
  179. package/dist/components/primitives/index.js +16 -16
  180. package/dist/components/workflow/ApprovalFlow/index.js +3 -3
  181. package/dist/components/workflow/CommentSystem/index.js +3 -3
  182. package/dist/components/workflow/Dashboard/index.js +3 -3
  183. package/dist/components/workflow/DashboardBuilder/index.js +3 -3
  184. package/dist/components/workflow/KanbanBoard/index.js +3 -3
  185. package/dist/components/workflow/ReportGenerator/index.js +3 -3
  186. package/dist/components/workflow/TaskStatus/index.js +2 -2
  187. package/dist/components/workflow/Wizard/index.js +3 -3
  188. package/dist/components/workflow/index.js +12 -12
  189. package/dist/index.d.ts +156 -50
  190. package/dist/index.js +104 -104
  191. package/dist/styles.css +23 -0
  192. package/package.json +2 -2
  193. package/dist/chunk-23BHD62H.js.map +0 -1
  194. package/dist/chunk-2UGDLAYC.js.map +0 -1
  195. package/dist/chunk-33JGPMUW.js.map +0 -1
  196. package/dist/chunk-3WOGOTOV.js.map +0 -1
  197. package/dist/chunk-4MQNDQ4O.js.map +0 -1
  198. package/dist/chunk-65YSTUD2.js.map +0 -1
  199. package/dist/chunk-CP2PEDG2.js.map +0 -1
  200. package/dist/chunk-FSMHI7DW.js.map +0 -1
  201. package/dist/chunk-GAP3OZR7.js +0 -223
  202. package/dist/chunk-GAP3OZR7.js.map +0 -1
  203. package/dist/chunk-HKXQLWGR.js.map +0 -1
  204. package/dist/chunk-IBVCSZCH.js.map +0 -1
  205. package/dist/chunk-ICAQYWCX.js +0 -153
  206. package/dist/chunk-ICAQYWCX.js.map +0 -1
  207. package/dist/chunk-IRKDMISK.js.map +0 -1
  208. package/dist/chunk-J62TFQHR.js.map +0 -1
  209. package/dist/chunk-KPNNSUXM.js.map +0 -1
  210. package/dist/chunk-KR3IVNQH.js.map +0 -1
  211. package/dist/chunk-OWIFNJXZ.js.map +0 -1
  212. package/dist/chunk-PLLJNHWU.js.map +0 -1
  213. package/dist/chunk-R4UOT76L.js.map +0 -1
  214. package/dist/chunk-SHS6EGWS.js +0 -226
  215. package/dist/chunk-SHS6EGWS.js.map +0 -1
  216. package/dist/chunk-TNROOKX3.js.map +0 -1
  217. package/dist/chunk-UFRMZ3M6.js.map +0 -1
  218. package/dist/chunk-VFALJSXB.js.map +0 -1
  219. package/dist/chunk-VPNFYQBL.js.map +0 -1
  220. package/dist/chunk-XD5LE64P.js +0 -311
  221. package/dist/chunk-XD5LE64P.js.map +0 -1
  222. package/dist/chunk-XV6NXXXP.js +0 -206
  223. package/dist/chunk-XV6NXXXP.js.map +0 -1
  224. package/dist/chunk-YWA63YN3.js.map +0 -1
  225. package/dist/chunk-Z3FL7LEK.js.map +0 -1
@@ -0,0 +1,233 @@
1
+ import { ChartTooltipContent, ChartContainer, ChartTooltip, ChartLegend, ChartLegendContent } from './chunk-7I6KK6QE.js';
2
+ import { cn } from './chunk-HRNDJU7D.js';
3
+ import * as React from 'react';
4
+ import { BarChart as BarChart$1, CartesianGrid, XAxis, Label, YAxis, Bar } from 'recharts';
5
+ import { jsx, jsxs } from 'react/jsx-runtime';
6
+
7
+ function normalizeSeriesConfig(series) {
8
+ return series.map(
9
+ (s) => typeof s === "string" ? { dataKey: s } : s
10
+ );
11
+ }
12
+ function BarChart({
13
+ allowDecimals = true,
14
+ ariaLabel,
15
+ autoMinValue = false,
16
+ barCategoryGap,
17
+ barGap = 4,
18
+ className,
19
+ config,
20
+ customTooltip,
21
+ data,
22
+ enableLegendSlider = false,
23
+ gridDashArray = "3 3",
24
+ intervalType,
25
+ layout = "vertical",
26
+ legendPosition = "bottom",
27
+ maxValue,
28
+ minValue,
29
+ onValueChange,
30
+ radius = 4,
31
+ series,
32
+ showGrid = true,
33
+ showLegend = false,
34
+ showTooltip = true,
35
+ showXAxis = true,
36
+ showYAxis = true,
37
+ startEndOnly = false,
38
+ tickGap,
39
+ tooltipCallback,
40
+ tooltipIndicator = "dot",
41
+ variant = "default",
42
+ xAxisKey,
43
+ xAxisLabel,
44
+ xAxisTickFormatter,
45
+ yAxisLabel,
46
+ yAxisTickFormatter,
47
+ yAxisWidth,
48
+ ...props
49
+ }) {
50
+ const normalizedSeries = normalizeSeriesConfig(series);
51
+ const isStacked = variant === "stacked" || variant === "stacked100";
52
+ const isHorizontal = layout === "horizontal";
53
+ const prevTooltipStateRef = React.useRef(false);
54
+ const handleBarClick = React.useCallback(
55
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
56
+ (dataKey) => (data2) => {
57
+ if (!onValueChange || !data2?.payload) return;
58
+ const payload = data2.payload;
59
+ const value = payload[dataKey];
60
+ onValueChange({
61
+ category: payload[xAxisKey],
62
+ dataKey,
63
+ payload,
64
+ value: typeof value === "number" ? value : 0
65
+ });
66
+ },
67
+ [onValueChange, xAxisKey]
68
+ );
69
+ const TooltipContentWithCallback = React.useCallback(
70
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
71
+ (props2) => {
72
+ const { active = false, label, payload } = props2;
73
+ if (tooltipCallback && active !== prevTooltipStateRef.current) {
74
+ prevTooltipStateRef.current = active;
75
+ tooltipCallback({
76
+ active,
77
+ label,
78
+ payload: payload?.map((p) => ({
79
+ dataKey: String(p.dataKey),
80
+ value: p.value,
81
+ payload: p.payload
82
+ }))
83
+ });
84
+ }
85
+ return /* @__PURE__ */ jsx(ChartTooltipContent, { indicator: tooltipIndicator, ...props2 });
86
+ },
87
+ [tooltipCallback, tooltipIndicator]
88
+ );
89
+ const valueDomain = React.useMemo(() => {
90
+ const min = minValue ?? (autoMinValue ? "auto" : 0);
91
+ const max = maxValue ?? "auto";
92
+ return [min, max];
93
+ }, [autoMinValue, maxValue, minValue]);
94
+ const categoryTicks = React.useMemo(() => {
95
+ if (!startEndOnly || data.length < 2) return;
96
+ const first = data[0];
97
+ const last = data[data.length - 1];
98
+ if (!first || !last) return;
99
+ return [first[xAxisKey], last[xAxisKey]];
100
+ }, [data, startEndOnly, xAxisKey]);
101
+ return /* @__PURE__ */ jsx(
102
+ "div",
103
+ {
104
+ "aria-label": ariaLabel,
105
+ "data-slot": "bar-chart",
106
+ role: ariaLabel ? "img" : void 0,
107
+ ...props,
108
+ children: /* @__PURE__ */ jsx(
109
+ ChartContainer,
110
+ {
111
+ className: cn(className),
112
+ config,
113
+ children: /* @__PURE__ */ jsxs(
114
+ BarChart$1,
115
+ {
116
+ accessibilityLayer: true,
117
+ margin: {
118
+ left: yAxisLabel ? 20 : 12,
119
+ right: 12,
120
+ bottom: xAxisLabel ? 20 : 0
121
+ },
122
+ barCategoryGap,
123
+ barGap,
124
+ data,
125
+ layout: isHorizontal ? "vertical" : "horizontal",
126
+ children: [
127
+ showGrid && /* @__PURE__ */ jsx(
128
+ CartesianGrid,
129
+ {
130
+ horizontal: !isHorizontal,
131
+ strokeDasharray: gridDashArray,
132
+ vertical: isHorizontal
133
+ }
134
+ ),
135
+ showXAxis && (isHorizontal ? /* @__PURE__ */ jsx(
136
+ XAxis,
137
+ {
138
+ axisLine: false,
139
+ domain: valueDomain,
140
+ interval: intervalType,
141
+ minTickGap: tickGap,
142
+ tickFormatter: xAxisTickFormatter,
143
+ tickLine: false,
144
+ tickMargin: 8,
145
+ type: "number",
146
+ children: xAxisLabel && /* @__PURE__ */ jsx(Label, { offset: -5, position: "insideBottom", value: xAxisLabel })
147
+ }
148
+ ) : /* @__PURE__ */ jsx(
149
+ XAxis,
150
+ {
151
+ axisLine: false,
152
+ dataKey: xAxisKey,
153
+ interval: intervalType,
154
+ minTickGap: tickGap,
155
+ tickFormatter: xAxisTickFormatter,
156
+ tickLine: false,
157
+ tickMargin: 8,
158
+ ticks: categoryTicks,
159
+ children: xAxisLabel && /* @__PURE__ */ jsx(Label, { offset: -5, position: "insideBottom", value: xAxisLabel })
160
+ }
161
+ )),
162
+ showYAxis && (isHorizontal ? /* @__PURE__ */ jsx(
163
+ YAxis,
164
+ {
165
+ axisLine: false,
166
+ dataKey: xAxisKey,
167
+ tickFormatter: yAxisTickFormatter,
168
+ tickLine: false,
169
+ tickMargin: 8,
170
+ ticks: categoryTicks,
171
+ type: "category",
172
+ width: yAxisWidth,
173
+ children: yAxisLabel && /* @__PURE__ */ jsx(Label, { angle: -90, offset: -5, position: "insideLeft", value: yAxisLabel })
174
+ }
175
+ ) : /* @__PURE__ */ jsx(
176
+ YAxis,
177
+ {
178
+ allowDecimals,
179
+ axisLine: false,
180
+ domain: valueDomain,
181
+ tickFormatter: yAxisTickFormatter,
182
+ tickLine: false,
183
+ tickMargin: 8,
184
+ width: yAxisWidth,
185
+ children: yAxisLabel && /* @__PURE__ */ jsx(Label, { angle: -90, offset: -5, position: "insideLeft", value: yAxisLabel })
186
+ }
187
+ )),
188
+ showTooltip && /* @__PURE__ */ jsx(
189
+ ChartTooltip,
190
+ {
191
+ content: customTooltip ?? (tooltipCallback ? /* @__PURE__ */ jsx(TooltipContentWithCallback, {}) : /* @__PURE__ */ jsx(ChartTooltipContent, { indicator: tooltipIndicator })),
192
+ cursor: false
193
+ }
194
+ ),
195
+ showLegend && /* @__PURE__ */ jsx(
196
+ ChartLegend,
197
+ {
198
+ align: legendPosition === "left" ? "left" : legendPosition === "right" ? "right" : "center",
199
+ content: /* @__PURE__ */ jsx(ChartLegendContent, { enableSlider: enableLegendSlider }),
200
+ layout: legendPosition === "left" || legendPosition === "right" ? "vertical" : "horizontal",
201
+ verticalAlign: legendPosition === "top" ? "top" : legendPosition === "bottom" ? "bottom" : "middle"
202
+ }
203
+ ),
204
+ normalizedSeries.map((seriesConfig) => {
205
+ const { dataKey, radius: seriesRadius, stackId } = seriesConfig;
206
+ const fill = `var(--color-${dataKey})`;
207
+ const barRadius = seriesRadius ?? radius;
208
+ return /* @__PURE__ */ jsx(
209
+ Bar,
210
+ {
211
+ dataKey,
212
+ fill,
213
+ radius: barRadius,
214
+ stackId: isStacked ? "bar-stack" : stackId,
215
+ style: onValueChange ? { cursor: "pointer" } : void 0,
216
+ onClick: onValueChange ? handleBarClick(dataKey) : void 0
217
+ },
218
+ dataKey
219
+ );
220
+ })
221
+ ]
222
+ }
223
+ )
224
+ }
225
+ )
226
+ }
227
+ );
228
+ }
229
+ BarChart.displayName = "BarChart";
230
+
231
+ export { BarChart };
232
+ //# sourceMappingURL=chunk-37IIHQP4.js.map
233
+ //# sourceMappingURL=chunk-37IIHQP4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/BarChart/BarChart.tsx"],"names":["data","props","RechartsBarChart"],"mappings":"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","file":"chunk-37IIHQP4.js","sourcesContent":["\"use client\"\n\nimport type {\n BarChartProps,\n BarChartSeriesConfig,\n} from \"./BarChart.types\"\n\nimport * as React from \"react\"\nimport {\n Bar,\n CartesianGrid,\n Label,\n BarChart as RechartsBarChart,\n XAxis,\n YAxis,\n} from \"recharts\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n ChartContainer,\n ChartLegend,\n ChartLegendContent,\n ChartTooltip,\n ChartTooltipContent,\n} from \"../Chart\"\n\n/**\n * Normalize series to BarChartSeriesConfig format\n */\nfunction normalizeSeriesConfig(\n series: (BarChartSeriesConfig | string)[]\n): BarChartSeriesConfig[] {\n return series.map((s) =>\n typeof s === \"string\" ? { dataKey: s } : s\n )\n}\n\n/**\n * BarChart - Data visualization component for categorical comparisons\n *\n * Displays quantitative values as rectangular bars. The height or width\n * of bars is proportional to the values they represent. Ideal for\n * comparing values between categories.\n *\n * @example\n * ```tsx\n * const data = [\n * { month: \"Jan\", desktop: 186, mobile: 80 },\n * { month: \"Feb\", desktop: 305, mobile: 200 },\n * ]\n *\n * const config = {\n * desktop: { label: \"Desktop\", color: \"hsl(var(--chart-1))\" },\n * mobile: { label: \"Mobile\", color: \"hsl(var(--chart-2))\" },\n * }\n *\n * <BarChart\n * data={data}\n * config={config}\n * xAxisKey=\"month\"\n * series={[\"desktop\", \"mobile\"]}\n * />\n * ```\n */\nexport function BarChart({\n allowDecimals = true,\n ariaLabel,\n autoMinValue = false,\n barCategoryGap,\n barGap = 4,\n className,\n config,\n customTooltip,\n data,\n enableLegendSlider = false,\n gridDashArray = \"3 3\",\n intervalType,\n layout = \"vertical\",\n legendPosition = \"bottom\",\n maxValue,\n minValue,\n onValueChange,\n radius = 4,\n series,\n showGrid = true,\n showLegend = false,\n showTooltip = true,\n showXAxis = true,\n showYAxis = true,\n startEndOnly = false,\n tickGap,\n tooltipCallback,\n tooltipIndicator = \"dot\",\n variant = \"default\",\n xAxisKey,\n xAxisLabel,\n xAxisTickFormatter,\n yAxisLabel,\n yAxisTickFormatter,\n yAxisWidth,\n ...props\n}: BarChartProps) {\n const normalizedSeries = normalizeSeriesConfig(series)\n const isStacked = variant === \"stacked\" || variant === \"stacked100\"\n const isHorizontal = layout === \"horizontal\"\n const prevTooltipStateRef = React.useRef<boolean>(false)\n\n // Handle bar click for onValueChange\n const handleBarClick = React.useCallback(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (dataKey: string) => (data: any) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (!onValueChange || !data?.payload) return\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const payload = data.payload as Record<string, unknown>\n const value = payload[dataKey]\n onValueChange({\n category: payload[xAxisKey],\n dataKey,\n payload,\n value: typeof value === \"number\" ? value : 0,\n })\n },\n [onValueChange, xAxisKey]\n )\n\n /* eslint-disable react-hooks/static-components, @eslint-react/no-nested-component-definitions, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access -- Intentional: memoized render function with Recharts any-typed props */\n // Custom tooltip content wrapper for tooltipCallback\n const TooltipContentWithCallback = React.useCallback(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (props: any) => {\n const { active = false, label, payload } = props\n\n // Call tooltipCallback when state changes\n if (tooltipCallback && active !== prevTooltipStateRef.current) {\n prevTooltipStateRef.current = active\n tooltipCallback({\n active,\n label,\n payload: payload?.map((p: { dataKey: number | string; payload: Record<string, unknown>; value: number; }) => ({\n dataKey: String(p.dataKey),\n value: p.value,\n payload: p.payload,\n })),\n })\n }\n\n return <ChartTooltipContent indicator={tooltipIndicator} {...props} />\n },\n [tooltipCallback, tooltipIndicator]\n )\n\n // Calculate value axis domain\n const valueDomain = React.useMemo(() => {\n const min = minValue ?? (autoMinValue ? \"auto\" : 0)\n const max = maxValue ?? \"auto\"\n return [min, max] as const\n }, [autoMinValue, maxValue, minValue])\n\n // Calculate category axis ticks for startEndOnly\n const categoryTicks = React.useMemo(() => {\n if (!startEndOnly || data.length < 2) return\n const first = data[0]\n const last = data[data.length - 1]\n if (!first || !last) return\n return [first[xAxisKey], last[xAxisKey]] as string[]\n }, [data, startEndOnly, xAxisKey])\n\n return (\n <div\n aria-label={ariaLabel}\n data-slot=\"bar-chart\"\n role={ariaLabel ? \"img\" : undefined}\n {...props}\n >\n <ChartContainer\n className={cn(className)}\n config={config}\n >\n <RechartsBarChart\n accessibilityLayer\n margin={{\n left: yAxisLabel ? 20 : 12,\n right: 12,\n bottom: xAxisLabel ? 20 : 0,\n }}\n barCategoryGap={barCategoryGap}\n barGap={barGap}\n data={data}\n layout={isHorizontal ? \"vertical\" : \"horizontal\"}\n >\n {showGrid && (\n <CartesianGrid\n horizontal={!isHorizontal}\n strokeDasharray={gridDashArray}\n vertical={isHorizontal}\n />\n )}\n\n {showXAxis && (\n isHorizontal ? (\n <XAxis\n axisLine={false}\n domain={valueDomain}\n interval={intervalType}\n minTickGap={tickGap}\n tickFormatter={xAxisTickFormatter}\n tickLine={false}\n tickMargin={8}\n type=\"number\"\n >\n {xAxisLabel && (\n <Label offset={-5} position=\"insideBottom\" value={xAxisLabel} />\n )}\n </XAxis>\n ) : (\n <XAxis\n axisLine={false}\n dataKey={xAxisKey}\n interval={intervalType}\n minTickGap={tickGap}\n tickFormatter={xAxisTickFormatter}\n tickLine={false}\n tickMargin={8}\n ticks={categoryTicks}\n >\n {xAxisLabel && (\n <Label offset={-5} position=\"insideBottom\" value={xAxisLabel} />\n )}\n </XAxis>\n )\n )}\n\n {showYAxis && (\n isHorizontal ? (\n <YAxis\n axisLine={false}\n dataKey={xAxisKey}\n tickFormatter={yAxisTickFormatter}\n tickLine={false}\n tickMargin={8}\n ticks={categoryTicks}\n type=\"category\"\n width={yAxisWidth}\n >\n {yAxisLabel && (\n <Label angle={-90} offset={-5} position=\"insideLeft\" value={yAxisLabel} />\n )}\n </YAxis>\n ) : (\n <YAxis\n allowDecimals={allowDecimals}\n axisLine={false}\n domain={valueDomain}\n tickFormatter={yAxisTickFormatter}\n tickLine={false}\n tickMargin={8}\n width={yAxisWidth}\n >\n {yAxisLabel && (\n <Label angle={-90} offset={-5} position=\"insideLeft\" value={yAxisLabel} />\n )}\n </YAxis>\n )\n )}\n\n {showTooltip && (\n <ChartTooltip\n content={\n customTooltip\n ?? (tooltipCallback\n ? <TooltipContentWithCallback />\n : <ChartTooltipContent indicator={tooltipIndicator} />)\n }\n cursor={false}\n />\n )}\n\n {showLegend && (\n <ChartLegend\n align={legendPosition === \"left\" ? \"left\" : legendPosition === \"right\" ? \"right\" : \"center\"}\n content={<ChartLegendContent enableSlider={enableLegendSlider} />}\n layout={legendPosition === \"left\" || legendPosition === \"right\" ? \"vertical\" : \"horizontal\"}\n verticalAlign={legendPosition === \"top\" ? \"top\" : legendPosition === \"bottom\" ? \"bottom\" : \"middle\"}\n />\n )}\n\n {normalizedSeries.map((seriesConfig) => {\n const { dataKey, radius: seriesRadius, stackId } = seriesConfig\n\n const fill = `var(--color-${dataKey})`\n const barRadius = seriesRadius ?? radius\n\n return (\n <Bar\n key={dataKey}\n dataKey={dataKey}\n fill={fill}\n radius={barRadius}\n stackId={isStacked ? \"bar-stack\" : stackId}\n style={onValueChange ? { cursor: \"pointer\" } : undefined}\n onClick={onValueChange ? handleBarClick(dataKey) : undefined}\n />\n )\n })}\n </RechartsBarChart>\n </ChartContainer>\n </div>\n )\n}\n\nBarChart.displayName = \"BarChart\"\n"]}
@@ -26,6 +26,8 @@ var progressBarVariants = cva(
26
26
  color: {
27
27
  default: "bg-[color:var(--progress-bar-track-color-default)]",
28
28
  primary: "bg-[color:var(--progress-bar-track-color-primary)]",
29
+ secondary: "bg-[color:var(--progress-bar-track-color-secondary)]",
30
+ info: "bg-[color:var(--progress-bar-track-color-info)]",
29
31
  success: "bg-[color:var(--progress-bar-track-color-success)]",
30
32
  warning: "bg-[color:var(--progress-bar-track-color-warning)]",
31
33
  error: "bg-[color:var(--progress-bar-track-color-error)]"
@@ -47,6 +49,8 @@ var progressBarIndicatorVariants = cva(
47
49
  color: {
48
50
  default: "bg-[color:var(--progress-bar-fill-color-default)]",
49
51
  primary: "bg-[color:var(--progress-bar-fill-color-primary)]",
52
+ secondary: "bg-[color:var(--progress-bar-fill-color-secondary)]",
53
+ info: "bg-[color:var(--progress-bar-fill-color-info)]",
50
54
  success: "bg-[color:var(--progress-bar-fill-color-success)]",
51
55
  warning: "bg-[color:var(--progress-bar-fill-color-warning)]",
52
56
  error: "bg-[color:var(--progress-bar-fill-color-error)]"
@@ -280,5 +284,5 @@ function ProgressBar({
280
284
  }
281
285
 
282
286
  export { ProgressBar, progressBarIndicatorVariants, progressBarLabelVariants, progressBarTooltipVariants, progressBarVariants };
283
- //# sourceMappingURL=chunk-UFRMZ3M6.js.map
284
- //# sourceMappingURL=chunk-UFRMZ3M6.js.map
287
+ //# sourceMappingURL=chunk-3JCV72FO.js.map
288
+ //# sourceMappingURL=chunk-3JCV72FO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/primitives/ProgressBar/ProgressBar.variants.ts","../src/components/primitives/ProgressBar/ProgressBar.tsx"],"names":[],"mappings":"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","file":"chunk-3JCV72FO.js","sourcesContent":["import { cva } from \"class-variance-authority\"\n\n/**\n * ProgressBar root (track) variants\n */\nexport const progressBarVariants = cva(\n \"relative w-full overflow-hidden rounded-[var(--progress-bar-root-border-radius)]\",\n {\n variants: {\n /**\n * Size variant for the progress bar height\n */\n size: {\n xs: \"h-[var(--progress-bar-size-xs-height)]\",\n sm: \"h-[var(--progress-bar-size-sm-height)]\",\n md: \"h-[var(--progress-bar-size-md-height)]\",\n lg: \"h-[var(--progress-bar-size-lg-height)]\",\n xl: \"h-[var(--progress-bar-size-xl-height)]\",\n },\n /**\n * Color variant for the progress bar\n * Affects both track and indicator colors\n */\n color: {\n default: \"bg-[color:var(--progress-bar-track-color-default)]\",\n primary: \"bg-[color:var(--progress-bar-track-color-primary)]\",\n secondary: \"bg-[color:var(--progress-bar-track-color-secondary)]\",\n info: \"bg-[color:var(--progress-bar-track-color-info)]\",\n success: \"bg-[color:var(--progress-bar-track-color-success)]\",\n warning: \"bg-[color:var(--progress-bar-track-color-warning)]\",\n error: \"bg-[color:var(--progress-bar-track-color-error)]\",\n },\n },\n defaultVariants: {\n size: \"md\",\n color: \"default\",\n },\n }\n)\n\n/**\n * ProgressBar indicator (fill) variants\n */\nexport const progressBarIndicatorVariants = cva(\n \"h-full w-full flex-1 rounded-[var(--progress-bar-indicator-border-radius)] transition-all duration-700 ease-out motion-reduce:transition-none\",\n {\n variants: {\n /**\n * Color variant for the indicator fill\n */\n color: {\n default: \"bg-[color:var(--progress-bar-fill-color-default)]\",\n primary: \"bg-[color:var(--progress-bar-fill-color-primary)]\",\n secondary: \"bg-[color:var(--progress-bar-fill-color-secondary)]\",\n info: \"bg-[color:var(--progress-bar-fill-color-info)]\",\n success: \"bg-[color:var(--progress-bar-fill-color-success)]\",\n warning: \"bg-[color:var(--progress-bar-fill-color-warning)]\",\n error: \"bg-[color:var(--progress-bar-fill-color-error)]\",\n },\n },\n defaultVariants: {\n color: \"default\",\n },\n }\n)\n\n/**\n * Label container variants for different positions\n */\nexport const progressBarLabelVariants = cva(\n \"text-[length:var(--progress-bar-label-text-font-size)] font-[var(--progress-bar-label-text-font-weight)] [font-variant-numeric:var(--progress-bar-label-text-tabular-nums)]\",\n {\n variants: {\n /**\n * Label position relative to the progress bar\n */\n position: {\n none: \"sr-only\",\n right: \"ml-[var(--progress-bar-label-position-right-margin-left)] shrink-0 text-[color:var(--progress-bar-label-position-right-color)]\",\n bottom: \"mt-[var(--progress-bar-label-position-bottom-margin-top)] text-[color:var(--progress-bar-label-position-bottom-color)]\",\n \"top-floating\": \"absolute -top-8 text-[color:var(--progress-bar-label-position-floating-color)]\",\n \"bottom-floating\": \"absolute -bottom-8 text-[color:var(--progress-bar-label-position-floating-color)]\",\n },\n },\n defaultVariants: {\n position: \"none\",\n },\n }\n)\n\n/**\n * Floating tooltip variants (for top-floating and bottom-floating)\n */\nexport const progressBarTooltipVariants = cva(\n [\n \"absolute z-10 px-2 py-1 text-xs font-medium tabular-nums\",\n \"rounded-md border bg-background text-foreground shadow-sm\",\n \"transition-all duration-150 ease-out\",\n \"-translate-x-1/2\",\n ],\n {\n variants: {\n /**\n * Tooltip position\n */\n position: {\n top: \"-top-9\",\n bottom: \"-bottom-9\",\n },\n },\n defaultVariants: {\n position: \"top\",\n },\n }\n)\n","\"use client\"\n\nimport type { ProgressBarLabelProps, ProgressBarProps } from \"./ProgressBar.types\"\n\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../../feedback/Tooltip\"\nimport {\n progressBarIndicatorVariants,\n progressBarLabelVariants,\n progressBarTooltipVariants,\n progressBarVariants,\n} from \"./ProgressBar.variants\"\n\n/**\n * Default format function for progress value\n */\nconst defaultFormatValue = (value: number): string => `${String(value)}%`\n\n/**\n * Internal component for rendering the progress label\n */\nfunction ProgressBarLabel({\n value,\n position,\n formatValue = defaultFormatValue,\n progressPercent,\n}: ProgressBarLabelProps) {\n // Don't render anything for indeterminate state or none position\n if (value === null || value === undefined) {\n return null\n }\n\n const formattedValue = formatValue(value)\n\n // Floating tooltip that follows the progress\n if (position === \"top-floating\" || position === \"bottom-floating\") {\n return (\n <span\n className={cn(\n progressBarTooltipVariants({\n position: position === \"top-floating\" ? \"top\" : \"bottom\",\n })\n )}\n data-slot=\"progress-bar-tooltip\"\n style={{ left: `${String(progressPercent)}%` }}\n >\n {formattedValue}\n </span>\n )\n }\n\n // Bottom label\n if (position === \"bottom\") {\n return (\n <span\n className={cn(progressBarLabelVariants({ position: \"bottom\" }), \"block\")}\n data-slot=\"progress-bar-label\"\n >\n {formattedValue}\n </span>\n )\n }\n\n // Hidden label for screen readers\n if (position === \"none\") {\n return (\n <span\n className={progressBarLabelVariants({ position: \"none\" })}\n data-slot=\"progress-bar-label\"\n >\n {formattedValue}\n </span>\n )\n }\n\n // Right label (inline)\n return (\n <span\n className={progressBarLabelVariants({ position: \"right\" })}\n data-slot=\"progress-bar-label\"\n >\n {formattedValue}\n </span>\n )\n}\n\n/**\n * ProgressBar component for displaying task completion status.\n *\n * Built on Radix UI Progress primitive with support for:\n * - Multiple color variants (default, primary, secondary, info, success, warning, error)\n * - Multiple size variants (xs, sm, md, lg, xl)\n * - Label positions (none, right, bottom, top-floating, bottom-floating)\n * - Floating tooltips that follow the progress indicator\n * - Custom value formatting\n * - Indeterminate state\n *\n * @example\n * ```tsx\n * // Basic usage with default green fill\n * <ProgressBar value={50} />\n *\n * // With floating tooltip\n * <ProgressBar value={75} label=\"top-floating\" />\n *\n * // With color and size variants\n * <ProgressBar value={30} color=\"error\" size=\"lg\" />\n * ```\n */\nfunction ProgressBar({\n className,\n value,\n max = 100,\n size,\n color,\n label = \"none\",\n formatValue,\n showValue,\n animate = true,\n tooltip,\n ref,\n ...props\n}: ProgressBarProps) {\n // Calculate percentage based on value and max\n const progressPercent = value !== null && value !== undefined\n ? Math.min(100, Math.max(0, (value / max) * 100))\n : 0\n // Initialize visibility based on animate prop - if not animating, show immediately\n const [isVisible, setIsVisible] = React.useState(!animate)\n const internalRef = React.useRef<HTMLDivElement>(null)\n\n // Merge internal ref with forwarded ref\n const progressRef = ref ?? internalRef\n\n // Use IntersectionObserver to trigger animation only when in viewport\n React.useEffect(() => {\n // Skip if not animating or already visible\n if (!animate || isVisible) {\n return\n }\n\n // Get the element from the ref\n const element = typeof progressRef === \"function\" ? null : progressRef.current\n if (!element) {\n return\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n const entry = entries[0]\n if (entry?.isIntersecting) {\n // Small delay to ensure smooth animation start\n requestAnimationFrame(() => {\n setIsVisible(true)\n })\n // Once animated, no need to observe anymore\n observer.disconnect()\n }\n },\n { threshold: 0.1 }\n )\n\n observer.observe(element)\n\n return () => { observer.disconnect(); }\n }, [animate, isVisible, progressRef])\n\n // Determine if we should show value based on label position\n const shouldShowValue = showValue ?? label !== \"none\"\n\n // Calculate the transform value - start at 0 if not visible yet (for animation)\n const displayPercent = isVisible ? progressPercent : 0\n\n // Helper to wrap element with tooltip if tooltip prop is provided\n const wrapWithTooltip = (element: React.ReactElement) => {\n if (!tooltip) return element\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n {element}\n </TooltipTrigger>\n <TooltipContent>\n {tooltip}\n </TooltipContent>\n </Tooltip>\n )\n }\n\n const progressBar = (\n <ProgressPrimitive.Root\n ref={progressRef}\n className={cn(\n progressBarVariants({ size, color }),\n className\n )}\n data-slot=\"progress-bar\"\n max={max}\n value={value != null ? Math.min(Math.max(0, value), max) : null}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className={cn(progressBarIndicatorVariants({ color }))}\n data-slot=\"progress-bar-indicator\"\n style={{ transform: `translateX(-${String(100 - displayPercent)}%)` }}\n />\n {/* Floating labels are positioned inside the root for proper positioning */}\n {(label === \"top-floating\" || label === \"bottom-floating\") && shouldShowValue && (\n <ProgressBarLabel\n formatValue={formatValue}\n position={label}\n progressPercent={progressPercent}\n value={value}\n />\n )}\n </ProgressPrimitive.Root>\n )\n\n // Right label needs flex wrapper\n if (label === \"right\") {\n return wrapWithTooltip(\n <div className=\"flex items-center\" data-slot=\"progress-bar-container\">\n {progressBar}\n {shouldShowValue && (\n <ProgressBarLabel\n formatValue={formatValue}\n position={label}\n progressPercent={progressPercent}\n value={value}\n />\n )}\n </div>\n )\n }\n\n // Bottom label needs column wrapper\n if (label === \"bottom\") {\n return wrapWithTooltip(\n <div data-slot=\"progress-bar-container\">\n {progressBar}\n {shouldShowValue && (\n <ProgressBarLabel\n formatValue={formatValue}\n position={label}\n progressPercent={progressPercent}\n value={value}\n />\n )}\n </div>\n )\n }\n\n // Floating labels need relative wrapper for absolute positioning\n if (label === \"top-floating\" || label === \"bottom-floating\") {\n return wrapWithTooltip(\n <div className=\"relative\" data-slot=\"progress-bar-container\">\n {progressBar}\n </div>\n )\n }\n\n // No wrapper needed for none label\n return wrapWithTooltip(progressBar)\n}\n\nexport { ProgressBar }\n"]}
@@ -3,7 +3,7 @@ import { useIsMobile } from './chunk-WH7Y2MAY.js';
3
3
  import { SkeletonLoader } from './chunk-QHKOBGLW.js';
4
4
  import { TextInput } from './chunk-PWCMCMDN.js';
5
5
  import { Avatar } from './chunk-YP2ATSXP.js';
6
- import { Button } from './chunk-ONQCNOLU.js';
6
+ import { Button } from './chunk-HDOR3SN3.js';
7
7
  import { TooltipProvider, Tooltip, TooltipTrigger, TooltipContent } from './chunk-7ZJ32KRQ.js';
8
8
  import { Divider } from './chunk-3L5G7VI2.js';
9
9
  import { cn } from './chunk-HRNDJU7D.js';
@@ -1204,5 +1204,5 @@ function SidebarThemeToggle({
1204
1204
  }
1205
1205
 
1206
1206
  export { Sidebar, SidebarAvatar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarLogo, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarPanelContent, SidebarProvider, SidebarRail, SidebarRailButton, SidebarRailContent, SidebarSeparator, SidebarThemeToggle, SidebarTrigger, sidebarContainerVariants, sidebarContentVariants, sidebarDesktopVariants, sidebarFooterVariants, sidebarGapVariants, sidebarGroupActionVariants, sidebarGroupContentVariants, sidebarGroupLabelVariants, sidebarGroupVariants, sidebarHeaderVariants, sidebarInnerVariants, sidebarInputVariants, sidebarInsetVariants, sidebarMenuActionShowOnHoverVariants, sidebarMenuActionVariants, sidebarMenuBadgeVariants, sidebarMenuButtonVariants, sidebarMenuItemVariants, sidebarMenuSkeletonVariants, sidebarMenuSubButtonVariants, sidebarMenuSubItemVariants, sidebarMenuSubVariants, sidebarMenuVariants, sidebarMobileVariants, sidebarNonCollapsibleVariants, sidebarProviderVariants, sidebarRailButtonVariants, sidebarRailVariants, sidebarSeparatorVariants, sidebarTriggerVariants, useSidebar };
1207
- //# sourceMappingURL=chunk-HT5XM6XK.js.map
1208
- //# sourceMappingURL=chunk-HT5XM6XK.js.map
1207
+ //# sourceMappingURL=chunk-43BS3PPX.js.map
1208
+ //# sourceMappingURL=chunk-43BS3PPX.js.map