@etus/ui 0.4.0-beta.21 → 0.4.0-beta.22

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 (234) hide show
  1. package/dist/{chunk-KBU4KJKC.js → chunk-2DFFIU44.js} +4 -4
  2. package/dist/{chunk-KBU4KJKC.js.map → chunk-2DFFIU44.js.map} +1 -1
  3. package/dist/{chunk-MR6RUPVT.js → chunk-2JDLQ4VR.js} +3 -3
  4. package/dist/{chunk-MR6RUPVT.js.map → chunk-2JDLQ4VR.js.map} +1 -1
  5. package/dist/{chunk-JE46MFMN.js → chunk-2LVRSLWI.js} +4 -4
  6. package/dist/{chunk-JE46MFMN.js.map → chunk-2LVRSLWI.js.map} +1 -1
  7. package/dist/{chunk-GRODCJS4.js → chunk-2VOKY2TU.js} +4 -4
  8. package/dist/{chunk-GRODCJS4.js.map → chunk-2VOKY2TU.js.map} +1 -1
  9. package/dist/{chunk-UC5J6GWG.js → chunk-3TRT6TKW.js} +6 -6
  10. package/dist/chunk-3TRT6TKW.js.map +1 -0
  11. package/dist/{chunk-UZZCEQH4.js → chunk-3XVOI4HK.js} +3 -3
  12. package/dist/{chunk-UZZCEQH4.js.map → chunk-3XVOI4HK.js.map} +1 -1
  13. package/dist/{chunk-WGKOYZRI.js → chunk-4S6CPTSO.js} +5 -5
  14. package/dist/chunk-4S6CPTSO.js.map +1 -0
  15. package/dist/{chunk-GVNG5ME6.js → chunk-6CO3FRGG.js} +201 -17
  16. package/dist/chunk-6CO3FRGG.js.map +1 -0
  17. package/dist/chunk-7MJS37Q4.js +135 -0
  18. package/dist/chunk-7MJS37Q4.js.map +1 -0
  19. package/dist/{chunk-QXET2TML.js → chunk-A33MLHXO.js} +3 -3
  20. package/dist/{chunk-QXET2TML.js.map → chunk-A33MLHXO.js.map} +1 -1
  21. package/dist/{chunk-STADVFL2.js → chunk-A6BDDZ27.js} +3 -3
  22. package/dist/{chunk-STADVFL2.js.map → chunk-A6BDDZ27.js.map} +1 -1
  23. package/dist/{chunk-WSDWJX4Y.js → chunk-AGXEGVSY.js} +3 -3
  24. package/dist/{chunk-WSDWJX4Y.js.map → chunk-AGXEGVSY.js.map} +1 -1
  25. package/dist/{chunk-R42LSLJL.js → chunk-AOLVER6U.js} +3 -3
  26. package/dist/{chunk-R42LSLJL.js.map → chunk-AOLVER6U.js.map} +1 -1
  27. package/dist/{chunk-YMQDTTO7.js → chunk-CEUARW3D.js} +3 -3
  28. package/dist/{chunk-YMQDTTO7.js.map → chunk-CEUARW3D.js.map} +1 -1
  29. package/dist/{chunk-LDK6ADKM.js → chunk-DZV32N5V.js} +4 -4
  30. package/dist/{chunk-LDK6ADKM.js.map → chunk-DZV32N5V.js.map} +1 -1
  31. package/dist/{chunk-2SUZS6GZ.js → chunk-E5UFATRY.js} +11 -3
  32. package/dist/chunk-E5UFATRY.js.map +1 -0
  33. package/dist/{chunk-RQBYBBMP.js → chunk-EINYBB7T.js} +5 -5
  34. package/dist/{chunk-RQBYBBMP.js.map → chunk-EINYBB7T.js.map} +1 -1
  35. package/dist/{chunk-4LZ53BAG.js → chunk-EKKJXJX7.js} +4 -2
  36. package/dist/chunk-EKKJXJX7.js.map +1 -0
  37. package/dist/{chunk-4OWRNWHW.js → chunk-FCVFYUCL.js} +14 -5
  38. package/dist/chunk-FCVFYUCL.js.map +1 -0
  39. package/dist/{chunk-6QVXMYKH.js → chunk-FGTYI4ZG.js} +3 -3
  40. package/dist/{chunk-6QVXMYKH.js.map → chunk-FGTYI4ZG.js.map} +1 -1
  41. package/dist/{chunk-6G5QK3SU.js → chunk-FLXU5LWR.js} +44 -4
  42. package/dist/chunk-FLXU5LWR.js.map +1 -0
  43. package/dist/{chunk-P4WMDGAQ.js → chunk-G5JO3Q3K.js} +3 -3
  44. package/dist/{chunk-P4WMDGAQ.js.map → chunk-G5JO3Q3K.js.map} +1 -1
  45. package/dist/{chunk-RMJVCJ6U.js → chunk-GKG2LRGY.js} +6 -6
  46. package/dist/chunk-GKG2LRGY.js.map +1 -0
  47. package/dist/{chunk-N7VMQWM3.js → chunk-GN6B4W3G.js} +4 -4
  48. package/dist/{chunk-N7VMQWM3.js.map → chunk-GN6B4W3G.js.map} +1 -1
  49. package/dist/chunk-GX2VJT7D.js +136 -0
  50. package/dist/chunk-GX2VJT7D.js.map +1 -0
  51. package/dist/{chunk-MNYU5MHO.js → chunk-H4KC2YSL.js} +5 -5
  52. package/dist/{chunk-MNYU5MHO.js.map → chunk-H4KC2YSL.js.map} +1 -1
  53. package/dist/{chunk-GLHKHYJY.js → chunk-IARO2PPN.js} +55 -15
  54. package/dist/chunk-IARO2PPN.js.map +1 -0
  55. package/dist/{chunk-ELRIFGMN.js → chunk-JWXZFGNT.js} +30 -6
  56. package/dist/chunk-JWXZFGNT.js.map +1 -0
  57. package/dist/{chunk-Y4FEW7SR.js → chunk-K5RHYIFF.js} +16 -6
  58. package/dist/chunk-K5RHYIFF.js.map +1 -0
  59. package/dist/{chunk-T3LWBCVR.js → chunk-LKCOHB3C.js} +36 -3
  60. package/dist/chunk-LKCOHB3C.js.map +1 -0
  61. package/dist/{chunk-7PX3WBR3.js → chunk-LWIIO75I.js} +5 -3
  62. package/dist/chunk-LWIIO75I.js.map +1 -0
  63. package/dist/{chunk-U7TPJMGY.js → chunk-MR3IPJAO.js} +6 -2
  64. package/dist/chunk-MR3IPJAO.js.map +1 -0
  65. package/dist/chunk-MVL4DVRW.js +177 -0
  66. package/dist/chunk-MVL4DVRW.js.map +1 -0
  67. package/dist/{chunk-L4OQ6BJ5.js → chunk-N3DBRKUS.js} +3 -3
  68. package/dist/{chunk-L4OQ6BJ5.js.map → chunk-N3DBRKUS.js.map} +1 -1
  69. package/dist/{chunk-TIPKU427.js → chunk-N7DAU4LE.js} +3 -3
  70. package/dist/{chunk-TIPKU427.js.map → chunk-N7DAU4LE.js.map} +1 -1
  71. package/dist/{chunk-ZVSMLMMS.js → chunk-NORI6ECA.js} +44 -4
  72. package/dist/chunk-NORI6ECA.js.map +1 -0
  73. package/dist/{chunk-7MLRRVOX.js → chunk-NT4GLWNR.js} +3 -3
  74. package/dist/{chunk-7MLRRVOX.js.map → chunk-NT4GLWNR.js.map} +1 -1
  75. package/dist/{chunk-7AR5QRRX.js → chunk-NZNAR4HJ.js} +27 -11
  76. package/dist/chunk-NZNAR4HJ.js.map +1 -0
  77. package/dist/{chunk-TNSMTINE.js → chunk-OJIFG4LW.js} +3 -3
  78. package/dist/{chunk-TNSMTINE.js.map → chunk-OJIFG4LW.js.map} +1 -1
  79. package/dist/{chunk-PTXC4KPQ.js → chunk-OSHGYI2O.js} +4 -4
  80. package/dist/{chunk-PTXC4KPQ.js.map → chunk-OSHGYI2O.js.map} +1 -1
  81. package/dist/chunk-OW5R4KST.js +108 -0
  82. package/dist/chunk-OW5R4KST.js.map +1 -0
  83. package/dist/{chunk-QJOWG2D4.js → chunk-PVF23ZX2.js} +3 -3
  84. package/dist/{chunk-QJOWG2D4.js.map → chunk-PVF23ZX2.js.map} +1 -1
  85. package/dist/{chunk-KHCHATTD.js → chunk-PYCQBP4O.js} +4 -4
  86. package/dist/{chunk-KHCHATTD.js.map → chunk-PYCQBP4O.js.map} +1 -1
  87. package/dist/{chunk-KDNTSZF5.js → chunk-Q4E7OG7J.js} +3 -3
  88. package/dist/{chunk-KDNTSZF5.js.map → chunk-Q4E7OG7J.js.map} +1 -1
  89. package/dist/{chunk-KLFYTLF3.js → chunk-Q7MAQ7MO.js} +3 -3
  90. package/dist/{chunk-KLFYTLF3.js.map → chunk-Q7MAQ7MO.js.map} +1 -1
  91. package/dist/{chunk-S6BREP2G.js → chunk-QMCQIOCP.js} +21 -7
  92. package/dist/chunk-QMCQIOCP.js.map +1 -0
  93. package/dist/{chunk-SSKSWSVO.js → chunk-R2Z64IC3.js} +4 -4
  94. package/dist/{chunk-SSKSWSVO.js.map → chunk-R2Z64IC3.js.map} +1 -1
  95. package/dist/{chunk-UNHPLKMR.js → chunk-RK27HS7W.js} +3 -3
  96. package/dist/{chunk-UNHPLKMR.js.map → chunk-RK27HS7W.js.map} +1 -1
  97. package/dist/{chunk-IKLFWGFS.js → chunk-RTSAERFS.js} +7 -7
  98. package/dist/{chunk-IKLFWGFS.js.map → chunk-RTSAERFS.js.map} +1 -1
  99. package/dist/{chunk-EO4NGM5W.js → chunk-S7HXZ5T3.js} +65 -16
  100. package/dist/chunk-S7HXZ5T3.js.map +1 -0
  101. package/dist/{chunk-I5RDX6O3.js → chunk-TBPPBA3S.js} +31 -25
  102. package/dist/chunk-TBPPBA3S.js.map +1 -0
  103. package/dist/{chunk-TDANAN5A.js → chunk-TD2EFGHO.js} +7 -3
  104. package/dist/chunk-TD2EFGHO.js.map +1 -0
  105. package/dist/{chunk-3R6MY3YJ.js → chunk-TVAIT3F5.js} +3 -3
  106. package/dist/{chunk-3R6MY3YJ.js.map → chunk-TVAIT3F5.js.map} +1 -1
  107. package/dist/{chunk-VHJ6ALIE.js → chunk-TX4GUAZ6.js} +11 -3
  108. package/dist/chunk-TX4GUAZ6.js.map +1 -0
  109. package/dist/{chunk-7XJQYAGY.js → chunk-U55YU7DB.js} +22 -6
  110. package/dist/chunk-U55YU7DB.js.map +1 -0
  111. package/dist/{chunk-5GV4LDX7.js → chunk-VI3QWOII.js} +4 -2
  112. package/dist/chunk-VI3QWOII.js.map +1 -0
  113. package/dist/{chunk-PXR6CZIL.js → chunk-VYCXCOUH.js} +3 -3
  114. package/dist/{chunk-PXR6CZIL.js.map → chunk-VYCXCOUH.js.map} +1 -1
  115. package/dist/{chunk-SKI25Q7O.js → chunk-W72PXQDH.js} +4 -4
  116. package/dist/{chunk-SKI25Q7O.js.map → chunk-W72PXQDH.js.map} +1 -1
  117. package/dist/{chunk-4SFBDK4E.js → chunk-WTKHA2NF.js} +3 -3
  118. package/dist/{chunk-4SFBDK4E.js.map → chunk-WTKHA2NF.js.map} +1 -1
  119. package/dist/{chunk-KXJ3SEW7.js → chunk-YNZ6T4IU.js} +13 -5
  120. package/dist/chunk-YNZ6T4IU.js.map +1 -0
  121. package/dist/{chunk-7QEFKWUR.js → chunk-YZBCJDYO.js} +4 -4
  122. package/dist/{chunk-7QEFKWUR.js.map → chunk-YZBCJDYO.js.map} +1 -1
  123. package/dist/{chunk-PVIIIQJI.js → chunk-ZTD3QXLY.js} +4 -4
  124. package/dist/{chunk-PVIIIQJI.js.map → chunk-ZTD3QXLY.js.map} +1 -1
  125. package/dist/{chunk-HHWUROMA.js → chunk-ZZFCKHE2.js} +4 -4
  126. package/dist/{chunk-HHWUROMA.js.map → chunk-ZZFCKHE2.js.map} +1 -1
  127. package/dist/components/advanced/Calendar/index.js +3 -3
  128. package/dist/components/advanced/Command/index.js +2 -2
  129. package/dist/components/advanced/EventCalendar/index.js +3 -3
  130. package/dist/components/advanced/FilterBuilder/index.js +5 -5
  131. package/dist/components/advanced/MarkdownEditor/index.js +2 -2
  132. package/dist/components/advanced/ReportBuilder/index.js +4 -4
  133. package/dist/components/advanced/index.js +12 -12
  134. package/dist/components/data-display/Banner/index.js +1 -1
  135. package/dist/components/data-display/BarChart/index.js +1 -1
  136. package/dist/components/data-display/Carousel/index.js +3 -3
  137. package/dist/components/data-display/DataTable/FilterBuilder/index.js +5 -5
  138. package/dist/components/data-display/DataTable/index.js +9 -9
  139. package/dist/components/data-display/ImageGallery/index.js +4 -4
  140. package/dist/components/data-display/Item/index.js +1 -1
  141. package/dist/components/data-display/KPICard/index.js +1 -1
  142. package/dist/components/data-display/List/index.js +2 -2
  143. package/dist/components/data-display/RadarChart/index.js +1 -1
  144. package/dist/components/data-display/RadialChart/index.js +1 -1
  145. package/dist/components/data-display/index.js +35 -35
  146. package/dist/components/feedback/AlertDialog/index.js +3 -3
  147. package/dist/components/feedback/ConfirmModal/index.js +4 -4
  148. package/dist/components/feedback/Dialog/index.js +1 -1
  149. package/dist/components/feedback/ErrorPage/index.js +1 -1
  150. package/dist/components/feedback/Notification/index.js +2 -2
  151. package/dist/components/feedback/index.js +9 -9
  152. package/dist/components/forms/DatePicker/index.js +4 -4
  153. package/dist/components/forms/DateRangePicker/index.js +5 -5
  154. package/dist/components/forms/EmailInput/index.js +3 -3
  155. package/dist/components/forms/InputGroup/index.js +5 -5
  156. package/dist/components/forms/NumberInput/index.js +2 -2
  157. package/dist/components/forms/PasswordInput/index.js +3 -3
  158. package/dist/components/forms/PaymentInput/index.js +1 -1
  159. package/dist/components/forms/PhoneInput/index.js +1 -1
  160. package/dist/components/forms/RadioGroup/index.js +1 -1
  161. package/dist/components/forms/Rating/index.js +1 -1
  162. package/dist/components/forms/SearchInput/index.js +3 -3
  163. package/dist/components/forms/Switch/index.js +1 -1
  164. package/dist/components/forms/TagsInput/index.js +1 -1
  165. package/dist/components/forms/TextInput/index.js +2 -2
  166. package/dist/components/forms/URLInput/index.js +3 -3
  167. package/dist/components/forms/index.js +25 -25
  168. package/dist/components/index.js +137 -137
  169. package/dist/components/layout/Collapsible/index.js +1 -1
  170. package/dist/components/layout/index.js +4 -4
  171. package/dist/components/navigation/AccountSwitch/index.js +3 -3
  172. package/dist/components/navigation/Breadcrumb/index.js +1 -1
  173. package/dist/components/navigation/ContextMenu/index.js +1 -1
  174. package/dist/components/navigation/DropdownMenu/index.js +1 -1
  175. package/dist/components/navigation/Pagination/index.js +3 -3
  176. package/dist/components/navigation/Sidebar/index.js +8 -7
  177. package/dist/components/navigation/index.js +17 -16
  178. package/dist/components/primitives/Avatar/index.js +1 -1
  179. package/dist/components/primitives/Button/index.js +2 -2
  180. package/dist/components/primitives/ButtonGroup/index.js +1 -1
  181. package/dist/components/primitives/ConfirmButton/index.js +4 -4
  182. package/dist/components/primitives/Icon/index.js +1 -1
  183. package/dist/components/primitives/Kbd/index.js +1 -1
  184. package/dist/components/primitives/Link/index.js +1 -1
  185. package/dist/components/primitives/ProgressCircle/index.js +1 -1
  186. package/dist/components/primitives/SplitButton/index.js +2 -2
  187. package/dist/components/primitives/Text/index.js +1 -1
  188. package/dist/components/primitives/index.js +16 -16
  189. package/dist/components/workflow/ApprovalFlow/index.js +4 -4
  190. package/dist/components/workflow/CommentSystem/index.js +4 -4
  191. package/dist/components/workflow/Dashboard/index.js +3 -3
  192. package/dist/components/workflow/DashboardBuilder/index.js +5 -5
  193. package/dist/components/workflow/KanbanBoard/index.js +4 -4
  194. package/dist/components/workflow/ReportGenerator/index.js +3 -3
  195. package/dist/components/workflow/TaskStatus/index.js +2 -2
  196. package/dist/components/workflow/Wizard/index.js +3 -3
  197. package/dist/components/workflow/index.js +16 -16
  198. package/dist/hooks/index.js +1 -1
  199. package/dist/index.d.ts +303 -42
  200. package/dist/index.js +137 -137
  201. package/dist/styles.css +27 -8
  202. package/package.json +2 -2
  203. package/dist/chunk-2SUZS6GZ.js.map +0 -1
  204. package/dist/chunk-4LZ53BAG.js.map +0 -1
  205. package/dist/chunk-4OWRNWHW.js.map +0 -1
  206. package/dist/chunk-5GV4LDX7.js.map +0 -1
  207. package/dist/chunk-6G5QK3SU.js.map +0 -1
  208. package/dist/chunk-6VEQLD2P.js +0 -75
  209. package/dist/chunk-6VEQLD2P.js.map +0 -1
  210. package/dist/chunk-7AR5QRRX.js.map +0 -1
  211. package/dist/chunk-7PX3WBR3.js.map +0 -1
  212. package/dist/chunk-7XJQYAGY.js.map +0 -1
  213. package/dist/chunk-ELRIFGMN.js.map +0 -1
  214. package/dist/chunk-EO4NGM5W.js.map +0 -1
  215. package/dist/chunk-GLHKHYJY.js.map +0 -1
  216. package/dist/chunk-GVNG5ME6.js.map +0 -1
  217. package/dist/chunk-I5RDX6O3.js.map +0 -1
  218. package/dist/chunk-JUZ4JQWH.js +0 -69
  219. package/dist/chunk-JUZ4JQWH.js.map +0 -1
  220. package/dist/chunk-K4UCALQQ.js +0 -67
  221. package/dist/chunk-K4UCALQQ.js.map +0 -1
  222. package/dist/chunk-KXJ3SEW7.js.map +0 -1
  223. package/dist/chunk-RMJVCJ6U.js.map +0 -1
  224. package/dist/chunk-S6BREP2G.js.map +0 -1
  225. package/dist/chunk-T3LWBCVR.js.map +0 -1
  226. package/dist/chunk-TDANAN5A.js.map +0 -1
  227. package/dist/chunk-U7TPJMGY.js.map +0 -1
  228. package/dist/chunk-UC5J6GWG.js.map +0 -1
  229. package/dist/chunk-VHJ6ALIE.js.map +0 -1
  230. package/dist/chunk-WGKOYZRI.js.map +0 -1
  231. package/dist/chunk-WUS45IZW.js +0 -36
  232. package/dist/chunk-WUS45IZW.js.map +0 -1
  233. package/dist/chunk-Y4FEW7SR.js.map +0 -1
  234. package/dist/chunk-ZVSMLMMS.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  import { ChartTooltipContent, ChartContainer, ChartTooltip, ChartLegend, ChartLegendContent } from './chunk-XXWCMY2G.js';
2
2
  import { cn } from './chunk-RVAYDRMA.js';
3
3
  import * as React from 'react';
4
- import { BarChart as BarChart$1, CartesianGrid, XAxis, Label, YAxis, Bar, LabelList } from 'recharts';
5
- import { jsx, jsxs } from 'react/jsx-runtime';
4
+ import { BarChart as BarChart$1, CartesianGrid, XAxis, Label, YAxis, Bar, LabelList, Rectangle } from 'recharts';
5
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
6
6
 
7
7
  function normalizeSeriesConfig(series) {
8
8
  return series.map(
@@ -50,8 +50,11 @@ function BarChart({
50
50
  allowDecimals = true,
51
51
  ariaLabel,
52
52
  autoMinValue = false,
53
+ activeIndex,
53
54
  barCategoryGap,
54
55
  barGap = 4,
56
+ colorByCategory = false,
57
+ insideLabelKey,
55
58
  className,
56
59
  config,
57
60
  customTooltip,
@@ -243,25 +246,54 @@ function BarChart({
243
246
  const { dataKey, radius: seriesRadius, stackId } = seriesConfig;
244
247
  const fill = `var(--color-${dataKey})`;
245
248
  const barRadius = seriesRadius ?? radius;
246
- return /* @__PURE__ */ jsx(
249
+ return /* @__PURE__ */ jsxs(
247
250
  Bar,
248
251
  {
252
+ shape: activeIndex === void 0 ? void 0 : makeActiveBarShape(activeIndex),
249
253
  dataKey,
250
- fill,
254
+ fill: colorByCategory ? void 0 : fill,
251
255
  radius: barRadius,
252
256
  stackId: isStacked ? "bar-stack" : stackId,
253
257
  style: onValueChange ? { cursor: "pointer" } : void 0,
254
258
  onClick: onValueChange ? handleBarClick(dataKey) : void 0,
255
- children: showValueLabels ? /* @__PURE__ */ jsx(
256
- LabelList,
257
- {
258
- content: renderBarValueLabel(
259
- isHorizontal,
260
- typeof showValueLabels === "object" ? showValueLabels.formatter : void 0
261
- ),
262
- dataKey
263
- }
264
- ) : null
259
+ children: [
260
+ insideLabelKey ? (
261
+ // Figma Type=Custom Label (1147:3135): nome dentro da
262
+ // barra + valor na ponta
263
+ /* @__PURE__ */ jsxs(Fragment, { children: [
264
+ /* @__PURE__ */ jsx(
265
+ LabelList,
266
+ {
267
+ className: "fill-white",
268
+ dataKey: insideLabelKey,
269
+ fontSize: 12,
270
+ offset: 8,
271
+ position: isHorizontal ? "insideLeft" : "insideBottom"
272
+ }
273
+ ),
274
+ /* @__PURE__ */ jsx(
275
+ LabelList,
276
+ {
277
+ className: "fill-foreground",
278
+ dataKey,
279
+ fontSize: 12,
280
+ offset: 8,
281
+ position: isHorizontal ? "right" : "top"
282
+ }
283
+ )
284
+ ] })
285
+ ) : null,
286
+ showValueLabels && !insideLabelKey ? /* @__PURE__ */ jsx(
287
+ LabelList,
288
+ {
289
+ content: renderBarValueLabel(
290
+ isHorizontal,
291
+ typeof showValueLabels === "object" ? showValueLabels.formatter : void 0
292
+ ),
293
+ dataKey
294
+ }
295
+ ) : null
296
+ ]
265
297
  },
266
298
  dataKey
267
299
  );
@@ -274,8 +306,25 @@ function BarChart({
274
306
  }
275
307
  );
276
308
  }
309
+ function makeActiveBarShape(activeIndex) {
310
+ return function ActiveBarShape(props) {
311
+ const { fill, index, ...barProps } = props;
312
+ const isActive = index === activeIndex;
313
+ return /* @__PURE__ */ jsx(
314
+ Rectangle,
315
+ {
316
+ ...barProps,
317
+ fill,
318
+ fillOpacity: isActive ? 1 : 0.4,
319
+ stroke: isActive ? fill ?? "currentColor" : void 0,
320
+ strokeDasharray: isActive ? 4 : void 0,
321
+ strokeDashoffset: isActive ? 4 : void 0
322
+ }
323
+ );
324
+ };
325
+ }
277
326
  BarChart.displayName = "BarChart";
278
327
 
279
328
  export { BarChart };
280
- //# sourceMappingURL=chunk-EO4NGM5W.js.map
281
- //# sourceMappingURL=chunk-EO4NGM5W.js.map
329
+ //# sourceMappingURL=chunk-S7HXZ5T3.js.map
330
+ //# sourceMappingURL=chunk-S7HXZ5T3.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-S7HXZ5T3.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 LabelList,\n BarChart as RechartsBarChart,\n Rectangle,\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 */\ninterface BarValueLabelProps {\n height?: number | string\n value?: number | string\n width?: number | string\n x?: number | string\n y?: number | string\n}\n\nfunction renderBarValueLabel(\n isHorizontal: boolean,\n formatter?: (value: number) => string\n) {\n return function BarValueLabel(labelProps: unknown) {\n const props = labelProps as BarValueLabelProps\n if (props.value == null) return null\n const value = Number(props.value)\n const height = Number(props.height ?? 0)\n const width = Number(props.width ?? 0)\n const x = Number(props.x ?? 0)\n const y = Number(props.y ?? 0)\n const text = formatter ? formatter(value) : String(props.value)\n const negative = value < 0\n // barra de tamanho zero não ganha rótulo (diverging: cada mês zera um lado)\n if ((isHorizontal ? width : height) === 0) return null\n if (isHorizontal) {\n return (\n <text\n className=\"fill-foreground text-xs\"\n dominantBaseline=\"central\"\n textAnchor={negative ? \"end\" : \"start\"}\n x={negative ? x - 6 : x + width + 6}\n y={y + height / 2}\n >\n {text}\n </text>\n )\n }\n return (\n <text\n className=\"fill-foreground text-xs\"\n textAnchor=\"middle\"\n x={x + width / 2}\n y={negative ? y + height + 14 : Math.max(y - 6, 12)}\n >\n {text}\n </text>\n )\n }\n}\n\nexport function BarChart({\n allowDecimals = true,\n ariaLabel,\n autoMinValue = false,\n activeIndex,\n barCategoryGap,\n barGap = 4,\n colorByCategory = false,\n insideLabelKey,\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 showValueLabels = 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 // Figma Type=Active (1147:3145): barra do activeIndex ganha\n // contorno tracejado; as demais esmaecem\n shape={\n activeIndex === undefined\n ? undefined\n : makeActiveBarShape(activeIndex)\n }\n dataKey={dataKey}\n // Figma Type=Mixed (1147:3126): cor por categoria — o fill\n // vem de cada row do data (ex.: fill: \"var(--color-x)\")\n fill={colorByCategory ? undefined : fill}\n radius={barRadius}\n stackId={isStacked ? \"bar-stack\" : stackId}\n style={onValueChange ? { cursor: \"pointer\" } : undefined}\n onClick={onValueChange ? handleBarClick(dataKey) : undefined}\n >\n {insideLabelKey ? (\n // Figma Type=Custom Label (1147:3135): nome dentro da\n // barra + valor na ponta\n <>\n <LabelList\n className=\"fill-white\"\n dataKey={insideLabelKey}\n fontSize={12}\n offset={8}\n position={isHorizontal ? \"insideLeft\" : \"insideBottom\"}\n />\n <LabelList\n className=\"fill-foreground\"\n dataKey={dataKey}\n fontSize={12}\n offset={8}\n position={isHorizontal ? \"right\" : \"top\"}\n />\n </>\n ) : null}\n {showValueLabels && !insideLabelKey ? (\n <LabelList\n content={renderBarValueLabel(\n isHorizontal,\n typeof showValueLabels === \"object\" ? showValueLabels.formatter : undefined\n )}\n dataKey={dataKey}\n />\n ) : null}\n </Bar>\n )\n })}\n </RechartsBarChart>\n </ChartContainer>\n </div>\n )\n}\n\n// Figma Type=Active: shape que destaca a barra do activeIndex com contorno\n// tracejado da própria cor e esmaece as demais (Recharts 3 removeu o\n// activeIndex nativo do Bar)\nfunction makeActiveBarShape(activeIndex: number) {\n return function ActiveBarShape(props: unknown) {\n const { fill, index, ...barProps } = props as {\n fill?: string\n index?: number\n }\n const isActive = index === activeIndex\n return (\n <Rectangle\n {...barProps}\n fill={fill}\n fillOpacity={isActive ? 1 : 0.4}\n stroke={isActive ? (fill ?? \"currentColor\") : undefined}\n strokeDasharray={isActive ? 4 : undefined}\n strokeDashoffset={isActive ? 4 : undefined}\n />\n )\n }\n}\n\nBarChart.displayName = \"BarChart\"\n"]}
@@ -2,7 +2,7 @@ import { cn } from './chunk-RVAYDRMA.js';
2
2
  import * as SwitchPrimitive from '@radix-ui/react-switch';
3
3
  import * as React from 'react';
4
4
  import { cva } from 'class-variance-authority';
5
- import { jsx, jsxs } from 'react/jsx-runtime';
5
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
6
6
 
7
7
  var switchVariants = cva(
8
8
  [
@@ -51,6 +51,7 @@ function Switch({
51
51
  className,
52
52
  size = "md",
53
53
  type = "default",
54
+ side = "left",
54
55
  switchText,
55
56
  descriptionText,
56
57
  showText,
@@ -82,41 +83,46 @@ function Switch({
82
83
  if (!hasComposition) {
83
84
  return switchEl;
84
85
  }
85
- return /* @__PURE__ */ jsxs(
86
+ const textContent = /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", "data-slot": "switch-text-content", children: [
87
+ shouldShowText && /* @__PURE__ */ jsx(
88
+ "label",
89
+ {
90
+ className: "text-sm font-medium leading-none",
91
+ "data-slot": "switch-text",
92
+ htmlFor: switchId,
93
+ children: switchText
94
+ }
95
+ ),
96
+ shouldShowDescription && /* @__PURE__ */ jsx(
97
+ "p",
98
+ {
99
+ className: "text-xs text-muted-foreground leading-normal",
100
+ "data-slot": "switch-description",
101
+ children: descriptionText
102
+ }
103
+ )
104
+ ] });
105
+ return /* @__PURE__ */ jsx(
86
106
  "div",
87
107
  {
88
108
  className: cn(
89
109
  "flex items-start gap-3",
90
110
  type === "box" && "rounded-md border border-input p-4"
91
111
  ),
112
+ "data-side": side,
92
113
  "data-slot": "switch-composition",
93
114
  "data-type": type,
94
- children: [
115
+ children: side === "right" ? /* @__PURE__ */ jsxs(Fragment, { children: [
116
+ textContent,
117
+ switchEl
118
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
95
119
  switchEl,
96
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", "data-slot": "switch-text-content", children: [
97
- shouldShowText && /* @__PURE__ */ jsx(
98
- "label",
99
- {
100
- className: "text-sm font-medium leading-none",
101
- "data-slot": "switch-text",
102
- htmlFor: switchId,
103
- children: switchText
104
- }
105
- ),
106
- shouldShowDescription && /* @__PURE__ */ jsx(
107
- "p",
108
- {
109
- className: "text-xs text-muted-foreground leading-normal",
110
- "data-slot": "switch-description",
111
- children: descriptionText
112
- }
113
- )
114
- ] })
115
- ]
120
+ textContent
121
+ ] })
116
122
  }
117
123
  );
118
124
  }
119
125
 
120
126
  export { Switch, switchThumbVariants, switchVariants };
121
- //# sourceMappingURL=chunk-I5RDX6O3.js.map
122
- //# sourceMappingURL=chunk-I5RDX6O3.js.map
127
+ //# sourceMappingURL=chunk-TBPPBA3S.js.map
128
+ //# sourceMappingURL=chunk-TBPPBA3S.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/forms/Switch/Switch.variants.ts","../src/components/forms/Switch/Switch.tsx"],"names":[],"mappings":"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","file":"chunk-TBPPBA3S.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\nexport const switchVariants = cva(\n [\n \"peer inline-flex shrink-0 items-center border border-transparent transition-all outline-none\",\n \"rounded-[var(--switch-track-radius)] shadow-[var(--switch-track-shadow)]\",\n \"bg-[color:var(--switch-track-bg-off)] data-[state=checked]:bg-[color:var(--switch-track-bg-on)]\",\n \"dark:bg-input dark:data-[state=checked]:bg-primary\",\n \"focus-visible:border-[color:var(--switch-track-ring-primary)] focus-visible:ring-[color:var(--switch-track-ring-primary)]/50 focus-visible:ring-[length:var(--switch-track-ring-width)]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n \"disabled:cursor-not-allowed disabled:bg-[color:var(--switch-track-bg-disabled)] disabled:opacity-50\",\n ],\n {\n variants: {\n size: {\n sm: \"h-[var(--switch-size-sm-h)] w-[var(--switch-size-sm-w)]\",\n md: \"h-[var(--switch-size-md-h)] w-[var(--switch-size-md-w)]\",\n lg: \"h-[var(--switch-size-lg-h)] w-[var(--switch-size-lg-w)]\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nexport const switchThumbVariants = cva(\n [\n \"pointer-events-none block ring-0 transition-transform\",\n \"rounded-[var(--switch-thumb-radius)] bg-[color:var(--switch-thumb-bg)]\",\n \"dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground\",\n \"data-[state=unchecked]:translate-x-0\",\n ],\n {\n variants: {\n size: {\n sm: \"size-[var(--switch-thumb-size-sm)] data-[state=checked]:translate-x-3\",\n md: \"size-[var(--switch-thumb-size-md)] data-[state=checked]:translate-x-4\",\n lg: \"size-[var(--switch-thumb-size-lg)] data-[state=checked]:translate-x-5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nexport type SwitchVariantProps = VariantProps<typeof switchVariants>\nexport type SwitchThumbVariantProps = VariantProps<typeof switchThumbVariants>\n","import type { SwitchProps } from \"./Switch.types\"\n\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { switchThumbVariants, switchVariants } from \"./Switch.variants\"\n\nfunction Switch({\n className,\n size = \"md\",\n type = \"default\",\n side = \"left\",\n switchText,\n descriptionText,\n showText,\n showDescription,\n id,\n ...props\n}: SwitchProps) {\n const generatedId = React.useId()\n const switchId = id ?? generatedId\n\n const shouldShowText =\n (showText ?? Boolean(switchText)) && Boolean(switchText)\n const shouldShowDescription =\n (showDescription ?? Boolean(descriptionText)) && Boolean(descriptionText)\n const hasComposition = shouldShowText || shouldShowDescription\n\n const switchEl = (\n <SwitchPrimitive.Root\n className={cn(switchVariants({ size }), className)}\n data-slot=\"switch\"\n id={switchId}\n {...props}\n >\n <SwitchPrimitive.Thumb\n className={switchThumbVariants({ size })}\n data-slot=\"switch-thumb\"\n />\n </SwitchPrimitive.Root>\n )\n\n if (!hasComposition) {\n return switchEl\n }\n\n const textContent = (\n <div className=\"flex flex-col gap-1\" data-slot=\"switch-text-content\">\n {shouldShowText && (\n <label\n className=\"text-sm font-medium leading-none\"\n data-slot=\"switch-text\"\n htmlFor={switchId}\n >\n {switchText}\n </label>\n )}\n {shouldShowDescription && (\n <p\n className=\"text-xs text-muted-foreground leading-normal\"\n data-slot=\"switch-description\"\n >\n {descriptionText}\n </p>\n )}\n </div>\n )\n\n return (\n <div\n className={cn(\n \"flex items-start gap-3\",\n type === \"box\" && \"rounded-md border border-input p-4\"\n )}\n data-side={side}\n data-slot=\"switch-composition\"\n data-type={type}\n >\n {/* Figma Side=Left/Right (1186:2045): lado em que o CONTROLE fica —\n Right põe o texto primeiro no DOM, igual ao frame */}\n {side === \"right\" ? (\n <>\n {textContent}\n {switchEl}\n </>\n ) : (\n <>\n {switchEl}\n {textContent}\n </>\n )}\n </div>\n )\n}\n\nexport { Switch }\n"]}
@@ -10,9 +10,13 @@ var iconVariants = cva(
10
10
  default: "text-[color:var(--icon-color-default)]",
11
11
  muted: "text-[color:var(--icon-color-muted)]",
12
12
  primary: "text-[color:var(--icon-color-primary)]",
13
+ secondary: "text-[color:var(--icon-color-secondary)]",
13
14
  destructive: "text-[color:var(--icon-color-destructive)]",
14
15
  success: "text-[color:var(--icon-color-success)]",
15
- warning: "text-[color:var(--icon-color-warning)]"
16
+ warning: "text-[color:var(--icon-color-warning)]",
17
+ info: "text-[color:var(--icon-color-info)]",
18
+ disabled: "text-[color:var(--icon-color-disabled)]",
19
+ inverse: "text-[color:var(--icon-color-inverse)]"
16
20
  },
17
21
  size: {
18
22
  xs: "size-[var(--icon-size-xs)]",
@@ -66,5 +70,5 @@ function Icon({
66
70
  }
67
71
 
68
72
  export { Icon, iconVariants };
69
- //# sourceMappingURL=chunk-TDANAN5A.js.map
70
- //# sourceMappingURL=chunk-TDANAN5A.js.map
73
+ //# sourceMappingURL=chunk-TD2EFGHO.js.map
74
+ //# sourceMappingURL=chunk-TD2EFGHO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/primitives/Icon/Icon.tsx"],"names":[],"mappings":";;;;AAMA,IAAM,YAAA,GAAe,GAAA;AAAA,EACnB,uDAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,wCAAA;AAAA,QACT,KAAA,EAAO,sCAAA;AAAA,QACP,OAAA,EAAS,wCAAA;AAAA,QACT,SAAA,EAAW,0CAAA;AAAA,QACX,WAAA,EAAa,4CAAA;AAAA,QACb,OAAA,EAAS,wCAAA;AAAA,QACT,OAAA,EAAS,wCAAA;AAAA,QACT,IAAA,EAAM,qCAAA;AAAA,QACN,QAAA,EAAU,yCAAA;AAAA,QACV,OAAA,EAAS;AAAA,OACX;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,4BAAA;AAAA,QACJ,EAAA,EAAI,4BAAA;AAAA,QACJ,EAAA,EAAI,4BAAA;AAAA,QACJ,EAAA,EAAI,4BAAA;AAAA,QACJ,EAAA,EAAI,4BAAA;AAAA,QACJ,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ;AAEA,SAAS,IAAA,CAAK;AAAA,EACZ,IAAA,EAAM,aAAA;AAAA,EACN,OAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA,GAAO,KAAA;AAAA,EACP,KAAA,GAAQ,KAAA;AAAA,EACR,UAAA,GAAa,IAAA;AAAA,EACb,SAAA;AAAA,EACA,YAAA,EAAc,SAAA;AAAA,EACd,aAAA,EAAe,UAAA;AAAA,EACf,IAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAc;AAIZ,EAAA,MAAM,kBAAA,GAAqB,UAAA,KAAe,UAAA,GAAa,IAAA,GAAO,MAAA,CAAA;AAC9D,EAAA,MAAM,YAAA,GAAe,IAAA,KAAS,CAAC,UAAA,IAAc,YAAY,KAAA,GAAQ,MAAA,CAAA;AAEjE,EAAA,uBACE,GAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,YAAA,CAAa,EAAE,OAAA,EAAS,IAAA,EAAM,CAAA;AAAA,QAC9B,IAAA,IAAQ,cAAA;AAAA,QACR,KAAA,IAAS,eAAA;AAAA,QACT;AAAA,OACF;AAAA,MACA,aAAA,EAAa,kBAAA;AAAA,MACb,YAAA,EAAY,SAAA;AAAA,MACZ,WAAA,EAAU,MAAA;AAAA,MACV,SAAA,EAAU,OAAA;AAAA,MACV,IAAA,EAAM,YAAA;AAAA,MACL,GAAG;AAAA;AAAA,GACN;AAEJ","file":"chunk-TD2EFGHO.js","sourcesContent":["import type { IconProps } from \"./Icon.types\"\n\nimport { cva } from \"class-variance-authority\"\n\nimport { cn } from \"../../../lib/utils\"\n\nconst iconVariants = cva(\n \"shrink-0 transition-colors motion-reduce:animate-none\",\n {\n variants: {\n variant: {\n default: \"text-[color:var(--icon-color-default)]\",\n muted: \"text-[color:var(--icon-color-muted)]\",\n primary: \"text-[color:var(--icon-color-primary)]\",\n secondary: \"text-[color:var(--icon-color-secondary)]\",\n destructive: \"text-[color:var(--icon-color-destructive)]\",\n success: \"text-[color:var(--icon-color-success)]\",\n warning: \"text-[color:var(--icon-color-warning)]\",\n info: \"text-[color:var(--icon-color-info)]\",\n disabled: \"text-[color:var(--icon-color-disabled)]\",\n inverse: \"text-[color:var(--icon-color-inverse)]\",\n },\n size: {\n xs: \"size-[var(--icon-size-xs)]\",\n sm: \"size-[var(--icon-size-sm)]\",\n md: \"size-[var(--icon-size-md)]\",\n lg: \"size-[var(--icon-size-lg)]\",\n xl: \"size-[var(--icon-size-xl)]\",\n \"2xl\": \"size-[var(--icon-size-2xl)]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n }\n)\n\nfunction Icon({\n name: IconComponent,\n variant,\n size,\n spin = false,\n pulse = false,\n decorative = true,\n className,\n \"aria-label\": ariaLabel,\n \"aria-hidden\": ariaHidden,\n role,\n ref,\n ...props\n}: IconProps) {\n // Determine accessibility attributes\n // If decorative is explicitly true, always hide from screen readers\n // If decorative is false and has aria-label, make it accessible\n const computedAriaHidden = ariaHidden ?? (decorative ? true : undefined)\n const computedRole = role ?? (!decorative && ariaLabel ? \"img\" : undefined)\n\n return (\n <IconComponent\n ref={ref}\n className={cn(\n iconVariants({ variant, size }),\n spin && \"animate-spin\",\n pulse && \"animate-pulse\",\n className\n )}\n aria-hidden={computedAriaHidden}\n aria-label={ariaLabel}\n data-slot=\"icon\"\n focusable=\"false\"\n role={computedRole}\n {...props}\n />\n )\n}\n\nexport { Icon, iconVariants }\n"]}
@@ -1,4 +1,4 @@
1
- import { AlertDialog, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogTitle, AlertDialogDescription, AlertDialogFooter, AlertDialogCancel, AlertDialogAction } from './chunk-PTXC4KPQ.js';
1
+ import { AlertDialog, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogTitle, AlertDialogDescription, AlertDialogFooter, AlertDialogCancel, AlertDialogAction } from './chunk-OSHGYI2O.js';
2
2
  import { cn } from './chunk-RVAYDRMA.js';
3
3
  import 'react';
4
4
  import { jsxs, jsx } from 'react/jsx-runtime';
@@ -86,5 +86,5 @@ function ConfirmModal({
86
86
  }
87
87
 
88
88
  export { ConfirmModal };
89
- //# sourceMappingURL=chunk-3R6MY3YJ.js.map
90
- //# sourceMappingURL=chunk-3R6MY3YJ.js.map
89
+ //# sourceMappingURL=chunk-TVAIT3F5.js.map
90
+ //# sourceMappingURL=chunk-TVAIT3F5.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/feedback/ConfirmModal/ConfirmModal.tsx"],"names":[],"mappings":"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","file":"chunk-3R6MY3YJ.js","sourcesContent":["\"use client\"\n\nimport type {\n ConfirmModalProps,\n ConfirmModalSize,\n ConfirmModalVariant,\n} from \"./ConfirmModal.types\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from \"../AlertDialog\"\n\nconst sizeClasses: Record<ConfirmModalSize, string> = {\n sm: \"sm:max-w-sm\",\n md: \"sm:max-w-md\",\n lg: \"sm:max-w-lg\",\n}\n\nconst confirmButtonVariants: Record<ConfirmModalVariant, string> = {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive: \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n warning: \"bg-warning text-warning-fg hover:bg-warning/90\",\n}\n\nconst fallbackDescription = \"Confirme esta ação para continuar.\"\n\n/**\n * ConfirmModal - Simplified confirmation dialog\n *\n * A wrapper over AlertDialog that provides a declarative API for confirmation dialogs.\n * Abstracts the complexity of AlertDialog subcomponents into a simple props interface.\n *\n * @example\n * ```tsx\n * // Basic usage with trigger\n * <ConfirmModal\n * trigger={<Button>Delete</Button>}\n * title=\"Delete item\"\n * description=\"This action cannot be undone.\"\n * variant=\"destructive\"\n * onConfirm={() => deleteItem()}\n * />\n *\n * // Controlled usage\n * <ConfirmModal\n * open={open}\n * onOpenChange={setOpen}\n * title=\"Confirm action\"\n * onConfirm={handleConfirm}\n * />\n * ```\n */\nfunction ConfirmModal({\n open,\n onOpenChange,\n defaultOpen = false,\n title = \"Confirmar\",\n description,\n icon,\n children,\n confirmLabel = \"Confirmar\",\n cancelLabel = \"Cancelar\",\n variant = \"default\",\n onConfirm,\n onCancel,\n loading = false,\n disabled = false,\n trigger,\n className,\n size = \"md\",\n}: ConfirmModalProps) {\n const isDisabled = loading || disabled\n const accessibleDescription = description ?? fallbackDescription\n\n const handleConfirm = (\n event: React.MouseEvent<HTMLButtonElement>\n ): void => {\n event.preventDefault()\n if (onConfirm) {\n void onConfirm()\n }\n }\n\n const handleCancel = (): void => {\n onCancel?.()\n onOpenChange?.(false)\n }\n\n return (\n <AlertDialog\n defaultOpen={defaultOpen}\n open={open}\n onOpenChange={onOpenChange}\n >\n {trigger && <AlertDialogTrigger asChild>{trigger}</AlertDialogTrigger>}\n <AlertDialogContent\n className={cn(sizeClasses[size], className)}\n data-slot=\"confirm-modal\"\n >\n <AlertDialogHeader>\n {icon && (\n <div className=\"mb-2\" data-slot=\"confirm-modal-icon\">\n {icon}\n </div>\n )}\n <AlertDialogTitle>{title}</AlertDialogTitle>\n <AlertDialogDescription className={description ? undefined : \"sr-only\"}>\n {accessibleDescription}\n </AlertDialogDescription>\n </AlertDialogHeader>\n {children && (\n <div data-slot=\"confirm-modal-content\">{children}</div>\n )}\n <AlertDialogFooter>\n <AlertDialogCancel disabled={isDisabled} onClick={handleCancel}>\n {cancelLabel}\n </AlertDialogCancel>\n <AlertDialogAction\n className={cn(confirmButtonVariants[variant])}\n disabled={isDisabled}\n onClick={handleConfirm}\n >\n {confirmLabel}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n )\n}\n\nexport { ConfirmModal }\n"]}
1
+ {"version":3,"sources":["../src/components/feedback/ConfirmModal/ConfirmModal.tsx"],"names":[],"mappings":"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","file":"chunk-TVAIT3F5.js","sourcesContent":["\"use client\"\n\nimport type {\n ConfirmModalProps,\n ConfirmModalSize,\n ConfirmModalVariant,\n} from \"./ConfirmModal.types\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from \"../AlertDialog\"\n\nconst sizeClasses: Record<ConfirmModalSize, string> = {\n sm: \"sm:max-w-sm\",\n md: \"sm:max-w-md\",\n lg: \"sm:max-w-lg\",\n}\n\nconst confirmButtonVariants: Record<ConfirmModalVariant, string> = {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive: \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n warning: \"bg-warning text-warning-fg hover:bg-warning/90\",\n}\n\nconst fallbackDescription = \"Confirme esta ação para continuar.\"\n\n/**\n * ConfirmModal - Simplified confirmation dialog\n *\n * A wrapper over AlertDialog that provides a declarative API for confirmation dialogs.\n * Abstracts the complexity of AlertDialog subcomponents into a simple props interface.\n *\n * @example\n * ```tsx\n * // Basic usage with trigger\n * <ConfirmModal\n * trigger={<Button>Delete</Button>}\n * title=\"Delete item\"\n * description=\"This action cannot be undone.\"\n * variant=\"destructive\"\n * onConfirm={() => deleteItem()}\n * />\n *\n * // Controlled usage\n * <ConfirmModal\n * open={open}\n * onOpenChange={setOpen}\n * title=\"Confirm action\"\n * onConfirm={handleConfirm}\n * />\n * ```\n */\nfunction ConfirmModal({\n open,\n onOpenChange,\n defaultOpen = false,\n title = \"Confirmar\",\n description,\n icon,\n children,\n confirmLabel = \"Confirmar\",\n cancelLabel = \"Cancelar\",\n variant = \"default\",\n onConfirm,\n onCancel,\n loading = false,\n disabled = false,\n trigger,\n className,\n size = \"md\",\n}: ConfirmModalProps) {\n const isDisabled = loading || disabled\n const accessibleDescription = description ?? fallbackDescription\n\n const handleConfirm = (\n event: React.MouseEvent<HTMLButtonElement>\n ): void => {\n event.preventDefault()\n if (onConfirm) {\n void onConfirm()\n }\n }\n\n const handleCancel = (): void => {\n onCancel?.()\n onOpenChange?.(false)\n }\n\n return (\n <AlertDialog\n defaultOpen={defaultOpen}\n open={open}\n onOpenChange={onOpenChange}\n >\n {trigger && <AlertDialogTrigger asChild>{trigger}</AlertDialogTrigger>}\n <AlertDialogContent\n className={cn(sizeClasses[size], className)}\n data-slot=\"confirm-modal\"\n >\n <AlertDialogHeader>\n {icon && (\n <div className=\"mb-2\" data-slot=\"confirm-modal-icon\">\n {icon}\n </div>\n )}\n <AlertDialogTitle>{title}</AlertDialogTitle>\n <AlertDialogDescription className={description ? undefined : \"sr-only\"}>\n {accessibleDescription}\n </AlertDialogDescription>\n </AlertDialogHeader>\n {children && (\n <div data-slot=\"confirm-modal-content\">{children}</div>\n )}\n <AlertDialogFooter>\n <AlertDialogCancel disabled={isDisabled} onClick={handleCancel}>\n {cancelLabel}\n </AlertDialogCancel>\n <AlertDialogAction\n className={cn(confirmButtonVariants[variant])}\n disabled={isDisabled}\n onClick={handleConfirm}\n >\n {confirmLabel}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n )\n}\n\nexport { ConfirmModal }\n"]}
@@ -38,7 +38,10 @@ var itemVariants = cva(
38
38
  default: "bg-transparent",
39
39
  outline: "border-border",
40
40
  muted: "bg-muted/50",
41
- active: "bg-[color:var(--sidebar-accent)] text-[color:var(--sidebar-accent-foreground)] font-medium"
41
+ active: "bg-[color:var(--sidebar-accent)] text-[color:var(--sidebar-accent-foreground)] font-medium",
42
+ // Figma Style=Metric (1583:19541): linha label+valor justificada,
43
+ // sem padding/altura de card
44
+ metric: "bg-transparent justify-between flex-nowrap"
42
45
  },
43
46
  size: {
44
47
  sm: "py-3 px-4 gap-2.5 min-h-7",
@@ -50,6 +53,11 @@ var itemVariants = cva(
50
53
  false: ""
51
54
  }
52
55
  },
56
+ compoundVariants: [
57
+ { variant: "metric", size: "sm", className: "p-0 min-h-0" },
58
+ { variant: "metric", size: "default", className: "p-0 min-h-0" },
59
+ { variant: "metric", size: "lg", className: "p-0 min-h-0" }
60
+ ],
53
61
  defaultVariants: {
54
62
  variant: "default",
55
63
  size: "default",
@@ -226,5 +234,5 @@ function ItemFooter({ className, ...props }) {
226
234
  }
227
235
 
228
236
  export { Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, itemMediaVariants, itemVariants };
229
- //# sourceMappingURL=chunk-VHJ6ALIE.js.map
230
- //# sourceMappingURL=chunk-VHJ6ALIE.js.map
237
+ //# sourceMappingURL=chunk-TX4GUAZ6.js.map
238
+ //# sourceMappingURL=chunk-TX4GUAZ6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/Item/Item.tsx"],"names":[],"mappings":";;;;;;;AAOA,SAAS,SAAA,CAAU,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACvE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,gCAAA,EAAkC,SAAS,CAAA;AAAA,MACzD,WAAA,EAAU,YAAA;AAAA,MACV,IAAA,EAAK,MAAA;AAAA,MACJ,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,aAAA,CAAc;AAAA,EACrB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAyC;AACvC,EAAA,uBACE,GAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,SAAS,CAAA;AAAA,MAC/B,WAAA,EAAU,gBAAA;AAAA,MACV,WAAA,EAAY,YAAA;AAAA,MACX,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,IAAM,YAAA,GAAe,GAAA;AAAA,EACnB,mRAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,gBAAA;AAAA,QACT,OAAA,EAAS,eAAA;AAAA,QACT,KAAA,EAAO,aAAA;AAAA,QACP,MAAA,EAAQ,4FAAA;AAAA;AAAA;AAAA,QAGR,MAAA,EAAQ;AAAA,OACV;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,2BAAA;AAAA,QACJ,OAAA,EAAS,mBAAA;AAAA,QACT,EAAA,EAAI;AAAA,OACN;AAAA,MACA,WAAA,EAAa;AAAA,QACX,IAAA,EAAM,yFAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,gBAAA,EAAkB;AAAA,MAChB,EAAE,OAAA,EAAS,QAAA,EAAU,IAAA,EAAM,IAAA,EAAM,WAAW,aAAA,EAAc;AAAA,MAC1D,EAAE,OAAA,EAAS,QAAA,EAAU,IAAA,EAAM,SAAA,EAAW,WAAW,aAAA,EAAc;AAAA,MAC/D,EAAE,OAAA,EAAS,QAAA,EAAU,IAAA,EAAM,IAAA,EAAM,WAAW,aAAA;AAAc,KAC5D;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM,SAAA;AAAA,MACN,WAAA,EAAa;AAAA;AACf;AAEJ;AAkCA,SAAS,IAAA,CAAK;AAAA,EACZ,SAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA,GAAS,KAAA;AAAA,EACT,WAAA,GAAc,KAAA;AAAA,EACd,IAAA,GAAO,SAAA;AAAA,EACP,OAAA,GAAU,KAAA;AAAA,EACV,SAAA,EAAW,MAAA;AAAA,EACX,OAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAc;AAEZ,EAAA,MAAM,eAAA,GAAkB,OAAA,KAAY,MAAA,GAAS,QAAA,GAAW,SAAA,CAAA;AACxD,EAAA,MAAM,WAAW,eAAA,KAAoB,QAAA;AAKrC,EAAA,MAAM,IAAA,GAAQ,OAAA,GAAU,IAAA,GAAO,WAAA,GAAc,QAAA,GAAW,KAAA;AAExD,EAAA,MAAM,aAAA,GAAsB,KAAA,CAAA,WAAA;AAAA,IAC1B,OAAyB;AAAA,MACvB,GAAI,MAAA,GAAS,EAAE,EAAA,EAAI,MAAA,KAAW,EAAC;AAAA,MAC/B,MAAA,EAAQ,QAAA;AAAA,MACR,SAAA,EAAW,KAAK,GAAA;AAAI,KACtB,CAAA;AAAA,IACA,CAAC,QAAQ,QAAQ;AAAA,GACnB;AAEA,EAAA,MAAM,WAAA,GAAoB,KAAA,CAAA,WAAA;AAAA,IACxB,CAAC,KAAA,KAAgE;AAC/D,MAAA,OAAA,GAAU,KAAA,EAAO,eAAe,CAAA;AAAA,IAClC,CAAA;AAAA,IACA,CAAC,SAAS,aAAa;AAAA,GACzB;AAEA,EAAA,MAAM,WAAA,GAAoB,KAAA,CAAA,WAAA;AAAA,IACxB,CAAC,KAAA,KAAgE;AAC/D,MAAA,OAAA,GAAU,KAAA,EAAO,eAAe,CAAA;AAAA,IAClC,CAAA;AAAA,IACA,CAAC,SAAS,aAAa;AAAA,GACzB;AAEA,EAAA,MAAM,aAAA,GAAsB,KAAA,CAAA,WAAA;AAAA,IAC1B,CAAC,KAAA,KAAmE;AAClE,MAAA,SAAA,GAAY,KAAA,EAAO,eAAe,CAAA;AAAA,IACpC,CAAA;AAAA,IACA,CAAC,WAAW,aAAa;AAAA,GAC3B;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,cAAA,EAAc,QAAA,IAAY,WAAA,GAAc,MAAA,GAAS,MAAA;AAAA,MACjD,SAAA,EAAW,EAAA,CAAG,YAAA,CAAa,EAAE,OAAA,EAAS,iBAAiB,IAAA,EAAM,WAAA,EAAa,SAAA,EAAW,CAAC,CAAA;AAAA,MACtF,eAAa,QAAA,IAAY,MAAA;AAAA,MACzB,SAAA,EAAS,MAAA;AAAA,MACT,oBAAkB,WAAA,IAAe,MAAA;AAAA,MACjC,WAAA,EAAW,IAAA;AAAA,MACX,WAAA,EAAU,MAAA;AAAA,MACV,cAAA,EAAc,eAAA;AAAA,MACd,IAAA,EAAM,WAAA,IAAe,CAAC,OAAA,GAAU,QAAA,GAAW,MAAA;AAAA,MAC3C,OAAA,EAAS,WAAA;AAAA,MACT,OAAA,EAAS,WAAA;AAAA,MACT,SAAA,EAAW,aAAA;AAAA,MACV,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,IAAM,iBAAA,GAAoB,GAAA;AAAA,EACxB,oMAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,gBAAA;AAAA,QACT,IAAA,EAAM,wEAAA;AAAA,QACN,KAAA,EACE;AAAA;AACJ,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ;AAEA,SAAS,SAAA,CAAU;AAAA,EACjB,SAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,GAAG;AACL,CAAA,EAAyE;AACvE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAW,EAAA,CAAG,iBAAA,CAAkB,EAAE,OAAA,EAAS,SAAA,EAAW,CAAC,CAAA;AAAA,MACvD,WAAA,EAAU,YAAA;AAAA,MACV,cAAA,EAAc,OAAA;AAAA,MACb,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,WAAA,CAAY,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACzE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,mEAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,WAAA,EAAU,cAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,SAAA,CAAU,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACvE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,gEAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,WAAA,EAAU,YAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,eAAA,CAAgB,EAAE,SAAA,EAAW,GAAG,OAAM,EAA8B;AAC3E,EAAA,uBACE,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,oFAAA;AAAA,QACA,mEAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,WAAA,EAAU,kBAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,WAAA,CAAY,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACzE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,yBAAA,EAA2B,SAAS,CAAA;AAAA,MAClD,WAAA,EAAU,cAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACxE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,oDAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,WAAA,EAAU,aAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACxE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,oDAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,WAAA,EAAU,aAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACN;AAEJ","file":"chunk-TX4GUAZ6.js","sourcesContent":["import { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Divider } from \"../../primitives/Divider\"\n\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"group/item-group flex flex-col\", className)}\n data-slot=\"item-group\"\n role=\"list\"\n {...props}\n />\n )\n}\n\nfunction ItemSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Divider>) {\n return (\n <Divider\n className={cn(\"my-0\", className)}\n data-slot=\"item-separator\"\n orientation=\"horizontal\"\n {...props}\n />\n )\n}\n\nconst itemVariants = cva(\n \"group/item flex items-center border border-transparent text-sm rounded-md transition-[colors,transform,box-shadow] [a]:hover:bg-accent/50 [a]:transition-colors duration-100 flex-wrap outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline: \"border-border\",\n muted: \"bg-muted/50\",\n active: \"bg-[color:var(--sidebar-accent)] text-[color:var(--sidebar-accent-foreground)] font-medium\",\n // Figma Style=Metric (1583:19541): linha label+valor justificada,\n // sem padding/altura de card\n metric: \"bg-transparent justify-between flex-nowrap\",\n },\n size: {\n sm: \"py-3 px-4 gap-2.5 min-h-7\",\n default: \"p-4 gap-4 min-h-8\",\n lg: \"py-3.5 px-4 gap-3.5 min-h-14\",\n },\n interactive: {\n true: \"cursor-pointer hover:translate-y-px active:translate-y-0.5 motion-reduce:transform-none\",\n false: \"\",\n },\n },\n compoundVariants: [\n { variant: \"metric\", size: \"sm\", className: \"p-0 min-h-0\" },\n { variant: \"metric\", size: \"default\", className: \"p-0 min-h-0\" },\n { variant: \"metric\", size: \"lg\", className: \"p-0 min-h-0\" },\n ],\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n interactive: false,\n },\n }\n)\n\nexport interface ItemEventPayload {\n /** Whether the item is currently in active state */\n active: boolean\n /** Reflects the `data-id` prop */\n id?: string\n /** Event timestamp (Date.now()) */\n timestamp: number\n}\n\ninterface ItemProps\n extends Omit<React.ComponentProps<\"div\">, \"onClick\" | \"onFocus\" | \"onKeyDown\">,\n VariantProps<typeof itemVariants> {\n /** Shorthand for `variant=\"active\"`. When both passed, `variant` wins. */\n active?: boolean\n asChild?: boolean\n /** Reflected to `data-id` and to the event payload. */\n \"data-id\"?: string\n /** Click handler — receives the event + an ItemEventPayload. */\n onClick?: (\n event: React.MouseEvent<HTMLButtonElement | HTMLDivElement>,\n payload: ItemEventPayload,\n ) => void\n onFocus?: (\n event: React.FocusEvent<HTMLButtonElement | HTMLDivElement>,\n payload: ItemEventPayload,\n ) => void\n onKeyDown?: (\n event: React.KeyboardEvent<HTMLButtonElement | HTMLDivElement>,\n payload: ItemEventPayload,\n ) => void\n}\n\nfunction Item({\n className,\n variant,\n active = false,\n interactive = false,\n size = \"default\",\n asChild = false,\n \"data-id\": dataId,\n onClick,\n onFocus,\n onKeyDown,\n ...props\n}: ItemProps) {\n // active prop is shorthand for variant=\"active\"; explicit variant wins\n const resolvedVariant = variant ?? (active ? \"active\" : \"default\")\n const isActive = resolvedVariant === \"active\"\n\n // Root element selection: asChild > interactive=button > default div\n // (when asChild, Radix Slot proxies to the child)\n // Cast to ElementType so the spread of generic props works against any root\n const Comp = (asChild ? Slot : interactive ? \"button\" : \"div\") as React.ElementType\n\n const createPayload = React.useCallback(\n (): ItemEventPayload => ({\n ...(dataId ? { id: dataId } : {}),\n active: isActive,\n timestamp: Date.now(),\n }),\n [dataId, isActive],\n )\n\n const handleClick = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement | HTMLDivElement>) => {\n onClick?.(event, createPayload())\n },\n [onClick, createPayload],\n )\n\n const handleFocus = React.useCallback(\n (event: React.FocusEvent<HTMLButtonElement | HTMLDivElement>) => {\n onFocus?.(event, createPayload())\n },\n [onFocus, createPayload],\n )\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLButtonElement | HTMLDivElement>) => {\n onKeyDown?.(event, createPayload())\n },\n [onKeyDown, createPayload],\n )\n\n return (\n <Comp\n aria-current={isActive && interactive ? \"page\" : undefined}\n className={cn(itemVariants({ variant: resolvedVariant, size, interactive, className }))}\n data-active={isActive || undefined}\n data-id={dataId}\n data-interactive={interactive ?? undefined}\n data-size={size}\n data-slot=\"item\"\n data-variant={resolvedVariant}\n type={interactive && !asChild ? \"button\" : undefined}\n onClick={handleClick}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n {...props}\n />\n )\n}\n\nconst itemMediaVariants = cva(\n \"flex shrink-0 items-center justify-center gap-2 group-has-[[data-slot=item-description]]/item:self-start [&_svg]:pointer-events-none group-has-[[data-slot=item-description]]/item:translate-y-0.5\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"size-8 border rounded-sm bg-muted [&_svg:not([class*='size-'])]:size-4\",\n image:\n \"size-10 rounded-sm overflow-hidden [&_img]:size-full [&_img]:object-cover\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction ItemMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof itemMediaVariants>) {\n return (\n <div\n className={cn(itemMediaVariants({ variant, className }))}\n data-slot=\"item-media\"\n data-variant={variant}\n {...props}\n />\n )\n}\n\nfunction ItemContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex flex-1 flex-col gap-1 [&+[data-slot=item-content]]:flex-none\",\n className\n )}\n data-slot=\"item-content\"\n {...props}\n />\n )\n}\n\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex w-fit items-center gap-2 text-sm leading-snug font-medium\",\n className\n )}\n data-slot=\"item-title\"\n {...props}\n />\n )\n}\n\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n className={cn(\n \"text-muted-foreground line-clamp-2 text-sm leading-normal font-normal text-balance\",\n \"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n className\n )}\n data-slot=\"item-description\"\n {...props}\n />\n )\n}\n\nfunction ItemActions({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"flex items-center gap-2\", className)}\n data-slot=\"item-actions\"\n {...props}\n />\n )\n}\n\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex basis-full items-center justify-between gap-2\",\n className\n )}\n data-slot=\"item-header\"\n {...props}\n />\n )\n}\n\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex basis-full items-center justify-between gap-2\",\n className\n )}\n data-slot=\"item-footer\"\n {...props}\n />\n )\n}\n\nexport {\n Item,\n ItemActions,\n ItemContent,\n ItemDescription,\n ItemFooter,\n ItemGroup,\n ItemHeader,\n ItemMedia,\n itemMediaVariants,\n ItemSeparator,\n ItemTitle,\n itemVariants,\n}\n"]}
@@ -12,10 +12,25 @@ function RadarChart({
12
12
  showGrid = true,
13
13
  showDots = true,
14
14
  fillOpacity = 0.3,
15
+ gridType = "polygon",
16
+ gridFilled = false,
17
+ gridRadialLines = true,
18
+ gridPolarRadius,
19
+ linesOnly = false,
15
20
  ...props
16
21
  }) {
22
+ const firstKey = dataKeys[0];
17
23
  return /* @__PURE__ */ jsx(ChartContainer, { className: cn("aspect-square", className), config, ...props, children: /* @__PURE__ */ jsxs(RadarChart$1, { data, children: [
18
- showGrid && /* @__PURE__ */ jsx(PolarGrid, {}),
24
+ showGrid && /* @__PURE__ */ jsx(
25
+ PolarGrid,
26
+ {
27
+ style: gridFilled && firstKey ? { fill: `var(--color-${firstKey})` } : void 0,
28
+ className: cn(gridFilled && "opacity-20"),
29
+ gridType,
30
+ polarRadius: gridPolarRadius,
31
+ radialLines: gridRadialLines
32
+ }
33
+ ),
19
34
  /* @__PURE__ */ jsx(PolarAngleAxis, { dataKey: angleKey }),
20
35
  /* @__PURE__ */ jsx(ChartTooltip, { content: /* @__PURE__ */ jsx(ChartTooltipContent, {}) }),
21
36
  dataKeys.map((key) => /* @__PURE__ */ jsx(
@@ -23,9 +38,10 @@ function RadarChart({
23
38
  {
24
39
  dataKey: key,
25
40
  dot: showDots ? { r: 3 } : false,
26
- fill: `var(--color-${key})`,
27
- fillOpacity,
28
- stroke: `var(--color-${key})`
41
+ fill: linesOnly ? "none" : `var(--color-${key})`,
42
+ fillOpacity: linesOnly ? 0 : fillOpacity,
43
+ stroke: `var(--color-${key})`,
44
+ strokeWidth: linesOnly ? 2 : 1
29
45
  },
30
46
  key
31
47
  ))
@@ -33,5 +49,5 @@ function RadarChart({
33
49
  }
34
50
 
35
51
  export { RadarChart };
36
- //# sourceMappingURL=chunk-7XJQYAGY.js.map
37
- //# sourceMappingURL=chunk-7XJQYAGY.js.map
52
+ //# sourceMappingURL=chunk-U55YU7DB.js.map
53
+ //# sourceMappingURL=chunk-U55YU7DB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/RadarChart/RadarChart.tsx"],"names":["RechartsRadarChart"],"mappings":";;;;;AAsBA,SAAS,UAAA,CAAW;AAAA,EAClB,SAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA,GAAW,SAAA;AAAA,EACX,QAAA,GAAW,IAAA;AAAA,EACX,QAAA,GAAW,IAAA;AAAA,EACX,WAAA,GAAc,GAAA;AAAA,EACd,QAAA,GAAW,SAAA;AAAA,EACX,UAAA,GAAa,KAAA;AAAA,EACb,eAAA,GAAkB,IAAA;AAAA,EAClB,eAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ,GAAG;AACL,CAAA,EAAoB;AAClB,EAAA,MAAM,QAAA,GAAW,SAAS,CAAC,CAAA;AAE3B,EAAA,uBACE,GAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAW,EAAA,CAAG,eAAA,EAAiB,SAAS,CAAA,EAAG,MAAA,EAAiB,GAAG,KAAA,EAC7E,QAAA,kBAAA,IAAA,CAACA,YAAA,EAAA,EAAmB,IAAA,EACjB,QAAA,EAAA;AAAA,IAAA,QAAA,oBACC,GAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QAEC,KAAA,EACE,cAAc,QAAA,GACV,EAAE,MAAM,CAAA,YAAA,EAAe,QAAQ,KAAI,GACnC,MAAA;AAAA,QAEN,SAAA,EAAW,EAAA,CAAG,UAAA,IAAc,YAAY,CAAA;AAAA,QACxC,QAAA;AAAA,QACA,WAAA,EAAa,eAAA;AAAA,QACb,WAAA,EAAa;AAAA;AAAA,KACf;AAAA,oBAEF,GAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAS,QAAA,EAAU,CAAA;AAAA,oBACnC,GAAA,CAAC,YAAA,EAAA,EAAa,OAAA,kBAAS,GAAA,CAAC,uBAAoB,CAAA,EAAI,CAAA;AAAA,IAC/C,QAAA,CAAS,GAAA,CAAI,CAAC,GAAA,qBACb,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QAEC,OAAA,EAAS,GAAA;AAAA,QACT,GAAA,EAAK,QAAA,GAAW,EAAE,CAAA,EAAG,GAAE,GAAI,KAAA;AAAA,QAC3B,IAAA,EAAM,SAAA,GAAY,MAAA,GAAS,CAAA,YAAA,EAAe,GAAG,CAAA,CAAA,CAAA;AAAA,QAC7C,WAAA,EAAa,YAAY,CAAA,GAAI,WAAA;AAAA,QAC7B,MAAA,EAAQ,eAAe,GAAG,CAAA,CAAA,CAAA;AAAA,QAC1B,WAAA,EAAa,YAAY,CAAA,GAAI;AAAA,OAAA;AAAA,MANxB;AAAA,KAQR;AAAA,GAAA,EACH,CAAA,EACF,CAAA;AAEJ","file":"chunk-U55YU7DB.js","sourcesContent":["\"use client\"\n\nimport type { RadarChartProps } from \"./RadarChart.types\"\n\nimport {\n PolarAngleAxis,\n PolarGrid,\n Radar,\n RadarChart as RechartsRadarChart,\n} from \"recharts\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { ChartContainer, ChartTooltip, ChartTooltipContent } from \"../Chart\"\n\n/**\n * Os 9 Types do Figma (1147:3565) são presets destas props ortogonais\n * (receitas shadcn charts): Basic (defaults) · Dots (showDots) · Multiple\n * (2+ dataKeys) · Lines Only (linesOnly) · Grid Custom (gridRadialLines\n * false + gridPolarRadius) · Grid Filled (gridFilled) · Grid Circle\n * (gridType circle) · No lines (gridRadialLines false) · Grid Circle\n * Filled (circle + filled).\n */\nfunction RadarChart({\n className,\n config,\n data,\n dataKeys,\n angleKey = \"subject\",\n showGrid = true,\n showDots = true,\n fillOpacity = 0.3,\n gridType = \"polygon\",\n gridFilled = false,\n gridRadialLines = true,\n gridPolarRadius,\n linesOnly = false,\n ...props\n}: RadarChartProps) {\n const firstKey = dataKeys[0]\n\n return (\n <ChartContainer className={cn(\"aspect-square\", className)} config={config} {...props}>\n <RechartsRadarChart data={data}>\n {showGrid && (\n <PolarGrid\n // fill herda pros níveis da grade (receita shadcn Grid Filled)\n style={\n gridFilled && firstKey\n ? { fill: `var(--color-${firstKey})` }\n : undefined\n }\n className={cn(gridFilled && \"opacity-20\")}\n gridType={gridType}\n polarRadius={gridPolarRadius}\n radialLines={gridRadialLines}\n />\n )}\n <PolarAngleAxis dataKey={angleKey} />\n <ChartTooltip content={<ChartTooltipContent />} />\n {dataKeys.map((key) => (\n <Radar\n key={key}\n dataKey={key}\n dot={showDots ? { r: 3 } : false}\n fill={linesOnly ? \"none\" : `var(--color-${key})`}\n fillOpacity={linesOnly ? 0 : fillOpacity}\n stroke={`var(--color-${key})`}\n strokeWidth={linesOnly ? 2 : 1}\n />\n ))}\n </RechartsRadarChart>\n </ChartContainer>\n )\n}\n\nexport { RadarChart }\n"]}
@@ -40,6 +40,7 @@ var progressCircleTrackVariants = cva(
40
40
  color: {
41
41
  default: "stroke-[color:var(--progress-circle-track-color-default)]",
42
42
  primary: "stroke-[color:var(--progress-circle-track-color-primary)]",
43
+ secondary: "stroke-[color:var(--progress-circle-track-color-secondary)]",
43
44
  success: "stroke-[color:var(--progress-circle-track-color-success)]",
44
45
  warning: "stroke-[color:var(--progress-circle-track-color-warning)]",
45
46
  error: "stroke-[color:var(--progress-circle-track-color-error)]"
@@ -57,6 +58,7 @@ var progressCircleIndicatorVariants = cva(
57
58
  color: {
58
59
  default: "stroke-[color:var(--progress-circle-indicator-color-default)]",
59
60
  primary: "stroke-[color:var(--progress-circle-indicator-color-primary)]",
61
+ secondary: "stroke-[color:var(--progress-circle-indicator-color-secondary)]",
60
62
  success: "stroke-[color:var(--progress-circle-indicator-color-success)]",
61
63
  warning: "stroke-[color:var(--progress-circle-indicator-color-warning)]",
62
64
  error: "stroke-[color:var(--progress-circle-indicator-color-error)]"
@@ -301,5 +303,5 @@ function ProgressCircle({
301
303
  }
302
304
 
303
305
  export { PROGRESS_CIRCLE_SIZES, ProgressCircle, progressCircleContainerVariants, progressCircleIndicatorVariants, progressCircleLabelVariants, progressCircleTrackVariants, progressCircleValueVariants };
304
- //# sourceMappingURL=chunk-5GV4LDX7.js.map
305
- //# sourceMappingURL=chunk-5GV4LDX7.js.map
306
+ //# sourceMappingURL=chunk-VI3QWOII.js.map
307
+ //# sourceMappingURL=chunk-VI3QWOII.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/primitives/ProgressCircle/ProgressCircle.variants.ts","../src/components/primitives/ProgressCircle/ProgressCircle.tsx"],"names":[],"mappings":"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","file":"chunk-VI3QWOII.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * Size configuration for ProgressCircle\n * Maps size variant to actual pixel dimensions and stroke widths.\n *\n * Values are synced with CSS variables from @etus/tokens:\n * - --progress-circle-size-{size}-diameter\n * - --progress-circle-size-{size}-stroke-width\n *\n * Numeric values are required here for SVG attribute calculations\n * (radius, circumference, path coordinates).\n */\nexport const PROGRESS_CIRCLE_SIZES = {\n xxs: { diameter: 64, strokeWidth: 4, fontSize: \"text-sm\", labelSize: \"text-xs\" },\n xs: { diameter: 160, strokeWidth: 8, fontSize: \"text-2xl\", labelSize: \"text-sm\" },\n sm: { diameter: 200, strokeWidth: 10, fontSize: \"text-3xl\", labelSize: \"text-sm\" },\n md: { diameter: 240, strokeWidth: 12, fontSize: \"text-4xl\", labelSize: \"text-base\" },\n lg: { diameter: 280, strokeWidth: 14, fontSize: \"text-5xl\", labelSize: \"text-base\" },\n} as const\n\n/**\n * Container variants for the progress circle\n * Uses CSS custom properties from @etus/tokens for sizing\n */\nexport const progressCircleContainerVariants = cva(\n \"relative inline-flex items-center justify-center\",\n {\n variants: {\n size: {\n xxs: \"w-[var(--progress-circle-size-xxs-diameter)] h-[var(--progress-circle-size-xxs-diameter)]\",\n xs: \"w-[var(--progress-circle-size-xs-diameter)] h-[var(--progress-circle-size-xs-diameter)]\",\n sm: \"w-[var(--progress-circle-size-sm-diameter)] h-[var(--progress-circle-size-sm-diameter)]\",\n md: \"w-[var(--progress-circle-size-md-diameter)] h-[var(--progress-circle-size-md-diameter)]\",\n lg: \"w-[var(--progress-circle-size-lg-diameter)] h-[var(--progress-circle-size-lg-diameter)]\",\n },\n shape: {\n circle: \"\",\n \"half-circle\": \"!h-auto\",\n },\n },\n defaultVariants: {\n size: \"md\",\n shape: \"circle\",\n },\n }\n)\n\n/**\n * Track (background circle) color variants\n */\nexport const progressCircleTrackVariants = cva(\n \"transition-colors\",\n {\n variants: {\n color: {\n default: \"stroke-[color:var(--progress-circle-track-color-default)]\",\n primary: \"stroke-[color:var(--progress-circle-track-color-primary)]\",\n secondary: \"stroke-[color:var(--progress-circle-track-color-secondary)]\",\n success: \"stroke-[color:var(--progress-circle-track-color-success)]\",\n warning: \"stroke-[color:var(--progress-circle-track-color-warning)]\",\n error: \"stroke-[color:var(--progress-circle-track-color-error)]\",\n },\n },\n defaultVariants: {\n color: \"default\",\n },\n }\n)\n\n/**\n * Indicator (progress arc) color variants\n */\nexport const progressCircleIndicatorVariants = cva(\n \"transition-all duration-700 ease-out motion-reduce:transition-none\",\n {\n variants: {\n color: {\n default: \"stroke-[color:var(--progress-circle-indicator-color-default)]\",\n primary: \"stroke-[color:var(--progress-circle-indicator-color-primary)]\",\n secondary: \"stroke-[color:var(--progress-circle-indicator-color-secondary)]\",\n success: \"stroke-[color:var(--progress-circle-indicator-color-success)]\",\n warning: \"stroke-[color:var(--progress-circle-indicator-color-warning)]\",\n error: \"stroke-[color:var(--progress-circle-indicator-color-error)]\",\n },\n indeterminate: {\n true: \"animate-spin origin-center\",\n false: \"\",\n },\n },\n defaultVariants: {\n color: \"default\",\n indeterminate: false,\n },\n }\n)\n\n/**\n * Value text variants (percentage in center)\n */\nexport const progressCircleValueVariants = cva(\n \"font-[var(--progress-circle-value-font-weight)] tabular-nums text-[color:var(--progress-circle-value-color)]\",\n {\n variants: {\n size: {\n xxs: \"text-sm\",\n xs: \"text-2xl\",\n sm: \"text-3xl\",\n md: \"text-4xl\",\n lg: \"text-5xl\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\n/**\n * Label text variants (below percentage)\n */\nexport const progressCircleLabelVariants = cva(\n \"text-[color:var(--progress-circle-label-color)]\",\n {\n variants: {\n size: {\n xxs: \"text-xs\",\n xs: \"text-sm\",\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-base\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nexport type ProgressCircleContainerVariants = VariantProps<typeof progressCircleContainerVariants>\nexport type ProgressCircleTrackVariants = VariantProps<typeof progressCircleTrackVariants>\nexport type ProgressCircleIndicatorVariants = VariantProps<typeof progressCircleIndicatorVariants>\n","\"use client\"\n\nimport type { ProgressCircleProps } from \"./ProgressCircle.types\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../../feedback/Tooltip\"\nimport {\n PROGRESS_CIRCLE_SIZES,\n progressCircleContainerVariants,\n progressCircleIndicatorVariants,\n progressCircleLabelVariants,\n progressCircleTrackVariants,\n progressCircleValueVariants,\n} from \"./ProgressCircle.variants\"\n\n/**\n * Default format function for progress value\n */\nconst defaultFormatValue = (value: number): string => `${String(value)}%`\n\n/**\n * ProgressCircle component for displaying circular progress indicators.\n *\n * Built with SVG for smooth rendering and full accessibility support.\n * Supports multiple sizes, shapes (full circle and half-circle),\n * color variants, and optional labels.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <ProgressCircle value={75} />\n *\n * // With label\n * <ProgressCircle value={60} label=\"Active users\" />\n *\n * // Half-circle variant\n * <ProgressCircle value={80} shape=\"half-circle\" />\n *\n * // Different sizes and colors\n * <ProgressCircle value={50} size=\"lg\" color=\"warning\" />\n * ```\n */\nfunction ProgressCircle({\n value = 0,\n max = 100,\n indeterminate = false,\n size = \"md\",\n shape = \"circle\",\n color = \"default\",\n label,\n formatValue = defaultFormatValue,\n showValue = true,\n radius: customRadius,\n strokeWidth: customStrokeWidth,\n className,\n animate = true,\n tooltip,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledby,\n}: ProgressCircleProps) {\n // Clamp the raw value between 0 and max first\n const clampedRawValue = Math.min(max, Math.max(0, value))\n\n // Calculate percentage based on clamped value and max\n const clampedValue = (clampedRawValue / max) * 100\n\n // Animation state - initialize based on animate and indeterminate props\n const [isVisible, setIsVisible] = React.useState(!animate || indeterminate)\n const containerRef = React.useRef<HTMLDivElement>(null)\n\n // Use IntersectionObserver to trigger animation only when in viewport\n React.useEffect(() => {\n // Skip if not animating, indeterminate, or already visible\n if (!animate || indeterminate || isVisible) {\n return\n }\n\n const element = containerRef.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 requestAnimationFrame(() => {\n setIsVisible(true)\n })\n observer.disconnect()\n }\n },\n { threshold: 0.1 }\n )\n\n observer.observe(element)\n\n return () => { observer.disconnect(); }\n }, [animate, indeterminate, isVisible])\n\n // Get size configuration\n const sizeConfig = PROGRESS_CIRCLE_SIZES[size]\n const strokeWidth = customStrokeWidth ?? sizeConfig.strokeWidth\n // Use custom radius if provided, otherwise use size preset\n const diameter = customRadius ? (customRadius * 2 + strokeWidth) : sizeConfig.diameter\n\n // Calculate SVG dimensions\n const radius = (diameter - strokeWidth) / 2\n const center = diameter / 2\n\n // Calculate circumference and progress\n const isHalfCircle = shape === \"half-circle\"\n const circumference = isHalfCircle ? Math.PI * radius : 2 * Math.PI * radius\n\n // For indeterminate, show ~25% of the arc; otherwise use the actual value\n // For animation, start at 0 and animate to the target value when visible\n const displayValue = indeterminate ? 25 : (isVisible ? clampedValue : 0)\n const progressOffset = circumference - (displayValue / 100) * circumference\n\n // SVG viewBox and path calculations\n const viewBoxHeight = isHalfCircle ? diameter / 2 + strokeWidth : diameter\n\n // For half-circle, we use an arc path instead of a circle\n const getPath = () => {\n if (isHalfCircle) {\n // Arc from left to right (180 degrees at top)\n const startX = strokeWidth / 2\n const startY = center\n const endX = diameter - strokeWidth / 2\n const endY = center\n return `M ${String(startX)} ${String(startY)} A ${String(radius)} ${String(radius)} 0 0 1 ${String(endX)} ${String(endY)}`\n }\n return\n }\n\n // Format the clamped value for display\n const formattedValue = formatValue(clampedRawValue)\n\n const progressCircleElement = (\n <div\n ref={containerRef}\n className={cn(\n progressCircleContainerVariants({ size, shape }),\n className\n )}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n aria-valuemax={max}\n aria-valuemin={0}\n aria-valuenow={indeterminate ? undefined : clampedRawValue}\n data-indeterminate={indeterminate || undefined}\n data-slot=\"progress-circle\"\n role=\"progressbar\"\n >\n <svg\n className={isHalfCircle ? \"rotate-0\" : \"\"}\n data-slot=\"progress-circle-svg\"\n height={viewBoxHeight}\n viewBox={`0 0 ${String(diameter)} ${String(viewBoxHeight)}`}\n width={diameter}\n >\n {isHalfCircle ? (\n <>\n {/* Half-circle track */}\n <path\n className={cn(progressCircleTrackVariants({ color }))}\n d={getPath()}\n data-slot=\"progress-circle-track\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeWidth={strokeWidth}\n />\n {/* Half-circle indicator */}\n <path\n className={cn(progressCircleIndicatorVariants({ color }))}\n d={getPath()}\n data-slot=\"progress-circle-indicator\"\n fill=\"none\"\n strokeDasharray={circumference}\n strokeDashoffset={progressOffset}\n strokeLinecap=\"round\"\n strokeWidth={strokeWidth}\n />\n </>\n ) : (\n <>\n {/* Full circle track */}\n <circle\n className={cn(progressCircleTrackVariants({ color }))}\n cx={center}\n cy={center}\n data-slot=\"progress-circle-track\"\n fill=\"none\"\n r={radius}\n strokeWidth={strokeWidth}\n />\n {/* Full circle indicator */}\n <circle\n style={{\n transform: indeterminate ? undefined : \"rotate(-90deg)\",\n transformOrigin: \"center\",\n }}\n className={cn(progressCircleIndicatorVariants({ color, indeterminate }))}\n cx={center}\n cy={center}\n data-slot=\"progress-circle-indicator\"\n fill=\"none\"\n r={radius}\n strokeDasharray={circumference}\n strokeDashoffset={progressOffset}\n strokeLinecap=\"round\"\n strokeWidth={strokeWidth}\n />\n </>\n )}\n </svg>\n\n {/* Center content (value and label) */}\n <div\n className={cn(\n \"absolute flex flex-col items-center justify-center\",\n isHalfCircle && \"bottom-0\"\n )}\n data-slot=\"progress-circle-content\"\n >\n {showValue && !indeterminate && (\n <span\n className={cn(progressCircleValueVariants({ size }))}\n data-slot=\"progress-circle-value\"\n >\n {formattedValue}\n </span>\n )}\n {label && (\n <span\n className={cn(progressCircleLabelVariants({ size }))}\n data-slot=\"progress-circle-label\"\n >\n {label}\n </span>\n )}\n </div>\n </div>\n )\n\n if (tooltip) {\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n {progressCircleElement}\n </TooltipTrigger>\n <TooltipContent>\n {tooltip}\n </TooltipContent>\n </Tooltip>\n )\n }\n\n return progressCircleElement\n}\n\nexport { ProgressCircle }\n"]}
@@ -1,4 +1,4 @@
1
- import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem } from './chunk-6G5QK3SU.js';
1
+ import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem } from './chunk-FLXU5LWR.js';
2
2
  import { cn } from './chunk-RVAYDRMA.js';
3
3
  import { EyeIcon, ClockIcon, CheckIcon, AlertCircleIcon, ArchiveIcon, ChevronDownIcon } from 'lucide-react';
4
4
  import { useId, useState, useMemo } from 'react';
@@ -282,5 +282,5 @@ function TaskStatus({
282
282
  }
283
283
 
284
284
  export { ALL_STATUSES, DEFAULT_STATUS_CONFIGS, TaskStatus, taskStatusColorVariants, taskStatusIconVariants, taskStatusLabelVariants, taskStatusMenuItemVariants, taskStatusTriggerVariants, taskStatusVariants };
285
- //# sourceMappingURL=chunk-PXR6CZIL.js.map
286
- //# sourceMappingURL=chunk-PXR6CZIL.js.map
285
+ //# sourceMappingURL=chunk-VYCXCOUH.js.map
286
+ //# sourceMappingURL=chunk-VYCXCOUH.js.map