@akira-io/ui 1.0.0 → 1.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.
Files changed (70) hide show
  1. package/README.md +15 -10
  2. package/dist/blocks.d.ts +159 -6
  3. package/dist/blocks.js +1388 -29
  4. package/dist/blocks.js.map +1 -1
  5. package/dist/button-B6wQRe7p.d.ts +16 -0
  6. package/dist/chunk-5AJFQ6C4.js +35 -0
  7. package/dist/chunk-5AJFQ6C4.js.map +1 -0
  8. package/dist/chunk-6QM5BA7B.js +148 -0
  9. package/dist/chunk-6QM5BA7B.js.map +1 -0
  10. package/dist/chunk-6X4TKSF6.js +21 -0
  11. package/dist/chunk-6X4TKSF6.js.map +1 -0
  12. package/dist/chunk-DSD7MVLL.js +287 -0
  13. package/dist/chunk-DSD7MVLL.js.map +1 -0
  14. package/dist/chunk-IQMRJXEO.js +59 -0
  15. package/dist/chunk-IQMRJXEO.js.map +1 -0
  16. package/dist/chunk-JAHTUAQL.js +82 -0
  17. package/dist/chunk-JAHTUAQL.js.map +1 -0
  18. package/dist/{chunk-A2SIZOEA.js → chunk-KYWA5UYN.js} +125 -45
  19. package/dist/chunk-KYWA5UYN.js.map +1 -0
  20. package/dist/chunk-L2H5GIF7.js +22 -0
  21. package/dist/chunk-L2H5GIF7.js.map +1 -0
  22. package/dist/chunk-LKSM3WLK.js +44 -0
  23. package/dist/chunk-LKSM3WLK.js.map +1 -0
  24. package/dist/{chunk-5MQWJVM2.js → chunk-MNGNBEYN.js} +168 -200
  25. package/dist/chunk-MNGNBEYN.js.map +1 -0
  26. package/dist/chunk-SA5LM2GD.js +102 -0
  27. package/dist/chunk-SA5LM2GD.js.map +1 -0
  28. package/dist/chunk-UUEWFCKT.js +28 -0
  29. package/dist/chunk-UUEWFCKT.js.map +1 -0
  30. package/dist/{chunk-42BJBH56.js → chunk-UUTXPPRN.js} +521 -107
  31. package/dist/chunk-UUTXPPRN.js.map +1 -0
  32. package/dist/{chunk-UXL33CZ4.js → chunk-YOVY3KT6.js} +13 -11
  33. package/dist/chunk-YOVY3KT6.js.map +1 -0
  34. package/dist/code.d.ts +6 -0
  35. package/dist/code.js +651 -0
  36. package/dist/code.js.map +1 -0
  37. package/dist/context-VgHq4U98.d.ts +384 -0
  38. package/dist/editor.d.ts +126 -0
  39. package/dist/editor.js +436 -0
  40. package/dist/editor.js.map +1 -0
  41. package/dist/index.d.ts +93 -17
  42. package/dist/index.js +996 -472
  43. package/dist/index.js.map +1 -1
  44. package/dist/inertia.d.ts +47 -2
  45. package/dist/inertia.js +138 -7
  46. package/dist/inertia.js.map +1 -1
  47. package/dist/input-4uxAHW6y.d.ts +5 -0
  48. package/dist/json-viewer-BTHBACj9.d.ts +50 -0
  49. package/dist/{language-Bft6rBBt.d.ts → language-Dgjr9bm3.d.ts} +1 -1
  50. package/dist/locales/pt.d.ts +26 -4
  51. package/dist/locales/pt.js +127 -1
  52. package/dist/locales/pt.js.map +1 -1
  53. package/dist/password-input-r39y2pCT.d.ts +50 -0
  54. package/dist/shells.d.ts +45 -7
  55. package/dist/shells.js +95 -60
  56. package/dist/shells.js.map +1 -1
  57. package/dist/{sidebar-BDhG9SUU.d.ts → sidebar-BhOIlSjt.d.ts} +4 -12
  58. package/dist/{types-Cno1_Ijx.d.ts → types-B4QS3h5p.d.ts} +9 -1
  59. package/dist/types-CT0rBsFc.d.ts +110 -0
  60. package/package.json +170 -130
  61. package/theme.css +20 -0
  62. package/themes/nosferry.css +4 -0
  63. package/dist/chunk-42BJBH56.js.map +0 -1
  64. package/dist/chunk-5MQWJVM2.js.map +0 -1
  65. package/dist/chunk-A2SIZOEA.js.map +0 -1
  66. package/dist/chunk-POE7OYET.js +0 -96
  67. package/dist/chunk-POE7OYET.js.map +0 -1
  68. package/dist/chunk-UXL33CZ4.js.map +0 -1
  69. package/dist/date-range-filter-QEa8fhUM.d.ts +0 -149
  70. package/dist/types-cOieac8G.d.ts +0 -77
@@ -1,195 +1,18 @@
1
- import { cn, elevatedSurface, nestedSurfaceReset, menuSurface, focusRing, floatingSurface, Button, Input } from './chunk-POE7OYET.js';
2
- import * as AvatarPrimitive from '@radix-ui/react-avatar';
1
+ import { Separator } from './chunk-UUEWFCKT.js';
2
+ import { Input } from './chunk-6X4TKSF6.js';
3
+ import { cn, menuSurface, focusRing, floatingSurface, Button } from './chunk-DSD7MVLL.js';
4
+ import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
5
+ import { CheckIcon, CircleIcon, ChevronRightIcon, ChevronRight, MoreHorizontal, XIcon, PanelLeftIcon } from 'lucide-react';
3
6
  import { jsx, jsxs } from 'react/jsx-runtime';
7
+ import * as AvatarPrimitive from '@radix-ui/react-avatar';
4
8
  import { Slot } from '@radix-ui/react-slot';
5
- import { ChevronRight, MoreHorizontal, CheckIcon, CircleIcon, ChevronRightIcon, XIcon, PanelLeftIcon } from 'lucide-react';
6
9
  import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
7
- import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
8
- import * as SeparatorPrimitive from '@radix-ui/react-separator';
9
10
  import * as SheetPrimitive from '@radix-ui/react-dialog';
10
11
  import * as React2 from 'react';
11
12
  import { useState, useEffect } from 'react';
12
13
  import * as TooltipPrimitive from '@radix-ui/react-tooltip';
13
14
  import { cva } from 'class-variance-authority';
14
15
 
15
- function Avatar({
16
- className,
17
- ...props
18
- }) {
19
- return /* @__PURE__ */ jsx(
20
- AvatarPrimitive.Root,
21
- {
22
- "data-slot": "avatar",
23
- className: cn(
24
- "size-8 relative flex shrink-0 overflow-hidden rounded-full",
25
- className
26
- ),
27
- ...props
28
- }
29
- );
30
- }
31
- function AvatarImage({
32
- className,
33
- ...props
34
- }) {
35
- return /* @__PURE__ */ jsx(
36
- AvatarPrimitive.Image,
37
- {
38
- "data-slot": "avatar-image",
39
- className: cn("aspect-square size-full", className),
40
- ...props
41
- }
42
- );
43
- }
44
- function AvatarFallback({
45
- className,
46
- ...props
47
- }) {
48
- return /* @__PURE__ */ jsx(
49
- AvatarPrimitive.Fallback,
50
- {
51
- "data-slot": "avatar-fallback",
52
- className: cn(
53
- "flex size-full items-center justify-center rounded-full bg-muted",
54
- className
55
- ),
56
- ...props
57
- }
58
- );
59
- }
60
- function Breadcrumb({ ...props }) {
61
- return /* @__PURE__ */ jsx("nav", { "aria-label": "breadcrumb", "data-slot": "breadcrumb", ...props });
62
- }
63
- function BreadcrumbList({ className, ...props }) {
64
- return /* @__PURE__ */ jsx(
65
- "ol",
66
- {
67
- "data-slot": "breadcrumb-list",
68
- className: cn(
69
- "gap-1.5 text-sm sm:gap-2.5 flex flex-wrap items-center break-words text-muted-foreground",
70
- className
71
- ),
72
- ...props
73
- }
74
- );
75
- }
76
- function BreadcrumbItem({ className, ...props }) {
77
- return /* @__PURE__ */ jsx(
78
- "li",
79
- {
80
- "data-slot": "breadcrumb-item",
81
- className: cn("gap-1.5 inline-flex items-center", className),
82
- ...props
83
- }
84
- );
85
- }
86
- function BreadcrumbLink({
87
- asChild,
88
- className,
89
- ...props
90
- }) {
91
- const Comp = asChild ? Slot : "a";
92
- return /* @__PURE__ */ jsx(
93
- Comp,
94
- {
95
- "data-slot": "breadcrumb-link",
96
- className: cn("transition-colors hover:text-foreground", className),
97
- ...props
98
- }
99
- );
100
- }
101
- function BreadcrumbPage({ className, ...props }) {
102
- return /* @__PURE__ */ jsx(
103
- "span",
104
- {
105
- "data-slot": "breadcrumb-page",
106
- role: "link",
107
- "aria-disabled": "true",
108
- "aria-current": "page",
109
- className: cn("font-semibold text-foreground", className),
110
- ...props
111
- }
112
- );
113
- }
114
- function BreadcrumbSeparator({
115
- children,
116
- className,
117
- ...props
118
- }) {
119
- return /* @__PURE__ */ jsx(
120
- "li",
121
- {
122
- "data-slot": "breadcrumb-separator",
123
- role: "presentation",
124
- "aria-hidden": "true",
125
- className: cn("[&>svg]:size-3.5", className),
126
- ...props,
127
- children: children ?? /* @__PURE__ */ jsx(ChevronRight, {})
128
- }
129
- );
130
- }
131
- function BreadcrumbEllipsis({
132
- className,
133
- ...props
134
- }) {
135
- return /* @__PURE__ */ jsxs(
136
- "span",
137
- {
138
- "data-slot": "breadcrumb-ellipsis",
139
- role: "presentation",
140
- "aria-hidden": "true",
141
- className: cn(
142
- "size-9 rounded-xl flex items-center justify-center",
143
- className
144
- ),
145
- ...props,
146
- children: [
147
- /* @__PURE__ */ jsx(MoreHorizontal, { className: "size-4" }),
148
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: "More" })
149
- ]
150
- }
151
- );
152
- }
153
- function Collapsible({
154
- className,
155
- ...props
156
- }) {
157
- return /* @__PURE__ */ jsx(
158
- CollapsiblePrimitive.Root,
159
- {
160
- "data-slot": "collapsible",
161
- className: cn(
162
- elevatedSurface,
163
- nestedSurfaceReset,
164
- "p-5 bg-card",
165
- className
166
- ),
167
- ...props
168
- }
169
- );
170
- }
171
- function CollapsibleTrigger2({
172
- ...props
173
- }) {
174
- return /* @__PURE__ */ jsx(
175
- CollapsiblePrimitive.CollapsibleTrigger,
176
- {
177
- "data-slot": "collapsible-trigger",
178
- ...props
179
- }
180
- );
181
- }
182
- function CollapsibleContent2({
183
- ...props
184
- }) {
185
- return /* @__PURE__ */ jsx(
186
- CollapsiblePrimitive.CollapsibleContent,
187
- {
188
- "data-slot": "collapsible-content",
189
- ...props
190
- }
191
- );
192
- }
193
16
  function DropdownMenu({
194
17
  modal = false,
195
18
  ...props
@@ -420,32 +243,177 @@ function DropdownMenuSubContent({
420
243
  }
421
244
  );
422
245
  }
423
- function Icon({ iconNode: IconComponent, className }) {
424
- if (!IconComponent) {
425
- return null;
426
- }
427
- return /* @__PURE__ */ jsx(IconComponent, { className });
246
+ function Avatar({
247
+ className,
248
+ ...props
249
+ }) {
250
+ return /* @__PURE__ */ jsx(
251
+ AvatarPrimitive.Root,
252
+ {
253
+ "data-slot": "avatar",
254
+ className: cn(
255
+ "size-8 relative flex shrink-0 overflow-hidden rounded-full",
256
+ className
257
+ ),
258
+ ...props
259
+ }
260
+ );
428
261
  }
429
- function Separator2({
262
+ function AvatarImage({
430
263
  className,
431
- orientation = "horizontal",
432
- decorative = true,
433
264
  ...props
434
265
  }) {
435
266
  return /* @__PURE__ */ jsx(
436
- SeparatorPrimitive.Root,
267
+ AvatarPrimitive.Image,
437
268
  {
438
- "data-slot": "separator-root",
439
- decorative,
440
- orientation,
269
+ "data-slot": "avatar-image",
270
+ className: cn("aspect-square size-full", className),
271
+ ...props
272
+ }
273
+ );
274
+ }
275
+ function AvatarFallback({
276
+ className,
277
+ ...props
278
+ }) {
279
+ return /* @__PURE__ */ jsx(
280
+ AvatarPrimitive.Fallback,
281
+ {
282
+ "data-slot": "avatar-fallback",
441
283
  className: cn(
442
- "shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",
284
+ "flex size-full items-center justify-center rounded-full bg-muted",
443
285
  className
444
286
  ),
445
287
  ...props
446
288
  }
447
289
  );
448
290
  }
291
+ function Breadcrumb({ ...props }) {
292
+ return /* @__PURE__ */ jsx("nav", { "aria-label": "breadcrumb", "data-slot": "breadcrumb", ...props });
293
+ }
294
+ function BreadcrumbList({ className, ...props }) {
295
+ return /* @__PURE__ */ jsx(
296
+ "ol",
297
+ {
298
+ "data-slot": "breadcrumb-list",
299
+ className: cn(
300
+ "gap-1.5 text-sm sm:gap-2.5 flex flex-wrap items-center break-words text-muted-foreground",
301
+ className
302
+ ),
303
+ ...props
304
+ }
305
+ );
306
+ }
307
+ function BreadcrumbItem({ className, ...props }) {
308
+ return /* @__PURE__ */ jsx(
309
+ "li",
310
+ {
311
+ "data-slot": "breadcrumb-item",
312
+ className: cn("gap-1.5 inline-flex items-center", className),
313
+ ...props
314
+ }
315
+ );
316
+ }
317
+ function BreadcrumbLink({
318
+ asChild,
319
+ className,
320
+ ...props
321
+ }) {
322
+ const Comp = asChild ? Slot : "a";
323
+ return /* @__PURE__ */ jsx(
324
+ Comp,
325
+ {
326
+ "data-slot": "breadcrumb-link",
327
+ className: cn("transition-colors hover:text-foreground", className),
328
+ ...props
329
+ }
330
+ );
331
+ }
332
+ function BreadcrumbPage({ className, ...props }) {
333
+ return /* @__PURE__ */ jsx(
334
+ "span",
335
+ {
336
+ "data-slot": "breadcrumb-page",
337
+ role: "link",
338
+ "aria-disabled": "true",
339
+ "aria-current": "page",
340
+ className: cn("font-semibold text-foreground", className),
341
+ ...props
342
+ }
343
+ );
344
+ }
345
+ function BreadcrumbSeparator({
346
+ children,
347
+ className,
348
+ ...props
349
+ }) {
350
+ return /* @__PURE__ */ jsx(
351
+ "li",
352
+ {
353
+ "data-slot": "breadcrumb-separator",
354
+ role: "presentation",
355
+ "aria-hidden": "true",
356
+ className: cn("[&>svg]:size-3.5", className),
357
+ ...props,
358
+ children: children ?? /* @__PURE__ */ jsx(ChevronRight, {})
359
+ }
360
+ );
361
+ }
362
+ function BreadcrumbEllipsis({
363
+ className,
364
+ ...props
365
+ }) {
366
+ return /* @__PURE__ */ jsxs(
367
+ "span",
368
+ {
369
+ "data-slot": "breadcrumb-ellipsis",
370
+ role: "presentation",
371
+ "aria-hidden": "true",
372
+ className: cn(
373
+ "size-9 rounded-xl flex items-center justify-center",
374
+ className
375
+ ),
376
+ ...props,
377
+ children: [
378
+ /* @__PURE__ */ jsx(MoreHorizontal, { className: "size-4" }),
379
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "More" })
380
+ ]
381
+ }
382
+ );
383
+ }
384
+ function Collapsible({
385
+ ...props
386
+ }) {
387
+ return /* @__PURE__ */ jsx(CollapsiblePrimitive.Root, { "data-slot": "collapsible", ...props });
388
+ }
389
+ function CollapsibleTrigger2({
390
+ ...props
391
+ }) {
392
+ return /* @__PURE__ */ jsx(
393
+ CollapsiblePrimitive.CollapsibleTrigger,
394
+ {
395
+ "data-slot": "collapsible-trigger",
396
+ ...props
397
+ }
398
+ );
399
+ }
400
+ function CollapsibleContent2({
401
+ ...props
402
+ }) {
403
+ return /* @__PURE__ */ jsx(
404
+ CollapsiblePrimitive.CollapsibleContent,
405
+ {
406
+ "data-slot": "collapsible-content",
407
+ ...props
408
+ }
409
+ );
410
+ }
411
+ function Icon({ iconNode: IconComponent, className }) {
412
+ if (!IconComponent) {
413
+ return null;
414
+ }
415
+ return /* @__PURE__ */ jsx(IconComponent, { className });
416
+ }
449
417
  function Sheet({
450
418
  preserveScroll = false,
451
419
  onOpenChange: onOpenChangeProp,
@@ -959,7 +927,7 @@ function SidebarSeparator({
959
927
  ...props
960
928
  }) {
961
929
  return /* @__PURE__ */ jsx(
962
- Separator2,
930
+ Separator,
963
931
  {
964
932
  "data-slot": "sidebar-separator",
965
933
  "data-sidebar": "separator",
@@ -1286,6 +1254,6 @@ function SidebarMenuSubButton({
1286
1254
  );
1287
1255
  }
1288
1256
 
1289
- export { Avatar, AvatarFallback, AvatarImage, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Icon, Separator2 as Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, useIsMobile, useSidebar };
1290
- //# sourceMappingURL=chunk-5MQWJVM2.js.map
1291
- //# sourceMappingURL=chunk-5MQWJVM2.js.map
1257
+ export { Avatar, AvatarFallback, AvatarImage, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Icon, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, useIsMobile, useSidebar };
1258
+ //# sourceMappingURL=chunk-MNGNBEYN.js.map
1259
+ //# sourceMappingURL=chunk-MNGNBEYN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/dropdown-menu.tsx","../src/components/ui/avatar.tsx","../src/components/ui/breadcrumb.tsx","../src/components/ui/collapsible.tsx","../src/components/ui/icon.tsx","../src/components/ui/sheet.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/tooltip.tsx","../src/hooks/use-mobile.tsx","../src/components/ui/sidebar.tsx"],"names":["jsx","jsxs","CollapsibleTrigger","CollapsibleContent","React","open","Slot"],"mappings":";;;;;;;;;;;;;;;AAOA,SAAS,YAAA,CAAa;AAAA,EAClB,KAAA,GAAQ,KAAA;AAAA,EACR,GAAG;AACP,CAAA,EAA4D;AACxD,EAAA,uBACI,GAAA;AAAA,IAAuB,qBAAA,CAAA,IAAA;AAAA,IAAtB;AAAA,MACG,WAAA,EAAU,eAAA;AAAA,MACV,KAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,kBAAA,CAAmB;AAAA,EACxB,GAAG;AACP,CAAA,EAA8D;AAC1D,EAAA,uBACI,GAAA;AAAA,IAAuB,qBAAA,CAAA,MAAA;AAAA,IAAtB;AAAA,MACG,WAAA,EAAU,sBAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,mBAAA,CAAoB;AAAA,EACzB,GAAG;AACP,CAAA,EAA+D;AAC3D,EAAA,uBACI,GAAA;AAAA,IAAuB,qBAAA,CAAA,OAAA;AAAA,IAAtB;AAAA,MACG,WAAA,EAAU,uBAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,mBAAA,CAAoB;AAAA,EACzB,SAAA;AAAA,EACA,UAAA,GAAa,CAAA;AAAA,EACb,GAAG;AACP,CAAA,EAA+D;AAC3D,EAAA,uBACI,GAAA,CAAuB,8BAAtB,EACG,QAAA,kBAAA,GAAA;AAAA,IAAuB,qBAAA,CAAA,OAAA;AAAA,IAAtB;AAAA,MACG,WAAA,EAAU,uBAAA;AAAA,MACV,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACP,GAAG,WAAW,CAAA,yXAAA,CAAA;AAAA,QACd;AAAA,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR,EACJ,CAAA;AAER;AAEA,SAAS,iBAAA,CAAkB;AAAA,EACvB,GAAG;AACP,CAAA,EAA6D;AACzD,EAAA,uBACI,GAAA;AAAA,IAAuB,qBAAA,CAAA,KAAA;AAAA,IAAtB;AAAA,MACG,WAAA,EAAU,qBAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,gBAAA,CAAiB;AAAA,EACtB,SAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,GAAG;AACP,CAAA,EAGG;AACC,EAAA,uBACI,GAAA;AAAA,IAAuB,qBAAA,CAAA,IAAA;AAAA,IAAtB;AAAA,MACG,WAAA,EAAU,oBAAA;AAAA,MACV,YAAA,EAAY,KAAA;AAAA,MACZ,cAAA,EAAc,OAAA;AAAA,MACd,SAAA,EAAW,EAAA;AAAA,QACP,opBAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,wBAAA,CAAyB;AAAA,EAC9B,SAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG;AACP,CAAA,EAAoE;AAChE,EAAA,uBACI,IAAA;AAAA,IAAuB,qBAAA,CAAA,YAAA;AAAA,IAAtB;AAAA,MACG,WAAA,EAAU,6BAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACP,8SAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACA,OAAA;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+EAAA,EACZ,QAAA,kBAAA,GAAA,CAAuB,qBAAA,CAAA,aAAA,EAAtB,EACG,QAAA,kBAAA,GAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,QAAA,EAAS,CAAA,EAClC,CAAA,EACJ,CAAA;AAAA,QACC;AAAA;AAAA;AAAA,GACL;AAER;AAEA,SAAS,sBAAA,CAAuB;AAAA,EAC5B,GAAG;AACP,CAAA,EAAkE;AAC9D,EAAA,uBACI,GAAA;AAAA,IAAuB,qBAAA,CAAA,UAAA;AAAA,IAAtB;AAAA,MACG,WAAA,EAAU,2BAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,qBAAA,CAAsB;AAAA,EAC3B,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACP,CAAA,EAAiE;AAC7D,EAAA,uBACI,IAAA;AAAA,IAAuB,qBAAA,CAAA,SAAA;AAAA,IAAtB;AAAA,MACG,WAAA,EAAU,0BAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACP,8SAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+EAAA,EACZ,QAAA,kBAAA,GAAA,CAAuB,qBAAA,CAAA,aAAA,EAAtB,EACG,QAAA,kBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,qBAAA,EAAsB,CAAA,EAChD,CAAA,EACJ,CAAA;AAAA,QACC;AAAA;AAAA;AAAA,GACL;AAER;AAEA,SAAS,iBAAA,CAAkB;AAAA,EACvB,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACP,CAAA,EAEG;AACC,EAAA,uBACI,GAAA;AAAA,IAAuB,qBAAA,CAAA,KAAA;AAAA,IAAtB;AAAA,MACG,WAAA,EAAU,qBAAA;AAAA,MACV,YAAA,EAAY,KAAA;AAAA,MACZ,SAAA,EAAW,EAAA;AAAA,QACP,gGAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,qBAAA,CAAsB;AAAA,EAC3B,SAAA;AAAA,EACA,GAAG;AACP,CAAA,EAAiE;AAC7D,EAAA,uBACI,GAAA;AAAA,IAAuB,qBAAA,CAAA,SAAA;AAAA,IAAtB;AAAA,MACG,WAAA,EAAU,yBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,2BAAA,EAA6B,SAAS,CAAA;AAAA,MACnD,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,oBAAA,CAAqB;AAAA,EAC1B,SAAA;AAAA,EACA,GAAG;AACP,CAAA,EAAiC;AAC7B,EAAA,uBACI,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,wBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACP,uDAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,eAAA,CAAgB;AAAA,EACrB,GAAG;AACP,CAAA,EAA2D;AACvD,EAAA,2BAC2B,qBAAA,CAAA,GAAA,EAAtB,EAA0B,WAAA,EAAU,mBAAA,EAAqB,GAAG,KAAA,EAAO,CAAA;AAE5E;AAEA,SAAS,sBAAA,CAAuB;AAAA,EAC5B,SAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACP,CAAA,EAEG;AACC,EAAA,uBACI,IAAA;AAAA,IAAuB,qBAAA,CAAA,UAAA;AAAA,IAAtB;AAAA,MACG,WAAA,EAAU,2BAAA;AAAA,MACV,YAAA,EAAY,KAAA;AAAA,MACZ,SAAA,EAAW,EAAA;AAAA,QACP,iSAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBACD,GAAA,CAAC,gBAAA,EAAA,EAAiB,SAAA,EAAU,gBAAA,EAAiB;AAAA;AAAA;AAAA,GACjD;AAER;AAEA,SAAS,sBAAA,CAAuB;AAAA,EAC5B,SAAA;AAAA,EACA,GAAG;AACP,CAAA,EAAkE;AAC9D,EAAA,uBACI,GAAA;AAAA,IAAuB,qBAAA,CAAA,UAAA;AAAA,IAAtB;AAAA,MACG,WAAA,EAAU,2BAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACP,GAAG,WAAW,CAAA,yXAAA,CAAA;AAAA,QACd;AAAA,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR;AAER;ACvPA,SAAS,MAAA,CAAO;AAAA,EACZ,SAAA;AAAA,EACA,GAAG;AACP,CAAA,EAAsD;AAClD,EAAA,uBACIA,GAAAA;AAAA,IAAiB,eAAA,CAAA,IAAA;AAAA,IAAhB;AAAA,MACG,WAAA,EAAU,QAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACP,4DAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,WAAA,CAAY;AAAA,EACjB,SAAA;AAAA,EACA,GAAG;AACP,CAAA,EAAuD;AACnD,EAAA,uBACIA,GAAAA;AAAA,IAAiB,eAAA,CAAA,KAAA;AAAA,IAAhB;AAAA,MACG,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,yBAAA,EAA2B,SAAS,CAAA;AAAA,MACjD,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,cAAA,CAAe;AAAA,EACpB,SAAA;AAAA,EACA,GAAG;AACP,CAAA,EAA0D;AACtD,EAAA,uBACIA,GAAAA;AAAA,IAAiB,eAAA,CAAA,QAAA;AAAA,IAAhB;AAAA,MACG,WAAA,EAAU,iBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACP,kEAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR;AAER;AC1CA,SAAS,UAAA,CAAW,EAAE,GAAG,KAAA,EAAM,EAAgC;AAC3D,EAAA,uBAAOA,IAAC,KAAA,EAAA,EAAI,YAAA,EAAW,cAAa,WAAA,EAAU,YAAA,EAAc,GAAG,KAAA,EAAO,CAAA;AAC1E;AAEA,SAAS,cAAA,CAAe,EAAE,SAAA,EAAW,GAAG,OAAM,EAA+B;AACzE,EAAA,uBACIA,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,iBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACP,0FAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,cAAA,CAAe,EAAE,SAAA,EAAW,GAAG,OAAM,EAA+B;AACzE,EAAA,uBACIA,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,iBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,kCAAA,EAAoC,SAAS,CAAA;AAAA,MAC1D,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,cAAA,CAAe;AAAA,EACpB,OAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACP,CAAA,EAEG;AACC,EAAA,MAAM,IAAA,GAAO,UAAU,IAAA,GAAO,GAAA;AAE9B,EAAA,uBACIA,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,iBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,yCAAA,EAA2C,SAAS,CAAA;AAAA,MACjE,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,cAAA,CAAe,EAAE,SAAA,EAAW,GAAG,OAAM,EAAiC;AAC3E,EAAA,uBACIA,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,iBAAA;AAAA,MACV,IAAA,EAAK,MAAA;AAAA,MACL,eAAA,EAAc,MAAA;AAAA,MACd,cAAA,EAAa,MAAA;AAAA,MACb,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,MACvD,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,mBAAA,CAAoB;AAAA,EACzB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACP,CAAA,EAA+B;AAC3B,EAAA,uBACIA,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,sBAAA;AAAA,MACV,IAAA,EAAK,cAAA;AAAA,MACL,aAAA,EAAY,MAAA;AAAA,MACZ,SAAA,EAAW,EAAA,CAAG,kBAAA,EAAoB,SAAS,CAAA;AAAA,MAC1C,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA,QAAA,oBAAYA,GAAAA,CAAC,YAAA,EAAA,EAAa;AAAA;AAAA,GAC/B;AAER;AAEA,SAAS,kBAAA,CAAmB;AAAA,EACxB,SAAA;AAAA,EACA,GAAG;AACP,CAAA,EAAiC;AAC7B,EAAA,uBACIC,IAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,qBAAA;AAAA,MACV,IAAA,EAAK,cAAA;AAAA,MACL,aAAA,EAAY,MAAA;AAAA,MACZ,SAAA,EAAW,EAAA;AAAA,QACP,oDAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,QAAA,EAAS,CAAA;AAAA,wBACnCA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAU,QAAA,EAAA,MAAA,EAAI;AAAA;AAAA;AAAA,GAClC;AAER;ACnGA,SAAS,WAAA,CAAY;AAAA,EACjB,GAAG;AACP,CAAA,EAA2D;AACvD,EAAA,uBAAOA,GAAAA,CAAsB,oBAAA,CAAA,IAAA,EAArB,EAA0B,WAAA,EAAU,aAAA,EAAe,GAAG,KAAA,EAAO,CAAA;AACzE;AAEA,SAASE,mBAAAA,CAAmB;AAAA,EACxB,GAAG;AACP,CAAA,EAAyE;AACrE,EAAA,uBACIF,GAAAA;AAAA,IAAsB,oBAAA,CAAA,kBAAA;AAAA,IAArB;AAAA,MACG,WAAA,EAAU,qBAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAASG,mBAAAA,CAAmB;AAAA,EACxB,GAAG;AACP,CAAA,EAAyE;AACrE,EAAA,uBACIH,GAAAA;AAAA,IAAsB,oBAAA,CAAA,kBAAA;AAAA,IAArB;AAAA,MACG,WAAA,EAAU,qBAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACR;AAER;ACrBO,SAAS,IAAA,CAAK,EAAE,QAAA,EAAU,aAAA,EAAe,WAAU,EAAc;AACpE,EAAA,IAAI,CAAC,aAAA,EAAe;AAChB,IAAA,OAAO,IAAA;AAAA,EACX;AAEA,EAAA,uBAAOA,GAAAA,CAAC,aAAA,EAAA,EAAc,SAAA,EAAsB,CAAA;AAChD;ACNA,SAAS,KAAA,CAAM;AAAA,EACX,cAAA,GAAiB,KAAA;AAAA,EACjB,YAAA,EAAc,gBAAA;AAAA,EACd,GAAG;AACP,CAAA,EAEG;AACC,EAAA,MAAM,cAAA,GAAuBI,cAAO,CAAC,CAAA;AAErC,EAAA,MAAM,YAAA,GAAe,CAAC,IAAA,KAAkB;AACpC,IAAA,IAAI,cAAA,EAAgB;AAChB,MAAA,IAAI,IAAA,EAAM;AACN,QAAA,cAAA,CAAe,UAAU,MAAA,CAAO,OAAA;AAAA,MACpC,CAAA,MAAO;AACH,QAAA,UAAA,CAAW,MAAM;AACb,UAAA,MAAA,CAAO,QAAA,CAAS,CAAA,EAAG,cAAA,CAAe,OAAO,CAAA;AAAA,QAC7C,GAAG,CAAC,CAAA;AAAA,MACR;AAAA,IACJ;AAEA,IAAA,gBAAA,GAAmB,IAAI,CAAA;AAAA,EAC3B,CAAA;AAEA,EAAA,uBACIJ,GAAAA;AAAA,IAAgB,cAAA,CAAA,IAAA;AAAA,IAAf;AAAA,MACG,WAAA,EAAU,OAAA;AAAA,MACT,GAAG,KAAA;AAAA,MACJ;AAAA;AAAA,GACJ;AAER;AAEA,SAAS,YAAA,CAAa;AAAA,EAClB,GAAG;AACP,CAAA,EAAwD;AACpD,EAAA,uBAAOA,GAAAA,CAAgB,cAAA,CAAA,OAAA,EAAf,EAAuB,WAAA,EAAU,eAAA,EAAiB,GAAG,KAAA,EAAO,CAAA;AACxE;AAEA,SAAS,UAAA,CAAW;AAAA,EAChB,GAAG;AACP,CAAA,EAAsD;AAClD,EAAA,uBAAOA,GAAAA,CAAgB,cAAA,CAAA,KAAA,EAAf,EAAqB,WAAA,EAAU,aAAA,EAAe,GAAG,KAAA,EAAO,CAAA;AACpE;AAEA,SAAS,WAAA,CAAY;AAAA,EACjB,GAAG;AACP,CAAA,EAAuD;AACnD,EAAA,uBAAOA,GAAAA,CAAgB,cAAA,CAAA,MAAA,EAAf,EAAsB,WAAA,EAAU,cAAA,EAAgB,GAAG,KAAA,EAAO,CAAA;AACtE;AAEA,SAAS,YAAA,CAAa;AAAA,EAClB,SAAA;AAAA,EACA,GAAG;AACP,CAAA,EAAwD;AACpD,EAAA,uBACIA,GAAAA;AAAA,IAAgB,cAAA,CAAA,OAAA;AAAA,IAAf;AAAA,MACG,WAAA,EAAU,eAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACP,yKAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,YAAA,CAAa;AAAA,EAClB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA,GAAO,OAAA;AAAA,EACP,GAAG;AACP,CAAA,EAEG;AACC,EAAA,uBACIC,KAAC,WAAA,EAAA,EACG,QAAA,EAAA;AAAA,oBAAAD,IAAC,YAAA,EAAA,EAAa,CAAA;AAAA,oBACdC,IAAAA;AAAA,MAAgB,cAAA,CAAA,OAAA;AAAA,MAAf;AAAA,QACG,WAAA,EAAU,eAAA;AAAA,QACV,SAAA,EAAW,EAAA;AAAA,UACP,GAAG,eAAe,CAAA,mLAAA,CAAA;AAAA,UAClB,SAAS,OAAA,IACL,8JAAA;AAAA,UACJ,SAAS,MAAA,IACL,2JAAA;AAAA,UACJ,SAAS,KAAA,IACL,sIAAA;AAAA,UACJ,SAAS,QAAA,IACL,+IAAA;AAAA,UACJ;AAAA,SACJ;AAAA,QACC,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,0BACDA,IAAAA;AAAA,YAAgB,cAAA,CAAA,KAAA;AAAA,YAAf;AAAA,cACG,SAAA,EAAW,EAAA;AAAA,gBACP,gOAAA;AAAA,gBACA;AAAA,eACJ;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAAD,GAAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,QAAA,EAAS,CAAA;AAAA,gCAC1BA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAU,QAAA,EAAA,OAAA,EAAK;AAAA;AAAA;AAAA;AACnC;AAAA;AAAA;AACJ,GAAA,EACJ,CAAA;AAER;AAEA,SAAS,WAAA,CAAY,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACvE,EAAA,uBACIA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,2BAAA,EAA6B,SAAS,CAAA;AAAA,MACnD,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,WAAA,CAAY,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACvE,EAAA,uBACIA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,iCAAA,EAAmC,SAAS,CAAA;AAAA,MACzD,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,UAAA,CAAW;AAAA,EAChB,SAAA;AAAA,EACA,GAAG;AACP,CAAA,EAAsD;AAClD,EAAA,uBACIA,GAAAA;AAAA,IAAgB,cAAA,CAAA,KAAA;AAAA,IAAf;AAAA,MACG,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,MACvD,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,gBAAA,CAAiB;AAAA,EACtB,SAAA;AAAA,EACA,GAAG;AACP,CAAA,EAA4D;AACxD,EAAA,uBACIA,GAAAA;AAAA,IAAgB,cAAA,CAAA,WAAA;AAAA,IAAf;AAAA,MACG,WAAA,EAAU,mBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,MACvD,GAAG;AAAA;AAAA,GACR;AAER;AC7JA,SAAS,QAAA,CAAS,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACpE,EAAA,uBACIA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,UAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,mCAAA,EAAqC,SAAS,CAAA;AAAA,MAC3D,GAAG;AAAA;AAAA,GACR;AAER;ACLA,SAAS,eAAA,CAAgB;AAAA,EACrB,aAAA,GAAgB,CAAA;AAAA,EAChB,GAAG;AACP,CAAA,EAA2D;AACvD,EAAA,uBACIA,GAAAA;AAAA,IAAkB,gBAAA,CAAA,QAAA;AAAA,IAAjB;AAAA,MACG,WAAA,EAAU,kBAAA;AAAA,MACV,aAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,OAAA,CAAQ;AAAA,EACb,GAAG;AACP,CAAA,EAAuD;AACnD,EAAA,uBACIA,GAAAA,CAAC,eAAA,EAAA,EACG,QAAA,kBAAAA,GAAAA,CAAkB,gBAAA,CAAA,IAAA,EAAjB,EAAsB,WAAA,EAAU,SAAA,EAAW,GAAG,KAAA,EAAO,CAAA,EAC1D,CAAA;AAER;AAEA,SAAS,cAAA,CAAe;AAAA,EACpB,GAAG;AACP,CAAA,EAA0D;AACtD,EAAA,uBAAOA,GAAAA,CAAkB,gBAAA,CAAA,OAAA,EAAjB,EAAyB,WAAA,EAAU,iBAAA,EAAmB,GAAG,KAAA,EAAO,CAAA;AAC5E;AAEA,SAAS,cAAA,CAAe;AAAA,EACpB,SAAA;AAAA,EACA,UAAA,GAAa,CAAA;AAAA,EACb,QAAA;AAAA,EACA,GAAG;AACP,CAAA,EAA0D;AACtD,EAAA,uBACIA,GAAAA,CAAkB,gBAAA,CAAA,MAAA,EAAjB,EACG,QAAA,kBAAAC,IAAAA;AAAA,IAAkB,gBAAA,CAAA,OAAA;AAAA,IAAjB;AAAA,MACG,WAAA,EAAU,iBAAA;AAAA,MACV,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACP,uXAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBACDD,GAAAA,CAAkB,gBAAA,CAAA,KAAA,EAAjB,EAAuB,WAAU,8FAAA,EAA+F;AAAA;AAAA;AAAA,GACrI,EACJ,CAAA;AAER;ACtDA,IAAM,iBAAA,GAAoB,GAAA;AAEnB,SAAS,WAAA,GAAc;AAC1B,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,QAAA,EAAkB;AAElD,EAAA,SAAA,CAAU,MAAM;AACZ,IAAA,MAAM,MAAM,MAAA,CAAO,UAAA;AAAA,MACf,CAAA,YAAA,EAAe,oBAAoB,CAAC,CAAA,GAAA;AAAA,KACxC;AAEA,IAAA,MAAM,WAAW,MAAM;AACnB,MAAA,WAAA,CAAY,MAAA,CAAO,aAAa,iBAAiB,CAAA;AAAA,IACrD,CAAA;AAEA,IAAA,GAAA,CAAI,gBAAA,CAAiB,UAAU,QAAQ,CAAA;AACvC,IAAA,WAAA,CAAY,MAAA,CAAO,aAAa,iBAAiB,CAAA;AAEjD,IAAA,OAAO,MAAM,GAAA,CAAI,mBAAA,CAAoB,QAAA,EAAU,QAAQ,CAAA;AAAA,EAC3D,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,CAAC,CAAC,QAAA;AACb;ACEA,IAAM,mBAAA,GAAsB,eAAA;AAC5B,IAAM,sBAAA,GAAyB,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,CAAA;AAC9C,IAAM,aAAA,GAAgB,OAAA;AACtB,IAAM,oBAAA,GAAuB,OAAA;AAC7B,IAAM,kBAAA,GAAqB,MAAA;AAC3B,IAAM,yBAAA,GAA4B,GAAA;AAYlC,IAAM,cAAA,GAAuB,qBAAqC,IAAI,CAAA;AAEtE,SAAS,UAAA,GAAa;AAClB,EAAA,MAAM,OAAA,GAAgB,kBAAW,cAAc,CAAA;AAC/C,EAAA,IAAI,CAAC,OAAA,EAAS;AACV,IAAA,MAAM,IAAI,MAAM,mDAAmD,CAAA;AAAA,EACvE;AAEA,EAAA,OAAO,OAAA;AACX;AAEA,SAAS,eAAA,CAAgB;AAAA,EACrB,WAAA,GAAc,IAAA;AAAA,EACd,IAAA,EAAM,QAAA;AAAA,EACN,YAAA,EAAc,WAAA;AAAA,EACd,SAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACP,CAAA,EAIG;AACC,EAAA,MAAM,WAAW,WAAA,EAAY;AAC7B,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAU,gBAAS,KAAK,CAAA;AAIxD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAU,gBAAS,WAAW,CAAA;AACpD,EAAA,MAAM,OAAO,QAAA,IAAY,KAAA;AACzB,EAAA,MAAM,OAAA,GAAgB,MAAA,CAAA,WAAA;AAAA,IAClB,CAAC,KAAA,KAAmD;AAChD,MAAA,MAAM,YAAY,OAAO,KAAA,KAAU,UAAA,GAAa,KAAA,CAAM,IAAI,CAAA,GAAI,KAAA;AAC9D,MAAA,IAAI,WAAA,EAAa;AACb,QAAA,WAAA,CAAY,SAAS,CAAA;AAAA,MACzB,CAAA,MAAO;AACH,QAAA,QAAA,CAAS,SAAS,CAAA;AAAA,MACtB;AAGA,MAAA,QAAA,CAAS,SAAS,CAAA,EAAG,mBAAmB,CAAA,CAAA,EAAI,SAAS,qBAAqB,sBAAsB,CAAA,CAAA;AAAA,IACpG,CAAA;AAAA,IACA,CAAC,aAAa,IAAI;AAAA,GACtB;AAGA,EAAA,MAAM,aAAA,GAAsB,mBAAY,MAAM;AAC1C,IAAA,OAAO,QAAA,GACD,aAAA,CAAc,CAACK,KAAAA,KAAS,CAACA,KAAI,CAAA,GAC7B,OAAA,CAAQ,CAACA,KAAAA,KAAS,CAACA,KAAI,CAAA;AAAA,EACjC,CAAA,EAAG,CAAC,QAAA,EAAU,OAAA,EAAS,aAAa,CAAC,CAAA;AAGrC,EAAM,iBAAU,MAAM;AAClB,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyB;AAC5C,MAAA,IACI,MAAM,GAAA,KAAQ,yBAAA,KACb,KAAA,CAAM,OAAA,IAAW,MAAM,OAAA,CAAA,EAC1B;AACE,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,aAAA,EAAc;AAAA,MAClB;AAAA,IACJ,CAAA;AAEA,IAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAChD,IAAA,OAAO,MAAM,MAAA,CAAO,mBAAA,CAAoB,SAAA,EAAW,aAAa,CAAA;AAAA,EACpE,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AAIlB,EAAA,MAAM,KAAA,GAAQ,OAAO,UAAA,GAAa,WAAA;AAElC,EAAA,MAAM,YAAA,GAAqB,MAAA,CAAA,OAAA;AAAA,IACvB,OAAO;AAAA,MACH,KAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,UAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA,KACJ,CAAA;AAAA,IACA;AAAA,MACI,KAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,UAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA;AACJ,GACJ;AAEA,EAAA,uBACIL,GAAAA,CAAC,cAAA,CAAe,QAAA,EAAf,EAAwB,KAAA,EAAO,YAAA,EAC5B,QAAA,kBAAAA,GAAAA,CAAC,eAAA,EAAA,EAAgB,aAAA,EAAe,CAAA,EAC5B,QAAA,kBAAAA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,iBAAA;AAAA,MACV,KAAA,EACI;AAAA,QACI,iBAAA,EAAmB,aAAA;AAAA,QACnB,sBAAA,EAAwB,kBAAA;AAAA,QACxB,GAAG;AAAA,OACP;AAAA,MAEJ,SAAA,EAAW,EAAA;AAAA,QACP,iFAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,KAET,CAAA,EACJ,CAAA;AAER;AAEA,SAAS,OAAA,CAAQ;AAAA,EACb,IAAA,GAAO,MAAA;AAAA,EACP,OAAA,GAAU,SAAA;AAAA,EACV,WAAA,GAAc,WAAA;AAAA,EACd,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACP,CAAA,EAIG;AACC,EAAA,MAAM,EAAE,QAAA,EAAU,KAAA,EAAO,UAAA,EAAY,aAAA,KAAkB,UAAA,EAAW;AAElE,EAAA,IAAI,gBAAgB,MAAA,EAAQ;AACxB,IAAA,uBACIA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACG,WAAA,EAAU,SAAA;AAAA,QACV,SAAA,EAAW,EAAA;AAAA,UACP,6EAAA;AAAA,UACA;AAAA,SACJ;AAAA,QACC,GAAG,KAAA;AAAA,QAEH;AAAA;AAAA,KACL;AAAA,EAER;AAEA,EAAA,IAAI,QAAA,EAAU;AACV,IAAA,uBACIC,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACG,IAAA,EAAM,UAAA;AAAA,QACN,YAAA,EAAc,aAAA;AAAA,QACb,GAAG,KAAA;AAAA,QACJ,cAAA,EAAc,IAAA;AAAA,QAEd,QAAA,EAAA;AAAA,0BAAAA,IAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,SAAA,EACnB,QAAA,EAAA;AAAA,4BAAAD,GAAAA,CAAC,cAAW,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,4BACnBA,GAAAA,CAAC,gBAAA,EAAA,EAAiB,QAAA,EAAA,8BAAA,EAElB;AAAA,WAAA,EACJ,CAAA;AAAA,0BACAA,GAAAA;AAAA,YAAC,YAAA;AAAA,YAAA;AAAA,cACG,cAAA,EAAa,SAAA;AAAA,cACb,WAAA,EAAU,SAAA;AAAA,cACV,aAAA,EAAY,MAAA;AAAA,cACZ,SAAA,EAAU,8EAAA;AAAA,cACV,KAAA,EACI;AAAA,gBACI,iBAAA,EAAmB;AAAA,eACvB;AAAA,cAEJ,IAAA;AAAA,cAEA,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+BACV,QAAA,EACL;AAAA;AAAA;AACJ;AAAA;AAAA,KACJ;AAAA,EAER;AAEA,EAAA,uBACIC,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACG,SAAA,EAAU,oDAAA;AAAA,MACV,YAAA,EAAY,KAAA;AAAA,MACZ,kBAAA,EAAkB,KAAA,KAAU,WAAA,GAAc,WAAA,GAAc,EAAA;AAAA,MACxD,cAAA,EAAc,OAAA;AAAA,MACd,WAAA,EAAW,IAAA;AAAA,MACX,WAAA,EAAU,SAAA;AAAA,MAGV,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACG,SAAA,EAAW,EAAA;AAAA,cACP,+FAAA;AAAA,cACA,wCAAA;AAAA,cACA,oCAAA;AAAA,cACA,OAAA,KAAY,UAAA,IAAc,OAAA,KAAY,OAAA,GAChC,kFAAA,GACA;AAAA;AACV;AAAA,SACJ;AAAA,wBACAA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACG,SAAA,EAAW,EAAA;AAAA,cACP,sHAAA;AAAA,cACA,IAAA,KAAS,SACH,gFAAA,GACA,kFAAA;AAAA;AAAA,cAEN,OAAA,KAAY,UAAA,IAAc,OAAA,KAAY,OAAA,GAChC,0FAAA,GACA,yHAAA;AAAA,cACN;AAAA,aACJ;AAAA,YACC,GAAG,KAAA;AAAA,YAEJ,QAAA,kBAAAA,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACG,cAAA,EAAa,SAAA;AAAA,gBACb,SAAA,EAAU,mNAAA;AAAA,gBAET;AAAA;AAAA;AACL;AAAA;AACJ;AAAA;AAAA,GACJ;AAER;AAEA,SAAS,cAAA,CAAe;AAAA,EACpB,SAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG;AACP,CAAA,EAAwC;AACpC,EAAA,MAAM,EAAE,aAAA,EAAc,GAAI,UAAA,EAAW;AAErC,EAAA,uBACIC,IAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACG,cAAA,EAAa,SAAA;AAAA,MACb,WAAA,EAAU,iBAAA;AAAA,MACV,OAAA,EAAQ,OAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,SAAA,EAAW,EAAA,CAAG,SAAA,EAAW,SAAS,CAAA;AAAA,MAClC,OAAA,EAAS,CAAC,KAAA,KAAU;AAChB,QAAA,OAAA,GAAU,KAAK,CAAA;AACf,QAAA,aAAA,EAAc;AAAA,MAClB,CAAA;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAD,IAAC,aAAA,EAAA,EAAc,CAAA;AAAA,wBACfA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAU,QAAA,EAAA,gBAAA,EAAc;AAAA;AAAA;AAAA,GAC5C;AAER;AAEA,SAAS,WAAA,CAAY,EAAE,SAAA,EAAW,GAAG,OAAM,EAAmC;AAC1E,EAAA,MAAM,EAAE,aAAA,EAAc,GAAI,UAAA,EAAW;AAErC,EAAA,uBACIA,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACG,cAAA,EAAa,MAAA;AAAA,MACb,WAAA,EAAU,cAAA;AAAA,MACV,YAAA,EAAW,gBAAA;AAAA,MACX,QAAA,EAAU,EAAA;AAAA,MACV,OAAA,EAAS,aAAA;AAAA,MACT,KAAA,EAAM,gBAAA;AAAA,MACN,SAAA,EAAW,EAAA;AAAA,QACP,iPAAA;AAAA,QACA,0EAAA;AAAA,QACA,wHAAA;AAAA,QACA,yJAAA;AAAA,QACA,2DAAA;AAAA,QACA,2DAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,YAAA,CAAa,EAAE,SAAA,EAAW,GAAG,OAAM,EAAiC;AACzE,EAAA,uBACIA,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,eAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACP,kEAAA;AAAA,QACA,+QAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,YAAA,CAAa;AAAA,EAClB,SAAA;AAAA,EACA,GAAG;AACP,CAAA,EAAuC;AACnC,EAAA,uBACIA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,eAAA;AAAA,MACV,cAAA,EAAa,OAAA;AAAA,MACb,SAAA,EAAW,EAAA,CAAG,uCAAA,EAAyC,SAAS,CAAA;AAAA,MAC/D,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,aAAA,CAAc,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACzE,EAAA,uBACIA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,gBAAA;AAAA,MACV,cAAA,EAAa,QAAA;AAAA,MACb,SAAA,EAAW,EAAA,CAAG,yBAAA,EAA2B,SAAS,CAAA;AAAA,MACjD,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,aAAA,CAAc,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACzE,EAAA,uBACIA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,gBAAA;AAAA,MACV,cAAA,EAAa,QAAA;AAAA,MACb,SAAA,EAAW,EAAA,CAAG,yBAAA,EAA2B,SAAS,CAAA;AAAA,MACjD,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,gBAAA,CAAiB;AAAA,EACtB,SAAA;AAAA,EACA,GAAG;AACP,CAAA,EAA2C;AACvC,EAAA,uBACIA,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,mBAAA;AAAA,MACV,cAAA,EAAa,WAAA;AAAA,MACb,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,MACvD,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,cAAA,CAAe,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AAC1E,EAAA,uBACIA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,iBAAA;AAAA,MACV,cAAA,EAAa,SAAA;AAAA,MACb,SAAA,EAAW,EAAA;AAAA,QACP,gGAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,YAAA,CAAa,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACxE,EAAA,uBACIA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,eAAA;AAAA,MACV,cAAA,EAAa,OAAA;AAAA,MACb,SAAA,EAAW,EAAA;AAAA,QACP,2CAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,iBAAA,CAAkB;AAAA,EACvB,SAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,GAAG;AACP,CAAA,EAAwD;AACpD,EAAA,MAAM,IAAA,GAAO,UAAUM,IAAAA,GAAO,KAAA;AAE9B,EAAA,uBACIN,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,qBAAA;AAAA,MACV,cAAA,EAAa,aAAA;AAAA,MACb,SAAA,EAAW,EAAA;AAAA,QACP,kSAAA;AAAA,QACA,yKAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,kBAAA,CAAmB;AAAA,EACxB,SAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,GAAG;AACP,CAAA,EAA2D;AACvD,EAAA,MAAM,IAAA,GAAO,UAAUM,IAAAA,GAAO,QAAA;AAE9B,EAAA,uBACIN,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,sBAAA;AAAA,MACV,cAAA,EAAa,cAAA;AAAA,MACb,SAAA,EAAW,EAAA;AAAA,QACP,2TAAA;AAAA;AAAA,QAEA,+CAAA;AAAA,QACA,sCAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,mBAAA,CAAoB;AAAA,EACzB,SAAA;AAAA,EACA,GAAG;AACP,CAAA,EAAgC;AAC5B,EAAA,uBACIA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,uBAAA;AAAA,MACV,cAAA,EAAa,eAAA;AAAA,MACb,SAAA,EAAW,EAAA,CAAG,gBAAA,EAAkB,SAAS,CAAA;AAAA,MACxC,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,WAAA,CAAY,EAAE,SAAA,EAAW,GAAG,OAAM,EAA+B;AACtE,EAAA,uBACIA,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,cAAA;AAAA,MACV,cAAA,EAAa,MAAA;AAAA,MACb,SAAA,EAAW,EAAA,CAAG,oCAAA,EAAsC,SAAS,CAAA;AAAA,MAC5D,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,eAAA,CAAgB,EAAE,SAAA,EAAW,GAAG,OAAM,EAA+B;AAC1E,EAAA,uBACIA,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,mBAAA;AAAA,MACV,cAAA,EAAa,WAAA;AAAA,MACb,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,SAAS,CAAA;AAAA,MAClD,GAAG;AAAA;AAAA,GACR;AAER;AAEA,IAAM,yBAAA,GAA4B,GAAA;AAAA,EAC9B,8pBAAA;AAAA,EACA;AAAA,IACI,QAAA,EAAU;AAAA,MACN,OAAA,EAAS;AAAA,QACL,OAAA,EACI,8DAAA;AAAA,QACJ,OAAA,EACI;AAAA,OACR;AAAA,MACA,IAAA,EAAM;AAAA,QACF,OAAA,EAAS,cAAA;AAAA,QACT,EAAA,EAAI,aAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACR,KACJ;AAAA,IACA,eAAA,EAAiB;AAAA,MACb,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACV;AAER,CAAA;AAEA,SAAS,iBAAA,CAAkB;AAAA,EACvB,OAAA,GAAU,KAAA;AAAA,EACV,QAAA,GAAW,KAAA;AAAA,EACX,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,SAAA;AAAA,EACP,OAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACP,CAAA,EAIoD;AAChD,EAAA,MAAM,IAAA,GAAO,UAAUM,IAAAA,GAAO,QAAA;AAC9B,EAAA,MAAM,EAAE,QAAA,EAAU,KAAA,EAAM,GAAI,UAAA,EAAW;AAEvC,EAAA,MAAM,yBACFN,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,qBAAA;AAAA,MACV,cAAA,EAAa,aAAA;AAAA,MACb,WAAA,EAAW,IAAA;AAAA,MACX,aAAA,EAAa,QAAA;AAAA,MACb,SAAA,EAAW,EAAA;AAAA,QACP,yBAAA,CAA0B,EAAE,OAAA,EAAS,IAAA,EAAM,CAAA;AAAA,QAC3C;AAAA,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR;AAGJ,EAAA,IAAI,CAAC,OAAA,EAAS;AACV,IAAA,OAAO,MAAA;AAAA,EACX;AAEA,EAAA,IAAI,OAAO,YAAY,QAAA,EAAU;AAC7B,IAAA,OAAA,GAAU;AAAA,MACN,QAAA,EAAU;AAAA,KACd;AAAA,EACJ;AAEA,EAAA,uBACIC,KAAC,OAAA,EAAA,EACG,QAAA,EAAA;AAAA,oBAAAD,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EAAE,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,oBAChCA,GAAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACG,IAAA,EAAK,OAAA;AAAA,QACL,KAAA,EAAM,QAAA;AAAA,QACN,MAAA,EAAQ,UAAU,WAAA,IAAe,QAAA;AAAA,QAChC,GAAG;AAAA;AAAA;AACR,GAAA,EACJ,CAAA;AAER;AAEA,SAAS,iBAAA,CAAkB;AAAA,EACvB,SAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,WAAA,GAAc,KAAA;AAAA,EACd,GAAG;AACP,CAAA,EAGG;AACC,EAAA,MAAM,IAAA,GAAO,UAAUM,IAAAA,GAAO,QAAA;AAE9B,EAAA,uBACIN,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,qBAAA;AAAA,MACV,cAAA,EAAa,aAAA;AAAA,MACb,SAAA,EAAW,EAAA;AAAA,QACP,iXAAA;AAAA;AAAA,QAEA,+CAAA;AAAA,QACA,uCAAA;AAAA,QACA,8CAAA;AAAA,QACA,yCAAA;AAAA,QACA,sCAAA;AAAA,QACA,WAAA,IACI,0LAAA;AAAA,QACJ;AAAA,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,gBAAA,CAAiB;AAAA,EACtB,SAAA;AAAA,EACA,GAAG;AACP,CAAA,EAAgC;AAC5B,EAAA,uBACIA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,oBAAA;AAAA,MACV,cAAA,EAAa,YAAA;AAAA,MACb,SAAA,EAAW,EAAA;AAAA,QACP,wKAAA;AAAA,QACA,0HAAA;AAAA,QACA,uCAAA;AAAA,QACA,8CAAA;AAAA,QACA,yCAAA;AAAA,QACA,sCAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,mBAAA,CAAoB;AAAA,EACzB,SAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,GAAG;AACP,CAAA,EAEG;AAEC,EAAA,MAAM,KAAA,GAAc,eAAQ,MAAM;AAC9B,IAAA,OAAO,CAAA,EAAG,KAAK,KAAA,CAAM,IAAA,CAAK,QAAO,GAAI,EAAE,IAAI,EAAE,CAAA,CAAA,CAAA;AAAA,EACjD,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,uBACIC,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,uBAAA;AAAA,MACV,cAAA,EAAa,eAAA;AAAA,MACb,SAAA,EAAW,EAAA;AAAA,QACP,6CAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA,oBACGD,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACG,SAAA,EAAU,mBAAA;AAAA,YACV,cAAA,EAAa;AAAA;AAAA,SACjB;AAAA,wBAEJA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACG,SAAA,EAAU,qCAAA;AAAA,YACV,cAAA,EAAa,oBAAA;AAAA,YACb,KAAA,EACI;AAAA,cACI,kBAAA,EAAoB;AAAA;AACxB;AAAA;AAER;AAAA;AAAA,GACJ;AAER;AAEA,SAAS,cAAA,CAAe,EAAE,SAAA,EAAW,GAAG,OAAM,EAA+B;AACzE,EAAA,uBACIA,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,kBAAA;AAAA,MACV,cAAA,EAAa,UAAA;AAAA,MACb,SAAA,EAAW,EAAA;AAAA,QACP,gGAAA;AAAA,QACA,sCAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,kBAAA,CAAmB;AAAA,EACxB,SAAA;AAAA,EACA,GAAG;AACP,CAAA,EAA+B;AAC3B,EAAA,uBACIA,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,uBAAA;AAAA,MACV,cAAA,EAAa,eAAA;AAAA,MACb,SAAA,EAAW,EAAA,CAAG,8BAAA,EAAgC,SAAS,CAAA;AAAA,MACtD,GAAG;AAAA;AAAA,GACR;AAER;AAEA,SAAS,oBAAA,CAAqB;AAAA,EAC1B,OAAA,GAAU,KAAA;AAAA,EACV,IAAA,GAAO,IAAA;AAAA,EACP,QAAA,GAAW,KAAA;AAAA,EACX,SAAA;AAAA,EACA,GAAG;AACP,CAAA,EAIG;AACC,EAAA,MAAM,IAAA,GAAO,UAAUM,IAAAA,GAAO,GAAA;AAE9B,EAAA,uBACIN,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACG,WAAA,EAAU,yBAAA;AAAA,MACV,cAAA,EAAa,iBAAA;AAAA,MACb,WAAA,EAAW,IAAA;AAAA,MACX,aAAA,EAAa,QAAA;AAAA,MACb,SAAA,EAAW,EAAA;AAAA,QACP,kdAAA;AAAA,QACA,mGAAA;AAAA,QACA,SAAS,IAAA,IAAQ,aAAA;AAAA,QACjB,SAAS,IAAA,IAAQ,aAAA;AAAA,QACjB,sCAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR;AAER","file":"chunk-MNGNBEYN.js","sourcesContent":["import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { menuSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\n\nfunction DropdownMenu({\n modal = false,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return (\n <DropdownMenuPrimitive.Root\n data-slot=\"dropdown-menu\"\n modal={modal}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal\n data-slot=\"dropdown-menu-portal\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n `${menuSurface} 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 p-1.5 z-50 min-w-[8rem] overflow-hidden`,\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n );\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group\n data-slot=\"dropdown-menu-group\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = 'default',\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: 'default' | 'destructive';\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"font-medium gap-2 rounded-xl px-2 py-2 text-sm data-[inset]:pl-8 [&_svg:not([class*='size-'])]:size-5 focus:font-semibold relative flex cursor-default items-center outline-hidden transition-all select-none focus:bg-primary/10 focus:text-primary data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:!text-destructive\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"gap-2 py-1.5 pr-2 pl-8 text-sm [&_svg:not([class*='size-'])]:size-4 rounded-xl relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"left-2 size-3.5 pointer-events-none absolute flex items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"gap-2 py-1.5 pr-2 pl-8 text-sm [&_svg:not([class*='size-'])]:size-4 rounded-xl relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n <span className=\"left-2 size-3.5 pointer-events-none absolute flex items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n );\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n 'px-2 py-2 text-xs font-medium tracking-wider data-[inset]:pl-8 text-muted-foreground uppercase',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn('-mx-1 my-1 h-px bg-border', className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n 'text-xs tracking-widest ml-auto text-muted-foreground',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return (\n <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n );\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n 'font-medium rounded-xl px-2 py-2 text-sm data-[inset]:pl-8 focus:font-semibold data-[state=open]:font-semibold flex cursor-default items-center outline-hidden transition-all select-none focus:bg-primary/10 focus:text-primary data-[state=open]:bg-primary/10 data-[state=open]:text-primary',\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"size-4 ml-auto\" />\n </DropdownMenuPrimitive.SubTrigger>\n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n `${menuSurface} 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 p-1.5 z-50 min-w-[8rem] overflow-hidden`,\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n};\n","import * as AvatarPrimitive from '@radix-ui/react-avatar';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nfunction Avatar({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n className={cn(\n 'size-8 relative flex shrink-0 overflow-hidden rounded-full',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn('aspect-square size-full', className)}\n {...props}\n />\n );\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n 'flex size-full items-center justify-center rounded-full bg-muted',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Avatar, AvatarFallback, AvatarImage };\n","import { Slot } from '@radix-ui/react-slot';\nimport { ChevronRight, MoreHorizontal } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nfunction Breadcrumb({ ...props }: React.ComponentProps<'nav'>) {\n return <nav aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" {...props} />;\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<'ol'>) {\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n 'gap-1.5 text-sm sm:gap-2.5 flex flex-wrap items-center break-words text-muted-foreground',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn('gap-1.5 inline-flex items-center', className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbLink({\n asChild,\n className,\n ...props\n}: React.ComponentProps<'a'> & {\n asChild?: boolean;\n}) {\n const Comp = asChild ? Slot : 'a';\n\n return (\n <Comp\n data-slot=\"breadcrumb-link\"\n className={cn('transition-colors hover:text-foreground', className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn('font-semibold text-foreground', className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn('[&>svg]:size-3.5', className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n );\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\n 'size-9 rounded-xl flex items-center justify-center',\n className,\n )}\n {...props}\n >\n <MoreHorizontal className=\"size-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n );\n}\n\nexport {\n Breadcrumb,\n BreadcrumbEllipsis,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n};\n","import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';\n\nfunction Collapsible({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />;\n}\n\nfunction CollapsibleTrigger({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\n return (\n <CollapsiblePrimitive.CollapsibleTrigger\n data-slot=\"collapsible-trigger\"\n {...props}\n />\n );\n}\n\nfunction CollapsibleContent({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\n return (\n <CollapsiblePrimitive.CollapsibleContent\n data-slot=\"collapsible-content\"\n {...props}\n />\n );\n}\n\nexport { Collapsible, CollapsibleContent, CollapsibleTrigger };\n","import type { IconComponent } from '@/types';\n\ninterface IconProps {\n iconNode?: IconComponent | null;\n className?: string;\n}\n\nexport function Icon({ iconNode: IconComponent, className }: IconProps) {\n if (!IconComponent) {\n return null;\n }\n\n return <IconComponent className={className} />;\n}\n","import * as SheetPrimitive from '@radix-ui/react-dialog';\nimport { XIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { floatingSurface, focusRing } from '@/lib/language';\nimport { cn } from '@/lib/utils';\n\nfunction Sheet({\n preserveScroll = false,\n onOpenChange: onOpenChangeProp,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Root> & {\n preserveScroll?: boolean;\n}) {\n const scrollPosition = React.useRef(0);\n\n const onOpenChange = (open: boolean) => {\n if (preserveScroll) {\n if (open) {\n scrollPosition.current = window.scrollY;\n } else {\n setTimeout(() => {\n window.scrollTo(0, scrollPosition.current);\n }, 0);\n }\n }\n\n onOpenChangeProp?.(open);\n };\n\n return (\n <SheetPrimitive.Root\n data-slot=\"sheet\"\n {...props}\n onOpenChange={onOpenChange}\n />\n );\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />;\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 inset-0 bg-black/60 backdrop-blur-sm fixed z-50',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SheetContent({\n className,\n children,\n side = 'right',\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: 'top' | 'right' | 'bottom' | 'left';\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n `${floatingSurface} data-[state=open]:animate-in data-[state=closed]:animate-out gap-4 ease-in-out fixed z-50 flex flex-col transition data-[state=closed]:duration-300 data-[state=open]:duration-500`,\n side === 'right' &&\n 'data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 sm:max-w-sm rounded-l-3xl h-full w-3/4 border-l border-border',\n side === 'left' &&\n 'data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 sm:max-w-sm rounded-r-3xl h-full w-3/4 border-r border-border',\n side === 'top' &&\n 'data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 rounded-b-3xl h-auto border-b border-border',\n side === 'bottom' &&\n 'data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 rounded-t-3xl h-auto border-t border-border',\n className,\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.Close\n className={cn(\n 'top-4 right-4 size-9 shadow-xs absolute flex items-center justify-center rounded-full border border-border bg-muted text-muted-foreground transition-colors hover:bg-accent hover:text-foreground disabled:pointer-events-none',\n focusRing,\n )}\n >\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn('gap-1.5 p-4 flex flex-col', className)}\n {...props}\n />\n );\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn('gap-2 p-4 mt-auto flex flex-col', className)}\n {...props}\n />\n );\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn('font-semibold text-foreground', className)}\n {...props}\n />\n );\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n );\n}\n\nexport {\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetFooter,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n};\n","import { cn } from '@/lib/utils';\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn('animate-pulse rounded-xl bg-muted', className)}\n {...props}\n />\n );\n}\n\nexport { Skeleton };\n","import * as TooltipPrimitive from '@radix-ui/react-tooltip';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n );\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n );\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 4,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n 'animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-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 max-w-sm px-3 py-1.5 text-xs shadow-2xl rounded-xl z-50 bg-primary text-primary-foreground',\n className,\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"size-2.5 z-50 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-primary fill-primary\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };\n","import { useEffect, useState } from 'react';\n\nconst MOBILE_BREAKPOINT = 768;\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = useState<boolean>();\n\n useEffect(() => {\n const mql = window.matchMedia(\n `(max-width: ${MOBILE_BREAKPOINT - 1}px)`,\n );\n\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n };\n\n mql.addEventListener('change', onChange);\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n\n return () => mql.removeEventListener('change', onChange);\n }, []);\n\n return !!isMobile;\n}\n","import { Slot } from '@radix-ui/react-slot';\nimport { VariantProps, cva } from 'class-variance-authority';\nimport { PanelLeftIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Separator } from '@/components/ui/separator';\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from '@/components/ui/sheet';\nimport { Skeleton } from '@/components/ui/skeleton';\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from '@/components/ui/tooltip';\nimport { useIsMobile } from '@/hooks/use-mobile';\nimport { cn } from '@/lib/utils';\n\nconst SIDEBAR_COOKIE_NAME = 'sidebar_state';\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = '16rem';\nconst SIDEBAR_WIDTH_MOBILE = '18rem';\nconst SIDEBAR_WIDTH_ICON = '3rem';\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b';\n\ntype SidebarContext = {\n state: 'expanded' | 'collapsed';\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = React.createContext<SidebarContext | null>(null);\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.');\n }\n\n return context;\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}) {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = React.useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open],\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile\n ? setOpenMobile((open) => !open)\n : setOpen((open) => !open);\n }, [isMobile, setOpen, setOpenMobile]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed';\n\n const contextValue = React.useMemo<SidebarContext>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n ],\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n 'group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n side?: 'left' | 'right';\n variant?: 'sidebar' | 'floating' | 'inset';\n collapsible?: 'offcanvas' | 'icon' | 'none';\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === 'none') {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n 'flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet\n open={openMobile}\n onOpenChange={setOpenMobile}\n {...props}\n preserveScroll\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>\n Displays the mobile sidebar.\n </SheetDescription>\n </SheetHeader>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"p-0 w-(--sidebar-width) bg-sidebar text-sidebar-foreground [&>button]:hidden\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <div className=\"flex h-full w-full flex-col\">\n {children}\n </div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"group peer md:block hidden text-sidebar-foreground\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n className={cn(\n 'relative h-svh w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear',\n 'group-data-[collapsible=offcanvas]:w-0',\n 'group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)',\n )}\n />\n <div\n className={cn(\n 'inset-y-0 md:flex fixed z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear',\n side === 'left'\n ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'\n : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',\n // Adjust the padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l',\n className,\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n className=\"group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:rounded-2xl flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn('h-7 w-7', className)}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<'button'>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'inset-y-0 w-4 group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:inset-y-0 sm:flex absolute z-20 hidden -translate-x-1/2 transition-all ease-linear after:absolute after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border',\n 'in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize',\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar',\n '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:-left-2',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n 'relative flex min-h-svh max-w-full flex-1 flex-col bg-background',\n 'peer-data-[variant=inset]:min-h-[calc(100svh-(--spacing(4)))] md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-0',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn('h-11 w-full bg-background shadow-none', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn('gap-2 p-2 flex flex-col', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn('gap-2 p-2 flex flex-col', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn('mx-2 w-auto bg-sidebar-border', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n 'min-h-0 gap-2 flex flex-1 flex-col overflow-auto group-data-[collapsible=icon]:overflow-hidden',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\n 'min-w-0 p-2 relative flex w-full flex-col',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'div'> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : 'div';\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n 'h-8 rounded-xl px-2 text-xs font-medium tracking-wider [&>svg]:size-4 flex shrink-0 items-center text-sidebar-foreground/70 uppercase ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-[3px] focus-visible:ring-ring/50 [&>svg]:shrink-0',\n 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:pointer-events-none group-data-[collapsible=icon]:opacity-0 group-data-[collapsible=icon]:select-none',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'button'> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n 'top-3.5 right-3 w-5 p-0 [&>svg]:size-4 rounded-xl absolute flex aspect-square items-center justify-center text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-[3px] focus-visible:ring-ring/50 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:-inset-2 md:after:hidden after:absolute',\n 'group-data-[collapsible=icon]:hidden',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn('text-sm w-full', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn('min-w-0 gap-1 flex w-full flex-col', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn('group/menu-item relative', className)}\n {...props}\n />\n );\n}\n\nconst sidebarMenuButtonVariants = cva(\n 'peer/menu-button flex w-full items-center gap-3 overflow-hidden rounded-xl p-2.5 text-left text-sm font-medium outline-hidden ring-sidebar-ring transition-all hover:bg-accent hover:text-accent-foreground focus-visible:ring-[3px] focus-visible:ring-ring/50 active:scale-[0.98] disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-primary/10 data-[active=true]:font-semibold data-[active=true]:text-primary group-data-[collapsible=icon]:size-10! group-data-[collapsible=icon]:p-3! [&>span:last-child]:truncate [&>svg]:size-5 [&>svg]:shrink-0',\n {\n variants: {\n variant: {\n default:\n 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n default: 'h-11 text-sm',\n sm: 'h-9 text-sm',\n lg: 'h-14 text-sm group-data-[collapsible=icon]:p-0!',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot : 'button';\n const { isMobile, state } = useSidebar();\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n sidebarMenuButtonVariants({ variant, size }),\n className,\n )}\n {...props}\n />\n );\n\n if (!tooltip) {\n return button;\n }\n\n if (typeof tooltip === 'string') {\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== 'collapsed' || isMobile}\n {...tooltip}\n />\n </Tooltip>\n );\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}) {\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n 'top-1.5 right-1 w-5 p-0 [&>svg]:size-4 rounded-xl absolute flex aspect-square items-center justify-center text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform peer-hover/menu-button:text-sidebar-accent-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-[3px] focus-visible:ring-ring/50 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:-inset-2 md:after:hidden after:absolute',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n showOnHover &&\n 'md:opacity-0 group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground data-[state=open]:opacity-100',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n 'right-1 h-5 min-w-5 px-1 text-xs font-medium rounded-xl pointer-events-none absolute flex items-center justify-center text-sidebar-foreground tabular-nums select-none',\n 'peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<'div'> & {\n showIcon?: boolean;\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn(\n 'h-8 gap-2 px-2 rounded-xl flex items-center',\n className,\n )}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-xl\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width,\n } as React.CSSProperties\n }\n />\n </div>\n );\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n 'mx-3.5 min-w-0 gap-1 px-2.5 py-0.5 flex translate-x-px flex-col border-l border-sidebar-border',\n 'group-data-[collapsible=icon]:hidden',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn('group/menu-sub-item relative', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = 'md',\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<'a'> & {\n asChild?: boolean;\n size?: 'sm' | 'md';\n isActive?: boolean;\n}) {\n const Comp = asChild ? Slot : 'a';\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n 'h-9 min-w-0 gap-2 px-2 text-sm font-medium [&>svg]:size-4 rounded-xl flex -translate-x-px items-center overflow-hidden text-sidebar-foreground ring-sidebar-ring outline-hidden hover:bg-accent hover:text-accent-foreground focus-visible:ring-[3px] focus-visible:ring-ring/50 active:bg-accent disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:shrink-0 [&>svg]:text-current',\n 'data-[active=true]:font-semibold data-[active=true]:bg-primary/10 data-[active=true]:text-primary',\n size === 'sm' && 'h-9 text-sm',\n size === 'md' && 'h-9 text-sm',\n 'group-data-[collapsible=icon]:hidden',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n};\n"]}