@tydavidson/design-system 1.1.7 → 1.1.9
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.
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +372 -177
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +364 -174
- package/dist/index.mjs.map +1 -1
- package/dist/themes/index.d.mts +41 -2
- package/dist/themes/index.d.ts +41 -2
- package/dist/themes/index.js +219 -66
- package/dist/themes/index.js.map +1 -1
- package/dist/themes/index.mjs +211 -63
- package/dist/themes/index.mjs.map +1 -1
- package/docs/setup-guide.md +101 -4
- package/docs/troubleshooting.md +22 -4
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
-
import * as React2 from 'react';
|
2
|
-
import { Slot } from '@radix-ui/react-slot';
|
3
|
-
import { cva } from 'class-variance-authority';
|
4
1
|
import { clsx } from 'clsx';
|
5
2
|
import { twMerge } from 'tailwind-merge';
|
3
|
+
import * as React2 from 'react';
|
6
4
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
7
|
-
import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
|
8
5
|
import { IconCheck, IconPointFilled, IconChevronRight, IconX, IconSearch, IconSun, IconMoon } from '@tabler/icons-react';
|
6
|
+
import { Slot } from '@radix-ui/react-slot';
|
7
|
+
import { cva } from 'class-variance-authority';
|
8
|
+
import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
|
9
9
|
import * as TogglePrimitive from '@radix-ui/react-toggle';
|
10
10
|
import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
|
11
11
|
import * as SliderPrimitive from '@radix-ui/react-slider';
|
@@ -15,9 +15,17 @@ import * as SheetPrimitive from '@radix-ui/react-dialog';
|
|
15
15
|
import { Command as Command$1 } from 'cmdk';
|
16
16
|
import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
|
17
17
|
import * as ContextMenuPrimitive from '@radix-ui/react-context-menu';
|
18
|
-
import
|
18
|
+
import dynamic from 'next/dynamic';
|
19
19
|
|
20
|
-
|
20
|
+
var __defProp = Object.defineProperty;
|
21
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
22
|
+
var __esm = (fn, res) => function __init() {
|
23
|
+
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
24
|
+
};
|
25
|
+
var __export = (target, all) => {
|
26
|
+
for (var name in all)
|
27
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
28
|
+
};
|
21
29
|
function cn(...inputs) {
|
22
30
|
return twMerge(clsx(inputs));
|
23
31
|
}
|
@@ -33,6 +41,285 @@ function filterDOMProps(props, propNames) {
|
|
33
41
|
propNames.forEach((name) => delete result[name]);
|
34
42
|
return result;
|
35
43
|
}
|
44
|
+
var init_utils = __esm({
|
45
|
+
"src/lib/utils.ts"() {
|
46
|
+
}
|
47
|
+
});
|
48
|
+
|
49
|
+
// src/themes/theme-provider.tsx
|
50
|
+
var theme_provider_exports = {};
|
51
|
+
__export(theme_provider_exports, {
|
52
|
+
ThemeProvider: () => ThemeProvider,
|
53
|
+
ThemeProviderNoSSR: () => ThemeProviderNoSSR
|
54
|
+
});
|
55
|
+
function ThemeProvider({
|
56
|
+
children,
|
57
|
+
...props
|
58
|
+
}) {
|
59
|
+
const [NextThemesProvider, setNextThemesProvider] = React2.useState(null);
|
60
|
+
const [mounted, setMounted] = React2.useState(false);
|
61
|
+
React2.useEffect(() => {
|
62
|
+
import('next-themes').then(({ ThemeProvider: Provider }) => {
|
63
|
+
setNextThemesProvider(() => Provider);
|
64
|
+
setMounted(true);
|
65
|
+
});
|
66
|
+
}, []);
|
67
|
+
if (!mounted || !NextThemesProvider) {
|
68
|
+
return /* @__PURE__ */ jsx(Fragment, { children });
|
69
|
+
}
|
70
|
+
return /* @__PURE__ */ jsx(
|
71
|
+
NextThemesProvider,
|
72
|
+
{
|
73
|
+
attribute: "class",
|
74
|
+
defaultTheme: "system",
|
75
|
+
enableSystem: true,
|
76
|
+
disableTransitionOnChange: true,
|
77
|
+
...props,
|
78
|
+
children
|
79
|
+
}
|
80
|
+
);
|
81
|
+
}
|
82
|
+
function ThemeProviderNoSSR({
|
83
|
+
children,
|
84
|
+
...props
|
85
|
+
}) {
|
86
|
+
const [mounted, setMounted] = React2.useState(false);
|
87
|
+
React2.useEffect(() => {
|
88
|
+
setMounted(true);
|
89
|
+
}, []);
|
90
|
+
if (!mounted) {
|
91
|
+
return /* @__PURE__ */ jsx(Fragment, { children });
|
92
|
+
}
|
93
|
+
return /* @__PURE__ */ jsx(ThemeProvider, { ...props, children });
|
94
|
+
}
|
95
|
+
var init_theme_provider = __esm({
|
96
|
+
"src/themes/theme-provider.tsx"() {
|
97
|
+
"use client";
|
98
|
+
}
|
99
|
+
});
|
100
|
+
|
101
|
+
// src/lib/theme-utils.ts
|
102
|
+
var mapColorToShadcnVariant, mapVariantToShadcnVariant, getColorVariantClasses, isDarkTheme;
|
103
|
+
var init_theme_utils = __esm({
|
104
|
+
"src/lib/theme-utils.ts"() {
|
105
|
+
mapColorToShadcnVariant = (color) => {
|
106
|
+
switch (color) {
|
107
|
+
case "brand":
|
108
|
+
return "default";
|
109
|
+
case "error":
|
110
|
+
return "destructive";
|
111
|
+
case "warning":
|
112
|
+
case "success":
|
113
|
+
return "secondary";
|
114
|
+
// Will need additional classes
|
115
|
+
default:
|
116
|
+
return "default";
|
117
|
+
}
|
118
|
+
};
|
119
|
+
mapVariantToShadcnVariant = (variant) => {
|
120
|
+
switch (variant) {
|
121
|
+
case "primary":
|
122
|
+
return "default";
|
123
|
+
case "secondary":
|
124
|
+
return "outline";
|
125
|
+
case "tertiary":
|
126
|
+
return "ghost";
|
127
|
+
default:
|
128
|
+
return "default";
|
129
|
+
}
|
130
|
+
};
|
131
|
+
getColorVariantClasses = (color, variant) => {
|
132
|
+
const colorVariantMap = {
|
133
|
+
primary: {
|
134
|
+
brand: "bg-brand-600 hover:bg-brand-700 text-white focus-visible:ring-brand-500",
|
135
|
+
error: "bg-error-600 hover:bg-error-700 text-white focus-visible:ring-error-500",
|
136
|
+
warning: "bg-warning-600 hover:bg-warning-700 text-white focus-visible:ring-warning-500",
|
137
|
+
success: "bg-success-600 hover:bg-success-700 text-white focus-visible:ring-success-500"
|
138
|
+
},
|
139
|
+
secondary: {
|
140
|
+
brand: "border-brand-300 text-brand-700 hover:bg-brand-50 focus-visible:ring-brand-500",
|
141
|
+
error: "border-error-300 text-error-700 hover:bg-error-50 focus-visible:ring-error-500",
|
142
|
+
warning: "border-warning-300 text-warning-700 hover:bg-warning-50 focus-visible:ring-warning-500",
|
143
|
+
success: "border-success-300 text-success-700 hover:bg-success-50 focus-visible:ring-success-500"
|
144
|
+
},
|
145
|
+
tertiary: {
|
146
|
+
brand: "text-brand-700 hover:bg-brand-50 focus-visible:ring-brand-500",
|
147
|
+
error: "text-error-700 hover:bg-error-50 focus-visible:ring-error-500",
|
148
|
+
warning: "text-warning-700 hover:bg-warning-50 focus-visible:ring-warning-500",
|
149
|
+
success: "text-success-700 hover:bg-success-50 focus-visible:ring-success-500"
|
150
|
+
}
|
151
|
+
};
|
152
|
+
return colorVariantMap[variant]?.[color] || "";
|
153
|
+
};
|
154
|
+
isDarkTheme = (theme, systemTheme) => {
|
155
|
+
if (theme === "system") {
|
156
|
+
return systemTheme === "dark";
|
157
|
+
}
|
158
|
+
return theme === "dark";
|
159
|
+
};
|
160
|
+
}
|
161
|
+
});
|
162
|
+
function useTheme() {
|
163
|
+
const [themeData, setThemeData] = React2.useState({
|
164
|
+
theme: "system",
|
165
|
+
setTheme: (theme) => {
|
166
|
+
},
|
167
|
+
resolvedTheme: "light",
|
168
|
+
isDark: false
|
169
|
+
});
|
170
|
+
const [mounted, setMounted] = React2.useState(false);
|
171
|
+
React2.useEffect(() => {
|
172
|
+
import('next-themes').then(({ useTheme: useNextTheme }) => {
|
173
|
+
const { theme, setTheme, resolvedTheme, systemTheme } = useNextTheme();
|
174
|
+
const isDark = isDarkTheme(theme, systemTheme);
|
175
|
+
setThemeData({
|
176
|
+
theme: theme || "system",
|
177
|
+
setTheme,
|
178
|
+
resolvedTheme: resolvedTheme || "light",
|
179
|
+
isDark
|
180
|
+
});
|
181
|
+
setMounted(true);
|
182
|
+
});
|
183
|
+
}, []);
|
184
|
+
if (!mounted) {
|
185
|
+
return {
|
186
|
+
theme: "system",
|
187
|
+
setTheme: (theme) => {
|
188
|
+
},
|
189
|
+
resolvedTheme: "light",
|
190
|
+
isDark: false
|
191
|
+
};
|
192
|
+
}
|
193
|
+
return themeData;
|
194
|
+
}
|
195
|
+
function useThemeServer() {
|
196
|
+
return {
|
197
|
+
theme: "system",
|
198
|
+
setTheme: (theme) => {
|
199
|
+
},
|
200
|
+
resolvedTheme: "light",
|
201
|
+
isDark: false
|
202
|
+
};
|
203
|
+
}
|
204
|
+
function ThemeContextProvider({
|
205
|
+
children
|
206
|
+
}) {
|
207
|
+
return /* @__PURE__ */ jsx(Fragment, { children });
|
208
|
+
}
|
209
|
+
var init_theme_context = __esm({
|
210
|
+
"src/themes/theme-context.tsx"() {
|
211
|
+
"use client";
|
212
|
+
init_theme_utils();
|
213
|
+
}
|
214
|
+
});
|
215
|
+
function ThemeToggle({
|
216
|
+
className,
|
217
|
+
variant = "icon",
|
218
|
+
size = "md",
|
219
|
+
...props
|
220
|
+
}) {
|
221
|
+
const { theme, setTheme, resolvedTheme } = useTheme();
|
222
|
+
const [mounted, setMounted] = React2.useState(false);
|
223
|
+
React2.useEffect(() => {
|
224
|
+
setMounted(true);
|
225
|
+
}, []);
|
226
|
+
if (!mounted) return null;
|
227
|
+
const toggleTheme = () => {
|
228
|
+
setTheme(resolvedTheme === "dark" ? "light" : "dark");
|
229
|
+
};
|
230
|
+
const iconSize = {
|
231
|
+
sm: 16,
|
232
|
+
md: 20,
|
233
|
+
lg: 24
|
234
|
+
};
|
235
|
+
const sizeClasses = {
|
236
|
+
sm: "h-8 w-8",
|
237
|
+
md: "h-10 w-10",
|
238
|
+
lg: "h-12 w-12"
|
239
|
+
};
|
240
|
+
const textSizeClasses = {
|
241
|
+
sm: "text-xs",
|
242
|
+
md: "text-sm",
|
243
|
+
lg: "text-base"
|
244
|
+
};
|
245
|
+
if (variant === "icon") {
|
246
|
+
return /* @__PURE__ */ jsx(
|
247
|
+
"button",
|
248
|
+
{
|
249
|
+
type: "button",
|
250
|
+
onClick: toggleTheme,
|
251
|
+
className: cn(
|
252
|
+
"inline-flex items-center justify-center rounded-md border border-input bg-background hover:bg-accent hover:text-accent-foreground",
|
253
|
+
sizeClasses[size],
|
254
|
+
className
|
255
|
+
),
|
256
|
+
"aria-label": resolvedTheme === "dark" ? "Switch to light theme" : "Switch to dark theme",
|
257
|
+
...props,
|
258
|
+
children: resolvedTheme === "dark" ? /* @__PURE__ */ jsx(IconSun, { size: iconSize[size], stroke: 1.5 }) : /* @__PURE__ */ jsx(IconMoon, { size: iconSize[size], stroke: 1.5 })
|
259
|
+
}
|
260
|
+
);
|
261
|
+
}
|
262
|
+
if (variant === "button") {
|
263
|
+
return /* @__PURE__ */ jsx(
|
264
|
+
"button",
|
265
|
+
{
|
266
|
+
type: "button",
|
267
|
+
onClick: toggleTheme,
|
268
|
+
className: cn(
|
269
|
+
"inline-flex items-center justify-center rounded-md border border-input bg-background px-4 py-2",
|
270
|
+
textSizeClasses[size],
|
271
|
+
"hover:bg-accent hover:text-accent-foreground",
|
272
|
+
className
|
273
|
+
),
|
274
|
+
...props,
|
275
|
+
children: resolvedTheme === "dark" ? "Light Mode" : "Dark Mode"
|
276
|
+
}
|
277
|
+
);
|
278
|
+
}
|
279
|
+
return /* @__PURE__ */ jsx(
|
280
|
+
"button",
|
281
|
+
{
|
282
|
+
type: "button",
|
283
|
+
onClick: toggleTheme,
|
284
|
+
className: cn(
|
285
|
+
"inline-flex items-center justify-center rounded-md px-3 py-2 font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
286
|
+
textSizeClasses[size],
|
287
|
+
resolvedTheme === "dark" ? "bg-accent text-accent-foreground hover:bg-accent/80" : "bg-muted text-muted-foreground hover:bg-muted/80",
|
288
|
+
className
|
289
|
+
),
|
290
|
+
"aria-label": resolvedTheme === "dark" ? "Switch to light theme" : "Switch to dark theme",
|
291
|
+
...props,
|
292
|
+
children: resolvedTheme === "dark" ? /* @__PURE__ */ jsxs("span", { className: "flex items-center", children: [
|
293
|
+
/* @__PURE__ */ jsx(IconSun, { size: iconSize[size], stroke: 1.5, className: "mr-2" }),
|
294
|
+
"Light"
|
295
|
+
] }) : /* @__PURE__ */ jsxs("span", { className: "flex items-center", children: [
|
296
|
+
/* @__PURE__ */ jsx(IconMoon, { size: iconSize[size], stroke: 1.5, className: "mr-2" }),
|
297
|
+
"Dark"
|
298
|
+
] })
|
299
|
+
}
|
300
|
+
);
|
301
|
+
}
|
302
|
+
var init_theme_toggle = __esm({
|
303
|
+
"src/components/ui/theme-toggle/theme-toggle.tsx"() {
|
304
|
+
"use client";
|
305
|
+
init_theme_context();
|
306
|
+
init_utils();
|
307
|
+
}
|
308
|
+
});
|
309
|
+
|
310
|
+
// src/components/ui/theme-toggle/index.ts
|
311
|
+
var theme_toggle_exports = {};
|
312
|
+
__export(theme_toggle_exports, {
|
313
|
+
ThemeToggle: () => ThemeToggle
|
314
|
+
});
|
315
|
+
var init_theme_toggle2 = __esm({
|
316
|
+
"src/components/ui/theme-toggle/index.ts"() {
|
317
|
+
init_theme_toggle();
|
318
|
+
}
|
319
|
+
});
|
320
|
+
|
321
|
+
// src/components/ui/button.tsx
|
322
|
+
init_utils();
|
36
323
|
var buttonVariants = cva(
|
37
324
|
"float-button inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-[4px] text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
38
325
|
{
|
@@ -137,6 +424,9 @@ var Button = React2.forwardRef(
|
|
137
424
|
}
|
138
425
|
);
|
139
426
|
Button.displayName = "Button";
|
427
|
+
|
428
|
+
// src/components/ui/dropdown-menu/dropdown-menu.tsx
|
429
|
+
init_utils();
|
140
430
|
var DropdownMenuRoot = DropdownMenuPrimitive.Root;
|
141
431
|
var DropdownMenuTrigger = React2.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(
|
142
432
|
DropdownMenuPrimitive.Trigger,
|
@@ -318,6 +608,9 @@ var DropdownMenu = {
|
|
318
608
|
SubContent: DropdownMenuSubContent,
|
319
609
|
SubTrigger: DropdownMenuSubTrigger
|
320
610
|
};
|
611
|
+
|
612
|
+
// src/components/typography/heading/heading.tsx
|
613
|
+
init_utils();
|
321
614
|
var Heading = React2.forwardRef(
|
322
615
|
({
|
323
616
|
level = 1,
|
@@ -386,6 +679,9 @@ var Heading = React2.forwardRef(
|
|
386
679
|
}
|
387
680
|
);
|
388
681
|
Heading.displayName = "Heading";
|
682
|
+
|
683
|
+
// src/components/typography/text/text.tsx
|
684
|
+
init_utils();
|
389
685
|
var Text = React2.forwardRef(
|
390
686
|
({
|
391
687
|
size = "md",
|
@@ -438,6 +734,9 @@ var Text = React2.forwardRef(
|
|
438
734
|
}
|
439
735
|
);
|
440
736
|
Text.displayName = "Text";
|
737
|
+
|
738
|
+
// src/components/ui/toggle.tsx
|
739
|
+
init_utils();
|
441
740
|
var Toggle = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
442
741
|
TogglePrimitive.Root,
|
443
742
|
{
|
@@ -450,6 +749,9 @@ var Toggle = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
450
749
|
}
|
451
750
|
));
|
452
751
|
Toggle.displayName = TogglePrimitive.Root.displayName;
|
752
|
+
|
753
|
+
// src/components/ui/toggle-group.tsx
|
754
|
+
init_utils();
|
453
755
|
var ToggleGroup = React2.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(
|
454
756
|
ToggleGroupPrimitive.Root,
|
455
757
|
{
|
@@ -472,6 +774,9 @@ var ToggleGroupItem = React2.forwardRef(({ className, ...props }, ref) => /* @__
|
|
472
774
|
}
|
473
775
|
));
|
474
776
|
ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
|
777
|
+
|
778
|
+
// src/components/ui/slider.tsx
|
779
|
+
init_utils();
|
475
780
|
var Slider = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
476
781
|
SliderPrimitive.Root,
|
477
782
|
{
|
@@ -488,6 +793,9 @@ var Slider = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
488
793
|
}
|
489
794
|
));
|
490
795
|
Slider.displayName = SliderPrimitive.Root.displayName;
|
796
|
+
|
797
|
+
// src/components/ui/popover.tsx
|
798
|
+
init_utils();
|
491
799
|
var Popover = PopoverPrimitive.Root;
|
492
800
|
var PopoverTrigger = PopoverPrimitive.Trigger;
|
493
801
|
var PopoverAnchor = PopoverPrimitive.Anchor;
|
@@ -505,6 +813,9 @@ var PopoverContent = React2.forwardRef(({ className, align = "center", sideOffse
|
|
505
813
|
}
|
506
814
|
) }));
|
507
815
|
PopoverContent.displayName = PopoverPrimitive.Content.displayName;
|
816
|
+
|
817
|
+
// src/components/ui/hover-card.tsx
|
818
|
+
init_utils();
|
508
819
|
var HoverCard = HoverCardPrimitive.Root;
|
509
820
|
var HoverCardTrigger = HoverCardPrimitive.Trigger;
|
510
821
|
var HoverCardContent = React2.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(
|
@@ -521,6 +832,9 @@ var HoverCardContent = React2.forwardRef(({ className, align = "center", sideOff
|
|
521
832
|
}
|
522
833
|
));
|
523
834
|
HoverCardContent.displayName = HoverCardPrimitive.Content.displayName;
|
835
|
+
|
836
|
+
// src/components/ui/sheet.tsx
|
837
|
+
init_utils();
|
524
838
|
var Sheet = SheetPrimitive.Root;
|
525
839
|
var SheetTrigger = SheetPrimitive.Trigger;
|
526
840
|
var SheetClose = SheetPrimitive.Close;
|
@@ -614,6 +928,12 @@ var SheetDescription = React2.forwardRef(({ className, ...props }, ref) => /* @_
|
|
614
928
|
}
|
615
929
|
));
|
616
930
|
SheetDescription.displayName = SheetPrimitive.Description.displayName;
|
931
|
+
|
932
|
+
// src/components/ui/command.tsx
|
933
|
+
init_utils();
|
934
|
+
|
935
|
+
// src/components/ui/dialog.tsx
|
936
|
+
init_utils();
|
617
937
|
var Dialog = SheetPrimitive.Root;
|
618
938
|
var DialogPortal = SheetPrimitive.Portal;
|
619
939
|
var DialogOverlay = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
@@ -771,6 +1091,9 @@ CommandShortcut.displayName = "CommandShortcut";
|
|
771
1091
|
var Collapsible = CollapsiblePrimitive.Root;
|
772
1092
|
var CollapsibleTrigger2 = CollapsiblePrimitive.CollapsibleTrigger;
|
773
1093
|
var CollapsibleContent2 = CollapsiblePrimitive.CollapsibleContent;
|
1094
|
+
|
1095
|
+
// src/components/ui/context-menu.tsx
|
1096
|
+
init_utils();
|
774
1097
|
var ContextMenu = ContextMenuPrimitive.Root;
|
775
1098
|
var ContextMenuTrigger = ContextMenuPrimitive.Trigger;
|
776
1099
|
var ContextMenuGroup = ContextMenuPrimitive.Group;
|
@@ -1191,6 +1514,9 @@ var EmailFooter = ({ children }) => /* @__PURE__ */ jsx("div", { style: {
|
|
1191
1514
|
] })
|
1192
1515
|
] }) });
|
1193
1516
|
|
1517
|
+
// src/index.ts
|
1518
|
+
init_utils();
|
1519
|
+
|
1194
1520
|
// src/tokens/colors.ts
|
1195
1521
|
var colors = {
|
1196
1522
|
// Base colors
|
@@ -1462,182 +1788,46 @@ var tokens = {
|
|
1462
1788
|
radius,
|
1463
1789
|
shadows
|
1464
1790
|
};
|
1465
|
-
function ThemeProvider({
|
1466
|
-
children,
|
1467
|
-
...props
|
1468
|
-
}) {
|
1469
|
-
return /* @__PURE__ */ jsx(
|
1470
|
-
ThemeProvider$1,
|
1471
|
-
{
|
1472
|
-
attribute: "class",
|
1473
|
-
defaultTheme: "system",
|
1474
|
-
enableSystem: true,
|
1475
|
-
disableTransitionOnChange: true,
|
1476
|
-
...props,
|
1477
|
-
children
|
1478
|
-
}
|
1479
|
-
);
|
1480
|
-
}
|
1481
1791
|
|
1482
|
-
// src/
|
1483
|
-
|
1484
|
-
|
1485
|
-
|
1486
|
-
|
1487
|
-
|
1488
|
-
|
1489
|
-
|
1490
|
-
|
1491
|
-
return "secondary";
|
1492
|
-
// Will need additional classes
|
1493
|
-
default:
|
1494
|
-
return "default";
|
1792
|
+
// src/themes/index.ts
|
1793
|
+
init_theme_provider();
|
1794
|
+
init_theme_context();
|
1795
|
+
init_theme_toggle2();
|
1796
|
+
var DynamicThemeProvider = dynamic(
|
1797
|
+
() => Promise.resolve().then(() => (init_theme_provider(), theme_provider_exports)).then((mod) => ({ default: mod.ThemeProvider })),
|
1798
|
+
{
|
1799
|
+
ssr: false,
|
1800
|
+
loading: () => /* @__PURE__ */ jsx("div", { style: { visibility: "hidden" } })
|
1495
1801
|
}
|
1496
|
-
|
1497
|
-
var
|
1498
|
-
|
1499
|
-
|
1500
|
-
|
1501
|
-
|
1502
|
-
return "outline";
|
1503
|
-
case "tertiary":
|
1504
|
-
return "ghost";
|
1505
|
-
default:
|
1506
|
-
return "default";
|
1802
|
+
);
|
1803
|
+
var DynamicThemeProviderNoSSR = dynamic(
|
1804
|
+
() => Promise.resolve().then(() => (init_theme_provider(), theme_provider_exports)).then((mod) => ({ default: mod.ThemeProviderNoSSR })),
|
1805
|
+
{
|
1806
|
+
ssr: false,
|
1807
|
+
loading: () => /* @__PURE__ */ jsx("div", { style: { visibility: "hidden" } })
|
1507
1808
|
}
|
1508
|
-
|
1509
|
-
var
|
1510
|
-
|
1511
|
-
|
1512
|
-
|
1513
|
-
|
1514
|
-
warning: "bg-warning-600 hover:bg-warning-700 text-white focus-visible:ring-warning-500",
|
1515
|
-
success: "bg-success-600 hover:bg-success-700 text-white focus-visible:ring-success-500"
|
1516
|
-
},
|
1517
|
-
secondary: {
|
1518
|
-
brand: "border-brand-300 text-brand-700 hover:bg-brand-50 focus-visible:ring-brand-500",
|
1519
|
-
error: "border-error-300 text-error-700 hover:bg-error-50 focus-visible:ring-error-500",
|
1520
|
-
warning: "border-warning-300 text-warning-700 hover:bg-warning-50 focus-visible:ring-warning-500",
|
1521
|
-
success: "border-success-300 text-success-700 hover:bg-success-50 focus-visible:ring-success-500"
|
1522
|
-
},
|
1523
|
-
tertiary: {
|
1524
|
-
brand: "text-brand-700 hover:bg-brand-50 focus-visible:ring-brand-500",
|
1525
|
-
error: "text-error-700 hover:bg-error-50 focus-visible:ring-error-500",
|
1526
|
-
warning: "text-warning-700 hover:bg-warning-50 focus-visible:ring-warning-500",
|
1527
|
-
success: "text-success-700 hover:bg-success-50 focus-visible:ring-success-500"
|
1528
|
-
}
|
1529
|
-
};
|
1530
|
-
return colorVariantMap[variant]?.[color] || "";
|
1531
|
-
};
|
1532
|
-
var isDarkTheme = (theme, systemTheme) => {
|
1533
|
-
if (theme === "system") {
|
1534
|
-
return systemTheme === "dark";
|
1809
|
+
);
|
1810
|
+
var DynamicThemeToggle = dynamic(
|
1811
|
+
() => Promise.resolve().then(() => (init_theme_toggle2(), theme_toggle_exports)).then((mod) => ({ default: mod.ThemeToggle })),
|
1812
|
+
{
|
1813
|
+
ssr: false,
|
1814
|
+
loading: () => /* @__PURE__ */ jsx("div", { style: { visibility: "hidden" } })
|
1535
1815
|
}
|
1536
|
-
|
1537
|
-
|
1538
|
-
|
1539
|
-
|
1540
|
-
const isDark = isDarkTheme(theme, systemTheme);
|
1541
|
-
return {
|
1542
|
-
theme: theme || "system",
|
1543
|
-
setTheme,
|
1544
|
-
resolvedTheme: resolvedTheme || "light",
|
1545
|
-
isDark
|
1546
|
-
};
|
1547
|
-
}
|
1548
|
-
function ThemeContextProvider({
|
1549
|
-
children
|
1550
|
-
}) {
|
1551
|
-
return /* @__PURE__ */ jsx(Fragment, { children });
|
1552
|
-
}
|
1553
|
-
function ThemeToggle({
|
1554
|
-
className,
|
1555
|
-
variant = "icon",
|
1556
|
-
size = "md",
|
1816
|
+
);
|
1817
|
+
function SafeThemeProvider({
|
1818
|
+
children,
|
1819
|
+
noSSR = false,
|
1557
1820
|
...props
|
1558
1821
|
}) {
|
1559
|
-
|
1560
|
-
|
1561
|
-
React2.useEffect(() => {
|
1562
|
-
setMounted(true);
|
1563
|
-
}, []);
|
1564
|
-
if (!mounted) return null;
|
1565
|
-
const toggleTheme = () => {
|
1566
|
-
setTheme(resolvedTheme === "dark" ? "light" : "dark");
|
1567
|
-
};
|
1568
|
-
const iconSize = {
|
1569
|
-
sm: 16,
|
1570
|
-
md: 20,
|
1571
|
-
lg: 24
|
1572
|
-
};
|
1573
|
-
const sizeClasses = {
|
1574
|
-
sm: "h-8 w-8",
|
1575
|
-
md: "h-10 w-10",
|
1576
|
-
lg: "h-12 w-12"
|
1577
|
-
};
|
1578
|
-
const textSizeClasses = {
|
1579
|
-
sm: "text-xs",
|
1580
|
-
md: "text-sm",
|
1581
|
-
lg: "text-base"
|
1582
|
-
};
|
1583
|
-
if (variant === "icon") {
|
1584
|
-
return /* @__PURE__ */ jsx(
|
1585
|
-
"button",
|
1586
|
-
{
|
1587
|
-
type: "button",
|
1588
|
-
onClick: toggleTheme,
|
1589
|
-
className: cn(
|
1590
|
-
"inline-flex items-center justify-center rounded-md border border-input bg-background hover:bg-accent hover:text-accent-foreground",
|
1591
|
-
sizeClasses[size],
|
1592
|
-
className
|
1593
|
-
),
|
1594
|
-
"aria-label": resolvedTheme === "dark" ? "Switch to light theme" : "Switch to dark theme",
|
1595
|
-
...props,
|
1596
|
-
children: resolvedTheme === "dark" ? /* @__PURE__ */ jsx(IconSun, { size: iconSize[size], stroke: 1.5 }) : /* @__PURE__ */ jsx(IconMoon, { size: iconSize[size], stroke: 1.5 })
|
1597
|
-
}
|
1598
|
-
);
|
1599
|
-
}
|
1600
|
-
if (variant === "button") {
|
1601
|
-
return /* @__PURE__ */ jsx(
|
1602
|
-
"button",
|
1603
|
-
{
|
1604
|
-
type: "button",
|
1605
|
-
onClick: toggleTheme,
|
1606
|
-
className: cn(
|
1607
|
-
"inline-flex items-center justify-center rounded-md border border-input bg-background px-4 py-2",
|
1608
|
-
textSizeClasses[size],
|
1609
|
-
"hover:bg-accent hover:text-accent-foreground",
|
1610
|
-
className
|
1611
|
-
),
|
1612
|
-
...props,
|
1613
|
-
children: resolvedTheme === "dark" ? "Light Mode" : "Dark Mode"
|
1614
|
-
}
|
1615
|
-
);
|
1822
|
+
if (noSSR) {
|
1823
|
+
return /* @__PURE__ */ jsx(DynamicThemeProviderNoSSR, { ...props, children });
|
1616
1824
|
}
|
1617
|
-
return /* @__PURE__ */ jsx(
|
1618
|
-
"button",
|
1619
|
-
{
|
1620
|
-
type: "button",
|
1621
|
-
onClick: toggleTheme,
|
1622
|
-
className: cn(
|
1623
|
-
"inline-flex items-center justify-center rounded-md px-3 py-2 font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
1624
|
-
textSizeClasses[size],
|
1625
|
-
resolvedTheme === "dark" ? "bg-accent text-accent-foreground hover:bg-accent/80" : "bg-muted text-muted-foreground hover:bg-muted/80",
|
1626
|
-
className
|
1627
|
-
),
|
1628
|
-
"aria-label": resolvedTheme === "dark" ? "Switch to light theme" : "Switch to dark theme",
|
1629
|
-
...props,
|
1630
|
-
children: resolvedTheme === "dark" ? /* @__PURE__ */ jsxs("span", { className: "flex items-center", children: [
|
1631
|
-
/* @__PURE__ */ jsx(IconSun, { size: iconSize[size], stroke: 1.5, className: "mr-2" }),
|
1632
|
-
"Light"
|
1633
|
-
] }) : /* @__PURE__ */ jsxs("span", { className: "flex items-center", children: [
|
1634
|
-
/* @__PURE__ */ jsx(IconMoon, { size: iconSize[size], stroke: 1.5, className: "mr-2" }),
|
1635
|
-
"Dark"
|
1636
|
-
] })
|
1637
|
-
}
|
1638
|
-
);
|
1825
|
+
return /* @__PURE__ */ jsx(DynamicThemeProvider, { ...props, children });
|
1639
1826
|
}
|
1640
1827
|
|
1641
|
-
|
1828
|
+
// src/themes/index.ts
|
1829
|
+
init_theme_utils();
|
1830
|
+
|
1831
|
+
export { Button, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DropdownMenu, DynamicThemeProvider, DynamicThemeProviderNoSSR, DynamicThemeToggle, EmailButton, EmailCaption, EmailContainer, EmailFooter, EmailHeader, EmailHeading, EmailLayout, EmailMuted, EmailText, Heading, HoverCard, HoverCardContent, HoverCardTrigger, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, SafeThemeProvider, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Slider, Text, ThemeContextProvider, ThemeProvider, ThemeProviderNoSSR, ThemeToggle, Toggle, ToggleGroup, ToggleGroupItem, buttonVariants, cn, colors, filterDOMProps, generateId, getColorVariantClasses, isDarkTheme, isNotNullOrUndefined, mapColorToShadcnVariant, mapVariantToShadcnVariant, radius, shadows, spacing, tokens, typography, useTheme, useThemeServer };
|
1642
1832
|
//# sourceMappingURL=index.mjs.map
|
1643
1833
|
//# sourceMappingURL=index.mjs.map
|