@naeil/ui 0.1.0 → 0.3.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 (170) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/DESIGN.md +186 -0
  3. package/LICENSE +21 -0
  4. package/README.md +85 -22
  5. package/THIRD_PARTY_NOTICES.md +49 -0
  6. package/dist/chunk-JBTDRVZ7.js +46 -0
  7. package/dist/chunk-QKVN6Q6C.js +438 -0
  8. package/dist/components/index.d.ts +87 -0
  9. package/dist/components/index.js +832 -0
  10. package/dist/components/ui/index.d.ts +105 -0
  11. package/dist/components/ui/index.js +736 -0
  12. package/dist/lib/utils.d.ts +5 -0
  13. package/dist/lib/utils.js +7 -0
  14. package/dist/source/components/footer.d.ts +15 -0
  15. package/dist/source/components/footer.js +172 -0
  16. package/dist/source/components/index.d.ts +11 -0
  17. package/dist/source/components/index.js +26 -0
  18. package/dist/source/components/locale-switcher.d.ts +17 -0
  19. package/dist/source/components/locale-switcher.js +66 -0
  20. package/dist/source/components/logo.d.ts +9 -0
  21. package/dist/source/components/logo.js +52 -0
  22. package/dist/source/components/nav.d.ts +39 -0
  23. package/dist/source/components/nav.js +412 -0
  24. package/dist/source/components/theme-provider.d.ts +6 -0
  25. package/dist/source/components/theme-provider.js +45 -0
  26. package/dist/source/components/theme-toggle-icon.d.ts +5 -0
  27. package/dist/source/components/theme-toggle-icon.js +62 -0
  28. package/dist/source/components/theme-toggle.d.ts +5 -0
  29. package/dist/source/components/theme-toggle.js +34 -0
  30. package/dist/source/components/typography.d.ts +12 -0
  31. package/dist/source/components/typography.js +49 -0
  32. package/dist/source/components/ui/avatar.d.ts +14 -0
  33. package/dist/source/components/ui/avatar.js +137 -0
  34. package/dist/source/components/ui/badge.d.ts +13 -0
  35. package/dist/source/components/ui/badge.js +76 -0
  36. package/dist/source/components/ui/button.d.ts +14 -0
  37. package/dist/source/components/ui/button.js +88 -0
  38. package/dist/source/components/ui/card.d.ts +13 -0
  39. package/dist/source/components/ui/card.js +135 -0
  40. package/dist/source/components/ui/checkbox.d.ts +7 -0
  41. package/dist/source/components/ui/checkbox.js +58 -0
  42. package/dist/source/components/ui/dialog.d.ts +20 -0
  43. package/dist/source/components/ui/dialog.js +182 -0
  44. package/dist/source/components/ui/dropdown-menu.d.ts +28 -0
  45. package/dist/source/components/ui/dropdown-menu.js +282 -0
  46. package/dist/source/components/ui/index.d.ts +19 -0
  47. package/dist/source/components/ui/index.js +131 -0
  48. package/dist/source/components/ui/input.d.ts +6 -0
  49. package/dist/source/components/ui/input.js +49 -0
  50. package/dist/source/components/ui/select.d.ts +16 -0
  51. package/dist/source/components/ui/select.js +197 -0
  52. package/dist/source/components/ui/sonner.d.ts +6 -0
  53. package/dist/source/components/ui/sonner.js +80 -0
  54. package/dist/source/components/ui/switch.d.ts +7 -0
  55. package/dist/source/components/ui/switch.js +54 -0
  56. package/dist/source/components/ui/tabs.d.ts +10 -0
  57. package/dist/source/components/ui/tabs.js +57 -0
  58. package/dist/source/components/ui/textarea.d.ts +6 -0
  59. package/dist/source/components/ui/textarea.js +46 -0
  60. package/dist/source/i18n/config.d.ts +6 -0
  61. package/dist/source/i18n/config.js +12 -0
  62. package/dist/source/i18n/routing.d.ts +371 -0
  63. package/dist/source/i18n/routing.js +17 -0
  64. package/dist/source/lib/design/modal-inert.d.ts +6 -0
  65. package/dist/source/lib/design/modal-inert.js +73 -0
  66. package/dist/source/lib/utils.d.ts +5 -0
  67. package/dist/source/lib/utils.js +8 -0
  68. package/dist/tokens.ts +217 -0
  69. package/docs/components/README.md +21 -0
  70. package/docs/components/avatar.md +47 -0
  71. package/docs/components/badge.md +29 -0
  72. package/docs/components/button.md +39 -0
  73. package/docs/components/card.md +32 -0
  74. package/docs/components/checkbox.md +35 -0
  75. package/docs/components/common.md +31 -0
  76. package/docs/components/composition.md +68 -0
  77. package/docs/components/dialog.md +41 -0
  78. package/docs/components/dropdown-menu.md +38 -0
  79. package/docs/components/input.md +32 -0
  80. package/docs/components/select.md +39 -0
  81. package/docs/components/sonner.md +37 -0
  82. package/docs/components/switch.md +33 -0
  83. package/docs/components/tabs.md +40 -0
  84. package/docs/components/textarea.md +35 -0
  85. package/docs/design/component-demand.md +30 -0
  86. package/docs/design/public-ui-final-verification.md +96 -0
  87. package/docs/design/public-ui-release-validation.md +86 -0
  88. package/docs/design/public-ui-stage3-verification.md +98 -0
  89. package/docs/design/public-ui-stage4-verification.md +129 -0
  90. package/docs/design/public-ui-support.md +40 -0
  91. package/docs/design/v2-migration.md +199 -0
  92. package/docs/package-release.md +89 -0
  93. package/licenses/Noto-Sans-JP-OFL.txt +93 -0
  94. package/licenses/Nunito-Sans-OFL.txt +93 -0
  95. package/licenses/Pretendard-OFL.txt +94 -0
  96. package/licenses/React-MIT.txt +21 -0
  97. package/licenses/Storybook-MIT.txt +21 -0
  98. package/licenses/popper-MIT.txt +25 -0
  99. package/licenses/react-remove-scroll-bar-MIT.txt +21 -0
  100. package/licenses/store2-MIT.txt +22 -0
  101. package/licenses/toggle-selection-MIT.txt +21 -0
  102. package/package.json +215 -26
  103. package/src/styles/components.css +276 -0
  104. package/src/styles/globals.css +18 -0
  105. package/src/styles/theme.css +293 -0
  106. package/messages/en.json +0 -221
  107. package/messages/ja.json +0 -221
  108. package/messages/ko.json +0 -221
  109. package/postcss.config.mjs +0 -7
  110. package/src/app/[locale]/(content)/baby-agent/page.tsx +0 -30
  111. package/src/app/[locale]/(content)/blog/page.tsx +0 -68
  112. package/src/app/[locale]/(content)/cc/page.tsx +0 -216
  113. package/src/app/[locale]/(content)/design/page.tsx +0 -703
  114. package/src/app/[locale]/(content)/layout.tsx +0 -7
  115. package/src/app/[locale]/(content)/pkm/page.tsx +0 -31
  116. package/src/app/[locale]/(content)/projects/page.tsx +0 -100
  117. package/src/app/[locale]/(content)/sa/page.tsx +0 -179
  118. package/src/app/[locale]/(landing)/page.tsx +0 -157
  119. package/src/app/[locale]/layout.tsx +0 -72
  120. package/src/app/[locale]/login/actions.ts +0 -10
  121. package/src/app/[locale]/login/oauth-buttons.tsx +0 -78
  122. package/src/app/[locale]/login/page.tsx +0 -85
  123. package/src/app/auth/callback/route.ts +0 -78
  124. package/src/app/favicon.ico +0 -0
  125. package/src/app/globals.css +0 -32
  126. package/src/app/layout.tsx +0 -22
  127. package/src/app/sitemap.ts +0 -26
  128. package/src/components/accent-picker.tsx +0 -62
  129. package/src/components/auth-slot.tsx +0 -96
  130. package/src/components/footer-wrapper.tsx +0 -8
  131. package/src/components/footer.tsx +0 -193
  132. package/src/components/hero-scene.tsx +0 -948
  133. package/src/components/hero-section.tsx +0 -57
  134. package/src/components/locale-switcher.tsx +0 -74
  135. package/src/components/logo.tsx +0 -51
  136. package/src/components/nav-server-wrapper.tsx +0 -22
  137. package/src/components/nav-wrapper.tsx +0 -45
  138. package/src/components/nav.tsx +0 -550
  139. package/src/components/paraglider-cursor.tsx +0 -112
  140. package/src/components/project-layout.tsx +0 -194
  141. package/src/components/theme-provider.tsx +0 -10
  142. package/src/components/theme-toggle-icon.tsx +0 -62
  143. package/src/components/theme-toggle.tsx +0 -39
  144. package/src/components/typography.tsx +0 -27
  145. package/src/components/ui/avatar.tsx +0 -109
  146. package/src/components/ui/badge.tsx +0 -47
  147. package/src/components/ui/button.tsx +0 -65
  148. package/src/components/ui/card.tsx +0 -106
  149. package/src/components/ui/dialog.tsx +0 -158
  150. package/src/components/ui/dropdown-menu.tsx +0 -257
  151. package/src/components/ui/input.tsx +0 -21
  152. package/src/components/ui/sonner.tsx +0 -54
  153. package/src/components/workflow-diagram.tsx +0 -414
  154. package/src/i18n/config.ts +0 -8
  155. package/src/i18n/request.ts +0 -16
  156. package/src/i18n/routing.ts +0 -12
  157. package/src/lib/supabase/client.ts +0 -18
  158. package/src/lib/supabase/middleware.ts +0 -42
  159. package/src/lib/supabase/server.ts +0 -37
  160. package/src/lib/utils.ts +0 -6
  161. package/src/proxy.ts +0 -62
  162. package/src/tokens/.gitkeep +0 -0
  163. package/src/tokens/color.json +0 -56
  164. package/src/tokens/radius.json +0 -9
  165. package/src/tokens/semantic.json +0 -81
  166. package/src/tokens/shadow.json +0 -7
  167. package/src/tokens/spacing.json +0 -16
  168. package/src/tokens/typography.json +0 -34
  169. package/src/types/i18n.d.ts +0 -6
  170. package/src/utils/.gitkeep +0 -0
@@ -0,0 +1,736 @@
1
+ "use client";
2
+ import {
3
+ Badge,
4
+ Button,
5
+ DropdownMenu,
6
+ DropdownMenuCheckboxItem,
7
+ DropdownMenuContent,
8
+ DropdownMenuGroup,
9
+ DropdownMenuItem,
10
+ DropdownMenuLabel,
11
+ DropdownMenuPortal,
12
+ DropdownMenuRadioGroup,
13
+ DropdownMenuRadioItem,
14
+ DropdownMenuSeparator,
15
+ DropdownMenuShortcut,
16
+ DropdownMenuSub,
17
+ DropdownMenuSubContent,
18
+ DropdownMenuSubTrigger,
19
+ DropdownMenuTrigger,
20
+ badgeVariants,
21
+ buttonVariants,
22
+ useOverlayRef,
23
+ useRadixHiddenInert
24
+ } from "../../chunk-QKVN6Q6C.js";
25
+ import {
26
+ __objRest,
27
+ __spreadProps,
28
+ __spreadValues,
29
+ cn
30
+ } from "../../chunk-JBTDRVZ7.js";
31
+
32
+ // src/components/ui/avatar.tsx
33
+ import { Avatar as AvatarPrimitive } from "radix-ui";
34
+ import { jsx } from "react/jsx-runtime";
35
+ function Avatar(_a) {
36
+ var _b = _a, {
37
+ className,
38
+ size = "default"
39
+ } = _b, props = __objRest(_b, [
40
+ "className",
41
+ "size"
42
+ ]);
43
+ return /* @__PURE__ */ jsx(
44
+ AvatarPrimitive.Root,
45
+ __spreadValues({
46
+ "data-slot": "avatar",
47
+ "data-size": size,
48
+ className: cn(
49
+ "group/avatar relative flex size-8 shrink-0 overflow-hidden rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6 ui-focus",
50
+ className
51
+ )
52
+ }, props)
53
+ );
54
+ }
55
+ function AvatarImage(_a) {
56
+ var _b = _a, {
57
+ className
58
+ } = _b, props = __objRest(_b, [
59
+ "className"
60
+ ]);
61
+ return /* @__PURE__ */ jsx(
62
+ AvatarPrimitive.Image,
63
+ __spreadValues({
64
+ "data-slot": "avatar-image",
65
+ className: cn("aspect-square size-full", className)
66
+ }, props)
67
+ );
68
+ }
69
+ function AvatarFallback(_a) {
70
+ var _b = _a, {
71
+ className
72
+ } = _b, props = __objRest(_b, [
73
+ "className"
74
+ ]);
75
+ return /* @__PURE__ */ jsx(
76
+ AvatarPrimitive.Fallback,
77
+ __spreadValues({
78
+ "data-slot": "avatar-fallback",
79
+ className: cn(
80
+ "bg-secondary text-secondary-foreground flex size-full items-center justify-center rounded-full font-medium text-xs group-data-[size=sm]/avatar:text-xs",
81
+ className
82
+ )
83
+ }, props)
84
+ );
85
+ }
86
+ function AvatarBadge(_a) {
87
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
88
+ return /* @__PURE__ */ jsx(
89
+ "span",
90
+ __spreadValues({
91
+ "data-slot": "avatar-badge",
92
+ className: cn(
93
+ "bg-primary text-primary-foreground ring-background absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full ring-2 select-none",
94
+ "group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden",
95
+ "group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2",
96
+ "group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2",
97
+ className
98
+ )
99
+ }, props)
100
+ );
101
+ }
102
+ function AvatarGroup(_a) {
103
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
104
+ return /* @__PURE__ */ jsx(
105
+ "div",
106
+ __spreadValues({
107
+ "data-slot": "avatar-group",
108
+ className: cn(
109
+ "*:data-[slot=avatar]:ring-background group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2",
110
+ className
111
+ )
112
+ }, props)
113
+ );
114
+ }
115
+ function AvatarGroupCount(_a) {
116
+ var _b = _a, {
117
+ className
118
+ } = _b, props = __objRest(_b, [
119
+ "className"
120
+ ]);
121
+ return /* @__PURE__ */ jsx(
122
+ "div",
123
+ __spreadValues({
124
+ "data-slot": "avatar-group-count",
125
+ className: cn(
126
+ "bg-muted text-muted-foreground ring-background relative flex size-8 shrink-0 items-center justify-center rounded-full text-sm ring-2 group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3",
127
+ className
128
+ )
129
+ }, props)
130
+ );
131
+ }
132
+
133
+ // src/components/ui/card.tsx
134
+ import { jsx as jsx2 } from "react/jsx-runtime";
135
+ function Card(_a) {
136
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
137
+ return /* @__PURE__ */ jsx2(
138
+ "div",
139
+ __spreadValues({
140
+ "data-slot": "card",
141
+ className: cn(
142
+ "bg-card text-card-foreground flex flex-col rounded-xl border border-border-subtle transition-colors duration-(--ui-motion-fast)",
143
+ className
144
+ )
145
+ }, props)
146
+ );
147
+ }
148
+ function CardElevated(_a) {
149
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
150
+ return /* @__PURE__ */ jsx2(
151
+ "div",
152
+ __spreadValues({
153
+ "data-slot": "card",
154
+ className: cn(
155
+ "bg-card text-card-foreground flex flex-col rounded-xl border border-border-subtle shadow-sm dark:bg-card-elevated transition-colors duration-(--ui-motion-fast)",
156
+ className
157
+ )
158
+ }, props)
159
+ );
160
+ }
161
+ function CardHeader(_a) {
162
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
163
+ return /* @__PURE__ */ jsx2(
164
+ "div",
165
+ __spreadValues({
166
+ "data-slot": "card-header",
167
+ className: cn(
168
+ "@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-(--ui-panel-padding) has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-(--ui-panel-padding)",
169
+ className
170
+ )
171
+ }, props)
172
+ );
173
+ }
174
+ function CardTitle(_a) {
175
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
176
+ return /* @__PURE__ */ jsx2(
177
+ "div",
178
+ __spreadValues({
179
+ "data-slot": "card-title",
180
+ className: cn("leading-none font-semibold", className)
181
+ }, props)
182
+ );
183
+ }
184
+ function CardDescription(_a) {
185
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
186
+ return /* @__PURE__ */ jsx2(
187
+ "div",
188
+ __spreadValues({
189
+ "data-slot": "card-description",
190
+ className: cn("text-muted-foreground text-sm", className)
191
+ }, props)
192
+ );
193
+ }
194
+ function CardAction(_a) {
195
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
196
+ return /* @__PURE__ */ jsx2(
197
+ "div",
198
+ __spreadValues({
199
+ "data-slot": "card-action",
200
+ className: cn(
201
+ "col-start-2 row-span-2 row-start-1 self-start justify-self-end",
202
+ className
203
+ )
204
+ }, props)
205
+ );
206
+ }
207
+ function CardContent(_a) {
208
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
209
+ return /* @__PURE__ */ jsx2(
210
+ "div",
211
+ __spreadValues({
212
+ "data-slot": "card-content",
213
+ className: cn("px-(--ui-panel-padding)", className)
214
+ }, props)
215
+ );
216
+ }
217
+ function CardFooter(_a) {
218
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
219
+ return /* @__PURE__ */ jsx2(
220
+ "div",
221
+ __spreadValues({
222
+ "data-slot": "card-footer",
223
+ className: cn(
224
+ "flex items-center px-(--ui-panel-padding) [.border-t]:pt-(--ui-panel-padding)",
225
+ className
226
+ )
227
+ }, props)
228
+ );
229
+ }
230
+
231
+ // src/components/ui/dialog.tsx
232
+ import { XIcon } from "lucide-react";
233
+ import { Dialog as DialogPrimitive } from "radix-ui";
234
+ import { jsx as jsx3, jsxs } from "react/jsx-runtime";
235
+ function Dialog(_a) {
236
+ var props = __objRest(_a, []);
237
+ return /* @__PURE__ */ jsx3(DialogPrimitive.Root, __spreadValues({ "data-slot": "dialog" }, props));
238
+ }
239
+ function DialogTrigger(_a) {
240
+ var props = __objRest(_a, []);
241
+ return /* @__PURE__ */ jsx3(DialogPrimitive.Trigger, __spreadValues({ "data-slot": "dialog-trigger" }, props));
242
+ }
243
+ function DialogPortal(_a) {
244
+ var props = __objRest(_a, []);
245
+ return /* @__PURE__ */ jsx3(DialogPrimitive.Portal, __spreadValues({ "data-slot": "dialog-portal" }, props));
246
+ }
247
+ function DialogClose(_a) {
248
+ var props = __objRest(_a, []);
249
+ return /* @__PURE__ */ jsx3(DialogPrimitive.Close, __spreadValues({ "data-slot": "dialog-close" }, props));
250
+ }
251
+ function DialogOverlay(_a) {
252
+ var _b = _a, {
253
+ className
254
+ } = _b, props = __objRest(_b, [
255
+ "className"
256
+ ]);
257
+ return /* @__PURE__ */ jsx3(
258
+ DialogPrimitive.Overlay,
259
+ __spreadValues({
260
+ "data-slot": "dialog-overlay",
261
+ className: cn("ui-popup fixed inset-0 z-50 bg-black/60 ", className)
262
+ }, props)
263
+ );
264
+ }
265
+ function DialogContent(_a) {
266
+ var _b = _a, {
267
+ className,
268
+ children,
269
+ showCloseButton = true
270
+ } = _b, props = __objRest(_b, [
271
+ "className",
272
+ "children",
273
+ "showCloseButton"
274
+ ]);
275
+ return /* @__PURE__ */ jsxs(DialogPortal, { "data-slot": "dialog-portal", children: [
276
+ /* @__PURE__ */ jsx3(DialogOverlay, {}),
277
+ /* @__PURE__ */ jsxs(
278
+ DialogPrimitive.Content,
279
+ __spreadProps(__spreadValues({
280
+ "data-slot": "dialog-content",
281
+ className: cn(
282
+ "bg-popover ui-popup fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-xl border border-border-strong p-6 sm:max-w-lg",
283
+ className
284
+ )
285
+ }, props), {
286
+ children: [
287
+ children,
288
+ showCloseButton && /* @__PURE__ */ jsxs(
289
+ DialogPrimitive.Close,
290
+ {
291
+ "data-slot": "dialog-close",
292
+ className: "ui-focus absolute top-2 right-2 flex size-10 items-center justify-center rounded-sm text-muted-foreground hover:text-foreground transition-colors ui-focus disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
293
+ children: [
294
+ /* @__PURE__ */ jsx3(XIcon, {}),
295
+ /* @__PURE__ */ jsx3("span", { className: "sr-only", children: "Close" })
296
+ ]
297
+ }
298
+ )
299
+ ]
300
+ })
301
+ )
302
+ ] });
303
+ }
304
+ function DialogHeader(_a) {
305
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
306
+ return /* @__PURE__ */ jsx3(
307
+ "div",
308
+ __spreadValues({
309
+ "data-slot": "dialog-header",
310
+ className: cn("flex flex-col gap-2 text-center sm:text-left", className)
311
+ }, props)
312
+ );
313
+ }
314
+ function DialogFooter(_a) {
315
+ var _b = _a, {
316
+ className,
317
+ showCloseButton = false,
318
+ children
319
+ } = _b, props = __objRest(_b, [
320
+ "className",
321
+ "showCloseButton",
322
+ "children"
323
+ ]);
324
+ return /* @__PURE__ */ jsxs(
325
+ "div",
326
+ __spreadProps(__spreadValues({
327
+ "data-slot": "dialog-footer",
328
+ className: cn(
329
+ "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",
330
+ className
331
+ )
332
+ }, props), {
333
+ children: [
334
+ children,
335
+ showCloseButton && /* @__PURE__ */ jsx3(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsx3(Button, { variant: "outline", children: "Close" }) })
336
+ ]
337
+ })
338
+ );
339
+ }
340
+ function DialogTitle(_a) {
341
+ var _b = _a, {
342
+ className
343
+ } = _b, props = __objRest(_b, [
344
+ "className"
345
+ ]);
346
+ return /* @__PURE__ */ jsx3(
347
+ DialogPrimitive.Title,
348
+ __spreadValues({
349
+ "data-slot": "dialog-title",
350
+ className: cn("text-xl leading-normal font-semibold", className)
351
+ }, props)
352
+ );
353
+ }
354
+ function DialogDescription(_a) {
355
+ var _b = _a, {
356
+ className
357
+ } = _b, props = __objRest(_b, [
358
+ "className"
359
+ ]);
360
+ return /* @__PURE__ */ jsx3(
361
+ DialogPrimitive.Description,
362
+ __spreadValues({
363
+ "data-slot": "dialog-description",
364
+ className: cn("text-muted-foreground text-sm", className)
365
+ }, props)
366
+ );
367
+ }
368
+
369
+ // src/components/ui/input.tsx
370
+ import { jsx as jsx4 } from "react/jsx-runtime";
371
+ function Input(_a) {
372
+ var _b = _a, { className, type } = _b, props = __objRest(_b, ["className", "type"]);
373
+ return /* @__PURE__ */ jsx4(
374
+ "input",
375
+ __spreadValues({
376
+ type,
377
+ "data-slot": "input",
378
+ className: cn(
379
+ "file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground ui-control ui-focus border-input w-full min-w-0 rounded-md border bg-background px-3 py-1 text-base transition-colors duration-(--ui-motion-fast) file:inline-flex file:h-7 file:border-0 file:bg-background file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 ",
380
+ "ui-focus",
381
+ "aria-invalid:border-error",
382
+ className
383
+ )
384
+ }, props)
385
+ );
386
+ }
387
+
388
+ // src/components/ui/sonner.tsx
389
+ import {
390
+ CircleCheckIcon,
391
+ InfoIcon,
392
+ Loader2Icon,
393
+ OctagonXIcon,
394
+ TriangleAlertIcon
395
+ } from "lucide-react";
396
+ import { useTheme } from "next-themes";
397
+ import { Toaster as Sonner } from "sonner";
398
+ import { jsx as jsx5 } from "react/jsx-runtime";
399
+ var Toaster = (_a) => {
400
+ var props = __objRest(_a, []);
401
+ const { theme = "system" } = useTheme();
402
+ return /* @__PURE__ */ jsx5(
403
+ Sonner,
404
+ __spreadValues({
405
+ theme,
406
+ className: "toaster group font-sans",
407
+ position: "bottom-right",
408
+ duration: 4e3,
409
+ icons: {
410
+ success: /* @__PURE__ */ jsx5(CircleCheckIcon, { className: "size-4" }),
411
+ info: /* @__PURE__ */ jsx5(InfoIcon, { className: "size-4" }),
412
+ warning: /* @__PURE__ */ jsx5(TriangleAlertIcon, { className: "size-4" }),
413
+ error: /* @__PURE__ */ jsx5(OctagonXIcon, { className: "size-4" }),
414
+ loading: /* @__PURE__ */ jsx5(Loader2Icon, { className: "size-4 animate-spin" })
415
+ },
416
+ style: {
417
+ "--normal-bg": "var(--popover)",
418
+ "--normal-text": "var(--card-foreground)",
419
+ "--normal-border": "var(--border-strong)",
420
+ "--success-bg": "var(--popover)",
421
+ "--success-text": "var(--success)",
422
+ "--success-border": "var(--border-strong)",
423
+ "--error-bg": "var(--popover)",
424
+ "--error-text": "var(--error)",
425
+ "--error-border": "var(--border-strong)",
426
+ "--info-bg": "var(--popover)",
427
+ "--info-text": "var(--info)",
428
+ "--info-border": "var(--border-strong)",
429
+ "--warning-bg": "var(--popover)",
430
+ "--warning-text": "var(--warning)",
431
+ "--warning-border": "var(--border-strong)",
432
+ "--border-radius": "var(--radius-md-value)"
433
+ }
434
+ }, props)
435
+ );
436
+ };
437
+
438
+ // src/components/ui/select.tsx
439
+ import { Select as Primitive } from "radix-ui";
440
+ import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "lucide-react";
441
+ import { jsx as jsx6, jsxs as jsxs2 } from "react/jsx-runtime";
442
+ var Select = Primitive.Root;
443
+ var SelectValue = Primitive.Value;
444
+ var SelectGroup = Primitive.Group;
445
+ function SelectTrigger(_a) {
446
+ var _b = _a, {
447
+ className,
448
+ children
449
+ } = _b, props = __objRest(_b, [
450
+ "className",
451
+ "children"
452
+ ]);
453
+ return /* @__PURE__ */ jsxs2(
454
+ Primitive.Trigger,
455
+ __spreadProps(__spreadValues({
456
+ "data-slot": "select-trigger",
457
+ className: cn(
458
+ "ui-control ui-focus flex w-full items-center justify-between gap-2 border border-input bg-background px-3 text-left text-foreground disabled:cursor-not-allowed disabled:opacity-45 data-[placeholder]:text-muted-foreground [&>span]:min-w-0 [&>span]:truncate",
459
+ className
460
+ )
461
+ }, props), {
462
+ children: [
463
+ children,
464
+ /* @__PURE__ */ jsx6(Primitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx6(ChevronDownIcon, { className: "size-4 shrink-0" }) })
465
+ ]
466
+ })
467
+ );
468
+ }
469
+ function SelectContent(_a) {
470
+ var _b = _a, {
471
+ ref,
472
+ className,
473
+ children,
474
+ position = "popper",
475
+ sideOffset = 6
476
+ } = _b, props = __objRest(_b, [
477
+ "ref",
478
+ "className",
479
+ "children",
480
+ "position",
481
+ "sideOffset"
482
+ ]);
483
+ const [content, contentRef] = useOverlayRef(ref);
484
+ useRadixHiddenInert(content);
485
+ return /* @__PURE__ */ jsx6(Primitive.Portal, { children: /* @__PURE__ */ jsxs2(
486
+ Primitive.Content,
487
+ __spreadProps(__spreadValues({
488
+ ref: contentRef,
489
+ "data-slot": "select-content",
490
+ position,
491
+ sideOffset,
492
+ className: cn(
493
+ "ui-menu ui-popup z-50 max-h-(--radix-select-content-available-height) min-w-(--radix-select-trigger-width) max-w-[calc(100vw-24px)] overflow-hidden",
494
+ className
495
+ )
496
+ }, props), {
497
+ children: [
498
+ /* @__PURE__ */ jsx6(SelectScrollUpButton, {}),
499
+ /* @__PURE__ */ jsx6(Primitive.Viewport, { className: "p-1", children }),
500
+ /* @__PURE__ */ jsx6(SelectScrollDownButton, {})
501
+ ]
502
+ })
503
+ ) });
504
+ }
505
+ function SelectItem(_a) {
506
+ var _b = _a, {
507
+ className,
508
+ children
509
+ } = _b, props = __objRest(_b, [
510
+ "className",
511
+ "children"
512
+ ]);
513
+ return /* @__PURE__ */ jsxs2(
514
+ Primitive.Item,
515
+ __spreadProps(__spreadValues({
516
+ "data-slot": "select-item",
517
+ className: cn(
518
+ "relative flex cursor-default items-center rounded-sm py-2 pr-9 pl-3 text-base outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-45",
519
+ className
520
+ )
521
+ }, props), {
522
+ children: [
523
+ /* @__PURE__ */ jsx6(Primitive.ItemText, { children }),
524
+ /* @__PURE__ */ jsx6(Primitive.ItemIndicator, { className: "absolute right-3", children: /* @__PURE__ */ jsx6(CheckIcon, { className: "size-4" }) })
525
+ ]
526
+ })
527
+ );
528
+ }
529
+ function SelectLabel(_a) {
530
+ var _b = _a, {
531
+ className
532
+ } = _b, props = __objRest(_b, [
533
+ "className"
534
+ ]);
535
+ return /* @__PURE__ */ jsx6(
536
+ Primitive.Label,
537
+ __spreadValues({
538
+ "data-slot": "select-label",
539
+ className: cn(
540
+ "px-3 py-2 text-sm font-medium text-muted-foreground",
541
+ className
542
+ )
543
+ }, props)
544
+ );
545
+ }
546
+ function SelectSeparator(_a) {
547
+ var _b = _a, {
548
+ className
549
+ } = _b, props = __objRest(_b, [
550
+ "className"
551
+ ]);
552
+ return /* @__PURE__ */ jsx6(
553
+ Primitive.Separator,
554
+ __spreadValues({
555
+ "data-slot": "select-separator",
556
+ className: cn("my-1 h-px bg-border", className)
557
+ }, props)
558
+ );
559
+ }
560
+ function SelectScrollUpButton(_a) {
561
+ var _b = _a, {
562
+ className
563
+ } = _b, props = __objRest(_b, [
564
+ "className"
565
+ ]);
566
+ return /* @__PURE__ */ jsx6(
567
+ Primitive.ScrollUpButton,
568
+ __spreadProps(__spreadValues({
569
+ className: cn("flex h-8 items-center justify-center", className)
570
+ }, props), {
571
+ children: /* @__PURE__ */ jsx6(ChevronUpIcon, { className: "size-4" })
572
+ })
573
+ );
574
+ }
575
+ function SelectScrollDownButton(_a) {
576
+ var _b = _a, {
577
+ className
578
+ } = _b, props = __objRest(_b, [
579
+ "className"
580
+ ]);
581
+ return /* @__PURE__ */ jsx6(
582
+ Primitive.ScrollDownButton,
583
+ __spreadProps(__spreadValues({
584
+ className: cn("flex h-8 items-center justify-center", className)
585
+ }, props), {
586
+ children: /* @__PURE__ */ jsx6(ChevronDownIcon, { className: "size-4" })
587
+ })
588
+ );
589
+ }
590
+
591
+ // src/components/ui/switch.tsx
592
+ import { Switch as Primitive2 } from "radix-ui";
593
+ import { jsx as jsx7 } from "react/jsx-runtime";
594
+ function Switch(_a) {
595
+ var _b = _a, {
596
+ className
597
+ } = _b, props = __objRest(_b, [
598
+ "className"
599
+ ]);
600
+ return /* @__PURE__ */ jsx7(
601
+ Primitive2.Root,
602
+ __spreadProps(__spreadValues({
603
+ "data-slot": "switch",
604
+ className: cn("ui-choice ui-focus", className)
605
+ }, props), {
606
+ children: /* @__PURE__ */ jsx7(Primitive2.Thumb, { "data-slot": "switch-thumb" })
607
+ })
608
+ );
609
+ }
610
+
611
+ // src/components/ui/checkbox.tsx
612
+ import { Checkbox as Primitive3 } from "radix-ui";
613
+ import { CheckIcon as CheckIcon2, MinusIcon } from "lucide-react";
614
+ import { jsx as jsx8, jsxs as jsxs3 } from "react/jsx-runtime";
615
+ function Checkbox(_a) {
616
+ var _b = _a, {
617
+ className
618
+ } = _b, props = __objRest(_b, [
619
+ "className"
620
+ ]);
621
+ return /* @__PURE__ */ jsx8(
622
+ Primitive3.Root,
623
+ __spreadProps(__spreadValues({
624
+ "data-slot": "checkbox",
625
+ className: cn("ui-choice ui-focus group/checkbox", className)
626
+ }, props), {
627
+ children: /* @__PURE__ */ jsxs3(Primitive3.Indicator, { className: "flex items-center justify-center", children: [
628
+ /* @__PURE__ */ jsx8(CheckIcon2, { className: "size-3.5 group-data-[state=indeterminate]/checkbox:hidden" }),
629
+ /* @__PURE__ */ jsx8(MinusIcon, { className: "hidden size-3.5 group-data-[state=indeterminate]/checkbox:block" })
630
+ ] })
631
+ })
632
+ );
633
+ }
634
+
635
+ // src/components/ui/tabs.tsx
636
+ import { Tabs as TabsPrimitive } from "radix-ui";
637
+ import { jsx as jsx9 } from "react/jsx-runtime";
638
+ function Tabs(_a) {
639
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
640
+ return /* @__PURE__ */ jsx9(TabsPrimitive.Root, __spreadValues({ "data-slot": "tabs", className: cn("ui-tabs min-w-0", className) }, props));
641
+ }
642
+ function TabsList(_a) {
643
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
644
+ return /* @__PURE__ */ jsx9(TabsPrimitive.List, __spreadValues({ "data-slot": "tabs-list", className: cn("ui-tabs-list", className) }, props));
645
+ }
646
+ function TabsTrigger(_a) {
647
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
648
+ return /* @__PURE__ */ jsx9(TabsPrimitive.Trigger, __spreadValues({ "data-slot": "tabs-trigger", className: cn(
649
+ "ui-tabs-trigger ui-control ui-focus h-auto min-h-(--ui-control-height) w-max max-w-full shrink-0 whitespace-normal break-words rounded-md border-b-2 px-3 text-base leading-normal font-medium disabled:cursor-not-allowed disabled:opacity-50",
650
+ className
651
+ ) }, props));
652
+ }
653
+ function TabsContent(_a) {
654
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
655
+ return /* @__PURE__ */ jsx9(TabsPrimitive.Content, __spreadValues({ "data-slot": "tabs-content", className: cn("ui-focus min-w-0 break-words", className) }, props));
656
+ }
657
+
658
+ // src/components/ui/textarea.tsx
659
+ import { jsx as jsx10 } from "react/jsx-runtime";
660
+ function Textarea(_a) {
661
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
662
+ return /* @__PURE__ */ jsx10(
663
+ "textarea",
664
+ __spreadValues({
665
+ "data-slot": "textarea",
666
+ className: cn(
667
+ "ui-textarea ui-focus w-full min-w-0 resize-y rounded-md border border-input bg-background px-3 py-2 text-base leading-normal placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-error",
668
+ className
669
+ )
670
+ }, props)
671
+ );
672
+ }
673
+ export {
674
+ Avatar,
675
+ AvatarBadge,
676
+ AvatarFallback,
677
+ AvatarGroup,
678
+ AvatarGroupCount,
679
+ AvatarImage,
680
+ Badge,
681
+ Button,
682
+ Card,
683
+ CardAction,
684
+ CardContent,
685
+ CardDescription,
686
+ CardElevated,
687
+ CardFooter,
688
+ CardHeader,
689
+ CardTitle,
690
+ Checkbox,
691
+ Dialog,
692
+ DialogClose,
693
+ DialogContent,
694
+ DialogDescription,
695
+ DialogFooter,
696
+ DialogHeader,
697
+ DialogOverlay,
698
+ DialogPortal,
699
+ DialogTitle,
700
+ DialogTrigger,
701
+ DropdownMenu,
702
+ DropdownMenuCheckboxItem,
703
+ DropdownMenuContent,
704
+ DropdownMenuGroup,
705
+ DropdownMenuItem,
706
+ DropdownMenuLabel,
707
+ DropdownMenuPortal,
708
+ DropdownMenuRadioGroup,
709
+ DropdownMenuRadioItem,
710
+ DropdownMenuSeparator,
711
+ DropdownMenuShortcut,
712
+ DropdownMenuSub,
713
+ DropdownMenuSubContent,
714
+ DropdownMenuSubTrigger,
715
+ DropdownMenuTrigger,
716
+ Input,
717
+ Select,
718
+ SelectContent,
719
+ SelectGroup,
720
+ SelectItem,
721
+ SelectLabel,
722
+ SelectScrollDownButton,
723
+ SelectScrollUpButton,
724
+ SelectSeparator,
725
+ SelectTrigger,
726
+ SelectValue,
727
+ Switch,
728
+ Tabs,
729
+ TabsContent,
730
+ TabsList,
731
+ TabsTrigger,
732
+ Textarea,
733
+ Toaster,
734
+ badgeVariants,
735
+ buttonVariants
736
+ };