@etus/ui 0.4.0-beta.3 → 0.4.0-beta.5

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 (170) hide show
  1. package/dist/chunk-2HM5Z2YP.js +834 -0
  2. package/dist/chunk-2HM5Z2YP.js.map +1 -0
  3. package/dist/{chunk-LMTNDUIP.js → chunk-2Y7PQ6ZL.js} +4 -4
  4. package/dist/{chunk-LMTNDUIP.js.map → chunk-2Y7PQ6ZL.js.map} +1 -1
  5. package/dist/{chunk-SAKW2OKH.js → chunk-32IJQOUV.js} +15 -26
  6. package/dist/chunk-32IJQOUV.js.map +1 -0
  7. package/dist/{chunk-CXHA5D3I.js → chunk-33JGPMUW.js} +4 -4
  8. package/dist/{chunk-CXHA5D3I.js.map → chunk-33JGPMUW.js.map} +1 -1
  9. package/dist/{chunk-JLVL76SW.js → chunk-36XTKR3B.js} +4 -4
  10. package/dist/{chunk-JLVL76SW.js.map → chunk-36XTKR3B.js.map} +1 -1
  11. package/dist/{chunk-CUWQUGGB.js → chunk-4GQN76L7.js} +3 -3
  12. package/dist/{chunk-CUWQUGGB.js.map → chunk-4GQN76L7.js.map} +1 -1
  13. package/dist/{chunk-7BAL24EU.js → chunk-5XQIH6WM.js} +4 -4
  14. package/dist/{chunk-7BAL24EU.js.map → chunk-5XQIH6WM.js.map} +1 -1
  15. package/dist/chunk-5ZWFIDO2.js +3 -0
  16. package/dist/{chunk-NNOGFX66.js.map → chunk-5ZWFIDO2.js.map} +1 -1
  17. package/dist/{chunk-43SINRHH.js → chunk-AUCDXPWH.js} +5 -5
  18. package/dist/{chunk-43SINRHH.js.map → chunk-AUCDXPWH.js.map} +1 -1
  19. package/dist/{chunk-4HRQX2IA.js → chunk-AWYOWR5N.js} +3 -3
  20. package/dist/{chunk-4HRQX2IA.js.map → chunk-AWYOWR5N.js.map} +1 -1
  21. package/dist/{chunk-YTGYSNFR.js → chunk-B4ETIQOO.js} +4 -4
  22. package/dist/{chunk-YTGYSNFR.js.map → chunk-B4ETIQOO.js.map} +1 -1
  23. package/dist/{chunk-D5DM6GZB.js → chunk-D6TH3EGA.js} +12 -12
  24. package/dist/chunk-D6TH3EGA.js.map +1 -0
  25. package/dist/{chunk-ZJVZ3LQS.js → chunk-DDM2I5C6.js} +3 -3
  26. package/dist/{chunk-ZJVZ3LQS.js.map → chunk-DDM2I5C6.js.map} +1 -1
  27. package/dist/{chunk-3JIXCWJO.js → chunk-DDR24GOP.js} +3 -3
  28. package/dist/{chunk-3JIXCWJO.js.map → chunk-DDR24GOP.js.map} +1 -1
  29. package/dist/{chunk-GBTVAO4V.js → chunk-EGYWK2XX.js} +3 -3
  30. package/dist/{chunk-GBTVAO4V.js.map → chunk-EGYWK2XX.js.map} +1 -1
  31. package/dist/{chunk-CCUCWL6M.js → chunk-HT5XM6XK.js} +12 -7
  32. package/dist/chunk-HT5XM6XK.js.map +1 -0
  33. package/dist/{chunk-KNH7JW6E.js → chunk-IBVCSZCH.js} +3 -3
  34. package/dist/{chunk-KNH7JW6E.js.map → chunk-IBVCSZCH.js.map} +1 -1
  35. package/dist/{chunk-GLEKBJLR.js → chunk-ILAV2AZ4.js} +3 -3
  36. package/dist/{chunk-GLEKBJLR.js.map → chunk-ILAV2AZ4.js.map} +1 -1
  37. package/dist/{chunk-MDQFZEIC.js → chunk-J62TFQHR.js} +6 -6
  38. package/dist/chunk-J62TFQHR.js.map +1 -0
  39. package/dist/{chunk-AWWBBMMY.js → chunk-JKYB5QAP.js} +5 -5
  40. package/dist/{chunk-AWWBBMMY.js.map → chunk-JKYB5QAP.js.map} +1 -1
  41. package/dist/{chunk-UKC3Q6OA.js → chunk-JMZ4CO6R.js} +3 -3
  42. package/dist/{chunk-UKC3Q6OA.js.map → chunk-JMZ4CO6R.js.map} +1 -1
  43. package/dist/{chunk-VJITPUUS.js → chunk-JONTKXGK.js} +26 -24
  44. package/dist/chunk-JONTKXGK.js.map +1 -0
  45. package/dist/{chunk-POZNQWZE.js → chunk-KC6CHPT3.js} +4 -4
  46. package/dist/{chunk-POZNQWZE.js.map → chunk-KC6CHPT3.js.map} +1 -1
  47. package/dist/{chunk-4J6DHPYY.js → chunk-KPNNSUXM.js} +3 -3
  48. package/dist/{chunk-4J6DHPYY.js.map → chunk-KPNNSUXM.js.map} +1 -1
  49. package/dist/{chunk-RPV77BCQ.js → chunk-ONQCNOLU.js} +4 -9
  50. package/dist/chunk-ONQCNOLU.js.map +1 -0
  51. package/dist/{chunk-QSY52N3A.js → chunk-OWOVCGUZ.js} +3 -3
  52. package/dist/{chunk-QSY52N3A.js.map → chunk-OWOVCGUZ.js.map} +1 -1
  53. package/dist/{chunk-QWRHPNBY.js → chunk-QIETN4UU.js} +4 -4
  54. package/dist/{chunk-QWRHPNBY.js.map → chunk-QIETN4UU.js.map} +1 -1
  55. package/dist/{chunk-NWFRMVI2.js → chunk-QZWKXUZP.js} +3 -3
  56. package/dist/{chunk-NWFRMVI2.js.map → chunk-QZWKXUZP.js.map} +1 -1
  57. package/dist/{chunk-7QDWREVG.js → chunk-R4UOT76L.js} +3 -3
  58. package/dist/{chunk-7QDWREVG.js.map → chunk-R4UOT76L.js.map} +1 -1
  59. package/dist/{chunk-HIEOL77G.js → chunk-RVUO7SDG.js} +4 -4
  60. package/dist/{chunk-HIEOL77G.js.map → chunk-RVUO7SDG.js.map} +1 -1
  61. package/dist/{chunk-XPVKJIWY.js → chunk-SCGKQ5RE.js} +3 -3
  62. package/dist/{chunk-XPVKJIWY.js.map → chunk-SCGKQ5RE.js.map} +1 -1
  63. package/dist/{chunk-UCGT2IR4.js → chunk-SJSYKUCL.js} +3 -3
  64. package/dist/{chunk-UCGT2IR4.js.map → chunk-SJSYKUCL.js.map} +1 -1
  65. package/dist/{chunk-KOTCWE7V.js → chunk-TNROOKX3.js} +11 -4
  66. package/dist/chunk-TNROOKX3.js.map +1 -0
  67. package/dist/{chunk-PGTCXLGY.js → chunk-U6EOAIPK.js} +3 -3
  68. package/dist/chunk-U6EOAIPK.js.map +1 -0
  69. package/dist/{chunk-KXSJSLPJ.js → chunk-V7XHE25E.js} +4 -4
  70. package/dist/{chunk-KXSJSLPJ.js.map → chunk-V7XHE25E.js.map} +1 -1
  71. package/dist/{chunk-5ZKKXLPF.js → chunk-VPNFYQBL.js} +10 -15
  72. package/dist/chunk-VPNFYQBL.js.map +1 -0
  73. package/dist/{chunk-FUCQNVJL.js → chunk-XLTSCY22.js} +10 -7
  74. package/dist/chunk-XLTSCY22.js.map +1 -0
  75. package/dist/{chunk-K3J7YLL4.js → chunk-XOGMDABS.js} +5 -6
  76. package/dist/chunk-XOGMDABS.js.map +1 -0
  77. package/dist/{chunk-53RWD44Z.js → chunk-XRMKL43Y.js} +3 -3
  78. package/dist/{chunk-53RWD44Z.js.map → chunk-XRMKL43Y.js.map} +1 -1
  79. package/dist/{chunk-DZALMUQD.js → chunk-Y3BOERVB.js} +3 -3
  80. package/dist/{chunk-DZALMUQD.js.map → chunk-Y3BOERVB.js.map} +1 -1
  81. package/dist/{chunk-AV5YQ2Z4.js → chunk-Y7UFBSAD.js} +3 -3
  82. package/dist/{chunk-AV5YQ2Z4.js.map → chunk-Y7UFBSAD.js.map} +1 -1
  83. package/dist/{chunk-HNYBLROK.js → chunk-YP2ATSXP.js} +11 -28
  84. package/dist/chunk-YP2ATSXP.js.map +1 -0
  85. package/dist/{chunk-75QBUI2P.js → chunk-ZO2EKJZM.js} +16 -8
  86. package/dist/chunk-ZO2EKJZM.js.map +1 -0
  87. package/dist/{chunk-VOCA4KZB.js → chunk-ZS2WS5NJ.js} +4 -4
  88. package/dist/{chunk-VOCA4KZB.js.map → chunk-ZS2WS5NJ.js.map} +1 -1
  89. package/dist/components/advanced/Calendar/index.js +3 -3
  90. package/dist/components/advanced/EventCalendar/index.js +3 -3
  91. package/dist/components/advanced/FilterBuilder/index.js +3 -3
  92. package/dist/components/advanced/ReportBuilder/index.js +11 -0
  93. package/dist/components/advanced/ReportBuilder/index.js.map +1 -0
  94. package/dist/components/advanced/index.js +14 -10
  95. package/dist/components/data-display/Callout/index.js +1 -1
  96. package/dist/components/data-display/Carousel/index.js +3 -3
  97. package/dist/components/data-display/ChartCard/index.js +2 -2
  98. package/dist/components/data-display/DashboardFilterbar/index.js +5 -5
  99. package/dist/components/data-display/DataTable/FilterBuilder/index.js +3 -3
  100. package/dist/components/data-display/DataTable/index.js +5 -5
  101. package/dist/components/data-display/KPICard/index.js +3 -2
  102. package/dist/components/data-display/List/index.js +3 -3
  103. package/dist/components/data-display/SingleStat/index.js +1 -1
  104. package/dist/components/data-display/VirtualTable/index.js +2 -2
  105. package/dist/components/data-display/index.js +29 -29
  106. package/dist/components/feedback/AlertDialog/index.js +3 -3
  107. package/dist/components/feedback/ConfirmModal/index.js +4 -4
  108. package/dist/components/feedback/Notification/index.js +2 -2
  109. package/dist/components/feedback/index.js +8 -8
  110. package/dist/components/forms/DatePicker/index.js +4 -4
  111. package/dist/components/forms/DateRangePicker/index.js +4 -4
  112. package/dist/components/forms/Field/index.js +2 -2
  113. package/dist/components/forms/Form/index.js +2 -2
  114. package/dist/components/forms/InputGroup/index.js +4 -4
  115. package/dist/components/forms/InputOTPField/index.js +3 -3
  116. package/dist/components/forms/NativeSelect/index.js +1 -1
  117. package/dist/components/forms/TagsInput/index.js +2 -2
  118. package/dist/components/forms/Textarea/index.js +1 -1
  119. package/dist/components/forms/TextareaField/index.js +4 -4
  120. package/dist/components/forms/index.js +26 -26
  121. package/dist/components/index.js +105 -104
  122. package/dist/components/layout/index.js +3 -3
  123. package/dist/components/navigation/AccountSwitch/index.js +3 -3
  124. package/dist/components/navigation/Header/index.js +1 -1
  125. package/dist/components/navigation/MobileSidebar/index.js +2 -2
  126. package/dist/components/navigation/Pagination/index.js +3 -3
  127. package/dist/components/navigation/Sidebar/index.js +4 -4
  128. package/dist/components/navigation/index.js +10 -10
  129. package/dist/components/primitives/Avatar/index.js +1 -1
  130. package/dist/components/primitives/Badge/index.js +1 -1
  131. package/dist/components/primitives/Button/index.js +2 -2
  132. package/dist/components/primitives/ConfirmButton/index.js +4 -4
  133. package/dist/components/primitives/Label/index.js +1 -1
  134. package/dist/components/primitives/SplitButton/index.js +1 -1
  135. package/dist/components/primitives/index.js +17 -17
  136. package/dist/components/workflow/ApprovalFlow/index.js +4 -4
  137. package/dist/components/workflow/CommentSystem/index.js +5 -5
  138. package/dist/components/workflow/Dashboard/index.js +3 -3
  139. package/dist/components/workflow/DashboardBuilder/index.js +4 -4
  140. package/dist/components/workflow/KanbanBoard/index.js +4 -4
  141. package/dist/components/workflow/ReportGenerator/index.js +4 -4
  142. package/dist/components/workflow/Wizard/index.js +3 -3
  143. package/dist/components/workflow/index.js +15 -15
  144. package/dist/fonts/inter-OFL.txt +92 -0
  145. package/dist/fonts/inter-latin-400-normal.woff2 +0 -0
  146. package/dist/fonts/inter-latin-500-normal.woff2 +0 -0
  147. package/dist/fonts/inter-latin-600-normal.woff2 +0 -0
  148. package/dist/fonts/inter-latin-700-normal.woff2 +0 -0
  149. package/dist/fonts/jetbrains-mono-OFL.txt +93 -0
  150. package/dist/fonts/jetbrains-mono-latin-400-normal.woff2 +0 -0
  151. package/dist/fonts/jetbrains-mono-latin-500-normal.woff2 +0 -0
  152. package/dist/fonts/jetbrains-mono-latin-700-normal.woff2 +0 -0
  153. package/dist/index.d.ts +132 -33
  154. package/dist/index.js +105 -104
  155. package/dist/styles.css +291 -13
  156. package/package.json +2 -2
  157. package/dist/chunk-5ZKKXLPF.js.map +0 -1
  158. package/dist/chunk-75QBUI2P.js.map +0 -1
  159. package/dist/chunk-CCUCWL6M.js.map +0 -1
  160. package/dist/chunk-D5DM6GZB.js.map +0 -1
  161. package/dist/chunk-FUCQNVJL.js.map +0 -1
  162. package/dist/chunk-HNYBLROK.js.map +0 -1
  163. package/dist/chunk-K3J7YLL4.js.map +0 -1
  164. package/dist/chunk-KOTCWE7V.js.map +0 -1
  165. package/dist/chunk-MDQFZEIC.js.map +0 -1
  166. package/dist/chunk-NNOGFX66.js +0 -3
  167. package/dist/chunk-PGTCXLGY.js.map +0 -1
  168. package/dist/chunk-RPV77BCQ.js.map +0 -1
  169. package/dist/chunk-SAKW2OKH.js.map +0 -1
  170. package/dist/chunk-VJITPUUS.js.map +0 -1
@@ -1,5 +1,5 @@
1
- import { Field, FieldLabel, FieldError, FieldDescription } from './chunk-CUWQUGGB.js';
2
- import { Textarea } from './chunk-PGTCXLGY.js';
1
+ import { Field, FieldLabel, FieldError, FieldDescription } from './chunk-4GQN76L7.js';
2
+ import { Textarea } from './chunk-U6EOAIPK.js';
3
3
  import { useId } from 'react';
4
4
  import { jsxs, jsx } from 'react/jsx-runtime';
5
5
  import { cva } from 'class-variance-authority';
@@ -97,5 +97,5 @@ var textareaFieldErrorVariants = cva(
97
97
  );
98
98
 
99
99
  export { TextareaField, textareaFieldDescriptionVariants, textareaFieldErrorVariants, textareaFieldLabelVariants, textareaFieldVariants };
100
- //# sourceMappingURL=chunk-YTGYSNFR.js.map
101
- //# sourceMappingURL=chunk-YTGYSNFR.js.map
100
+ //# sourceMappingURL=chunk-B4ETIQOO.js.map
101
+ //# sourceMappingURL=chunk-B4ETIQOO.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/forms/TextareaField/TextareaField.tsx","../src/components/forms/TextareaField/TextareaField.variants.ts"],"names":[],"mappings":";;;;;;AA2BA,SAAS,aAAA,CAAc;AAAA,EACrB,KAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA,EAAI,UAAA;AAAA,EACJ,GAAG;AACL,CAAA,EAAuB;AACrB,EAAA,MAAM,cAAc,KAAA,EAAM;AAC1B,EAAA,MAAM,KAAK,UAAA,IAAc,WAAA;AACzB,EAAA,MAAM,aAAA,GAAgB,GAAG,EAAE,CAAA,YAAA,CAAA;AAC3B,EAAA,MAAM,OAAA,GAAU,GAAG,EAAE,CAAA,MAAA,CAAA;AAErB,EAAA,MAAM,QAAA,GAAW,CAAC,CAAC,YAAA;AAEnB,EAAA,4BACG,KAAA,EAAA,EACE,QAAA,EAAA;AAAA,IAAA,KAAA,oBACC,IAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAS,EAAA,EAClB,QAAA,EAAA;AAAA,MAAA,KAAA;AAAA,MACA,4BACC,GAAA,CAAC,MAAA,EAAA,EAAK,eAAY,MAAA,EAAO,SAAA,EAAU,yBAAwB,QAAA,EAAA,GAAA,EAE3D;AAAA,KAAA,EAEJ,CAAA;AAAA,oBAEF,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,kBAAA,EACE,QAAA,GAAW,OAAA,GAAW,WAAA,GAAc,aAAA,GAAgB,MAAA;AAAA,QAEtD,gBAAc,QAAA,IAAY,MAAA;AAAA,QAC1B,iBAAe,QAAA,IAAY,MAAA;AAAA,QAC3B,EAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,IACC,QAAA,mBACC,GAAA,CAAC,UAAA,EAAA,EAAW,EAAA,EAAI,OAAA,EAAU,QAAA,EAAA,YAAA,EAAa,CAAA,GACrC,WAAA,mBACF,GAAA,CAAC,gBAAA,EAAA,EAAiB,EAAA,EAAI,aAAA,EAAgB,uBAAY,CAAA,GAChD;AAAA,GAAA,EACN,CAAA;AAEJ;AChEO,IAAM,qBAAA,GAAwB,GAAA;AAAA,EACnC,qBAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,EAAA,EAAI,OAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ;AAKO,IAAM,0BAAA,GAA6B,GAAA;AAAA,EACxC,oFAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ;AAKO,IAAM,gCAAA,GAAmC,GAAA;AAAA,EAC9C,uBAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ;AAKO,IAAM,0BAAA,GAA6B,GAAA;AAAA,EACxC,8BAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ","file":"chunk-YTGYSNFR.js","sourcesContent":["\"use client\"\n\nimport type { TextareaFieldProps } from \"./TextareaField.types\"\n\nimport { useId } from \"react\"\n\nimport { Field, FieldDescription, FieldError, FieldLabel } from \"../Field\"\nimport { Textarea } from \"../Textarea\"\n\n/**\n * TextareaField - A complete form field combining Textarea with label, description, and error handling\n *\n * @example\n * ```tsx\n * <TextareaField\n * label=\"Description\"\n * description=\"Enter a detailed description\"\n * placeholder=\"Type here...\"\n * />\n *\n * <TextareaField\n * label=\"Comments\"\n * errorMessage=\"This field is required\"\n * required\n * />\n * ```\n */\nfunction TextareaField({\n label,\n description,\n errorMessage,\n required,\n id: providedId,\n ...textareaProps\n}: TextareaFieldProps) {\n const generatedId = useId()\n const id = providedId ?? generatedId\n const descriptionId = `${id}-description`\n const errorId = `${id}-error`\n\n const hasError = !!errorMessage\n\n return (\n <Field>\n {label && (\n <FieldLabel htmlFor={id}>\n {label}\n {required && (\n <span aria-hidden=\"true\" className=\"text-destructive ml-1\">\n *\n </span>\n )}\n </FieldLabel>\n )}\n <Textarea\n aria-describedby={\n hasError ? errorId : (description ? descriptionId : undefined)\n }\n aria-invalid={hasError || undefined}\n aria-required={required ?? undefined}\n id={id}\n {...textareaProps}\n />\n {hasError ? (\n <FieldError id={errorId}>{errorMessage}</FieldError>\n ) : description ? (\n <FieldDescription id={descriptionId}>{description}</FieldDescription>\n ) : null}\n </Field>\n )\n}\n\nexport { TextareaField }\n","import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * TextareaField container variant styles using CVA\n * Wraps the Field + Textarea combination with consistent spacing\n */\nexport const textareaFieldVariants = cva(\n \"flex flex-col gap-2\",\n {\n variants: {\n size: {\n sm: \"gap-1.5\",\n md: \"gap-2\",\n lg: \"gap-2.5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\n/**\n * TextareaField label variant styles using CVA\n */\nexport const textareaFieldLabelVariants = cva(\n \"font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n {\n variants: {\n size: {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\n/**\n * TextareaField description variant styles using CVA\n */\nexport const textareaFieldDescriptionVariants = cva(\n \"text-muted-foreground\",\n {\n variants: {\n size: {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-sm\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\n/**\n * TextareaField error variant styles using CVA\n */\nexport const textareaFieldErrorVariants = cva(\n \"text-destructive font-medium\",\n {\n variants: {\n size: {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-sm\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nexport type TextareaFieldVariantProps = VariantProps<typeof textareaFieldVariants>\nexport type TextareaFieldLabelVariantProps = VariantProps<typeof textareaFieldLabelVariants>\nexport type TextareaFieldDescriptionVariantProps = VariantProps<typeof textareaFieldDescriptionVariants>\nexport type TextareaFieldErrorVariantProps = VariantProps<typeof textareaFieldErrorVariants>\n"]}
1
+ {"version":3,"sources":["../src/components/forms/TextareaField/TextareaField.tsx","../src/components/forms/TextareaField/TextareaField.variants.ts"],"names":[],"mappings":";;;;;;AA2BA,SAAS,aAAA,CAAc;AAAA,EACrB,KAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA,EAAI,UAAA;AAAA,EACJ,GAAG;AACL,CAAA,EAAuB;AACrB,EAAA,MAAM,cAAc,KAAA,EAAM;AAC1B,EAAA,MAAM,KAAK,UAAA,IAAc,WAAA;AACzB,EAAA,MAAM,aAAA,GAAgB,GAAG,EAAE,CAAA,YAAA,CAAA;AAC3B,EAAA,MAAM,OAAA,GAAU,GAAG,EAAE,CAAA,MAAA,CAAA;AAErB,EAAA,MAAM,QAAA,GAAW,CAAC,CAAC,YAAA;AAEnB,EAAA,4BACG,KAAA,EAAA,EACE,QAAA,EAAA;AAAA,IAAA,KAAA,oBACC,IAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAS,EAAA,EAClB,QAAA,EAAA;AAAA,MAAA,KAAA;AAAA,MACA,4BACC,GAAA,CAAC,MAAA,EAAA,EAAK,eAAY,MAAA,EAAO,SAAA,EAAU,yBAAwB,QAAA,EAAA,GAAA,EAE3D;AAAA,KAAA,EAEJ,CAAA;AAAA,oBAEF,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,kBAAA,EACE,QAAA,GAAW,OAAA,GAAW,WAAA,GAAc,aAAA,GAAgB,MAAA;AAAA,QAEtD,gBAAc,QAAA,IAAY,MAAA;AAAA,QAC1B,iBAAe,QAAA,IAAY,MAAA;AAAA,QAC3B,EAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,IACC,QAAA,mBACC,GAAA,CAAC,UAAA,EAAA,EAAW,EAAA,EAAI,OAAA,EAAU,QAAA,EAAA,YAAA,EAAa,CAAA,GACrC,WAAA,mBACF,GAAA,CAAC,gBAAA,EAAA,EAAiB,EAAA,EAAI,aAAA,EAAgB,uBAAY,CAAA,GAChD;AAAA,GAAA,EACN,CAAA;AAEJ;AChEO,IAAM,qBAAA,GAAwB,GAAA;AAAA,EACnC,qBAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,EAAA,EAAI,OAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ;AAKO,IAAM,0BAAA,GAA6B,GAAA;AAAA,EACxC,oFAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ;AAKO,IAAM,gCAAA,GAAmC,GAAA;AAAA,EAC9C,uBAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ;AAKO,IAAM,0BAAA,GAA6B,GAAA;AAAA,EACxC,8BAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ","file":"chunk-B4ETIQOO.js","sourcesContent":["\"use client\"\n\nimport type { TextareaFieldProps } from \"./TextareaField.types\"\n\nimport { useId } from \"react\"\n\nimport { Field, FieldDescription, FieldError, FieldLabel } from \"../Field\"\nimport { Textarea } from \"../Textarea\"\n\n/**\n * TextareaField - A complete form field combining Textarea with label, description, and error handling\n *\n * @example\n * ```tsx\n * <TextareaField\n * label=\"Description\"\n * description=\"Enter a detailed description\"\n * placeholder=\"Type here...\"\n * />\n *\n * <TextareaField\n * label=\"Comments\"\n * errorMessage=\"This field is required\"\n * required\n * />\n * ```\n */\nfunction TextareaField({\n label,\n description,\n errorMessage,\n required,\n id: providedId,\n ...textareaProps\n}: TextareaFieldProps) {\n const generatedId = useId()\n const id = providedId ?? generatedId\n const descriptionId = `${id}-description`\n const errorId = `${id}-error`\n\n const hasError = !!errorMessage\n\n return (\n <Field>\n {label && (\n <FieldLabel htmlFor={id}>\n {label}\n {required && (\n <span aria-hidden=\"true\" className=\"text-destructive ml-1\">\n *\n </span>\n )}\n </FieldLabel>\n )}\n <Textarea\n aria-describedby={\n hasError ? errorId : (description ? descriptionId : undefined)\n }\n aria-invalid={hasError || undefined}\n aria-required={required ?? undefined}\n id={id}\n {...textareaProps}\n />\n {hasError ? (\n <FieldError id={errorId}>{errorMessage}</FieldError>\n ) : description ? (\n <FieldDescription id={descriptionId}>{description}</FieldDescription>\n ) : null}\n </Field>\n )\n}\n\nexport { TextareaField }\n","import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * TextareaField container variant styles using CVA\n * Wraps the Field + Textarea combination with consistent spacing\n */\nexport const textareaFieldVariants = cva(\n \"flex flex-col gap-2\",\n {\n variants: {\n size: {\n sm: \"gap-1.5\",\n md: \"gap-2\",\n lg: \"gap-2.5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\n/**\n * TextareaField label variant styles using CVA\n */\nexport const textareaFieldLabelVariants = cva(\n \"font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n {\n variants: {\n size: {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\n/**\n * TextareaField description variant styles using CVA\n */\nexport const textareaFieldDescriptionVariants = cva(\n \"text-muted-foreground\",\n {\n variants: {\n size: {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-sm\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\n/**\n * TextareaField error variant styles using CVA\n */\nexport const textareaFieldErrorVariants = cva(\n \"text-destructive font-medium\",\n {\n variants: {\n size: {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-sm\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nexport type TextareaFieldVariantProps = VariantProps<typeof textareaFieldVariants>\nexport type TextareaFieldLabelVariantProps = VariantProps<typeof textareaFieldLabelVariants>\nexport type TextareaFieldDescriptionVariantProps = VariantProps<typeof textareaFieldDescriptionVariants>\nexport type TextareaFieldErrorVariantProps = VariantProps<typeof textareaFieldErrorVariants>\n"]}
@@ -4,11 +4,11 @@ import { useState, useRef, useEffect } from 'react';
4
4
  import { jsx, jsxs } from 'react/jsx-runtime';
5
5
 
6
6
  var sizeClasses = {
7
- lg: "text-4xl",
8
- md: "text-2xl",
9
- sm: "text-xl",
10
- xl: "text-6xl",
11
- xs: "text-lg"
7
+ lg: "text-[length:var(--single-stat-value-size-lg)]",
8
+ md: "text-[length:var(--single-stat-value-size-md)]",
9
+ sm: "text-[length:var(--single-stat-value-size-sm)]",
10
+ xl: "text-[length:var(--single-stat-value-size-xl)]",
11
+ xs: "text-[length:var(--single-stat-value-size-xs)]"
12
12
  };
13
13
  var skeletonSizes = {
14
14
  lg: "h-10",
@@ -109,7 +109,7 @@ function SingleStat({
109
109
  "span",
110
110
  {
111
111
  className: cn(
112
- "font-bold tabular-nums text-foreground",
112
+ "font-[number:var(--single-stat-value-weight)] tabular-nums text-[color:var(--single-stat-value-color)]",
113
113
  sizeClasses[size],
114
114
  className
115
115
  ),
@@ -139,7 +139,7 @@ function SingleStat({
139
139
  "span",
140
140
  {
141
141
  className: cn(
142
- "font-bold tabular-nums text-foreground",
142
+ "font-[number:var(--single-stat-value-weight)] tabular-nums text-[color:var(--single-stat-value-color)]",
143
143
  sizeClasses[size]
144
144
  ),
145
145
  "data-slot": "single-stat-value",
@@ -153,7 +153,7 @@ function SingleStat({
153
153
  label && /* @__PURE__ */ jsx(
154
154
  "span",
155
155
  {
156
- className: "text-sm font-medium text-muted-foreground",
156
+ className: "text-sm font-[number:var(--single-stat-label-weight)] text-[color:var(--single-stat-label-color)]",
157
157
  "data-slot": "single-stat-label",
158
158
  children: label
159
159
  }
@@ -174,7 +174,7 @@ function SingleStat({
174
174
  label && /* @__PURE__ */ jsx(
175
175
  "p",
176
176
  {
177
- className: "text-sm font-medium text-muted-foreground",
177
+ className: "text-sm font-[number:var(--single-stat-label-weight)] text-[color:var(--single-stat-label-color)]",
178
178
  "data-slot": "single-stat-label",
179
179
  children: label
180
180
  }
@@ -183,7 +183,7 @@ function SingleStat({
183
183
  "p",
184
184
  {
185
185
  className: cn(
186
- "font-bold tabular-nums text-foreground",
186
+ "font-[number:var(--single-stat-value-weight)] tabular-nums text-[color:var(--single-stat-value-color)]",
187
187
  sizeClasses[size]
188
188
  ),
189
189
  "data-slot": "single-stat-value",
@@ -200,5 +200,5 @@ function SingleStat({
200
200
  }
201
201
 
202
202
  export { SingleStat };
203
- //# sourceMappingURL=chunk-D5DM6GZB.js.map
204
- //# sourceMappingURL=chunk-D5DM6GZB.js.map
203
+ //# sourceMappingURL=chunk-D6TH3EGA.js.map
204
+ //# sourceMappingURL=chunk-D6TH3EGA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/SingleStat/SingleStat.tsx"],"names":[],"mappings":";;;;;AAUA,IAAM,WAAA,GAA8C;AAAA,EAClD,EAAA,EAAI,gDAAA;AAAA,EACJ,EAAA,EAAI,gDAAA;AAAA,EACJ,EAAA,EAAI,gDAAA;AAAA,EACJ,EAAA,EAAI,gDAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAKA,IAAM,aAAA,GAAgD;AAAA,EACpD,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI,KAAA;AAAA,EACJ,EAAA,EAAI,KAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAKA,SAAS,kBAAA,CACP,WAAA,EACA,QAAA,EACA,OAAA,EACQ;AAER,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,CAAC,CAAA;AACpC,EAAA,MAAM,iBAAA,GAAoB,OAAe,CAAC,CAAA;AAC1C,EAAA,MAAM,YAAA,GAAe,OAAsB,IAAI,CAAA;AAE/C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA;AAAA,IACF;AAEA,IAAA,YAAA,CAAa,OAAA,GAAU,IAAA;AAEvB,IAAA,MAAM,OAAA,GAAU,CAAC,SAAA,KAAsB;AACrC,MAAA,YAAA,CAAa,OAAA,KAAY,SAAA;AACzB,MAAA,MAAM,WAAW,IAAA,CAAK,GAAA,CAAA,CAAK,YAAY,YAAA,CAAa,OAAA,IAAW,UAAU,CAAC,CAAA;AAG1E,MAAA,MAAM,KAAA,GAAQ,CAAA,GAAA,CAAK,CAAA,GAAI,QAAA,KAAa,CAAA,GAAI,QAAA,CAAA;AACxC,MAAA,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,KAAA,GAAQ,WAAW,CAAC,CAAA;AAExC,MAAA,IAAI,WAAW,CAAA,EAAG;AAChB,QAAA,iBAAA,CAAkB,OAAA,GAAU,sBAAsB,OAAO,CAAA;AAAA,MAC3D;AAAA,IACF,CAAA;AAEA,IAAA,iBAAA,CAAkB,OAAA,GAAU,sBAAsB,OAAO,CAAA;AAEzD,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,kBAAkB,OAAA,EAAS;AAC7B,QAAA,oBAAA,CAAqB,kBAAkB,OAAO,CAAA;AAAA,MAChD;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,WAAA,EAAa,QAAA,EAAU,OAAO,CAAC,CAAA;AAGnC,EAAA,OAAO,UAAU,KAAA,GAAQ,WAAA;AAC3B;AAwBA,SAAS,UAAA,CAAW;AAAA,EAClB,KAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,IAAA;AAAA,EACP,MAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,iBAAA,GAAoB,GAAA;AAAA,EACpB,OAAA,GAAU,KAAA;AAAA,EACV,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAoB;AAElB,EAAA,MAAM,YAAA,GAAe,OAAO,KAAA,KAAU,QAAA,GAAW,QAAQ,MAAA,CAAO,GAAA;AAChE,EAAA,MAAM,SAAA,GAAY,CAAC,MAAA,CAAO,KAAA,CAAM,YAAY,CAAA;AAC5C,EAAA,MAAM,aAAA,GAAgB,kBAAA;AAAA,IACpB,YAAY,YAAA,GAAe,CAAA;AAAA,IAC3B,iBAAA;AAAA,IACA,QAAA,IAAY;AAAA,GACd;AAGA,EAAA,MAAM,YAAA,GAAe,QAAA,IAAY,SAAA,GAC7B,aAAA,CAAc,cAAA,EAAe,GAC7B,OAAO,KAAA,KAAU,QAAA,GACf,KAAA,CAAM,cAAA,EAAe,GACrB,KAAA;AAGN,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,IAAI,YAAY,SAAA,EAAW;AACzB,MAAA,uBACE,GAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACC,WAAW,EAAA,CAAG,aAAA,CAAc,IAAI,CAAA,EAAG,QAAQ,SAAS,CAAA;AAAA,UACpD,WAAA,EAAU,aAAA;AAAA,UACT,GAAG;AAAA;AAAA,OACN;AAAA,IAEJ;AAEA,IAAA,IAAI,YAAY,QAAA,EAAU;AACxB,MAAA,uBACE,IAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,EAAA,CAAG,2BAAA,EAA6B,SAAS,CAAA;AAAA,UACpD,WAAA,EAAU,aAAA;AAAA,UACT,GAAG,KAAA;AAAA,UAEJ,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,kBAAe,SAAA,EAAW,EAAA,CAAG,cAAc,IAAI,CAAA,EAAG,MAAM,CAAA,EAAG,CAAA;AAAA,YAC3D,KAAA,oBAAS,GAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,UAAA,EAAW;AAAA;AAAA;AAAA,OACjD;AAAA,IAEJ;AAEA,IAAA,uBACE,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA,CAAG,WAAA,EAAa,SAAS,CAAA;AAAA,QACpC,WAAA,EAAU,aAAA;AAAA,QACT,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,KAAA,oBAAS,GAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,UAAA,EAAW,CAAA;AAAA,0BAC/C,GAAA,CAAC,kBAAe,SAAA,EAAW,EAAA,CAAG,cAAc,IAAI,CAAA,EAAG,MAAM,CAAA,EAAG;AAAA;AAAA;AAAA,KAC9D;AAAA,EAEJ;AAGA,EAAA,IAAI,YAAY,SAAA,EAAW;AACzB,IAAA,MAAM,YAAY,OAAO,YAAA,KAAiB,QAAA,GAAW,YAAA,GAAe,OAAO,YAAY,CAAA;AACvF,IAAA,uBACE,IAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,wGAAA;AAAA,UACA,YAAY,IAAI,CAAA;AAAA,UAChB;AAAA,SACF;AAAA,QACA,YAAA,EAAY,KAAA,GAAQ,CAAA,EAAG,KAAK,CAAA,EAAA,EAAK,MAAA,IAAU,EAAE,CAAA,EAAG,SAAS,CAAA,EAAG,MAAA,IAAU,EAAE,CAAA,CAAA,GAAK,MAAA;AAAA,QAC7E,WAAA,EAAU,aAAA;AAAA,QACV,IAAA,EAAK,MAAA;AAAA,QACJ,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,MAAA,oBAAU,GAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAQ,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,UAC3C,YAAA;AAAA,UACA,MAAA,oBAAU,GAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAY,QAAQ,QAAA,EAAA,MAAA,EAAO;AAAA;AAAA;AAAA,KAC9C;AAAA,EAEJ;AAGA,EAAA,IAAI,YAAY,QAAA,EAAU;AACxB,IAAA,uBACE,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,YAAA,EAAY,KAAA;AAAA,QACZ,SAAA,EAAW,EAAA,CAAG,2BAAA,EAA6B,SAAS,CAAA;AAAA,QACpD,WAAA,EAAU,aAAA;AAAA,QACV,IAAA,EAAK,OAAA;AAAA,QACJ,GAAG,KAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,0BAAA,IAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,wGAAA;AAAA,gBACA,YAAY,IAAI;AAAA,eAClB;AAAA,cACA,WAAA,EAAU,mBAAA;AAAA,cAET,QAAA,EAAA;AAAA,gBAAA,MAAA,oBAAU,GAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAQ,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,gBAC3C,YAAA;AAAA,gBACA,MAAA,oBAAU,GAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAY,QAAQ,QAAA,EAAA,MAAA,EAAO;AAAA;AAAA;AAAA,WAC9C;AAAA,UACC,KAAA,oBACC,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,mGAAA;AAAA,cACV,WAAA,EAAU,mBAAA;AAAA,cAET,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,KAEJ;AAAA,EAEJ;AAGA,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAY,KAAA;AAAA,MACZ,SAAA,EAAW,EAAA,CAAG,WAAA,EAAa,SAAS,CAAA;AAAA,MACpC,WAAA,EAAU,aAAA;AAAA,MACV,IAAA,EAAK,OAAA;AAAA,MACJ,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,KAAA,oBACC,GAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,mGAAA;AAAA,YACV,WAAA,EAAU,mBAAA;AAAA,YAET,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,wBAEF,IAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,wGAAA;AAAA,cACA,YAAY,IAAI;AAAA,aAClB;AAAA,YACA,WAAA,EAAU,mBAAA;AAAA,YAET,QAAA,EAAA;AAAA,cAAA,MAAA,oBAAU,GAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAQ,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,cAC3C,YAAA;AAAA,cACA,MAAA,oBAAU,GAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAY,QAAQ,QAAA,EAAA,MAAA,EAAO;AAAA;AAAA;AAAA;AAC9C;AAAA;AAAA,GACF;AAEJ","file":"chunk-D6TH3EGA.js","sourcesContent":["import type { SingleStatProps, SingleStatSize } from \"./SingleStat.types\"\n\nimport { useEffect, useRef, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { SkeletonLoader } from \"../../primitives/SkeletonLoader\"\n\n/**\n * Size configuration for value typography\n */\nconst sizeClasses: Record<SingleStatSize, string> = {\n lg: \"text-[length:var(--single-stat-value-size-lg)]\",\n md: \"text-[length:var(--single-stat-value-size-md)]\",\n sm: \"text-[length:var(--single-stat-value-size-sm)]\",\n xl: \"text-[length:var(--single-stat-value-size-xl)]\",\n xs: \"text-[length:var(--single-stat-value-size-xs)]\",\n}\n\n/**\n * Skeleton height configuration by size\n */\nconst skeletonSizes: Record<SingleStatSize, string> = {\n lg: \"h-10\",\n md: \"h-8\",\n sm: \"h-7\",\n xl: \"h-14\",\n xs: \"h-6\",\n}\n\n/**\n * Hook for animated count-up effect\n */\nfunction useAnimatedCounter(\n targetValue: number,\n duration: number,\n enabled: boolean\n): number {\n // When not enabled, just return the target value directly\n const [count, setCount] = useState(0)\n const animationFrameRef = useRef<number>(0)\n const startTimeRef = useRef<null | number>(null)\n\n useEffect(() => {\n if (!enabled) {\n return\n }\n\n startTimeRef.current = null\n\n const animate = (timestamp: number) => {\n startTimeRef.current ??= timestamp\n const progress = Math.min((timestamp - startTimeRef.current) / duration, 1)\n\n // Use easeOutQuad for smoother animation\n const eased = 1 - (1 - progress) * (1 - progress)\n setCount(Math.floor(eased * targetValue))\n\n if (progress < 1) {\n animationFrameRef.current = requestAnimationFrame(animate)\n }\n }\n\n animationFrameRef.current = requestAnimationFrame(animate)\n\n return () => {\n if (animationFrameRef.current) {\n cancelAnimationFrame(animationFrameRef.current)\n }\n }\n }, [targetValue, duration, enabled])\n\n // Return target value when not animating, otherwise return animated count\n return enabled ? count : targetValue\n}\n\n/**\n * SingleStat - Minimalist single metric display\n *\n * A compact component for displaying a single highlighted metric.\n * Simpler than KPICard, focused only on value and label.\n * Ideal for inline indicators or space-constrained layouts.\n *\n * @example\n * ```tsx\n * <SingleStat value={1234} label=\"Total Users\" />\n * ```\n *\n * @example\n * ```tsx\n * <SingleStat\n * value={45231}\n * prefix=\"$\"\n * label=\"Revenue\"\n * size=\"lg\"\n * />\n * ```\n */\nfunction SingleStat({\n value,\n label,\n variant = \"default\",\n size = \"md\",\n prefix,\n suffix,\n animated = false,\n animationDuration = 1000,\n loading = false,\n className,\n ...props\n}: SingleStatProps) {\n // Use animated counter for numeric values\n const numericValue = typeof value === \"number\" ? value : Number.NaN\n const isNumeric = !Number.isNaN(numericValue)\n const animatedValue = useAnimatedCounter(\n isNumeric ? numericValue : 0,\n animationDuration,\n animated && isNumeric\n )\n\n // Format the display value\n const displayValue = animated && isNumeric\n ? animatedValue.toLocaleString()\n : typeof value === \"number\"\n ? value.toLocaleString()\n : value\n\n // Loading state\n if (loading) {\n if (variant === \"compact\") {\n return (\n <SkeletonLoader\n className={cn(skeletonSizes[size], \"w-24\", className)}\n data-slot=\"single-stat\"\n {...props}\n />\n )\n }\n\n if (variant === \"inline\") {\n return (\n <div\n className={cn(\"flex items-baseline gap-2\", className)}\n data-slot=\"single-stat\"\n {...props}\n >\n <SkeletonLoader className={cn(skeletonSizes[size], \"w-20\")} />\n {label && <SkeletonLoader className=\"h-4 w-16\" />}\n </div>\n )\n }\n\n return (\n <div\n className={cn(\"space-y-1\", className)}\n data-slot=\"single-stat\"\n {...props}\n >\n {label && <SkeletonLoader className=\"h-4 w-20\" />}\n <SkeletonLoader className={cn(skeletonSizes[size], \"w-24\")} />\n </div>\n )\n }\n\n // Compact variant: value only\n if (variant === \"compact\") {\n const ariaValue = typeof displayValue === \"string\" ? displayValue : String(displayValue)\n return (\n <span\n className={cn(\n \"font-[number:var(--single-stat-value-weight)] tabular-nums text-[color:var(--single-stat-value-color)]\",\n sizeClasses[size],\n className\n )}\n aria-label={label ? `${label}: ${prefix ?? \"\"}${ariaValue}${suffix ?? \"\"}` : undefined}\n data-slot=\"single-stat\"\n role=\"text\"\n {...props}\n >\n {prefix && <span aria-hidden=\"true\">{prefix}</span>}\n {displayValue}\n {suffix && <span aria-hidden=\"true\">{suffix}</span>}\n </span>\n )\n }\n\n // Inline variant: label and value side by side\n if (variant === \"inline\") {\n return (\n <div\n aria-label={label}\n className={cn(\"flex items-baseline gap-2\", className)}\n data-slot=\"single-stat\"\n role=\"group\"\n {...props}\n >\n <span\n className={cn(\n \"font-[number:var(--single-stat-value-weight)] tabular-nums text-[color:var(--single-stat-value-color)]\",\n sizeClasses[size]\n )}\n data-slot=\"single-stat-value\"\n >\n {prefix && <span aria-hidden=\"true\">{prefix}</span>}\n {displayValue}\n {suffix && <span aria-hidden=\"true\">{suffix}</span>}\n </span>\n {label && (\n <span\n className=\"text-sm font-[number:var(--single-stat-label-weight)] text-[color:var(--single-stat-label-color)]\"\n data-slot=\"single-stat-label\"\n >\n {label}\n </span>\n )}\n </div>\n )\n }\n\n // Default variant: label above, value below\n return (\n <div\n aria-label={label}\n className={cn(\"space-y-1\", className)}\n data-slot=\"single-stat\"\n role=\"group\"\n {...props}\n >\n {label && (\n <p\n className=\"text-sm font-[number:var(--single-stat-label-weight)] text-[color:var(--single-stat-label-color)]\"\n data-slot=\"single-stat-label\"\n >\n {label}\n </p>\n )}\n <p\n className={cn(\n \"font-[number:var(--single-stat-value-weight)] tabular-nums text-[color:var(--single-stat-value-color)]\",\n sizeClasses[size]\n )}\n data-slot=\"single-stat-value\"\n >\n {prefix && <span aria-hidden=\"true\">{prefix}</span>}\n {displayValue}\n {suffix && <span aria-hidden=\"true\">{suffix}</span>}\n </p>\n </div>\n )\n}\n\nexport { SingleStat }\n"]}
@@ -1,4 +1,4 @@
1
- import { Badge } from './chunk-KOTCWE7V.js';
1
+ import { Badge } from './chunk-TNROOKX3.js';
2
2
  import { cn } from './chunk-HRNDJU7D.js';
3
3
  import { useRef, useState, useId, useCallback } from 'react';
4
4
  import { cva } from 'class-variance-authority';
@@ -195,5 +195,5 @@ function TagsInput({
195
195
  }
196
196
 
197
197
  export { TagsInput, tagsInputInputVariants, tagsInputVariants };
198
- //# sourceMappingURL=chunk-ZJVZ3LQS.js.map
199
- //# sourceMappingURL=chunk-ZJVZ3LQS.js.map
198
+ //# sourceMappingURL=chunk-DDM2I5C6.js.map
199
+ //# sourceMappingURL=chunk-DDM2I5C6.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/forms/TagsInput/TagsInput.variants.ts","../src/components/forms/TagsInput/TagsInput.tsx"],"names":[],"mappings":"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","file":"chunk-ZJVZ3LQS.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * TagsInput container variant styles using CVA\n */\nexport const tagsInputVariants = cva(\n [\n \"flex flex-wrap items-center gap-1.5 w-full min-w-0 rounded-md border bg-transparent transition-[color,box-shadow] outline-none\",\n \"dark:bg-input/30\",\n \"focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[3px]\",\n \"aria-disabled:pointer-events-none aria-disabled:cursor-not-allowed aria-disabled:opacity-50\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n ],\n {\n variants: {\n size: {\n sm: \"min-h-8 px-2 py-1 text-sm\",\n md: \"min-h-9 px-3 py-1.5 text-base md:text-sm\",\n lg: \"min-h-10 px-3.5 py-2 text-base\",\n },\n variant: {\n default: \"border-input shadow-xs\",\n filled: \"border-transparent bg-muted\",\n flushed: \"rounded-none border-x-0 border-t-0 border-b-input px-0\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"default\",\n },\n }\n)\n\n/**\n * TagsInput inner input variant styles\n */\nexport const tagsInputInputVariants = cva(\n [\n \"flex-1 min-w-24 bg-transparent outline-none\",\n \"placeholder:text-muted-foreground\",\n \"disabled:cursor-not-allowed\",\n ],\n {\n variants: {\n size: {\n sm: \"text-sm h-5\",\n md: \"text-base md:text-sm h-5\",\n lg: \"text-base h-6\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nexport type TagsInputVariantProps = VariantProps<typeof tagsInputVariants>\nexport type TagsInputInputVariantProps = VariantProps<typeof tagsInputInputVariants>\n","\"use client\"\n\nimport type { TagsInputProps } from \"./TagsInput.types\"\n\nimport * as React from \"react\"\nimport { useCallback, useId, useRef, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Badge } from \"../../primitives/Badge\"\nimport { tagsInputInputVariants, tagsInputVariants } from \"./TagsInput.variants\"\n\n/**\n * TagsInput - A multi-tag input component for entering and managing tags\n *\n * @example\n * ```tsx\n * // Uncontrolled\n * <TagsInput\n * defaultValue={[\"react\", \"typescript\"]}\n * placeholder=\"Add tags...\"\n * />\n *\n * // Controlled\n * const [tags, setTags] = useState([\"hello\"])\n * <TagsInput\n * value={tags}\n * onChange={setTags}\n * maxTags={5}\n * />\n * ```\n */\nfunction TagsInput({\n value: controlledValue,\n defaultValue = [],\n onChange,\n onTagAdd,\n onTagRemove,\n placeholder = \"Add tag...\",\n maxTags,\n allowDuplicates = false,\n disabled,\n size = \"md\",\n variant,\n invalid,\n delimiters = [\",\"],\n className,\n ...props\n}: TagsInputProps) {\n const inputRef = useRef<HTMLInputElement>(null)\n const [inputValue, setInputValue] = useState(\"\")\n const [internalTags, setInternalTags] = useState<string[]>(defaultValue)\n const id = useId()\n\n // Determine if controlled or uncontrolled\n const isControlled = controlledValue !== undefined\n const tags = isControlled ? controlledValue : internalTags\n\n const updateTags = useCallback(\n (newTags: string[]) => {\n if (!isControlled) {\n setInternalTags(newTags)\n }\n onChange?.(newTags)\n },\n [isControlled, onChange]\n )\n\n const addTag = useCallback(\n (tag: string) => {\n const trimmedTag = tag.trim()\n if (!trimmedTag) return\n\n // Check for duplicates\n if (!allowDuplicates && tags.includes(trimmedTag)) {\n setInputValue(\"\")\n return\n }\n\n // Check max tags\n if (maxTags && tags.length >= maxTags) {\n setInputValue(\"\")\n return\n }\n\n const newTags = [...tags, trimmedTag]\n updateTags(newTags)\n onTagAdd?.(trimmedTag)\n setInputValue(\"\")\n },\n [tags, allowDuplicates, maxTags, updateTags, onTagAdd]\n )\n\n const removeTag = useCallback(\n (tagToRemove: string) => {\n const newTags = tags.filter((tag) => tag !== tagToRemove)\n updateTags(newTags)\n onTagRemove?.(tagToRemove)\n },\n [tags, updateTags, onTagRemove]\n )\n\n const removeLastTag = useCallback(() => {\n const lastTag = tags[tags.length - 1]\n if (lastTag) {\n removeTag(lastTag)\n }\n }, [tags, removeTag])\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\" || delimiters.includes(e.key)) {\n e.preventDefault()\n addTag(inputValue)\n } else if (e.key === \"Backspace\" && inputValue === \"\" && tags.length > 0) {\n removeLastTag()\n }\n },\n [inputValue, tags.length, addTag, removeLastTag, delimiters]\n )\n\n const handleInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value\n\n // Check if any delimiter is in the pasted/typed value\n for (const delimiter of delimiters) {\n if (value.includes(delimiter)) {\n const parts = value.split(delimiter)\n parts.forEach((part, index) => {\n if (index < parts.length - 1) {\n addTag(part)\n } else {\n setInputValue(part)\n }\n })\n return\n }\n }\n\n setInputValue(value)\n },\n [delimiters, addTag]\n )\n\n const handleContainerClick = useCallback(() => {\n inputRef.current?.focus()\n }, [])\n\n // Map size to Tag size\n const tagSize = size === \"lg\" ? \"default\" : \"sm\"\n\n return (\n <div\n aria-disabled={disabled ?? undefined}\n aria-invalid={invalid ?? undefined}\n className={cn(tagsInputVariants({ size, variant }), className)}\n data-slot=\"tags-input\"\n onClick={handleContainerClick}\n {...props}\n >\n {tags.map((tag, index) => (\n <Badge\n key={`${tag}-${String(index)}`}\n color=\"muted\"\n size={tagSize}\n type=\"pill-color\"\n onDismiss={disabled ? undefined : () => { removeTag(tag); }}\n >\n {tag}\n </Badge>\n ))}\n <input\n ref={inputRef}\n aria-label=\"Add tag\"\n className={tagsInputInputVariants({ size })}\n data-slot=\"tags-input-field\"\n disabled={disabled}\n id={id}\n placeholder={tags.length === 0 ? placeholder : undefined}\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n />\n </div>\n )\n}\n\nexport { TagsInput }\n"]}
1
+ {"version":3,"sources":["../src/components/forms/TagsInput/TagsInput.variants.ts","../src/components/forms/TagsInput/TagsInput.tsx"],"names":[],"mappings":"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","file":"chunk-DDM2I5C6.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * TagsInput container variant styles using CVA\n */\nexport const tagsInputVariants = cva(\n [\n \"flex flex-wrap items-center gap-1.5 w-full min-w-0 rounded-md border bg-transparent transition-[color,box-shadow] outline-none\",\n \"dark:bg-input/30\",\n \"focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[3px]\",\n \"aria-disabled:pointer-events-none aria-disabled:cursor-not-allowed aria-disabled:opacity-50\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n ],\n {\n variants: {\n size: {\n sm: \"min-h-8 px-2 py-1 text-sm\",\n md: \"min-h-9 px-3 py-1.5 text-base md:text-sm\",\n lg: \"min-h-10 px-3.5 py-2 text-base\",\n },\n variant: {\n default: \"border-input shadow-xs\",\n filled: \"border-transparent bg-muted\",\n flushed: \"rounded-none border-x-0 border-t-0 border-b-input px-0\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"default\",\n },\n }\n)\n\n/**\n * TagsInput inner input variant styles\n */\nexport const tagsInputInputVariants = cva(\n [\n \"flex-1 min-w-24 bg-transparent outline-none\",\n \"placeholder:text-muted-foreground\",\n \"disabled:cursor-not-allowed\",\n ],\n {\n variants: {\n size: {\n sm: \"text-sm h-5\",\n md: \"text-base md:text-sm h-5\",\n lg: \"text-base h-6\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nexport type TagsInputVariantProps = VariantProps<typeof tagsInputVariants>\nexport type TagsInputInputVariantProps = VariantProps<typeof tagsInputInputVariants>\n","\"use client\"\n\nimport type { TagsInputProps } from \"./TagsInput.types\"\n\nimport * as React from \"react\"\nimport { useCallback, useId, useRef, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Badge } from \"../../primitives/Badge\"\nimport { tagsInputInputVariants, tagsInputVariants } from \"./TagsInput.variants\"\n\n/**\n * TagsInput - A multi-tag input component for entering and managing tags\n *\n * @example\n * ```tsx\n * // Uncontrolled\n * <TagsInput\n * defaultValue={[\"react\", \"typescript\"]}\n * placeholder=\"Add tags...\"\n * />\n *\n * // Controlled\n * const [tags, setTags] = useState([\"hello\"])\n * <TagsInput\n * value={tags}\n * onChange={setTags}\n * maxTags={5}\n * />\n * ```\n */\nfunction TagsInput({\n value: controlledValue,\n defaultValue = [],\n onChange,\n onTagAdd,\n onTagRemove,\n placeholder = \"Add tag...\",\n maxTags,\n allowDuplicates = false,\n disabled,\n size = \"md\",\n variant,\n invalid,\n delimiters = [\",\"],\n className,\n ...props\n}: TagsInputProps) {\n const inputRef = useRef<HTMLInputElement>(null)\n const [inputValue, setInputValue] = useState(\"\")\n const [internalTags, setInternalTags] = useState<string[]>(defaultValue)\n const id = useId()\n\n // Determine if controlled or uncontrolled\n const isControlled = controlledValue !== undefined\n const tags = isControlled ? controlledValue : internalTags\n\n const updateTags = useCallback(\n (newTags: string[]) => {\n if (!isControlled) {\n setInternalTags(newTags)\n }\n onChange?.(newTags)\n },\n [isControlled, onChange]\n )\n\n const addTag = useCallback(\n (tag: string) => {\n const trimmedTag = tag.trim()\n if (!trimmedTag) return\n\n // Check for duplicates\n if (!allowDuplicates && tags.includes(trimmedTag)) {\n setInputValue(\"\")\n return\n }\n\n // Check max tags\n if (maxTags && tags.length >= maxTags) {\n setInputValue(\"\")\n return\n }\n\n const newTags = [...tags, trimmedTag]\n updateTags(newTags)\n onTagAdd?.(trimmedTag)\n setInputValue(\"\")\n },\n [tags, allowDuplicates, maxTags, updateTags, onTagAdd]\n )\n\n const removeTag = useCallback(\n (tagToRemove: string) => {\n const newTags = tags.filter((tag) => tag !== tagToRemove)\n updateTags(newTags)\n onTagRemove?.(tagToRemove)\n },\n [tags, updateTags, onTagRemove]\n )\n\n const removeLastTag = useCallback(() => {\n const lastTag = tags[tags.length - 1]\n if (lastTag) {\n removeTag(lastTag)\n }\n }, [tags, removeTag])\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\" || delimiters.includes(e.key)) {\n e.preventDefault()\n addTag(inputValue)\n } else if (e.key === \"Backspace\" && inputValue === \"\" && tags.length > 0) {\n removeLastTag()\n }\n },\n [inputValue, tags.length, addTag, removeLastTag, delimiters]\n )\n\n const handleInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value\n\n // Check if any delimiter is in the pasted/typed value\n for (const delimiter of delimiters) {\n if (value.includes(delimiter)) {\n const parts = value.split(delimiter)\n parts.forEach((part, index) => {\n if (index < parts.length - 1) {\n addTag(part)\n } else {\n setInputValue(part)\n }\n })\n return\n }\n }\n\n setInputValue(value)\n },\n [delimiters, addTag]\n )\n\n const handleContainerClick = useCallback(() => {\n inputRef.current?.focus()\n }, [])\n\n // Map size to Tag size\n const tagSize = size === \"lg\" ? \"default\" : \"sm\"\n\n return (\n <div\n aria-disabled={disabled ?? undefined}\n aria-invalid={invalid ?? undefined}\n className={cn(tagsInputVariants({ size, variant }), className)}\n data-slot=\"tags-input\"\n onClick={handleContainerClick}\n {...props}\n >\n {tags.map((tag, index) => (\n <Badge\n key={`${tag}-${String(index)}`}\n color=\"muted\"\n size={tagSize}\n type=\"pill-color\"\n onDismiss={disabled ? undefined : () => { removeTag(tag); }}\n >\n {tag}\n </Badge>\n ))}\n <input\n ref={inputRef}\n aria-label=\"Add tag\"\n className={tagsInputInputVariants({ size })}\n data-slot=\"tags-input-field\"\n disabled={disabled}\n id={id}\n placeholder={tags.length === 0 ? placeholder : undefined}\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n />\n </div>\n )\n}\n\nexport { TagsInput }\n"]}
@@ -1,6 +1,6 @@
1
1
  import { LineChart } from './chunk-XV6NXXXP.js';
2
2
  import { SkeletonLoader } from './chunk-QHKOBGLW.js';
3
- import { Badge } from './chunk-KOTCWE7V.js';
3
+ import { Badge } from './chunk-TNROOKX3.js';
4
4
  import { cn } from './chunk-HRNDJU7D.js';
5
5
  import * as React from 'react';
6
6
  import { cva } from 'class-variance-authority';
@@ -178,5 +178,5 @@ function ChartCard({
178
178
  ChartCard.displayName = "ChartCard";
179
179
 
180
180
  export { ChartCard, chartCardChartVariants, chartCardHeaderVariants, chartCardPreviousValueVariants, chartCardTitleVariants, chartCardValueContainerVariants, chartCardValueVariants, chartCardVariants };
181
- //# sourceMappingURL=chunk-3JIXCWJO.js.map
182
- //# sourceMappingURL=chunk-3JIXCWJO.js.map
181
+ //# sourceMappingURL=chunk-DDR24GOP.js.map
182
+ //# sourceMappingURL=chunk-DDR24GOP.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/data-display/ChartCard/ChartCard.variants.ts","../src/components/data-display/ChartCard/ChartCard.tsx"],"names":[],"mappings":"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","file":"chunk-3JIXCWJO.js","sourcesContent":["// ChartCard/ChartCard.variants.ts\nimport { cva } from \"class-variance-authority\"\n\n/**\n * ChartCard container variants\n */\nexport const chartCardVariants = cva(\n \"transition\",\n {\n variants: {\n variant: {\n default: \"\",\n outlined: \"border border-border rounded-lg p-4\",\n elevated: \"bg-card rounded-lg p-4 shadow-sm\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\n/**\n * ChartCard header variants\n */\nexport const chartCardHeaderVariants = cva(\n \"flex items-center justify-between gap-x-2\"\n)\n\n/**\n * ChartCard title variants\n */\nexport const chartCardTitleVariants = cva(\n \"font-bold text-foreground sm:text-sm\"\n)\n\n/**\n * ChartCard value container variants\n */\nexport const chartCardValueContainerVariants = cva(\n \"mt-2 flex items-baseline justify-between\"\n)\n\n/**\n * ChartCard value text variants\n */\nexport const chartCardValueVariants = cva(\n \"text-xl text-foreground\"\n)\n\n/**\n * ChartCard previous value variants\n */\nexport const chartCardPreviousValueVariants = cva(\n \"text-sm text-muted-foreground\"\n)\n\n/**\n * ChartCard chart container variants\n */\nexport const chartCardChartVariants = cva(\n \"mt-6\"\n)\n","// ChartCard/ChartCard.tsx\n\"use client\"\n\nimport type { ChartCardProps, ChartCardValueFormatter } from \"./ChartCard.types\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Badge } from \"../../primitives/Badge\"\nimport { SkeletonLoader } from \"../../primitives/SkeletonLoader\"\nimport { LineChart } from \"../LineChart\"\nimport {\n chartCardChartVariants,\n chartCardHeaderVariants,\n chartCardPreviousValueVariants,\n chartCardTitleVariants,\n chartCardValueContainerVariants,\n chartCardValueVariants,\n chartCardVariants,\n} from \"./ChartCard.variants\"\n\n/**\n * Default value formatter (returns value as string)\n */\nconst defaultFormatter: ChartCardValueFormatter = (value) => String(value)\n\n/**\n * Get badge color based on evolution percentage\n */\nfunction getBadgeColor(value: number): \"destructive\" | \"muted\" | \"success\" | \"warning\" {\n if (value > 0) {\n return \"success\"\n } else if (value < 0) {\n if (value < -50) {\n return \"warning\"\n }\n return \"destructive\"\n }\n return \"muted\"\n}\n\n/**\n * Format percentage for display\n */\nfunction formatPercentage(value: number): string {\n const sign = value > 0 ? \"+\" : \"\"\n return `${sign}${(value * 100).toFixed(1)}%`\n}\n\n/**\n * ChartCard - Dashboard widget with integrated LineChart\n *\n * Displays a KPI value with trend chart and optional comparison period.\n * Matches the Tremor DashboardChartCard layout with evolution badge.\n *\n * @example\n * ```tsx\n * const data = [\n * { formattedDate: \"01/01\", value: 1000, previousValue: 900 },\n * { formattedDate: \"02/01\", value: 1200, previousValue: 1100 },\n * ]\n *\n * const config = {\n * value: { label: \"Current\", color: \"hsl(var(--chart-1))\" },\n * previousValue: { label: \"Previous\", color: \"hsl(var(--chart-2))\" },\n * }\n *\n * <ChartCard\n * title=\"Revenue\"\n * data={data}\n * config={config}\n * valueFormatter={(v) => `$${v.toLocaleString()}`}\n * comparisonPeriod=\"previous-year\"\n * />\n * ```\n */\nfunction ChartCard({\n title,\n data,\n config,\n valueFormatter = defaultFormatter,\n comparisonPeriod = \"no-comparison\",\n isThumbnail = false,\n loading = false,\n badge,\n chartHeight = \"h-32\",\n showTooltip = true,\n xAxisKey = \"formattedDate\",\n emptyMessage,\n variant,\n className,\n ...props\n}: ChartCardProps) {\n const isEmpty = !loading && data.length === 0\n // Calculate totals\n const totalValue = React.useMemo(() => {\n return data.reduce((acc, item) => acc + (item.value ?? 0), 0)\n }, [data])\n\n const totalPreviousValue = React.useMemo(() => {\n return data.reduce((acc, item) => acc + (item.previousValue ?? 0), 0)\n }, [data])\n\n // Calculate evolution percentage\n const evolution = React.useMemo(() => {\n if (comparisonPeriod === \"no-comparison\" || totalPreviousValue === 0) {\n return 0\n }\n return (totalValue - totalPreviousValue) / totalPreviousValue\n }, [comparisonPeriod, totalPreviousValue, totalValue])\n\n // Determine which series to show\n const series = React.useMemo(() => {\n return comparisonPeriod === \"no-comparison\"\n ? [\"value\"]\n : [\"value\", \"previousValue\"]\n }, [comparisonPeriod])\n\n // Show comparison UI elements\n const showComparison = comparisonPeriod !== \"no-comparison\"\n\n // Empty state (DES-1254 item 3 — Figma Empty State)\n if (isEmpty) {\n return (\n <article\n aria-label={`${title}: empty`}\n className={cn(chartCardVariants({ variant }), className)}\n data-empty=\"true\"\n data-slot=\"chart-card\"\n {...props}\n >\n <div className={cn(chartCardHeaderVariants())}>\n <h3 className={cn(chartCardTitleVariants())}>{title}</h3>\n </div>\n <div\n className={cn(\n chartCardChartVariants(),\n chartHeight,\n \"flex items-center justify-center text-sm text-muted-foreground\"\n )}\n data-slot=\"chart-card-empty\"\n >\n {emptyMessage ?? \"No data available\"}\n </div>\n </article>\n )\n }\n\n // Loading state\n if (loading) {\n return (\n <article\n aria-busy=\"true\"\n className={cn(chartCardVariants({ variant }), className)}\n data-slot=\"chart-card\"\n {...props}\n >\n <div className={cn(chartCardHeaderVariants())}>\n <SkeletonLoader className=\"h-4 w-24\" />\n <SkeletonLoader className=\"h-5 w-12\" />\n </div>\n <div className={cn(chartCardValueContainerVariants())}>\n <SkeletonLoader className=\"h-7 w-32\" />\n </div>\n <div className={cn(chartCardChartVariants(), chartHeight)}>\n <SkeletonLoader className=\"h-full w-full\" />\n </div>\n </article>\n )\n }\n\n return (\n <article\n aria-label={`${title}: ${valueFormatter(totalValue)}`}\n className={cn(chartCardVariants({ variant }), className)}\n data-slot=\"chart-card\"\n {...props}\n >\n {/* Header with title and badge */}\n <div className={cn(chartCardHeaderVariants())}>\n <div className=\"flex items-center gap-x-2\">\n <h3 className={cn(chartCardTitleVariants())}>\n {title}\n </h3>\n {showComparison && (\n badge ?? (\n <Badge color={getBadgeColor(evolution)} size=\"sm\">\n {formatPercentage(evolution)}\n </Badge>\n )\n )}\n </div>\n </div>\n\n {/* Value display */}\n <div className={cn(chartCardValueContainerVariants())}>\n <p className={cn(chartCardValueVariants())}>\n {valueFormatter(totalValue)}\n </p>\n {showComparison && (\n <p className={cn(chartCardPreviousValueVariants())}>\n from {valueFormatter(totalPreviousValue)}\n </p>\n )}\n </div>\n\n {/* Chart */}\n {!isThumbnail && data.length > 0 && (\n <LineChart\n autoMinValue\n startEndOnly\n className={cn(chartCardChartVariants(), chartHeight)}\n config={config}\n data={data}\n series={series}\n showLegend={false}\n showTooltip={showTooltip}\n showYAxis={false}\n xAxisKey={xAxisKey}\n xAxisTickFormatter={(value) => String(value)}\n yAxisTickFormatter={(value) => valueFormatter(Number(value))}\n />\n )}\n </article>\n )\n}\n\nChartCard.displayName = \"ChartCard\"\n\nexport { ChartCard }\n"]}
1
+ {"version":3,"sources":["../src/components/data-display/ChartCard/ChartCard.variants.ts","../src/components/data-display/ChartCard/ChartCard.tsx"],"names":[],"mappings":"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","file":"chunk-DDR24GOP.js","sourcesContent":["// ChartCard/ChartCard.variants.ts\nimport { cva } from \"class-variance-authority\"\n\n/**\n * ChartCard container variants\n */\nexport const chartCardVariants = cva(\n \"transition\",\n {\n variants: {\n variant: {\n default: \"\",\n outlined: \"border border-border rounded-lg p-4\",\n elevated: \"bg-card rounded-lg p-4 shadow-sm\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\n/**\n * ChartCard header variants\n */\nexport const chartCardHeaderVariants = cva(\n \"flex items-center justify-between gap-x-2\"\n)\n\n/**\n * ChartCard title variants\n */\nexport const chartCardTitleVariants = cva(\n \"font-bold text-foreground sm:text-sm\"\n)\n\n/**\n * ChartCard value container variants\n */\nexport const chartCardValueContainerVariants = cva(\n \"mt-2 flex items-baseline justify-between\"\n)\n\n/**\n * ChartCard value text variants\n */\nexport const chartCardValueVariants = cva(\n \"text-xl text-foreground\"\n)\n\n/**\n * ChartCard previous value variants\n */\nexport const chartCardPreviousValueVariants = cva(\n \"text-sm text-muted-foreground\"\n)\n\n/**\n * ChartCard chart container variants\n */\nexport const chartCardChartVariants = cva(\n \"mt-6\"\n)\n","// ChartCard/ChartCard.tsx\n\"use client\"\n\nimport type { ChartCardProps, ChartCardValueFormatter } from \"./ChartCard.types\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Badge } from \"../../primitives/Badge\"\nimport { SkeletonLoader } from \"../../primitives/SkeletonLoader\"\nimport { LineChart } from \"../LineChart\"\nimport {\n chartCardChartVariants,\n chartCardHeaderVariants,\n chartCardPreviousValueVariants,\n chartCardTitleVariants,\n chartCardValueContainerVariants,\n chartCardValueVariants,\n chartCardVariants,\n} from \"./ChartCard.variants\"\n\n/**\n * Default value formatter (returns value as string)\n */\nconst defaultFormatter: ChartCardValueFormatter = (value) => String(value)\n\n/**\n * Get badge color based on evolution percentage\n */\nfunction getBadgeColor(value: number): \"destructive\" | \"muted\" | \"success\" | \"warning\" {\n if (value > 0) {\n return \"success\"\n } else if (value < 0) {\n if (value < -50) {\n return \"warning\"\n }\n return \"destructive\"\n }\n return \"muted\"\n}\n\n/**\n * Format percentage for display\n */\nfunction formatPercentage(value: number): string {\n const sign = value > 0 ? \"+\" : \"\"\n return `${sign}${(value * 100).toFixed(1)}%`\n}\n\n/**\n * ChartCard - Dashboard widget with integrated LineChart\n *\n * Displays a KPI value with trend chart and optional comparison period.\n * Matches the Tremor DashboardChartCard layout with evolution badge.\n *\n * @example\n * ```tsx\n * const data = [\n * { formattedDate: \"01/01\", value: 1000, previousValue: 900 },\n * { formattedDate: \"02/01\", value: 1200, previousValue: 1100 },\n * ]\n *\n * const config = {\n * value: { label: \"Current\", color: \"hsl(var(--chart-1))\" },\n * previousValue: { label: \"Previous\", color: \"hsl(var(--chart-2))\" },\n * }\n *\n * <ChartCard\n * title=\"Revenue\"\n * data={data}\n * config={config}\n * valueFormatter={(v) => `$${v.toLocaleString()}`}\n * comparisonPeriod=\"previous-year\"\n * />\n * ```\n */\nfunction ChartCard({\n title,\n data,\n config,\n valueFormatter = defaultFormatter,\n comparisonPeriod = \"no-comparison\",\n isThumbnail = false,\n loading = false,\n badge,\n chartHeight = \"h-32\",\n showTooltip = true,\n xAxisKey = \"formattedDate\",\n emptyMessage,\n variant,\n className,\n ...props\n}: ChartCardProps) {\n const isEmpty = !loading && data.length === 0\n // Calculate totals\n const totalValue = React.useMemo(() => {\n return data.reduce((acc, item) => acc + (item.value ?? 0), 0)\n }, [data])\n\n const totalPreviousValue = React.useMemo(() => {\n return data.reduce((acc, item) => acc + (item.previousValue ?? 0), 0)\n }, [data])\n\n // Calculate evolution percentage\n const evolution = React.useMemo(() => {\n if (comparisonPeriod === \"no-comparison\" || totalPreviousValue === 0) {\n return 0\n }\n return (totalValue - totalPreviousValue) / totalPreviousValue\n }, [comparisonPeriod, totalPreviousValue, totalValue])\n\n // Determine which series to show\n const series = React.useMemo(() => {\n return comparisonPeriod === \"no-comparison\"\n ? [\"value\"]\n : [\"value\", \"previousValue\"]\n }, [comparisonPeriod])\n\n // Show comparison UI elements\n const showComparison = comparisonPeriod !== \"no-comparison\"\n\n // Empty state (DES-1254 item 3 — Figma Empty State)\n if (isEmpty) {\n return (\n <article\n aria-label={`${title}: empty`}\n className={cn(chartCardVariants({ variant }), className)}\n data-empty=\"true\"\n data-slot=\"chart-card\"\n {...props}\n >\n <div className={cn(chartCardHeaderVariants())}>\n <h3 className={cn(chartCardTitleVariants())}>{title}</h3>\n </div>\n <div\n className={cn(\n chartCardChartVariants(),\n chartHeight,\n \"flex items-center justify-center text-sm text-muted-foreground\"\n )}\n data-slot=\"chart-card-empty\"\n >\n {emptyMessage ?? \"No data available\"}\n </div>\n </article>\n )\n }\n\n // Loading state\n if (loading) {\n return (\n <article\n aria-busy=\"true\"\n className={cn(chartCardVariants({ variant }), className)}\n data-slot=\"chart-card\"\n {...props}\n >\n <div className={cn(chartCardHeaderVariants())}>\n <SkeletonLoader className=\"h-4 w-24\" />\n <SkeletonLoader className=\"h-5 w-12\" />\n </div>\n <div className={cn(chartCardValueContainerVariants())}>\n <SkeletonLoader className=\"h-7 w-32\" />\n </div>\n <div className={cn(chartCardChartVariants(), chartHeight)}>\n <SkeletonLoader className=\"h-full w-full\" />\n </div>\n </article>\n )\n }\n\n return (\n <article\n aria-label={`${title}: ${valueFormatter(totalValue)}`}\n className={cn(chartCardVariants({ variant }), className)}\n data-slot=\"chart-card\"\n {...props}\n >\n {/* Header with title and badge */}\n <div className={cn(chartCardHeaderVariants())}>\n <div className=\"flex items-center gap-x-2\">\n <h3 className={cn(chartCardTitleVariants())}>\n {title}\n </h3>\n {showComparison && (\n badge ?? (\n <Badge color={getBadgeColor(evolution)} size=\"sm\">\n {formatPercentage(evolution)}\n </Badge>\n )\n )}\n </div>\n </div>\n\n {/* Value display */}\n <div className={cn(chartCardValueContainerVariants())}>\n <p className={cn(chartCardValueVariants())}>\n {valueFormatter(totalValue)}\n </p>\n {showComparison && (\n <p className={cn(chartCardPreviousValueVariants())}>\n from {valueFormatter(totalPreviousValue)}\n </p>\n )}\n </div>\n\n {/* Chart */}\n {!isThumbnail && data.length > 0 && (\n <LineChart\n autoMinValue\n startEndOnly\n className={cn(chartCardChartVariants(), chartHeight)}\n config={config}\n data={data}\n series={series}\n showLegend={false}\n showTooltip={showTooltip}\n showYAxis={false}\n xAxisKey={xAxisKey}\n xAxisTickFormatter={(value) => String(value)}\n yAxisTickFormatter={(value) => valueFormatter(Number(value))}\n />\n )}\n </article>\n )\n}\n\nChartCard.displayName = \"ChartCard\"\n\nexport { ChartCard }\n"]}
@@ -1,5 +1,5 @@
1
1
  import { Stepper } from './chunk-IFHF4UES.js';
2
- import { Button } from './chunk-RPV77BCQ.js';
2
+ import { Button } from './chunk-ONQCNOLU.js';
3
3
  import { cn } from './chunk-HRNDJU7D.js';
4
4
  import { useState, useRef, useEffect, useCallback } from 'react';
5
5
  import { cva } from 'class-variance-authority';
@@ -312,5 +312,5 @@ function Wizard({
312
312
  }
313
313
 
314
314
  export { Wizard, wizardActionsVariants, wizardContentVariants, wizardStepContentVariants, wizardStepperVariants, wizardVariants };
315
- //# sourceMappingURL=chunk-GBTVAO4V.js.map
316
- //# sourceMappingURL=chunk-GBTVAO4V.js.map
315
+ //# sourceMappingURL=chunk-EGYWK2XX.js.map
316
+ //# sourceMappingURL=chunk-EGYWK2XX.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/workflow/Wizard/Wizard.variants.ts","../src/components/workflow/Wizard/Wizard.tsx"],"names":[],"mappings":"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","file":"chunk-GBTVAO4V.js","sourcesContent":["import { cva } from \"class-variance-authority\"\n\n/**\n * Main wizard container variants\n */\nexport const wizardVariants = cva(\"flex gap-6\", {\n defaultVariants: {\n size: \"default\",\n variant: \"default\",\n },\n variants: {\n variant: {\n card: \"flex-col rounded-lg border border-border bg-card\",\n default: \"flex-col\",\n vertical: \"flex-row\",\n },\n size: {\n default: \"\",\n lg: \"\",\n sm: \"\",\n },\n },\n})\n\n/**\n * Wizard content area variants\n */\nexport const wizardContentVariants = cva(\"flex-1\", {\n defaultVariants: {\n size: \"default\",\n variant: \"default\",\n },\n variants: {\n variant: {\n card: \"border-t border-border\",\n default: \"\",\n vertical: \"border-l border-border\",\n },\n size: {\n default: \"p-6\",\n lg: \"p-8\",\n sm: \"p-4\",\n },\n },\n})\n\n/**\n * Wizard stepper area variants\n */\nexport const wizardStepperVariants = cva(\"\", {\n defaultVariants: {\n size: \"default\",\n variant: \"default\",\n },\n variants: {\n variant: {\n card: \"p-6 pb-0\",\n default: \"\",\n vertical: \"min-w-48\",\n },\n size: {\n default: \"\",\n lg: \"\",\n sm: \"\",\n },\n },\n})\n\n/**\n * Wizard actions area variants\n */\nexport const wizardActionsVariants = cva(\"flex items-center gap-3\", {\n defaultVariants: {\n size: \"default\",\n variant: \"default\",\n },\n variants: {\n variant: {\n card: \"justify-between border-t border-border p-6\",\n default: \"justify-between\",\n vertical: \"justify-end border-t border-border pt-4\",\n },\n size: {\n default: \"\",\n lg: \"\",\n sm: \"\",\n },\n },\n})\n\n/**\n * Wizard step content wrapper variants\n */\nexport const wizardStepContentVariants = cva(\"\", {\n defaultVariants: {\n size: \"default\",\n },\n variants: {\n size: {\n default: \"\",\n lg: \"\",\n sm: \"\",\n },\n },\n})\n","import type { StepItem } from \"../Stepper\"\nimport type { WizardProps, WizardStep } from \"./Wizard.types\"\n\nimport { useCallback, useEffect, useRef, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Button } from \"../../primitives/Button\"\nimport { Stepper } from \"../Stepper\"\nimport {\n wizardActionsVariants,\n wizardContentVariants,\n wizardStepperVariants,\n wizardVariants,\n} from \"./Wizard.variants\"\n\n/**\n * Convert WizardStep to StepItem for the Stepper component\n */\nfunction convertToStepItem(step: WizardStep, index: number, currentStep: number): StepItem {\n return {\n description: step.description,\n icon: step.icon,\n id: step.id,\n label: step.title,\n status: index < currentStep ? \"complete\" : index === currentStep ? \"active\" : \"pending\",\n }\n}\n\n/**\n * Wizard component guides users through a multi-step process.\n *\n * @example\n * ```tsx\n * const steps = [\n * { id: \"1\", title: \"Dados Pessoais\", content: <PersonalForm /> },\n * { id: \"2\", title: \"Endereço\", content: <AddressForm /> },\n * { id: \"3\", title: \"Conclusão\", content: <Summary /> },\n * ]\n *\n * <Wizard\n * steps={steps}\n * currentStep={0}\n * onStepChange={setStep}\n * onComplete={handleComplete}\n * />\n * ```\n */\nfunction Wizard({\n backLabel = \"Voltar\",\n canGoBack = true,\n canSkip = false,\n className,\n completeLabel = \"Completar\",\n currentStep = 0,\n isLoading = false,\n nextLabel = \"Próximo\",\n onComplete,\n onStepChange,\n onValidate,\n ref,\n showActions = true,\n showSteps = true,\n size = \"default\",\n skipLabel = \"Pular\",\n steps,\n variant = \"default\",\n ...props\n}: WizardProps) {\n const [isValidating, setIsValidating] = useState(false)\n const contentRef = useRef<HTMLDivElement>(null)\n const isLastStep = currentStep >= steps.length - 1\n const isFirstStep = currentStep === 0\n const currentStepData = steps[currentStep]\n\n // Convert steps for the Stepper component\n const stepperSteps: StepItem[] = steps.map((step, index) =>\n convertToStepItem(step, index, currentStep)\n )\n\n // Focus management - move focus to content when step changes\n useEffect(() => {\n if (contentRef.current) {\n contentRef.current.focus()\n }\n }, [currentStep])\n\n // Handle next step\n const handleNext = useCallback(async () => {\n if (isLoading || isValidating) return\n\n // Run step validation if provided\n if (currentStepData?.validate) {\n setIsValidating(true)\n try {\n const isValid = await currentStepData.validate()\n if (!isValid) {\n setIsValidating(false)\n return\n }\n } catch {\n setIsValidating(false)\n return\n }\n setIsValidating(false)\n }\n\n // Run onValidate callback if provided\n if (onValidate) {\n setIsValidating(true)\n try {\n const isValid = await Promise.resolve(onValidate(currentStep))\n if (!isValid) {\n setIsValidating(false)\n return\n }\n } catch {\n setIsValidating(false)\n return\n }\n setIsValidating(false)\n }\n\n if (isLastStep) {\n onComplete?.()\n } else {\n onStepChange?.(currentStep + 1)\n }\n }, [currentStep, currentStepData, isLastStep, isLoading, isValidating, onComplete, onStepChange, onValidate])\n\n // Handle back step\n const handleBack = useCallback(() => {\n if (isLoading || isValidating || !canGoBack || isFirstStep) return\n onStepChange?.(currentStep - 1)\n }, [canGoBack, currentStep, isFirstStep, isLoading, isValidating, onStepChange])\n\n // Handle skip step\n const handleSkip = useCallback(() => {\n if (isLoading || isValidating || !canSkip || isLastStep) return\n if (currentStepData?.optional) {\n onStepChange?.(currentStep + 1)\n }\n }, [canSkip, currentStep, currentStepData?.optional, isLastStep, isLoading, isValidating, onStepChange])\n\n // Handle step click from stepper\n const handleStepClick = useCallback(\n (stepIndex: number) => {\n if (isLoading || isValidating) return\n // Only allow clicking on completed steps or the next step\n if (stepIndex <= currentStep) {\n onStepChange?.(stepIndex)\n }\n },\n [currentStep, isLoading, isValidating, onStepChange]\n )\n\n // Handle keyboard navigation\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key === \"Enter\" && !event.shiftKey) {\n event.preventDefault()\n void handleNext()\n } else if (event.key === \"Escape\") {\n // Could implement cancel confirmation here\n }\n },\n [handleNext]\n )\n\n const isVertical = variant === \"vertical\"\n\n return (\n <div\n ref={ref}\n className={cn(\n wizardVariants({ size, variant }),\n isLoading && \"pointer-events-none opacity-50\",\n className\n )}\n aria-label={`Wizard: Step ${String(currentStep + 1)} of ${String(steps.length)}`}\n data-slot=\"wizard\"\n role=\"region\"\n onKeyDown={handleKeyDown}\n {...props}\n >\n {/* Stepper */}\n {showSteps && (\n <div\n className={wizardStepperVariants({ size, variant })}\n data-slot=\"wizard-stepper\"\n >\n <Stepper\n clickable\n currentStep={currentStep}\n size={size === \"lg\" ? \"lg\" : size === \"sm\" ? \"sm\" : \"default\"}\n steps={stepperSteps}\n variant={isVertical ? \"vertical\" : \"default\"}\n onStepClick={handleStepClick}\n />\n </div>\n )}\n\n {/* Content */}\n <div\n ref={contentRef}\n className={wizardContentVariants({ size, variant })}\n data-slot=\"wizard-content\"\n tabIndex={-1}\n >\n {/* Step content */}\n <div\n aria-label={currentStepData?.title}\n data-slot=\"wizard-step\"\n data-step={currentStep + 1}\n >\n {currentStepData?.title && (\n <h2\n className=\"mb-4 text-lg font-semibold\"\n data-slot=\"wizard-step-title\"\n >\n {currentStepData.title}\n </h2>\n )}\n <div data-slot=\"wizard-step-form\">{currentStepData?.content}</div>\n </div>\n\n {/* Actions */}\n {showActions && (\n <div\n className={cn(wizardActionsVariants({ size, variant }), \"mt-6\")}\n data-slot=\"wizard-actions\"\n >\n <div className=\"flex gap-3\">\n {/* Back button */}\n {canGoBack && !isFirstStep && (\n <Button\n aria-disabled={isLoading || isValidating}\n data-slot=\"wizard-back\"\n disabled={isLoading || isValidating}\n type=\"button\"\n variant=\"outline\"\n onClick={handleBack}\n >\n {backLabel}\n </Button>\n )}\n\n {/* Skip button */}\n {canSkip && currentStepData?.optional && !isLastStep && (\n <Button\n aria-disabled={isLoading || isValidating}\n data-slot=\"wizard-skip\"\n disabled={isLoading || isValidating}\n type=\"button\"\n variant=\"ghost\"\n onClick={handleSkip}\n >\n {skipLabel}\n </Button>\n )}\n </div>\n\n {/* Next/Complete button */}\n <Button\n aria-disabled={isLoading || isValidating}\n data-slot=\"wizard-next\"\n disabled={isLoading || isValidating}\n type=\"button\"\n onClick={() => void handleNext()}\n >\n {isLoading || isValidating ? \"Carregando...\" : isLastStep ? completeLabel : nextLabel}\n </Button>\n </div>\n )}\n </div>\n </div>\n )\n}\n\nexport { Wizard }\n"]}
1
+ {"version":3,"sources":["../src/components/workflow/Wizard/Wizard.variants.ts","../src/components/workflow/Wizard/Wizard.tsx"],"names":[],"mappings":"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","file":"chunk-EGYWK2XX.js","sourcesContent":["import { cva } from \"class-variance-authority\"\n\n/**\n * Main wizard container variants\n */\nexport const wizardVariants = cva(\"flex gap-6\", {\n defaultVariants: {\n size: \"default\",\n variant: \"default\",\n },\n variants: {\n variant: {\n card: \"flex-col rounded-lg border border-border bg-card\",\n default: \"flex-col\",\n vertical: \"flex-row\",\n },\n size: {\n default: \"\",\n lg: \"\",\n sm: \"\",\n },\n },\n})\n\n/**\n * Wizard content area variants\n */\nexport const wizardContentVariants = cva(\"flex-1\", {\n defaultVariants: {\n size: \"default\",\n variant: \"default\",\n },\n variants: {\n variant: {\n card: \"border-t border-border\",\n default: \"\",\n vertical: \"border-l border-border\",\n },\n size: {\n default: \"p-6\",\n lg: \"p-8\",\n sm: \"p-4\",\n },\n },\n})\n\n/**\n * Wizard stepper area variants\n */\nexport const wizardStepperVariants = cva(\"\", {\n defaultVariants: {\n size: \"default\",\n variant: \"default\",\n },\n variants: {\n variant: {\n card: \"p-6 pb-0\",\n default: \"\",\n vertical: \"min-w-48\",\n },\n size: {\n default: \"\",\n lg: \"\",\n sm: \"\",\n },\n },\n})\n\n/**\n * Wizard actions area variants\n */\nexport const wizardActionsVariants = cva(\"flex items-center gap-3\", {\n defaultVariants: {\n size: \"default\",\n variant: \"default\",\n },\n variants: {\n variant: {\n card: \"justify-between border-t border-border p-6\",\n default: \"justify-between\",\n vertical: \"justify-end border-t border-border pt-4\",\n },\n size: {\n default: \"\",\n lg: \"\",\n sm: \"\",\n },\n },\n})\n\n/**\n * Wizard step content wrapper variants\n */\nexport const wizardStepContentVariants = cva(\"\", {\n defaultVariants: {\n size: \"default\",\n },\n variants: {\n size: {\n default: \"\",\n lg: \"\",\n sm: \"\",\n },\n },\n})\n","import type { StepItem } from \"../Stepper\"\nimport type { WizardProps, WizardStep } from \"./Wizard.types\"\n\nimport { useCallback, useEffect, useRef, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Button } from \"../../primitives/Button\"\nimport { Stepper } from \"../Stepper\"\nimport {\n wizardActionsVariants,\n wizardContentVariants,\n wizardStepperVariants,\n wizardVariants,\n} from \"./Wizard.variants\"\n\n/**\n * Convert WizardStep to StepItem for the Stepper component\n */\nfunction convertToStepItem(step: WizardStep, index: number, currentStep: number): StepItem {\n return {\n description: step.description,\n icon: step.icon,\n id: step.id,\n label: step.title,\n status: index < currentStep ? \"complete\" : index === currentStep ? \"active\" : \"pending\",\n }\n}\n\n/**\n * Wizard component guides users through a multi-step process.\n *\n * @example\n * ```tsx\n * const steps = [\n * { id: \"1\", title: \"Dados Pessoais\", content: <PersonalForm /> },\n * { id: \"2\", title: \"Endereço\", content: <AddressForm /> },\n * { id: \"3\", title: \"Conclusão\", content: <Summary /> },\n * ]\n *\n * <Wizard\n * steps={steps}\n * currentStep={0}\n * onStepChange={setStep}\n * onComplete={handleComplete}\n * />\n * ```\n */\nfunction Wizard({\n backLabel = \"Voltar\",\n canGoBack = true,\n canSkip = false,\n className,\n completeLabel = \"Completar\",\n currentStep = 0,\n isLoading = false,\n nextLabel = \"Próximo\",\n onComplete,\n onStepChange,\n onValidate,\n ref,\n showActions = true,\n showSteps = true,\n size = \"default\",\n skipLabel = \"Pular\",\n steps,\n variant = \"default\",\n ...props\n}: WizardProps) {\n const [isValidating, setIsValidating] = useState(false)\n const contentRef = useRef<HTMLDivElement>(null)\n const isLastStep = currentStep >= steps.length - 1\n const isFirstStep = currentStep === 0\n const currentStepData = steps[currentStep]\n\n // Convert steps for the Stepper component\n const stepperSteps: StepItem[] = steps.map((step, index) =>\n convertToStepItem(step, index, currentStep)\n )\n\n // Focus management - move focus to content when step changes\n useEffect(() => {\n if (contentRef.current) {\n contentRef.current.focus()\n }\n }, [currentStep])\n\n // Handle next step\n const handleNext = useCallback(async () => {\n if (isLoading || isValidating) return\n\n // Run step validation if provided\n if (currentStepData?.validate) {\n setIsValidating(true)\n try {\n const isValid = await currentStepData.validate()\n if (!isValid) {\n setIsValidating(false)\n return\n }\n } catch {\n setIsValidating(false)\n return\n }\n setIsValidating(false)\n }\n\n // Run onValidate callback if provided\n if (onValidate) {\n setIsValidating(true)\n try {\n const isValid = await Promise.resolve(onValidate(currentStep))\n if (!isValid) {\n setIsValidating(false)\n return\n }\n } catch {\n setIsValidating(false)\n return\n }\n setIsValidating(false)\n }\n\n if (isLastStep) {\n onComplete?.()\n } else {\n onStepChange?.(currentStep + 1)\n }\n }, [currentStep, currentStepData, isLastStep, isLoading, isValidating, onComplete, onStepChange, onValidate])\n\n // Handle back step\n const handleBack = useCallback(() => {\n if (isLoading || isValidating || !canGoBack || isFirstStep) return\n onStepChange?.(currentStep - 1)\n }, [canGoBack, currentStep, isFirstStep, isLoading, isValidating, onStepChange])\n\n // Handle skip step\n const handleSkip = useCallback(() => {\n if (isLoading || isValidating || !canSkip || isLastStep) return\n if (currentStepData?.optional) {\n onStepChange?.(currentStep + 1)\n }\n }, [canSkip, currentStep, currentStepData?.optional, isLastStep, isLoading, isValidating, onStepChange])\n\n // Handle step click from stepper\n const handleStepClick = useCallback(\n (stepIndex: number) => {\n if (isLoading || isValidating) return\n // Only allow clicking on completed steps or the next step\n if (stepIndex <= currentStep) {\n onStepChange?.(stepIndex)\n }\n },\n [currentStep, isLoading, isValidating, onStepChange]\n )\n\n // Handle keyboard navigation\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key === \"Enter\" && !event.shiftKey) {\n event.preventDefault()\n void handleNext()\n } else if (event.key === \"Escape\") {\n // Could implement cancel confirmation here\n }\n },\n [handleNext]\n )\n\n const isVertical = variant === \"vertical\"\n\n return (\n <div\n ref={ref}\n className={cn(\n wizardVariants({ size, variant }),\n isLoading && \"pointer-events-none opacity-50\",\n className\n )}\n aria-label={`Wizard: Step ${String(currentStep + 1)} of ${String(steps.length)}`}\n data-slot=\"wizard\"\n role=\"region\"\n onKeyDown={handleKeyDown}\n {...props}\n >\n {/* Stepper */}\n {showSteps && (\n <div\n className={wizardStepperVariants({ size, variant })}\n data-slot=\"wizard-stepper\"\n >\n <Stepper\n clickable\n currentStep={currentStep}\n size={size === \"lg\" ? \"lg\" : size === \"sm\" ? \"sm\" : \"default\"}\n steps={stepperSteps}\n variant={isVertical ? \"vertical\" : \"default\"}\n onStepClick={handleStepClick}\n />\n </div>\n )}\n\n {/* Content */}\n <div\n ref={contentRef}\n className={wizardContentVariants({ size, variant })}\n data-slot=\"wizard-content\"\n tabIndex={-1}\n >\n {/* Step content */}\n <div\n aria-label={currentStepData?.title}\n data-slot=\"wizard-step\"\n data-step={currentStep + 1}\n >\n {currentStepData?.title && (\n <h2\n className=\"mb-4 text-lg font-semibold\"\n data-slot=\"wizard-step-title\"\n >\n {currentStepData.title}\n </h2>\n )}\n <div data-slot=\"wizard-step-form\">{currentStepData?.content}</div>\n </div>\n\n {/* Actions */}\n {showActions && (\n <div\n className={cn(wizardActionsVariants({ size, variant }), \"mt-6\")}\n data-slot=\"wizard-actions\"\n >\n <div className=\"flex gap-3\">\n {/* Back button */}\n {canGoBack && !isFirstStep && (\n <Button\n aria-disabled={isLoading || isValidating}\n data-slot=\"wizard-back\"\n disabled={isLoading || isValidating}\n type=\"button\"\n variant=\"outline\"\n onClick={handleBack}\n >\n {backLabel}\n </Button>\n )}\n\n {/* Skip button */}\n {canSkip && currentStepData?.optional && !isLastStep && (\n <Button\n aria-disabled={isLoading || isValidating}\n data-slot=\"wizard-skip\"\n disabled={isLoading || isValidating}\n type=\"button\"\n variant=\"ghost\"\n onClick={handleSkip}\n >\n {skipLabel}\n </Button>\n )}\n </div>\n\n {/* Next/Complete button */}\n <Button\n aria-disabled={isLoading || isValidating}\n data-slot=\"wizard-next\"\n disabled={isLoading || isValidating}\n type=\"button\"\n onClick={() => void handleNext()}\n >\n {isLoading || isValidating ? \"Carregando...\" : isLastStep ? completeLabel : nextLabel}\n </Button>\n </div>\n )}\n </div>\n </div>\n )\n}\n\nexport { Wizard }\n"]}
@@ -2,8 +2,8 @@ import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetDescription } from '
2
2
  import { useIsMobile } from './chunk-WH7Y2MAY.js';
3
3
  import { SkeletonLoader } from './chunk-QHKOBGLW.js';
4
4
  import { TextInput } from './chunk-PWCMCMDN.js';
5
- import { Avatar } from './chunk-HNYBLROK.js';
6
- import { Button } from './chunk-RPV77BCQ.js';
5
+ import { Avatar } from './chunk-YP2ATSXP.js';
6
+ import { Button } from './chunk-ONQCNOLU.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';
@@ -147,8 +147,12 @@ var sidebarMenuButtonVariants = cva(
147
147
  "group-data-[mode]:[&>svg]:size-[var(--sidebar-nav-item-icon-size)]",
148
148
  "group-data-[mode]:hover:bg-[color:var(--sidebar-nav-item-bg-hover)]",
149
149
  "group-data-[mode]:hover:text-[color:var(--sidebar-nav-item-fg-active)]",
150
- "group-data-[mode]:data-[active=true]:bg-[color:var(--sidebar-nav-item-bg-hover)]",
151
- "group-data-[mode]:data-[active=true]:text-[color:var(--sidebar-nav-item-fg-active)]"
150
+ // Scoped `!` so the token-mode active bg/fg wins the Tailwind v4 stacked-variant
151
+ // cascade over the base `data-[active=true]:bg-sidebar-accent` (which otherwise wins
152
+ // by sort order). Idiomatic here (cf. `size-8!`/`p-2!` above). Gated on data-mode →
153
+ // legacy sidebars (no data-mode) keep the shadcn mint; fixes single + dual alike.
154
+ "group-data-[mode]:data-[active=true]:bg-[color:var(--sidebar-nav-item-bg-hover)]!",
155
+ "group-data-[mode]:data-[active=true]:text-[color:var(--sidebar-nav-item-fg-active)]!"
152
156
  ],
153
157
  {
154
158
  variants: {
@@ -486,6 +490,7 @@ function Sidebar({
486
490
  {
487
491
  className: cn(sidebarDesktopVariants()),
488
492
  "data-collapsible": state === "collapsed" ? collapsible : "",
493
+ "data-mode": mode,
489
494
  "data-side": side,
490
495
  "data-slot": "sidebar",
491
496
  "data-state": state,
@@ -508,7 +513,7 @@ function Sidebar({
508
513
  sidebarContainerVariants(),
509
514
  side === "left" ? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]" : "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",
510
515
  // Adjust the padding for floating and inset variants.
511
- variant === "floating" || variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",
516
+ variant === "floating" || variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)",
512
517
  className
513
518
  ),
514
519
  "data-slot": "sidebar-container",
@@ -1199,5 +1204,5 @@ function SidebarThemeToggle({
1199
1204
  }
1200
1205
 
1201
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 };
1202
- //# sourceMappingURL=chunk-CCUCWL6M.js.map
1203
- //# sourceMappingURL=chunk-CCUCWL6M.js.map
1207
+ //# sourceMappingURL=chunk-HT5XM6XK.js.map
1208
+ //# sourceMappingURL=chunk-HT5XM6XK.js.map