@wealthx/shadcn 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (300) hide show
  1. package/.turbo/turbo-build.log +235 -154
  2. package/CHANGELOG.md +6 -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-2SF672SZ.mjs +161 -0
  6. package/dist/{chunk-GPRJQ24C.mjs → chunk-34NWQURD.mjs} +2 -2
  7. package/dist/{chunk-MQ72DIBH.mjs → chunk-3GF7OVTP.mjs} +14 -5
  8. package/dist/chunk-3WMX6KWS.mjs +245 -0
  9. package/dist/{chunk-PMKODV6M.mjs → chunk-462HMNO4.mjs} +6 -10
  10. package/dist/chunk-4CX4SBRO.mjs +153 -0
  11. package/dist/chunk-4MN6UQHG.mjs +443 -0
  12. package/dist/{chunk-GLW2UO6O.mjs → chunk-5QQVZTVZ.mjs} +82 -61
  13. package/dist/{chunk-BGP2N52Z.mjs → chunk-66MI7Q4B.mjs} +5 -5
  14. package/dist/chunk-6FCGKSZX.mjs +268 -0
  15. package/dist/{chunk-CGOKTPXU.mjs → chunk-6JQFUE5I.mjs} +20 -23
  16. package/dist/{chunk-Z3MK2KKZ.mjs → chunk-7DHU4VGG.mjs} +7 -3
  17. package/dist/{chunk-VZ2NR7L3.mjs → chunk-7PYJD5JI.mjs} +35 -27
  18. package/dist/{chunk-JU2RUWHF.mjs → chunk-7XJHLGUV.mjs} +1 -1
  19. package/dist/{chunk-BMFN37JH.mjs → chunk-7YAU5CY6.mjs} +1 -1
  20. package/dist/chunk-A56YQQHG.mjs +402 -0
  21. package/dist/chunk-AH52LG6N.mjs +315 -0
  22. package/dist/{chunk-SLWCCURD.mjs → chunk-CLIN5525.mjs} +8 -4
  23. package/dist/{chunk-3VQNJ235.mjs → chunk-CSDO6VBW.mjs} +7 -0
  24. package/dist/chunk-D4ILTPOG.mjs +293 -0
  25. package/dist/{chunk-HS7TFG7V.mjs → chunk-D6ID6M4V.mjs} +1 -1
  26. package/dist/chunk-DOH3EHX7.mjs +378 -0
  27. package/dist/{chunk-MJIEMGRD.mjs → chunk-EFRENWEJ.mjs} +9 -17
  28. package/dist/{chunk-YBXCIF5Q.mjs → chunk-ERGGHC2V.mjs} +36 -49
  29. package/dist/{chunk-OXQQNQZI.mjs → chunk-FEZKMUCF.mjs} +10 -1
  30. package/dist/{chunk-55CEW76V.mjs → chunk-FH6QVUVZ.mjs} +1 -1
  31. package/dist/chunk-FMAXJ2SI.mjs +71 -0
  32. package/dist/chunk-FZIXGLMV.mjs +173 -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-KMCGSZTX.mjs} +47 -41
  38. package/dist/{chunk-FHNT55I5.mjs → chunk-KUDCQ4FI.mjs} +4 -4
  39. package/dist/chunk-LE6YFY6D.mjs +209 -0
  40. package/dist/{chunk-NLLKTU4B.mjs → chunk-LLVQKSU3.mjs} +21 -17
  41. package/dist/{chunk-KKHTJNMM.mjs → chunk-MARPPFOJ.mjs} +8 -4
  42. package/dist/{chunk-6AFMNC42.mjs → chunk-N2PT566P.mjs} +15 -11
  43. package/dist/chunk-NLCKVHWB.mjs +161 -0
  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-NXA3CZ7A.mjs +248 -0
  47. package/dist/chunk-OGOYQ7BG.mjs +150 -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-5JGQAAQV.mjs → chunk-PJHPSRYD.mjs} +84 -62
  53. package/dist/{chunk-DDPA2XXS.mjs → chunk-PMB3A7V3.mjs} +2 -2
  54. package/dist/chunk-PR6V5XKM.mjs +209 -0
  55. package/dist/{chunk-46OFHMQA.mjs → chunk-Q76O3RIQ.mjs} +10 -6
  56. package/dist/chunk-QVKWW6KE.mjs +272 -0
  57. package/dist/chunk-RGU7HOEC.mjs +140 -0
  58. package/dist/{chunk-JF4PHPD5.mjs → chunk-RGVKLTLH.mjs} +4 -4
  59. package/dist/{chunk-VG6UF6UT.mjs → chunk-RP3SQYA3.mjs} +2 -2
  60. package/dist/chunk-RRBS6D63.mjs +163 -0
  61. package/dist/{chunk-UEL4RD5P.mjs → chunk-SMQ3DG25.mjs} +80 -67
  62. package/dist/chunk-SPJ5KXW7.mjs +199 -0
  63. package/dist/chunk-SYOD63OZ.mjs +225 -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-WA6O6EUR.mjs +1885 -0
  68. package/dist/{chunk-E3K6O4FZ.mjs → chunk-WAZD7NFU.mjs} +5 -2
  69. package/dist/chunk-WG6JGJXB.mjs +165 -0
  70. package/dist/{chunk-I64K754C.mjs → chunk-WNGWBVLV.mjs} +2 -2
  71. package/dist/{chunk-3U7SD3MS.mjs → chunk-WOEHFRGB.mjs} +3 -3
  72. package/dist/{chunk-DKZRJOMF.mjs → chunk-XIRTEFKH.mjs} +12 -12
  73. package/dist/chunk-Y6DWJSKZ.mjs +79 -0
  74. package/dist/chunk-YKPROFLB.mjs +161 -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 +639 -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 +627 -0
  106. package/dist/components/ui/cash-balance-line-chart.mjs +16 -0
  107. package/dist/components/ui/cashflow-bar-chart.js +123 -69
  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 +165 -66
  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 +163 -65
  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 +682 -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 +76 -38
  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 +11616 -3831
  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 +260 -0
  236. package/src/components/ui/backoffice-contact-history-chart.tsx +325 -0
  237. package/src/components/ui/badge.tsx +17 -15
  238. package/src/components/ui/borrowing-capacity-line-chart.tsx +357 -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 +302 -0
  243. package/src/components/ui/cashflow-bar-chart.tsx +104 -77
  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 +83 -65
  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 +79 -60
  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 +188 -0
  276. package/src/components/ui/property-debt-equity-doughnut-chart.tsx +185 -0
  277. package/src/components/ui/property-mobile-estimate-line-chart.tsx +393 -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 +191 -0
  290. package/src/components/ui/transactions-income-expense-bar-chart.tsx +45 -38
  291. package/src/components/ui/transactions-liabilities-breakdown-doughnut-chart.tsx +191 -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
@@ -0,0 +1,71 @@
1
+ import {
2
+ Badge
3
+ } from "./chunk-WAZD7NFU.mjs";
4
+ import {
5
+ Checkbox
6
+ } from "./chunk-RGVKLTLH.mjs";
7
+ import {
8
+ cn
9
+ } from "./chunk-VLQZANBF.mjs";
10
+
11
+ // src/components/ui/pipeline-primitives.tsx
12
+ import { jsx, jsxs } from "react/jsx-runtime";
13
+ function TaskCheckItem({
14
+ title,
15
+ completed,
16
+ aiAgentName,
17
+ onToggle,
18
+ disabled = false,
19
+ size = "xs",
20
+ className
21
+ }) {
22
+ return /* @__PURE__ */ jsxs(
23
+ "div",
24
+ {
25
+ className: cn(
26
+ "flex cursor-pointer items-start gap-2 py-1.5",
27
+ disabled && "pointer-events-none opacity-60",
28
+ className
29
+ ),
30
+ onClick: () => onToggle == null ? void 0 : onToggle(),
31
+ "data-slot": "task-check-item",
32
+ children: [
33
+ /* @__PURE__ */ jsx("span", { onClick: (e) => e.stopPropagation(), className: "mt-0.5 shrink-0", children: /* @__PURE__ */ jsx(
34
+ Checkbox,
35
+ {
36
+ checked: completed,
37
+ onCheckedChange: () => onToggle == null ? void 0 : onToggle(),
38
+ disabled
39
+ }
40
+ ) }),
41
+ /* @__PURE__ */ jsxs("span", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [
42
+ /* @__PURE__ */ jsx(
43
+ "span",
44
+ {
45
+ className: cn(
46
+ "leading-snug text-foreground",
47
+ size === "sm" ? "text-sm" : "text-xs",
48
+ completed && "text-muted-foreground line-through"
49
+ ),
50
+ children: title
51
+ }
52
+ ),
53
+ aiAgentName && /* @__PURE__ */ jsxs(Badge, { variant: "secondary", className: "gap-1 text-[10px]", children: [
54
+ /* @__PURE__ */ jsx(
55
+ "span",
56
+ {
57
+ className: "size-1.5 rounded-full bg-primary",
58
+ "aria-hidden": "true"
59
+ }
60
+ ),
61
+ aiAgentName
62
+ ] })
63
+ ] })
64
+ ]
65
+ }
66
+ );
67
+ }
68
+
69
+ export {
70
+ TaskCheckItem
71
+ };
@@ -0,0 +1,173 @@
1
+ import {
2
+ Button
3
+ } from "./chunk-2I5S2AMY.mjs";
4
+
5
+ // src/components/ui/chart-shared.tsx
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ var CHART_SLICE_COUNT = {
8
+ monthly: { 1: 1, 3: 3, 6: 6, 12: 12 },
9
+ daily: { 1: 30, 3: 90, 6: 180, 12: 365 }
10
+ };
11
+ var CHART_PERIODS = {
12
+ monthly: [3, 6, 12],
13
+ daily: [1, 3, 6, 12]
14
+ };
15
+ function hexToRgba(hex, alpha) {
16
+ const clean = hex.replace("#", "");
17
+ const full = clean.length === 3 ? clean.split("").map((c) => c + c).join("") : clean;
18
+ const r = parseInt(full.slice(0, 2), 16);
19
+ const g = parseInt(full.slice(2, 4), 16);
20
+ const b = parseInt(full.slice(4, 6), 16);
21
+ return `rgba(${r},${g},${b},${alpha})`;
22
+ }
23
+ var DATASET_ALPHAS = [1, 0.72, 0.52, 0.36, 0.24, 0.15];
24
+ var FALLBACK_PRIMARY = "#33FF99";
25
+ var FALLBACK_SECONDARY = "#162029";
26
+ var FALLBACK_BG = "#ffffff";
27
+ var FALLBACK_FOREGROUND = "#040D13";
28
+ var FALLBACK_TICK = "#9EAAB5";
29
+ var FALLBACK_NEUTRAL = "#B9BCBF";
30
+ var SEVERITY_COLORS = {
31
+ high: "#F44336",
32
+ // default --destructive oklch(0.643 0.215 28.8)
33
+ medium: "#FF9800",
34
+ // default --warning oklch(0.77 0.174 64.1)
35
+ low: "#4CAF50"
36
+ // default --success oklch(0.673 0.162 144.2)
37
+ };
38
+ function formatAbbrev(value) {
39
+ const abs = Math.abs(value);
40
+ const sign = value < 0 ? "-" : "";
41
+ if (abs >= 1e9)
42
+ return `${sign}$${(abs / 1e9).toFixed(1)}B`;
43
+ if (abs >= 1e6) return `${sign}$${(abs / 1e6).toFixed(1)}M`;
44
+ if (abs >= 1e3) return `${sign}$${(abs / 1e3).toFixed(0)}K`;
45
+ return `${sign}$${abs.toFixed(0)}`;
46
+ }
47
+ function formatTooltipDate(iso, granularity) {
48
+ const d = new Date(iso);
49
+ return d.toLocaleDateString(
50
+ "en-US",
51
+ granularity === "daily" ? { month: "short", day: "numeric", year: "numeric" } : { month: "short", year: "numeric" }
52
+ );
53
+ }
54
+ function formatMonthLabel(iso) {
55
+ return new Date(iso).toLocaleDateString("en-US", {
56
+ month: "short",
57
+ year: "2-digit"
58
+ });
59
+ }
60
+ function formatCount(n) {
61
+ if (n >= 1e3) return `${(n / 1e3).toFixed(1)}k`;
62
+ return String(Math.round(n));
63
+ }
64
+ function ChartLegendItem({
65
+ label,
66
+ color,
67
+ lineStyle
68
+ }) {
69
+ return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5", children: [
70
+ lineStyle ? /* @__PURE__ */ jsx(
71
+ "svg",
72
+ {
73
+ width: "20",
74
+ height: "10",
75
+ viewBox: "0 0 20 10",
76
+ "aria-hidden": "true",
77
+ style: { flexShrink: 0 },
78
+ children: /* @__PURE__ */ jsx(
79
+ "line",
80
+ {
81
+ x1: "0",
82
+ y1: "5",
83
+ x2: "20",
84
+ y2: "5",
85
+ stroke: color,
86
+ strokeWidth: "2",
87
+ strokeLinecap: "square",
88
+ strokeDasharray: lineStyle === "dashed" ? "5 3" : void 0
89
+ }
90
+ )
91
+ }
92
+ ) : /* @__PURE__ */ jsx(
93
+ "div",
94
+ {
95
+ style: {
96
+ width: 10,
97
+ height: 10,
98
+ backgroundColor: color,
99
+ flexShrink: 0
100
+ }
101
+ }
102
+ ),
103
+ /* @__PURE__ */ jsx("span", { className: "text-[11px] text-muted-foreground leading-none", children: label })
104
+ ] });
105
+ }
106
+ function DoughnutLegendRow({
107
+ label,
108
+ color,
109
+ value,
110
+ percent
111
+ }) {
112
+ return /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2", children: [
113
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 min-w-0", children: [
114
+ /* @__PURE__ */ jsx(
115
+ "div",
116
+ {
117
+ style: {
118
+ width: 10,
119
+ height: 10,
120
+ borderRadius: "50%",
121
+ backgroundColor: color,
122
+ flexShrink: 0
123
+ }
124
+ }
125
+ ),
126
+ /* @__PURE__ */ jsx("span", { className: "text-[11px] text-muted-foreground leading-none truncate", children: label })
127
+ ] }),
128
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 shrink-0", children: [
129
+ /* @__PURE__ */ jsx("span", { className: "text-[11px] font-medium leading-none", children: formatAbbrev(value) }),
130
+ /* @__PURE__ */ jsx("span", { className: "text-[11px] text-muted-foreground leading-none w-10 text-right", children: percent })
131
+ ] })
132
+ ] });
133
+ }
134
+ function ChartPeriodButton({
135
+ period,
136
+ active,
137
+ onClick,
138
+ unit = "M"
139
+ }) {
140
+ return /* @__PURE__ */ jsxs(
141
+ Button,
142
+ {
143
+ variant: active ? "default" : "outline",
144
+ size: "xs",
145
+ onClick,
146
+ children: [
147
+ period,
148
+ unit
149
+ ]
150
+ }
151
+ );
152
+ }
153
+
154
+ export {
155
+ CHART_SLICE_COUNT,
156
+ CHART_PERIODS,
157
+ hexToRgba,
158
+ DATASET_ALPHAS,
159
+ FALLBACK_PRIMARY,
160
+ FALLBACK_SECONDARY,
161
+ FALLBACK_BG,
162
+ FALLBACK_FOREGROUND,
163
+ FALLBACK_TICK,
164
+ FALLBACK_NEUTRAL,
165
+ SEVERITY_COLORS,
166
+ formatAbbrev,
167
+ formatTooltipDate,
168
+ formatMonthLabel,
169
+ formatCount,
170
+ ChartLegendItem,
171
+ DoughnutLegendRow,
172
+ ChartPeriodButton
173
+ };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  cn
3
- } from "./chunk-V7CNWJT3.mjs";
3
+ } from "./chunk-VLQZANBF.mjs";
4
4
  import {
5
5
  __objRest,
6
6
  __spreadValues
@@ -14,7 +14,7 @@ function Input(_a) {
14
14
  "input",
15
15
  __spreadValues({
16
16
  className: cn(
17
- "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",
17
+ "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",
18
18
  "focus-visible:border-primary focus-visible:ring-[3px] focus-visible:ring-primary/20",
19
19
  "aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",
20
20
  className
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  buttonVariants
3
- } from "./chunk-4AJ5HWHD.mjs";
3
+ } from "./chunk-2I5S2AMY.mjs";
4
4
  import {
5
5
  useThemeVars
6
- } from "./chunk-OXQQNQZI.mjs";
6
+ } from "./chunk-FEZKMUCF.mjs";
7
7
  import {
8
8
  cn
9
- } from "./chunk-V7CNWJT3.mjs";
9
+ } from "./chunk-VLQZANBF.mjs";
10
10
  import {
11
11
  __objRest,
12
12
  __spreadValues
@@ -118,7 +118,7 @@ function AlertDialogTitle(_a) {
118
118
  AlertDialogPrimitive.Title,
119
119
  __spreadValues({
120
120
  className: cn(
121
- "text-lg font-semibold sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2",
121
+ "text-h5 sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2",
122
122
  className
123
123
  ),
124
124
  "data-slot": "alert-dialog-title"
@@ -135,7 +135,7 @@ function AlertDialogDescription(_a) {
135
135
  AlertDialogPrimitive.Description,
136
136
  __spreadValues({
137
137
  className: cn(
138
- "text-sm text-muted-foreground sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2",
138
+ "text-body-small text-muted-foreground sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2",
139
139
  className
140
140
  ),
141
141
  "data-slot": "alert-dialog-description"
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  cn
3
- } from "./chunk-V7CNWJT3.mjs";
3
+ } from "./chunk-VLQZANBF.mjs";
4
4
  import {
5
5
  __objRest,
6
6
  __spreadProps,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  cn
3
- } from "./chunk-V7CNWJT3.mjs";
3
+ } from "./chunk-VLQZANBF.mjs";
4
4
  import {
5
5
  __objRest,
6
6
  __spreadValues
@@ -62,18 +62,14 @@ function TabsList(_a) {
62
62
  );
63
63
  }
64
64
  function TabsTrigger(_a) {
65
- var _b = _a, {
66
- className
67
- } = _b, props = __objRest(_b, [
68
- "className"
69
- ]);
65
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
70
66
  return /* @__PURE__ */ jsx(
71
67
  TabsPrimitive.Tab,
72
68
  __spreadValues({
73
69
  className: cn(
74
70
  // Base layout & typography
75
71
  "relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 whitespace-nowrap",
76
- "rounded-none border border-transparent px-1.5 py-1 text-sm font-medium",
72
+ "rounded-none border border-transparent px-1.5 py-1 text-label-medium",
77
73
  "text-muted-foreground transition-all",
78
74
  // Vertical orientation
79
75
  "group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start",
@@ -103,11 +99,7 @@ function TabsTrigger(_a) {
103
99
  );
104
100
  }
105
101
  function TabsContent(_a) {
106
- var _b = _a, {
107
- className
108
- } = _b, props = __objRest(_b, [
109
- "className"
110
- ]);
102
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
111
103
  return /* @__PURE__ */ jsx(
112
104
  TabsPrimitive.Panel,
113
105
  __spreadValues({
@@ -1,25 +1,27 @@
1
1
  import {
2
- Spinner
3
- } from "./chunk-BMFN37JH.mjs";
4
- import {
2
+ FALLBACK_PRIMARY,
3
+ FALLBACK_SECONDARY,
5
4
  FALLBACK_TICK
6
- } from "./chunk-3EQP72AW.mjs";
5
+ } from "./chunk-FZIXGLMV.mjs";
7
6
  import {
8
7
  Empty,
9
8
  EmptyDescription
10
- } from "./chunk-YN5SYTOO.mjs";
9
+ } from "./chunk-NQPOYKAQ.mjs";
11
10
  import {
12
11
  Card,
13
12
  CardContent,
14
13
  CardHeader,
15
14
  CardTitle
16
- } from "./chunk-SLWCCURD.mjs";
15
+ } from "./chunk-CLIN5525.mjs";
16
+ import {
17
+ Spinner
18
+ } from "./chunk-7YAU5CY6.mjs";
17
19
  import {
18
20
  useThemeVars
19
- } from "./chunk-OXQQNQZI.mjs";
21
+ } from "./chunk-FEZKMUCF.mjs";
20
22
  import {
21
23
  cn
22
- } from "./chunk-V7CNWJT3.mjs";
24
+ } from "./chunk-VLQZANBF.mjs";
23
25
 
24
26
  // src/components/ui/transactions-income-expense-bar-chart.tsx
25
27
  import { useMemo } from "react";
@@ -34,9 +36,6 @@ import ChartDataLabels from "chartjs-plugin-datalabels";
34
36
  import { Chart } from "react-chartjs-2";
35
37
  import { jsx, jsxs } from "react/jsx-runtime";
36
38
  ChartJS.register(CategoryScale, LinearScale, BarElement, Tooltip);
37
- var FALLBACK_PRIMARY = "#33FF99";
38
- var FALLBACK_SECONDARY = "#162029";
39
- var VALUE_LABEL_COLOR = "#162029";
40
39
  function formatDollar(value) {
41
40
  return `$${value.toLocaleString(void 0, {
42
41
  minimumFractionDigits: 2,
@@ -55,6 +54,7 @@ function TransactionsIncomeExpenseBarChart({
55
54
  const themeVars = useThemeVars();
56
55
  const brandPrimary = themeVars["--theme-primary"] || FALLBACK_PRIMARY;
57
56
  const brandSecondary = themeVars["--theme-secondary"] || FALLBACK_SECONDARY;
57
+ const fontFamily = themeVars["--font-sans"] || "Figtree, sans-serif";
58
58
  const hasData = totalIncome != null && totalExpense != null;
59
59
  const incomeVal = totalIncome != null ? totalIncome : 0;
60
60
  const expenseVal = Math.abs(totalExpense != null ? totalExpense : 0);
@@ -81,7 +81,7 @@ function TransactionsIncomeExpenseBarChart({
81
81
  offset: 10,
82
82
  clamp: false,
83
83
  font: { weight: "bold", size: 14 },
84
- color: VALUE_LABEL_COLOR,
84
+ color: FALLBACK_SECONDARY,
85
85
  textAlign: "left",
86
86
  // Returns array for multi-line: dollar value on line 1, blank on line 2
87
87
  formatter: (v) => [formatDollar(v), ""]
@@ -98,7 +98,10 @@ function TransactionsIncomeExpenseBarChart({
98
98
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
99
99
  formatter: (_, ctx) => {
100
100
  var _a, _b;
101
- return ["", String((_b = (_a = ctx.chart.data.labels) == null ? void 0 : _a[ctx.dataIndex]) != null ? _b : "")];
101
+ return [
102
+ "",
103
+ String((_b = (_a = ctx.chart.data.labels) == null ? void 0 : _a[ctx.dataIndex]) != null ? _b : "")
104
+ ];
102
105
  }
103
106
  }
104
107
  }
@@ -107,40 +110,43 @@ function TransactionsIncomeExpenseBarChart({
107
110
  ]
108
111
  };
109
112
  }, [hasData, incomeVal, expenseVal, brandPrimary, brandSecondary]);
110
- const options = useMemo(() => ({
111
- indexAxis: "y",
112
- responsive: true,
113
- maintainAspectRatio: false,
114
- animation: { duration: 800, easing: "easeOutQuart" },
115
- layout: {
116
- // Right padding reserves space for the datalabels rendered outside the bar area
117
- padding: { right: 180, left: 0, top: 10, bottom: 10 }
118
- },
119
- plugins: {
120
- legend: { display: false },
121
- tooltip: { enabled: false }
122
- },
123
- scales: {
124
- y: {
125
- display: true,
126
- grid: { display: false },
127
- border: { display: false },
128
- ticks: { display: false }
113
+ const options = useMemo(
114
+ () => ({
115
+ indexAxis: "y",
116
+ responsive: true,
117
+ maintainAspectRatio: false,
118
+ animation: { duration: 800, easing: "easeOutQuart" },
119
+ layout: {
120
+ // Right padding reserves space for the datalabels rendered outside the bar area
121
+ padding: { right: 180, left: 0, top: 10, bottom: 10 }
129
122
  },
130
- x: {
131
- display: true,
132
- suggestedMax: maxVal * 1.3,
133
- grid: { display: false },
134
- border: { display: false },
135
- ticks: { display: false }
123
+ plugins: {
124
+ legend: { display: false },
125
+ tooltip: { enabled: false }
126
+ },
127
+ scales: {
128
+ y: {
129
+ display: true,
130
+ grid: { display: false },
131
+ border: { display: false },
132
+ ticks: { display: false }
133
+ },
134
+ x: {
135
+ display: true,
136
+ suggestedMax: maxVal * 1.3,
137
+ grid: { display: false },
138
+ border: { display: false },
139
+ ticks: { display: false }
140
+ }
136
141
  }
137
- }
138
- }), [maxVal]);
142
+ }),
143
+ [maxVal]
144
+ );
139
145
  return /* @__PURE__ */ jsxs(
140
146
  Card,
141
147
  {
142
148
  className: cn("w-full py-4 sm:py-6 gap-2", className),
143
- style: { maxWidth: width },
149
+ style: { maxWidth: width, fontFamily },
144
150
  children: [
145
151
  /* @__PURE__ */ jsx(CardHeader, { className: "px-3 sm:px-6", children: /* @__PURE__ */ jsx(CardTitle, { className: "text-sm sm:text-base", children: title }) }),
146
152
  /* @__PURE__ */ jsx(CardContent, { className: "px-3 sm:px-6", children: isLoading ? /* @__PURE__ */ jsx(
@@ -2,16 +2,16 @@ import {
2
2
  Popover,
3
3
  PopoverContent,
4
4
  PopoverTrigger
5
- } from "./chunk-MQ72DIBH.mjs";
5
+ } from "./chunk-3GF7OVTP.mjs";
6
6
  import {
7
7
  Calendar
8
- } from "./chunk-3NQGYJEZ.mjs";
8
+ } from "./chunk-P6AM5V7O.mjs";
9
9
  import {
10
10
  Button
11
- } from "./chunk-4AJ5HWHD.mjs";
11
+ } from "./chunk-2I5S2AMY.mjs";
12
12
  import {
13
13
  cn
14
- } from "./chunk-V7CNWJT3.mjs";
14
+ } from "./chunk-VLQZANBF.mjs";
15
15
  import {
16
16
  __spreadProps,
17
17
  __spreadValues