@wealthx/shadcn 0.0.2 → 1.0.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 (188) hide show
  1. package/.turbo/turbo-build.log +135 -11
  2. package/CHANGELOG.md +6 -0
  3. package/CHANGES.md +345 -0
  4. package/dist/chunk-2WZVSBAY.mjs +232 -0
  5. package/dist/chunk-2Y7YJKPE.mjs +47 -0
  6. package/dist/chunk-3U7SD3MS.mjs +55 -0
  7. package/dist/chunk-3VQNJ235.mjs +114 -0
  8. package/dist/chunk-55CEW76V.mjs +35 -0
  9. package/dist/chunk-6AFMNC42.mjs +146 -0
  10. package/dist/chunk-6OJF6XRN.mjs +117 -0
  11. package/dist/chunk-7LDIMXGM.mjs +181 -0
  12. package/dist/chunk-AMJ23O53.mjs +122 -0
  13. package/dist/chunk-BBJBJSXQ.mjs +44 -0
  14. package/dist/chunk-BGP2N52Z.mjs +126 -0
  15. package/dist/chunk-BMFN37JH.mjs +41 -0
  16. package/dist/chunk-CGOKTPXU.mjs +79 -0
  17. package/dist/chunk-CZ3BW5GL.mjs +81 -0
  18. package/dist/chunk-DBHJ5KC3.mjs +55 -0
  19. package/dist/chunk-DDPA2XXS.mjs +97 -0
  20. package/dist/chunk-DS2AMHN2.mjs +30 -0
  21. package/dist/chunk-E3K6O4FZ.mjs +57 -0
  22. package/dist/chunk-FWCSY2DS.mjs +37 -0
  23. package/dist/chunk-GPRJQ24C.mjs +28 -0
  24. package/dist/chunk-HS7TFG7V.mjs +24 -0
  25. package/dist/chunk-HUVTPUV2.mjs +256 -0
  26. package/dist/chunk-IAOOZCUY.mjs +90 -0
  27. package/dist/chunk-JF4PHPD5.mjs +111 -0
  28. package/dist/chunk-JU2RUWHF.mjs +123 -0
  29. package/dist/chunk-KKHTJNMM.mjs +86 -0
  30. package/dist/chunk-MJIEMGRD.mjs +266 -0
  31. package/dist/chunk-MKFL5MNH.mjs +372 -0
  32. package/dist/chunk-MQ72DIBH.mjs +105 -0
  33. package/dist/chunk-NGYG2EA6.mjs +148 -0
  34. package/dist/chunk-NWZ46DJL.mjs +213 -0
  35. package/dist/chunk-OXQQNQZI.mjs +75 -0
  36. package/dist/chunk-PMKODV6M.mjs +161 -0
  37. package/dist/chunk-QOJ2DQD6.mjs +57 -0
  38. package/dist/chunk-RL772EH7.mjs +126 -0
  39. package/dist/chunk-SLWCCURD.mjs +99 -0
  40. package/dist/chunk-V7CNWJT3.mjs +10 -0
  41. package/dist/chunk-VG6UF6UT.mjs +68 -0
  42. package/dist/chunk-VYMHBV6D.mjs +123 -0
  43. package/dist/chunk-VZ2NR7L3.mjs +195 -0
  44. package/dist/chunk-YN5SYTOO.mjs +117 -0
  45. package/dist/chunk-Z3MK2KKZ.mjs +83 -0
  46. package/dist/chunk-ZN2QKLF6.mjs +187 -0
  47. package/dist/chunk-ZZV5JVNW.mjs +34 -0
  48. package/dist/components/ui/accordion.js +142 -0
  49. package/dist/components/ui/accordion.mjs +14 -0
  50. package/dist/components/ui/alert-dialog.js +413 -0
  51. package/dist/components/ui/alert-dialog.mjs +34 -0
  52. package/dist/components/ui/alert.js +134 -0
  53. package/dist/components/ui/alert.mjs +12 -0
  54. package/dist/components/ui/avatar.js +173 -0
  55. package/dist/components/ui/avatar.mjs +18 -0
  56. package/dist/components/ui/badge.js +163 -0
  57. package/dist/components/ui/badge.mjs +11 -0
  58. package/dist/components/ui/button.js +198 -0
  59. package/dist/components/ui/button.mjs +11 -0
  60. package/dist/components/ui/calendar.js +408 -0
  61. package/dist/components/ui/calendar.mjs +12 -0
  62. package/dist/components/ui/card.js +156 -0
  63. package/dist/components/ui/card.mjs +20 -0
  64. package/dist/components/ui/checkbox.js +166 -0
  65. package/dist/components/ui/checkbox.mjs +11 -0
  66. package/dist/components/ui/chip.js +199 -0
  67. package/dist/components/ui/chip.mjs +10 -0
  68. package/dist/components/ui/data-table.js +925 -0
  69. package/dist/components/ui/data-table.mjs +29 -0
  70. package/dist/components/ui/date-picker.js +561 -0
  71. package/dist/components/ui/date-picker.mjs +15 -0
  72. package/dist/components/ui/dialog.js +378 -0
  73. package/dist/components/ui/dialog.mjs +30 -0
  74. package/dist/components/ui/drawer.js +213 -0
  75. package/dist/components/ui/drawer.mjs +28 -0
  76. package/dist/components/ui/dropdown-menu.js +338 -0
  77. package/dist/components/ui/dropdown-menu.mjs +38 -0
  78. package/dist/components/ui/empty.js +173 -0
  79. package/dist/components/ui/empty.mjs +18 -0
  80. package/dist/components/ui/field.js +359 -0
  81. package/dist/components/ui/field.mjs +28 -0
  82. package/dist/components/ui/input-group.js +406 -0
  83. package/dist/components/ui/input-group.mjs +22 -0
  84. package/dist/components/ui/input-otp.js +149 -0
  85. package/dist/components/ui/input-otp.mjs +14 -0
  86. package/dist/components/ui/input.js +81 -0
  87. package/dist/components/ui/input.mjs +8 -0
  88. package/dist/components/ui/label.js +85 -0
  89. package/dist/components/ui/label.mjs +8 -0
  90. package/dist/components/ui/pagination.js +333 -0
  91. package/dist/components/ui/pagination.mjs +22 -0
  92. package/dist/components/ui/popover.js +167 -0
  93. package/dist/components/ui/popover.mjs +22 -0
  94. package/dist/components/ui/progress.js +97 -0
  95. package/dist/components/ui/progress.mjs +8 -0
  96. package/dist/components/ui/radio-group.js +178 -0
  97. package/dist/components/ui/radio-group.mjs +12 -0
  98. package/dist/components/ui/select.js +262 -0
  99. package/dist/components/ui/select.mjs +28 -0
  100. package/dist/components/ui/separator.js +86 -0
  101. package/dist/components/ui/separator.mjs +8 -0
  102. package/dist/components/ui/sheet.js +227 -0
  103. package/dist/components/ui/sheet.mjs +26 -0
  104. package/dist/components/ui/skeleton.js +75 -0
  105. package/dist/components/ui/skeleton.mjs +8 -0
  106. package/dist/components/ui/sonner.js +86 -0
  107. package/dist/components/ui/sonner.mjs +7 -0
  108. package/dist/components/ui/spinner.js +93 -0
  109. package/dist/components/ui/spinner.mjs +10 -0
  110. package/dist/components/ui/switch.js +178 -0
  111. package/dist/components/ui/switch.mjs +11 -0
  112. package/dist/components/ui/table.js +184 -0
  113. package/dist/components/ui/table.mjs +22 -0
  114. package/dist/components/ui/tabs.js +181 -0
  115. package/dist/components/ui/tabs.mjs +16 -0
  116. package/dist/components/ui/textarea.js +79 -0
  117. package/dist/components/ui/textarea.mjs +8 -0
  118. package/dist/components/ui/toggle-group.js +184 -0
  119. package/dist/components/ui/toggle-group.mjs +12 -0
  120. package/dist/components/ui/toggle.js +108 -0
  121. package/dist/components/ui/toggle.mjs +11 -0
  122. package/dist/components/ui/tooltip.js +140 -0
  123. package/dist/components/ui/tooltip.mjs +16 -0
  124. package/dist/index.js +4312 -90
  125. package/dist/index.mjs +459 -158
  126. package/dist/lib/colors.js +84 -0
  127. package/dist/lib/colors.mjs +13 -0
  128. package/dist/lib/theme-provider.js +150 -0
  129. package/dist/lib/theme-provider.mjs +13 -0
  130. package/dist/lib/typography.js +157 -0
  131. package/dist/lib/typography.mjs +25 -0
  132. package/dist/lib/utils.js +34 -0
  133. package/dist/lib/utils.mjs +7 -0
  134. package/dist/styles.css +1 -1
  135. package/package.json +228 -11
  136. package/scripts/build-css.ts +15 -9
  137. package/src/components/index.tsx +443 -0
  138. package/src/components/ui/accordion.tsx +99 -0
  139. package/src/components/ui/alert-dialog.tsx +239 -0
  140. package/src/components/ui/alert.tsx +81 -0
  141. package/src/components/ui/avatar.tsx +130 -0
  142. package/src/components/ui/badge.tsx +57 -0
  143. package/src/components/ui/button.tsx +69 -37
  144. package/src/components/ui/calendar.tsx +252 -0
  145. package/src/components/ui/card.tsx +106 -0
  146. package/src/components/ui/checkbox.tsx +111 -0
  147. package/src/components/ui/chip.tsx +65 -0
  148. package/src/components/ui/data-table.tsx +490 -0
  149. package/src/components/ui/date-picker.tsx +133 -0
  150. package/src/components/ui/dialog.tsx +195 -0
  151. package/src/components/ui/drawer.tsx +169 -0
  152. package/src/components/ui/dropdown-menu.tsx +315 -0
  153. package/src/components/ui/empty.tsx +128 -0
  154. package/src/components/ui/field.tsx +273 -0
  155. package/src/components/ui/input-group.tsx +190 -0
  156. package/src/components/ui/input-otp.tsx +90 -0
  157. package/src/components/ui/input.tsx +28 -0
  158. package/src/components/ui/label.tsx +24 -0
  159. package/src/components/ui/pagination.tsx +148 -0
  160. package/src/components/ui/popover.tsx +112 -0
  161. package/src/components/ui/progress.tsx +40 -0
  162. package/src/components/ui/radio-group.tsx +129 -0
  163. package/src/components/ui/select.tsx +201 -0
  164. package/src/components/ui/separator.tsx +26 -0
  165. package/src/components/ui/sheet.tsx +182 -0
  166. package/src/components/ui/skeleton.tsx +22 -0
  167. package/src/components/ui/sonner.tsx +48 -0
  168. package/src/components/ui/spinner.tsx +41 -0
  169. package/src/components/ui/switch.tsx +126 -0
  170. package/src/components/ui/table.tsx +143 -0
  171. package/src/components/ui/tabs.tsx +119 -0
  172. package/src/components/ui/textarea.tsx +28 -0
  173. package/src/components/ui/toggle-group.tsx +94 -0
  174. package/src/components/ui/toggle.tsx +59 -0
  175. package/src/components/ui/tooltip.tsx +80 -0
  176. package/src/index.ts +15 -3
  177. package/src/lib/colors.ts +74 -0
  178. package/src/lib/slot.tsx +68 -0
  179. package/src/lib/theme-provider.tsx +134 -0
  180. package/src/lib/typography.ts +153 -0
  181. package/src/lib/utils.ts +1 -1
  182. package/src/styles/globals.css +377 -107
  183. package/src/styles/styles-css.ts +1 -1
  184. package/tsup.config.ts +48 -2
  185. package/dist/index.d.mts +0 -27
  186. package/dist/index.d.ts +0 -27
  187. package/src/provider/ShadcnProvider.tsx +0 -89
  188. package/src/provider/index.ts +0 -2
@@ -0,0 +1,105 @@
1
+ import {
2
+ useThemeVars
3
+ } from "./chunk-OXQQNQZI.mjs";
4
+ import {
5
+ cn
6
+ } from "./chunk-V7CNWJT3.mjs";
7
+ import {
8
+ __objRest,
9
+ __spreadValues
10
+ } from "./chunk-FWCSY2DS.mjs";
11
+
12
+ // src/components/ui/popover.tsx
13
+ import { Popover as PopoverPrimitive } from "@base-ui/react/popover";
14
+ import { jsx } from "react/jsx-runtime";
15
+ function Popover(_a) {
16
+ var props = __objRest(_a, []);
17
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Root, __spreadValues({ "data-slot": "popover" }, props));
18
+ }
19
+ function PopoverTrigger(_a) {
20
+ var props = __objRest(_a, []);
21
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Trigger, __spreadValues({ "data-slot": "popover-trigger" }, props));
22
+ }
23
+ function PopoverContent(_a) {
24
+ var _b = _a, {
25
+ className,
26
+ align = "center",
27
+ sideOffset = 4,
28
+ style
29
+ } = _b, props = __objRest(_b, [
30
+ "className",
31
+ "align",
32
+ "sideOffset",
33
+ "style"
34
+ ]);
35
+ const themeVars = useThemeVars();
36
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
37
+ PopoverPrimitive.Positioner,
38
+ {
39
+ align,
40
+ sideOffset,
41
+ children: /* @__PURE__ */ jsx(
42
+ PopoverPrimitive.Popup,
43
+ __spreadValues({
44
+ className: cn(
45
+ "z-50 w-72 border border-border bg-popover p-4 text-popover-foreground shadow-md outline-hidden data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-ending-style:animate-out data-ending-style:fade-out-0 data-ending-style:zoom-out-95 data-ending-style:fill-mode-forwards data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95",
46
+ className
47
+ ),
48
+ "data-slot": "popover-content",
49
+ style: __spreadValues(__spreadValues({}, themeVars), style)
50
+ }, props)
51
+ )
52
+ }
53
+ ) });
54
+ }
55
+ function PopoverAnchor(_a) {
56
+ var props = __objRest(_a, []);
57
+ return /* @__PURE__ */ jsx("div", __spreadValues({ "data-slot": "popover-anchor" }, props));
58
+ }
59
+ function PopoverHeader(_a) {
60
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
61
+ return /* @__PURE__ */ jsx(
62
+ "div",
63
+ __spreadValues({
64
+ className: cn("flex flex-col gap-1 text-sm", className),
65
+ "data-slot": "popover-header"
66
+ }, props)
67
+ );
68
+ }
69
+ function PopoverTitle(_a) {
70
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
71
+ return (
72
+ // eslint-disable-next-line jsx-a11y/heading-has-content -- children passed via props spread
73
+ /* @__PURE__ */ jsx(
74
+ "h2",
75
+ __spreadValues({
76
+ className: cn("font-medium", className),
77
+ "data-slot": "popover-title"
78
+ }, props)
79
+ )
80
+ );
81
+ }
82
+ function PopoverDescription(_a) {
83
+ var _b = _a, {
84
+ className
85
+ } = _b, props = __objRest(_b, [
86
+ "className"
87
+ ]);
88
+ return /* @__PURE__ */ jsx(
89
+ "p",
90
+ __spreadValues({
91
+ className: cn("text-muted-foreground", className),
92
+ "data-slot": "popover-description"
93
+ }, props)
94
+ );
95
+ }
96
+
97
+ export {
98
+ Popover,
99
+ PopoverTrigger,
100
+ PopoverContent,
101
+ PopoverAnchor,
102
+ PopoverHeader,
103
+ PopoverTitle,
104
+ PopoverDescription
105
+ };
@@ -0,0 +1,148 @@
1
+ import {
2
+ buttonVariants
3
+ } from "./chunk-IAOOZCUY.mjs";
4
+ import {
5
+ cn
6
+ } from "./chunk-V7CNWJT3.mjs";
7
+ import {
8
+ __objRest,
9
+ __spreadProps,
10
+ __spreadValues
11
+ } from "./chunk-FWCSY2DS.mjs";
12
+
13
+ // src/components/ui/pagination.tsx
14
+ import {
15
+ ChevronLeftIcon,
16
+ ChevronRightIcon,
17
+ MoreHorizontalIcon
18
+ } from "lucide-react";
19
+ import { jsx, jsxs } from "react/jsx-runtime";
20
+ function Pagination(_a) {
21
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
22
+ return /* @__PURE__ */ jsx(
23
+ "nav",
24
+ __spreadValues({
25
+ "aria-label": "pagination",
26
+ className: cn("mx-auto flex w-full justify-center", className),
27
+ "data-slot": "pagination",
28
+ role: "navigation"
29
+ }, props)
30
+ );
31
+ }
32
+ function PaginationContent(_a) {
33
+ var _b = _a, {
34
+ className
35
+ } = _b, props = __objRest(_b, [
36
+ "className"
37
+ ]);
38
+ return /* @__PURE__ */ jsx(
39
+ "ul",
40
+ __spreadValues({
41
+ className: cn("flex flex-row items-center gap-1", className),
42
+ "data-slot": "pagination-content"
43
+ }, props)
44
+ );
45
+ }
46
+ function PaginationItem(_a) {
47
+ var props = __objRest(_a, []);
48
+ return /* @__PURE__ */ jsx("li", __spreadValues({ "data-slot": "pagination-item" }, props));
49
+ }
50
+ function PaginationLink(_a) {
51
+ var _b = _a, {
52
+ className,
53
+ isActive,
54
+ size = "icon"
55
+ } = _b, props = __objRest(_b, [
56
+ "className",
57
+ "isActive",
58
+ "size"
59
+ ]);
60
+ return (
61
+ // eslint-disable-next-line jsx-a11y/anchor-has-content -- children passed via props spread
62
+ /* @__PURE__ */ jsx(
63
+ "a",
64
+ __spreadValues({
65
+ "aria-current": isActive ? "page" : void 0,
66
+ className: cn(
67
+ buttonVariants({
68
+ variant: isActive ? "outline" : "ghost",
69
+ size
70
+ }),
71
+ className
72
+ ),
73
+ "data-active": isActive,
74
+ "data-slot": "pagination-link"
75
+ }, props)
76
+ )
77
+ );
78
+ }
79
+ function PaginationPrevious(_a) {
80
+ var _b = _a, {
81
+ className
82
+ } = _b, props = __objRest(_b, [
83
+ "className"
84
+ ]);
85
+ return /* @__PURE__ */ jsxs(
86
+ PaginationLink,
87
+ __spreadProps(__spreadValues({
88
+ "aria-label": "Go to previous page",
89
+ className: cn("gap-1 px-2.5 sm:pl-2.5", className),
90
+ size: "default"
91
+ }, props), {
92
+ children: [
93
+ /* @__PURE__ */ jsx(ChevronLeftIcon, {}),
94
+ /* @__PURE__ */ jsx("span", { className: "hidden sm:block", children: "Previous" })
95
+ ]
96
+ })
97
+ );
98
+ }
99
+ function PaginationNext(_a) {
100
+ var _b = _a, {
101
+ className
102
+ } = _b, props = __objRest(_b, [
103
+ "className"
104
+ ]);
105
+ return /* @__PURE__ */ jsxs(
106
+ PaginationLink,
107
+ __spreadProps(__spreadValues({
108
+ "aria-label": "Go to next page",
109
+ className: cn("gap-1 px-2.5 sm:pr-2.5", className),
110
+ size: "default"
111
+ }, props), {
112
+ children: [
113
+ /* @__PURE__ */ jsx("span", { className: "hidden sm:block", children: "Next" }),
114
+ /* @__PURE__ */ jsx(ChevronRightIcon, {})
115
+ ]
116
+ })
117
+ );
118
+ }
119
+ function PaginationEllipsis(_a) {
120
+ var _b = _a, {
121
+ className
122
+ } = _b, props = __objRest(_b, [
123
+ "className"
124
+ ]);
125
+ return /* @__PURE__ */ jsxs(
126
+ "span",
127
+ __spreadProps(__spreadValues({
128
+ "aria-hidden": true,
129
+ className: cn("flex size-9 items-center justify-center", className),
130
+ "data-slot": "pagination-ellipsis"
131
+ }, props), {
132
+ children: [
133
+ /* @__PURE__ */ jsx(MoreHorizontalIcon, { className: "size-4" }),
134
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "More pages" })
135
+ ]
136
+ })
137
+ );
138
+ }
139
+
140
+ export {
141
+ Pagination,
142
+ PaginationContent,
143
+ PaginationItem,
144
+ PaginationLink,
145
+ PaginationPrevious,
146
+ PaginationNext,
147
+ PaginationEllipsis
148
+ };
@@ -0,0 +1,213 @@
1
+ import {
2
+ buttonVariants
3
+ } from "./chunk-IAOOZCUY.mjs";
4
+ import {
5
+ useThemeVars
6
+ } from "./chunk-OXQQNQZI.mjs";
7
+ import {
8
+ cn
9
+ } from "./chunk-V7CNWJT3.mjs";
10
+ import {
11
+ __objRest,
12
+ __spreadValues
13
+ } from "./chunk-FWCSY2DS.mjs";
14
+
15
+ // src/components/ui/alert-dialog.tsx
16
+ import { AlertDialog as AlertDialogPrimitive } from "@base-ui/react/alert-dialog";
17
+ import { jsx, jsxs } from "react/jsx-runtime";
18
+ function AlertDialog(_a) {
19
+ var props = __objRest(_a, []);
20
+ return /* @__PURE__ */ jsx(AlertDialogPrimitive.Root, __spreadValues({ "data-slot": "alert-dialog" }, props));
21
+ }
22
+ function AlertDialogTrigger(_a) {
23
+ var props = __objRest(_a, []);
24
+ return /* @__PURE__ */ jsx(AlertDialogPrimitive.Trigger, __spreadValues({ "data-slot": "alert-dialog-trigger" }, props));
25
+ }
26
+ function AlertDialogPortal(_a) {
27
+ var props = __objRest(_a, []);
28
+ return /* @__PURE__ */ jsx(AlertDialogPrimitive.Portal, __spreadValues({ "data-slot": "alert-dialog-portal" }, props));
29
+ }
30
+ function AlertDialogOverlay(_a) {
31
+ var _b = _a, {
32
+ className
33
+ } = _b, props = __objRest(_b, [
34
+ "className"
35
+ ]);
36
+ return /* @__PURE__ */ jsx(
37
+ AlertDialogPrimitive.Backdrop,
38
+ __spreadValues({
39
+ className: cn(
40
+ // WealthX: foreground/50 scrim — matches Figma foreground token at 50% opacity
41
+ "fixed inset-0 z-50 bg-foreground/50 data-ending-style:animate-out data-ending-style:fade-out-0 data-ending-style:fill-mode-forwards data-open:animate-in data-open:fade-in-0",
42
+ className
43
+ ),
44
+ "data-slot": "alert-dialog-overlay"
45
+ }, props)
46
+ );
47
+ }
48
+ function AlertDialogContent(_a) {
49
+ var _b = _a, {
50
+ className,
51
+ size = "default",
52
+ style
53
+ } = _b, props = __objRest(_b, [
54
+ "className",
55
+ "size",
56
+ "style"
57
+ ]);
58
+ const themeVars = useThemeVars();
59
+ return /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [
60
+ /* @__PURE__ */ jsx(AlertDialogOverlay, {}),
61
+ /* @__PURE__ */ jsx(
62
+ AlertDialogPrimitive.Popup,
63
+ __spreadValues({
64
+ className: cn(
65
+ // WealthX: removed rounded-lg (sharp corners), shadow-lg (flat panels)
66
+ "group/alert-dialog-content fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 duration-200 data-[size=sm]:max-w-xs data-ending-style:animate-out data-ending-style:fade-out-0 data-ending-style:zoom-out-95 data-ending-style:fill-mode-forwards data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[size=default]:sm:max-w-lg",
67
+ className
68
+ ),
69
+ "data-size": size,
70
+ "data-slot": "alert-dialog-content",
71
+ style: __spreadValues(__spreadValues({}, themeVars), style)
72
+ }, props)
73
+ )
74
+ ] });
75
+ }
76
+ function AlertDialogHeader(_a) {
77
+ var _b = _a, {
78
+ className
79
+ } = _b, props = __objRest(_b, [
80
+ "className"
81
+ ]);
82
+ return /* @__PURE__ */ jsx(
83
+ "div",
84
+ __spreadValues({
85
+ className: cn(
86
+ "grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]",
87
+ className
88
+ ),
89
+ "data-slot": "alert-dialog-header"
90
+ }, props)
91
+ );
92
+ }
93
+ function AlertDialogFooter(_a) {
94
+ var _b = _a, {
95
+ className
96
+ } = _b, props = __objRest(_b, [
97
+ "className"
98
+ ]);
99
+ return /* @__PURE__ */ jsx(
100
+ "div",
101
+ __spreadValues({
102
+ className: cn(
103
+ // WealthX: always row, right-aligned, separator above footer (matches Figma)
104
+ "flex flex-row justify-end gap-2 border-t border-border pt-4",
105
+ className
106
+ ),
107
+ "data-slot": "alert-dialog-footer"
108
+ }, props)
109
+ );
110
+ }
111
+ function AlertDialogTitle(_a) {
112
+ var _b = _a, {
113
+ className
114
+ } = _b, props = __objRest(_b, [
115
+ "className"
116
+ ]);
117
+ return /* @__PURE__ */ jsx(
118
+ AlertDialogPrimitive.Title,
119
+ __spreadValues({
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",
122
+ className
123
+ ),
124
+ "data-slot": "alert-dialog-title"
125
+ }, props)
126
+ );
127
+ }
128
+ function AlertDialogDescription(_a) {
129
+ var _b = _a, {
130
+ className
131
+ } = _b, props = __objRest(_b, [
132
+ "className"
133
+ ]);
134
+ return /* @__PURE__ */ jsx(
135
+ AlertDialogPrimitive.Description,
136
+ __spreadValues({
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",
139
+ className
140
+ ),
141
+ "data-slot": "alert-dialog-description"
142
+ }, props)
143
+ );
144
+ }
145
+ function AlertDialogMedia(_a) {
146
+ var _b = _a, {
147
+ className
148
+ } = _b, props = __objRest(_b, [
149
+ "className"
150
+ ]);
151
+ return /* @__PURE__ */ jsx(
152
+ "div",
153
+ __spreadValues({
154
+ className: cn(
155
+ // WealthX: borderless icon slot — size-10 default, size-8 sm
156
+ "mb-2 inline-flex size-10 items-center justify-center group-data-[size=sm]/alert-dialog-content:size-8 sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-5",
157
+ className
158
+ ),
159
+ "data-slot": "alert-dialog-media"
160
+ }, props)
161
+ );
162
+ }
163
+ function AlertDialogAction(_a) {
164
+ var _b = _a, {
165
+ className,
166
+ variant = "default",
167
+ size = "default"
168
+ } = _b, props = __objRest(_b, [
169
+ "className",
170
+ "variant",
171
+ "size"
172
+ ]);
173
+ return /* @__PURE__ */ jsx(
174
+ AlertDialogPrimitive.Close,
175
+ __spreadValues({
176
+ className: cn(buttonVariants({ variant, size }), className),
177
+ "data-slot": "alert-dialog-action"
178
+ }, props)
179
+ );
180
+ }
181
+ function AlertDialogCancel(_a) {
182
+ var _b = _a, {
183
+ className,
184
+ variant = "outline",
185
+ size = "default"
186
+ } = _b, props = __objRest(_b, [
187
+ "className",
188
+ "variant",
189
+ "size"
190
+ ]);
191
+ return /* @__PURE__ */ jsx(
192
+ AlertDialogPrimitive.Close,
193
+ __spreadValues({
194
+ className: cn(buttonVariants({ variant, size }), className),
195
+ "data-slot": "alert-dialog-cancel"
196
+ }, props)
197
+ );
198
+ }
199
+
200
+ export {
201
+ AlertDialog,
202
+ AlertDialogTrigger,
203
+ AlertDialogPortal,
204
+ AlertDialogOverlay,
205
+ AlertDialogContent,
206
+ AlertDialogHeader,
207
+ AlertDialogFooter,
208
+ AlertDialogTitle,
209
+ AlertDialogDescription,
210
+ AlertDialogMedia,
211
+ AlertDialogAction,
212
+ AlertDialogCancel
213
+ };
@@ -0,0 +1,75 @@
1
+ import {
2
+ getContrastText,
3
+ hexToOklch
4
+ } from "./chunk-QOJ2DQD6.mjs";
5
+
6
+ // src/lib/theme-provider.tsx
7
+ import { createContext, useContext, useMemo } from "react";
8
+ import { jsx } from "react/jsx-runtime";
9
+ var ThemeVarsContext = createContext({});
10
+ function useThemeVars() {
11
+ return useContext(ThemeVarsContext);
12
+ }
13
+ var DEFAULT_PRIMARY = "#33FF99";
14
+ var DEFAULT_SECONDARY = "#162029";
15
+ var DEFAULT_FONT = '"Figtree", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"';
16
+ function ThemeProvider({
17
+ children,
18
+ primary = DEFAULT_PRIMARY,
19
+ secondary = DEFAULT_SECONDARY,
20
+ fontFamily = DEFAULT_FONT,
21
+ injectCssVariables = true
22
+ }) {
23
+ const vars = useMemo(() => {
24
+ if (!injectCssVariables) return {};
25
+ const primaryOklch = hexToOklch(primary);
26
+ const primaryFgOklch = hexToOklch(getContrastText(primary));
27
+ const secondaryOklch = hexToOklch(secondary);
28
+ const secondaryFgOklch = hexToOklch(getContrastText(secondary));
29
+ return {
30
+ // Brand primary — used by buttons, links, focus rings, active states
31
+ "--primary": primaryOklch,
32
+ "--primary-foreground": primaryFgOklch,
33
+ "--ring": primaryOklch,
34
+ // Sidebar uses primary for active navigation
35
+ "--sidebar-primary": primaryOklch,
36
+ "--sidebar-primary-foreground": primaryFgOklch,
37
+ // Brand secondary — tenant navy used by Secondary button variant
38
+ // NOTE: --secondary is reserved for paper/surface (#F5F8FA), so we use --brand-secondary
39
+ "--brand-secondary": secondaryOklch,
40
+ "--brand-secondary-foreground": secondaryFgOklch,
41
+ // Font family — applies to all components + typography utility classes
42
+ "--font-sans": fontFamily,
43
+ "--font-family-sans": fontFamily,
44
+ // Legacy compat (used by existing WealthX apps)
45
+ "--theme-primary": primary,
46
+ "--theme-secondary": secondary
47
+ };
48
+ }, [primary, secondary, fontFamily, injectCssVariables]);
49
+ return /* @__PURE__ */ jsx(ThemeVarsContext.Provider, { value: vars, children: /* @__PURE__ */ jsx("div", { "data-wealthx-theme": true, style: vars, children }) });
50
+ }
51
+ function buildCssVariables(options) {
52
+ var _a, _b, _c;
53
+ const primary = (_a = options.primary) != null ? _a : DEFAULT_PRIMARY;
54
+ const secondary = (_b = options.secondary) != null ? _b : DEFAULT_SECONDARY;
55
+ const fontFamily = (_c = options.fontFamily) != null ? _c : DEFAULT_FONT;
56
+ return {
57
+ "--primary": hexToOklch(primary),
58
+ "--primary-foreground": hexToOklch(getContrastText(primary)),
59
+ "--ring": hexToOklch(primary),
60
+ "--sidebar-primary": hexToOklch(primary),
61
+ "--sidebar-primary-foreground": hexToOklch(getContrastText(primary)),
62
+ "--brand-secondary": hexToOklch(secondary),
63
+ "--brand-secondary-foreground": hexToOklch(getContrastText(secondary)),
64
+ "--font-sans": fontFamily,
65
+ "--font-family-sans": fontFamily,
66
+ "--theme-primary": primary,
67
+ "--theme-secondary": secondary
68
+ };
69
+ }
70
+
71
+ export {
72
+ useThemeVars,
73
+ ThemeProvider,
74
+ buildCssVariables
75
+ };
@@ -0,0 +1,161 @@
1
+ import {
2
+ useThemeVars
3
+ } from "./chunk-OXQQNQZI.mjs";
4
+ import {
5
+ cn
6
+ } from "./chunk-V7CNWJT3.mjs";
7
+ import {
8
+ __objRest,
9
+ __spreadProps,
10
+ __spreadValues
11
+ } from "./chunk-FWCSY2DS.mjs";
12
+
13
+ // src/components/ui/sheet.tsx
14
+ import { XIcon } from "lucide-react";
15
+ import { Dialog as SheetPrimitive } from "@base-ui/react/dialog";
16
+ import { jsx, jsxs } from "react/jsx-runtime";
17
+ var SIDE_CLASSES = {
18
+ right: "inset-y-0 right-0 h-full w-3/4 border-l data-ending-style:slide-out-to-right data-open:slide-in-from-right sm:max-w-sm",
19
+ left: "inset-y-0 left-0 h-full w-3/4 border-r data-ending-style:slide-out-to-left data-open:slide-in-from-left sm:max-w-sm",
20
+ top: "inset-x-0 top-0 h-auto border-b data-ending-style:slide-out-to-top data-open:slide-in-from-top",
21
+ bottom: "inset-x-0 bottom-0 h-auto border-t data-ending-style:slide-out-to-bottom data-open:slide-in-from-bottom"
22
+ };
23
+ function Sheet(_a) {
24
+ var props = __objRest(_a, []);
25
+ return /* @__PURE__ */ jsx(SheetPrimitive.Root, __spreadValues({ "data-slot": "sheet" }, props));
26
+ }
27
+ function SheetTrigger(_a) {
28
+ var props = __objRest(_a, []);
29
+ return /* @__PURE__ */ jsx(SheetPrimitive.Trigger, __spreadValues({ "data-slot": "sheet-trigger" }, props));
30
+ }
31
+ function SheetClose(_a) {
32
+ var props = __objRest(_a, []);
33
+ return /* @__PURE__ */ jsx(SheetPrimitive.Close, __spreadValues({ "data-slot": "sheet-close" }, props));
34
+ }
35
+ function SheetPortal(_a) {
36
+ var props = __objRest(_a, []);
37
+ return /* @__PURE__ */ jsx(SheetPrimitive.Portal, __spreadValues({ "data-slot": "sheet-portal" }, props));
38
+ }
39
+ function SheetOverlay(_a) {
40
+ var _b = _a, {
41
+ className
42
+ } = _b, props = __objRest(_b, [
43
+ "className"
44
+ ]);
45
+ return /* @__PURE__ */ jsx(
46
+ SheetPrimitive.Backdrop,
47
+ __spreadValues({
48
+ className: cn(
49
+ "fixed inset-0 z-50 bg-foreground/50 data-ending-style:animate-out data-ending-style:fade-out-0 data-ending-style:fill-mode-forwards data-open:animate-in data-open:fade-in-0",
50
+ className
51
+ ),
52
+ "data-slot": "sheet-overlay"
53
+ }, props)
54
+ );
55
+ }
56
+ function SheetContent(_a) {
57
+ var _b = _a, {
58
+ className,
59
+ children,
60
+ side = "right",
61
+ showCloseButton = true,
62
+ style
63
+ } = _b, props = __objRest(_b, [
64
+ "className",
65
+ "children",
66
+ "side",
67
+ "showCloseButton",
68
+ "style"
69
+ ]);
70
+ const themeVars = useThemeVars();
71
+ return /* @__PURE__ */ jsxs(SheetPortal, { children: [
72
+ /* @__PURE__ */ jsx(SheetOverlay, {}),
73
+ /* @__PURE__ */ jsxs(
74
+ SheetPrimitive.Popup,
75
+ __spreadProps(__spreadValues({
76
+ className: cn(
77
+ "fixed z-50 flex flex-col gap-4 bg-background transition ease-in-out data-ending-style:animate-out data-ending-style:duration-300 data-ending-style:fill-mode-forwards data-open:animate-in data-open:duration-500",
78
+ SIDE_CLASSES[side],
79
+ className
80
+ ),
81
+ "data-slot": "sheet-content",
82
+ style: __spreadValues(__spreadValues({}, themeVars), style)
83
+ }, props), {
84
+ children: [
85
+ children,
86
+ showCloseButton ? /* @__PURE__ */ jsxs(
87
+ SheetPrimitive.Close,
88
+ {
89
+ className: "absolute top-4 right-4 transition-colors hover:bg-foreground/5 focus:outline-hidden focus:ring-2 focus:ring-border focus:ring-offset-0 disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
90
+ "data-slot": "sheet-icon-close",
91
+ children: [
92
+ /* @__PURE__ */ jsx(XIcon, {}),
93
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
94
+ ]
95
+ }
96
+ ) : null
97
+ ]
98
+ })
99
+ )
100
+ ] });
101
+ }
102
+ function SheetHeader(_a) {
103
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
104
+ return /* @__PURE__ */ jsx(
105
+ "div",
106
+ __spreadValues({
107
+ className: cn("flex flex-col gap-1.5 p-4", className),
108
+ "data-slot": "sheet-header"
109
+ }, props)
110
+ );
111
+ }
112
+ function SheetFooter(_a) {
113
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
114
+ return /* @__PURE__ */ jsx(
115
+ "div",
116
+ __spreadValues({
117
+ className: cn("mt-auto flex flex-col gap-2 p-4", className),
118
+ "data-slot": "sheet-footer"
119
+ }, props)
120
+ );
121
+ }
122
+ function SheetTitle(_a) {
123
+ var _b = _a, {
124
+ className
125
+ } = _b, props = __objRest(_b, [
126
+ "className"
127
+ ]);
128
+ return /* @__PURE__ */ jsx(
129
+ SheetPrimitive.Title,
130
+ __spreadValues({
131
+ className: cn("text-lg font-semibold text-foreground", className),
132
+ "data-slot": "sheet-title"
133
+ }, props)
134
+ );
135
+ }
136
+ function SheetDescription(_a) {
137
+ var _b = _a, {
138
+ className
139
+ } = _b, props = __objRest(_b, [
140
+ "className"
141
+ ]);
142
+ return /* @__PURE__ */ jsx(
143
+ SheetPrimitive.Description,
144
+ __spreadValues({
145
+ className: cn("text-sm text-muted-foreground", className),
146
+ "data-slot": "sheet-description"
147
+ }, props)
148
+ );
149
+ }
150
+
151
+ export {
152
+ Sheet,
153
+ SheetTrigger,
154
+ SheetClose,
155
+ SheetPortal,
156
+ SheetContent,
157
+ SheetHeader,
158
+ SheetFooter,
159
+ SheetTitle,
160
+ SheetDescription
161
+ };