@gv-tech/design-system 2.2.0 → 2.4.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.
- package/.release-please-manifest.json +1 -1
- package/CHANGELOG.md +20 -0
- package/dist/App.d.ts +1 -2
- package/dist/App.d.ts.map +1 -1
- package/dist/accordion.cjs.js +2 -0
- package/dist/accordion.cjs.js.map +1 -0
- package/dist/accordion.es.js +38 -0
- package/dist/accordion.es.js.map +1 -0
- package/dist/alert-dialog.cjs.js +2 -0
- package/dist/alert-dialog.cjs.js.map +1 -0
- package/dist/alert-dialog.es.js +64 -0
- package/dist/alert-dialog.es.js.map +1 -0
- package/dist/alert.cjs.js +2 -0
- package/dist/alert.cjs.js.map +1 -0
- package/dist/alert.es.js +32 -0
- package/dist/alert.es.js.map +1 -0
- package/dist/aspect-ratio.cjs.js +2 -0
- package/dist/aspect-ratio.cjs.js.map +1 -0
- package/dist/aspect-ratio.es.js +6 -0
- package/dist/aspect-ratio.es.js.map +1 -0
- package/dist/avatar.cjs.js +2 -0
- package/dist/avatar.cjs.js.map +1 -0
- package/dist/avatar.es.js +29 -0
- package/dist/avatar.es.js.map +1 -0
- package/dist/badge.cjs.js +2 -0
- package/dist/badge.cjs.js.map +1 -0
- package/dist/badge.es.js +26 -0
- package/dist/badge.es.js.map +1 -0
- package/dist/breadcrumb.cjs.js +2 -0
- package/dist/breadcrumb.cjs.js.map +1 -0
- package/dist/breadcrumb.es.js +68 -0
- package/dist/breadcrumb.es.js.map +1 -0
- package/dist/button.cjs.js +2 -0
- package/dist/button.cjs.js.map +1 -0
- package/dist/button.es.js +39 -0
- package/dist/button.es.js.map +1 -0
- package/dist/calendar.cjs.js +2 -0
- package/dist/calendar.cjs.js.map +1 -0
- package/dist/calendar.es.js +132 -0
- package/dist/calendar.es.js.map +1 -0
- package/dist/card.cjs.js +2 -0
- package/dist/card.cjs.js.map +1 -0
- package/dist/card.es.js +34 -0
- package/dist/card.es.js.map +1 -0
- package/dist/carousel.cjs.js +2 -0
- package/dist/carousel.cjs.js.map +1 -0
- package/dist/carousel.es.js +158 -0
- package/dist/carousel.es.js.map +1 -0
- package/dist/chart.cjs.js +8 -0
- package/dist/chart.cjs.js.map +1 -0
- package/dist/chart.es.js +187 -0
- package/dist/chart.es.js.map +1 -0
- package/dist/checkbox.cjs.js +2 -0
- package/dist/checkbox.cjs.js.map +1 -0
- package/dist/checkbox.es.js +20 -0
- package/dist/checkbox.es.js.map +1 -0
- package/dist/collapsible.cjs.js +2 -0
- package/dist/collapsible.cjs.js.map +1 -0
- package/dist/collapsible.es.js +8 -0
- package/dist/collapsible.es.js.map +1 -0
- package/dist/command.cjs.js +2 -0
- package/dist/command.cjs.js.map +1 -0
- package/dist/command.es.js +86 -0
- package/dist/command.es.js.map +1 -0
- package/dist/components/docs/Sidebar.d.ts +2 -1
- package/dist/components/docs/Sidebar.d.ts.map +1 -1
- package/dist/components/ui/command.d.ts.map +1 -1
- package/dist/components/ui/theme-provider.d.ts +4 -0
- package/dist/components/ui/theme-provider.d.ts.map +1 -0
- package/dist/components/ui/theme-provider.test.d.ts +2 -0
- package/dist/components/ui/theme-provider.test.d.ts.map +1 -0
- package/dist/context-menu.cjs.js +2 -0
- package/dist/context-menu.cjs.js.map +1 -0
- package/dist/context-menu.es.js +121 -0
- package/dist/context-menu.es.js.map +1 -0
- package/dist/design-system.css +1 -1
- package/dist/dialog.cjs.js +2 -0
- package/dist/dialog.cjs.js.map +1 -0
- package/dist/dialog.es.js +65 -0
- package/dist/dialog.es.js.map +1 -0
- package/dist/drawer.cjs.js +2 -0
- package/dist/drawer.cjs.js.map +1 -0
- package/dist/drawer.es.js +54 -0
- package/dist/drawer.es.js.map +1 -0
- package/dist/dropdown-menu.cjs.js +2 -0
- package/dist/dropdown-menu.cjs.js.map +1 -0
- package/dist/dropdown-menu.es.js +123 -0
- package/dist/dropdown-menu.es.js.map +1 -0
- package/dist/form.cjs.js +2 -0
- package/dist/form.cjs.js.map +1 -0
- package/dist/form.es.js +83 -0
- package/dist/form.es.js.map +1 -0
- package/dist/hover-card.cjs.js +2 -0
- package/dist/hover-card.cjs.js.map +1 -0
- package/dist/hover-card.es.js +23 -0
- package/dist/hover-card.es.js.map +1 -0
- package/dist/index.cjs.js +1 -7
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.es.js +285 -2446
- package/dist/index.es.js.map +1 -1
- package/dist/input.cjs.js +2 -0
- package/dist/input.cjs.js.map +1 -0
- package/dist/input.es.js +22 -0
- package/dist/input.es.js.map +1 -0
- package/dist/label.cjs.js +2 -0
- package/dist/label.cjs.js.map +1 -0
- package/dist/label.es.js +9 -0
- package/dist/label.es.js.map +1 -0
- package/dist/menubar.cjs.js +2 -0
- package/dist/menubar.cjs.js.map +1 -0
- package/dist/menubar.es.js +161 -0
- package/dist/menubar.es.js.map +1 -0
- package/dist/navigation-menu.cjs.js +2 -0
- package/dist/navigation-menu.cjs.js.map +1 -0
- package/dist/navigation-menu.es.js +96 -0
- package/dist/navigation-menu.es.js.map +1 -0
- package/dist/pages/GettingStarted.d.ts.map +1 -1
- package/dist/pages/components/ThemeToggleDocs.d.ts.map +1 -1
- package/dist/pagination.cjs.js +2 -0
- package/dist/pagination.cjs.js.map +1 -0
- package/dist/pagination.es.js +60 -0
- package/dist/pagination.es.js.map +1 -0
- package/dist/popover.cjs.js +2 -0
- package/dist/popover.cjs.js.map +1 -0
- package/dist/popover.es.js +24 -0
- package/dist/popover.es.js.map +1 -0
- package/dist/progress.cjs.js +2 -0
- package/dist/progress.cjs.js.map +1 -0
- package/dist/progress.es.js +24 -0
- package/dist/progress.es.js.map +1 -0
- package/dist/radio-group.cjs.js +2 -0
- package/dist/radio-group.cjs.js.map +1 -0
- package/dist/radio-group.es.js +23 -0
- package/dist/radio-group.es.js.map +1 -0
- package/dist/registry/command.json +1 -1
- package/dist/registry/index.json +14 -0
- package/dist/registry/search.json +1 -1
- package/dist/registry/search.test.json +1 -1
- package/dist/registry/theme-provider.json +13 -0
- package/dist/registry/theme-provider.test.json +13 -0
- package/dist/resizable.cjs.js +2 -0
- package/dist/resizable.cjs.js.map +1 -0
- package/dist/resizable.es.js +34 -0
- package/dist/resizable.es.js.map +1 -0
- package/dist/scroll-area.cjs.js +2 -0
- package/dist/scroll-area.cjs.js.map +1 -0
- package/dist/scroll-area.es.js +30 -0
- package/dist/scroll-area.es.js.map +1 -0
- package/dist/search.cjs.js +2 -0
- package/dist/search.cjs.js.map +1 -0
- package/dist/search.es.js +60 -0
- package/dist/search.es.js.map +1 -0
- package/dist/select.cjs.js +2 -0
- package/dist/select.cjs.js.map +1 -0
- package/dist/select.es.js +100 -0
- package/dist/select.es.js.map +1 -0
- package/dist/separator.cjs.js +2 -0
- package/dist/separator.cjs.js.map +1 -0
- package/dist/separator.es.js +18 -0
- package/dist/separator.es.js.map +1 -0
- package/dist/sheet.cjs.js +2 -0
- package/dist/sheet.cjs.js.map +1 -0
- package/dist/sheet.es.js +64 -0
- package/dist/sheet.es.js.map +1 -0
- package/dist/skeleton.cjs.js +2 -0
- package/dist/skeleton.cjs.js.map +1 -0
- package/dist/skeleton.es.js +9 -0
- package/dist/skeleton.es.js.map +1 -0
- package/dist/slider.cjs.js +2 -0
- package/dist/slider.cjs.js.map +1 -0
- package/dist/slider.es.js +20 -0
- package/dist/slider.es.js.map +1 -0
- package/dist/sonner.cjs.js +2 -0
- package/dist/sonner.cjs.js.map +1 -0
- package/dist/sonner.es.js +25 -0
- package/dist/sonner.es.js.map +1 -0
- package/dist/switch.cjs.js +2 -0
- package/dist/switch.cjs.js.map +1 -0
- package/dist/switch.es.js +27 -0
- package/dist/switch.es.js.map +1 -0
- package/dist/table.cjs.js +2 -0
- package/dist/table.cjs.js.map +1 -0
- package/dist/table.es.js +70 -0
- package/dist/table.es.js.map +1 -0
- package/dist/tabs.cjs.js +2 -0
- package/dist/tabs.cjs.js.map +1 -0
- package/dist/tabs.es.js +46 -0
- package/dist/tabs.es.js.map +1 -0
- package/dist/textarea.cjs.js +2 -0
- package/dist/textarea.cjs.js.map +1 -0
- package/dist/textarea.es.js +21 -0
- package/dist/textarea.es.js.map +1 -0
- package/dist/theme/tokens.d.ts +46 -0
- package/dist/theme/tokens.d.ts.map +1 -1
- package/dist/theme-provider.cjs.js +2 -0
- package/dist/theme-provider.cjs.js.map +1 -0
- package/dist/theme-provider.es.js +9 -0
- package/dist/theme-provider.es.js.map +1 -0
- package/dist/theme-toggle-CCUkxY6o.mjs +181 -0
- package/dist/theme-toggle-CCUkxY6o.mjs.map +1 -0
- package/dist/theme-toggle-Dc_nm_32.js +2 -0
- package/dist/theme-toggle-Dc_nm_32.js.map +1 -0
- package/dist/theme-toggle.cjs.js +2 -0
- package/dist/theme-toggle.cjs.js.map +1 -0
- package/dist/theme-toggle.es.js +9 -0
- package/dist/theme-toggle.es.js.map +1 -0
- package/dist/toast.cjs.js +2 -0
- package/dist/toast.cjs.js.map +1 -0
- package/dist/toast.es.js +70 -0
- package/dist/toast.es.js.map +1 -0
- package/dist/toaster-BjPc-lId.js +2 -0
- package/dist/toaster-BjPc-lId.js.map +1 -0
- package/dist/toaster-Bk6a4gIz.mjs +120 -0
- package/dist/toaster-Bk6a4gIz.mjs.map +1 -0
- package/dist/toaster.cjs.js +2 -0
- package/dist/toaster.cjs.js.map +1 -0
- package/dist/toaster.es.js +7 -0
- package/dist/toaster.es.js.map +1 -0
- package/dist/toggle-group.cjs.js +2 -0
- package/dist/toggle-group.cjs.js.map +1 -0
- package/dist/toggle-group.es.js +33 -0
- package/dist/toggle-group.es.js.map +1 -0
- package/dist/toggle.cjs.js +2 -0
- package/dist/toggle.cjs.js.map +1 -0
- package/dist/toggle.es.js +29 -0
- package/dist/toggle.es.js.map +1 -0
- package/dist/tooltip.cjs.js +2 -0
- package/dist/tooltip.cjs.js.map +1 -0
- package/dist/tooltip.es.js +23 -0
- package/dist/tooltip.es.js.map +1 -0
- package/dist/utils-C9QGdMaH.mjs +8 -0
- package/dist/utils-C9QGdMaH.mjs.map +1 -0
- package/dist/utils-CUFNKXRW.js +2 -0
- package/dist/utils-CUFNKXRW.js.map +1 -0
- package/dist/{vendor-BLvpSabH.mjs → vendor-CCQzmGyD.mjs} +1131 -1160
- package/dist/vendor-CCQzmGyD.mjs.map +1 -0
- package/dist/{vendor-n4WFhtJT.js → vendor-CIyDEr7H.js} +12 -12
- package/dist/vendor-CIyDEr7H.js.map +1 -0
- package/package.json +251 -5
- package/scripts/sync-exports.ts +52 -0
- package/scripts/sync-tokens.ts +73 -0
- package/scripts/{validate.js → validate.ts} +14 -8
- package/src/App.tsx +64 -27
- package/src/components/docs/ComponentShowcase.tsx +5 -5
- package/src/components/docs/Sidebar.tsx +3 -2
- package/src/components/ui/command.tsx +3 -1
- package/src/components/ui/search.test.tsx +2 -0
- package/src/components/ui/search.tsx +3 -3
- package/src/components/ui/theme-provider.test.tsx +47 -0
- package/src/components/ui/theme-provider.tsx +12 -0
- package/src/globals.css +22 -0
- package/src/index.ts +1 -0
- package/src/pages/ColorTokensDocs.tsx +4 -4
- package/src/pages/GettingStarted.tsx +43 -10
- package/src/pages/components/ThemeToggleDocs.tsx +155 -8
- package/src/theme/tokens.ts +60 -38
- package/vite.config.ts +27 -4
- package/dist/vendor-BLvpSabH.mjs.map +0 -1
- package/dist/vendor-n4WFhtJT.js.map +0 -1
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { j as r, aS as y, aT as p, aU as x } from "./vendor-CCQzmGyD.mjs";
|
|
2
|
+
import { Button as j } from "./button.es.js";
|
|
3
|
+
import { DropdownMenu as T, DropdownMenuTrigger as f, DropdownMenuContent as F, DropdownMenuItem as c } from "./dropdown-menu.es.js";
|
|
4
|
+
import { useTheme as b } from "next-themes";
|
|
5
|
+
import { c as s } from "./utils-C9QGdMaH.mjs";
|
|
6
|
+
const e = {
|
|
7
|
+
brand: {
|
|
8
|
+
blue: "hsl(225 73% 57%)",
|
|
9
|
+
// Royal Blue (Intellect)
|
|
10
|
+
green: "hsl(151 66% 27%)",
|
|
11
|
+
// #177245 (Stability)
|
|
12
|
+
floralWhite: "hsl(40 100% 97%)"
|
|
13
|
+
// Light Neutral / Floral White
|
|
14
|
+
},
|
|
15
|
+
neutral: {
|
|
16
|
+
white: "hsl(0 0% 100%)",
|
|
17
|
+
black: "hsl(0 0% 0%)",
|
|
18
|
+
// Pure Black
|
|
19
|
+
gray50: "hsl(0 0% 96%)",
|
|
20
|
+
// White Smoke
|
|
21
|
+
gray100: "hsl(0 0% 92%)",
|
|
22
|
+
// Gainsboro
|
|
23
|
+
gray200: "hsl(0 0% 89%)",
|
|
24
|
+
// Light Gray
|
|
25
|
+
gray300: "hsl(0 0% 88%)",
|
|
26
|
+
// French Gray
|
|
27
|
+
gray400: "hsl(0 0% 70%)",
|
|
28
|
+
// Silver
|
|
29
|
+
gray500: "hsl(215 16% 47%)",
|
|
30
|
+
// Steel Blue
|
|
31
|
+
gray600: "hsl(222 47% 11%)",
|
|
32
|
+
// Oxford Blue
|
|
33
|
+
gray700: "hsl(0 0% 18%)",
|
|
34
|
+
// Raisin Black
|
|
35
|
+
gray800: "hsl(0 0% 15%)",
|
|
36
|
+
// Jet
|
|
37
|
+
gray900: "hsl(0 0% 14%)",
|
|
38
|
+
// Eerie Black
|
|
39
|
+
gray950: "hsl(0 0% 11%)",
|
|
40
|
+
// Night (alt)
|
|
41
|
+
gray975: "hsl(0 0% 9%)",
|
|
42
|
+
// Night
|
|
43
|
+
gray990: "hsl(0 0% 6%)"
|
|
44
|
+
// Black (almost)
|
|
45
|
+
},
|
|
46
|
+
semantic: {
|
|
47
|
+
success: "hsl(93 28% 54%)",
|
|
48
|
+
// Asparagus / Pistachio
|
|
49
|
+
successDark: "hsl(96 44% 61%)",
|
|
50
|
+
destructive: "hsl(0 84.2% 60.2%)",
|
|
51
|
+
// Vivid Red
|
|
52
|
+
destructiveDark: "hsl(0 62.8% 30.6%)"
|
|
53
|
+
// Blood Red
|
|
54
|
+
}
|
|
55
|
+
}, i = {
|
|
56
|
+
light: {
|
|
57
|
+
background: e.neutral.gray50,
|
|
58
|
+
foreground: e.neutral.gray600,
|
|
59
|
+
card: e.neutral.white,
|
|
60
|
+
cardForeground: e.neutral.gray600,
|
|
61
|
+
popover: e.neutral.white,
|
|
62
|
+
popoverForeground: e.neutral.gray600,
|
|
63
|
+
primary: e.brand.blue,
|
|
64
|
+
primaryForeground: e.neutral.white,
|
|
65
|
+
secondary: e.semantic.success,
|
|
66
|
+
secondaryForeground: e.neutral.white,
|
|
67
|
+
muted: e.neutral.gray100,
|
|
68
|
+
mutedForeground: e.neutral.gray500,
|
|
69
|
+
accent: e.neutral.gray300,
|
|
70
|
+
accentForeground: e.neutral.gray600,
|
|
71
|
+
destructive: e.semantic.destructive,
|
|
72
|
+
destructiveForeground: e.neutral.white,
|
|
73
|
+
border: e.neutral.gray200,
|
|
74
|
+
input: e.neutral.gray200,
|
|
75
|
+
ring: e.neutral.gray600,
|
|
76
|
+
radius: "0.5rem"
|
|
77
|
+
},
|
|
78
|
+
dark: {
|
|
79
|
+
background: e.neutral.gray975,
|
|
80
|
+
foreground: e.neutral.white,
|
|
81
|
+
card: e.neutral.gray900,
|
|
82
|
+
cardForeground: e.neutral.white,
|
|
83
|
+
popover: e.neutral.gray950,
|
|
84
|
+
popoverForeground: e.neutral.white,
|
|
85
|
+
primary: "hsl(227 96% 71%)",
|
|
86
|
+
// Keeping as specific HSL to match original
|
|
87
|
+
primaryForeground: e.neutral.gray975,
|
|
88
|
+
secondary: e.semantic.successDark,
|
|
89
|
+
secondaryForeground: e.neutral.gray975,
|
|
90
|
+
muted: e.neutral.gray990,
|
|
91
|
+
mutedForeground: e.neutral.gray400,
|
|
92
|
+
accent: e.neutral.gray800,
|
|
93
|
+
accentForeground: e.neutral.white,
|
|
94
|
+
destructive: e.semantic.destructiveDark,
|
|
95
|
+
destructiveForeground: e.neutral.white,
|
|
96
|
+
border: e.neutral.gray700,
|
|
97
|
+
input: e.neutral.gray700,
|
|
98
|
+
ring: "hsl(0 0% 90%)",
|
|
99
|
+
// Platinum
|
|
100
|
+
radius: "0.5rem"
|
|
101
|
+
}
|
|
102
|
+
}, B = {
|
|
103
|
+
palette: e,
|
|
104
|
+
theme: i
|
|
105
|
+
};
|
|
106
|
+
function D() {
|
|
107
|
+
const t = b(), { resolvedTheme: n } = t, a = n === "dark" ? i.dark : i.light;
|
|
108
|
+
return {
|
|
109
|
+
...t,
|
|
110
|
+
tokens: a
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
function E({ variant: t = "binary", onThemeChange: n, customTheme: a, className: u }) {
|
|
114
|
+
const { theme: k, setTheme: w, resolvedTheme: v } = D(), h = a ?? k, g = (a || v) === "dark", o = h === "system", l = (m) => {
|
|
115
|
+
n ? n(m) : w(m);
|
|
116
|
+
}, d = () => /* @__PURE__ */ r.jsxs(r.Fragment, { children: [
|
|
117
|
+
/* @__PURE__ */ r.jsx(
|
|
118
|
+
y,
|
|
119
|
+
{
|
|
120
|
+
className: s(
|
|
121
|
+
"h-[1.2rem] w-[1.2rem] transition-all",
|
|
122
|
+
!o && !g ? "rotate-0 scale-100" : "-rotate-90 scale-0"
|
|
123
|
+
)
|
|
124
|
+
}
|
|
125
|
+
),
|
|
126
|
+
/* @__PURE__ */ r.jsx(
|
|
127
|
+
p,
|
|
128
|
+
{
|
|
129
|
+
className: s(
|
|
130
|
+
"absolute h-[1.2rem] w-[1.2rem] transition-all",
|
|
131
|
+
!o && g ? "rotate-0 scale-100" : "rotate-90 scale-0"
|
|
132
|
+
)
|
|
133
|
+
}
|
|
134
|
+
),
|
|
135
|
+
/* @__PURE__ */ r.jsx(
|
|
136
|
+
x,
|
|
137
|
+
{
|
|
138
|
+
className: s(
|
|
139
|
+
"absolute h-[1.2rem] w-[1.2rem] transition-all",
|
|
140
|
+
o ? "rotate-0 scale-100" : "rotate-90 scale-0"
|
|
141
|
+
)
|
|
142
|
+
}
|
|
143
|
+
),
|
|
144
|
+
/* @__PURE__ */ r.jsx("span", { className: "sr-only", children: "Toggle theme" })
|
|
145
|
+
] });
|
|
146
|
+
return t === "ternary" ? /* @__PURE__ */ r.jsxs(T, { children: [
|
|
147
|
+
/* @__PURE__ */ r.jsx(f, { asChild: !0, children: /* @__PURE__ */ r.jsx(j, { variant: "ghost", size: "icon", className: s("relative h-9 w-9", u), children: /* @__PURE__ */ r.jsx(d, {}) }) }),
|
|
148
|
+
/* @__PURE__ */ r.jsxs(F, { align: "end", children: [
|
|
149
|
+
/* @__PURE__ */ r.jsxs(c, { onClick: () => l("light"), children: [
|
|
150
|
+
/* @__PURE__ */ r.jsx(y, { className: "mr-2 h-4 w-4" }),
|
|
151
|
+
/* @__PURE__ */ r.jsx("span", { children: "Light" })
|
|
152
|
+
] }),
|
|
153
|
+
/* @__PURE__ */ r.jsxs(c, { onClick: () => l("dark"), children: [
|
|
154
|
+
/* @__PURE__ */ r.jsx(p, { className: "mr-2 h-4 w-4" }),
|
|
155
|
+
/* @__PURE__ */ r.jsx("span", { children: "Dark" })
|
|
156
|
+
] }),
|
|
157
|
+
/* @__PURE__ */ r.jsxs(c, { onClick: () => l("system"), children: [
|
|
158
|
+
/* @__PURE__ */ r.jsx(x, { className: "mr-2 h-4 w-4" }),
|
|
159
|
+
/* @__PURE__ */ r.jsx("span", { children: "System" })
|
|
160
|
+
] })
|
|
161
|
+
] })
|
|
162
|
+
] }) : /* @__PURE__ */ r.jsx(
|
|
163
|
+
j,
|
|
164
|
+
{
|
|
165
|
+
variant: "ghost",
|
|
166
|
+
size: "icon",
|
|
167
|
+
className: s("relative h-9 w-9", u),
|
|
168
|
+
onClick: () => l(h === "dark" ? "light" : "dark"),
|
|
169
|
+
"aria-label": "Toggle theme",
|
|
170
|
+
children: /* @__PURE__ */ r.jsx(d, {})
|
|
171
|
+
}
|
|
172
|
+
);
|
|
173
|
+
}
|
|
174
|
+
export {
|
|
175
|
+
E as T,
|
|
176
|
+
B as a,
|
|
177
|
+
e as p,
|
|
178
|
+
i as t,
|
|
179
|
+
D as u
|
|
180
|
+
};
|
|
181
|
+
//# sourceMappingURL=theme-toggle-CCUkxY6o.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-toggle-CCUkxY6o.mjs","sources":["../src/theme/tokens.ts","../src/hooks/use-theme.ts","../src/components/ui/theme-toggle.tsx"],"sourcesContent":["/**\n * Design system tokens for Garcia Ventures.\n * This file defines the core palette and semantic tokens for the theme system.\n */\n\nexport const palette = {\n brand: {\n blue: 'hsl(225 73% 57%)', // Royal Blue (Intellect)\n green: 'hsl(151 66% 27%)', // #177245 (Stability)\n floralWhite: 'hsl(40 100% 97%)', // Light Neutral / Floral White\n },\n neutral: {\n white: 'hsl(0 0% 100%)',\n black: 'hsl(0 0% 0%)', // Pure Black\n gray50: 'hsl(0 0% 96%)', // White Smoke\n gray100: 'hsl(0 0% 92%)', // Gainsboro\n gray200: 'hsl(0 0% 89%)', // Light Gray\n gray300: 'hsl(0 0% 88%)', // French Gray\n gray400: 'hsl(0 0% 70%)', // Silver\n gray500: 'hsl(215 16% 47%)', // Steel Blue\n gray600: 'hsl(222 47% 11%)', // Oxford Blue\n gray700: 'hsl(0 0% 18%)', // Raisin Black\n gray800: 'hsl(0 0% 15%)', // Jet\n gray900: 'hsl(0 0% 14%)', // Eerie Black\n gray950: 'hsl(0 0% 11%)', // Night (alt)\n gray975: 'hsl(0 0% 9%)', // Night\n gray990: 'hsl(0 0% 6%)', // Black (almost)\n },\n semantic: {\n success: 'hsl(93 28% 54%)', // Asparagus / Pistachio\n successDark: 'hsl(96 44% 61%)',\n destructive: 'hsl(0 84.2% 60.2%)', // Vivid Red\n destructiveDark: 'hsl(0 62.8% 30.6%)', // Blood Red\n },\n} as const;\n\nexport const theme = {\n light: {\n background: palette.neutral.gray50,\n foreground: palette.neutral.gray600,\n card: palette.neutral.white,\n cardForeground: palette.neutral.gray600,\n popover: palette.neutral.white,\n popoverForeground: palette.neutral.gray600,\n primary: palette.brand.blue,\n primaryForeground: palette.neutral.white,\n secondary: palette.semantic.success,\n secondaryForeground: palette.neutral.white,\n muted: palette.neutral.gray100,\n mutedForeground: palette.neutral.gray500,\n accent: palette.neutral.gray300,\n accentForeground: palette.neutral.gray600,\n destructive: palette.semantic.destructive,\n destructiveForeground: palette.neutral.white,\n border: palette.neutral.gray200,\n input: palette.neutral.gray200,\n ring: palette.neutral.gray600,\n radius: '0.5rem',\n },\n dark: {\n background: palette.neutral.gray975,\n foreground: palette.neutral.white,\n card: palette.neutral.gray900,\n cardForeground: palette.neutral.white,\n popover: palette.neutral.gray950,\n popoverForeground: palette.neutral.white,\n primary: 'hsl(227 96% 71%)', // Keeping as specific HSL to match original\n primaryForeground: palette.neutral.gray975,\n secondary: palette.semantic.successDark,\n secondaryForeground: palette.neutral.gray975,\n muted: palette.neutral.gray990,\n mutedForeground: palette.neutral.gray400,\n accent: palette.neutral.gray800,\n accentForeground: palette.neutral.white,\n destructive: palette.semantic.destructiveDark,\n destructiveForeground: palette.neutral.white,\n border: palette.neutral.gray700,\n input: palette.neutral.gray700,\n ring: 'hsl(0 0% 90%)', // Platinum\n radius: '0.5rem',\n },\n} as const;\n\nexport const tokens = {\n palette,\n theme,\n} as const;\n\nexport type ThemeTokens = typeof theme.light;\nexport type PaletteTokens = typeof palette;\n","import { theme } from '@/theme/tokens';\nimport { useTheme as useNextTheme } from 'next-themes';\n\nexport function useTheme() {\n const context = useNextTheme();\n const { resolvedTheme } = context;\n\n // Default to light theme tokens if resolvedTheme is undefined or invalid\n const activeTokens = resolvedTheme === 'dark' ? theme.dark : theme.light;\n\n return {\n ...context,\n tokens: activeTokens,\n };\n}\n","import { Button } from '@/components/ui/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\nimport { useTheme } from '@/hooks/use-theme';\nimport { cn } from '@/lib/utils';\nimport { Moon, Sun, SunMoon } from 'lucide-react';\n\nexport interface ThemeToggleProps {\n /**\n * The mode of the theme toggle. 'binary' allows toggling between light and dark. 'ternary' allows choosing between\n * light, dark, and system.\n *\n * @default 'binary'\n */\n variant?: 'binary' | 'ternary';\n /** Optional callback when the theme changes. */\n onThemeChange?: (theme: string) => void;\n /** Optional current theme value for external control. */\n customTheme?: string;\n /** Optional className for the button. */\n className?: string;\n}\n\nexport function ThemeToggle({ variant = 'binary', onThemeChange, customTheme, className }: ThemeToggleProps) {\n const { theme: nextTheme, setTheme: setNextTheme, resolvedTheme } = useTheme();\n\n // Use customTheme if provided, otherwise fallback to next-themes\n const currentTheme = customTheme ?? nextTheme;\n\n // Determine the effective theme for icon rendering\n const effectiveTheme = customTheme ? customTheme : resolvedTheme;\n const isDark = effectiveTheme === 'dark';\n const isSystem = currentTheme === 'system';\n\n const handleThemeChange = (newTheme: string) => {\n if (onThemeChange) {\n onThemeChange(newTheme);\n } else {\n setNextTheme(newTheme);\n }\n };\n\n const IconToggle = () => (\n <>\n <Sun\n className={cn(\n 'h-[1.2rem] w-[1.2rem] transition-all',\n !isSystem && !isDark ? 'rotate-0 scale-100' : '-rotate-90 scale-0',\n )}\n />\n <Moon\n className={cn(\n 'absolute h-[1.2rem] w-[1.2rem] transition-all',\n !isSystem && isDark ? 'rotate-0 scale-100' : 'rotate-90 scale-0',\n )}\n />\n <SunMoon\n className={cn(\n 'absolute h-[1.2rem] w-[1.2rem] transition-all',\n isSystem ? 'rotate-0 scale-100' : 'rotate-90 scale-0',\n )}\n />\n <span className=\"sr-only\">Toggle theme</span>\n </>\n );\n\n if (variant === 'ternary') {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className={cn('relative h-9 w-9', className)}>\n <IconToggle />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={() => handleThemeChange('light')}>\n <Sun className=\"mr-2 h-4 w-4\" />\n <span>Light</span>\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => handleThemeChange('dark')}>\n <Moon className=\"mr-2 h-4 w-4\" />\n <span>Dark</span>\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => handleThemeChange('system')}>\n <SunMoon className=\"mr-2 h-4 w-4\" />\n <span>System</span>\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n }\n\n return (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className={cn('relative h-9 w-9', className)}\n onClick={() => handleThemeChange(currentTheme === 'dark' ? 'light' : 'dark')}\n aria-label=\"Toggle theme\"\n >\n <IconToggle />\n </Button>\n );\n}\n"],"names":["palette","theme","tokens","useTheme","context","useNextTheme","resolvedTheme","activeTokens","ThemeToggle","variant","onThemeChange","customTheme","className","nextTheme","setNextTheme","currentTheme","isDark","isSystem","handleThemeChange","newTheme","IconToggle","jsxs","Fragment","jsx","Sun","cn","Moon","SunMoon","DropdownMenu","DropdownMenuTrigger","Button","DropdownMenuContent","DropdownMenuItem"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const r=require("./vendor-CIyDEr7H.js"),x=require("./button.cjs.js"),t=require("./dropdown-menu.cjs.js"),k=require("next-themes"),n=require("./utils-CUFNKXRW.js"),e={brand:{blue:"hsl(225 73% 57%)",green:"hsl(151 66% 27%)",floralWhite:"hsl(40 100% 97%)"},neutral:{white:"hsl(0 0% 100%)",black:"hsl(0 0% 0%)",gray50:"hsl(0 0% 96%)",gray100:"hsl(0 0% 92%)",gray200:"hsl(0 0% 89%)",gray300:"hsl(0 0% 88%)",gray400:"hsl(0 0% 70%)",gray500:"hsl(215 16% 47%)",gray600:"hsl(222 47% 11%)",gray700:"hsl(0 0% 18%)",gray800:"hsl(0 0% 15%)",gray900:"hsl(0 0% 14%)",gray950:"hsl(0 0% 11%)",gray975:"hsl(0 0% 9%)",gray990:"hsl(0 0% 6%)"},semantic:{success:"hsl(93 28% 54%)",successDark:"hsl(96 44% 61%)",destructive:"hsl(0 84.2% 60.2%)",destructiveDark:"hsl(0 62.8% 30.6%)"}},l={light:{background:e.neutral.gray50,foreground:e.neutral.gray600,card:e.neutral.white,cardForeground:e.neutral.gray600,popover:e.neutral.white,popoverForeground:e.neutral.gray600,primary:e.brand.blue,primaryForeground:e.neutral.white,secondary:e.semantic.success,secondaryForeground:e.neutral.white,muted:e.neutral.gray100,mutedForeground:e.neutral.gray500,accent:e.neutral.gray300,accentForeground:e.neutral.gray600,destructive:e.semantic.destructive,destructiveForeground:e.neutral.white,border:e.neutral.gray200,input:e.neutral.gray200,ring:e.neutral.gray600,radius:"0.5rem"},dark:{background:e.neutral.gray975,foreground:e.neutral.white,card:e.neutral.gray900,cardForeground:e.neutral.white,popover:e.neutral.gray950,popoverForeground:e.neutral.white,primary:"hsl(227 96% 71%)",primaryForeground:e.neutral.gray975,secondary:e.semantic.successDark,secondaryForeground:e.neutral.gray975,muted:e.neutral.gray990,mutedForeground:e.neutral.gray400,accent:e.neutral.gray800,accentForeground:e.neutral.white,destructive:e.semantic.destructiveDark,destructiveForeground:e.neutral.white,border:e.neutral.gray700,input:e.neutral.gray700,ring:"hsl(0 0% 90%)",radius:"0.5rem"}},v={palette:e,theme:l};function p(){const a=k.useTheme(),{resolvedTheme:o}=a,s=o==="dark"?l.dark:l.light;return{...a,tokens:s}}function E({variant:a="binary",onThemeChange:o,customTheme:s,className:c}){const{theme:y,setTheme:j,resolvedTheme:w}=p(),h=s??y,d=(s||w)==="dark",i=h==="system",u=m=>{o?o(m):j(m)},g=()=>r.jsxRuntimeExports.jsxs(r.jsxRuntimeExports.Fragment,{children:[r.jsxRuntimeExports.jsx(r.Sun,{className:n.cn("h-[1.2rem] w-[1.2rem] transition-all",!i&&!d?"rotate-0 scale-100":"-rotate-90 scale-0")}),r.jsxRuntimeExports.jsx(r.Moon,{className:n.cn("absolute h-[1.2rem] w-[1.2rem] transition-all",!i&&d?"rotate-0 scale-100":"rotate-90 scale-0")}),r.jsxRuntimeExports.jsx(r.SunMoon,{className:n.cn("absolute h-[1.2rem] w-[1.2rem] transition-all",i?"rotate-0 scale-100":"rotate-90 scale-0")}),r.jsxRuntimeExports.jsx("span",{className:"sr-only",children:"Toggle theme"})]});return a==="ternary"?r.jsxRuntimeExports.jsxs(t.DropdownMenu,{children:[r.jsxRuntimeExports.jsx(t.DropdownMenuTrigger,{asChild:!0,children:r.jsxRuntimeExports.jsx(x.Button,{variant:"ghost",size:"icon",className:n.cn("relative h-9 w-9",c),children:r.jsxRuntimeExports.jsx(g,{})})}),r.jsxRuntimeExports.jsxs(t.DropdownMenuContent,{align:"end",children:[r.jsxRuntimeExports.jsxs(t.DropdownMenuItem,{onClick:()=>u("light"),children:[r.jsxRuntimeExports.jsx(r.Sun,{className:"mr-2 h-4 w-4"}),r.jsxRuntimeExports.jsx("span",{children:"Light"})]}),r.jsxRuntimeExports.jsxs(t.DropdownMenuItem,{onClick:()=>u("dark"),children:[r.jsxRuntimeExports.jsx(r.Moon,{className:"mr-2 h-4 w-4"}),r.jsxRuntimeExports.jsx("span",{children:"Dark"})]}),r.jsxRuntimeExports.jsxs(t.DropdownMenuItem,{onClick:()=>u("system"),children:[r.jsxRuntimeExports.jsx(r.SunMoon,{className:"mr-2 h-4 w-4"}),r.jsxRuntimeExports.jsx("span",{children:"System"})]})]})]}):r.jsxRuntimeExports.jsx(x.Button,{variant:"ghost",size:"icon",className:n.cn("relative h-9 w-9",c),onClick:()=>u(h==="dark"?"light":"dark"),"aria-label":"Toggle theme",children:r.jsxRuntimeExports.jsx(g,{})})}exports.ThemeToggle=E;exports.palette=e;exports.theme=l;exports.tokens=v;exports.useTheme=p;
|
|
2
|
+
//# sourceMappingURL=theme-toggle-Dc_nm_32.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-toggle-Dc_nm_32.js","sources":["../src/theme/tokens.ts","../src/hooks/use-theme.ts","../src/components/ui/theme-toggle.tsx"],"sourcesContent":["/**\n * Design system tokens for Garcia Ventures.\n * This file defines the core palette and semantic tokens for the theme system.\n */\n\nexport const palette = {\n brand: {\n blue: 'hsl(225 73% 57%)', // Royal Blue (Intellect)\n green: 'hsl(151 66% 27%)', // #177245 (Stability)\n floralWhite: 'hsl(40 100% 97%)', // Light Neutral / Floral White\n },\n neutral: {\n white: 'hsl(0 0% 100%)',\n black: 'hsl(0 0% 0%)', // Pure Black\n gray50: 'hsl(0 0% 96%)', // White Smoke\n gray100: 'hsl(0 0% 92%)', // Gainsboro\n gray200: 'hsl(0 0% 89%)', // Light Gray\n gray300: 'hsl(0 0% 88%)', // French Gray\n gray400: 'hsl(0 0% 70%)', // Silver\n gray500: 'hsl(215 16% 47%)', // Steel Blue\n gray600: 'hsl(222 47% 11%)', // Oxford Blue\n gray700: 'hsl(0 0% 18%)', // Raisin Black\n gray800: 'hsl(0 0% 15%)', // Jet\n gray900: 'hsl(0 0% 14%)', // Eerie Black\n gray950: 'hsl(0 0% 11%)', // Night (alt)\n gray975: 'hsl(0 0% 9%)', // Night\n gray990: 'hsl(0 0% 6%)', // Black (almost)\n },\n semantic: {\n success: 'hsl(93 28% 54%)', // Asparagus / Pistachio\n successDark: 'hsl(96 44% 61%)',\n destructive: 'hsl(0 84.2% 60.2%)', // Vivid Red\n destructiveDark: 'hsl(0 62.8% 30.6%)', // Blood Red\n },\n} as const;\n\nexport const theme = {\n light: {\n background: palette.neutral.gray50,\n foreground: palette.neutral.gray600,\n card: palette.neutral.white,\n cardForeground: palette.neutral.gray600,\n popover: palette.neutral.white,\n popoverForeground: palette.neutral.gray600,\n primary: palette.brand.blue,\n primaryForeground: palette.neutral.white,\n secondary: palette.semantic.success,\n secondaryForeground: palette.neutral.white,\n muted: palette.neutral.gray100,\n mutedForeground: palette.neutral.gray500,\n accent: palette.neutral.gray300,\n accentForeground: palette.neutral.gray600,\n destructive: palette.semantic.destructive,\n destructiveForeground: palette.neutral.white,\n border: palette.neutral.gray200,\n input: palette.neutral.gray200,\n ring: palette.neutral.gray600,\n radius: '0.5rem',\n },\n dark: {\n background: palette.neutral.gray975,\n foreground: palette.neutral.white,\n card: palette.neutral.gray900,\n cardForeground: palette.neutral.white,\n popover: palette.neutral.gray950,\n popoverForeground: palette.neutral.white,\n primary: 'hsl(227 96% 71%)', // Keeping as specific HSL to match original\n primaryForeground: palette.neutral.gray975,\n secondary: palette.semantic.successDark,\n secondaryForeground: palette.neutral.gray975,\n muted: palette.neutral.gray990,\n mutedForeground: palette.neutral.gray400,\n accent: palette.neutral.gray800,\n accentForeground: palette.neutral.white,\n destructive: palette.semantic.destructiveDark,\n destructiveForeground: palette.neutral.white,\n border: palette.neutral.gray700,\n input: palette.neutral.gray700,\n ring: 'hsl(0 0% 90%)', // Platinum\n radius: '0.5rem',\n },\n} as const;\n\nexport const tokens = {\n palette,\n theme,\n} as const;\n\nexport type ThemeTokens = typeof theme.light;\nexport type PaletteTokens = typeof palette;\n","import { theme } from '@/theme/tokens';\nimport { useTheme as useNextTheme } from 'next-themes';\n\nexport function useTheme() {\n const context = useNextTheme();\n const { resolvedTheme } = context;\n\n // Default to light theme tokens if resolvedTheme is undefined or invalid\n const activeTokens = resolvedTheme === 'dark' ? theme.dark : theme.light;\n\n return {\n ...context,\n tokens: activeTokens,\n };\n}\n","import { Button } from '@/components/ui/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\nimport { useTheme } from '@/hooks/use-theme';\nimport { cn } from '@/lib/utils';\nimport { Moon, Sun, SunMoon } from 'lucide-react';\n\nexport interface ThemeToggleProps {\n /**\n * The mode of the theme toggle. 'binary' allows toggling between light and dark. 'ternary' allows choosing between\n * light, dark, and system.\n *\n * @default 'binary'\n */\n variant?: 'binary' | 'ternary';\n /** Optional callback when the theme changes. */\n onThemeChange?: (theme: string) => void;\n /** Optional current theme value for external control. */\n customTheme?: string;\n /** Optional className for the button. */\n className?: string;\n}\n\nexport function ThemeToggle({ variant = 'binary', onThemeChange, customTheme, className }: ThemeToggleProps) {\n const { theme: nextTheme, setTheme: setNextTheme, resolvedTheme } = useTheme();\n\n // Use customTheme if provided, otherwise fallback to next-themes\n const currentTheme = customTheme ?? nextTheme;\n\n // Determine the effective theme for icon rendering\n const effectiveTheme = customTheme ? customTheme : resolvedTheme;\n const isDark = effectiveTheme === 'dark';\n const isSystem = currentTheme === 'system';\n\n const handleThemeChange = (newTheme: string) => {\n if (onThemeChange) {\n onThemeChange(newTheme);\n } else {\n setNextTheme(newTheme);\n }\n };\n\n const IconToggle = () => (\n <>\n <Sun\n className={cn(\n 'h-[1.2rem] w-[1.2rem] transition-all',\n !isSystem && !isDark ? 'rotate-0 scale-100' : '-rotate-90 scale-0',\n )}\n />\n <Moon\n className={cn(\n 'absolute h-[1.2rem] w-[1.2rem] transition-all',\n !isSystem && isDark ? 'rotate-0 scale-100' : 'rotate-90 scale-0',\n )}\n />\n <SunMoon\n className={cn(\n 'absolute h-[1.2rem] w-[1.2rem] transition-all',\n isSystem ? 'rotate-0 scale-100' : 'rotate-90 scale-0',\n )}\n />\n <span className=\"sr-only\">Toggle theme</span>\n </>\n );\n\n if (variant === 'ternary') {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className={cn('relative h-9 w-9', className)}>\n <IconToggle />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={() => handleThemeChange('light')}>\n <Sun className=\"mr-2 h-4 w-4\" />\n <span>Light</span>\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => handleThemeChange('dark')}>\n <Moon className=\"mr-2 h-4 w-4\" />\n <span>Dark</span>\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => handleThemeChange('system')}>\n <SunMoon className=\"mr-2 h-4 w-4\" />\n <span>System</span>\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n }\n\n return (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className={cn('relative h-9 w-9', className)}\n onClick={() => handleThemeChange(currentTheme === 'dark' ? 'light' : 'dark')}\n aria-label=\"Toggle theme\"\n >\n <IconToggle />\n </Button>\n );\n}\n"],"names":["palette","theme","tokens","useTheme","context","useNextTheme","resolvedTheme","activeTokens","ThemeToggle","variant","onThemeChange","customTheme","className","nextTheme","setNextTheme","currentTheme","isDark","isSystem","handleThemeChange","newTheme","IconToggle","jsxs","Fragment","jsx","Sun","cn","Moon","SunMoon","DropdownMenu","DropdownMenuTrigger","Button","DropdownMenuContent","DropdownMenuItem"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("./vendor-CIyDEr7H.js");require("./button.cjs.js");require("./dropdown-menu.cjs.js");const e=require("./theme-toggle-Dc_nm_32.js");require("./utils-CUFNKXRW.js");exports.ThemeToggle=e.ThemeToggle;
|
|
2
|
+
//# sourceMappingURL=theme-toggle.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-toggle.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-toggle.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./vendor-CIyDEr7H.js"),m=require("react"),r=require("./utils-CUFNKXRW.js");function f(t){const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const o in t)if(o!=="default"){const i=Object.getOwnPropertyDescriptor(t,o);Object.defineProperty(s,o,i.get?i:{enumerable:!0,get:()=>t[o]})}}return s.default=t,Object.freeze(s)}const a=f(m),x=e.Provider,n=a.forwardRef(({className:t,...s},o)=>e.jsxRuntimeExports.jsx(e.Viewport$3,{ref:o,className:r.cn("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",t),...s}));n.displayName=e.Viewport$3.displayName;const v=e.cva("group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),d=a.forwardRef(({className:t,variant:s,...o},i)=>e.jsxRuntimeExports.jsx(e.Root2$10,{ref:i,className:r.cn(v({variant:s}),t),...o}));d.displayName=e.Root2$10.displayName;const c=a.forwardRef(({className:t,...s},o)=>e.jsxRuntimeExports.jsx(e.Action$1,{ref:o,className:r.cn("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",t),...s}));c.displayName=e.Action$1.displayName;const u=a.forwardRef(({className:t,...s},o)=>e.jsxRuntimeExports.jsx(e.Close$1,{ref:o,className:r.cn("absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",t),"toast-close":"",...s,children:e.jsxRuntimeExports.jsx(e.X,{className:"h-4 w-4"})}));u.displayName=e.Close$1.displayName;const l=a.forwardRef(({className:t,...s},o)=>e.jsxRuntimeExports.jsx(e.Title$1,{ref:o,className:r.cn("text-sm font-semibold [&+div]:text-xs",t),...s}));l.displayName=e.Title$1.displayName;const p=a.forwardRef(({className:t,...s},o)=>e.jsxRuntimeExports.jsx(e.Description$1,{ref:o,className:r.cn("text-sm opacity-90",t),...s}));p.displayName=e.Description$1.displayName;exports.Toast=d;exports.ToastAction=c;exports.ToastClose=u;exports.ToastDescription=p;exports.ToastProvider=x;exports.ToastTitle=l;exports.ToastViewport=n;
|
|
2
|
+
//# sourceMappingURL=toast.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toast.cjs.js","sources":["../src/components/ui/toast.tsx"],"sourcesContent":["import * as ToastPrimitives from '@radix-ui/react-toast';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { X } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nconst ToastProvider = ToastPrimitives.Provider;\n\nconst ToastViewport = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Viewport>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Viewport\n ref={ref}\n className={cn(\n 'fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]',\n className,\n )}\n {...props}\n />\n));\nToastViewport.displayName = ToastPrimitives.Viewport.displayName;\n\nconst toastVariants = cva(\n 'group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full',\n {\n variants: {\n variant: {\n default: 'border bg-background text-foreground',\n destructive: 'destructive group border-destructive bg-destructive text-destructive-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nconst Toast = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> & VariantProps<typeof toastVariants>\n>(({ className, variant, ...props }, ref) => {\n return <ToastPrimitives.Root ref={ref} className={cn(toastVariants({ variant }), className)} {...props} />;\n});\nToast.displayName = ToastPrimitives.Root.displayName;\n\nconst ToastAction = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Action>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Action\n ref={ref}\n className={cn(\n 'inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive',\n className,\n )}\n {...props}\n />\n));\nToastAction.displayName = ToastPrimitives.Action.displayName;\n\nconst ToastClose = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Close>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Close\n ref={ref}\n className={cn(\n 'absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600',\n className,\n )}\n toast-close=\"\"\n {...props}\n >\n <X className=\"h-4 w-4\" />\n </ToastPrimitives.Close>\n));\nToastClose.displayName = ToastPrimitives.Close.displayName;\n\nconst ToastTitle = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Title>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Title ref={ref} className={cn('text-sm font-semibold [&+div]:text-xs', className)} {...props} />\n));\nToastTitle.displayName = ToastPrimitives.Title.displayName;\n\nconst ToastDescription = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Description>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Description ref={ref} className={cn('text-sm opacity-90', className)} {...props} />\n));\nToastDescription.displayName = ToastPrimitives.Description.displayName;\n\ntype ToastProps = React.ComponentPropsWithoutRef<typeof Toast>;\n\ntype ToastActionElement = React.ReactElement<typeof ToastAction>;\n\nexport {\n Toast,\n ToastAction,\n ToastClose,\n ToastDescription,\n ToastProvider,\n ToastTitle,\n ToastViewport,\n type ToastActionElement,\n type ToastProps,\n};\n"],"names":["ToastProvider","ToastPrimitives.Provider","ToastViewport","React","className","props","ref","jsx","ToastPrimitives.Viewport","cn","toastVariants","cva","Toast","variant","ToastPrimitives.Root","ToastAction","ToastPrimitives.Action","ToastClose","ToastPrimitives.Close","X","ToastTitle","ToastPrimitives.Title","ToastDescription","ToastPrimitives.Description"],"mappings":"scAOMA,EAAgBC,EAAAA,SAEhBC,EAAgBC,EAAM,WAG1B,CAAC,CAAE,UAAAC,EAAW,GAAGC,CAAA,EAASC,IAC1BC,EAAAA,kBAAAA,IAACC,EAAAA,WAAA,CACC,IAAAF,EACA,UAAWG,EAAAA,GACT,oIACAL,CAAA,EAED,GAAGC,CAAA,CACN,CACD,EACDH,EAAc,YAAcM,EAAAA,WAAyB,YAErD,MAAME,EAAgBC,EAAAA,IACpB,4lBACA,CACE,SAAU,CACR,QAAS,CACP,QAAS,uCACT,YAAa,iFAAA,CACf,EAEF,gBAAiB,CACf,QAAS,SAAA,CACX,CAEJ,EAEMC,EAAQT,EAAM,WAGlB,CAAC,CAAE,UAAAC,EAAW,QAAAS,EAAS,GAAGR,CAAA,EAASC,IAC5BC,EAAAA,kBAAAA,IAACO,EAAAA,SAAA,CAAqB,IAAAR,EAAU,UAAWG,EAAAA,GAAGC,EAAc,CAAE,QAAAG,EAAS,EAAGT,CAAS,EAAI,GAAGC,CAAA,CAAO,CACzG,EACDO,EAAM,YAAcE,EAAAA,SAAqB,YAEzC,MAAMC,EAAcZ,EAAM,WAGxB,CAAC,CAAE,UAAAC,EAAW,GAAGC,CAAA,EAASC,IAC1BC,EAAAA,kBAAAA,IAACS,EAAAA,SAAA,CACC,IAAAV,EACA,UAAWG,EAAAA,GACT,0dACAL,CAAA,EAED,GAAGC,CAAA,CACN,CACD,EACDU,EAAY,YAAcC,EAAAA,SAAuB,YAEjD,MAAMC,EAAad,EAAM,WAGvB,CAAC,CAAE,UAAAC,EAAW,GAAGC,CAAA,EAASC,IAC1BC,EAAAA,kBAAAA,IAACW,EAAAA,QAAA,CACC,IAAAZ,EACA,UAAWG,EAAAA,GACT,wVACAL,CAAA,EAEF,cAAY,GACX,GAAGC,EAEJ,SAAAE,EAAAA,kBAAAA,IAACY,EAAAA,EAAA,CAAE,UAAU,SAAA,CAAU,CAAA,CACzB,CACD,EACDF,EAAW,YAAcC,EAAAA,QAAsB,YAE/C,MAAME,EAAajB,EAAM,WAGvB,CAAC,CAAE,UAAAC,EAAW,GAAGC,CAAA,EAASC,IAC1BC,EAAAA,kBAAAA,IAACc,EAAAA,QAAA,CAAsB,IAAAf,EAAU,UAAWG,EAAAA,GAAG,wCAAyCL,CAAS,EAAI,GAAGC,EAAO,CAChH,EACDe,EAAW,YAAcC,EAAAA,QAAsB,YAE/C,MAAMC,EAAmBnB,EAAM,WAG7B,CAAC,CAAE,UAAAC,EAAW,GAAGC,CAAA,EAASC,IAC1BC,EAAAA,kBAAAA,IAACgB,EAAAA,cAAA,CAA4B,IAAAjB,EAAU,UAAWG,EAAAA,GAAG,qBAAsBL,CAAS,EAAI,GAAGC,EAAO,CACnG,EACDiB,EAAiB,YAAcC,EAAAA,cAA4B"}
|
package/dist/toast.es.js
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { j as a, bL as i, bM as d, bN as n, bO as c, a$ as m, bP as u, bQ as l, g as f, bR as v } from "./vendor-CCQzmGyD.mjs";
|
|
2
|
+
import * as o from "react";
|
|
3
|
+
import { c as r } from "./utils-C9QGdMaH.mjs";
|
|
4
|
+
const T = v, x = o.forwardRef(({ className: e, ...t }, s) => /* @__PURE__ */ a.jsx(
|
|
5
|
+
i,
|
|
6
|
+
{
|
|
7
|
+
ref: s,
|
|
8
|
+
className: r(
|
|
9
|
+
"fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",
|
|
10
|
+
e
|
|
11
|
+
),
|
|
12
|
+
...t
|
|
13
|
+
}
|
|
14
|
+
));
|
|
15
|
+
x.displayName = i.displayName;
|
|
16
|
+
const g = f(
|
|
17
|
+
"group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",
|
|
18
|
+
{
|
|
19
|
+
variants: {
|
|
20
|
+
variant: {
|
|
21
|
+
default: "border bg-background text-foreground",
|
|
22
|
+
destructive: "destructive group border-destructive bg-destructive text-destructive-foreground"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
defaultVariants: {
|
|
26
|
+
variant: "default"
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
), b = o.forwardRef(({ className: e, variant: t, ...s }, p) => /* @__PURE__ */ a.jsx(d, { ref: p, className: r(g({ variant: t }), e), ...s }));
|
|
30
|
+
b.displayName = d.displayName;
|
|
31
|
+
const w = o.forwardRef(({ className: e, ...t }, s) => /* @__PURE__ */ a.jsx(
|
|
32
|
+
n,
|
|
33
|
+
{
|
|
34
|
+
ref: s,
|
|
35
|
+
className: r(
|
|
36
|
+
"inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",
|
|
37
|
+
e
|
|
38
|
+
),
|
|
39
|
+
...t
|
|
40
|
+
}
|
|
41
|
+
));
|
|
42
|
+
w.displayName = n.displayName;
|
|
43
|
+
const y = o.forwardRef(({ className: e, ...t }, s) => /* @__PURE__ */ a.jsx(
|
|
44
|
+
c,
|
|
45
|
+
{
|
|
46
|
+
ref: s,
|
|
47
|
+
className: r(
|
|
48
|
+
"absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",
|
|
49
|
+
e
|
|
50
|
+
),
|
|
51
|
+
"toast-close": "",
|
|
52
|
+
...t,
|
|
53
|
+
children: /* @__PURE__ */ a.jsx(m, { className: "h-4 w-4" })
|
|
54
|
+
}
|
|
55
|
+
));
|
|
56
|
+
y.displayName = c.displayName;
|
|
57
|
+
const N = o.forwardRef(({ className: e, ...t }, s) => /* @__PURE__ */ a.jsx(u, { ref: s, className: r("text-sm font-semibold [&+div]:text-xs", e), ...t }));
|
|
58
|
+
N.displayName = u.displayName;
|
|
59
|
+
const h = o.forwardRef(({ className: e, ...t }, s) => /* @__PURE__ */ a.jsx(l, { ref: s, className: r("text-sm opacity-90", e), ...t }));
|
|
60
|
+
h.displayName = l.displayName;
|
|
61
|
+
export {
|
|
62
|
+
b as Toast,
|
|
63
|
+
w as ToastAction,
|
|
64
|
+
y as ToastClose,
|
|
65
|
+
h as ToastDescription,
|
|
66
|
+
T as ToastProvider,
|
|
67
|
+
N as ToastTitle,
|
|
68
|
+
x as ToastViewport
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=toast.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toast.es.js","sources":["../src/components/ui/toast.tsx"],"sourcesContent":["import * as ToastPrimitives from '@radix-ui/react-toast';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { X } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nconst ToastProvider = ToastPrimitives.Provider;\n\nconst ToastViewport = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Viewport>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Viewport\n ref={ref}\n className={cn(\n 'fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]',\n className,\n )}\n {...props}\n />\n));\nToastViewport.displayName = ToastPrimitives.Viewport.displayName;\n\nconst toastVariants = cva(\n 'group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full',\n {\n variants: {\n variant: {\n default: 'border bg-background text-foreground',\n destructive: 'destructive group border-destructive bg-destructive text-destructive-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nconst Toast = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> & VariantProps<typeof toastVariants>\n>(({ className, variant, ...props }, ref) => {\n return <ToastPrimitives.Root ref={ref} className={cn(toastVariants({ variant }), className)} {...props} />;\n});\nToast.displayName = ToastPrimitives.Root.displayName;\n\nconst ToastAction = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Action>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Action\n ref={ref}\n className={cn(\n 'inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive',\n className,\n )}\n {...props}\n />\n));\nToastAction.displayName = ToastPrimitives.Action.displayName;\n\nconst ToastClose = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Close>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Close\n ref={ref}\n className={cn(\n 'absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600',\n className,\n )}\n toast-close=\"\"\n {...props}\n >\n <X className=\"h-4 w-4\" />\n </ToastPrimitives.Close>\n));\nToastClose.displayName = ToastPrimitives.Close.displayName;\n\nconst ToastTitle = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Title>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Title ref={ref} className={cn('text-sm font-semibold [&+div]:text-xs', className)} {...props} />\n));\nToastTitle.displayName = ToastPrimitives.Title.displayName;\n\nconst ToastDescription = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Description>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Description ref={ref} className={cn('text-sm opacity-90', className)} {...props} />\n));\nToastDescription.displayName = ToastPrimitives.Description.displayName;\n\ntype ToastProps = React.ComponentPropsWithoutRef<typeof Toast>;\n\ntype ToastActionElement = React.ReactElement<typeof ToastAction>;\n\nexport {\n Toast,\n ToastAction,\n ToastClose,\n ToastDescription,\n ToastProvider,\n ToastTitle,\n ToastViewport,\n type ToastActionElement,\n type ToastProps,\n};\n"],"names":["ToastProvider","ToastPrimitives.Provider","ToastViewport","React","className","props","ref","jsx","ToastPrimitives.Viewport","cn","toastVariants","cva","Toast","variant","ToastPrimitives.Root","ToastAction","ToastPrimitives.Action","ToastClose","ToastPrimitives.Close","X","ToastTitle","ToastPrimitives.Title","ToastDescription","ToastPrimitives.Description"],"mappings":";;;AAOA,MAAMA,IAAgBC,GAEhBC,IAAgBC,EAAM,WAG1B,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1BC,gBAAAA,EAAAA;AAAAA,EAACC;AAAAA,EAAA;AAAA,IACC,KAAAF;AAAA,IACA,WAAWG;AAAA,MACT;AAAA,MACAL;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,EAAA;AACN,CACD;AACDH,EAAc,cAAcM,EAAyB;AAErD,MAAME,IAAgBC;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,aAAa;AAAA,MAAA;AAAA,IACf;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ,GAEMC,IAAQT,EAAM,WAGlB,CAAC,EAAE,WAAAC,GAAW,SAAAS,GAAS,GAAGR,EAAA,GAASC,MAC5BC,gBAAAA,EAAAA,IAACO,GAAA,EAAqB,KAAAR,GAAU,WAAWG,EAAGC,EAAc,EAAE,SAAAG,GAAS,GAAGT,CAAS,GAAI,GAAGC,EAAA,CAAO,CACzG;AACDO,EAAM,cAAcE,EAAqB;AAEzC,MAAMC,IAAcZ,EAAM,WAGxB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1BC,gBAAAA,EAAAA;AAAAA,EAACS;AAAAA,EAAA;AAAA,IACC,KAAAV;AAAA,IACA,WAAWG;AAAA,MACT;AAAA,MACAL;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,EAAA;AACN,CACD;AACDU,EAAY,cAAcC,EAAuB;AAEjD,MAAMC,IAAad,EAAM,WAGvB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1BC,gBAAAA,EAAAA;AAAAA,EAACW;AAAAA,EAAA;AAAA,IACC,KAAAZ;AAAA,IACA,WAAWG;AAAA,MACT;AAAA,MACAL;AAAA,IAAA;AAAA,IAEF,eAAY;AAAA,IACX,GAAGC;AAAA,IAEJ,UAAAE,gBAAAA,EAAAA,IAACY,GAAA,EAAE,WAAU,UAAA,CAAU;AAAA,EAAA;AACzB,CACD;AACDF,EAAW,cAAcC,EAAsB;AAE/C,MAAME,IAAajB,EAAM,WAGvB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1BC,gBAAAA,EAAAA,IAACc,GAAA,EAAsB,KAAAf,GAAU,WAAWG,EAAG,yCAAyCL,CAAS,GAAI,GAAGC,GAAO,CAChH;AACDe,EAAW,cAAcC,EAAsB;AAE/C,MAAMC,IAAmBnB,EAAM,WAG7B,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1BC,gBAAAA,EAAAA,IAACgB,GAAA,EAA4B,KAAAjB,GAAU,WAAWG,EAAG,sBAAsBL,CAAS,GAAI,GAAGC,GAAO,CACnG;AACDiB,EAAiB,cAAcC,EAA4B;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const n=require("./vendor-CIyDEr7H.js"),r=require("./toast.cjs.js"),_=require("react");function m(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const s in t)if(s!=="default"){const o=Object.getOwnPropertyDescriptor(t,s);Object.defineProperty(e,s,o.get?o:{enumerable:!0,get:()=>t[s]})}}return e.default=t,Object.freeze(e)}const p=m(_),x=1,D=1e6,c={ADD_TOAST:"ADD_TOAST",UPDATE_TOAST:"UPDATE_TOAST",DISMISS_TOAST:"DISMISS_TOAST",REMOVE_TOAST:"REMOVE_TOAST"};let S=0;function j(){return S=(S+1)%Number.MAX_SAFE_INTEGER,S.toString()}const d=new Map,O=t=>{if(d.has(t))return;const e=setTimeout(()=>{d.delete(t),i({type:"REMOVE_TOAST",toastId:t})},D);d.set(t,e)},A=(t,e)=>{switch(e.type){case c.ADD_TOAST:return{...t,toasts:[e.toast,...t.toasts].slice(0,x)};case c.UPDATE_TOAST:return{...t,toasts:t.toasts.map(s=>s.id===e.toast.id?{...s,...e.toast}:s)};case c.DISMISS_TOAST:{const{toastId:s}=e;return s?O(s):t.toasts.forEach(o=>{O(o.id)}),{...t,toasts:t.toasts.map(o=>o.id===s||s===void 0?{...o,open:!1}:o)}}case c.REMOVE_TOAST:return e.toastId===void 0?{...t,toasts:[]}:{...t,toasts:t.toasts.filter(s=>s.id!==e.toastId)}}},u=[];let a={toasts:[]};function i(t){a=A(a,t),u.forEach(e=>{e(a)})}function E({...t}){const e=j(),s=T=>i({type:"UPDATE_TOAST",toast:{...T,id:e}}),o=()=>i({type:"DISMISS_TOAST",toastId:e});return i({type:"ADD_TOAST",toast:{...t,id:e,open:!0,onOpenChange:T=>{T||o()}}}),{id:e,dismiss:o,update:s}}function f(){const[t,e]=p.useState(a);return p.useEffect(()=>(u.push(e),()=>{const s=u.indexOf(e);s>-1&&u.splice(s,1)}),[t]),{...t,toast:E,dismiss:s=>i({type:"DISMISS_TOAST",toastId:s})}}function R(){const{toasts:t}=f();return n.jsxRuntimeExports.jsxs(r.ToastProvider,{children:[t.map(function({id:e,title:s,description:o,action:T,...l}){return n.jsxRuntimeExports.jsxs(r.Toast,{...l,children:[n.jsxRuntimeExports.jsxs("div",{className:"grid gap-1",children:[s&&n.jsxRuntimeExports.jsx(r.ToastTitle,{children:s}),o&&n.jsxRuntimeExports.jsx(r.ToastDescription,{children:o})]}),T,n.jsxRuntimeExports.jsx(r.ToastClose,{})]},e)}),n.jsxRuntimeExports.jsx(r.ToastViewport,{})]})}exports.Toaster=R;exports.reducer=A;exports.toast=E;exports.useToast=f;
|
|
2
|
+
//# sourceMappingURL=toaster-BjPc-lId.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toaster-BjPc-lId.js","sources":["../src/hooks/use-toast.ts","../src/components/ui/toaster.tsx"],"sourcesContent":["'use client';\n\n// Inspired by react-hot-toast library\nimport * as React from 'react';\n\nimport type { ToastActionElement, ToastProps } from '@/components/ui/toast';\n\nconst TOAST_LIMIT = 1;\nconst TOAST_REMOVE_DELAY = 1000000;\n\ntype ToasterToast = ToastProps & {\n id: string;\n title?: React.ReactNode;\n description?: React.ReactNode;\n action?: ToastActionElement;\n};\n\nconst actionTypes = {\n ADD_TOAST: 'ADD_TOAST',\n UPDATE_TOAST: 'UPDATE_TOAST',\n DISMISS_TOAST: 'DISMISS_TOAST',\n REMOVE_TOAST: 'REMOVE_TOAST',\n} as const;\n\nlet count = 0;\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER;\n return count.toString();\n}\n\ntype ActionType = typeof actionTypes;\n\ntype Action =\n | {\n type: ActionType['ADD_TOAST'];\n toast: ToasterToast;\n }\n | {\n type: ActionType['UPDATE_TOAST'];\n toast: Partial<ToasterToast>;\n }\n | {\n type: ActionType['DISMISS_TOAST'];\n toastId?: ToasterToast['id'];\n }\n | {\n type: ActionType['REMOVE_TOAST'];\n toastId?: ToasterToast['id'];\n };\n\ninterface State {\n toasts: ToasterToast[];\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: 'REMOVE_TOAST',\n toastId: toastId,\n });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case actionTypes.ADD_TOAST:\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case actionTypes.UPDATE_TOAST:\n return {\n ...state,\n toasts: state.toasts.map((t) => (t.id === action.toast.id ? { ...t, ...action.toast } : t)),\n };\n\n case actionTypes.DISMISS_TOAST: {\n const { toastId } = action;\n\n // ! Side effects ! - This could be extracted into a dismissToast() action,\n // but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t,\n ),\n };\n }\n case actionTypes.REMOVE_TOAST:\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [] };\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n}\n\ntype Toast = Omit<ToasterToast, 'id'>;\n\nfunction toast({ ...props }: Toast) {\n const id = genId();\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: 'UPDATE_TOAST',\n toast: { ...props, id },\n });\n const dismiss = () => dispatch({ type: 'DISMISS_TOAST', toastId: id });\n\n dispatch({\n type: 'ADD_TOAST',\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss();\n },\n },\n });\n\n return {\n id: id,\n dismiss,\n update,\n };\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState);\n\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: 'DISMISS_TOAST', toastId }),\n };\n}\n\nexport { toast, useToast };\n","import { Toast, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport } from '@/components/ui/toast';\nimport { useToast } from '@/hooks/use-toast';\n\nexport function Toaster() {\n const { toasts } = useToast();\n\n return (\n <ToastProvider>\n {toasts.map(function ({ id, title, description, action, ...props }) {\n return (\n <Toast key={id} {...props}>\n <div className=\"grid gap-1\">\n {title && <ToastTitle>{title}</ToastTitle>}\n {description && <ToastDescription>{description}</ToastDescription>}\n </div>\n {action}\n <ToastClose />\n </Toast>\n );\n })}\n <ToastViewport />\n </ToastProvider>\n );\n}\n"],"names":["TOAST_LIMIT","TOAST_REMOVE_DELAY","actionTypes","count","genId","toastTimeouts","addToRemoveQueue","toastId","timeout","dispatch","reducer","state","action","t","toast","listeners","memoryState","listener","props","id","update","dismiss","open","useToast","setState","React","index","Toaster","toasts","ToastProvider","title","description","jsxs","Toast","jsx","ToastTitle","ToastDescription","ToastClose","ToastViewport"],"mappings":"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"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { j as T } from "./vendor-CCQzmGyD.mjs";
|
|
2
|
+
import { ToastProvider as p, Toast as E, ToastTitle as _, ToastDescription as f, ToastClose as m, ToastViewport as D } from "./toast.es.js";
|
|
3
|
+
import * as A from "react";
|
|
4
|
+
const l = 1, I = 1e6, a = {
|
|
5
|
+
ADD_TOAST: "ADD_TOAST",
|
|
6
|
+
UPDATE_TOAST: "UPDATE_TOAST",
|
|
7
|
+
DISMISS_TOAST: "DISMISS_TOAST",
|
|
8
|
+
REMOVE_TOAST: "REMOVE_TOAST"
|
|
9
|
+
};
|
|
10
|
+
let c = 0;
|
|
11
|
+
function M() {
|
|
12
|
+
return c = (c + 1) % Number.MAX_SAFE_INTEGER, c.toString();
|
|
13
|
+
}
|
|
14
|
+
const u = /* @__PURE__ */ new Map(), d = (s) => {
|
|
15
|
+
if (u.has(s))
|
|
16
|
+
return;
|
|
17
|
+
const t = setTimeout(() => {
|
|
18
|
+
u.delete(s), n({
|
|
19
|
+
type: "REMOVE_TOAST",
|
|
20
|
+
toastId: s
|
|
21
|
+
});
|
|
22
|
+
}, I);
|
|
23
|
+
u.set(s, t);
|
|
24
|
+
}, h = (s, t) => {
|
|
25
|
+
switch (t.type) {
|
|
26
|
+
case a.ADD_TOAST:
|
|
27
|
+
return {
|
|
28
|
+
...s,
|
|
29
|
+
toasts: [t.toast, ...s.toasts].slice(0, l)
|
|
30
|
+
};
|
|
31
|
+
case a.UPDATE_TOAST:
|
|
32
|
+
return {
|
|
33
|
+
...s,
|
|
34
|
+
toasts: s.toasts.map((e) => e.id === t.toast.id ? { ...e, ...t.toast } : e)
|
|
35
|
+
};
|
|
36
|
+
case a.DISMISS_TOAST: {
|
|
37
|
+
const { toastId: e } = t;
|
|
38
|
+
return e ? d(e) : s.toasts.forEach((o) => {
|
|
39
|
+
d(o.id);
|
|
40
|
+
}), {
|
|
41
|
+
...s,
|
|
42
|
+
toasts: s.toasts.map(
|
|
43
|
+
(o) => o.id === e || e === void 0 ? {
|
|
44
|
+
...o,
|
|
45
|
+
open: !1
|
|
46
|
+
} : o
|
|
47
|
+
)
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
case a.REMOVE_TOAST:
|
|
51
|
+
return t.toastId === void 0 ? {
|
|
52
|
+
...s,
|
|
53
|
+
toasts: []
|
|
54
|
+
} : {
|
|
55
|
+
...s,
|
|
56
|
+
toasts: s.toasts.filter((e) => e.id !== t.toastId)
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
}, i = [];
|
|
60
|
+
let S = { toasts: [] };
|
|
61
|
+
function n(s) {
|
|
62
|
+
S = h(S, s), i.forEach((t) => {
|
|
63
|
+
t(S);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
function x({ ...s }) {
|
|
67
|
+
const t = M(), e = (r) => n({
|
|
68
|
+
type: "UPDATE_TOAST",
|
|
69
|
+
toast: { ...r, id: t }
|
|
70
|
+
}), o = () => n({ type: "DISMISS_TOAST", toastId: t });
|
|
71
|
+
return n({
|
|
72
|
+
type: "ADD_TOAST",
|
|
73
|
+
toast: {
|
|
74
|
+
...s,
|
|
75
|
+
id: t,
|
|
76
|
+
open: !0,
|
|
77
|
+
onOpenChange: (r) => {
|
|
78
|
+
r || o();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}), {
|
|
82
|
+
id: t,
|
|
83
|
+
dismiss: o,
|
|
84
|
+
update: e
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
function j() {
|
|
88
|
+
const [s, t] = A.useState(S);
|
|
89
|
+
return A.useEffect(() => (i.push(t), () => {
|
|
90
|
+
const e = i.indexOf(t);
|
|
91
|
+
e > -1 && i.splice(e, 1);
|
|
92
|
+
}), [s]), {
|
|
93
|
+
...s,
|
|
94
|
+
toast: x,
|
|
95
|
+
dismiss: (e) => n({ type: "DISMISS_TOAST", toastId: e })
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
function V() {
|
|
99
|
+
const { toasts: s } = j();
|
|
100
|
+
return /* @__PURE__ */ T.jsxs(p, { children: [
|
|
101
|
+
s.map(function({ id: t, title: e, description: o, action: r, ...O }) {
|
|
102
|
+
return /* @__PURE__ */ T.jsxs(E, { ...O, children: [
|
|
103
|
+
/* @__PURE__ */ T.jsxs("div", { className: "grid gap-1", children: [
|
|
104
|
+
e && /* @__PURE__ */ T.jsx(_, { children: e }),
|
|
105
|
+
o && /* @__PURE__ */ T.jsx(f, { children: o })
|
|
106
|
+
] }),
|
|
107
|
+
r,
|
|
108
|
+
/* @__PURE__ */ T.jsx(m, {})
|
|
109
|
+
] }, t);
|
|
110
|
+
}),
|
|
111
|
+
/* @__PURE__ */ T.jsx(D, {})
|
|
112
|
+
] });
|
|
113
|
+
}
|
|
114
|
+
export {
|
|
115
|
+
V as T,
|
|
116
|
+
h as r,
|
|
117
|
+
x as t,
|
|
118
|
+
j as u
|
|
119
|
+
};
|
|
120
|
+
//# sourceMappingURL=toaster-Bk6a4gIz.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toaster-Bk6a4gIz.mjs","sources":["../src/hooks/use-toast.ts","../src/components/ui/toaster.tsx"],"sourcesContent":["'use client';\n\n// Inspired by react-hot-toast library\nimport * as React from 'react';\n\nimport type { ToastActionElement, ToastProps } from '@/components/ui/toast';\n\nconst TOAST_LIMIT = 1;\nconst TOAST_REMOVE_DELAY = 1000000;\n\ntype ToasterToast = ToastProps & {\n id: string;\n title?: React.ReactNode;\n description?: React.ReactNode;\n action?: ToastActionElement;\n};\n\nconst actionTypes = {\n ADD_TOAST: 'ADD_TOAST',\n UPDATE_TOAST: 'UPDATE_TOAST',\n DISMISS_TOAST: 'DISMISS_TOAST',\n REMOVE_TOAST: 'REMOVE_TOAST',\n} as const;\n\nlet count = 0;\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER;\n return count.toString();\n}\n\ntype ActionType = typeof actionTypes;\n\ntype Action =\n | {\n type: ActionType['ADD_TOAST'];\n toast: ToasterToast;\n }\n | {\n type: ActionType['UPDATE_TOAST'];\n toast: Partial<ToasterToast>;\n }\n | {\n type: ActionType['DISMISS_TOAST'];\n toastId?: ToasterToast['id'];\n }\n | {\n type: ActionType['REMOVE_TOAST'];\n toastId?: ToasterToast['id'];\n };\n\ninterface State {\n toasts: ToasterToast[];\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: 'REMOVE_TOAST',\n toastId: toastId,\n });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case actionTypes.ADD_TOAST:\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case actionTypes.UPDATE_TOAST:\n return {\n ...state,\n toasts: state.toasts.map((t) => (t.id === action.toast.id ? { ...t, ...action.toast } : t)),\n };\n\n case actionTypes.DISMISS_TOAST: {\n const { toastId } = action;\n\n // ! Side effects ! - This could be extracted into a dismissToast() action,\n // but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t,\n ),\n };\n }\n case actionTypes.REMOVE_TOAST:\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [] };\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n}\n\ntype Toast = Omit<ToasterToast, 'id'>;\n\nfunction toast({ ...props }: Toast) {\n const id = genId();\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: 'UPDATE_TOAST',\n toast: { ...props, id },\n });\n const dismiss = () => dispatch({ type: 'DISMISS_TOAST', toastId: id });\n\n dispatch({\n type: 'ADD_TOAST',\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss();\n },\n },\n });\n\n return {\n id: id,\n dismiss,\n update,\n };\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState);\n\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: 'DISMISS_TOAST', toastId }),\n };\n}\n\nexport { toast, useToast };\n","import { Toast, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport } from '@/components/ui/toast';\nimport { useToast } from '@/hooks/use-toast';\n\nexport function Toaster() {\n const { toasts } = useToast();\n\n return (\n <ToastProvider>\n {toasts.map(function ({ id, title, description, action, ...props }) {\n return (\n <Toast key={id} {...props}>\n <div className=\"grid gap-1\">\n {title && <ToastTitle>{title}</ToastTitle>}\n {description && <ToastDescription>{description}</ToastDescription>}\n </div>\n {action}\n <ToastClose />\n </Toast>\n );\n })}\n <ToastViewport />\n </ToastProvider>\n );\n}\n"],"names":["TOAST_LIMIT","TOAST_REMOVE_DELAY","actionTypes","count","genId","toastTimeouts","addToRemoveQueue","toastId","timeout","dispatch","reducer","state","action","t","toast","listeners","memoryState","listener","props","id","update","dismiss","open","useToast","setState","React","index","Toaster","toasts","ToastProvider","title","description","jsxs","Toast","jsx","ToastTitle","ToastDescription","ToastClose","ToastViewport"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toaster.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toaster.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./vendor-CIyDEr7H.js"),m=require("react"),d=require("./toggle.cjs.js"),u=require("./utils-CUFNKXRW.js");function f(e){const o=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(o,t,n.get?n:{enumerable:!0,get:()=>e[t]})}}return o.default=e,Object.freeze(o)}const a=f(m),l=a.createContext({size:"default",variant:"default"}),g=a.forwardRef(({className:e,variant:o,size:t,children:n,...s},c)=>r.jsxRuntimeExports.jsx(r.Root2$11,{ref:c,className:u.cn("flex items-center justify-center gap-1",e),...s,children:r.jsxRuntimeExports.jsx(l.Provider,{value:{variant:o,size:t},children:n})}));g.displayName=r.Root2$11.displayName;const p=a.forwardRef(({className:e,children:o,variant:t,size:n,...s},c)=>{const i=a.useContext(l);return r.jsxRuntimeExports.jsx(r.Item2$3,{ref:c,className:u.cn(d.toggleVariants({variant:i.variant||t,size:i.size||n}),e),...s,children:o})});p.displayName=r.Item2$3.displayName;exports.ToggleGroup=g;exports.ToggleGroupItem=p;
|
|
2
|
+
//# sourceMappingURL=toggle-group.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toggle-group.cjs.js","sources":["../src/components/ui/toggle-group.tsx"],"sourcesContent":["'use client';\n\nimport * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';\nimport { type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { toggleVariants } from '@/components/ui/toggle';\nimport { cn } from '@/lib/utils';\n\nconst ToggleGroupContext = React.createContext<VariantProps<typeof toggleVariants>>({\n size: 'default',\n variant: 'default',\n});\n\nconst ToggleGroup = React.forwardRef<\n React.ElementRef<typeof ToggleGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> & VariantProps<typeof toggleVariants>\n>(({ className, variant, size, children, ...props }, ref) => (\n <ToggleGroupPrimitive.Root ref={ref} className={cn('flex items-center justify-center gap-1', className)} {...props}>\n <ToggleGroupContext.Provider value={{ variant, size }}>{children}</ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n));\n\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;\n\nconst ToggleGroupItem = React.forwardRef<\n React.ElementRef<typeof ToggleGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> & VariantProps<typeof toggleVariants>\n>(({ className, children, variant, size, ...props }, ref) => {\n const context = React.useContext(ToggleGroupContext);\n\n return (\n <ToggleGroupPrimitive.Item\n ref={ref}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n className,\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n );\n});\n\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;\n\nexport { ToggleGroup, ToggleGroupItem };\n"],"names":["ToggleGroupContext","React","ToggleGroup","className","variant","size","children","props","ref","jsx","ToggleGroupPrimitive.Root","cn","ToggleGroupItem","context","ToggleGroupPrimitive.Item","toggleVariants"],"mappings":"meASMA,EAAqBC,EAAM,cAAmD,CAClF,KAAM,UACN,QAAS,SACX,CAAC,EAEKC,EAAcD,EAAM,WAGxB,CAAC,CAAE,UAAAE,EAAW,QAAAC,EAAS,KAAAC,EAAM,SAAAC,EAAU,GAAGC,GAASC,IACnDC,EAAAA,kBAAAA,IAACC,EAAAA,SAAA,CAA0B,IAAAF,EAAU,UAAWG,EAAAA,GAAG,yCAA0CR,CAAS,EAAI,GAAGI,EAC3G,iCAACP,EAAmB,SAAnB,CAA4B,MAAO,CAAE,QAAAI,EAAS,KAAAC,CAAA,EAAS,SAAAC,CAAA,CAAS,EACnE,CACD,EAEDJ,EAAY,YAAcQ,EAAAA,SAA0B,YAEpD,MAAME,EAAkBX,EAAM,WAG5B,CAAC,CAAE,UAAAE,EAAW,SAAAG,EAAU,QAAAF,EAAS,KAAAC,EAAM,GAAGE,CAAA,EAASC,IAAQ,CAC3D,MAAMK,EAAUZ,EAAM,WAAWD,CAAkB,EAEnD,OACES,EAAAA,kBAAAA,IAACK,EAAAA,QAAA,CACC,IAAAN,EACA,UAAWG,EAAAA,GACTI,iBAAe,CACb,QAASF,EAAQ,SAAWT,EAC5B,KAAMS,EAAQ,MAAQR,CAAA,CACvB,EACDF,CAAA,EAED,GAAGI,EAEH,SAAAD,CAAA,CAAA,CAGP,CAAC,EAEDM,EAAgB,YAAcE,EAAAA,QAA0B"}
|