@tydavidson/design-system 1.1.16 → 1.1.18
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 +77 -283
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +78 -281
- package/dist/index.mjs.map +1 -1
- package/dist/themes/index.d.mts +12 -53
- package/dist/themes/index.d.ts +12 -53
- package/dist/themes/index.js +73 -237
- package/dist/themes/index.js.map +1 -1
- package/dist/themes/index.mjs +74 -235
- package/dist/themes/index.mjs.map +1 -1
- package/docs/theme-usage.md +191 -542
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
3
3
|
import React__default from 'react';
|
4
4
|
import { VariantProps } from 'class-variance-authority';
|
5
5
|
import { ThemeColor } from './themes/index.mjs';
|
6
|
-
export { ClientThemeProvider, ClientThemeToggle, ComponentVariant,
|
6
|
+
export { ClientThemeProvider, ClientThemeToggle, ComponentVariant, ThemeProvider, ThemeProviderNoSSR, getColorVariantClasses, isDarkTheme, mapColorToShadcnVariant, mapVariantToShadcnVariant, useThemeServer } from './themes/index.mjs';
|
7
7
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
8
8
|
import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
|
9
9
|
import * as TogglePrimitive from '@radix-ui/react-toggle';
|
package/dist/index.d.ts
CHANGED
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
3
3
|
import React__default from 'react';
|
4
4
|
import { VariantProps } from 'class-variance-authority';
|
5
5
|
import { ThemeColor } from './themes/index.js';
|
6
|
-
export { ClientThemeProvider, ClientThemeToggle, ComponentVariant,
|
6
|
+
export { ClientThemeProvider, ClientThemeToggle, ComponentVariant, ThemeProvider, ThemeProviderNoSSR, getColorVariantClasses, isDarkTheme, mapColorToShadcnVariant, mapVariantToShadcnVariant, useThemeServer } from './themes/index.js';
|
7
7
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
8
8
|
import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
|
9
9
|
import * as TogglePrimitive from '@radix-ui/react-toggle';
|
package/dist/index.js
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
'use strict';
|
2
2
|
|
3
|
-
var clsx = require('clsx');
|
4
|
-
var tailwindMerge = require('tailwind-merge');
|
5
3
|
var React2 = require('react');
|
6
|
-
var jsxRuntime = require('react/jsx-runtime');
|
7
|
-
var iconsReact = require('@tabler/icons-react');
|
8
4
|
var reactSlot = require('@radix-ui/react-slot');
|
9
5
|
var classVarianceAuthority = require('class-variance-authority');
|
6
|
+
var clsx = require('clsx');
|
7
|
+
var tailwindMerge = require('tailwind-merge');
|
8
|
+
var jsxRuntime = require('react/jsx-runtime');
|
10
9
|
var DropdownMenuPrimitive = require('@radix-ui/react-dropdown-menu');
|
10
|
+
var iconsReact = require('@tabler/icons-react');
|
11
11
|
var TogglePrimitive = require('@radix-ui/react-toggle');
|
12
12
|
var ToggleGroupPrimitive = require('@radix-ui/react-toggle-group');
|
13
13
|
var SliderPrimitive = require('@radix-ui/react-slider');
|
@@ -47,15 +47,7 @@ var SheetPrimitive__namespace = /*#__PURE__*/_interopNamespace(SheetPrimitive);
|
|
47
47
|
var CollapsiblePrimitive__namespace = /*#__PURE__*/_interopNamespace(CollapsiblePrimitive);
|
48
48
|
var ContextMenuPrimitive__namespace = /*#__PURE__*/_interopNamespace(ContextMenuPrimitive);
|
49
49
|
|
50
|
-
|
51
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
52
|
-
var __esm = (fn, res) => function __init() {
|
53
|
-
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
54
|
-
};
|
55
|
-
var __export = (target, all) => {
|
56
|
-
for (var name in all)
|
57
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
58
|
-
};
|
50
|
+
// src/components/ui/button.tsx
|
59
51
|
function cn(...inputs) {
|
60
52
|
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
61
53
|
}
|
@@ -71,218 +63,6 @@ function filterDOMProps(props, propNames) {
|
|
71
63
|
propNames.forEach((name) => delete result[name]);
|
72
64
|
return result;
|
73
65
|
}
|
74
|
-
var init_utils = __esm({
|
75
|
-
"src/lib/utils.ts"() {
|
76
|
-
}
|
77
|
-
});
|
78
|
-
function useThemeServer() {
|
79
|
-
return {
|
80
|
-
theme: "system",
|
81
|
-
setTheme: (theme) => {
|
82
|
-
},
|
83
|
-
resolvedTheme: "light",
|
84
|
-
isDark: false
|
85
|
-
};
|
86
|
-
}
|
87
|
-
function ThemeContextProvider({
|
88
|
-
children
|
89
|
-
}) {
|
90
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
|
91
|
-
}
|
92
|
-
function useTheme() {
|
93
|
-
const [themeData, setThemeData] = React2__namespace.useState({
|
94
|
-
theme: "system",
|
95
|
-
setTheme: (theme) => {
|
96
|
-
},
|
97
|
-
resolvedTheme: "light",
|
98
|
-
isDark: false
|
99
|
-
});
|
100
|
-
const [mounted, setMounted] = React2__namespace.useState(false);
|
101
|
-
React2__namespace.useEffect(() => {
|
102
|
-
if (typeof window === "undefined") return;
|
103
|
-
import('next-themes').then((nextThemes) => {
|
104
|
-
const themeManager = {
|
105
|
-
getTheme: () => {
|
106
|
-
if (typeof window !== "undefined") {
|
107
|
-
const savedTheme = localStorage.getItem("theme");
|
108
|
-
if (savedTheme) return savedTheme;
|
109
|
-
if (window.matchMedia("(prefers-color-scheme: dark)").matches) {
|
110
|
-
return "dark";
|
111
|
-
}
|
112
|
-
}
|
113
|
-
return "light";
|
114
|
-
},
|
115
|
-
setTheme: (theme) => {
|
116
|
-
if (typeof window !== "undefined") {
|
117
|
-
localStorage.setItem("theme", theme);
|
118
|
-
document.documentElement.classList.toggle("dark", theme === "dark");
|
119
|
-
setThemeData((prev) => ({
|
120
|
-
...prev,
|
121
|
-
theme,
|
122
|
-
resolvedTheme: theme,
|
123
|
-
isDark: theme === "dark"
|
124
|
-
}));
|
125
|
-
}
|
126
|
-
}
|
127
|
-
};
|
128
|
-
const currentTheme = themeManager.getTheme();
|
129
|
-
const isDark = currentTheme === "dark";
|
130
|
-
setThemeData({
|
131
|
-
theme: currentTheme,
|
132
|
-
setTheme: themeManager.setTheme,
|
133
|
-
resolvedTheme: currentTheme,
|
134
|
-
isDark
|
135
|
-
});
|
136
|
-
setMounted(true);
|
137
|
-
});
|
138
|
-
}, []);
|
139
|
-
return themeData;
|
140
|
-
}
|
141
|
-
var init_theme_context = __esm({
|
142
|
-
"src/themes/theme-context.tsx"() {
|
143
|
-
"use client";
|
144
|
-
}
|
145
|
-
});
|
146
|
-
function ThemeToggle({
|
147
|
-
className,
|
148
|
-
variant = "icon",
|
149
|
-
size = "md",
|
150
|
-
...props
|
151
|
-
}) {
|
152
|
-
if (typeof window === "undefined") {
|
153
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
154
|
-
"button",
|
155
|
-
{
|
156
|
-
type: "button",
|
157
|
-
className: cn(
|
158
|
-
"inline-flex items-center justify-center rounded-md border border-input bg-background",
|
159
|
-
size === "sm" ? "h-8 w-8" : size === "lg" ? "h-12 w-12" : "h-10 w-10",
|
160
|
-
className
|
161
|
-
),
|
162
|
-
"aria-label": "Toggle theme",
|
163
|
-
...props,
|
164
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(iconsReact.IconSun, { size: size === "sm" ? 16 : size === "lg" ? 24 : 20, stroke: 1.5 })
|
165
|
-
}
|
166
|
-
);
|
167
|
-
}
|
168
|
-
const { theme, setTheme, resolvedTheme } = useTheme();
|
169
|
-
const [mounted, setMounted] = React2__namespace.useState(false);
|
170
|
-
React2__namespace.useEffect(() => {
|
171
|
-
setMounted(true);
|
172
|
-
}, []);
|
173
|
-
if (!mounted) {
|
174
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
175
|
-
"button",
|
176
|
-
{
|
177
|
-
type: "button",
|
178
|
-
className: cn(
|
179
|
-
"inline-flex items-center justify-center rounded-md border border-input bg-background",
|
180
|
-
size === "sm" ? "h-8 w-8" : size === "lg" ? "h-12 w-12" : "h-10 w-10",
|
181
|
-
className
|
182
|
-
),
|
183
|
-
"aria-label": "Toggle theme",
|
184
|
-
...props,
|
185
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(iconsReact.IconSun, { size: size === "sm" ? 16 : size === "lg" ? 24 : 20, stroke: 1.5 })
|
186
|
-
}
|
187
|
-
);
|
188
|
-
}
|
189
|
-
const toggleTheme = () => {
|
190
|
-
setTheme(resolvedTheme === "dark" ? "light" : "dark");
|
191
|
-
};
|
192
|
-
const iconSize = {
|
193
|
-
sm: 16,
|
194
|
-
md: 20,
|
195
|
-
lg: 24
|
196
|
-
};
|
197
|
-
const sizeClasses = {
|
198
|
-
sm: "h-8 w-8",
|
199
|
-
md: "h-10 w-10",
|
200
|
-
lg: "h-12 w-12"
|
201
|
-
};
|
202
|
-
const textSizeClasses = {
|
203
|
-
sm: "text-xs",
|
204
|
-
md: "text-sm",
|
205
|
-
lg: "text-base"
|
206
|
-
};
|
207
|
-
if (variant === "icon") {
|
208
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
209
|
-
"button",
|
210
|
-
{
|
211
|
-
type: "button",
|
212
|
-
onClick: toggleTheme,
|
213
|
-
className: cn(
|
214
|
-
"inline-flex items-center justify-center rounded-md border border-input bg-background hover:bg-accent hover:text-accent-foreground",
|
215
|
-
sizeClasses[size],
|
216
|
-
className
|
217
|
-
),
|
218
|
-
"aria-label": "Toggle theme",
|
219
|
-
...props,
|
220
|
-
children: resolvedTheme === "dark" ? /* @__PURE__ */ jsxRuntime.jsx(iconsReact.IconSun, { size: iconSize[size], stroke: 1.5 }) : /* @__PURE__ */ jsxRuntime.jsx(iconsReact.IconMoon, { size: iconSize[size], stroke: 1.5 })
|
221
|
-
}
|
222
|
-
);
|
223
|
-
}
|
224
|
-
if (variant === "button") {
|
225
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
226
|
-
"button",
|
227
|
-
{
|
228
|
-
type: "button",
|
229
|
-
onClick: toggleTheme,
|
230
|
-
className: cn(
|
231
|
-
"inline-flex items-center justify-center rounded-md border border-input bg-background px-4 py-2",
|
232
|
-
textSizeClasses[size],
|
233
|
-
"hover:bg-accent hover:text-accent-foreground",
|
234
|
-
className
|
235
|
-
),
|
236
|
-
"aria-label": "Toggle theme",
|
237
|
-
...props,
|
238
|
-
children: resolvedTheme === "dark" ? "Light Mode" : "Dark Mode"
|
239
|
-
}
|
240
|
-
);
|
241
|
-
}
|
242
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
243
|
-
"button",
|
244
|
-
{
|
245
|
-
type: "button",
|
246
|
-
onClick: toggleTheme,
|
247
|
-
className: cn(
|
248
|
-
"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",
|
249
|
-
textSizeClasses[size],
|
250
|
-
resolvedTheme === "dark" ? "bg-accent text-accent-foreground hover:bg-accent/80" : "bg-muted text-muted-foreground hover:bg-muted/80",
|
251
|
-
className
|
252
|
-
),
|
253
|
-
"aria-label": "Toggle theme",
|
254
|
-
...props,
|
255
|
-
children: resolvedTheme === "dark" ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center", children: [
|
256
|
-
/* @__PURE__ */ jsxRuntime.jsx(iconsReact.IconSun, { size: iconSize[size], stroke: 1.5, className: "mr-2" }),
|
257
|
-
"Light"
|
258
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center", children: [
|
259
|
-
/* @__PURE__ */ jsxRuntime.jsx(iconsReact.IconMoon, { size: iconSize[size], stroke: 1.5, className: "mr-2" }),
|
260
|
-
"Dark"
|
261
|
-
] })
|
262
|
-
}
|
263
|
-
);
|
264
|
-
}
|
265
|
-
var init_theme_toggle = __esm({
|
266
|
-
"src/components/ui/theme-toggle/theme-toggle.tsx"() {
|
267
|
-
"use client";
|
268
|
-
init_theme_context();
|
269
|
-
init_utils();
|
270
|
-
}
|
271
|
-
});
|
272
|
-
|
273
|
-
// src/components/ui/theme-toggle/index.ts
|
274
|
-
var theme_toggle_exports = {};
|
275
|
-
__export(theme_toggle_exports, {
|
276
|
-
ThemeToggle: () => ThemeToggle
|
277
|
-
});
|
278
|
-
var init_theme_toggle2 = __esm({
|
279
|
-
"src/components/ui/theme-toggle/index.ts"() {
|
280
|
-
init_theme_toggle();
|
281
|
-
}
|
282
|
-
});
|
283
|
-
|
284
|
-
// src/components/ui/button.tsx
|
285
|
-
init_utils();
|
286
66
|
var buttonVariants = classVarianceAuthority.cva(
|
287
67
|
"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",
|
288
68
|
{
|
@@ -387,9 +167,6 @@ var Button = React2__namespace.forwardRef(
|
|
387
167
|
}
|
388
168
|
);
|
389
169
|
Button.displayName = "Button";
|
390
|
-
|
391
|
-
// src/components/ui/dropdown-menu/dropdown-menu.tsx
|
392
|
-
init_utils();
|
393
170
|
var DropdownMenuRoot = DropdownMenuPrimitive__namespace.Root;
|
394
171
|
var DropdownMenuTrigger = React2__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
395
172
|
DropdownMenuPrimitive__namespace.Trigger,
|
@@ -571,9 +348,6 @@ var DropdownMenu = {
|
|
571
348
|
SubContent: DropdownMenuSubContent,
|
572
349
|
SubTrigger: DropdownMenuSubTrigger
|
573
350
|
};
|
574
|
-
|
575
|
-
// src/components/typography/heading/heading.tsx
|
576
|
-
init_utils();
|
577
351
|
var Heading = React2__namespace.forwardRef(
|
578
352
|
({
|
579
353
|
level = 1,
|
@@ -642,9 +416,6 @@ var Heading = React2__namespace.forwardRef(
|
|
642
416
|
}
|
643
417
|
);
|
644
418
|
Heading.displayName = "Heading";
|
645
|
-
|
646
|
-
// src/components/typography/text/text.tsx
|
647
|
-
init_utils();
|
648
419
|
var Text = React2__namespace.forwardRef(
|
649
420
|
({
|
650
421
|
size = "md",
|
@@ -697,9 +468,6 @@ var Text = React2__namespace.forwardRef(
|
|
697
468
|
}
|
698
469
|
);
|
699
470
|
Text.displayName = "Text";
|
700
|
-
|
701
|
-
// src/components/ui/toggle.tsx
|
702
|
-
init_utils();
|
703
471
|
var Toggle = React2__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
704
472
|
TogglePrimitive__namespace.Root,
|
705
473
|
{
|
@@ -712,9 +480,6 @@ var Toggle = React2__namespace.forwardRef(({ className, ...props }, ref) => /* @
|
|
712
480
|
}
|
713
481
|
));
|
714
482
|
Toggle.displayName = TogglePrimitive__namespace.Root.displayName;
|
715
|
-
|
716
|
-
// src/components/ui/toggle-group.tsx
|
717
|
-
init_utils();
|
718
483
|
var ToggleGroup = React2__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
719
484
|
ToggleGroupPrimitive__namespace.Root,
|
720
485
|
{
|
@@ -737,9 +502,6 @@ var ToggleGroupItem = React2__namespace.forwardRef(({ className, ...props }, ref
|
|
737
502
|
}
|
738
503
|
));
|
739
504
|
ToggleGroupItem.displayName = ToggleGroupPrimitive__namespace.Item.displayName;
|
740
|
-
|
741
|
-
// src/components/ui/slider.tsx
|
742
|
-
init_utils();
|
743
505
|
var Slider = React2__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
744
506
|
SliderPrimitive__namespace.Root,
|
745
507
|
{
|
@@ -756,9 +518,6 @@ var Slider = React2__namespace.forwardRef(({ className, ...props }, ref) => /* @
|
|
756
518
|
}
|
757
519
|
));
|
758
520
|
Slider.displayName = SliderPrimitive__namespace.Root.displayName;
|
759
|
-
|
760
|
-
// src/components/ui/popover.tsx
|
761
|
-
init_utils();
|
762
521
|
var Popover = PopoverPrimitive__namespace.Root;
|
763
522
|
var PopoverTrigger = PopoverPrimitive__namespace.Trigger;
|
764
523
|
var PopoverAnchor = PopoverPrimitive__namespace.Anchor;
|
@@ -776,9 +535,6 @@ var PopoverContent = React2__namespace.forwardRef(({ className, align = "center"
|
|
776
535
|
}
|
777
536
|
) }));
|
778
537
|
PopoverContent.displayName = PopoverPrimitive__namespace.Content.displayName;
|
779
|
-
|
780
|
-
// src/components/ui/hover-card.tsx
|
781
|
-
init_utils();
|
782
538
|
var HoverCard = HoverCardPrimitive__namespace.Root;
|
783
539
|
var HoverCardTrigger = HoverCardPrimitive__namespace.Trigger;
|
784
540
|
var HoverCardContent = React2__namespace.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
@@ -795,9 +551,6 @@ var HoverCardContent = React2__namespace.forwardRef(({ className, align = "cente
|
|
795
551
|
}
|
796
552
|
));
|
797
553
|
HoverCardContent.displayName = HoverCardPrimitive__namespace.Content.displayName;
|
798
|
-
|
799
|
-
// src/components/ui/sheet.tsx
|
800
|
-
init_utils();
|
801
554
|
var Sheet = SheetPrimitive__namespace.Root;
|
802
555
|
var SheetTrigger = SheetPrimitive__namespace.Trigger;
|
803
556
|
var SheetClose = SheetPrimitive__namespace.Close;
|
@@ -891,12 +644,6 @@ var SheetDescription = React2__namespace.forwardRef(({ className, ...props }, re
|
|
891
644
|
}
|
892
645
|
));
|
893
646
|
SheetDescription.displayName = SheetPrimitive__namespace.Description.displayName;
|
894
|
-
|
895
|
-
// src/components/ui/command.tsx
|
896
|
-
init_utils();
|
897
|
-
|
898
|
-
// src/components/ui/dialog.tsx
|
899
|
-
init_utils();
|
900
647
|
var Dialog = SheetPrimitive__namespace.Root;
|
901
648
|
var DialogTrigger = SheetPrimitive__namespace.Trigger;
|
902
649
|
var DialogPortal = SheetPrimitive__namespace.Portal;
|
@@ -1084,9 +831,6 @@ CommandShortcut.displayName = "CommandShortcut";
|
|
1084
831
|
var Collapsible = CollapsiblePrimitive__namespace.Root;
|
1085
832
|
var CollapsibleTrigger2 = CollapsiblePrimitive__namespace.CollapsibleTrigger;
|
1086
833
|
var CollapsibleContent2 = CollapsiblePrimitive__namespace.CollapsibleContent;
|
1087
|
-
|
1088
|
-
// src/components/ui/context-menu.tsx
|
1089
|
-
init_utils();
|
1090
834
|
var ContextMenu = ContextMenuPrimitive__namespace.Root;
|
1091
835
|
var ContextMenuTrigger = ContextMenuPrimitive__namespace.Trigger;
|
1092
836
|
var ContextMenuGroup = ContextMenuPrimitive__namespace.Group;
|
@@ -1506,9 +1250,6 @@ var EmailFooter = ({ children }) => /* @__PURE__ */ jsxRuntime.jsx("div", { styl
|
|
1506
1250
|
/* @__PURE__ */ jsxRuntime.jsx("div", { children: "SoHo, New York" })
|
1507
1251
|
] })
|
1508
1252
|
] }) });
|
1509
|
-
|
1510
|
-
// src/components/ui/card.tsx
|
1511
|
-
init_utils();
|
1512
1253
|
var Card = React2__namespace.forwardRef(
|
1513
1254
|
({ className, variant = "default", ...props }, ref) => {
|
1514
1255
|
const variantClasses = {
|
@@ -1591,9 +1332,6 @@ var CardFooter = React2__namespace.forwardRef(({ className, ...props }, ref) =>
|
|
1591
1332
|
}
|
1592
1333
|
));
|
1593
1334
|
CardFooter.displayName = "CardFooter";
|
1594
|
-
|
1595
|
-
// src/components/ui/input.tsx
|
1596
|
-
init_utils();
|
1597
1335
|
var Input = React2__namespace.forwardRef(
|
1598
1336
|
({ className, type, ...props }, ref) => {
|
1599
1337
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
@@ -1616,9 +1354,6 @@ var Input = React2__namespace.forwardRef(
|
|
1616
1354
|
);
|
1617
1355
|
Input.displayName = "Input";
|
1618
1356
|
|
1619
|
-
// src/index.ts
|
1620
|
-
init_utils();
|
1621
|
-
|
1622
1357
|
// src/tokens/colors.ts
|
1623
1358
|
var colors = {
|
1624
1359
|
// Base colors
|
@@ -1930,10 +1665,6 @@ function ThemeProviderNoSSR({
|
|
1930
1665
|
}
|
1931
1666
|
return /* @__PURE__ */ jsxRuntime.jsx(ThemeProvider, { ...props, children });
|
1932
1667
|
}
|
1933
|
-
|
1934
|
-
// src/themes/index.ts
|
1935
|
-
init_theme_context();
|
1936
|
-
init_theme_toggle2();
|
1937
1668
|
function ClientThemeProvider({
|
1938
1669
|
children,
|
1939
1670
|
...props
|
@@ -1949,14 +1680,25 @@ function ClientThemeProvider({
|
|
1949
1680
|
}
|
1950
1681
|
function ClientThemeToggle(props) {
|
1951
1682
|
const [mounted, setMounted] = React2__namespace.useState(false);
|
1952
|
-
const [
|
1683
|
+
const [isDark, setIsDark] = React2__namespace.useState(false);
|
1953
1684
|
React2__namespace.useEffect(() => {
|
1954
1685
|
setMounted(true);
|
1955
|
-
|
1956
|
-
|
1957
|
-
|
1686
|
+
if (typeof window !== "undefined") {
|
1687
|
+
const savedTheme = localStorage.getItem("theme");
|
1688
|
+
const systemPrefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
|
1689
|
+
const currentTheme = savedTheme || (systemPrefersDark ? "dark" : "light");
|
1690
|
+
setIsDark(currentTheme === "dark");
|
1691
|
+
}
|
1958
1692
|
}, []);
|
1959
|
-
|
1693
|
+
const toggleTheme = () => {
|
1694
|
+
if (typeof window !== "undefined") {
|
1695
|
+
const newTheme = isDark ? "light" : "dark";
|
1696
|
+
localStorage.setItem("theme", newTheme);
|
1697
|
+
document.documentElement.classList.toggle("dark", newTheme === "dark");
|
1698
|
+
setIsDark(newTheme === "dark");
|
1699
|
+
}
|
1700
|
+
};
|
1701
|
+
if (!mounted) {
|
1960
1702
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
1961
1703
|
"button",
|
1962
1704
|
{
|
@@ -1991,7 +1733,62 @@ function ClientThemeToggle(props) {
|
|
1991
1733
|
}
|
1992
1734
|
);
|
1993
1735
|
}
|
1994
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
1736
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
1737
|
+
"button",
|
1738
|
+
{
|
1739
|
+
type: "button",
|
1740
|
+
onClick: toggleTheme,
|
1741
|
+
className: "inline-flex items-center justify-center rounded-md border border-input bg-background hover:bg-accent hover:text-accent-foreground h-10 w-10",
|
1742
|
+
"aria-label": "Toggle theme",
|
1743
|
+
...props,
|
1744
|
+
children: isDark ? /* @__PURE__ */ jsxRuntime.jsxs(
|
1745
|
+
"svg",
|
1746
|
+
{
|
1747
|
+
width: "20",
|
1748
|
+
height: "20",
|
1749
|
+
viewBox: "0 0 24 24",
|
1750
|
+
fill: "none",
|
1751
|
+
stroke: "currentColor",
|
1752
|
+
strokeWidth: "2",
|
1753
|
+
strokeLinecap: "round",
|
1754
|
+
strokeLinejoin: "round",
|
1755
|
+
children: [
|
1756
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "4" }),
|
1757
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 2v2" }),
|
1758
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 20v2" }),
|
1759
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "m4.93 4.93 1.41 1.41" }),
|
1760
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "m17.66 17.66 1.41 1.41" }),
|
1761
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M2 12h2" }),
|
1762
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M20 12h2" }),
|
1763
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "m6.34 17.66-1.41 1.41" }),
|
1764
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "m19.07 4.93-1.41 1.41" })
|
1765
|
+
]
|
1766
|
+
}
|
1767
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
1768
|
+
"svg",
|
1769
|
+
{
|
1770
|
+
width: "20",
|
1771
|
+
height: "20",
|
1772
|
+
viewBox: "0 0 24 24",
|
1773
|
+
fill: "none",
|
1774
|
+
stroke: "currentColor",
|
1775
|
+
strokeWidth: "2",
|
1776
|
+
strokeLinecap: "round",
|
1777
|
+
strokeLinejoin: "round",
|
1778
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z" })
|
1779
|
+
}
|
1780
|
+
)
|
1781
|
+
}
|
1782
|
+
);
|
1783
|
+
}
|
1784
|
+
function useThemeServer() {
|
1785
|
+
return {
|
1786
|
+
theme: "system",
|
1787
|
+
setTheme: (theme) => {
|
1788
|
+
},
|
1789
|
+
resolvedTheme: "light",
|
1790
|
+
isDark: false
|
1791
|
+
};
|
1995
1792
|
}
|
1996
1793
|
|
1997
1794
|
// src/lib/theme-utils.ts
|
@@ -2128,10 +1925,8 @@ exports.SheetTitle = SheetTitle;
|
|
2128
1925
|
exports.SheetTrigger = SheetTrigger;
|
2129
1926
|
exports.Slider = Slider;
|
2130
1927
|
exports.Text = Text;
|
2131
|
-
exports.ThemeContextProvider = ThemeContextProvider;
|
2132
1928
|
exports.ThemeProvider = ThemeProvider;
|
2133
1929
|
exports.ThemeProviderNoSSR = ThemeProviderNoSSR;
|
2134
|
-
exports.ThemeToggle = ThemeToggle;
|
2135
1930
|
exports.Toggle = Toggle;
|
2136
1931
|
exports.ToggleGroup = ToggleGroup;
|
2137
1932
|
exports.ToggleGroupItem = ToggleGroupItem;
|
@@ -2150,7 +1945,6 @@ exports.shadows = shadows;
|
|
2150
1945
|
exports.spacing = spacing;
|
2151
1946
|
exports.tokens = tokens;
|
2152
1947
|
exports.typography = typography;
|
2153
|
-
exports.useTheme = useTheme;
|
2154
1948
|
exports.useThemeServer = useThemeServer;
|
2155
1949
|
//# sourceMappingURL=index.js.map
|
2156
1950
|
//# sourceMappingURL=index.js.map
|