@atxp/design-system 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +7 -0
- package/README.md +225 -0
- package/dist/index.cjs +2278 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +901 -0
- package/dist/index.d.ts +901 -0
- package/dist/index.js +2155 -0
- package/dist/index.js.map +1 -0
- package/dist/styles.css +2 -0
- package/package.json +94 -0
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,2278 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
"use strict";
|
|
3
|
+
var __create = Object.create;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
for (var name in all)
|
|
11
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from))
|
|
16
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
17
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
18
|
+
}
|
|
19
|
+
return to;
|
|
20
|
+
};
|
|
21
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
22
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
23
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
24
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
25
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
26
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
27
|
+
mod
|
|
28
|
+
));
|
|
29
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
30
|
+
|
|
31
|
+
// src/index.ts
|
|
32
|
+
var index_exports = {};
|
|
33
|
+
__export(index_exports, {
|
|
34
|
+
Accordion: () => Accordion,
|
|
35
|
+
AccordionContent: () => AccordionContent,
|
|
36
|
+
AccordionItem: () => AccordionItem,
|
|
37
|
+
AccordionTrigger: () => AccordionTrigger,
|
|
38
|
+
Activity: () => import_lucide_react17.Activity,
|
|
39
|
+
Alert: () => Alert,
|
|
40
|
+
AlertCircle: () => import_lucide_react4.AlertCircle,
|
|
41
|
+
AlertDescription: () => AlertDescription,
|
|
42
|
+
AlertDialog: () => AlertDialog,
|
|
43
|
+
AlertDialogAction: () => AlertDialogAction,
|
|
44
|
+
AlertDialogCancel: () => AlertDialogCancel,
|
|
45
|
+
AlertDialogContent: () => AlertDialogContent,
|
|
46
|
+
AlertDialogDescription: () => AlertDialogDescription,
|
|
47
|
+
AlertDialogFooter: () => AlertDialogFooter,
|
|
48
|
+
AlertDialogHeader: () => AlertDialogHeader,
|
|
49
|
+
AlertDialogTitle: () => AlertDialogTitle,
|
|
50
|
+
AlertTitle: () => AlertTitle,
|
|
51
|
+
AlertTriangle: () => import_lucide_react4.AlertTriangle,
|
|
52
|
+
ArrowDown: () => import_lucide_react2.ArrowDown,
|
|
53
|
+
ArrowLeft: () => import_lucide_react2.ArrowLeft,
|
|
54
|
+
ArrowRight: () => import_lucide_react2.ArrowRight,
|
|
55
|
+
ArrowUp: () => import_lucide_react2.ArrowUp,
|
|
56
|
+
Avatar: () => Avatar,
|
|
57
|
+
AvatarFallback: () => AvatarFallback,
|
|
58
|
+
AvatarImage: () => AvatarImage,
|
|
59
|
+
Award: () => import_lucide_react17.Award,
|
|
60
|
+
Badge: () => Badge,
|
|
61
|
+
BarChart: () => import_lucide_react17.BarChart,
|
|
62
|
+
BarChart2: () => import_lucide_react17.BarChart2,
|
|
63
|
+
Battery: () => import_lucide_react13.Battery,
|
|
64
|
+
BatteryCharging: () => import_lucide_react13.BatteryCharging,
|
|
65
|
+
BatteryFull: () => import_lucide_react13.BatteryFull,
|
|
66
|
+
BatteryLow: () => import_lucide_react13.BatteryLow,
|
|
67
|
+
Bell: () => import_lucide_react6.Bell,
|
|
68
|
+
BellOff: () => import_lucide_react6.BellOff,
|
|
69
|
+
Bluetooth: () => import_lucide_react13.Bluetooth,
|
|
70
|
+
BookOpen: () => import_lucide_react17.BookOpen,
|
|
71
|
+
Bookmark: () => import_lucide_react17.Bookmark,
|
|
72
|
+
Breadcrumb: () => Breadcrumb,
|
|
73
|
+
BreadcrumbEllipsis: () => BreadcrumbEllipsis,
|
|
74
|
+
BreadcrumbItem: () => BreadcrumbItem,
|
|
75
|
+
BreadcrumbLink: () => BreadcrumbLink,
|
|
76
|
+
BreadcrumbList: () => BreadcrumbList,
|
|
77
|
+
BreadcrumbPage: () => BreadcrumbPage,
|
|
78
|
+
BreadcrumbSeparator: () => BreadcrumbSeparator,
|
|
79
|
+
Bug: () => import_lucide_react16.Bug,
|
|
80
|
+
Building: () => import_lucide_react14.Building,
|
|
81
|
+
Building2: () => import_lucide_react14.Building2,
|
|
82
|
+
Button: () => Button,
|
|
83
|
+
ButtonGroup: () => ButtonGroup,
|
|
84
|
+
Calendar: () => import_lucide_react11.Calendar,
|
|
85
|
+
CalendarCheck: () => import_lucide_react11.CalendarCheck,
|
|
86
|
+
CalendarDays: () => import_lucide_react11.CalendarDays,
|
|
87
|
+
CalendarMinus: () => import_lucide_react11.CalendarMinus,
|
|
88
|
+
CalendarPlus: () => import_lucide_react11.CalendarPlus,
|
|
89
|
+
CalendarX: () => import_lucide_react11.CalendarX,
|
|
90
|
+
Camera: () => import_lucide_react8.Camera,
|
|
91
|
+
CameraOff: () => import_lucide_react8.CameraOff,
|
|
92
|
+
Card: () => Card,
|
|
93
|
+
CardContent: () => CardContent,
|
|
94
|
+
CardDescription: () => CardDescription,
|
|
95
|
+
CardFooter: () => CardFooter,
|
|
96
|
+
CardHeader: () => CardHeader,
|
|
97
|
+
CardTitle: () => CardTitle,
|
|
98
|
+
Carousel: () => Carousel,
|
|
99
|
+
CarouselContent: () => CarouselContent,
|
|
100
|
+
CarouselItem: () => CarouselItem,
|
|
101
|
+
CarouselNext: () => CarouselNext,
|
|
102
|
+
CarouselPrevious: () => CarouselPrevious,
|
|
103
|
+
Check: () => import_lucide_react3.Check,
|
|
104
|
+
CheckCircle: () => import_lucide_react4.CheckCircle,
|
|
105
|
+
CheckCircle2: () => import_lucide_react4.CheckCircle2,
|
|
106
|
+
CheckWaves: () => import_lucide_react17.CheckCircle,
|
|
107
|
+
Checkbox: () => Checkbox,
|
|
108
|
+
ChevronDown: () => import_lucide_react2.ChevronDown,
|
|
109
|
+
ChevronLeft: () => import_lucide_react2.ChevronLeft,
|
|
110
|
+
ChevronRight: () => import_lucide_react2.ChevronRight,
|
|
111
|
+
ChevronUp: () => import_lucide_react2.ChevronUp,
|
|
112
|
+
ChevronsDown: () => import_lucide_react2.ChevronsDown,
|
|
113
|
+
ChevronsLeft: () => import_lucide_react2.ChevronsLeft,
|
|
114
|
+
ChevronsRight: () => import_lucide_react2.ChevronsRight,
|
|
115
|
+
ChevronsUp: () => import_lucide_react2.ChevronsUp,
|
|
116
|
+
Clock: () => import_lucide_react11.Clock,
|
|
117
|
+
Cloud: () => import_lucide_react12.Cloud,
|
|
118
|
+
CloudDrizzle: () => import_lucide_react12.CloudDrizzle,
|
|
119
|
+
CloudLightning: () => import_lucide_react12.CloudLightning,
|
|
120
|
+
CloudRain: () => import_lucide_react12.CloudRain,
|
|
121
|
+
CloudSnow: () => import_lucide_react12.CloudSnow,
|
|
122
|
+
Code: () => import_lucide_react16.Code,
|
|
123
|
+
Code2: () => import_lucide_react16.Code2,
|
|
124
|
+
Cog: () => import_lucide_react17.Cog,
|
|
125
|
+
Columns: () => import_lucide_react9.Columns,
|
|
126
|
+
Compass: () => import_lucide_react14.Compass,
|
|
127
|
+
Copy: () => import_lucide_react3.Copy,
|
|
128
|
+
Cpu: () => import_lucide_react16.Cpu,
|
|
129
|
+
CreditCard: () => import_lucide_react10.CreditCard,
|
|
130
|
+
Database: () => import_lucide_react16.Database,
|
|
131
|
+
Dialog: () => Dialog,
|
|
132
|
+
DialogContent: () => DialogContent,
|
|
133
|
+
DialogDescription: () => DialogDescription,
|
|
134
|
+
DialogFooter: () => DialogFooter,
|
|
135
|
+
DialogHeader: () => DialogHeader,
|
|
136
|
+
DialogTitle: () => DialogTitle,
|
|
137
|
+
DollarSign: () => import_lucide_react10.DollarSign,
|
|
138
|
+
Dots: () => import_lucide_react17.MoreHorizontal,
|
|
139
|
+
Download: () => import_lucide_react3.Download,
|
|
140
|
+
Drawer: () => Drawer,
|
|
141
|
+
DrawerContent: () => DrawerContent,
|
|
142
|
+
DrawerDescription: () => DrawerDescription,
|
|
143
|
+
DrawerFooter: () => DrawerFooter,
|
|
144
|
+
DrawerHeader: () => DrawerHeader,
|
|
145
|
+
DrawerTitle: () => DrawerTitle,
|
|
146
|
+
Edit: () => import_lucide_react3.Edit,
|
|
147
|
+
Edit2: () => import_lucide_react3.Edit2,
|
|
148
|
+
Edit3: () => import_lucide_react3.Edit3,
|
|
149
|
+
ExternalLink: () => import_lucide_react17.ExternalLink,
|
|
150
|
+
Eye: () => import_lucide_react7.Eye,
|
|
151
|
+
EyeOff: () => import_lucide_react7.EyeOff,
|
|
152
|
+
Facebook: () => import_lucide_react15.Facebook,
|
|
153
|
+
Figma: () => import_lucide_react15.Figma,
|
|
154
|
+
File: () => import_lucide_react5.File,
|
|
155
|
+
FileImage: () => import_lucide_react5.FileImage,
|
|
156
|
+
FilePlus: () => import_lucide_react5.FilePlus,
|
|
157
|
+
FileText: () => import_lucide_react5.FileText,
|
|
158
|
+
Filter: () => import_lucide_react17.Filter,
|
|
159
|
+
Flag: () => import_lucide_react17.Flag,
|
|
160
|
+
Folder: () => import_lucide_react5.Folder,
|
|
161
|
+
FolderOpen: () => import_lucide_react5.FolderOpen,
|
|
162
|
+
FolderPlus: () => import_lucide_react5.FolderPlus,
|
|
163
|
+
Gift: () => import_lucide_react10.Gift,
|
|
164
|
+
GitBranch: () => import_lucide_react16.GitBranch,
|
|
165
|
+
GitCommit: () => import_lucide_react16.GitCommit,
|
|
166
|
+
GitMerge: () => import_lucide_react16.GitMerge,
|
|
167
|
+
GitPullRequest: () => import_lucide_react16.GitPullRequest,
|
|
168
|
+
Github: () => import_lucide_react15.Github,
|
|
169
|
+
Globe: () => import_lucide_react14.Globe,
|
|
170
|
+
Grid: () => import_lucide_react9.Grid,
|
|
171
|
+
Header: () => Header2,
|
|
172
|
+
HeaderActions: () => HeaderActions,
|
|
173
|
+
HeaderBreadcrumbs: () => HeaderBreadcrumbs,
|
|
174
|
+
HeaderContent: () => HeaderContent,
|
|
175
|
+
HeaderDescription: () => HeaderDescription,
|
|
176
|
+
HeaderTitle: () => HeaderTitle,
|
|
177
|
+
Heart: () => import_lucide_react17.Heart,
|
|
178
|
+
HelpCircle: () => import_lucide_react4.HelpCircle,
|
|
179
|
+
Home: () => import_lucide_react14.Home,
|
|
180
|
+
Icon: () => Icon,
|
|
181
|
+
Image: () => import_lucide_react5.Image,
|
|
182
|
+
Info: () => import_lucide_react4.Info,
|
|
183
|
+
Instagram: () => import_lucide_react15.Instagram,
|
|
184
|
+
Key: () => import_lucide_react7.Key,
|
|
185
|
+
Laptop: () => import_lucide_react13.Laptop,
|
|
186
|
+
Layout: () => import_lucide_react9.Layout,
|
|
187
|
+
LayoutGrid: () => import_lucide_react9.LayoutGrid,
|
|
188
|
+
LayoutList: () => import_lucide_react9.LayoutList,
|
|
189
|
+
LineChart: () => import_lucide_react17.LineChart,
|
|
190
|
+
Link: () => import_lucide_react17.Link,
|
|
191
|
+
Link2: () => import_lucide_react17.Link2,
|
|
192
|
+
Linkedin: () => import_lucide_react15.Linkedin,
|
|
193
|
+
List: () => import_lucide_react9.List,
|
|
194
|
+
Loader: () => import_lucide_react4.Loader,
|
|
195
|
+
Loader2: () => import_lucide_react4.Loader2,
|
|
196
|
+
Lock: () => import_lucide_react7.Lock,
|
|
197
|
+
LogIn: () => import_lucide_react7.LogIn,
|
|
198
|
+
LogOut: () => import_lucide_react7.LogOut,
|
|
199
|
+
Mail: () => import_lucide_react6.Mail,
|
|
200
|
+
Map: () => import_lucide_react14.Map,
|
|
201
|
+
MapPin: () => import_lucide_react14.MapPin,
|
|
202
|
+
Maximize: () => import_lucide_react9.Maximize,
|
|
203
|
+
Maximize2: () => import_lucide_react9.Maximize2,
|
|
204
|
+
Menu: () => import_lucide_react9.Menu,
|
|
205
|
+
MessageCircle: () => import_lucide_react6.MessageCircle,
|
|
206
|
+
MessageSquare: () => import_lucide_react6.MessageSquare,
|
|
207
|
+
Mic: () => import_lucide_react6.Mic,
|
|
208
|
+
MicOff: () => import_lucide_react6.MicOff,
|
|
209
|
+
Minimize: () => import_lucide_react9.Minimize,
|
|
210
|
+
Minimize2: () => import_lucide_react9.Minimize2,
|
|
211
|
+
Minus: () => import_lucide_react3.Minus,
|
|
212
|
+
Monitor: () => import_lucide_react13.Monitor,
|
|
213
|
+
Moon: () => import_lucide_react12.Moon,
|
|
214
|
+
MoreHorizontal: () => import_lucide_react9.MoreHorizontal,
|
|
215
|
+
MoreVertical: () => import_lucide_react9.MoreVertical,
|
|
216
|
+
Music: () => import_lucide_react8.Music,
|
|
217
|
+
Navigation: () => import_lucide_react14.Navigation,
|
|
218
|
+
Navigation2: () => import_lucide_react14.Navigation2,
|
|
219
|
+
Package: () => import_lucide_react10.Package,
|
|
220
|
+
PanelLeft: () => import_lucide_react9.PanelLeft,
|
|
221
|
+
PanelRight: () => import_lucide_react9.PanelRight,
|
|
222
|
+
Paperclip: () => import_lucide_react17.Paperclip,
|
|
223
|
+
Pause: () => import_lucide_react8.Pause,
|
|
224
|
+
Pen: () => import_lucide_react17.Pen,
|
|
225
|
+
Phone: () => import_lucide_react6.Phone,
|
|
226
|
+
PhoneCall: () => import_lucide_react6.PhoneCall,
|
|
227
|
+
PhoneOff: () => import_lucide_react6.PhoneOff,
|
|
228
|
+
PieChart: () => import_lucide_react17.PieChart,
|
|
229
|
+
Play: () => import_lucide_react8.Play,
|
|
230
|
+
Plus: () => import_lucide_react3.Plus,
|
|
231
|
+
Radio: () => Radio,
|
|
232
|
+
RefreshCw: () => import_lucide_react3.RefreshCw,
|
|
233
|
+
RotateCcw: () => import_lucide_react3.RotateCcw,
|
|
234
|
+
RotateCw: () => import_lucide_react3.RotateCw,
|
|
235
|
+
Save: () => import_lucide_react3.Save,
|
|
236
|
+
Search: () => import_lucide_react17.Search,
|
|
237
|
+
Select: () => Select,
|
|
238
|
+
SelectContent: () => SelectContent,
|
|
239
|
+
SelectGroup: () => SelectGroup,
|
|
240
|
+
SelectItem: () => SelectItem,
|
|
241
|
+
SelectLabel: () => SelectLabel,
|
|
242
|
+
SelectScrollDownButton: () => SelectScrollDownButton,
|
|
243
|
+
SelectScrollUpButton: () => SelectScrollUpButton,
|
|
244
|
+
SelectSeparator: () => SelectSeparator,
|
|
245
|
+
SelectTrigger: () => SelectTrigger,
|
|
246
|
+
SelectValue: () => SelectValue,
|
|
247
|
+
Send: () => import_lucide_react3.Send,
|
|
248
|
+
Separator: () => Separator2,
|
|
249
|
+
Server: () => import_lucide_react16.Server,
|
|
250
|
+
Settings: () => import_lucide_react7.Settings,
|
|
251
|
+
Share: () => import_lucide_react3.Share,
|
|
252
|
+
Share2: () => import_lucide_react3.Share2,
|
|
253
|
+
Sheet: () => Sheet,
|
|
254
|
+
SheetClose: () => SheetClose,
|
|
255
|
+
SheetContent: () => SheetContent,
|
|
256
|
+
SheetDescription: () => SheetDescription,
|
|
257
|
+
SheetFooter: () => SheetFooter,
|
|
258
|
+
SheetHeader: () => SheetHeader,
|
|
259
|
+
SheetTitle: () => SheetTitle,
|
|
260
|
+
Shield: () => import_lucide_react7.Shield,
|
|
261
|
+
ShieldCheck: () => import_lucide_react7.ShieldCheck,
|
|
262
|
+
ShoppingBag: () => import_lucide_react10.ShoppingBag,
|
|
263
|
+
ShoppingCart: () => import_lucide_react10.ShoppingCart,
|
|
264
|
+
Sidebar: () => import_lucide_react9.Sidebar,
|
|
265
|
+
Skeleton: () => Skeleton,
|
|
266
|
+
SkipBack: () => import_lucide_react8.SkipBack,
|
|
267
|
+
SkipForward: () => import_lucide_react8.SkipForward,
|
|
268
|
+
Slider: () => Slider,
|
|
269
|
+
Smartphone: () => import_lucide_react13.Smartphone,
|
|
270
|
+
Square: () => import_lucide_react8.Square,
|
|
271
|
+
Star: () => import_lucide_react17.Star,
|
|
272
|
+
Store: () => import_lucide_react14.Store,
|
|
273
|
+
Sun: () => import_lucide_react12.Sun,
|
|
274
|
+
Switch: () => Switch,
|
|
275
|
+
Table: () => Table,
|
|
276
|
+
TableBody: () => TableBody,
|
|
277
|
+
TableCaption: () => TableCaption,
|
|
278
|
+
TableCell: () => TableCell,
|
|
279
|
+
TableFooter: () => TableFooter,
|
|
280
|
+
TableHead: () => TableHead,
|
|
281
|
+
TableHeader: () => TableHeader,
|
|
282
|
+
TableRow: () => TableRow,
|
|
283
|
+
Tablet: () => import_lucide_react13.Tablet,
|
|
284
|
+
Tabs: () => Tabs,
|
|
285
|
+
TabsContent: () => TabsContent,
|
|
286
|
+
TabsList: () => TabsList,
|
|
287
|
+
TabsTrigger: () => TabsTrigger,
|
|
288
|
+
Tag: () => import_lucide_react10.Tag,
|
|
289
|
+
Terminal: () => import_lucide_react16.Terminal,
|
|
290
|
+
Textarea: () => Textarea,
|
|
291
|
+
ThemeProvider: () => ThemeProvider,
|
|
292
|
+
Toast: () => Toaster2,
|
|
293
|
+
Toaster: () => import_sonner2.Toaster,
|
|
294
|
+
Toggle: () => Toggle,
|
|
295
|
+
Trash: () => import_lucide_react3.Trash,
|
|
296
|
+
Trash2: () => import_lucide_react3.Trash2,
|
|
297
|
+
TrendingDown: () => import_lucide_react17.TrendingDown,
|
|
298
|
+
TrendingUp: () => import_lucide_react17.TrendingUp,
|
|
299
|
+
Tv: () => import_lucide_react13.Tv,
|
|
300
|
+
Twitch: () => import_lucide_react15.Twitch,
|
|
301
|
+
Twitter: () => import_lucide_react15.Twitter,
|
|
302
|
+
Unlock: () => import_lucide_react7.Unlock,
|
|
303
|
+
Upload: () => import_lucide_react3.Upload,
|
|
304
|
+
User: () => import_lucide_react7.User,
|
|
305
|
+
UserCheck: () => import_lucide_react7.UserCheck,
|
|
306
|
+
UserMinus: () => import_lucide_react7.UserMinus,
|
|
307
|
+
UserPlus: () => import_lucide_react7.UserPlus,
|
|
308
|
+
UserX: () => import_lucide_react7.UserX,
|
|
309
|
+
Users: () => import_lucide_react7.Users,
|
|
310
|
+
Video: () => import_lucide_react6.Video,
|
|
311
|
+
VideoOff: () => import_lucide_react6.VideoOff,
|
|
312
|
+
Volume: () => import_lucide_react8.Volume,
|
|
313
|
+
Volume1: () => import_lucide_react8.Volume1,
|
|
314
|
+
Volume2: () => import_lucide_react8.Volume2,
|
|
315
|
+
VolumeX: () => import_lucide_react8.VolumeX,
|
|
316
|
+
Watch: () => import_lucide_react13.Watch,
|
|
317
|
+
Wifi: () => import_lucide_react13.Wifi,
|
|
318
|
+
WifiOff: () => import_lucide_react13.WifiOff,
|
|
319
|
+
Wind: () => import_lucide_react12.Wind,
|
|
320
|
+
X: () => import_lucide_react3.X,
|
|
321
|
+
XCircle: () => import_lucide_react4.XCircle,
|
|
322
|
+
Youtube: () => import_lucide_react15.Youtube,
|
|
323
|
+
Zap: () => import_lucide_react17.Zap,
|
|
324
|
+
badgeVariants: () => badgeVariants,
|
|
325
|
+
buttonVariants: () => buttonVariants,
|
|
326
|
+
cn: () => cn,
|
|
327
|
+
toast: () => import_sonner2.toast,
|
|
328
|
+
toggleVariants: () => toggleVariants,
|
|
329
|
+
useTheme: () => useTheme
|
|
330
|
+
});
|
|
331
|
+
module.exports = __toCommonJS(index_exports);
|
|
332
|
+
|
|
333
|
+
// src/components/Accordion/Accordion.tsx
|
|
334
|
+
var React = __toESM(require("react"), 1);
|
|
335
|
+
var AccordionPrimitive = __toESM(require("@radix-ui/react-accordion"), 1);
|
|
336
|
+
var import_lucide_react = require("lucide-react");
|
|
337
|
+
|
|
338
|
+
// src/lib/utils.ts
|
|
339
|
+
var import_clsx = require("clsx");
|
|
340
|
+
function cn(...inputs) {
|
|
341
|
+
return (0, import_clsx.clsx)(inputs);
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
// src/components/Accordion/Accordion.tsx
|
|
345
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
346
|
+
var Accordion = AccordionPrimitive.Root;
|
|
347
|
+
var AccordionItem = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
348
|
+
AccordionPrimitive.Item,
|
|
349
|
+
{
|
|
350
|
+
ref,
|
|
351
|
+
className: cn("border-b border-border", className),
|
|
352
|
+
...props
|
|
353
|
+
}
|
|
354
|
+
));
|
|
355
|
+
AccordionItem.displayName = "AccordionItem";
|
|
356
|
+
var AccordionTrigger = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
357
|
+
AccordionPrimitive.Trigger,
|
|
358
|
+
{
|
|
359
|
+
ref,
|
|
360
|
+
className: cn(
|
|
361
|
+
"flex flex-1 items-center justify-between py-4 text-base font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180",
|
|
362
|
+
className
|
|
363
|
+
),
|
|
364
|
+
...props,
|
|
365
|
+
children: [
|
|
366
|
+
children,
|
|
367
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ChevronDown, { className: "h-4 w-4 shrink-0 text-foreground transition-transform duration-200" })
|
|
368
|
+
]
|
|
369
|
+
}
|
|
370
|
+
) }));
|
|
371
|
+
AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
|
|
372
|
+
var AccordionContent = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
373
|
+
AccordionPrimitive.Content,
|
|
374
|
+
{
|
|
375
|
+
ref,
|
|
376
|
+
className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
|
|
377
|
+
...props,
|
|
378
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: cn("pb-4 pt-0", className), children })
|
|
379
|
+
}
|
|
380
|
+
));
|
|
381
|
+
AccordionContent.displayName = AccordionPrimitive.Content.displayName;
|
|
382
|
+
|
|
383
|
+
// src/components/Alert/Alert.tsx
|
|
384
|
+
var React2 = __toESM(require("react"), 1);
|
|
385
|
+
var import_class_variance_authority = require("class-variance-authority");
|
|
386
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
387
|
+
var alertVariants = (0, import_class_variance_authority.cva)(
|
|
388
|
+
"relative w-full rounded-lg border p-4 flex gap-3 items-start",
|
|
389
|
+
{
|
|
390
|
+
variants: {
|
|
391
|
+
variant: {
|
|
392
|
+
default: "bg-background text-foreground border-border",
|
|
393
|
+
destructive: "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive"
|
|
394
|
+
}
|
|
395
|
+
},
|
|
396
|
+
defaultVariants: {
|
|
397
|
+
variant: "default"
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
);
|
|
401
|
+
var Alert = React2.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
402
|
+
"div",
|
|
403
|
+
{
|
|
404
|
+
ref,
|
|
405
|
+
role: "alert",
|
|
406
|
+
className: cn(alertVariants({ variant }), className),
|
|
407
|
+
...props
|
|
408
|
+
}
|
|
409
|
+
));
|
|
410
|
+
Alert.displayName = "Alert";
|
|
411
|
+
var AlertTitle = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
412
|
+
"h5",
|
|
413
|
+
{
|
|
414
|
+
ref,
|
|
415
|
+
className: cn("mb-1 font-medium leading-6 tracking-normal", className),
|
|
416
|
+
...props
|
|
417
|
+
}
|
|
418
|
+
));
|
|
419
|
+
AlertTitle.displayName = "AlertTitle";
|
|
420
|
+
var AlertDescription = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
421
|
+
"div",
|
|
422
|
+
{
|
|
423
|
+
ref,
|
|
424
|
+
className: cn("text-sm leading-5 [&_p]:leading-relaxed", className),
|
|
425
|
+
...props
|
|
426
|
+
}
|
|
427
|
+
));
|
|
428
|
+
AlertDescription.displayName = "AlertDescription";
|
|
429
|
+
|
|
430
|
+
// src/components/AlertDialog/AlertDialog.tsx
|
|
431
|
+
var React3 = __toESM(require("react"), 1);
|
|
432
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
433
|
+
var AlertDialog = ({ open, onOpenChange, children }) => {
|
|
434
|
+
React3.useEffect(() => {
|
|
435
|
+
const handleEscape = (e) => {
|
|
436
|
+
if (e.key === "Escape" && open) {
|
|
437
|
+
onOpenChange?.(false);
|
|
438
|
+
}
|
|
439
|
+
};
|
|
440
|
+
if (open) {
|
|
441
|
+
document.addEventListener("keydown", handleEscape);
|
|
442
|
+
document.body.style.overflow = "hidden";
|
|
443
|
+
}
|
|
444
|
+
return () => {
|
|
445
|
+
document.removeEventListener("keydown", handleEscape);
|
|
446
|
+
document.body.style.overflow = "";
|
|
447
|
+
};
|
|
448
|
+
}, [open, onOpenChange]);
|
|
449
|
+
if (!open) return null;
|
|
450
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, { children: React3.Children.map(children, (child) => {
|
|
451
|
+
if (React3.isValidElement(child)) {
|
|
452
|
+
return React3.cloneElement(child, { onOpenChange });
|
|
453
|
+
}
|
|
454
|
+
return child;
|
|
455
|
+
}) });
|
|
456
|
+
};
|
|
457
|
+
AlertDialog.displayName = "AlertDialog";
|
|
458
|
+
var AlertDialogContent = React3.forwardRef(({ className, children, onOpenChange, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
459
|
+
"div",
|
|
460
|
+
{
|
|
461
|
+
className: "fixed inset-0 z-50 flex items-center justify-center",
|
|
462
|
+
onClick: () => onOpenChange?.(false),
|
|
463
|
+
children: [
|
|
464
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "fixed inset-0 bg-black/50", "aria-hidden": "true" }),
|
|
465
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
466
|
+
"div",
|
|
467
|
+
{
|
|
468
|
+
ref,
|
|
469
|
+
role: "alertdialog",
|
|
470
|
+
"aria-modal": "true",
|
|
471
|
+
className: cn(
|
|
472
|
+
"relative z-50 flex w-[512px] flex-col gap-4 rounded-lg border border-border bg-background p-6",
|
|
473
|
+
className
|
|
474
|
+
),
|
|
475
|
+
onClick: (e) => e.stopPropagation(),
|
|
476
|
+
...props,
|
|
477
|
+
children
|
|
478
|
+
}
|
|
479
|
+
)
|
|
480
|
+
]
|
|
481
|
+
}
|
|
482
|
+
));
|
|
483
|
+
AlertDialogContent.displayName = "AlertDialogContent";
|
|
484
|
+
var AlertDialogHeader = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
485
|
+
"div",
|
|
486
|
+
{
|
|
487
|
+
ref,
|
|
488
|
+
className: cn("flex flex-col gap-2", className),
|
|
489
|
+
...props
|
|
490
|
+
}
|
|
491
|
+
));
|
|
492
|
+
AlertDialogHeader.displayName = "AlertDialogHeader";
|
|
493
|
+
var AlertDialogTitle = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
494
|
+
"h2",
|
|
495
|
+
{
|
|
496
|
+
ref,
|
|
497
|
+
className: cn("text-lg font-semibold leading-7 text-foreground", className),
|
|
498
|
+
...props
|
|
499
|
+
}
|
|
500
|
+
));
|
|
501
|
+
AlertDialogTitle.displayName = "AlertDialogTitle";
|
|
502
|
+
var AlertDialogDescription = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
503
|
+
"p",
|
|
504
|
+
{
|
|
505
|
+
ref,
|
|
506
|
+
className: cn("text-sm leading-5 text-muted-foreground", className),
|
|
507
|
+
...props
|
|
508
|
+
}
|
|
509
|
+
));
|
|
510
|
+
AlertDialogDescription.displayName = "AlertDialogDescription";
|
|
511
|
+
var AlertDialogFooter = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
512
|
+
"div",
|
|
513
|
+
{
|
|
514
|
+
ref,
|
|
515
|
+
className: cn("flex items-center justify-end gap-2", className),
|
|
516
|
+
...props
|
|
517
|
+
}
|
|
518
|
+
));
|
|
519
|
+
AlertDialogFooter.displayName = "AlertDialogFooter";
|
|
520
|
+
var AlertDialogCancel = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
521
|
+
"button",
|
|
522
|
+
{
|
|
523
|
+
ref,
|
|
524
|
+
type: "button",
|
|
525
|
+
className: cn(
|
|
526
|
+
"flex h-9 items-center justify-center rounded-lg border-2 border-border bg-background px-4 py-2 text-sm font-medium leading-5 text-accent-foreground shadow-[0px_1px_2px_0px_rgba(0,0,0,0.05)] transition-colors hover:bg-muted",
|
|
527
|
+
className
|
|
528
|
+
),
|
|
529
|
+
...props
|
|
530
|
+
}
|
|
531
|
+
));
|
|
532
|
+
AlertDialogCancel.displayName = "AlertDialogCancel";
|
|
533
|
+
var AlertDialogAction = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
534
|
+
"button",
|
|
535
|
+
{
|
|
536
|
+
ref,
|
|
537
|
+
type: "button",
|
|
538
|
+
className: cn(
|
|
539
|
+
"flex h-9 items-center justify-center rounded-lg bg-primary px-4 py-2 text-sm font-medium leading-5 text-primary-foreground transition-colors hover:bg-primary/90",
|
|
540
|
+
className
|
|
541
|
+
),
|
|
542
|
+
...props
|
|
543
|
+
}
|
|
544
|
+
));
|
|
545
|
+
AlertDialogAction.displayName = "AlertDialogAction";
|
|
546
|
+
|
|
547
|
+
// src/components/Avatar/Avatar.tsx
|
|
548
|
+
var React4 = __toESM(require("react"), 1);
|
|
549
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
550
|
+
var Avatar = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
551
|
+
"div",
|
|
552
|
+
{
|
|
553
|
+
ref,
|
|
554
|
+
className: cn(
|
|
555
|
+
"relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",
|
|
556
|
+
className
|
|
557
|
+
),
|
|
558
|
+
...props
|
|
559
|
+
}
|
|
560
|
+
));
|
|
561
|
+
Avatar.displayName = "Avatar";
|
|
562
|
+
var AvatarImage = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
563
|
+
"img",
|
|
564
|
+
{
|
|
565
|
+
ref,
|
|
566
|
+
className: cn("aspect-square h-full w-full object-cover", className),
|
|
567
|
+
...props
|
|
568
|
+
}
|
|
569
|
+
));
|
|
570
|
+
AvatarImage.displayName = "AvatarImage";
|
|
571
|
+
var AvatarFallback = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
572
|
+
"div",
|
|
573
|
+
{
|
|
574
|
+
ref,
|
|
575
|
+
className: cn(
|
|
576
|
+
"flex h-full w-full items-center justify-center rounded-full bg-muted text-sm font-semibold leading-5 text-foreground",
|
|
577
|
+
className
|
|
578
|
+
),
|
|
579
|
+
...props
|
|
580
|
+
}
|
|
581
|
+
));
|
|
582
|
+
AvatarFallback.displayName = "AvatarFallback";
|
|
583
|
+
|
|
584
|
+
// src/components/Badge/Badge.tsx
|
|
585
|
+
var import_class_variance_authority2 = require("class-variance-authority");
|
|
586
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
587
|
+
var badgeVariants = (0, import_class_variance_authority2.cva)(
|
|
588
|
+
"inline-flex items-center justify-center rounded-lg border transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2",
|
|
589
|
+
{
|
|
590
|
+
variants: {
|
|
591
|
+
variant: {
|
|
592
|
+
default: "border-primary bg-primary text-primary-foreground hover:bg-primary/80",
|
|
593
|
+
secondary: "border-secondary bg-secondary text-secondary-foreground hover:brightness-95",
|
|
594
|
+
destructive: "border-destructive bg-destructive text-destructive-foreground hover:bg-destructive/80",
|
|
595
|
+
outline: "border-border bg-transparent text-foreground hover:bg-muted",
|
|
596
|
+
success: "border-success bg-success-background text-foreground hover:brightness-95"
|
|
597
|
+
},
|
|
598
|
+
size: {
|
|
599
|
+
sm: "px-2 py-0.5 text-xs font-semibold",
|
|
600
|
+
md: "px-2 py-0.5 text-sm font-medium"
|
|
601
|
+
}
|
|
602
|
+
},
|
|
603
|
+
defaultVariants: {
|
|
604
|
+
variant: "default",
|
|
605
|
+
size: "sm"
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
);
|
|
609
|
+
function Badge({ className, variant, size, ...props }) {
|
|
610
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
611
|
+
"div",
|
|
612
|
+
{
|
|
613
|
+
className: cn(badgeVariants({ variant, size }), className),
|
|
614
|
+
...props
|
|
615
|
+
}
|
|
616
|
+
);
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
// src/components/Breadcrumb/Breadcrumb.tsx
|
|
620
|
+
var React6 = __toESM(require("react"), 1);
|
|
621
|
+
|
|
622
|
+
// src/components/Icon/Icon.tsx
|
|
623
|
+
var React5 = __toESM(require("react"), 1);
|
|
624
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
625
|
+
var Icon = React5.forwardRef(
|
|
626
|
+
({ icon: IconComponent, size = 24, className, ...props }, ref) => {
|
|
627
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
628
|
+
IconComponent,
|
|
629
|
+
{
|
|
630
|
+
ref,
|
|
631
|
+
size,
|
|
632
|
+
className: cn("shrink-0", className),
|
|
633
|
+
...props
|
|
634
|
+
}
|
|
635
|
+
);
|
|
636
|
+
}
|
|
637
|
+
);
|
|
638
|
+
Icon.displayName = "Icon";
|
|
639
|
+
|
|
640
|
+
// src/components/Icon/index.ts
|
|
641
|
+
var import_lucide_react2 = require("lucide-react");
|
|
642
|
+
var import_lucide_react3 = require("lucide-react");
|
|
643
|
+
var import_lucide_react4 = require("lucide-react");
|
|
644
|
+
var import_lucide_react5 = require("lucide-react");
|
|
645
|
+
var import_lucide_react6 = require("lucide-react");
|
|
646
|
+
var import_lucide_react7 = require("lucide-react");
|
|
647
|
+
var import_lucide_react8 = require("lucide-react");
|
|
648
|
+
var import_lucide_react9 = require("lucide-react");
|
|
649
|
+
var import_lucide_react10 = require("lucide-react");
|
|
650
|
+
var import_lucide_react11 = require("lucide-react");
|
|
651
|
+
var import_lucide_react12 = require("lucide-react");
|
|
652
|
+
var import_lucide_react13 = require("lucide-react");
|
|
653
|
+
var import_lucide_react14 = require("lucide-react");
|
|
654
|
+
var import_lucide_react15 = require("lucide-react");
|
|
655
|
+
var import_lucide_react16 = require("lucide-react");
|
|
656
|
+
var import_lucide_react17 = require("lucide-react");
|
|
657
|
+
|
|
658
|
+
// src/components/Breadcrumb/Breadcrumb.tsx
|
|
659
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
660
|
+
var Breadcrumb = React6.forwardRef(({ ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("nav", { ref, "aria-label": "breadcrumb", ...props }));
|
|
661
|
+
Breadcrumb.displayName = "Breadcrumb";
|
|
662
|
+
var BreadcrumbList = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
663
|
+
"ol",
|
|
664
|
+
{
|
|
665
|
+
ref,
|
|
666
|
+
className: cn(
|
|
667
|
+
"flex flex-wrap items-center gap-2 break-words text-sm text-muted-foreground",
|
|
668
|
+
className
|
|
669
|
+
),
|
|
670
|
+
...props
|
|
671
|
+
}
|
|
672
|
+
));
|
|
673
|
+
BreadcrumbList.displayName = "BreadcrumbList";
|
|
674
|
+
var BreadcrumbItem = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
675
|
+
"li",
|
|
676
|
+
{
|
|
677
|
+
ref,
|
|
678
|
+
className: cn("inline-flex items-center gap-2", className),
|
|
679
|
+
...props
|
|
680
|
+
}
|
|
681
|
+
));
|
|
682
|
+
BreadcrumbItem.displayName = "BreadcrumbItem";
|
|
683
|
+
var BreadcrumbLink = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
684
|
+
"a",
|
|
685
|
+
{
|
|
686
|
+
ref,
|
|
687
|
+
className: cn(
|
|
688
|
+
"text-sm font-normal leading-5 transition-colors hover:text-foreground",
|
|
689
|
+
className
|
|
690
|
+
),
|
|
691
|
+
...props
|
|
692
|
+
}
|
|
693
|
+
));
|
|
694
|
+
BreadcrumbLink.displayName = "BreadcrumbLink";
|
|
695
|
+
var BreadcrumbPage = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
696
|
+
"span",
|
|
697
|
+
{
|
|
698
|
+
ref,
|
|
699
|
+
role: "link",
|
|
700
|
+
"aria-disabled": "true",
|
|
701
|
+
"aria-current": "page",
|
|
702
|
+
className: cn("text-sm font-normal leading-5 text-foreground", className),
|
|
703
|
+
...props
|
|
704
|
+
}
|
|
705
|
+
));
|
|
706
|
+
BreadcrumbPage.displayName = "BreadcrumbPage";
|
|
707
|
+
var BreadcrumbSeparator = ({
|
|
708
|
+
children,
|
|
709
|
+
className,
|
|
710
|
+
...props
|
|
711
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
712
|
+
"li",
|
|
713
|
+
{
|
|
714
|
+
role: "presentation",
|
|
715
|
+
"aria-hidden": "true",
|
|
716
|
+
className: cn("flex h-5 w-5 items-center justify-center", className),
|
|
717
|
+
...props,
|
|
718
|
+
children: children ?? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Icon, { icon: import_lucide_react2.ChevronRight, size: 14 })
|
|
719
|
+
}
|
|
720
|
+
);
|
|
721
|
+
BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
|
|
722
|
+
var BreadcrumbEllipsis = ({
|
|
723
|
+
className,
|
|
724
|
+
...props
|
|
725
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
726
|
+
"span",
|
|
727
|
+
{
|
|
728
|
+
role: "presentation",
|
|
729
|
+
"aria-hidden": "true",
|
|
730
|
+
className: cn("flex h-5 w-5 items-center justify-center", className),
|
|
731
|
+
...props,
|
|
732
|
+
children: [
|
|
733
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Icon, { icon: import_lucide_react9.MoreHorizontal, size: 16 }),
|
|
734
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "sr-only", children: "More" })
|
|
735
|
+
]
|
|
736
|
+
}
|
|
737
|
+
);
|
|
738
|
+
BreadcrumbEllipsis.displayName = "BreadcrumbElipssis";
|
|
739
|
+
|
|
740
|
+
// src/components/Button/Button.tsx
|
|
741
|
+
var React7 = __toESM(require("react"), 1);
|
|
742
|
+
var import_class_variance_authority3 = require("class-variance-authority");
|
|
743
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
744
|
+
var buttonVariants = (0, import_class_variance_authority3.cva)(
|
|
745
|
+
"inline-flex items-center justify-center gap-1.5 whitespace-nowrap rounded-lg text-sm font-medium leading-5 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
|
|
746
|
+
{
|
|
747
|
+
variants: {
|
|
748
|
+
variant: {
|
|
749
|
+
default: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
750
|
+
destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
751
|
+
"destructive-subtle": "bg-destructive-background text-destructive hover:bg-destructive-background/80",
|
|
752
|
+
outline: "border-2 border-border bg-background text-accent-foreground shadow-[0px_1px_2px_0px_rgba(0,0,0,0.05)] hover:bg-muted",
|
|
753
|
+
"secondary-outline": "border border-border bg-background text-foreground hover:bg-muted",
|
|
754
|
+
secondary: "bg-secondary text-secondary-foreground hover:brightness-95",
|
|
755
|
+
ghost: "text-foreground hover:bg-muted",
|
|
756
|
+
link: "text-primary underline-offset-4 hover:underline",
|
|
757
|
+
success: "bg-success text-success-foreground hover:bg-success/90",
|
|
758
|
+
"side-panel": "justify-start gap-2 rounded-md bg-transparent text-foreground hover:bg-muted data-[state=selected]:bg-muted"
|
|
759
|
+
},
|
|
760
|
+
size: {
|
|
761
|
+
default: "h-9 px-4 py-2",
|
|
762
|
+
sm: "h-8 px-4 py-2",
|
|
763
|
+
lg: "h-10 px-4 py-2",
|
|
764
|
+
icon: "h-10 w-10"
|
|
765
|
+
}
|
|
766
|
+
},
|
|
767
|
+
defaultVariants: {
|
|
768
|
+
variant: "default",
|
|
769
|
+
size: "default"
|
|
770
|
+
}
|
|
771
|
+
}
|
|
772
|
+
);
|
|
773
|
+
var Button = React7.forwardRef(
|
|
774
|
+
({ className, variant, size, ...props }, ref) => {
|
|
775
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
776
|
+
"button",
|
|
777
|
+
{
|
|
778
|
+
className: cn(buttonVariants({ variant, size, className })),
|
|
779
|
+
ref,
|
|
780
|
+
...props
|
|
781
|
+
}
|
|
782
|
+
);
|
|
783
|
+
}
|
|
784
|
+
);
|
|
785
|
+
Button.displayName = "Button";
|
|
786
|
+
|
|
787
|
+
// src/components/ButtonGroup/ButtonGroup.tsx
|
|
788
|
+
var React8 = __toESM(require("react"), 1);
|
|
789
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
790
|
+
var ButtonGroup = React8.forwardRef(
|
|
791
|
+
({ className, orientation = "horizontal", children, ...props }, ref) => {
|
|
792
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
793
|
+
"div",
|
|
794
|
+
{
|
|
795
|
+
ref,
|
|
796
|
+
className: cn(
|
|
797
|
+
"flex items-center",
|
|
798
|
+
orientation === "horizontal" ? "flex-row gap-3" : "flex-col gap-2",
|
|
799
|
+
className
|
|
800
|
+
),
|
|
801
|
+
role: "group",
|
|
802
|
+
...props,
|
|
803
|
+
children
|
|
804
|
+
}
|
|
805
|
+
);
|
|
806
|
+
}
|
|
807
|
+
);
|
|
808
|
+
ButtonGroup.displayName = "ButtonGroup";
|
|
809
|
+
|
|
810
|
+
// src/components/Card/Card.tsx
|
|
811
|
+
var React9 = __toESM(require("react"), 1);
|
|
812
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
813
|
+
var Card = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
814
|
+
"div",
|
|
815
|
+
{
|
|
816
|
+
ref,
|
|
817
|
+
className: cn(
|
|
818
|
+
"rounded-lg border border-border bg-card text-card-foreground shadow-[0px_1px_2px_0px_rgba(0,0,0,0.05)]",
|
|
819
|
+
className
|
|
820
|
+
),
|
|
821
|
+
...props
|
|
822
|
+
}
|
|
823
|
+
));
|
|
824
|
+
Card.displayName = "Card";
|
|
825
|
+
var CardHeader = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
826
|
+
"div",
|
|
827
|
+
{
|
|
828
|
+
ref,
|
|
829
|
+
className: cn("flex flex-col gap-1 p-6", className),
|
|
830
|
+
...props
|
|
831
|
+
}
|
|
832
|
+
));
|
|
833
|
+
CardHeader.displayName = "CardHeader";
|
|
834
|
+
var CardTitle = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
835
|
+
"h3",
|
|
836
|
+
{
|
|
837
|
+
ref,
|
|
838
|
+
className: cn(
|
|
839
|
+
"text-xl font-semibold leading-7 tracking-normal text-card-foreground",
|
|
840
|
+
className
|
|
841
|
+
),
|
|
842
|
+
...props
|
|
843
|
+
}
|
|
844
|
+
));
|
|
845
|
+
CardTitle.displayName = "CardTitle";
|
|
846
|
+
var CardDescription = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
847
|
+
"p",
|
|
848
|
+
{
|
|
849
|
+
ref,
|
|
850
|
+
className: cn("text-sm font-normal leading-5 text-muted-foreground", className),
|
|
851
|
+
...props
|
|
852
|
+
}
|
|
853
|
+
));
|
|
854
|
+
CardDescription.displayName = "CardDescription";
|
|
855
|
+
var CardContent = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { ref, className: cn("px-6 pb-6 pt-0", className), ...props }));
|
|
856
|
+
CardContent.displayName = "CardContent";
|
|
857
|
+
var CardFooter = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
858
|
+
"div",
|
|
859
|
+
{
|
|
860
|
+
ref,
|
|
861
|
+
className: cn("flex items-center justify-end gap-2 px-6 pb-6 pt-0", className),
|
|
862
|
+
...props
|
|
863
|
+
}
|
|
864
|
+
));
|
|
865
|
+
CardFooter.displayName = "CardFooter";
|
|
866
|
+
|
|
867
|
+
// src/components/Carousel/Carousel.tsx
|
|
868
|
+
var React10 = __toESM(require("react"), 1);
|
|
869
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
870
|
+
var CarouselContext = React10.createContext(
|
|
871
|
+
void 0
|
|
872
|
+
);
|
|
873
|
+
function useCarousel() {
|
|
874
|
+
const context = React10.useContext(CarouselContext);
|
|
875
|
+
if (!context) {
|
|
876
|
+
throw new Error("useCarousel must be used within a Carousel");
|
|
877
|
+
}
|
|
878
|
+
return context;
|
|
879
|
+
}
|
|
880
|
+
var Carousel = React10.forwardRef(
|
|
881
|
+
({ className, children, ...props }, ref) => {
|
|
882
|
+
const [currentIndex, setCurrentIndex] = React10.useState(0);
|
|
883
|
+
const [totalItems, setTotalItems] = React10.useState(0);
|
|
884
|
+
const goToSlide = React10.useCallback((index) => {
|
|
885
|
+
setCurrentIndex(index);
|
|
886
|
+
}, []);
|
|
887
|
+
const nextSlide = React10.useCallback(() => {
|
|
888
|
+
setCurrentIndex((prev) => (prev + 1) % totalItems);
|
|
889
|
+
}, [totalItems]);
|
|
890
|
+
const previousSlide = React10.useCallback(() => {
|
|
891
|
+
setCurrentIndex((prev) => (prev - 1 + totalItems) % totalItems);
|
|
892
|
+
}, [totalItems]);
|
|
893
|
+
const value = React10.useMemo(
|
|
894
|
+
() => ({
|
|
895
|
+
currentIndex,
|
|
896
|
+
totalItems,
|
|
897
|
+
goToSlide,
|
|
898
|
+
nextSlide,
|
|
899
|
+
previousSlide
|
|
900
|
+
}),
|
|
901
|
+
[currentIndex, totalItems, goToSlide, nextSlide, previousSlide]
|
|
902
|
+
);
|
|
903
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(CarouselContext.Provider, { value, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
904
|
+
"div",
|
|
905
|
+
{
|
|
906
|
+
ref,
|
|
907
|
+
className: cn("flex items-center justify-center gap-6", className),
|
|
908
|
+
...props,
|
|
909
|
+
children: React10.Children.map(children, (child) => {
|
|
910
|
+
if (React10.isValidElement(child)) {
|
|
911
|
+
return React10.cloneElement(child, { setTotalItems });
|
|
912
|
+
}
|
|
913
|
+
return child;
|
|
914
|
+
})
|
|
915
|
+
}
|
|
916
|
+
) });
|
|
917
|
+
}
|
|
918
|
+
);
|
|
919
|
+
Carousel.displayName = "Carousel";
|
|
920
|
+
var CarouselContent = React10.forwardRef(
|
|
921
|
+
({ className, children, setTotalItems, ...props }, ref) => {
|
|
922
|
+
const { currentIndex } = useCarousel();
|
|
923
|
+
const childrenArray = React10.Children.toArray(children);
|
|
924
|
+
React10.useEffect(() => {
|
|
925
|
+
setTotalItems?.(childrenArray.length);
|
|
926
|
+
}, [childrenArray.length, setTotalItems]);
|
|
927
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
928
|
+
"div",
|
|
929
|
+
{
|
|
930
|
+
ref,
|
|
931
|
+
className: cn(
|
|
932
|
+
"relative w-96 h-96 overflow-hidden rounded-md border-2 border-border bg-card shadow-sm",
|
|
933
|
+
className
|
|
934
|
+
),
|
|
935
|
+
...props,
|
|
936
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
937
|
+
"div",
|
|
938
|
+
{
|
|
939
|
+
className: "flex h-full transition-transform duration-300 ease-in-out",
|
|
940
|
+
style: {
|
|
941
|
+
transform: `translateX(-${currentIndex * 100}%)`
|
|
942
|
+
},
|
|
943
|
+
children: childrenArray
|
|
944
|
+
}
|
|
945
|
+
)
|
|
946
|
+
}
|
|
947
|
+
);
|
|
948
|
+
}
|
|
949
|
+
);
|
|
950
|
+
CarouselContent.displayName = "CarouselContent";
|
|
951
|
+
var CarouselItem = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
952
|
+
"div",
|
|
953
|
+
{
|
|
954
|
+
ref,
|
|
955
|
+
className: cn(
|
|
956
|
+
"min-w-full flex items-center justify-center",
|
|
957
|
+
className
|
|
958
|
+
),
|
|
959
|
+
...props
|
|
960
|
+
}
|
|
961
|
+
));
|
|
962
|
+
CarouselItem.displayName = "CarouselItem";
|
|
963
|
+
var CarouselPrevious = React10.forwardRef(({ className, ...props }, ref) => {
|
|
964
|
+
const { previousSlide, currentIndex } = useCarousel();
|
|
965
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
966
|
+
"button",
|
|
967
|
+
{
|
|
968
|
+
ref,
|
|
969
|
+
type: "button",
|
|
970
|
+
className: cn(
|
|
971
|
+
"flex h-10 w-10 items-center justify-center rounded-full border-2 border-border bg-background shadow-sm transition-opacity hover:opacity-100",
|
|
972
|
+
currentIndex === 0 ? "opacity-50" : "opacity-100",
|
|
973
|
+
className
|
|
974
|
+
),
|
|
975
|
+
onClick: previousSlide,
|
|
976
|
+
"aria-label": "Previous slide",
|
|
977
|
+
...props,
|
|
978
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Icon, { icon: import_lucide_react2.ArrowLeft, size: 20 })
|
|
979
|
+
}
|
|
980
|
+
);
|
|
981
|
+
});
|
|
982
|
+
CarouselPrevious.displayName = "CarouselPrevious";
|
|
983
|
+
var CarouselNext = React10.forwardRef(({ className, ...props }, ref) => {
|
|
984
|
+
const { nextSlide, currentIndex, totalItems } = useCarousel();
|
|
985
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
986
|
+
"button",
|
|
987
|
+
{
|
|
988
|
+
ref,
|
|
989
|
+
type: "button",
|
|
990
|
+
className: cn(
|
|
991
|
+
"flex h-10 w-10 items-center justify-center rounded-full border-2 border-border bg-background shadow-sm transition-opacity hover:opacity-100",
|
|
992
|
+
currentIndex === totalItems - 1 ? "opacity-50" : "opacity-100",
|
|
993
|
+
className
|
|
994
|
+
),
|
|
995
|
+
onClick: nextSlide,
|
|
996
|
+
"aria-label": "Next slide",
|
|
997
|
+
...props,
|
|
998
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Icon, { icon: import_lucide_react2.ArrowRight, size: 20 })
|
|
999
|
+
}
|
|
1000
|
+
);
|
|
1001
|
+
});
|
|
1002
|
+
CarouselNext.displayName = "CarouselNext";
|
|
1003
|
+
|
|
1004
|
+
// src/components/Checkbox/Checkbox.tsx
|
|
1005
|
+
var React11 = __toESM(require("react"), 1);
|
|
1006
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
1007
|
+
var Checkbox = React11.forwardRef(
|
|
1008
|
+
({ className, onCheckedChange, onChange, ...props }, ref) => {
|
|
1009
|
+
const handleChange = (e) => {
|
|
1010
|
+
onChange?.(e);
|
|
1011
|
+
onCheckedChange?.(e.target.checked);
|
|
1012
|
+
};
|
|
1013
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "relative inline-flex items-center", children: [
|
|
1014
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1015
|
+
"input",
|
|
1016
|
+
{
|
|
1017
|
+
type: "checkbox",
|
|
1018
|
+
className: "peer sr-only",
|
|
1019
|
+
ref,
|
|
1020
|
+
onChange: handleChange,
|
|
1021
|
+
...props
|
|
1022
|
+
}
|
|
1023
|
+
),
|
|
1024
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1025
|
+
"div",
|
|
1026
|
+
{
|
|
1027
|
+
className: cn(
|
|
1028
|
+
"flex h-4 w-4 shrink-0 items-center justify-center rounded-sm border border-primary transition-colors",
|
|
1029
|
+
"peer-checked:bg-primary peer-checked:text-primary-foreground",
|
|
1030
|
+
"peer-focus-visible:outline-none peer-focus-visible:ring-2 peer-focus-visible:ring-ring peer-focus-visible:ring-offset-2",
|
|
1031
|
+
"peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
|
|
1032
|
+
className
|
|
1033
|
+
),
|
|
1034
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1035
|
+
Icon,
|
|
1036
|
+
{
|
|
1037
|
+
icon: import_lucide_react3.Check,
|
|
1038
|
+
size: 12,
|
|
1039
|
+
className: "hidden peer-checked:block"
|
|
1040
|
+
}
|
|
1041
|
+
)
|
|
1042
|
+
}
|
|
1043
|
+
)
|
|
1044
|
+
] });
|
|
1045
|
+
}
|
|
1046
|
+
);
|
|
1047
|
+
Checkbox.displayName = "Checkbox";
|
|
1048
|
+
|
|
1049
|
+
// src/components/Dialog/Dialog.tsx
|
|
1050
|
+
var React12 = __toESM(require("react"), 1);
|
|
1051
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
1052
|
+
var Dialog = ({ open, onOpenChange, children }) => {
|
|
1053
|
+
React12.useEffect(() => {
|
|
1054
|
+
const handleEscape = (e) => {
|
|
1055
|
+
if (e.key === "Escape" && open) {
|
|
1056
|
+
onOpenChange?.(false);
|
|
1057
|
+
}
|
|
1058
|
+
};
|
|
1059
|
+
if (open) {
|
|
1060
|
+
document.addEventListener("keydown", handleEscape);
|
|
1061
|
+
document.body.style.overflow = "hidden";
|
|
1062
|
+
}
|
|
1063
|
+
return () => {
|
|
1064
|
+
document.removeEventListener("keydown", handleEscape);
|
|
1065
|
+
document.body.style.overflow = "";
|
|
1066
|
+
};
|
|
1067
|
+
}, [open, onOpenChange]);
|
|
1068
|
+
if (!open) return null;
|
|
1069
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_jsx_runtime13.Fragment, { children: React12.Children.map(children, (child) => {
|
|
1070
|
+
if (React12.isValidElement(child)) {
|
|
1071
|
+
return React12.cloneElement(child, { onOpenChange });
|
|
1072
|
+
}
|
|
1073
|
+
return child;
|
|
1074
|
+
}) });
|
|
1075
|
+
};
|
|
1076
|
+
Dialog.displayName = "Dialog";
|
|
1077
|
+
var DialogContent = React12.forwardRef(
|
|
1078
|
+
({ className, children, onOpenChange, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
1079
|
+
"div",
|
|
1080
|
+
{
|
|
1081
|
+
className: "fixed inset-0 z-50 flex items-center justify-center",
|
|
1082
|
+
onClick: () => onOpenChange?.(false),
|
|
1083
|
+
children: [
|
|
1084
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "fixed inset-0 bg-black/80", "aria-hidden": "true" }),
|
|
1085
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
1086
|
+
"div",
|
|
1087
|
+
{
|
|
1088
|
+
ref,
|
|
1089
|
+
role: "dialog",
|
|
1090
|
+
"aria-modal": "true",
|
|
1091
|
+
className: cn(
|
|
1092
|
+
"relative z-50 flex w-[512px] flex-col gap-4 overflow-hidden rounded-lg border border-border bg-background p-6 shadow-[0px_10px_15px_-3px_rgba(0,0,0,0.1),0px_4px_6px_-2px_rgba(0,0,0,0.05)]",
|
|
1093
|
+
className
|
|
1094
|
+
),
|
|
1095
|
+
onClick: (e) => e.stopPropagation(),
|
|
1096
|
+
...props,
|
|
1097
|
+
children: [
|
|
1098
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
1099
|
+
"button",
|
|
1100
|
+
{
|
|
1101
|
+
onClick: () => onOpenChange?.(false),
|
|
1102
|
+
className: "absolute right-[15px] top-[15px] rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",
|
|
1103
|
+
"aria-label": "Close",
|
|
1104
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon, { icon: import_lucide_react3.X, size: 16 })
|
|
1105
|
+
}
|
|
1106
|
+
),
|
|
1107
|
+
children
|
|
1108
|
+
]
|
|
1109
|
+
}
|
|
1110
|
+
)
|
|
1111
|
+
]
|
|
1112
|
+
}
|
|
1113
|
+
)
|
|
1114
|
+
);
|
|
1115
|
+
DialogContent.displayName = "DialogContent";
|
|
1116
|
+
var DialogHeader = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
1117
|
+
"div",
|
|
1118
|
+
{
|
|
1119
|
+
ref,
|
|
1120
|
+
className: cn("flex flex-col gap-1.5", className),
|
|
1121
|
+
...props
|
|
1122
|
+
}
|
|
1123
|
+
));
|
|
1124
|
+
DialogHeader.displayName = "DialogHeader";
|
|
1125
|
+
var DialogTitle = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
1126
|
+
"h2",
|
|
1127
|
+
{
|
|
1128
|
+
ref,
|
|
1129
|
+
className: cn("text-lg font-semibold leading-7 text-foreground", className),
|
|
1130
|
+
...props
|
|
1131
|
+
}
|
|
1132
|
+
));
|
|
1133
|
+
DialogTitle.displayName = "DialogTitle";
|
|
1134
|
+
var DialogDescription = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
1135
|
+
"p",
|
|
1136
|
+
{
|
|
1137
|
+
ref,
|
|
1138
|
+
className: cn("text-sm leading-5 text-muted-foreground", className),
|
|
1139
|
+
...props
|
|
1140
|
+
}
|
|
1141
|
+
));
|
|
1142
|
+
DialogDescription.displayName = "DialogDescription";
|
|
1143
|
+
var DialogFooter = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
1144
|
+
"div",
|
|
1145
|
+
{
|
|
1146
|
+
ref,
|
|
1147
|
+
className: cn("flex items-center justify-end gap-2", className),
|
|
1148
|
+
...props
|
|
1149
|
+
}
|
|
1150
|
+
));
|
|
1151
|
+
DialogFooter.displayName = "DialogFooter";
|
|
1152
|
+
|
|
1153
|
+
// src/components/Drawer/Drawer.tsx
|
|
1154
|
+
var React13 = __toESM(require("react"), 1);
|
|
1155
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
1156
|
+
var Drawer = ({ open, onOpenChange, children }) => {
|
|
1157
|
+
React13.useEffect(() => {
|
|
1158
|
+
const handleEscape = (e) => {
|
|
1159
|
+
if (e.key === "Escape" && open) {
|
|
1160
|
+
onOpenChange?.(false);
|
|
1161
|
+
}
|
|
1162
|
+
};
|
|
1163
|
+
if (open) {
|
|
1164
|
+
document.addEventListener("keydown", handleEscape);
|
|
1165
|
+
document.body.style.overflow = "hidden";
|
|
1166
|
+
}
|
|
1167
|
+
return () => {
|
|
1168
|
+
document.removeEventListener("keydown", handleEscape);
|
|
1169
|
+
document.body.style.overflow = "";
|
|
1170
|
+
};
|
|
1171
|
+
}, [open, onOpenChange]);
|
|
1172
|
+
if (!open) return null;
|
|
1173
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_jsx_runtime14.Fragment, { children: React13.Children.map(children, (child) => {
|
|
1174
|
+
if (React13.isValidElement(child)) {
|
|
1175
|
+
return React13.cloneElement(child, { onOpenChange });
|
|
1176
|
+
}
|
|
1177
|
+
return child;
|
|
1178
|
+
}) });
|
|
1179
|
+
};
|
|
1180
|
+
Drawer.displayName = "Drawer";
|
|
1181
|
+
var DrawerContent = React13.forwardRef(
|
|
1182
|
+
({ className, children, onOpenChange, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
1183
|
+
"div",
|
|
1184
|
+
{
|
|
1185
|
+
className: "fixed inset-0 z-50 flex items-end justify-center",
|
|
1186
|
+
onClick: () => onOpenChange?.(false),
|
|
1187
|
+
children: [
|
|
1188
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "fixed inset-0 bg-black/80", "aria-hidden": "true" }),
|
|
1189
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
1190
|
+
"div",
|
|
1191
|
+
{
|
|
1192
|
+
ref,
|
|
1193
|
+
role: "dialog",
|
|
1194
|
+
"aria-modal": "true",
|
|
1195
|
+
className: cn(
|
|
1196
|
+
"relative z-50 flex w-[320px] flex-col gap-4 overflow-hidden rounded-t-lg border-t border-x border-border bg-background p-6 shadow-[0px_10px_15px_-3px_rgba(0,0,0,0.1),0px_4px_6px_-2px_rgba(0,0,0,0.05)]",
|
|
1197
|
+
className
|
|
1198
|
+
),
|
|
1199
|
+
onClick: (e) => e.stopPropagation(),
|
|
1200
|
+
...props,
|
|
1201
|
+
children: [
|
|
1202
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "absolute left-1/2 top-4 h-2 w-[100px] -translate-x-1/2 rounded-full bg-muted" }),
|
|
1203
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1204
|
+
"button",
|
|
1205
|
+
{
|
|
1206
|
+
onClick: () => onOpenChange?.(false),
|
|
1207
|
+
className: "absolute right-[15px] top-[15px] rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",
|
|
1208
|
+
"aria-label": "Close",
|
|
1209
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Icon, { icon: import_lucide_react3.X, size: 16 })
|
|
1210
|
+
}
|
|
1211
|
+
),
|
|
1212
|
+
children
|
|
1213
|
+
]
|
|
1214
|
+
}
|
|
1215
|
+
)
|
|
1216
|
+
]
|
|
1217
|
+
}
|
|
1218
|
+
)
|
|
1219
|
+
);
|
|
1220
|
+
DrawerContent.displayName = "DrawerContent";
|
|
1221
|
+
var DrawerHeader = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1222
|
+
"div",
|
|
1223
|
+
{
|
|
1224
|
+
ref,
|
|
1225
|
+
className: cn("flex flex-col gap-1 pt-4 text-center", className),
|
|
1226
|
+
...props
|
|
1227
|
+
}
|
|
1228
|
+
));
|
|
1229
|
+
DrawerHeader.displayName = "DrawerHeader";
|
|
1230
|
+
var DrawerTitle = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1231
|
+
"h2",
|
|
1232
|
+
{
|
|
1233
|
+
ref,
|
|
1234
|
+
className: cn("text-lg font-semibold leading-7 text-foreground", className),
|
|
1235
|
+
...props
|
|
1236
|
+
}
|
|
1237
|
+
));
|
|
1238
|
+
DrawerTitle.displayName = "DrawerTitle";
|
|
1239
|
+
var DrawerDescription = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1240
|
+
"p",
|
|
1241
|
+
{
|
|
1242
|
+
ref,
|
|
1243
|
+
className: cn("text-sm leading-5 text-muted-foreground", className),
|
|
1244
|
+
...props
|
|
1245
|
+
}
|
|
1246
|
+
));
|
|
1247
|
+
DrawerDescription.displayName = "DrawerDescription";
|
|
1248
|
+
var DrawerFooter = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1249
|
+
"div",
|
|
1250
|
+
{
|
|
1251
|
+
ref,
|
|
1252
|
+
className: cn("flex flex-col gap-2", className),
|
|
1253
|
+
...props
|
|
1254
|
+
}
|
|
1255
|
+
));
|
|
1256
|
+
DrawerFooter.displayName = "DrawerFooter";
|
|
1257
|
+
|
|
1258
|
+
// src/components/Header/Header.tsx
|
|
1259
|
+
var React14 = __toESM(require("react"), 1);
|
|
1260
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
1261
|
+
var Header2 = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1262
|
+
"header",
|
|
1263
|
+
{
|
|
1264
|
+
ref,
|
|
1265
|
+
className: cn(
|
|
1266
|
+
"flex flex-col gap-2 border-b-2 border-accent bg-background px-6 pb-4 pt-6",
|
|
1267
|
+
className
|
|
1268
|
+
),
|
|
1269
|
+
...props
|
|
1270
|
+
}
|
|
1271
|
+
));
|
|
1272
|
+
Header2.displayName = "Header";
|
|
1273
|
+
var HeaderBreadcrumbs = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1274
|
+
"div",
|
|
1275
|
+
{
|
|
1276
|
+
ref,
|
|
1277
|
+
className: cn("flex items-center gap-2.5 w-full", className),
|
|
1278
|
+
...props
|
|
1279
|
+
}
|
|
1280
|
+
));
|
|
1281
|
+
HeaderBreadcrumbs.displayName = "HeaderBreadcrumbs";
|
|
1282
|
+
var HeaderContent = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1283
|
+
"div",
|
|
1284
|
+
{
|
|
1285
|
+
ref,
|
|
1286
|
+
className: cn("flex items-center justify-between w-full", className),
|
|
1287
|
+
...props
|
|
1288
|
+
}
|
|
1289
|
+
));
|
|
1290
|
+
HeaderContent.displayName = "HeaderContent";
|
|
1291
|
+
var HeaderTitle = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1292
|
+
"h1",
|
|
1293
|
+
{
|
|
1294
|
+
ref,
|
|
1295
|
+
className: cn(
|
|
1296
|
+
"text-2xl font-medium leading-8 text-foreground",
|
|
1297
|
+
className
|
|
1298
|
+
),
|
|
1299
|
+
...props
|
|
1300
|
+
}
|
|
1301
|
+
));
|
|
1302
|
+
HeaderTitle.displayName = "HeaderTitle";
|
|
1303
|
+
var HeaderActions = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1304
|
+
"div",
|
|
1305
|
+
{
|
|
1306
|
+
ref,
|
|
1307
|
+
className: cn("flex items-center gap-3", className),
|
|
1308
|
+
...props
|
|
1309
|
+
}
|
|
1310
|
+
));
|
|
1311
|
+
HeaderActions.displayName = "HeaderActions";
|
|
1312
|
+
var HeaderDescription = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1313
|
+
"p",
|
|
1314
|
+
{
|
|
1315
|
+
ref,
|
|
1316
|
+
className: cn(
|
|
1317
|
+
"text-base leading-6 text-muted-foreground",
|
|
1318
|
+
className
|
|
1319
|
+
),
|
|
1320
|
+
...props
|
|
1321
|
+
}
|
|
1322
|
+
));
|
|
1323
|
+
HeaderDescription.displayName = "HeaderDescription";
|
|
1324
|
+
|
|
1325
|
+
// src/components/Radio/Radio.tsx
|
|
1326
|
+
var React15 = __toESM(require("react"), 1);
|
|
1327
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1328
|
+
var Radio = React15.forwardRef(
|
|
1329
|
+
({ className, onCheckedChange, onChange, ...props }, ref) => {
|
|
1330
|
+
const handleChange = (e) => {
|
|
1331
|
+
onChange?.(e);
|
|
1332
|
+
onCheckedChange?.(e.target.checked);
|
|
1333
|
+
};
|
|
1334
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "relative inline-flex items-center", children: [
|
|
1335
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1336
|
+
"input",
|
|
1337
|
+
{
|
|
1338
|
+
type: "radio",
|
|
1339
|
+
className: "peer sr-only",
|
|
1340
|
+
ref,
|
|
1341
|
+
onChange: handleChange,
|
|
1342
|
+
...props
|
|
1343
|
+
}
|
|
1344
|
+
),
|
|
1345
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1346
|
+
"div",
|
|
1347
|
+
{
|
|
1348
|
+
className: cn(
|
|
1349
|
+
"relative flex h-4 w-4 shrink-0 items-center justify-center rounded-full border border-primary bg-background transition-colors",
|
|
1350
|
+
"peer-checked:border-primary",
|
|
1351
|
+
"peer-focus-visible:outline-none peer-focus-visible:ring-2 peer-focus-visible:ring-ring peer-focus-visible:ring-offset-2",
|
|
1352
|
+
"peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
|
|
1353
|
+
"after:absolute after:inset-0 after:m-auto after:h-2 after:w-2 after:rounded-full after:bg-primary after:scale-0 after:transition-transform",
|
|
1354
|
+
"peer-checked:after:scale-100",
|
|
1355
|
+
className
|
|
1356
|
+
)
|
|
1357
|
+
}
|
|
1358
|
+
)
|
|
1359
|
+
] });
|
|
1360
|
+
}
|
|
1361
|
+
);
|
|
1362
|
+
Radio.displayName = "Radio";
|
|
1363
|
+
|
|
1364
|
+
// src/components/Select/Select.tsx
|
|
1365
|
+
var React16 = __toESM(require("react"), 1);
|
|
1366
|
+
var SelectPrimitive = __toESM(require("@radix-ui/react-select"), 1);
|
|
1367
|
+
var import_lucide_react18 = require("lucide-react");
|
|
1368
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
1369
|
+
var Select = SelectPrimitive.Root;
|
|
1370
|
+
var SelectGroup = SelectPrimitive.Group;
|
|
1371
|
+
var SelectValue = SelectPrimitive.Value;
|
|
1372
|
+
var SelectTrigger = React16.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
1373
|
+
SelectPrimitive.Trigger,
|
|
1374
|
+
{
|
|
1375
|
+
ref,
|
|
1376
|
+
className: cn(
|
|
1377
|
+
"relative z-10 flex h-10 w-full items-center justify-between gap-2 rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground transition-colors",
|
|
1378
|
+
"hover:border-border-hover",
|
|
1379
|
+
"focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
|
|
1380
|
+
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
1381
|
+
"[&>span]:line-clamp-1",
|
|
1382
|
+
className
|
|
1383
|
+
),
|
|
1384
|
+
...props,
|
|
1385
|
+
children: [
|
|
1386
|
+
children,
|
|
1387
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react18.ChevronDown, { className: "h-3 w-3 opacity-50" }) })
|
|
1388
|
+
]
|
|
1389
|
+
}
|
|
1390
|
+
));
|
|
1391
|
+
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
|
|
1392
|
+
var SelectScrollUpButton = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1393
|
+
SelectPrimitive.ScrollUpButton,
|
|
1394
|
+
{
|
|
1395
|
+
ref,
|
|
1396
|
+
className: cn(
|
|
1397
|
+
"flex cursor-default items-center justify-center py-1",
|
|
1398
|
+
className
|
|
1399
|
+
),
|
|
1400
|
+
...props,
|
|
1401
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react18.ChevronDown, { className: "h-4 w-4 rotate-180" })
|
|
1402
|
+
}
|
|
1403
|
+
));
|
|
1404
|
+
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
|
|
1405
|
+
var SelectScrollDownButton = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1406
|
+
SelectPrimitive.ScrollDownButton,
|
|
1407
|
+
{
|
|
1408
|
+
ref,
|
|
1409
|
+
className: cn(
|
|
1410
|
+
"flex cursor-default items-center justify-center py-1",
|
|
1411
|
+
className
|
|
1412
|
+
),
|
|
1413
|
+
...props,
|
|
1414
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react18.ChevronDown, { className: "h-4 w-4" })
|
|
1415
|
+
}
|
|
1416
|
+
));
|
|
1417
|
+
SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
|
|
1418
|
+
var SelectContent = React16.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
1419
|
+
SelectPrimitive.Content,
|
|
1420
|
+
{
|
|
1421
|
+
ref,
|
|
1422
|
+
className: cn(
|
|
1423
|
+
"relative z-[100] max-h-96 min-w-[8rem] overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md",
|
|
1424
|
+
"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
1425
|
+
position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
|
|
1426
|
+
className
|
|
1427
|
+
),
|
|
1428
|
+
position,
|
|
1429
|
+
sideOffset: 4,
|
|
1430
|
+
collisionPadding: 8,
|
|
1431
|
+
...props,
|
|
1432
|
+
children: [
|
|
1433
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectScrollUpButton, {}),
|
|
1434
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1435
|
+
SelectPrimitive.Viewport,
|
|
1436
|
+
{
|
|
1437
|
+
className: cn(
|
|
1438
|
+
"p-1",
|
|
1439
|
+
position === "popper" && "w-full min-w-[var(--radix-select-trigger-width)]"
|
|
1440
|
+
),
|
|
1441
|
+
children
|
|
1442
|
+
}
|
|
1443
|
+
),
|
|
1444
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectScrollDownButton, {})
|
|
1445
|
+
]
|
|
1446
|
+
}
|
|
1447
|
+
) }));
|
|
1448
|
+
SelectContent.displayName = SelectPrimitive.Content.displayName;
|
|
1449
|
+
var SelectLabel = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1450
|
+
SelectPrimitive.Label,
|
|
1451
|
+
{
|
|
1452
|
+
ref,
|
|
1453
|
+
className: cn(
|
|
1454
|
+
"px-8 py-1.5 text-sm font-semibold text-popover-foreground",
|
|
1455
|
+
className
|
|
1456
|
+
),
|
|
1457
|
+
...props
|
|
1458
|
+
}
|
|
1459
|
+
));
|
|
1460
|
+
SelectLabel.displayName = SelectPrimitive.Label.displayName;
|
|
1461
|
+
var SelectItem = React16.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
1462
|
+
SelectPrimitive.Item,
|
|
1463
|
+
{
|
|
1464
|
+
ref,
|
|
1465
|
+
className: cn(
|
|
1466
|
+
"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm text-popover-foreground outline-none",
|
|
1467
|
+
"focus:bg-accent focus:text-accent-foreground",
|
|
1468
|
+
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
1469
|
+
className
|
|
1470
|
+
),
|
|
1471
|
+
...props,
|
|
1472
|
+
children: [
|
|
1473
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react18.Check, { className: "h-4 w-4" }) }) }),
|
|
1474
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectPrimitive.ItemText, { children })
|
|
1475
|
+
]
|
|
1476
|
+
}
|
|
1477
|
+
));
|
|
1478
|
+
SelectItem.displayName = SelectPrimitive.Item.displayName;
|
|
1479
|
+
var SelectSeparator = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1480
|
+
SelectPrimitive.Separator,
|
|
1481
|
+
{
|
|
1482
|
+
ref,
|
|
1483
|
+
className: cn("mx-1 my-1 h-px bg-border", className),
|
|
1484
|
+
...props
|
|
1485
|
+
}
|
|
1486
|
+
));
|
|
1487
|
+
SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
|
|
1488
|
+
|
|
1489
|
+
// src/components/Separator/Separator.tsx
|
|
1490
|
+
var React17 = __toESM(require("react"), 1);
|
|
1491
|
+
var SeparatorPrimitive = __toESM(require("@radix-ui/react-separator"), 1);
|
|
1492
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
1493
|
+
var Separator2 = React17.forwardRef(
|
|
1494
|
+
({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
1495
|
+
SeparatorPrimitive.Root,
|
|
1496
|
+
{
|
|
1497
|
+
ref,
|
|
1498
|
+
decorative,
|
|
1499
|
+
orientation,
|
|
1500
|
+
className: cn(
|
|
1501
|
+
"shrink-0 bg-border",
|
|
1502
|
+
orientation === "horizontal" ? "h-px w-full" : "h-full w-px",
|
|
1503
|
+
className
|
|
1504
|
+
),
|
|
1505
|
+
...props
|
|
1506
|
+
}
|
|
1507
|
+
)
|
|
1508
|
+
);
|
|
1509
|
+
Separator2.displayName = SeparatorPrimitive.Root.displayName;
|
|
1510
|
+
|
|
1511
|
+
// src/components/Sheet/Sheet.tsx
|
|
1512
|
+
var React18 = __toESM(require("react"), 1);
|
|
1513
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
1514
|
+
var Sheet = ({ open, onOpenChange, children }) => {
|
|
1515
|
+
React18.useEffect(() => {
|
|
1516
|
+
const handleEscape = (e) => {
|
|
1517
|
+
if (e.key === "Escape" && open) {
|
|
1518
|
+
onOpenChange?.(false);
|
|
1519
|
+
}
|
|
1520
|
+
};
|
|
1521
|
+
if (open) {
|
|
1522
|
+
document.addEventListener("keydown", handleEscape);
|
|
1523
|
+
document.body.style.overflow = "hidden";
|
|
1524
|
+
}
|
|
1525
|
+
return () => {
|
|
1526
|
+
document.removeEventListener("keydown", handleEscape);
|
|
1527
|
+
document.body.style.overflow = "";
|
|
1528
|
+
};
|
|
1529
|
+
}, [open, onOpenChange]);
|
|
1530
|
+
if (!open) return null;
|
|
1531
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_jsx_runtime19.Fragment, { children: React18.Children.map(children, (child) => {
|
|
1532
|
+
if (React18.isValidElement(child)) {
|
|
1533
|
+
return React18.cloneElement(child, { onOpenChange });
|
|
1534
|
+
}
|
|
1535
|
+
return child;
|
|
1536
|
+
}) });
|
|
1537
|
+
};
|
|
1538
|
+
Sheet.displayName = "Sheet";
|
|
1539
|
+
var sheetVariants = {
|
|
1540
|
+
top: "inset-x-0 top-0 border-b",
|
|
1541
|
+
bottom: "inset-x-0 bottom-0 border-t",
|
|
1542
|
+
left: "inset-y-0 left-0 h-full w-[448px] border-r",
|
|
1543
|
+
right: "inset-y-0 right-0 h-full w-[448px] border-l"
|
|
1544
|
+
};
|
|
1545
|
+
var SheetContent = React18.forwardRef(
|
|
1546
|
+
({ className, children, onOpenChange, side = "right", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
1547
|
+
"div",
|
|
1548
|
+
{
|
|
1549
|
+
className: "fixed inset-0 z-50",
|
|
1550
|
+
onClick: () => onOpenChange?.(false),
|
|
1551
|
+
children: [
|
|
1552
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "fixed inset-0 bg-black/80", "aria-hidden": "true" }),
|
|
1553
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
1554
|
+
"div",
|
|
1555
|
+
{
|
|
1556
|
+
ref,
|
|
1557
|
+
role: "dialog",
|
|
1558
|
+
"aria-modal": "true",
|
|
1559
|
+
className: cn(
|
|
1560
|
+
"fixed z-50 flex flex-col gap-4 bg-background p-6 shadow-lg transition-transform duration-300",
|
|
1561
|
+
sheetVariants[side],
|
|
1562
|
+
className
|
|
1563
|
+
),
|
|
1564
|
+
onClick: (e) => e.stopPropagation(),
|
|
1565
|
+
...props,
|
|
1566
|
+
children: [
|
|
1567
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1568
|
+
"button",
|
|
1569
|
+
{
|
|
1570
|
+
onClick: () => onOpenChange?.(false),
|
|
1571
|
+
className: "absolute right-4 top-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",
|
|
1572
|
+
"aria-label": "Close",
|
|
1573
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Icon, { icon: import_lucide_react3.X, size: 16 })
|
|
1574
|
+
}
|
|
1575
|
+
),
|
|
1576
|
+
children
|
|
1577
|
+
]
|
|
1578
|
+
}
|
|
1579
|
+
)
|
|
1580
|
+
]
|
|
1581
|
+
}
|
|
1582
|
+
)
|
|
1583
|
+
);
|
|
1584
|
+
SheetContent.displayName = "SheetContent";
|
|
1585
|
+
var SheetHeader = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1586
|
+
"div",
|
|
1587
|
+
{
|
|
1588
|
+
ref,
|
|
1589
|
+
className: cn("flex flex-col gap-2 text-center sm:text-left", className),
|
|
1590
|
+
...props
|
|
1591
|
+
}
|
|
1592
|
+
));
|
|
1593
|
+
SheetHeader.displayName = "SheetHeader";
|
|
1594
|
+
var SheetTitle = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1595
|
+
"h2",
|
|
1596
|
+
{
|
|
1597
|
+
ref,
|
|
1598
|
+
className: cn("text-lg font-semibold text-foreground", className),
|
|
1599
|
+
...props
|
|
1600
|
+
}
|
|
1601
|
+
));
|
|
1602
|
+
SheetTitle.displayName = "SheetTitle";
|
|
1603
|
+
var SheetDescription = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1604
|
+
"p",
|
|
1605
|
+
{
|
|
1606
|
+
ref,
|
|
1607
|
+
className: cn("text-sm text-muted-foreground", className),
|
|
1608
|
+
...props
|
|
1609
|
+
}
|
|
1610
|
+
));
|
|
1611
|
+
SheetDescription.displayName = "SheetDescription";
|
|
1612
|
+
var SheetFooter = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1613
|
+
"div",
|
|
1614
|
+
{
|
|
1615
|
+
ref,
|
|
1616
|
+
className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className),
|
|
1617
|
+
...props
|
|
1618
|
+
}
|
|
1619
|
+
));
|
|
1620
|
+
SheetFooter.displayName = "SheetFooter";
|
|
1621
|
+
var SheetClose = React18.forwardRef(({ className, onOpenChange, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1622
|
+
"button",
|
|
1623
|
+
{
|
|
1624
|
+
ref,
|
|
1625
|
+
onClick: () => onOpenChange?.(false),
|
|
1626
|
+
className: cn(
|
|
1627
|
+
"rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",
|
|
1628
|
+
className
|
|
1629
|
+
),
|
|
1630
|
+
...props
|
|
1631
|
+
}
|
|
1632
|
+
));
|
|
1633
|
+
SheetClose.displayName = "SheetClose";
|
|
1634
|
+
|
|
1635
|
+
// src/components/Skeleton/Skeleton.tsx
|
|
1636
|
+
var React19 = __toESM(require("react"), 1);
|
|
1637
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
1638
|
+
var Skeleton = React19.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1639
|
+
"div",
|
|
1640
|
+
{
|
|
1641
|
+
ref,
|
|
1642
|
+
className: cn(
|
|
1643
|
+
"animate-pulse rounded-md bg-muted",
|
|
1644
|
+
className
|
|
1645
|
+
),
|
|
1646
|
+
...props
|
|
1647
|
+
}
|
|
1648
|
+
));
|
|
1649
|
+
Skeleton.displayName = "Skeleton";
|
|
1650
|
+
|
|
1651
|
+
// src/components/Slider/Slider.tsx
|
|
1652
|
+
var React20 = __toESM(require("react"), 1);
|
|
1653
|
+
var SliderPrimitive = __toESM(require("@radix-ui/react-slider"), 1);
|
|
1654
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
1655
|
+
var Slider = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
1656
|
+
SliderPrimitive.Root,
|
|
1657
|
+
{
|
|
1658
|
+
ref,
|
|
1659
|
+
className: cn(
|
|
1660
|
+
"relative flex w-full touch-none select-none items-center",
|
|
1661
|
+
className
|
|
1662
|
+
),
|
|
1663
|
+
...props,
|
|
1664
|
+
children: [
|
|
1665
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SliderPrimitive.Track, { className: "relative h-2 w-full grow overflow-hidden rounded-full bg-secondary", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SliderPrimitive.Range, { className: "absolute h-full bg-primary" }) }),
|
|
1666
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SliderPrimitive.Thumb, { className: "block h-5 w-5 rounded-full border-2 border-primary bg-background ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50" })
|
|
1667
|
+
]
|
|
1668
|
+
}
|
|
1669
|
+
));
|
|
1670
|
+
Slider.displayName = SliderPrimitive.Root.displayName;
|
|
1671
|
+
|
|
1672
|
+
// src/components/Switch/Switch.tsx
|
|
1673
|
+
var React21 = __toESM(require("react"), 1);
|
|
1674
|
+
var SwitchPrimitives = __toESM(require("@radix-ui/react-switch"), 1);
|
|
1675
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
1676
|
+
var Switch = React21.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
1677
|
+
SwitchPrimitives.Root,
|
|
1678
|
+
{
|
|
1679
|
+
className: cn(
|
|
1680
|
+
"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent bg-input p-0.5 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",
|
|
1681
|
+
className
|
|
1682
|
+
),
|
|
1683
|
+
...props,
|
|
1684
|
+
ref,
|
|
1685
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
1686
|
+
SwitchPrimitives.Thumb,
|
|
1687
|
+
{
|
|
1688
|
+
className: cn(
|
|
1689
|
+
"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0"
|
|
1690
|
+
)
|
|
1691
|
+
}
|
|
1692
|
+
)
|
|
1693
|
+
}
|
|
1694
|
+
));
|
|
1695
|
+
Switch.displayName = SwitchPrimitives.Root.displayName;
|
|
1696
|
+
|
|
1697
|
+
// src/components/Table/Table.tsx
|
|
1698
|
+
var React22 = __toESM(require("react"), 1);
|
|
1699
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
1700
|
+
var Table = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1701
|
+
"table",
|
|
1702
|
+
{
|
|
1703
|
+
ref,
|
|
1704
|
+
className: cn("w-full caption-bottom text-sm", className),
|
|
1705
|
+
...props
|
|
1706
|
+
}
|
|
1707
|
+
) }));
|
|
1708
|
+
Table.displayName = "Table";
|
|
1709
|
+
var TableHeader = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("thead", { ref, className: cn("[&_tr]:border-b", className), ...props }));
|
|
1710
|
+
TableHeader.displayName = "TableHeader";
|
|
1711
|
+
var TableBody = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1712
|
+
"tbody",
|
|
1713
|
+
{
|
|
1714
|
+
ref,
|
|
1715
|
+
className: cn("[&_tr:last-child]:border-0", className),
|
|
1716
|
+
...props
|
|
1717
|
+
}
|
|
1718
|
+
));
|
|
1719
|
+
TableBody.displayName = "TableBody";
|
|
1720
|
+
var TableFooter = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1721
|
+
"tfoot",
|
|
1722
|
+
{
|
|
1723
|
+
ref,
|
|
1724
|
+
className: cn(
|
|
1725
|
+
"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",
|
|
1726
|
+
className
|
|
1727
|
+
),
|
|
1728
|
+
...props
|
|
1729
|
+
}
|
|
1730
|
+
));
|
|
1731
|
+
TableFooter.displayName = "TableFooter";
|
|
1732
|
+
var TableRow = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1733
|
+
"tr",
|
|
1734
|
+
{
|
|
1735
|
+
ref,
|
|
1736
|
+
className: cn(
|
|
1737
|
+
"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",
|
|
1738
|
+
className
|
|
1739
|
+
),
|
|
1740
|
+
...props
|
|
1741
|
+
}
|
|
1742
|
+
));
|
|
1743
|
+
TableRow.displayName = "TableRow";
|
|
1744
|
+
var TableHead = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1745
|
+
"th",
|
|
1746
|
+
{
|
|
1747
|
+
ref,
|
|
1748
|
+
className: cn(
|
|
1749
|
+
"h-11 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",
|
|
1750
|
+
className
|
|
1751
|
+
),
|
|
1752
|
+
...props
|
|
1753
|
+
}
|
|
1754
|
+
));
|
|
1755
|
+
TableHead.displayName = "TableHead";
|
|
1756
|
+
var TableCell = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1757
|
+
"td",
|
|
1758
|
+
{
|
|
1759
|
+
ref,
|
|
1760
|
+
className: cn(
|
|
1761
|
+
"p-4 align-middle [&:has([role=checkbox])]:pr-0",
|
|
1762
|
+
className
|
|
1763
|
+
),
|
|
1764
|
+
...props
|
|
1765
|
+
}
|
|
1766
|
+
));
|
|
1767
|
+
TableCell.displayName = "TableCell";
|
|
1768
|
+
var TableCaption = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1769
|
+
"caption",
|
|
1770
|
+
{
|
|
1771
|
+
ref,
|
|
1772
|
+
className: cn("mt-4 text-sm text-muted-foreground", className),
|
|
1773
|
+
...props
|
|
1774
|
+
}
|
|
1775
|
+
));
|
|
1776
|
+
TableCaption.displayName = "TableCaption";
|
|
1777
|
+
|
|
1778
|
+
// src/components/Tabs/Tabs.tsx
|
|
1779
|
+
var React23 = __toESM(require("react"), 1);
|
|
1780
|
+
var TabsPrimitive = __toESM(require("@radix-ui/react-tabs"), 1);
|
|
1781
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
1782
|
+
var Tabs = TabsPrimitive.Root;
|
|
1783
|
+
var TabsList = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1784
|
+
TabsPrimitive.List,
|
|
1785
|
+
{
|
|
1786
|
+
ref,
|
|
1787
|
+
className: cn(
|
|
1788
|
+
"inline-flex h-auto items-center justify-start gap-0 text-muted-foreground",
|
|
1789
|
+
className
|
|
1790
|
+
),
|
|
1791
|
+
...props
|
|
1792
|
+
}
|
|
1793
|
+
));
|
|
1794
|
+
TabsList.displayName = TabsPrimitive.List.displayName;
|
|
1795
|
+
var TabsTrigger = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1796
|
+
TabsPrimitive.Trigger,
|
|
1797
|
+
{
|
|
1798
|
+
ref,
|
|
1799
|
+
className: cn(
|
|
1800
|
+
"inline-flex items-center justify-center whitespace-nowrap rounded-xs px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm data-[state=active]:font-semibold data-[state=inactive]:text-muted-foreground",
|
|
1801
|
+
className
|
|
1802
|
+
),
|
|
1803
|
+
...props
|
|
1804
|
+
}
|
|
1805
|
+
));
|
|
1806
|
+
TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
|
|
1807
|
+
var TabsContent = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1808
|
+
TabsPrimitive.Content,
|
|
1809
|
+
{
|
|
1810
|
+
ref,
|
|
1811
|
+
className: cn(
|
|
1812
|
+
"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
1813
|
+
className
|
|
1814
|
+
),
|
|
1815
|
+
...props
|
|
1816
|
+
}
|
|
1817
|
+
));
|
|
1818
|
+
TabsContent.displayName = TabsPrimitive.Content.displayName;
|
|
1819
|
+
|
|
1820
|
+
// src/components/Textarea/Textarea.tsx
|
|
1821
|
+
var React24 = __toESM(require("react"), 1);
|
|
1822
|
+
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
1823
|
+
var Textarea = React24.forwardRef(
|
|
1824
|
+
({ className, ...props }, ref) => {
|
|
1825
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
1826
|
+
"textarea",
|
|
1827
|
+
{
|
|
1828
|
+
className: cn(
|
|
1829
|
+
"flex min-h-[82px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
|
|
1830
|
+
className
|
|
1831
|
+
),
|
|
1832
|
+
ref,
|
|
1833
|
+
...props
|
|
1834
|
+
}
|
|
1835
|
+
);
|
|
1836
|
+
}
|
|
1837
|
+
);
|
|
1838
|
+
Textarea.displayName = "Textarea";
|
|
1839
|
+
|
|
1840
|
+
// src/components/Toast/Toast.tsx
|
|
1841
|
+
var import_sonner = require("sonner");
|
|
1842
|
+
var import_sonner2 = require("sonner");
|
|
1843
|
+
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
1844
|
+
var Toaster2 = ({ ...props }) => {
|
|
1845
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
1846
|
+
import_sonner.Toaster,
|
|
1847
|
+
{
|
|
1848
|
+
className: "toaster group",
|
|
1849
|
+
toastOptions: {
|
|
1850
|
+
classNames: {
|
|
1851
|
+
toast: "group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",
|
|
1852
|
+
description: "group-[.toast]:text-muted-foreground",
|
|
1853
|
+
actionButton: "group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",
|
|
1854
|
+
cancelButton: "group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"
|
|
1855
|
+
}
|
|
1856
|
+
},
|
|
1857
|
+
...props
|
|
1858
|
+
}
|
|
1859
|
+
);
|
|
1860
|
+
};
|
|
1861
|
+
|
|
1862
|
+
// src/components/Toggle/Toggle.tsx
|
|
1863
|
+
var React25 = __toESM(require("react"), 1);
|
|
1864
|
+
var TogglePrimitive = __toESM(require("@radix-ui/react-toggle"), 1);
|
|
1865
|
+
var import_class_variance_authority4 = require("class-variance-authority");
|
|
1866
|
+
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
1867
|
+
var toggleVariants = (0, import_class_variance_authority4.cva)(
|
|
1868
|
+
"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-muted data-[state=on]:text-foreground",
|
|
1869
|
+
{
|
|
1870
|
+
variants: {
|
|
1871
|
+
variant: {
|
|
1872
|
+
default: "bg-transparent",
|
|
1873
|
+
outline: "border border-input bg-transparent hover:bg-accent hover:text-accent-foreground"
|
|
1874
|
+
},
|
|
1875
|
+
size: {
|
|
1876
|
+
default: "h-10 px-3",
|
|
1877
|
+
sm: "h-9 px-2.5",
|
|
1878
|
+
lg: "h-11 px-5"
|
|
1879
|
+
}
|
|
1880
|
+
},
|
|
1881
|
+
defaultVariants: {
|
|
1882
|
+
variant: "default",
|
|
1883
|
+
size: "default"
|
|
1884
|
+
}
|
|
1885
|
+
}
|
|
1886
|
+
);
|
|
1887
|
+
var Toggle = React25.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
1888
|
+
TogglePrimitive.Root,
|
|
1889
|
+
{
|
|
1890
|
+
ref,
|
|
1891
|
+
className: cn(toggleVariants({ variant, size, className })),
|
|
1892
|
+
...props
|
|
1893
|
+
}
|
|
1894
|
+
));
|
|
1895
|
+
Toggle.displayName = TogglePrimitive.Root.displayName;
|
|
1896
|
+
|
|
1897
|
+
// src/lib/theme.tsx
|
|
1898
|
+
var React26 = __toESM(require("react"), 1);
|
|
1899
|
+
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
1900
|
+
var ThemeContext = React26.createContext(void 0);
|
|
1901
|
+
function ThemeProvider({
|
|
1902
|
+
children,
|
|
1903
|
+
defaultTheme = "auto",
|
|
1904
|
+
storageKey = "cc-theme",
|
|
1905
|
+
enablePersistence = true
|
|
1906
|
+
}) {
|
|
1907
|
+
const [theme, setThemeState] = React26.useState(() => {
|
|
1908
|
+
if (typeof window === "undefined") return defaultTheme;
|
|
1909
|
+
if (enablePersistence) {
|
|
1910
|
+
const stored = window.localStorage.getItem(storageKey);
|
|
1911
|
+
if (stored && isValidTheme(stored)) {
|
|
1912
|
+
return stored;
|
|
1913
|
+
}
|
|
1914
|
+
}
|
|
1915
|
+
return defaultTheme;
|
|
1916
|
+
});
|
|
1917
|
+
const [actualTheme, setActualTheme] = React26.useState(() => {
|
|
1918
|
+
if (theme === "auto") {
|
|
1919
|
+
return typeof window !== "undefined" && window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
1920
|
+
}
|
|
1921
|
+
return theme;
|
|
1922
|
+
});
|
|
1923
|
+
React26.useEffect(() => {
|
|
1924
|
+
const root = window.document.documentElement;
|
|
1925
|
+
if (theme === "auto") {
|
|
1926
|
+
root.removeAttribute("data-theme");
|
|
1927
|
+
} else {
|
|
1928
|
+
root.setAttribute("data-theme", theme);
|
|
1929
|
+
}
|
|
1930
|
+
}, [theme]);
|
|
1931
|
+
React26.useEffect(() => {
|
|
1932
|
+
if (theme !== "auto") {
|
|
1933
|
+
setActualTheme(theme);
|
|
1934
|
+
return;
|
|
1935
|
+
}
|
|
1936
|
+
const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
|
|
1937
|
+
const handleChange = (e) => {
|
|
1938
|
+
setActualTheme(e.matches ? "dark" : "light");
|
|
1939
|
+
};
|
|
1940
|
+
handleChange(mediaQuery);
|
|
1941
|
+
mediaQuery.addEventListener("change", handleChange);
|
|
1942
|
+
return () => {
|
|
1943
|
+
mediaQuery.removeEventListener("change", handleChange);
|
|
1944
|
+
};
|
|
1945
|
+
}, [theme]);
|
|
1946
|
+
const setTheme = React26.useCallback(
|
|
1947
|
+
(newTheme) => {
|
|
1948
|
+
setThemeState(newTheme);
|
|
1949
|
+
if (enablePersistence && typeof window !== "undefined") {
|
|
1950
|
+
try {
|
|
1951
|
+
window.localStorage.setItem(storageKey, newTheme);
|
|
1952
|
+
} catch (error) {
|
|
1953
|
+
console.warn("Failed to persist theme preference:", error);
|
|
1954
|
+
}
|
|
1955
|
+
}
|
|
1956
|
+
},
|
|
1957
|
+
[enablePersistence, storageKey]
|
|
1958
|
+
);
|
|
1959
|
+
const value = React26.useMemo(
|
|
1960
|
+
() => ({
|
|
1961
|
+
theme,
|
|
1962
|
+
setTheme,
|
|
1963
|
+
actualTheme
|
|
1964
|
+
}),
|
|
1965
|
+
[theme, setTheme, actualTheme]
|
|
1966
|
+
);
|
|
1967
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(ThemeContext.Provider, { value, children });
|
|
1968
|
+
}
|
|
1969
|
+
function useTheme() {
|
|
1970
|
+
const context = React26.useContext(ThemeContext);
|
|
1971
|
+
if (context === void 0) {
|
|
1972
|
+
throw new Error("useTheme must be used within a ThemeProvider");
|
|
1973
|
+
}
|
|
1974
|
+
return context;
|
|
1975
|
+
}
|
|
1976
|
+
function isValidTheme(value) {
|
|
1977
|
+
return ["light", "dark", "atxp", "dbg", "auto"].includes(value);
|
|
1978
|
+
}
|
|
1979
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
1980
|
+
0 && (module.exports = {
|
|
1981
|
+
Accordion,
|
|
1982
|
+
AccordionContent,
|
|
1983
|
+
AccordionItem,
|
|
1984
|
+
AccordionTrigger,
|
|
1985
|
+
Activity,
|
|
1986
|
+
Alert,
|
|
1987
|
+
AlertCircle,
|
|
1988
|
+
AlertDescription,
|
|
1989
|
+
AlertDialog,
|
|
1990
|
+
AlertDialogAction,
|
|
1991
|
+
AlertDialogCancel,
|
|
1992
|
+
AlertDialogContent,
|
|
1993
|
+
AlertDialogDescription,
|
|
1994
|
+
AlertDialogFooter,
|
|
1995
|
+
AlertDialogHeader,
|
|
1996
|
+
AlertDialogTitle,
|
|
1997
|
+
AlertTitle,
|
|
1998
|
+
AlertTriangle,
|
|
1999
|
+
ArrowDown,
|
|
2000
|
+
ArrowLeft,
|
|
2001
|
+
ArrowRight,
|
|
2002
|
+
ArrowUp,
|
|
2003
|
+
Avatar,
|
|
2004
|
+
AvatarFallback,
|
|
2005
|
+
AvatarImage,
|
|
2006
|
+
Award,
|
|
2007
|
+
Badge,
|
|
2008
|
+
BarChart,
|
|
2009
|
+
BarChart2,
|
|
2010
|
+
Battery,
|
|
2011
|
+
BatteryCharging,
|
|
2012
|
+
BatteryFull,
|
|
2013
|
+
BatteryLow,
|
|
2014
|
+
Bell,
|
|
2015
|
+
BellOff,
|
|
2016
|
+
Bluetooth,
|
|
2017
|
+
BookOpen,
|
|
2018
|
+
Bookmark,
|
|
2019
|
+
Breadcrumb,
|
|
2020
|
+
BreadcrumbEllipsis,
|
|
2021
|
+
BreadcrumbItem,
|
|
2022
|
+
BreadcrumbLink,
|
|
2023
|
+
BreadcrumbList,
|
|
2024
|
+
BreadcrumbPage,
|
|
2025
|
+
BreadcrumbSeparator,
|
|
2026
|
+
Bug,
|
|
2027
|
+
Building,
|
|
2028
|
+
Building2,
|
|
2029
|
+
Button,
|
|
2030
|
+
ButtonGroup,
|
|
2031
|
+
Calendar,
|
|
2032
|
+
CalendarCheck,
|
|
2033
|
+
CalendarDays,
|
|
2034
|
+
CalendarMinus,
|
|
2035
|
+
CalendarPlus,
|
|
2036
|
+
CalendarX,
|
|
2037
|
+
Camera,
|
|
2038
|
+
CameraOff,
|
|
2039
|
+
Card,
|
|
2040
|
+
CardContent,
|
|
2041
|
+
CardDescription,
|
|
2042
|
+
CardFooter,
|
|
2043
|
+
CardHeader,
|
|
2044
|
+
CardTitle,
|
|
2045
|
+
Carousel,
|
|
2046
|
+
CarouselContent,
|
|
2047
|
+
CarouselItem,
|
|
2048
|
+
CarouselNext,
|
|
2049
|
+
CarouselPrevious,
|
|
2050
|
+
Check,
|
|
2051
|
+
CheckCircle,
|
|
2052
|
+
CheckCircle2,
|
|
2053
|
+
CheckWaves,
|
|
2054
|
+
Checkbox,
|
|
2055
|
+
ChevronDown,
|
|
2056
|
+
ChevronLeft,
|
|
2057
|
+
ChevronRight,
|
|
2058
|
+
ChevronUp,
|
|
2059
|
+
ChevronsDown,
|
|
2060
|
+
ChevronsLeft,
|
|
2061
|
+
ChevronsRight,
|
|
2062
|
+
ChevronsUp,
|
|
2063
|
+
Clock,
|
|
2064
|
+
Cloud,
|
|
2065
|
+
CloudDrizzle,
|
|
2066
|
+
CloudLightning,
|
|
2067
|
+
CloudRain,
|
|
2068
|
+
CloudSnow,
|
|
2069
|
+
Code,
|
|
2070
|
+
Code2,
|
|
2071
|
+
Cog,
|
|
2072
|
+
Columns,
|
|
2073
|
+
Compass,
|
|
2074
|
+
Copy,
|
|
2075
|
+
Cpu,
|
|
2076
|
+
CreditCard,
|
|
2077
|
+
Database,
|
|
2078
|
+
Dialog,
|
|
2079
|
+
DialogContent,
|
|
2080
|
+
DialogDescription,
|
|
2081
|
+
DialogFooter,
|
|
2082
|
+
DialogHeader,
|
|
2083
|
+
DialogTitle,
|
|
2084
|
+
DollarSign,
|
|
2085
|
+
Dots,
|
|
2086
|
+
Download,
|
|
2087
|
+
Drawer,
|
|
2088
|
+
DrawerContent,
|
|
2089
|
+
DrawerDescription,
|
|
2090
|
+
DrawerFooter,
|
|
2091
|
+
DrawerHeader,
|
|
2092
|
+
DrawerTitle,
|
|
2093
|
+
Edit,
|
|
2094
|
+
Edit2,
|
|
2095
|
+
Edit3,
|
|
2096
|
+
ExternalLink,
|
|
2097
|
+
Eye,
|
|
2098
|
+
EyeOff,
|
|
2099
|
+
Facebook,
|
|
2100
|
+
Figma,
|
|
2101
|
+
File,
|
|
2102
|
+
FileImage,
|
|
2103
|
+
FilePlus,
|
|
2104
|
+
FileText,
|
|
2105
|
+
Filter,
|
|
2106
|
+
Flag,
|
|
2107
|
+
Folder,
|
|
2108
|
+
FolderOpen,
|
|
2109
|
+
FolderPlus,
|
|
2110
|
+
Gift,
|
|
2111
|
+
GitBranch,
|
|
2112
|
+
GitCommit,
|
|
2113
|
+
GitMerge,
|
|
2114
|
+
GitPullRequest,
|
|
2115
|
+
Github,
|
|
2116
|
+
Globe,
|
|
2117
|
+
Grid,
|
|
2118
|
+
Header,
|
|
2119
|
+
HeaderActions,
|
|
2120
|
+
HeaderBreadcrumbs,
|
|
2121
|
+
HeaderContent,
|
|
2122
|
+
HeaderDescription,
|
|
2123
|
+
HeaderTitle,
|
|
2124
|
+
Heart,
|
|
2125
|
+
HelpCircle,
|
|
2126
|
+
Home,
|
|
2127
|
+
Icon,
|
|
2128
|
+
Image,
|
|
2129
|
+
Info,
|
|
2130
|
+
Instagram,
|
|
2131
|
+
Key,
|
|
2132
|
+
Laptop,
|
|
2133
|
+
Layout,
|
|
2134
|
+
LayoutGrid,
|
|
2135
|
+
LayoutList,
|
|
2136
|
+
LineChart,
|
|
2137
|
+
Link,
|
|
2138
|
+
Link2,
|
|
2139
|
+
Linkedin,
|
|
2140
|
+
List,
|
|
2141
|
+
Loader,
|
|
2142
|
+
Loader2,
|
|
2143
|
+
Lock,
|
|
2144
|
+
LogIn,
|
|
2145
|
+
LogOut,
|
|
2146
|
+
Mail,
|
|
2147
|
+
Map,
|
|
2148
|
+
MapPin,
|
|
2149
|
+
Maximize,
|
|
2150
|
+
Maximize2,
|
|
2151
|
+
Menu,
|
|
2152
|
+
MessageCircle,
|
|
2153
|
+
MessageSquare,
|
|
2154
|
+
Mic,
|
|
2155
|
+
MicOff,
|
|
2156
|
+
Minimize,
|
|
2157
|
+
Minimize2,
|
|
2158
|
+
Minus,
|
|
2159
|
+
Monitor,
|
|
2160
|
+
Moon,
|
|
2161
|
+
MoreHorizontal,
|
|
2162
|
+
MoreVertical,
|
|
2163
|
+
Music,
|
|
2164
|
+
Navigation,
|
|
2165
|
+
Navigation2,
|
|
2166
|
+
Package,
|
|
2167
|
+
PanelLeft,
|
|
2168
|
+
PanelRight,
|
|
2169
|
+
Paperclip,
|
|
2170
|
+
Pause,
|
|
2171
|
+
Pen,
|
|
2172
|
+
Phone,
|
|
2173
|
+
PhoneCall,
|
|
2174
|
+
PhoneOff,
|
|
2175
|
+
PieChart,
|
|
2176
|
+
Play,
|
|
2177
|
+
Plus,
|
|
2178
|
+
Radio,
|
|
2179
|
+
RefreshCw,
|
|
2180
|
+
RotateCcw,
|
|
2181
|
+
RotateCw,
|
|
2182
|
+
Save,
|
|
2183
|
+
Search,
|
|
2184
|
+
Select,
|
|
2185
|
+
SelectContent,
|
|
2186
|
+
SelectGroup,
|
|
2187
|
+
SelectItem,
|
|
2188
|
+
SelectLabel,
|
|
2189
|
+
SelectScrollDownButton,
|
|
2190
|
+
SelectScrollUpButton,
|
|
2191
|
+
SelectSeparator,
|
|
2192
|
+
SelectTrigger,
|
|
2193
|
+
SelectValue,
|
|
2194
|
+
Send,
|
|
2195
|
+
Separator,
|
|
2196
|
+
Server,
|
|
2197
|
+
Settings,
|
|
2198
|
+
Share,
|
|
2199
|
+
Share2,
|
|
2200
|
+
Sheet,
|
|
2201
|
+
SheetClose,
|
|
2202
|
+
SheetContent,
|
|
2203
|
+
SheetDescription,
|
|
2204
|
+
SheetFooter,
|
|
2205
|
+
SheetHeader,
|
|
2206
|
+
SheetTitle,
|
|
2207
|
+
Shield,
|
|
2208
|
+
ShieldCheck,
|
|
2209
|
+
ShoppingBag,
|
|
2210
|
+
ShoppingCart,
|
|
2211
|
+
Sidebar,
|
|
2212
|
+
Skeleton,
|
|
2213
|
+
SkipBack,
|
|
2214
|
+
SkipForward,
|
|
2215
|
+
Slider,
|
|
2216
|
+
Smartphone,
|
|
2217
|
+
Square,
|
|
2218
|
+
Star,
|
|
2219
|
+
Store,
|
|
2220
|
+
Sun,
|
|
2221
|
+
Switch,
|
|
2222
|
+
Table,
|
|
2223
|
+
TableBody,
|
|
2224
|
+
TableCaption,
|
|
2225
|
+
TableCell,
|
|
2226
|
+
TableFooter,
|
|
2227
|
+
TableHead,
|
|
2228
|
+
TableHeader,
|
|
2229
|
+
TableRow,
|
|
2230
|
+
Tablet,
|
|
2231
|
+
Tabs,
|
|
2232
|
+
TabsContent,
|
|
2233
|
+
TabsList,
|
|
2234
|
+
TabsTrigger,
|
|
2235
|
+
Tag,
|
|
2236
|
+
Terminal,
|
|
2237
|
+
Textarea,
|
|
2238
|
+
ThemeProvider,
|
|
2239
|
+
Toast,
|
|
2240
|
+
Toaster,
|
|
2241
|
+
Toggle,
|
|
2242
|
+
Trash,
|
|
2243
|
+
Trash2,
|
|
2244
|
+
TrendingDown,
|
|
2245
|
+
TrendingUp,
|
|
2246
|
+
Tv,
|
|
2247
|
+
Twitch,
|
|
2248
|
+
Twitter,
|
|
2249
|
+
Unlock,
|
|
2250
|
+
Upload,
|
|
2251
|
+
User,
|
|
2252
|
+
UserCheck,
|
|
2253
|
+
UserMinus,
|
|
2254
|
+
UserPlus,
|
|
2255
|
+
UserX,
|
|
2256
|
+
Users,
|
|
2257
|
+
Video,
|
|
2258
|
+
VideoOff,
|
|
2259
|
+
Volume,
|
|
2260
|
+
Volume1,
|
|
2261
|
+
Volume2,
|
|
2262
|
+
VolumeX,
|
|
2263
|
+
Watch,
|
|
2264
|
+
Wifi,
|
|
2265
|
+
WifiOff,
|
|
2266
|
+
Wind,
|
|
2267
|
+
X,
|
|
2268
|
+
XCircle,
|
|
2269
|
+
Youtube,
|
|
2270
|
+
Zap,
|
|
2271
|
+
badgeVariants,
|
|
2272
|
+
buttonVariants,
|
|
2273
|
+
cn,
|
|
2274
|
+
toast,
|
|
2275
|
+
toggleVariants,
|
|
2276
|
+
useTheme
|
|
2277
|
+
});
|
|
2278
|
+
//# sourceMappingURL=index.cjs.map
|