@wealthx/shadcn 1.1.0 → 1.2.1

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 (300) hide show
  1. package/.turbo/turbo-build.log +235 -154
  2. package/CHANGELOG.md +12 -0
  3. package/dist/{chunk-6OJF6XRN.mjs → chunk-24FUO7TD.mjs} +4 -8
  4. package/dist/{chunk-4AJ5HWHD.mjs → chunk-2I5S2AMY.mjs} +3 -3
  5. package/dist/{chunk-GPRJQ24C.mjs → chunk-34NWQURD.mjs} +2 -2
  6. package/dist/{chunk-MQ72DIBH.mjs → chunk-3GF7OVTP.mjs} +14 -5
  7. package/dist/chunk-3WMX6KWS.mjs +245 -0
  8. package/dist/{chunk-PMKODV6M.mjs → chunk-462HMNO4.mjs} +6 -10
  9. package/dist/chunk-4CX4SBRO.mjs +153 -0
  10. package/dist/chunk-4MN6UQHG.mjs +443 -0
  11. package/dist/chunk-4Y6R4WEC.mjs +250 -0
  12. package/dist/{chunk-BGP2N52Z.mjs → chunk-66MI7Q4B.mjs} +5 -5
  13. package/dist/{chunk-CGOKTPXU.mjs → chunk-6JQFUE5I.mjs} +20 -23
  14. package/dist/{chunk-Z3MK2KKZ.mjs → chunk-7DHU4VGG.mjs} +7 -3
  15. package/dist/chunk-7MMXNK3C.mjs +317 -0
  16. package/dist/{chunk-VZ2NR7L3.mjs → chunk-7PYJD5JI.mjs} +35 -27
  17. package/dist/{chunk-JU2RUWHF.mjs → chunk-7XJHLGUV.mjs} +1 -1
  18. package/dist/{chunk-BMFN37JH.mjs → chunk-7YAU5CY6.mjs} +1 -1
  19. package/dist/chunk-A56YQQHG.mjs +402 -0
  20. package/dist/{chunk-GLW2UO6O.mjs → chunk-BL3DXM2X.mjs} +84 -62
  21. package/dist/{chunk-SLWCCURD.mjs → chunk-CLIN5525.mjs} +8 -4
  22. package/dist/{chunk-3VQNJ235.mjs → chunk-CSDO6VBW.mjs} +7 -0
  23. package/dist/chunk-D4ILTPOG.mjs +293 -0
  24. package/dist/{chunk-HS7TFG7V.mjs → chunk-D6ID6M4V.mjs} +1 -1
  25. package/dist/chunk-DOH3EHX7.mjs +378 -0
  26. package/dist/{chunk-MJIEMGRD.mjs → chunk-EFRENWEJ.mjs} +9 -17
  27. package/dist/{chunk-YBXCIF5Q.mjs → chunk-ERGGHC2V.mjs} +36 -49
  28. package/dist/{chunk-OXQQNQZI.mjs → chunk-FEZKMUCF.mjs} +10 -1
  29. package/dist/{chunk-55CEW76V.mjs → chunk-FH6QVUVZ.mjs} +1 -1
  30. package/dist/chunk-FMAXJ2SI.mjs +71 -0
  31. package/dist/chunk-FZIXGLMV.mjs +173 -0
  32. package/dist/chunk-GGM2UYGG.mjs +273 -0
  33. package/dist/{chunk-DS2AMHN2.mjs → chunk-GYMYRIZP.mjs} +2 -2
  34. package/dist/{chunk-KQDD5MU3.mjs → chunk-H45TKD34.mjs} +5 -5
  35. package/dist/{chunk-BBJBJSXQ.mjs → chunk-J5UICVJS.mjs} +1 -1
  36. package/dist/{chunk-RL772EH7.mjs → chunk-JHJHG4GO.mjs} +4 -12
  37. package/dist/{chunk-RN67642N.mjs → chunk-JNQORUPP.mjs} +49 -42
  38. package/dist/{chunk-5JGQAAQV.mjs → chunk-K3JYD4IU.mjs} +86 -63
  39. package/dist/{chunk-FHNT55I5.mjs → chunk-KUDCQ4FI.mjs} +4 -4
  40. package/dist/{chunk-UEL4RD5P.mjs → chunk-LHYCMLVA.mjs} +82 -68
  41. package/dist/{chunk-NLLKTU4B.mjs → chunk-LLVQKSU3.mjs} +21 -17
  42. package/dist/{chunk-KKHTJNMM.mjs → chunk-MARPPFOJ.mjs} +8 -4
  43. package/dist/{chunk-6AFMNC42.mjs → chunk-N2PT566P.mjs} +15 -11
  44. package/dist/{chunk-YN5SYTOO.mjs → chunk-NQPOYKAQ.mjs} +9 -5
  45. package/dist/{chunk-ZZV5JVNW.mjs → chunk-NSLMILBT.mjs} +3 -7
  46. package/dist/chunk-OGOYQ7BG.mjs +150 -0
  47. package/dist/chunk-OPNQAVVH.mjs +162 -0
  48. package/dist/{chunk-3NQGYJEZ.mjs → chunk-P6AM5V7O.mjs} +10 -18
  49. package/dist/{chunk-CZ3BW5GL.mjs → chunk-P76HMUI6.mjs} +5 -11
  50. package/dist/chunk-PCPLO5HT.mjs +671 -0
  51. package/dist/chunk-PG6K5XEC.mjs +475 -0
  52. package/dist/{chunk-DDPA2XXS.mjs → chunk-PMB3A7V3.mjs} +2 -2
  53. package/dist/chunk-PR6V5XKM.mjs +209 -0
  54. package/dist/{chunk-46OFHMQA.mjs → chunk-Q76O3RIQ.mjs} +10 -6
  55. package/dist/chunk-RGU7HOEC.mjs +140 -0
  56. package/dist/{chunk-JF4PHPD5.mjs → chunk-RGVKLTLH.mjs} +4 -4
  57. package/dist/{chunk-VG6UF6UT.mjs → chunk-RP3SQYA3.mjs} +2 -2
  58. package/dist/chunk-RYCLWMZ7.mjs +162 -0
  59. package/dist/chunk-SIZMLSRU.mjs +162 -0
  60. package/dist/chunk-SPJ5KXW7.mjs +199 -0
  61. package/dist/chunk-SWGT756Z.mjs +210 -0
  62. package/dist/chunk-SYOD63OZ.mjs +225 -0
  63. package/dist/chunk-TS2ZX2VS.mjs +270 -0
  64. package/dist/chunk-UFYSFDER.mjs +42 -0
  65. package/dist/chunk-VACKZOMY.mjs +190 -0
  66. package/dist/chunk-VLQZANBF.mjs +42 -0
  67. package/dist/chunk-VPBN3WOO.mjs +164 -0
  68. package/dist/chunk-WA6O6EUR.mjs +1885 -0
  69. package/dist/{chunk-E3K6O4FZ.mjs → chunk-WAZD7NFU.mjs} +5 -2
  70. package/dist/chunk-WG6JGJXB.mjs +165 -0
  71. package/dist/{chunk-I64K754C.mjs → chunk-WNGWBVLV.mjs} +2 -2
  72. package/dist/{chunk-3U7SD3MS.mjs → chunk-WOEHFRGB.mjs} +3 -3
  73. package/dist/{chunk-DKZRJOMF.mjs → chunk-XIRTEFKH.mjs} +12 -12
  74. package/dist/chunk-Y6DWJSKZ.mjs +79 -0
  75. package/dist/{chunk-CJ46PDXE.mjs → chunk-ZRO5JO3H.mjs} +106 -66
  76. package/dist/{chunk-VYMHBV6D.mjs → chunk-ZU4NV6RG.mjs} +5 -3
  77. package/dist/components/ui/accordion.js +40 -4
  78. package/dist/components/ui/accordion.mjs +2 -2
  79. package/dist/components/ui/add-column-modal.js +789 -0
  80. package/dist/components/ui/add-column-modal.mjs +17 -0
  81. package/dist/components/ui/add-lead-modal.js +647 -0
  82. package/dist/components/ui/add-lead-modal.mjs +16 -0
  83. package/dist/components/ui/ai-assistant-drawer.js +686 -0
  84. package/dist/components/ui/ai-assistant-drawer.mjs +16 -0
  85. package/dist/components/ui/alert-dialog.js +37 -5
  86. package/dist/components/ui/alert-dialog.mjs +4 -4
  87. package/dist/components/ui/alert.js +37 -11
  88. package/dist/components/ui/alert.mjs +2 -2
  89. package/dist/components/ui/avatar.js +36 -8
  90. package/dist/components/ui/avatar.mjs +2 -2
  91. package/dist/components/ui/backoffice-alert-history-chart.js +624 -0
  92. package/dist/components/ui/backoffice-alert-history-chart.mjs +16 -0
  93. package/dist/components/ui/backoffice-contact-history-chart.js +687 -0
  94. package/dist/components/ui/backoffice-contact-history-chart.mjs +16 -0
  95. package/dist/components/ui/badge.js +37 -2
  96. package/dist/components/ui/badge.mjs +2 -2
  97. package/dist/components/ui/borrowing-capacity-line-chart.js +640 -0
  98. package/dist/components/ui/borrowing-capacity-line-chart.mjs +16 -0
  99. package/dist/components/ui/button.js +35 -3
  100. package/dist/components/ui/button.mjs +2 -2
  101. package/dist/components/ui/calendar.js +43 -19
  102. package/dist/components/ui/calendar.mjs +3 -3
  103. package/dist/components/ui/card.js +40 -4
  104. package/dist/components/ui/card.mjs +2 -2
  105. package/dist/components/ui/cash-balance-line-chart.js +628 -0
  106. package/dist/components/ui/cash-balance-line-chart.mjs +16 -0
  107. package/dist/components/ui/cashflow-bar-chart.js +124 -70
  108. package/dist/components/ui/cashflow-bar-chart.mjs +8 -8
  109. package/dist/components/ui/checkbox.js +36 -5
  110. package/dist/components/ui/checkbox.mjs +2 -3
  111. package/dist/components/ui/chip.js +37 -2
  112. package/dist/components/ui/chip.mjs +3 -3
  113. package/dist/components/ui/combobox.js +68 -49
  114. package/dist/components/ui/combobox.mjs +2 -2
  115. package/dist/components/ui/data-table.js +160 -88
  116. package/dist/components/ui/data-table.mjs +10 -11
  117. package/dist/components/ui/date-picker.js +44 -20
  118. package/dist/components/ui/date-picker.mjs +6 -7
  119. package/dist/components/ui/dialog.js +44 -12
  120. package/dist/components/ui/dialog.mjs +4 -4
  121. package/dist/components/ui/drawer.js +46 -10
  122. package/dist/components/ui/drawer.mjs +3 -3
  123. package/dist/components/ui/dropdown-menu.js +40 -16
  124. package/dist/components/ui/dropdown-menu.mjs +3 -3
  125. package/dist/components/ui/empty.js +41 -5
  126. package/dist/components/ui/empty.mjs +2 -2
  127. package/dist/components/ui/expense-bar-chart.js +166 -67
  128. package/dist/components/ui/expense-bar-chart.mjs +8 -8
  129. package/dist/components/ui/field.js +53 -21
  130. package/dist/components/ui/field.mjs +4 -4
  131. package/dist/components/ui/financial-cards.js +1002 -0
  132. package/dist/components/ui/financial-cards.mjs +24 -0
  133. package/dist/components/ui/financial-drawers.js +637 -0
  134. package/dist/components/ui/financial-drawers.mjs +17 -0
  135. package/dist/components/ui/financial-primitives.js +218 -0
  136. package/dist/components/ui/financial-primitives.mjs +22 -0
  137. package/dist/components/ui/financial-sections.js +1422 -0
  138. package/dist/components/ui/financial-sections.mjs +30 -0
  139. package/dist/components/ui/form-primitives.js +682 -0
  140. package/dist/components/ui/form-primitives.mjs +19 -0
  141. package/dist/components/ui/income-bar-chart.js +164 -66
  142. package/dist/components/ui/income-bar-chart.mjs +8 -8
  143. package/dist/components/ui/input-group.js +43 -7
  144. package/dist/components/ui/input-group.mjs +5 -5
  145. package/dist/components/ui/input-otp.js +39 -3
  146. package/dist/components/ui/input-otp.mjs +2 -2
  147. package/dist/components/ui/input.js +34 -2
  148. package/dist/components/ui/input.mjs +2 -2
  149. package/dist/components/ui/kanban-column.js +1143 -0
  150. package/dist/components/ui/kanban-column.mjs +20 -0
  151. package/dist/components/ui/label.js +35 -7
  152. package/dist/components/ui/label.mjs +2 -2
  153. package/dist/components/ui/opportunity-card.js +960 -0
  154. package/dist/components/ui/opportunity-card.mjs +20 -0
  155. package/dist/components/ui/opportunity-edit-modals.js +3360 -0
  156. package/dist/components/ui/opportunity-edit-modals.mjs +37 -0
  157. package/dist/components/ui/opportunity-summary-tab.js +4365 -0
  158. package/dist/components/ui/opportunity-summary-tab.mjs +34 -0
  159. package/dist/components/ui/pagination.js +35 -3
  160. package/dist/components/ui/pagination.mjs +3 -3
  161. package/dist/components/ui/pipeline-alerts.js +103 -0
  162. package/dist/components/ui/pipeline-alerts.mjs +8 -0
  163. package/dist/components/ui/pipeline-board.js +1408 -0
  164. package/dist/components/ui/pipeline-board.mjs +24 -0
  165. package/dist/components/ui/pipeline-chart.js +216 -0
  166. package/dist/components/ui/pipeline-chart.mjs +10 -0
  167. package/dist/components/ui/pipeline-dialogs.js +1183 -0
  168. package/dist/components/ui/pipeline-dialogs.mjs +23 -0
  169. package/dist/components/ui/pipeline-primitives.js +300 -0
  170. package/dist/components/ui/pipeline-primitives.mjs +11 -0
  171. package/dist/components/ui/popover.js +45 -4
  172. package/dist/components/ui/popover.mjs +3 -3
  173. package/dist/components/ui/progress.js +33 -1
  174. package/dist/components/ui/progress.mjs +2 -2
  175. package/dist/components/ui/property-cashflow-doughnut-chart.js +523 -0
  176. package/dist/components/ui/property-cashflow-doughnut-chart.mjs +16 -0
  177. package/dist/components/ui/property-debt-equity-doughnut-chart.js +521 -0
  178. package/dist/components/ui/property-debt-equity-doughnut-chart.mjs +16 -0
  179. package/dist/components/ui/property-mobile-estimate-line-chart.js +683 -0
  180. package/dist/components/ui/property-mobile-estimate-line-chart.mjs +16 -0
  181. package/dist/components/ui/radio-group.js +33 -1
  182. package/dist/components/ui/radio-group.mjs +2 -2
  183. package/dist/components/ui/select.js +66 -26
  184. package/dist/components/ui/select.mjs +3 -3
  185. package/dist/components/ui/separator.js +33 -1
  186. package/dist/components/ui/separator.mjs +2 -2
  187. package/dist/components/ui/sheet.js +37 -9
  188. package/dist/components/ui/sheet.mjs +3 -3
  189. package/dist/components/ui/skeleton.js +33 -1
  190. package/dist/components/ui/skeleton.mjs +2 -2
  191. package/dist/components/ui/slider.js +86 -102
  192. package/dist/components/ui/slider.mjs +2 -2
  193. package/dist/components/ui/spinner.js +33 -1
  194. package/dist/components/ui/spinner.mjs +2 -2
  195. package/dist/components/ui/stage-timeline.js +579 -0
  196. package/dist/components/ui/stage-timeline.mjs +15 -0
  197. package/dist/components/ui/switch.js +37 -4
  198. package/dist/components/ui/switch.mjs +2 -3
  199. package/dist/components/ui/table.js +37 -5
  200. package/dist/components/ui/table.mjs +2 -2
  201. package/dist/components/ui/tabs.js +36 -12
  202. package/dist/components/ui/tabs.mjs +2 -2
  203. package/dist/components/ui/textarea.js +34 -2
  204. package/dist/components/ui/textarea.mjs +2 -2
  205. package/dist/components/ui/toggle-group.js +35 -4
  206. package/dist/components/ui/toggle-group.mjs +3 -4
  207. package/dist/components/ui/toggle.js +35 -4
  208. package/dist/components/ui/toggle.mjs +2 -3
  209. package/dist/components/ui/tooltip.js +51 -22
  210. package/dist/components/ui/tooltip.mjs +3 -3
  211. package/dist/components/ui/transactions-expense-categories-doughnut-chart.js +528 -0
  212. package/dist/components/ui/transactions-expense-categories-doughnut-chart.mjs +16 -0
  213. package/dist/components/ui/transactions-income-expense-bar-chart.js +77 -39
  214. package/dist/components/ui/transactions-income-expense-bar-chart.mjs +8 -8
  215. package/dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.js +528 -0
  216. package/dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.mjs +16 -0
  217. package/dist/index.js +11620 -3832
  218. package/dist/index.mjs +333 -161
  219. package/dist/lib/theme-provider.js +10 -1
  220. package/dist/lib/theme-provider.mjs +1 -1
  221. package/dist/lib/typography.js +8 -0
  222. package/dist/lib/typography.mjs +3 -1
  223. package/dist/lib/utils.js +33 -1
  224. package/dist/lib/utils.mjs +1 -1
  225. package/dist/styles.css +1 -1
  226. package/package.json +140 -5
  227. package/src/components/index.tsx +296 -42
  228. package/src/components/ui/accordion.tsx +6 -3
  229. package/src/components/ui/add-column-modal.tsx +339 -0
  230. package/src/components/ui/add-lead-modal.tsx +290 -0
  231. package/src/components/ui/ai-assistant-drawer.tsx +408 -0
  232. package/src/components/ui/alert-dialog.tsx +80 -54
  233. package/src/components/ui/alert.tsx +28 -28
  234. package/src/components/ui/avatar.tsx +30 -29
  235. package/src/components/ui/backoffice-alert-history-chart.tsx +261 -0
  236. package/src/components/ui/backoffice-contact-history-chart.tsx +326 -0
  237. package/src/components/ui/badge.tsx +17 -15
  238. package/src/components/ui/borrowing-capacity-line-chart.tsx +359 -0
  239. package/src/components/ui/button.tsx +30 -27
  240. package/src/components/ui/calendar.tsx +53 -67
  241. package/src/components/ui/card.tsx +27 -24
  242. package/src/components/ui/cash-balance-line-chart.tsx +304 -0
  243. package/src/components/ui/cashflow-bar-chart.tsx +106 -78
  244. package/src/components/ui/chart-shared.tsx +176 -15
  245. package/src/components/ui/checkbox.tsx +30 -26
  246. package/src/components/ui/combobox.tsx +78 -72
  247. package/src/components/ui/data-table.tsx +160 -99
  248. package/src/components/ui/date-picker.tsx +0 -2
  249. package/src/components/ui/dialog.tsx +70 -60
  250. package/src/components/ui/drawer.tsx +57 -48
  251. package/src/components/ui/dropdown-menu.tsx +90 -82
  252. package/src/components/ui/empty.tsx +31 -27
  253. package/src/components/ui/expense-bar-chart.tsx +85 -66
  254. package/src/components/ui/field.tsx +70 -62
  255. package/src/components/ui/financial-cards.tsx +830 -0
  256. package/src/components/ui/financial-drawers.tsx +339 -0
  257. package/src/components/ui/financial-primitives.tsx +331 -0
  258. package/src/components/ui/financial-sections.tsx +672 -0
  259. package/src/components/ui/form-primitives.tsx +536 -0
  260. package/src/components/ui/income-bar-chart.tsx +81 -61
  261. package/src/components/ui/input-group.tsx +41 -34
  262. package/src/components/ui/input-otp.tsx +29 -24
  263. package/src/components/ui/input.tsx +8 -8
  264. package/src/components/ui/kanban-column.tsx +333 -0
  265. package/src/components/ui/label.tsx +9 -12
  266. package/src/components/ui/opportunity-card.tsx +616 -0
  267. package/src/components/ui/opportunity-edit-modals.tsx +2528 -0
  268. package/src/components/ui/opportunity-summary-tab.tsx +579 -0
  269. package/src/components/ui/pipeline-alerts.tsx +74 -0
  270. package/src/components/ui/pipeline-board.tsx +268 -0
  271. package/src/components/ui/pipeline-chart.tsx +173 -0
  272. package/src/components/ui/pipeline-dialogs.tsx +303 -0
  273. package/src/components/ui/pipeline-primitives.tsx +108 -0
  274. package/src/components/ui/popover.tsx +41 -36
  275. package/src/components/ui/property-cashflow-doughnut-chart.tsx +189 -0
  276. package/src/components/ui/property-debt-equity-doughnut-chart.tsx +186 -0
  277. package/src/components/ui/property-mobile-estimate-line-chart.tsx +395 -0
  278. package/src/components/ui/select.tsx +65 -52
  279. package/src/components/ui/sheet.tsx +55 -52
  280. package/src/components/ui/slider.tsx +54 -77
  281. package/src/components/ui/stage-timeline.tsx +205 -0
  282. package/src/components/ui/switch.tsx +42 -29
  283. package/src/components/ui/table.tsx +28 -28
  284. package/src/components/ui/tabs.tsx +22 -28
  285. package/src/components/ui/textarea.tsx +8 -8
  286. package/src/components/ui/toggle-group.tsx +0 -2
  287. package/src/components/ui/toggle.tsx +13 -15
  288. package/src/components/ui/tooltip.tsx +30 -28
  289. package/src/components/ui/transactions-expense-categories-doughnut-chart.tsx +192 -0
  290. package/src/components/ui/transactions-income-expense-bar-chart.tsx +47 -39
  291. package/src/components/ui/transactions-liabilities-breakdown-doughnut-chart.tsx +192 -0
  292. package/src/lib/theme-provider.tsx +10 -0
  293. package/src/lib/typography.ts +9 -0
  294. package/src/lib/utils.ts +41 -3
  295. package/src/styles/globals.css +371 -124
  296. package/src/styles/styles-css.ts +1 -1
  297. package/tsup.config.ts +27 -0
  298. package/dist/chunk-3EQP72AW.mjs +0 -58
  299. package/dist/chunk-K74JRTJR.mjs +0 -105
  300. package/dist/chunk-V7CNWJT3.mjs +0 -10
@@ -77,8 +77,40 @@ function useThemeVars() {
77
77
  // src/lib/utils.ts
78
78
  var import_clsx = require("clsx");
79
79
  var import_tailwind_merge = require("tailwind-merge");
80
+ var twMerge = (0, import_tailwind_merge.extendTailwindMerge)({
81
+ extend: {
82
+ classGroups: {
83
+ "font-size": [
84
+ {
85
+ text: [
86
+ "display-large",
87
+ "display-medium",
88
+ "display-small",
89
+ "h1",
90
+ "h2",
91
+ "h3",
92
+ "h4",
93
+ "h5",
94
+ "h6",
95
+ "body-large",
96
+ "body-medium",
97
+ "body-small",
98
+ "label-large",
99
+ "label-medium",
100
+ "label-small",
101
+ "button",
102
+ "button-xs",
103
+ "caption",
104
+ "overline",
105
+ "code"
106
+ ]
107
+ }
108
+ ]
109
+ }
110
+ }
111
+ });
80
112
  function cn(...inputs) {
81
- return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
113
+ return twMerge((0, import_clsx.clsx)(inputs));
82
114
  }
83
115
 
84
116
  // src/components/ui/card.tsx
@@ -114,7 +146,7 @@ function CardTitle(_a) {
114
146
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
115
147
  "div",
116
148
  __spreadValues({
117
- className: cn("leading-none font-semibold", className),
149
+ className: cn("text-label-large", className),
118
150
  "data-slot": "card-title"
119
151
  }, props)
120
152
  );
@@ -183,7 +215,7 @@ function EmptyDescription(_a) {
183
215
  "div",
184
216
  __spreadValues({
185
217
  className: cn(
186
- "text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
218
+ "text-body-small leading-relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
187
219
  className
188
220
  ),
189
221
  "data-slot": "empty-description"
@@ -259,7 +291,7 @@ Slot.displayName = "Slot";
259
291
  // src/components/ui/button.tsx
260
292
  var import_jsx_runtime5 = require("react/jsx-runtime");
261
293
  var buttonVariants = (0, import_class_variance_authority2.cva)(
262
- "inline-flex shrink-0 cursor-pointer items-center justify-center gap-2 font-sans text-sm font-medium whitespace-nowrap transition-all active:scale-[0.98] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
294
+ "inline-flex shrink-0 cursor-pointer items-center justify-center gap-2 font-sans text-button whitespace-nowrap transition-all active:scale-[0.98] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
263
295
  {
264
296
  variants: {
265
297
  variant: {
@@ -274,7 +306,7 @@ var buttonVariants = (0, import_class_variance_authority2.cva)(
274
306
  },
275
307
  size: {
276
308
  default: "h-9 px-4 py-2 has-[>svg]:px-3",
277
- xs: "h-6 gap-1 px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",
309
+ xs: "h-6 gap-1 px-2 text-button-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",
278
310
  sm: "h-8 gap-1.5 px-3 has-[>svg]:px-2.5",
279
311
  lg: "h-10 px-6 has-[>svg]:px-4",
280
312
  icon: "size-9",
@@ -349,6 +381,7 @@ function hexToRgba(hex, alpha) {
349
381
  return `rgba(${r},${g},${b},${alpha})`;
350
382
  }
351
383
  var DATASET_ALPHAS = [1, 0.72, 0.52, 0.36, 0.24, 0.15];
384
+ var FALLBACK_PRIMARY = "#33FF99";
352
385
  var FALLBACK_TICK = "#9EAAB5";
353
386
  function formatTooltipDate(iso, granularity) {
354
387
  const d = new Date(iso);
@@ -357,27 +390,71 @@ function formatTooltipDate(iso, granularity) {
357
390
  granularity === "daily" ? { month: "short", day: "numeric", year: "numeric" } : { month: "short", year: "numeric" }
358
391
  );
359
392
  }
360
- function ChartLegendItem({ label, color }) {
393
+ function ChartLegendItem({
394
+ label,
395
+ color,
396
+ lineStyle
397
+ }) {
361
398
  return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex items-center gap-1.5", children: [
362
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { style: { width: 10, height: 10, backgroundColor: color, flexShrink: 0 } }),
399
+ lineStyle ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
400
+ "svg",
401
+ {
402
+ width: "20",
403
+ height: "10",
404
+ viewBox: "0 0 20 10",
405
+ "aria-hidden": "true",
406
+ style: { flexShrink: 0 },
407
+ children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
408
+ "line",
409
+ {
410
+ x1: "0",
411
+ y1: "5",
412
+ x2: "20",
413
+ y2: "5",
414
+ stroke: color,
415
+ strokeWidth: "2",
416
+ strokeLinecap: "square",
417
+ strokeDasharray: lineStyle === "dashed" ? "5 3" : void 0
418
+ }
419
+ )
420
+ }
421
+ ) : /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
422
+ "div",
423
+ {
424
+ style: {
425
+ width: 10,
426
+ height: 10,
427
+ backgroundColor: color,
428
+ flexShrink: 0
429
+ }
430
+ }
431
+ ),
363
432
  /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "text-[11px] text-muted-foreground leading-none", children: label })
364
433
  ] });
365
434
  }
366
435
  function ChartPeriodButton({
367
436
  period,
368
437
  active,
369
- onClick
438
+ onClick,
439
+ unit = "M"
370
440
  }) {
371
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(Button, { variant: active ? "default" : "outline", size: "xs", onClick, children: [
372
- period,
373
- "M"
374
- ] });
441
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
442
+ Button,
443
+ {
444
+ variant: active ? "default" : "outline",
445
+ size: "xs",
446
+ onClick,
447
+ children: [
448
+ period,
449
+ unit
450
+ ]
451
+ }
452
+ );
375
453
  }
376
454
 
377
455
  // src/components/ui/income-bar-chart.tsx
378
456
  var import_jsx_runtime7 = require("react/jsx-runtime");
379
- import_chart.Chart.register(import_chart.CategoryScale, import_chart.LinearScale, import_chart.BarElement, import_chart.Tooltip, import_chart.Legend);
380
- var FALLBACK_PRIMARY = "#33FF99";
457
+ import_chart.Chart.register(import_chart.CategoryScale, import_chart.LinearScale, import_chart.BarController, import_chart.BarElement, import_chart.Tooltip, import_chart.Legend);
381
458
  function IncomeBarChart({
382
459
  incomeData,
383
460
  title = "Income",
@@ -404,10 +481,14 @@ function IncomeBarChart({
404
481
  }, [granularity]);
405
482
  const themeVars = useThemeVars();
406
483
  const brandPrimary = themeVars["--theme-primary"] || FALLBACK_PRIMARY;
484
+ const fontFamily = themeVars["--font-sans"] || "Figtree, sans-serif";
407
485
  const sliced = (0, import_react3.useMemo)(() => {
408
486
  var _a, _b;
409
487
  if (!((_a = incomeData == null ? void 0 : incomeData.months) == null ? void 0 : _a.length) || !incomeData.datasets.length) return null;
410
- const count = Math.min(CHART_SLICE_COUNT[granularity][period], incomeData.months.length);
488
+ const count = Math.min(
489
+ CHART_SLICE_COUNT[granularity][period],
490
+ incomeData.months.length
491
+ );
411
492
  const start = incomeData.months.length - count;
412
493
  return {
413
494
  months: incomeData.months.slice(start),
@@ -447,65 +528,68 @@ function IncomeBarChart({
447
528
  }))
448
529
  };
449
530
  }, [sliced, datasetColors, brandPrimary]);
450
- const options = (0, import_react3.useMemo)(() => ({
451
- responsive: true,
452
- maintainAspectRatio: false,
453
- animation: { duration: 800, easing: "easeOutQuart" },
454
- layout: { padding: 0 },
455
- plugins: {
456
- legend: { display: false },
457
- tooltip: {
458
- mode: "index",
459
- intersect: false,
460
- padding: 12,
461
- cornerRadius: 0,
462
- titleFont: { size: 11, weight: "600" },
463
- bodyFont: { size: 12, weight: "500" },
464
- callbacks: {
465
- title: (tooltipItems) => {
466
- var _a, _b, _c, _d;
467
- const idx = (_a = tooltipItems[0]) == null ? void 0 : _a.dataIndex;
468
- if (idx != null && ((_b = sliced == null ? void 0 : sliced.dates) == null ? void 0 : _b[idx])) {
469
- return formatTooltipDate(sliced.dates[idx], granularity);
531
+ const options = (0, import_react3.useMemo)(
532
+ () => ({
533
+ responsive: true,
534
+ maintainAspectRatio: false,
535
+ animation: { duration: 800, easing: "easeOutQuart" },
536
+ layout: { padding: 0 },
537
+ plugins: {
538
+ legend: { display: false },
539
+ tooltip: {
540
+ mode: "index",
541
+ intersect: false,
542
+ padding: 12,
543
+ cornerRadius: 0,
544
+ titleFont: { size: 11, weight: 600 },
545
+ bodyFont: { size: 12, weight: 500 },
546
+ callbacks: {
547
+ title: (tooltipItems) => {
548
+ var _a, _b, _c, _d;
549
+ const idx = (_a = tooltipItems[0]) == null ? void 0 : _a.dataIndex;
550
+ if (idx != null && ((_b = sliced == null ? void 0 : sliced.dates) == null ? void 0 : _b[idx])) {
551
+ return formatTooltipDate(sliced.dates[idx], granularity);
552
+ }
553
+ return (_d = (_c = tooltipItems[0]) == null ? void 0 : _c.label) != null ? _d : "";
554
+ },
555
+ label: (ctx) => {
556
+ const val = ctx.raw;
557
+ if (val === 0) return;
558
+ return ` ${ctx.dataset.label}: $${val.toLocaleString()}`;
470
559
  }
471
- return (_d = (_c = tooltipItems[0]) == null ? void 0 : _c.label) != null ? _d : "";
472
- },
473
- label: (ctx) => {
474
- const val = ctx.raw;
475
- if (val === 0) return null;
476
- return ` ${ctx.dataset.label}: $${val.toLocaleString()}`;
477
560
  }
478
561
  }
479
- }
480
- },
481
- scales: {
482
- x: {
483
- display: showXAxis,
484
- stacked: true,
485
- grid: { display: false },
486
- border: { display: false },
487
- ticks: { font: { size: 10 }, color: FALLBACK_TICK }
488
562
  },
489
- y: {
490
- display: showYAxis,
491
- stacked: true,
492
- grid: { display: false },
493
- border: { display: false },
494
- ticks: {
495
- font: { size: 10 },
496
- color: FALLBACK_TICK,
497
- maxTicksLimit: 5,
498
- padding: 8,
499
- callback: (v) => `$${Number(v).toLocaleString()}`
563
+ scales: {
564
+ x: {
565
+ display: showXAxis,
566
+ stacked: true,
567
+ grid: { display: false },
568
+ border: { display: false },
569
+ ticks: { font: { size: 10 }, color: FALLBACK_TICK }
570
+ },
571
+ y: {
572
+ display: showYAxis,
573
+ stacked: true,
574
+ grid: { display: false },
575
+ border: { display: false },
576
+ ticks: {
577
+ font: { size: 10 },
578
+ color: FALLBACK_TICK,
579
+ maxTicksLimit: 5,
580
+ padding: 8,
581
+ callback: (v) => `$${Number(v).toLocaleString()}`
582
+ }
500
583
  }
501
584
  }
502
- }
503
- }), [showXAxis, showYAxis, sliced, granularity]);
585
+ }),
586
+ [showXAxis, showYAxis, sliced, granularity]
587
+ );
504
588
  return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
505
589
  Card,
506
590
  {
507
591
  className: cn("w-full py-4 sm:py-6 gap-2", className),
508
- style: { maxWidth: width },
592
+ style: { maxWidth: width, fontFamily },
509
593
  children: [
510
594
  /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(CardHeader, { className: "px-3 sm:px-6", children: [
511
595
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardTitle, { className: "text-sm sm:text-base", children: title }),
@@ -520,7 +604,14 @@ function IncomeBarChart({
520
604
  )) }) })
521
605
  ] }),
522
606
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardContent, { className: "px-3 sm:px-6", children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Skeleton, { style: { height, width: "100%" } }) : !sliced ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Empty, { className: "flex-none p-4", style: { height }, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(EmptyDescription, { children: "No data available" }) }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex flex-col gap-2", children: [
523
- showLegend && legendPosition === "top" && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex flex-wrap gap-x-3 gap-y-1.5 pb-2", children: sliced.datasets.map((ds, i) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ChartLegendItem, { label: ds.label, color: datasetColors[i] }, ds.label)) }),
607
+ showLegend && legendPosition === "top" && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex flex-wrap gap-x-3 gap-y-1.5 pb-2", children: sliced.datasets.map((ds, i) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
608
+ ChartLegendItem,
609
+ {
610
+ label: ds.label,
611
+ color: datasetColors[i]
612
+ },
613
+ ds.label
614
+ )) }),
524
615
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { style: { height, width: "100%", position: "relative" }, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
525
616
  import_react_chartjs_2.Chart,
526
617
  {
@@ -531,7 +622,14 @@ function IncomeBarChart({
531
622
  },
532
623
  brandPrimary
533
624
  ) }),
534
- showLegend && legendPosition === "bottom" && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex flex-wrap gap-x-3 gap-y-1.5 pt-2", children: sliced.datasets.map((ds, i) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ChartLegendItem, { label: ds.label, color: datasetColors[i] }, ds.label)) })
625
+ showLegend && legendPosition === "bottom" && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex flex-wrap gap-x-3 gap-y-1.5 pt-2", children: sliced.datasets.map((ds, i) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
626
+ ChartLegendItem,
627
+ {
628
+ label: ds.label,
629
+ color: datasetColors[i]
630
+ },
631
+ ds.label
632
+ )) })
535
633
  ] }) })
536
634
  ]
537
635
  }
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  IncomeBarChart
3
- } from "../../chunk-GLW2UO6O.mjs";
4
- import "../../chunk-3EQP72AW.mjs";
5
- import "../../chunk-HS7TFG7V.mjs";
6
- import "../../chunk-YN5SYTOO.mjs";
7
- import "../../chunk-SLWCCURD.mjs";
8
- import "../../chunk-4AJ5HWHD.mjs";
3
+ } from "../../chunk-BL3DXM2X.mjs";
4
+ import "../../chunk-D6ID6M4V.mjs";
5
+ import "../../chunk-FZIXGLMV.mjs";
6
+ import "../../chunk-NQPOYKAQ.mjs";
7
+ import "../../chunk-CLIN5525.mjs";
8
+ import "../../chunk-2I5S2AMY.mjs";
9
9
  import "../../chunk-DBHJ5KC3.mjs";
10
- import "../../chunk-OXQQNQZI.mjs";
10
+ import "../../chunk-FEZKMUCF.mjs";
11
11
  import "../../chunk-QOJ2DQD6.mjs";
12
- import "../../chunk-V7CNWJT3.mjs";
12
+ import "../../chunk-VLQZANBF.mjs";
13
13
  import "../../chunk-FWCSY2DS.mjs";
14
14
  export {
15
15
  IncomeBarChart
@@ -72,8 +72,40 @@ var import_class_variance_authority2 = require("class-variance-authority");
72
72
  // src/lib/utils.ts
73
73
  var import_clsx = require("clsx");
74
74
  var import_tailwind_merge = require("tailwind-merge");
75
+ var twMerge = (0, import_tailwind_merge.extendTailwindMerge)({
76
+ extend: {
77
+ classGroups: {
78
+ "font-size": [
79
+ {
80
+ text: [
81
+ "display-large",
82
+ "display-medium",
83
+ "display-small",
84
+ "h1",
85
+ "h2",
86
+ "h3",
87
+ "h4",
88
+ "h5",
89
+ "h6",
90
+ "body-large",
91
+ "body-medium",
92
+ "body-small",
93
+ "label-large",
94
+ "label-medium",
95
+ "label-small",
96
+ "button",
97
+ "button-xs",
98
+ "caption",
99
+ "overline",
100
+ "code"
101
+ ]
102
+ }
103
+ ]
104
+ }
105
+ }
106
+ });
75
107
  function cn(...inputs) {
76
- return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
108
+ return twMerge((0, import_clsx.clsx)(inputs));
77
109
  }
78
110
 
79
111
  // src/components/ui/button.tsx
@@ -131,7 +163,7 @@ Slot.displayName = "Slot";
131
163
  // src/components/ui/button.tsx
132
164
  var import_jsx_runtime = require("react/jsx-runtime");
133
165
  var buttonVariants = (0, import_class_variance_authority.cva)(
134
- "inline-flex shrink-0 cursor-pointer items-center justify-center gap-2 font-sans text-sm font-medium whitespace-nowrap transition-all active:scale-[0.98] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
166
+ "inline-flex shrink-0 cursor-pointer items-center justify-center gap-2 font-sans text-button whitespace-nowrap transition-all active:scale-[0.98] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
135
167
  {
136
168
  variants: {
137
169
  variant: {
@@ -146,7 +178,7 @@ var buttonVariants = (0, import_class_variance_authority.cva)(
146
178
  },
147
179
  size: {
148
180
  default: "h-9 px-4 py-2 has-[>svg]:px-3",
149
- xs: "h-6 gap-1 px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",
181
+ xs: "h-6 gap-1 px-2 text-button-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",
150
182
  sm: "h-8 gap-1.5 px-3 has-[>svg]:px-2.5",
151
183
  lg: "h-10 px-6 has-[>svg]:px-4",
152
184
  icon: "size-9",
@@ -210,7 +242,7 @@ function Input(_a) {
210
242
  "input",
211
243
  __spreadValues({
212
244
  className: cn(
213
- "h-9 w-full min-w-0 border border-input bg-transparent px-3 py-1 text-base font-sans shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30",
245
+ "h-9 w-full min-w-0 border border-input bg-transparent px-3 py-1 text-body-medium font-sans shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-label-medium file:text-foreground placeholder:font-normal placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 dark:bg-input/30",
214
246
  "focus-visible:border-primary focus-visible:ring-[3px] focus-visible:ring-primary/20",
215
247
  "aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",
216
248
  className
@@ -230,7 +262,7 @@ function Textarea(_a) {
230
262
  __spreadValues({
231
263
  className: cn(
232
264
  // WealthX: removed shadow-xs (flat panels), added font-sans
233
- "flex field-sizing-content min-h-16 w-full border border-input bg-transparent px-3 py-2 text-base font-sans transition-[color,box-shadow] outline-none placeholder:text-muted-foreground focus-visible:border-primary focus-visible:ring-[3px] focus-visible:ring-primary/20 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:aria-invalid:ring-destructive/40",
265
+ "flex field-sizing-content min-h-16 w-full border border-input bg-transparent px-3 py-2 text-body-medium font-sans transition-[color,box-shadow] outline-none placeholder:font-normal placeholder:text-muted-foreground focus-visible:border-primary focus-visible:ring-[3px] focus-visible:ring-primary/20 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:bg-input/30 dark:aria-invalid:ring-destructive/40",
234
266
  className
235
267
  ),
236
268
  "data-slot": "textarea"
@@ -353,12 +385,16 @@ function InputGroupButton(_a) {
353
385
  );
354
386
  }
355
387
  function InputGroupText(_a) {
356
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
388
+ var _b = _a, {
389
+ className
390
+ } = _b, props = __objRest(_b, [
391
+ "className"
392
+ ]);
357
393
  return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
358
394
  "span",
359
395
  __spreadValues({
360
396
  className: cn(
361
- "flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
397
+ "flex items-center gap-2 text-body-small text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
362
398
  className
363
399
  )
364
400
  }, props)
@@ -5,12 +5,12 @@ import {
5
5
  InputGroupInput,
6
6
  InputGroupText,
7
7
  InputGroupTextarea
8
- } from "../../chunk-46OFHMQA.mjs";
9
- import "../../chunk-GPRJQ24C.mjs";
10
- import "../../chunk-DS2AMHN2.mjs";
11
- import "../../chunk-4AJ5HWHD.mjs";
8
+ } from "../../chunk-Q76O3RIQ.mjs";
9
+ import "../../chunk-34NWQURD.mjs";
10
+ import "../../chunk-GYMYRIZP.mjs";
11
+ import "../../chunk-2I5S2AMY.mjs";
12
12
  import "../../chunk-DBHJ5KC3.mjs";
13
- import "../../chunk-V7CNWJT3.mjs";
13
+ import "../../chunk-VLQZANBF.mjs";
14
14
  import "../../chunk-FWCSY2DS.mjs";
15
15
  export {
16
16
  InputGroup,
@@ -72,8 +72,40 @@ var import_lucide_react = require("lucide-react");
72
72
  // src/lib/utils.ts
73
73
  var import_clsx = require("clsx");
74
74
  var import_tailwind_merge = require("tailwind-merge");
75
+ var twMerge = (0, import_tailwind_merge.extendTailwindMerge)({
76
+ extend: {
77
+ classGroups: {
78
+ "font-size": [
79
+ {
80
+ text: [
81
+ "display-large",
82
+ "display-medium",
83
+ "display-small",
84
+ "h1",
85
+ "h2",
86
+ "h3",
87
+ "h4",
88
+ "h5",
89
+ "h6",
90
+ "body-large",
91
+ "body-medium",
92
+ "body-small",
93
+ "label-large",
94
+ "label-medium",
95
+ "label-small",
96
+ "button",
97
+ "button-xs",
98
+ "caption",
99
+ "overline",
100
+ "code"
101
+ ]
102
+ }
103
+ ]
104
+ }
105
+ }
106
+ });
75
107
  function cn(...inputs) {
76
- return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
108
+ return twMerge((0, import_clsx.clsx)(inputs));
77
109
  }
78
110
 
79
111
  // src/components/ui/input-otp.tsx
@@ -99,7 +131,11 @@ function InputOTP(_a) {
99
131
  );
100
132
  }
101
133
  function InputOTPGroup(_a) {
102
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
134
+ var _b = _a, {
135
+ className
136
+ } = _b, props = __objRest(_b, [
137
+ "className"
138
+ ]);
103
139
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
104
140
  "div",
105
141
  __spreadValues({
@@ -123,7 +159,7 @@ function InputOTPSlot(_a) {
123
159
  "div",
124
160
  __spreadProps(__spreadValues({
125
161
  className: cn(
126
- "relative flex h-9 w-9 items-center justify-center border-y border-r border-input text-sm shadow-xs transition-all outline-none first:border-l aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-[3px] data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:bg-input/30 dark:data-[active=true]:aria-invalid:ring-destructive/40",
162
+ "relative flex h-9 w-9 items-center justify-center border-y border-r border-input text-body-small shadow-xs transition-all outline-none first:border-l aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-[3px] data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:bg-input/30 dark:data-[active=true]:aria-invalid:ring-destructive/40",
127
163
  className
128
164
  ),
129
165
  "data-active": isActive,
@@ -3,8 +3,8 @@ import {
3
3
  InputOTPGroup,
4
4
  InputOTPSeparator,
5
5
  InputOTPSlot
6
- } from "../../chunk-Z3MK2KKZ.mjs";
7
- import "../../chunk-V7CNWJT3.mjs";
6
+ } from "../../chunk-7DHU4VGG.mjs";
7
+ import "../../chunk-VLQZANBF.mjs";
8
8
  import "../../chunk-FWCSY2DS.mjs";
9
9
  export {
10
10
  InputOTP,
@@ -53,8 +53,40 @@ module.exports = __toCommonJS(input_exports);
53
53
  // src/lib/utils.ts
54
54
  var import_clsx = require("clsx");
55
55
  var import_tailwind_merge = require("tailwind-merge");
56
+ var twMerge = (0, import_tailwind_merge.extendTailwindMerge)({
57
+ extend: {
58
+ classGroups: {
59
+ "font-size": [
60
+ {
61
+ text: [
62
+ "display-large",
63
+ "display-medium",
64
+ "display-small",
65
+ "h1",
66
+ "h2",
67
+ "h3",
68
+ "h4",
69
+ "h5",
70
+ "h6",
71
+ "body-large",
72
+ "body-medium",
73
+ "body-small",
74
+ "label-large",
75
+ "label-medium",
76
+ "label-small",
77
+ "button",
78
+ "button-xs",
79
+ "caption",
80
+ "overline",
81
+ "code"
82
+ ]
83
+ }
84
+ ]
85
+ }
86
+ }
87
+ });
56
88
  function cn(...inputs) {
57
- return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
89
+ return twMerge((0, import_clsx.clsx)(inputs));
58
90
  }
59
91
 
60
92
  // src/components/ui/input.tsx
@@ -65,7 +97,7 @@ function Input(_a) {
65
97
  "input",
66
98
  __spreadValues({
67
99
  className: cn(
68
- "h-9 w-full min-w-0 border border-input bg-transparent px-3 py-1 text-base font-sans shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30",
100
+ "h-9 w-full min-w-0 border border-input bg-transparent px-3 py-1 text-body-medium font-sans shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-label-medium file:text-foreground placeholder:font-normal placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 dark:bg-input/30",
69
101
  "focus-visible:border-primary focus-visible:ring-[3px] focus-visible:ring-primary/20",
70
102
  "aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",
71
103
  className
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  Input
3
- } from "../../chunk-DS2AMHN2.mjs";
4
- import "../../chunk-V7CNWJT3.mjs";
3
+ } from "../../chunk-GYMYRIZP.mjs";
4
+ import "../../chunk-VLQZANBF.mjs";
5
5
  import "../../chunk-FWCSY2DS.mjs";
6
6
  export {
7
7
  Input