@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.
Files changed (261) hide show
  1. package/.release-please-manifest.json +1 -1
  2. package/CHANGELOG.md +20 -0
  3. package/dist/App.d.ts +1 -2
  4. package/dist/App.d.ts.map +1 -1
  5. package/dist/accordion.cjs.js +2 -0
  6. package/dist/accordion.cjs.js.map +1 -0
  7. package/dist/accordion.es.js +38 -0
  8. package/dist/accordion.es.js.map +1 -0
  9. package/dist/alert-dialog.cjs.js +2 -0
  10. package/dist/alert-dialog.cjs.js.map +1 -0
  11. package/dist/alert-dialog.es.js +64 -0
  12. package/dist/alert-dialog.es.js.map +1 -0
  13. package/dist/alert.cjs.js +2 -0
  14. package/dist/alert.cjs.js.map +1 -0
  15. package/dist/alert.es.js +32 -0
  16. package/dist/alert.es.js.map +1 -0
  17. package/dist/aspect-ratio.cjs.js +2 -0
  18. package/dist/aspect-ratio.cjs.js.map +1 -0
  19. package/dist/aspect-ratio.es.js +6 -0
  20. package/dist/aspect-ratio.es.js.map +1 -0
  21. package/dist/avatar.cjs.js +2 -0
  22. package/dist/avatar.cjs.js.map +1 -0
  23. package/dist/avatar.es.js +29 -0
  24. package/dist/avatar.es.js.map +1 -0
  25. package/dist/badge.cjs.js +2 -0
  26. package/dist/badge.cjs.js.map +1 -0
  27. package/dist/badge.es.js +26 -0
  28. package/dist/badge.es.js.map +1 -0
  29. package/dist/breadcrumb.cjs.js +2 -0
  30. package/dist/breadcrumb.cjs.js.map +1 -0
  31. package/dist/breadcrumb.es.js +68 -0
  32. package/dist/breadcrumb.es.js.map +1 -0
  33. package/dist/button.cjs.js +2 -0
  34. package/dist/button.cjs.js.map +1 -0
  35. package/dist/button.es.js +39 -0
  36. package/dist/button.es.js.map +1 -0
  37. package/dist/calendar.cjs.js +2 -0
  38. package/dist/calendar.cjs.js.map +1 -0
  39. package/dist/calendar.es.js +132 -0
  40. package/dist/calendar.es.js.map +1 -0
  41. package/dist/card.cjs.js +2 -0
  42. package/dist/card.cjs.js.map +1 -0
  43. package/dist/card.es.js +34 -0
  44. package/dist/card.es.js.map +1 -0
  45. package/dist/carousel.cjs.js +2 -0
  46. package/dist/carousel.cjs.js.map +1 -0
  47. package/dist/carousel.es.js +158 -0
  48. package/dist/carousel.es.js.map +1 -0
  49. package/dist/chart.cjs.js +8 -0
  50. package/dist/chart.cjs.js.map +1 -0
  51. package/dist/chart.es.js +187 -0
  52. package/dist/chart.es.js.map +1 -0
  53. package/dist/checkbox.cjs.js +2 -0
  54. package/dist/checkbox.cjs.js.map +1 -0
  55. package/dist/checkbox.es.js +20 -0
  56. package/dist/checkbox.es.js.map +1 -0
  57. package/dist/collapsible.cjs.js +2 -0
  58. package/dist/collapsible.cjs.js.map +1 -0
  59. package/dist/collapsible.es.js +8 -0
  60. package/dist/collapsible.es.js.map +1 -0
  61. package/dist/command.cjs.js +2 -0
  62. package/dist/command.cjs.js.map +1 -0
  63. package/dist/command.es.js +86 -0
  64. package/dist/command.es.js.map +1 -0
  65. package/dist/components/docs/Sidebar.d.ts +2 -1
  66. package/dist/components/docs/Sidebar.d.ts.map +1 -1
  67. package/dist/components/ui/command.d.ts.map +1 -1
  68. package/dist/components/ui/theme-provider.d.ts +4 -0
  69. package/dist/components/ui/theme-provider.d.ts.map +1 -0
  70. package/dist/components/ui/theme-provider.test.d.ts +2 -0
  71. package/dist/components/ui/theme-provider.test.d.ts.map +1 -0
  72. package/dist/context-menu.cjs.js +2 -0
  73. package/dist/context-menu.cjs.js.map +1 -0
  74. package/dist/context-menu.es.js +121 -0
  75. package/dist/context-menu.es.js.map +1 -0
  76. package/dist/design-system.css +1 -1
  77. package/dist/dialog.cjs.js +2 -0
  78. package/dist/dialog.cjs.js.map +1 -0
  79. package/dist/dialog.es.js +65 -0
  80. package/dist/dialog.es.js.map +1 -0
  81. package/dist/drawer.cjs.js +2 -0
  82. package/dist/drawer.cjs.js.map +1 -0
  83. package/dist/drawer.es.js +54 -0
  84. package/dist/drawer.es.js.map +1 -0
  85. package/dist/dropdown-menu.cjs.js +2 -0
  86. package/dist/dropdown-menu.cjs.js.map +1 -0
  87. package/dist/dropdown-menu.es.js +123 -0
  88. package/dist/dropdown-menu.es.js.map +1 -0
  89. package/dist/form.cjs.js +2 -0
  90. package/dist/form.cjs.js.map +1 -0
  91. package/dist/form.es.js +83 -0
  92. package/dist/form.es.js.map +1 -0
  93. package/dist/hover-card.cjs.js +2 -0
  94. package/dist/hover-card.cjs.js.map +1 -0
  95. package/dist/hover-card.es.js +23 -0
  96. package/dist/hover-card.es.js.map +1 -0
  97. package/dist/index.cjs.js +1 -7
  98. package/dist/index.cjs.js.map +1 -1
  99. package/dist/index.d.ts +1 -0
  100. package/dist/index.d.ts.map +1 -1
  101. package/dist/index.es.js +285 -2446
  102. package/dist/index.es.js.map +1 -1
  103. package/dist/input.cjs.js +2 -0
  104. package/dist/input.cjs.js.map +1 -0
  105. package/dist/input.es.js +22 -0
  106. package/dist/input.es.js.map +1 -0
  107. package/dist/label.cjs.js +2 -0
  108. package/dist/label.cjs.js.map +1 -0
  109. package/dist/label.es.js +9 -0
  110. package/dist/label.es.js.map +1 -0
  111. package/dist/menubar.cjs.js +2 -0
  112. package/dist/menubar.cjs.js.map +1 -0
  113. package/dist/menubar.es.js +161 -0
  114. package/dist/menubar.es.js.map +1 -0
  115. package/dist/navigation-menu.cjs.js +2 -0
  116. package/dist/navigation-menu.cjs.js.map +1 -0
  117. package/dist/navigation-menu.es.js +96 -0
  118. package/dist/navigation-menu.es.js.map +1 -0
  119. package/dist/pages/GettingStarted.d.ts.map +1 -1
  120. package/dist/pages/components/ThemeToggleDocs.d.ts.map +1 -1
  121. package/dist/pagination.cjs.js +2 -0
  122. package/dist/pagination.cjs.js.map +1 -0
  123. package/dist/pagination.es.js +60 -0
  124. package/dist/pagination.es.js.map +1 -0
  125. package/dist/popover.cjs.js +2 -0
  126. package/dist/popover.cjs.js.map +1 -0
  127. package/dist/popover.es.js +24 -0
  128. package/dist/popover.es.js.map +1 -0
  129. package/dist/progress.cjs.js +2 -0
  130. package/dist/progress.cjs.js.map +1 -0
  131. package/dist/progress.es.js +24 -0
  132. package/dist/progress.es.js.map +1 -0
  133. package/dist/radio-group.cjs.js +2 -0
  134. package/dist/radio-group.cjs.js.map +1 -0
  135. package/dist/radio-group.es.js +23 -0
  136. package/dist/radio-group.es.js.map +1 -0
  137. package/dist/registry/command.json +1 -1
  138. package/dist/registry/index.json +14 -0
  139. package/dist/registry/search.json +1 -1
  140. package/dist/registry/search.test.json +1 -1
  141. package/dist/registry/theme-provider.json +13 -0
  142. package/dist/registry/theme-provider.test.json +13 -0
  143. package/dist/resizable.cjs.js +2 -0
  144. package/dist/resizable.cjs.js.map +1 -0
  145. package/dist/resizable.es.js +34 -0
  146. package/dist/resizable.es.js.map +1 -0
  147. package/dist/scroll-area.cjs.js +2 -0
  148. package/dist/scroll-area.cjs.js.map +1 -0
  149. package/dist/scroll-area.es.js +30 -0
  150. package/dist/scroll-area.es.js.map +1 -0
  151. package/dist/search.cjs.js +2 -0
  152. package/dist/search.cjs.js.map +1 -0
  153. package/dist/search.es.js +60 -0
  154. package/dist/search.es.js.map +1 -0
  155. package/dist/select.cjs.js +2 -0
  156. package/dist/select.cjs.js.map +1 -0
  157. package/dist/select.es.js +100 -0
  158. package/dist/select.es.js.map +1 -0
  159. package/dist/separator.cjs.js +2 -0
  160. package/dist/separator.cjs.js.map +1 -0
  161. package/dist/separator.es.js +18 -0
  162. package/dist/separator.es.js.map +1 -0
  163. package/dist/sheet.cjs.js +2 -0
  164. package/dist/sheet.cjs.js.map +1 -0
  165. package/dist/sheet.es.js +64 -0
  166. package/dist/sheet.es.js.map +1 -0
  167. package/dist/skeleton.cjs.js +2 -0
  168. package/dist/skeleton.cjs.js.map +1 -0
  169. package/dist/skeleton.es.js +9 -0
  170. package/dist/skeleton.es.js.map +1 -0
  171. package/dist/slider.cjs.js +2 -0
  172. package/dist/slider.cjs.js.map +1 -0
  173. package/dist/slider.es.js +20 -0
  174. package/dist/slider.es.js.map +1 -0
  175. package/dist/sonner.cjs.js +2 -0
  176. package/dist/sonner.cjs.js.map +1 -0
  177. package/dist/sonner.es.js +25 -0
  178. package/dist/sonner.es.js.map +1 -0
  179. package/dist/switch.cjs.js +2 -0
  180. package/dist/switch.cjs.js.map +1 -0
  181. package/dist/switch.es.js +27 -0
  182. package/dist/switch.es.js.map +1 -0
  183. package/dist/table.cjs.js +2 -0
  184. package/dist/table.cjs.js.map +1 -0
  185. package/dist/table.es.js +70 -0
  186. package/dist/table.es.js.map +1 -0
  187. package/dist/tabs.cjs.js +2 -0
  188. package/dist/tabs.cjs.js.map +1 -0
  189. package/dist/tabs.es.js +46 -0
  190. package/dist/tabs.es.js.map +1 -0
  191. package/dist/textarea.cjs.js +2 -0
  192. package/dist/textarea.cjs.js.map +1 -0
  193. package/dist/textarea.es.js +21 -0
  194. package/dist/textarea.es.js.map +1 -0
  195. package/dist/theme/tokens.d.ts +46 -0
  196. package/dist/theme/tokens.d.ts.map +1 -1
  197. package/dist/theme-provider.cjs.js +2 -0
  198. package/dist/theme-provider.cjs.js.map +1 -0
  199. package/dist/theme-provider.es.js +9 -0
  200. package/dist/theme-provider.es.js.map +1 -0
  201. package/dist/theme-toggle-CCUkxY6o.mjs +181 -0
  202. package/dist/theme-toggle-CCUkxY6o.mjs.map +1 -0
  203. package/dist/theme-toggle-Dc_nm_32.js +2 -0
  204. package/dist/theme-toggle-Dc_nm_32.js.map +1 -0
  205. package/dist/theme-toggle.cjs.js +2 -0
  206. package/dist/theme-toggle.cjs.js.map +1 -0
  207. package/dist/theme-toggle.es.js +9 -0
  208. package/dist/theme-toggle.es.js.map +1 -0
  209. package/dist/toast.cjs.js +2 -0
  210. package/dist/toast.cjs.js.map +1 -0
  211. package/dist/toast.es.js +70 -0
  212. package/dist/toast.es.js.map +1 -0
  213. package/dist/toaster-BjPc-lId.js +2 -0
  214. package/dist/toaster-BjPc-lId.js.map +1 -0
  215. package/dist/toaster-Bk6a4gIz.mjs +120 -0
  216. package/dist/toaster-Bk6a4gIz.mjs.map +1 -0
  217. package/dist/toaster.cjs.js +2 -0
  218. package/dist/toaster.cjs.js.map +1 -0
  219. package/dist/toaster.es.js +7 -0
  220. package/dist/toaster.es.js.map +1 -0
  221. package/dist/toggle-group.cjs.js +2 -0
  222. package/dist/toggle-group.cjs.js.map +1 -0
  223. package/dist/toggle-group.es.js +33 -0
  224. package/dist/toggle-group.es.js.map +1 -0
  225. package/dist/toggle.cjs.js +2 -0
  226. package/dist/toggle.cjs.js.map +1 -0
  227. package/dist/toggle.es.js +29 -0
  228. package/dist/toggle.es.js.map +1 -0
  229. package/dist/tooltip.cjs.js +2 -0
  230. package/dist/tooltip.cjs.js.map +1 -0
  231. package/dist/tooltip.es.js +23 -0
  232. package/dist/tooltip.es.js.map +1 -0
  233. package/dist/utils-C9QGdMaH.mjs +8 -0
  234. package/dist/utils-C9QGdMaH.mjs.map +1 -0
  235. package/dist/utils-CUFNKXRW.js +2 -0
  236. package/dist/utils-CUFNKXRW.js.map +1 -0
  237. package/dist/{vendor-BLvpSabH.mjs → vendor-CCQzmGyD.mjs} +1131 -1160
  238. package/dist/vendor-CCQzmGyD.mjs.map +1 -0
  239. package/dist/{vendor-n4WFhtJT.js → vendor-CIyDEr7H.js} +12 -12
  240. package/dist/vendor-CIyDEr7H.js.map +1 -0
  241. package/package.json +251 -5
  242. package/scripts/sync-exports.ts +52 -0
  243. package/scripts/sync-tokens.ts +73 -0
  244. package/scripts/{validate.js → validate.ts} +14 -8
  245. package/src/App.tsx +64 -27
  246. package/src/components/docs/ComponentShowcase.tsx +5 -5
  247. package/src/components/docs/Sidebar.tsx +3 -2
  248. package/src/components/ui/command.tsx +3 -1
  249. package/src/components/ui/search.test.tsx +2 -0
  250. package/src/components/ui/search.tsx +3 -3
  251. package/src/components/ui/theme-provider.test.tsx +47 -0
  252. package/src/components/ui/theme-provider.tsx +12 -0
  253. package/src/globals.css +22 -0
  254. package/src/index.ts +1 -0
  255. package/src/pages/ColorTokensDocs.tsx +4 -4
  256. package/src/pages/GettingStarted.tsx +43 -10
  257. package/src/pages/components/ThemeToggleDocs.tsx +155 -8
  258. package/src/theme/tokens.ts +60 -38
  259. package/vite.config.ts +27 -4
  260. package/dist/vendor-BLvpSabH.mjs.map +0 -1
  261. 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,9 @@
1
+ import "./vendor-CCQzmGyD.mjs";
2
+ import "./button.es.js";
3
+ import "./dropdown-menu.es.js";
4
+ import { T as i } from "./theme-toggle-CCUkxY6o.mjs";
5
+ import "./utils-C9QGdMaH.mjs";
6
+ export {
7
+ i as ThemeToggle
8
+ };
9
+ //# sourceMappingURL=theme-toggle.es.js.map
@@ -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"}
@@ -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,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("./vendor-CIyDEr7H.js");require("./toast.cjs.js");const e=require("./toaster-BjPc-lId.js");exports.Toaster=e.Toaster;
2
+ //# sourceMappingURL=toaster.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toaster.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import "./vendor-CCQzmGyD.mjs";
2
+ import "./toast.es.js";
3
+ import { T as p } from "./toaster-Bk6a4gIz.mjs";
4
+ export {
5
+ p as Toaster
6
+ };
7
+ //# sourceMappingURL=toaster.es.js.map
@@ -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"}