@wealthx/shadcn 0.0.2 → 1.0.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 (189) hide show
  1. package/.turbo/turbo-build.log +135 -11
  2. package/CHANGELOG.md +12 -0
  3. package/CHANGES.md +345 -0
  4. package/README.md +128 -0
  5. package/dist/chunk-2WZVSBAY.mjs +232 -0
  6. package/dist/chunk-2Y7YJKPE.mjs +47 -0
  7. package/dist/chunk-3U7SD3MS.mjs +55 -0
  8. package/dist/chunk-3VQNJ235.mjs +114 -0
  9. package/dist/chunk-55CEW76V.mjs +35 -0
  10. package/dist/chunk-6AFMNC42.mjs +146 -0
  11. package/dist/chunk-6OJF6XRN.mjs +117 -0
  12. package/dist/chunk-7LDIMXGM.mjs +181 -0
  13. package/dist/chunk-AMJ23O53.mjs +122 -0
  14. package/dist/chunk-BBJBJSXQ.mjs +44 -0
  15. package/dist/chunk-BGP2N52Z.mjs +126 -0
  16. package/dist/chunk-BMFN37JH.mjs +41 -0
  17. package/dist/chunk-CGOKTPXU.mjs +79 -0
  18. package/dist/chunk-CZ3BW5GL.mjs +81 -0
  19. package/dist/chunk-DBHJ5KC3.mjs +55 -0
  20. package/dist/chunk-DDPA2XXS.mjs +97 -0
  21. package/dist/chunk-DS2AMHN2.mjs +30 -0
  22. package/dist/chunk-E3K6O4FZ.mjs +57 -0
  23. package/dist/chunk-FWCSY2DS.mjs +37 -0
  24. package/dist/chunk-GPRJQ24C.mjs +28 -0
  25. package/dist/chunk-HS7TFG7V.mjs +24 -0
  26. package/dist/chunk-HUVTPUV2.mjs +256 -0
  27. package/dist/chunk-IAOOZCUY.mjs +90 -0
  28. package/dist/chunk-JF4PHPD5.mjs +111 -0
  29. package/dist/chunk-JU2RUWHF.mjs +123 -0
  30. package/dist/chunk-KKHTJNMM.mjs +86 -0
  31. package/dist/chunk-MJIEMGRD.mjs +266 -0
  32. package/dist/chunk-MKFL5MNH.mjs +372 -0
  33. package/dist/chunk-MQ72DIBH.mjs +105 -0
  34. package/dist/chunk-NGYG2EA6.mjs +148 -0
  35. package/dist/chunk-NWZ46DJL.mjs +213 -0
  36. package/dist/chunk-OXQQNQZI.mjs +75 -0
  37. package/dist/chunk-PMKODV6M.mjs +161 -0
  38. package/dist/chunk-QOJ2DQD6.mjs +57 -0
  39. package/dist/chunk-RL772EH7.mjs +126 -0
  40. package/dist/chunk-SLWCCURD.mjs +99 -0
  41. package/dist/chunk-V7CNWJT3.mjs +10 -0
  42. package/dist/chunk-VG6UF6UT.mjs +68 -0
  43. package/dist/chunk-VYMHBV6D.mjs +123 -0
  44. package/dist/chunk-VZ2NR7L3.mjs +195 -0
  45. package/dist/chunk-YN5SYTOO.mjs +117 -0
  46. package/dist/chunk-Z3MK2KKZ.mjs +83 -0
  47. package/dist/chunk-ZN2QKLF6.mjs +187 -0
  48. package/dist/chunk-ZZV5JVNW.mjs +34 -0
  49. package/dist/components/ui/accordion.js +142 -0
  50. package/dist/components/ui/accordion.mjs +14 -0
  51. package/dist/components/ui/alert-dialog.js +413 -0
  52. package/dist/components/ui/alert-dialog.mjs +34 -0
  53. package/dist/components/ui/alert.js +134 -0
  54. package/dist/components/ui/alert.mjs +12 -0
  55. package/dist/components/ui/avatar.js +173 -0
  56. package/dist/components/ui/avatar.mjs +18 -0
  57. package/dist/components/ui/badge.js +163 -0
  58. package/dist/components/ui/badge.mjs +11 -0
  59. package/dist/components/ui/button.js +198 -0
  60. package/dist/components/ui/button.mjs +11 -0
  61. package/dist/components/ui/calendar.js +408 -0
  62. package/dist/components/ui/calendar.mjs +12 -0
  63. package/dist/components/ui/card.js +156 -0
  64. package/dist/components/ui/card.mjs +20 -0
  65. package/dist/components/ui/checkbox.js +166 -0
  66. package/dist/components/ui/checkbox.mjs +11 -0
  67. package/dist/components/ui/chip.js +199 -0
  68. package/dist/components/ui/chip.mjs +10 -0
  69. package/dist/components/ui/data-table.js +925 -0
  70. package/dist/components/ui/data-table.mjs +29 -0
  71. package/dist/components/ui/date-picker.js +561 -0
  72. package/dist/components/ui/date-picker.mjs +15 -0
  73. package/dist/components/ui/dialog.js +378 -0
  74. package/dist/components/ui/dialog.mjs +30 -0
  75. package/dist/components/ui/drawer.js +213 -0
  76. package/dist/components/ui/drawer.mjs +28 -0
  77. package/dist/components/ui/dropdown-menu.js +338 -0
  78. package/dist/components/ui/dropdown-menu.mjs +38 -0
  79. package/dist/components/ui/empty.js +173 -0
  80. package/dist/components/ui/empty.mjs +18 -0
  81. package/dist/components/ui/field.js +359 -0
  82. package/dist/components/ui/field.mjs +28 -0
  83. package/dist/components/ui/input-group.js +406 -0
  84. package/dist/components/ui/input-group.mjs +22 -0
  85. package/dist/components/ui/input-otp.js +149 -0
  86. package/dist/components/ui/input-otp.mjs +14 -0
  87. package/dist/components/ui/input.js +81 -0
  88. package/dist/components/ui/input.mjs +8 -0
  89. package/dist/components/ui/label.js +85 -0
  90. package/dist/components/ui/label.mjs +8 -0
  91. package/dist/components/ui/pagination.js +333 -0
  92. package/dist/components/ui/pagination.mjs +22 -0
  93. package/dist/components/ui/popover.js +167 -0
  94. package/dist/components/ui/popover.mjs +22 -0
  95. package/dist/components/ui/progress.js +97 -0
  96. package/dist/components/ui/progress.mjs +8 -0
  97. package/dist/components/ui/radio-group.js +178 -0
  98. package/dist/components/ui/radio-group.mjs +12 -0
  99. package/dist/components/ui/select.js +262 -0
  100. package/dist/components/ui/select.mjs +28 -0
  101. package/dist/components/ui/separator.js +86 -0
  102. package/dist/components/ui/separator.mjs +8 -0
  103. package/dist/components/ui/sheet.js +227 -0
  104. package/dist/components/ui/sheet.mjs +26 -0
  105. package/dist/components/ui/skeleton.js +75 -0
  106. package/dist/components/ui/skeleton.mjs +8 -0
  107. package/dist/components/ui/sonner.js +86 -0
  108. package/dist/components/ui/sonner.mjs +7 -0
  109. package/dist/components/ui/spinner.js +93 -0
  110. package/dist/components/ui/spinner.mjs +10 -0
  111. package/dist/components/ui/switch.js +178 -0
  112. package/dist/components/ui/switch.mjs +11 -0
  113. package/dist/components/ui/table.js +184 -0
  114. package/dist/components/ui/table.mjs +22 -0
  115. package/dist/components/ui/tabs.js +181 -0
  116. package/dist/components/ui/tabs.mjs +16 -0
  117. package/dist/components/ui/textarea.js +79 -0
  118. package/dist/components/ui/textarea.mjs +8 -0
  119. package/dist/components/ui/toggle-group.js +184 -0
  120. package/dist/components/ui/toggle-group.mjs +12 -0
  121. package/dist/components/ui/toggle.js +108 -0
  122. package/dist/components/ui/toggle.mjs +11 -0
  123. package/dist/components/ui/tooltip.js +140 -0
  124. package/dist/components/ui/tooltip.mjs +16 -0
  125. package/dist/index.js +4312 -90
  126. package/dist/index.mjs +459 -158
  127. package/dist/lib/colors.js +84 -0
  128. package/dist/lib/colors.mjs +13 -0
  129. package/dist/lib/theme-provider.js +150 -0
  130. package/dist/lib/theme-provider.mjs +13 -0
  131. package/dist/lib/typography.js +157 -0
  132. package/dist/lib/typography.mjs +25 -0
  133. package/dist/lib/utils.js +34 -0
  134. package/dist/lib/utils.mjs +7 -0
  135. package/dist/styles.css +1 -1
  136. package/package.json +228 -11
  137. package/scripts/build-css.ts +15 -9
  138. package/src/components/index.tsx +443 -0
  139. package/src/components/ui/accordion.tsx +99 -0
  140. package/src/components/ui/alert-dialog.tsx +239 -0
  141. package/src/components/ui/alert.tsx +81 -0
  142. package/src/components/ui/avatar.tsx +130 -0
  143. package/src/components/ui/badge.tsx +57 -0
  144. package/src/components/ui/button.tsx +69 -37
  145. package/src/components/ui/calendar.tsx +252 -0
  146. package/src/components/ui/card.tsx +106 -0
  147. package/src/components/ui/checkbox.tsx +111 -0
  148. package/src/components/ui/chip.tsx +65 -0
  149. package/src/components/ui/data-table.tsx +490 -0
  150. package/src/components/ui/date-picker.tsx +133 -0
  151. package/src/components/ui/dialog.tsx +195 -0
  152. package/src/components/ui/drawer.tsx +169 -0
  153. package/src/components/ui/dropdown-menu.tsx +315 -0
  154. package/src/components/ui/empty.tsx +128 -0
  155. package/src/components/ui/field.tsx +273 -0
  156. package/src/components/ui/input-group.tsx +190 -0
  157. package/src/components/ui/input-otp.tsx +90 -0
  158. package/src/components/ui/input.tsx +28 -0
  159. package/src/components/ui/label.tsx +24 -0
  160. package/src/components/ui/pagination.tsx +148 -0
  161. package/src/components/ui/popover.tsx +112 -0
  162. package/src/components/ui/progress.tsx +40 -0
  163. package/src/components/ui/radio-group.tsx +129 -0
  164. package/src/components/ui/select.tsx +201 -0
  165. package/src/components/ui/separator.tsx +26 -0
  166. package/src/components/ui/sheet.tsx +182 -0
  167. package/src/components/ui/skeleton.tsx +22 -0
  168. package/src/components/ui/sonner.tsx +48 -0
  169. package/src/components/ui/spinner.tsx +41 -0
  170. package/src/components/ui/switch.tsx +126 -0
  171. package/src/components/ui/table.tsx +143 -0
  172. package/src/components/ui/tabs.tsx +119 -0
  173. package/src/components/ui/textarea.tsx +28 -0
  174. package/src/components/ui/toggle-group.tsx +94 -0
  175. package/src/components/ui/toggle.tsx +59 -0
  176. package/src/components/ui/tooltip.tsx +80 -0
  177. package/src/index.ts +15 -3
  178. package/src/lib/colors.ts +74 -0
  179. package/src/lib/slot.tsx +68 -0
  180. package/src/lib/theme-provider.tsx +134 -0
  181. package/src/lib/typography.ts +153 -0
  182. package/src/lib/utils.ts +1 -1
  183. package/src/styles/globals.css +377 -107
  184. package/src/styles/styles-css.ts +1 -1
  185. package/tsup.config.ts +48 -2
  186. package/dist/index.d.mts +0 -27
  187. package/dist/index.d.ts +0 -27
  188. package/src/provider/ShadcnProvider.tsx +0 -89
  189. package/src/provider/index.ts +0 -2
@@ -0,0 +1,232 @@
1
+ import {
2
+ Button,
3
+ buttonVariants
4
+ } from "./chunk-IAOOZCUY.mjs";
5
+ import {
6
+ cn
7
+ } from "./chunk-V7CNWJT3.mjs";
8
+ import {
9
+ __objRest,
10
+ __spreadProps,
11
+ __spreadValues
12
+ } from "./chunk-FWCSY2DS.mjs";
13
+
14
+ // src/components/ui/calendar.tsx
15
+ import * as React from "react";
16
+ import {
17
+ ChevronDownIcon,
18
+ ChevronLeftIcon,
19
+ ChevronRightIcon
20
+ } from "lucide-react";
21
+ import {
22
+ DayPicker,
23
+ getDefaultClassNames
24
+ } from "react-day-picker";
25
+ import { jsx } from "react/jsx-runtime";
26
+ function CalendarRoot(_a) {
27
+ var _b = _a, {
28
+ className,
29
+ rootRef
30
+ } = _b, props = __objRest(_b, [
31
+ "className",
32
+ "rootRef"
33
+ ]);
34
+ return /* @__PURE__ */ jsx(
35
+ "div",
36
+ __spreadValues({
37
+ className: cn(className),
38
+ "data-slot": "calendar",
39
+ ref: rootRef
40
+ }, props)
41
+ );
42
+ }
43
+ function CalendarChevron(_a) {
44
+ var _b = _a, {
45
+ className,
46
+ orientation
47
+ } = _b, props = __objRest(_b, [
48
+ "className",
49
+ "orientation"
50
+ ]);
51
+ if (orientation === "left") {
52
+ return /* @__PURE__ */ jsx(ChevronLeftIcon, __spreadValues({ className: cn("size-4", className) }, props));
53
+ }
54
+ if (orientation === "right") {
55
+ return /* @__PURE__ */ jsx(
56
+ ChevronRightIcon,
57
+ __spreadValues({
58
+ className: cn("size-4", className)
59
+ }, props)
60
+ );
61
+ }
62
+ return /* @__PURE__ */ jsx(ChevronDownIcon, __spreadValues({ className: cn("size-4", className) }, props));
63
+ }
64
+ function CalendarWeekNumber(_a) {
65
+ var _b = _a, {
66
+ children
67
+ } = _b, props = __objRest(_b, [
68
+ "children"
69
+ ]);
70
+ return /* @__PURE__ */ jsx("td", __spreadProps(__spreadValues({}, props), { children: /* @__PURE__ */ jsx("div", { className: "flex size-(--cell-size) items-center justify-center text-center", children }) }));
71
+ }
72
+ function Calendar(_a) {
73
+ var _b = _a, {
74
+ className,
75
+ classNames,
76
+ showOutsideDays = true,
77
+ captionLayout = "dropdown",
78
+ buttonVariant = "ghost",
79
+ formatters,
80
+ components
81
+ } = _b, props = __objRest(_b, [
82
+ "className",
83
+ "classNames",
84
+ "showOutsideDays",
85
+ "captionLayout",
86
+ "buttonVariant",
87
+ "formatters",
88
+ "components"
89
+ ]);
90
+ const defaultClassNames = getDefaultClassNames();
91
+ return /* @__PURE__ */ jsx(
92
+ DayPicker,
93
+ __spreadValues({
94
+ captionLayout,
95
+ className: cn(
96
+ "group/calendar bg-background p-3 font-sans border border-border shadow-sm [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",
97
+ String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
98
+ String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
99
+ className
100
+ ),
101
+ classNames: __spreadValues({
102
+ root: cn("w-fit", defaultClassNames.root),
103
+ months: cn(
104
+ "relative flex flex-col gap-4 md:flex-row",
105
+ defaultClassNames.months
106
+ ),
107
+ month: cn("flex w-full flex-col gap-4", defaultClassNames.month),
108
+ nav: cn(
109
+ "absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",
110
+ defaultClassNames.nav
111
+ ),
112
+ button_previous: cn(
113
+ buttonVariants({ variant: buttonVariant }),
114
+ "size-(--cell-size) p-0 select-none aria-disabled:opacity-50",
115
+ defaultClassNames.button_previous
116
+ ),
117
+ button_next: cn(
118
+ buttonVariants({ variant: buttonVariant }),
119
+ "size-(--cell-size) p-0 select-none aria-disabled:opacity-50",
120
+ defaultClassNames.button_next
121
+ ),
122
+ month_caption: cn(
123
+ "flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)",
124
+ defaultClassNames.month_caption
125
+ ),
126
+ dropdowns: cn(
127
+ "flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium",
128
+ defaultClassNames.dropdowns
129
+ ),
130
+ dropdown_root: cn(
131
+ "relative border border-input shadow-xs has-focus:border-ring has-focus:ring-[3px] has-focus:ring-ring/50",
132
+ defaultClassNames.dropdown_root
133
+ ),
134
+ dropdown: cn(
135
+ "absolute inset-0 bg-popover opacity-0",
136
+ defaultClassNames.dropdown
137
+ ),
138
+ caption_label: cn(
139
+ "font-medium select-none",
140
+ captionLayout === "label" ? "text-sm" : "flex h-8 items-center gap-1 pr-1 pl-2 text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground",
141
+ defaultClassNames.caption_label
142
+ ),
143
+ table: "w-full border-collapse",
144
+ weekdays: cn("flex", defaultClassNames.weekdays),
145
+ weekday: cn(
146
+ "flex-1 text-[0.8rem] font-normal text-muted-foreground select-none",
147
+ defaultClassNames.weekday
148
+ ),
149
+ week: cn("mt-2 flex w-full", defaultClassNames.week),
150
+ week_number_header: cn(
151
+ "w-(--cell-size) select-none",
152
+ defaultClassNames.week_number_header
153
+ ),
154
+ week_number: cn(
155
+ "text-[0.8rem] text-muted-foreground select-none",
156
+ defaultClassNames.week_number
157
+ ),
158
+ day: cn(
159
+ "group/day relative aspect-square h-full w-full p-0 text-center select-none",
160
+ defaultClassNames.day
161
+ ),
162
+ range_start: cn("bg-accent", defaultClassNames.range_start),
163
+ range_middle: cn("rounded-none", defaultClassNames.range_middle),
164
+ range_end: cn("bg-accent", defaultClassNames.range_end),
165
+ today: cn(
166
+ "bg-accent text-accent-foreground",
167
+ defaultClassNames.today
168
+ ),
169
+ outside: cn(
170
+ "text-muted-foreground aria-selected:text-muted-foreground",
171
+ defaultClassNames.outside
172
+ ),
173
+ disabled: cn(
174
+ "text-muted-foreground opacity-50",
175
+ defaultClassNames.disabled
176
+ ),
177
+ hidden: cn("invisible", defaultClassNames.hidden)
178
+ }, classNames),
179
+ components: __spreadValues({
180
+ Root: CalendarRoot,
181
+ Chevron: CalendarChevron,
182
+ DayButton: CalendarDayButton,
183
+ WeekNumber: CalendarWeekNumber
184
+ }, components),
185
+ formatters: __spreadValues({
186
+ formatMonthDropdown: (date) => date.toLocaleString("default", { month: "short" })
187
+ }, formatters),
188
+ showOutsideDays
189
+ }, props)
190
+ );
191
+ }
192
+ function CalendarDayButton(_a) {
193
+ var _b = _a, {
194
+ className,
195
+ day,
196
+ modifiers
197
+ } = _b, props = __objRest(_b, [
198
+ "className",
199
+ "day",
200
+ "modifiers"
201
+ ]);
202
+ const defaultClassNames = getDefaultClassNames();
203
+ const ref = React.useRef(null);
204
+ React.useEffect(() => {
205
+ var _a2;
206
+ if (modifiers.focused) (_a2 = ref.current) == null ? void 0 : _a2.focus();
207
+ }, [modifiers.focused]);
208
+ const selectedSingle = modifiers.selected && !modifiers.range_start && !modifiers.range_end ? !modifiers.range_middle : null;
209
+ return /* @__PURE__ */ jsx(
210
+ Button,
211
+ __spreadValues({
212
+ className: cn(
213
+ "flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal rounded-none group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-accent-foreground [&>span]:text-xs [&>span]:opacity-70",
214
+ defaultClassNames.day,
215
+ className
216
+ ),
217
+ "data-day": day.date.toLocaleDateString(),
218
+ "data-range-end": modifiers.range_end,
219
+ "data-range-middle": modifiers.range_middle,
220
+ "data-range-start": modifiers.range_start,
221
+ "data-selected-single": selectedSingle,
222
+ ref,
223
+ size: "icon",
224
+ variant: "ghost"
225
+ }, props)
226
+ );
227
+ }
228
+
229
+ export {
230
+ Calendar,
231
+ CalendarDayButton
232
+ };
@@ -0,0 +1,47 @@
1
+ import {
2
+ __objRest,
3
+ __spreadValues
4
+ } from "./chunk-FWCSY2DS.mjs";
5
+
6
+ // src/components/ui/sonner.tsx
7
+ import {
8
+ CircleCheckIcon,
9
+ InfoIcon,
10
+ Loader2Icon,
11
+ OctagonXIcon,
12
+ TriangleAlertIcon
13
+ } from "lucide-react";
14
+ import { Toaster as Sonner } from "sonner";
15
+ import { jsx } from "react/jsx-runtime";
16
+ function Toaster(_a) {
17
+ var _b = _a, { theme = "light" } = _b, props = __objRest(_b, ["theme"]);
18
+ return /* @__PURE__ */ jsx(
19
+ Sonner,
20
+ __spreadValues({
21
+ className: "toaster group",
22
+ icons: {
23
+ success: /* @__PURE__ */ jsx(CircleCheckIcon, { className: "size-4" }),
24
+ info: /* @__PURE__ */ jsx(InfoIcon, { className: "size-4" }),
25
+ warning: /* @__PURE__ */ jsx(TriangleAlertIcon, { className: "size-4" }),
26
+ error: /* @__PURE__ */ jsx(OctagonXIcon, { className: "size-4" }),
27
+ loading: /* @__PURE__ */ jsx(Loader2Icon, { className: "size-4 animate-spin" })
28
+ },
29
+ style: {
30
+ "--normal-bg": "var(--popover)",
31
+ "--normal-text": "var(--popover-foreground)",
32
+ "--normal-border": "var(--border)",
33
+ "--border-radius": "var(--radius)"
34
+ },
35
+ theme,
36
+ toastOptions: {
37
+ classNames: {
38
+ toast: "font-sans"
39
+ }
40
+ }
41
+ }, props)
42
+ );
43
+ }
44
+
45
+ export {
46
+ Toaster
47
+ };
@@ -0,0 +1,55 @@
1
+ import {
2
+ cn
3
+ } from "./chunk-V7CNWJT3.mjs";
4
+ import {
5
+ __objRest,
6
+ __spreadValues
7
+ } from "./chunk-FWCSY2DS.mjs";
8
+
9
+ // src/components/ui/toggle.tsx
10
+ import { cva } from "class-variance-authority";
11
+ import { Toggle as ToggleComponent } from "@base-ui/react/toggle";
12
+ import { jsx } from "react/jsx-runtime";
13
+ var toggleVariants = cva(
14
+ "inline-flex items-center justify-center gap-2 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] 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 data-pressed:bg-primary/10 data-pressed:inset-ring data-pressed:inset-ring-primary data-pressed:text-foreground data-pressed:hover:bg-primary/10 data-pressed:hover:text-foreground dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
15
+ {
16
+ variants: {
17
+ variant: {
18
+ default: "bg-transparent hover:bg-muted hover:text-muted-foreground",
19
+ outline: "border border-input bg-transparent hover:bg-accent hover:text-accent-foreground"
20
+ },
21
+ size: {
22
+ default: "h-9 min-w-9 px-2",
23
+ sm: "h-8 min-w-8 px-1.5",
24
+ lg: "h-10 min-w-10 px-2.5"
25
+ }
26
+ },
27
+ defaultVariants: {
28
+ variant: "default",
29
+ size: "default"
30
+ }
31
+ }
32
+ );
33
+ function Toggle(_a) {
34
+ var _b = _a, {
35
+ className,
36
+ variant,
37
+ size
38
+ } = _b, props = __objRest(_b, [
39
+ "className",
40
+ "variant",
41
+ "size"
42
+ ]);
43
+ return /* @__PURE__ */ jsx(
44
+ ToggleComponent,
45
+ __spreadValues({
46
+ className: cn(toggleVariants({ variant, size, className })),
47
+ "data-slot": "toggle"
48
+ }, props)
49
+ );
50
+ }
51
+
52
+ export {
53
+ toggleVariants,
54
+ Toggle
55
+ };
@@ -0,0 +1,114 @@
1
+ import {
2
+ __spreadValues
3
+ } from "./chunk-FWCSY2DS.mjs";
4
+
5
+ // src/lib/typography.ts
6
+ var FONT_FAMILY_SANS = '"Figtree", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"';
7
+ function style(weight, size, lineHeight, extra) {
8
+ return __spreadValues({ fontWeight: weight, fontSize: size, lineHeight }, extra);
9
+ }
10
+ var TYPOGRAPHY_DISPLAY = {
11
+ large: style(700, "4rem", "4.5rem", { letterSpacing: "-0.03125rem" }),
12
+ medium: style(700, "3rem", "3.5rem"),
13
+ small: style(600, "2.125rem", "2.625rem")
14
+ };
15
+ var TYPOGRAPHY_HEADING = {
16
+ h1: style(700, "2rem", "2.5rem"),
17
+ h2: style(600, "1.75rem", "2.25rem"),
18
+ h3: style(600, "1.5rem", "2rem"),
19
+ h4: style(600, "1.3125rem", "1.75rem"),
20
+ h5: style(600, "1.125rem", "1.5rem"),
21
+ h6: style(600, "1rem", "1.375rem")
22
+ };
23
+ var TYPOGRAPHY_BODY = {
24
+ large: style(400, "1.125rem", "1.75rem"),
25
+ medium: style(400, "1rem", "1.5rem"),
26
+ small: style(400, "0.875rem", "1.25rem")
27
+ };
28
+ var TYPOGRAPHY_LABEL = {
29
+ large: style(600, "1rem", "1.25rem"),
30
+ medium: style(600, "0.875rem", "1.125rem"),
31
+ small: style(600, "0.75rem", "1rem", { letterSpacing: "0.03125rem" })
32
+ };
33
+ var TYPOGRAPHY_UTILITY = {
34
+ caption: style(400, "0.75rem", "1rem"),
35
+ overline: style(600, "0.625rem", "0.875rem", {
36
+ letterSpacing: "0.09375rem",
37
+ textTransform: "uppercase"
38
+ }),
39
+ code: style(400, "0.875rem", "1.25rem")
40
+ };
41
+ var TYPOGRAPHY = {
42
+ display: TYPOGRAPHY_DISPLAY,
43
+ heading: TYPOGRAPHY_HEADING,
44
+ body: TYPOGRAPHY_BODY,
45
+ label: TYPOGRAPHY_LABEL,
46
+ utility: TYPOGRAPHY_UTILITY
47
+ };
48
+ var TYPOGRAPHY_RESPONSIVE = {
49
+ tablet: {
50
+ "display-large": style(700, "3.6rem", "4.05rem", {
51
+ letterSpacing: "-0.03125rem"
52
+ }),
53
+ "display-medium": style(700, "2.7rem", "3.15rem"),
54
+ "display-small": style(600, "1.9125rem", "2.3625rem")
55
+ },
56
+ mobile: {
57
+ "display-large": style(700, "2.5rem", "2.8125rem", {
58
+ letterSpacing: "-0.03125rem"
59
+ }),
60
+ "display-medium": style(700, "2rem", "2.334rem"),
61
+ h1: style(700, "1.75rem", "2.1875rem"),
62
+ h2: style(600, "1.5rem", "1.93rem")
63
+ }
64
+ };
65
+ function getTypographyCssVars(fontFamily = FONT_FAMILY_SANS) {
66
+ const vars = {};
67
+ vars["--font-family-sans"] = fontFamily;
68
+ const allGroups = [
69
+ [
70
+ "display",
71
+ TYPOGRAPHY_DISPLAY
72
+ ],
73
+ ["", TYPOGRAPHY_HEADING],
74
+ ["body", TYPOGRAPHY_BODY],
75
+ ["label", TYPOGRAPHY_LABEL],
76
+ ["", TYPOGRAPHY_UTILITY]
77
+ ];
78
+ for (const [prefix, group] of allGroups) {
79
+ for (const [key, s] of Object.entries(group)) {
80
+ const token = prefix ? `${prefix}-${key}` : key;
81
+ vars[`--typography-${token}-size`] = s.fontSize;
82
+ vars[`--typography-${token}-leading`] = s.lineHeight;
83
+ vars[`--typography-${token}-weight`] = String(s.fontWeight);
84
+ if (s.letterSpacing)
85
+ vars[`--typography-${token}-tracking`] = s.letterSpacing;
86
+ if (s.textTransform)
87
+ vars[`--typography-${token}-transform`] = s.textTransform;
88
+ }
89
+ }
90
+ return vars;
91
+ }
92
+ function getResponsiveTypographyCssVars(breakpoint) {
93
+ const vars = {};
94
+ for (const [key, s] of Object.entries(TYPOGRAPHY_RESPONSIVE[breakpoint])) {
95
+ vars[`--typography-${key}-size`] = s.fontSize;
96
+ vars[`--typography-${key}-leading`] = s.lineHeight;
97
+ vars[`--typography-${key}-weight`] = String(s.fontWeight);
98
+ if (s.letterSpacing) vars[`--typography-${key}-tracking`] = s.letterSpacing;
99
+ }
100
+ return vars;
101
+ }
102
+
103
+ export {
104
+ FONT_FAMILY_SANS,
105
+ TYPOGRAPHY_DISPLAY,
106
+ TYPOGRAPHY_HEADING,
107
+ TYPOGRAPHY_BODY,
108
+ TYPOGRAPHY_LABEL,
109
+ TYPOGRAPHY_UTILITY,
110
+ TYPOGRAPHY,
111
+ TYPOGRAPHY_RESPONSIVE,
112
+ getTypographyCssVars,
113
+ getResponsiveTypographyCssVars
114
+ };
@@ -0,0 +1,35 @@
1
+ import {
2
+ cn
3
+ } from "./chunk-V7CNWJT3.mjs";
4
+ import {
5
+ __objRest,
6
+ __spreadValues
7
+ } from "./chunk-FWCSY2DS.mjs";
8
+
9
+ // src/components/ui/separator.tsx
10
+ import { Separator as SeparatorPrimitive } from "@base-ui/react/separator";
11
+ import { jsx } from "react/jsx-runtime";
12
+ function Separator(_a) {
13
+ var _b = _a, {
14
+ className,
15
+ orientation = "horizontal"
16
+ } = _b, props = __objRest(_b, [
17
+ "className",
18
+ "orientation"
19
+ ]);
20
+ return /* @__PURE__ */ jsx(
21
+ SeparatorPrimitive,
22
+ __spreadValues({
23
+ className: cn(
24
+ "shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",
25
+ className
26
+ ),
27
+ "data-orientation": orientation,
28
+ "data-slot": "separator"
29
+ }, props)
30
+ );
31
+ }
32
+
33
+ export {
34
+ Separator
35
+ };
@@ -0,0 +1,146 @@
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/drawer.tsx
14
+ import { Drawer as DrawerPrimitive } from "vaul";
15
+ import { jsx, jsxs } from "react/jsx-runtime";
16
+ function Drawer(_a) {
17
+ var props = __objRest(_a, []);
18
+ return /* @__PURE__ */ jsx(DrawerPrimitive.Root, __spreadValues({ "data-slot": "drawer" }, props));
19
+ }
20
+ function DrawerTrigger(_a) {
21
+ var props = __objRest(_a, []);
22
+ return /* @__PURE__ */ jsx(DrawerPrimitive.Trigger, __spreadValues({ "data-slot": "drawer-trigger" }, props));
23
+ }
24
+ function DrawerPortal(_a) {
25
+ var props = __objRest(_a, []);
26
+ return /* @__PURE__ */ jsx(DrawerPrimitive.Portal, __spreadValues({ "data-slot": "drawer-portal" }, props));
27
+ }
28
+ function DrawerClose(_a) {
29
+ var props = __objRest(_a, []);
30
+ return /* @__PURE__ */ jsx(DrawerPrimitive.Close, __spreadValues({ "data-slot": "drawer-close" }, props));
31
+ }
32
+ function DrawerOverlay(_a) {
33
+ var _b = _a, {
34
+ className
35
+ } = _b, props = __objRest(_b, [
36
+ "className"
37
+ ]);
38
+ return /* @__PURE__ */ jsx(
39
+ DrawerPrimitive.Overlay,
40
+ __spreadValues({
41
+ className: cn(
42
+ // WealthX: foreground/50 scrim — matches Figma overlay token
43
+ "fixed inset-0 z-50 bg-foreground/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:fill-mode-forwards data-[state=open]:animate-in data-[state=open]:fade-in-0",
44
+ className
45
+ ),
46
+ "data-slot": "drawer-overlay"
47
+ }, props)
48
+ );
49
+ }
50
+ function DrawerContent(_a) {
51
+ var _b = _a, {
52
+ className,
53
+ children,
54
+ style
55
+ } = _b, props = __objRest(_b, [
56
+ "className",
57
+ "children",
58
+ "style"
59
+ ]);
60
+ const themeVars = useThemeVars();
61
+ return /* @__PURE__ */ jsxs(DrawerPortal, { "data-slot": "drawer-portal", children: [
62
+ /* @__PURE__ */ jsx(DrawerOverlay, {}),
63
+ /* @__PURE__ */ jsxs(
64
+ DrawerPrimitive.Content,
65
+ __spreadProps(__spreadValues({
66
+ className: cn(
67
+ "group/drawer-content fixed z-50 flex h-auto flex-col bg-background",
68
+ // WealthX: no rounded corners (Figma: sharp edges)
69
+ "data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:border-b",
70
+ "data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:border-t",
71
+ "data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:sm:max-w-sm",
72
+ "data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:sm:max-w-sm",
73
+ className
74
+ ),
75
+ "data-slot": "drawer-content",
76
+ style: __spreadValues(__spreadValues({}, themeVars), style)
77
+ }, props), {
78
+ children: [
79
+ /* @__PURE__ */ jsx("div", { className: "mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block group-data-[vaul-drawer-direction=top]/drawer-content:block" }),
80
+ children
81
+ ]
82
+ })
83
+ )
84
+ ] });
85
+ }
86
+ function DrawerHeader(_a) {
87
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
88
+ return /* @__PURE__ */ jsx(
89
+ "div",
90
+ __spreadValues({
91
+ className: cn("flex flex-col gap-1 p-4", className),
92
+ "data-slot": "drawer-header"
93
+ }, props)
94
+ );
95
+ }
96
+ function DrawerFooter(_a) {
97
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
98
+ return /* @__PURE__ */ jsx(
99
+ "div",
100
+ __spreadValues({
101
+ className: cn("mt-auto flex flex-col gap-2 p-4", className),
102
+ "data-slot": "drawer-footer"
103
+ }, props)
104
+ );
105
+ }
106
+ function DrawerTitle(_a) {
107
+ var _b = _a, {
108
+ className
109
+ } = _b, props = __objRest(_b, [
110
+ "className"
111
+ ]);
112
+ return /* @__PURE__ */ jsx(
113
+ DrawerPrimitive.Title,
114
+ __spreadValues({
115
+ className: cn("text-lg font-semibold text-foreground", className),
116
+ "data-slot": "drawer-title"
117
+ }, props)
118
+ );
119
+ }
120
+ function DrawerDescription(_a) {
121
+ var _b = _a, {
122
+ className
123
+ } = _b, props = __objRest(_b, [
124
+ "className"
125
+ ]);
126
+ return /* @__PURE__ */ jsx(
127
+ DrawerPrimitive.Description,
128
+ __spreadValues({
129
+ className: cn("text-sm text-muted-foreground", className),
130
+ "data-slot": "drawer-description"
131
+ }, props)
132
+ );
133
+ }
134
+
135
+ export {
136
+ Drawer,
137
+ DrawerTrigger,
138
+ DrawerPortal,
139
+ DrawerClose,
140
+ DrawerOverlay,
141
+ DrawerContent,
142
+ DrawerHeader,
143
+ DrawerFooter,
144
+ DrawerTitle,
145
+ DrawerDescription
146
+ };