@zuplo/ui 0.0.1 → 0.1.2

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/README.md ADDED
@@ -0,0 +1,279 @@
1
+ # @zuplo/ui
2
+
3
+ A comprehensive React component library built with TypeScript, Tailwind CSS, and Radix UI primitives. This library provides a complete set of accessible, customizable UI components for building modern web applications.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @zuplo/ui
9
+ ```
10
+
11
+ ## Peer Dependencies
12
+
13
+ This library requires React 18.3.1 or higher. Make sure you have React and React DOM installed:
14
+
15
+ ```bash
16
+ npm install react react-dom
17
+ ```
18
+
19
+ ## Quick Start
20
+
21
+ ### 1. Import the Styles
22
+
23
+ First, import the CSS file in your application's entry point (e.g., `main.tsx` or `App.tsx`):
24
+
25
+ ```tsx
26
+ import '@zuplo/ui/styles';
27
+ ```
28
+
29
+ ### 2. Use Components
30
+
31
+ Import and use components as needed:
32
+
33
+ ```tsx
34
+ import { Button, Card, Input } from '@zuplo/ui';
35
+
36
+ function App() {
37
+ return (
38
+ <div>
39
+ <Button>Click me</Button>
40
+ <Card>
41
+ <CardHeader>
42
+ <CardTitle>Hello World</CardTitle>
43
+ </CardHeader>
44
+ <CardContent>
45
+ <Input placeholder="Enter text..." />
46
+ </CardContent>
47
+ </Card>
48
+ </div>
49
+ );
50
+ }
51
+ ```
52
+
53
+ ## Available Components
54
+
55
+ ### UI Components
56
+
57
+ #### Form Components
58
+ - **Button** - Versatile button component with multiple variants
59
+ - **Input** - Text input field
60
+ - **Textarea** - Multi-line text input
61
+ - **Checkbox** - Checkbox input
62
+ - **Radio Group** - Radio button group
63
+ - **Switch** - Toggle switch
64
+ - **Select** - Dropdown select
65
+ - **Label** - Form label
66
+ - **Form** - Form wrapper with validation support
67
+
68
+ #### Layout Components
69
+ - **Card** - Container card component
70
+ - **Separator** - Visual divider
71
+ - **Aspect Ratio** - Maintain aspect ratios
72
+ - **Resizable** - Resizable panels
73
+ - **Scroll Area** - Custom scrollable area
74
+
75
+ #### Navigation Components
76
+ - **Breadcrumb** - Breadcrumb navigation
77
+ - **Navigation Menu** - Navigation menu with dropdowns
78
+ - **Menubar** - Menu bar component
79
+ - **Pagination** - Pagination controls
80
+ - **Tabs** - Tab navigation
81
+
82
+ #### Overlay Components
83
+ - **Dialog** - Modal dialog
84
+ - **Alert Dialog** - Alert confirmation dialog
85
+ - ** Sheet** - Side panel sheet
86
+ - **Drawer** - Mobile drawer
87
+ - **Popover** - Popover tooltip
88
+ - **Tooltip** - Tooltip component
89
+ - **Hover Card** - Hover card
90
+ - **Context Menu** - Right-click context menu
91
+ - **Dropdown Menu** - Dropdown menu
92
+ - **Command** - Command palette
93
+
94
+ #### Feedback Components
95
+ - **Alert** - Alert message
96
+ - **Toast** - Toast notifications
97
+ - **Progress** - Progress bar
98
+ - **Skeleton** - Loading skeleton
99
+ - **Badge** - Badge component
100
+ - **Avatar** - User avatar
101
+
102
+ #### Data Display Components
103
+ - **Table** - Data table
104
+ - **Chart** - Chart component (using Recharts)
105
+ - **Carousel** - Image/content carousel
106
+ - **Calendar** - Date picker calendar
107
+ - **Accordion** - Collapsible accordion
108
+ - **Collapsible** - Collapsible content
109
+
110
+ #### Other Components
111
+ - **Toggle** - Toggle button
112
+ - **Toggle Group** - Toggle button group
113
+ - **Slider** - Range slider
114
+ - **Input OTP** - OTP input field
115
+ - **Sidebar** - Sidebar navigation
116
+
117
+ ### Blog Components
118
+
119
+ Specialized components for blog and documentation sites:
120
+
121
+ - **BlogHeader** - Blog post header with metadata
122
+ - **BlogNav** - Blog navigation component
123
+ - **Callout** - Callout box with variants (docs, sample, accent)
124
+ - **CalloutCode** - Code block callout
125
+ - **CalloutDoc** - Documentation reference callout
126
+ - **CalloutSample** - Sample code callout
127
+ - **CalloutTip** - Tip callout
128
+ - **CalloutVideo** - Video callout
129
+ - **CalloutNextStep** - Next step callout
130
+ - **CalloutSplit** - Split callout with multiple links
131
+ - **CalloutAudience** - Audience-specific callout
132
+ - **FeatureList** - Feature list display
133
+ - **RelatedArticles** - Related articles component
134
+ - **TableOfContents** - Table of contents
135
+ - **WhatsIncluded** - Feature inclusion list
136
+
137
+ ### Hooks
138
+
139
+ - **useIsMobile** - Hook to detect mobile viewport
140
+ - **useToast** - Hook for toast notifications
141
+
142
+ ### Utilities
143
+
144
+ - **cn** - Utility function for merging Tailwind classes (from `@/lib/utils`)
145
+
146
+ ## Examples
147
+
148
+ ### Button Variants
149
+
150
+ ```tsx
151
+ import { Button } from '@zuplo/ui';
152
+
153
+ <Button variant="default">Default</Button>
154
+ <Button variant="destructive">Destructive</Button>
155
+ <Button variant="outline">Outline</Button>
156
+ <Button variant="secondary">Secondary</Button>
157
+ <Button variant="ghost">Ghost</Button>
158
+ <Button variant="link">Link</Button>
159
+ ```
160
+
161
+ ### Form with Validation
162
+
163
+ ```tsx
164
+ import { Form, FormField, FormItem, FormLabel, FormControl, FormMessage, Input, Button } from '@zuplo/ui';
165
+ import { useForm } from 'react-hook-form';
166
+ import { zodResolver } from '@hookform/resolvers/zod';
167
+ import * as z from 'zod';
168
+
169
+ const formSchema = z.object({
170
+ email: z.string().email(),
171
+ });
172
+
173
+ function MyForm() {
174
+ const form = useForm({
175
+ resolver: zodResolver(formSchema),
176
+ });
177
+
178
+ return (
179
+ <Form {...form}>
180
+ <form onSubmit={form.handleSubmit(onSubmit)}>
181
+ <FormField
182
+ control={form.control}
183
+ name="email"
184
+ render={({ field }) => (
185
+ <FormItem>
186
+ <FormLabel>Email</FormLabel>
187
+ <FormControl>
188
+ <Input {...field} />
189
+ </FormControl>
190
+ <FormMessage />
191
+ </FormItem>
192
+ )}
193
+ />
194
+ <Button type="submit">Submit</Button>
195
+ </form>
196
+ </Form>
197
+ );
198
+ }
199
+ ```
200
+
201
+ ### Dialog
202
+
203
+ ```tsx
204
+ import { Dialog, DialogTrigger, DialogContent, DialogHeader, DialogTitle, DialogDescription } from '@zuplo/ui';
205
+
206
+ <Dialog>
207
+ <DialogTrigger>Open Dialog</DialogTrigger>
208
+ <DialogContent>
209
+ <DialogHeader>
210
+ <DialogTitle>Dialog Title</DialogTitle>
211
+ <DialogDescription>Dialog description goes here.</DialogDescription>
212
+ </DialogHeader>
213
+ {/* Your content */}
214
+ </DialogContent>
215
+ </Dialog>
216
+ ```
217
+
218
+ ### Toast Notifications
219
+
220
+ ```tsx
221
+ import { useToast } from '@zuplo/ui';
222
+ import { Toaster } from '@zuplo/ui';
223
+
224
+ function App() {
225
+ const { toast } = useToast();
226
+
227
+ return (
228
+ <>
229
+ <Toaster />
230
+ <Button
231
+ onClick={() => {
232
+ toast({
233
+ title: "Success",
234
+ description: "Your action was completed.",
235
+ });
236
+ }}
237
+ >
238
+ Show Toast
239
+ </Button>
240
+ </>
241
+ );
242
+ }
243
+ ```
244
+
245
+ ## Styling
246
+
247
+ This library uses Tailwind CSS for styling. The styles are included when you import `@zuplo/ui/styles`.
248
+
249
+ ### Customization
250
+
251
+ The components use CSS variables for theming. You can customize the theme by overriding these variables in your CSS:
252
+
253
+ ```css
254
+ :root {
255
+ --primary: 322 100% 49%;
256
+ --primary-foreground: 0 0% 100%;
257
+ --secondary: 0 0% 0%;
258
+ /* ... other variables */
259
+ }
260
+ ```
261
+
262
+ See the full list of CSS variables in the `styles.css` file.
263
+
264
+ ## TypeScript Support
265
+
266
+ This library is written in TypeScript and includes full type definitions. All components are properly typed and support TypeScript's IntelliSense.
267
+
268
+ ## Requirements
269
+
270
+ - React 18.3.1 or higher
271
+ - Node.js 18 or higher (for development)
272
+
273
+ ## License
274
+
275
+ MIT
276
+
277
+ ## Support
278
+
279
+ For issues, questions, or contributions, please visit our [GitHub repository](https://github.com/zuplo/zuplo-ui).
Binary file
package/dist/index.cjs ADDED
@@ -0,0 +1,7 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),$e=require("react"),ho=require("@radix-ui/react-accordion"),m=require("lucide-react"),vo=require("clsx"),No=require("tailwind-merge"),z=require("class-variance-authority"),wo=require("@radix-ui/react-alert-dialog"),L=require("@radix-ui/react-slot"),yo=require("@radix-ui/react-aspect-ratio"),jo=require("@radix-ui/react-avatar"),Co=require("react-day-picker"),So=require("embla-carousel-react"),Ro=require("recharts"),To=require("@radix-ui/react-checkbox"),ko=require("@radix-ui/react-collapsible"),R=require("cmdk"),Io=require("@radix-ui/react-dialog"),Mo=require("@radix-ui/react-context-menu"),_=require("vaul"),Do=require("@radix-ui/react-dropdown-menu"),he=require("react-hook-form"),Po=require("@radix-ui/react-label"),_o=require("@radix-ui/react-hover-card"),Ue=require("input-otp"),Ao=require("@radix-ui/react-menubar"),zo=require("@radix-ui/react-navigation-menu"),Fo=require("@radix-ui/react-popover"),Lo=require("@radix-ui/react-progress"),Oo=require("@radix-ui/react-radio-group"),Bo=require("react-resizable-panels"),Go=require("@radix-ui/react-scroll-area"),Eo=require("@radix-ui/react-select"),qo=require("@radix-ui/react-separator"),Ho=require("@radix-ui/react-tooltip"),Vo=require("@radix-ui/react-slider"),$o=require("next-themes"),Ke=require("sonner"),Uo=require("@radix-ui/react-switch"),Ko=require("@radix-ui/react-tabs"),Wo=require("@radix-ui/react-toast"),Xo=require("@radix-ui/react-toggle"),Yo=require("@radix-ui/react-toggle-group"),p=require("@phosphor-icons/react"),Jo=require("react-router-dom");function f(a){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(a){for(const r in a)if(r!=="default"){const o=Object.getOwnPropertyDescriptor(a,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:()=>a[r]})}}return t.default=a,Object.freeze(t)}const n=f($e),G=f(ho),C=f(wo),Qo=f(yo),H=f(jo),ve=f(Ro),me=f(To),Ne=f(ko),g=f(Io),h=f(Mo),v=f(Do),We=f(Po),oe=f(_o),x=f(Ao),T=f(zo),K=f(Fo),ue=f(Lo),W=f(Oo),we=f(Bo),B=f(Go),y=f(Eo),Xe=f(qo),X=f(Ho),$=f(Vo),pe=f(Uo),q=f(Ko),k=f(Wo),Ye=f(Xo),se=f(Yo);function s(...a){return No.twMerge(vo.clsx(a))}const Zo=G.Root,Je=n.forwardRef(({className:a,...t},r)=>e.jsx(G.Item,{ref:r,className:s("border-b",a),...t}));Je.displayName="AccordionItem";const Qe=n.forwardRef(({className:a,children:t,...r},o)=>e.jsx(G.Header,{className:"flex",children:e.jsxs(G.Trigger,{ref:o,className:s("flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180",a),...r,children:[t,e.jsx(m.ChevronDown,{className:"h-4 w-4 shrink-0 transition-transform duration-200"})]})}));Qe.displayName=G.Trigger.displayName;const Ze=n.forwardRef(({className:a,children:t,...r},o)=>e.jsx(G.Content,{ref:o,className:"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",...r,children:e.jsx("div",{className:s("pb-4 pt-0",a),children:t})}));Ze.displayName=G.Content.displayName;const es=z.cva("relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",{variants:{variant:{default:"bg-background text-foreground",destructive:"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive"}},defaultVariants:{variant:"default"}}),et=n.forwardRef(({className:a,variant:t,...r},o)=>e.jsx("div",{ref:o,role:"alert",className:s(es({variant:t}),a),...r}));et.displayName="Alert";const tt=n.forwardRef(({className:a,...t},r)=>e.jsx("h5",{ref:r,className:s("mb-1 font-medium leading-none tracking-tight",a),...t}));tt.displayName="AlertTitle";const at=n.forwardRef(({className:a,...t},r)=>e.jsx("div",{ref:r,className:s("text-sm [&_p]:leading-relaxed",a),...t}));at.displayName="AlertDescription";const E=z.cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium 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 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),Y=n.forwardRef(({className:a,variant:t,size:r,asChild:o=!1,...i},l)=>{const d=o?L.Slot:"button";return e.jsx(d,{className:s(E({variant:t,size:r,className:a})),ref:l,...i})});Y.displayName="Button";const ts=C.Root,as=C.Trigger,rt=C.Portal,ye=n.forwardRef(({className:a,...t},r)=>e.jsx(C.Overlay,{className:s("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",a),...t,ref:r}));ye.displayName=C.Overlay.displayName;const ot=n.forwardRef(({className:a,...t},r)=>e.jsxs(rt,{children:[e.jsx(ye,{}),e.jsx(C.Content,{ref:r,className:s("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 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-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",a),...t})]}));ot.displayName=C.Content.displayName;const st=({className:a,...t})=>e.jsx("div",{className:s("flex flex-col space-y-2 text-center sm:text-left",a),...t});st.displayName="AlertDialogHeader";const nt=({className:a,...t})=>e.jsx("div",{className:s("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",a),...t});nt.displayName="AlertDialogFooter";const it=n.forwardRef(({className:a,...t},r)=>e.jsx(C.Title,{ref:r,className:s("text-lg font-semibold",a),...t}));it.displayName=C.Title.displayName;const lt=n.forwardRef(({className:a,...t},r)=>e.jsx(C.Description,{ref:r,className:s("text-sm text-muted-foreground",a),...t}));lt.displayName=C.Description.displayName;const dt=n.forwardRef(({className:a,...t},r)=>e.jsx(C.Action,{ref:r,className:s(E(),a),...t}));dt.displayName=C.Action.displayName;const ct=n.forwardRef(({className:a,...t},r)=>e.jsx(C.Cancel,{ref:r,className:s(E({variant:"outline"}),"mt-2 sm:mt-0",a),...t}));ct.displayName=C.Cancel.displayName;const rs=Qo.Root,mt=n.forwardRef(({className:a,...t},r)=>e.jsx(H.Root,{ref:r,className:s("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",a),...t}));mt.displayName=H.Root.displayName;const ut=n.forwardRef(({className:a,...t},r)=>e.jsx(H.Image,{ref:r,className:s("aspect-square h-full w-full",a),...t}));ut.displayName=H.Image.displayName;const pt=n.forwardRef(({className:a,...t},r)=>e.jsx(H.Fallback,{ref:r,className:s("flex h-full w-full items-center justify-center rounded-full bg-muted",a),...t}));pt.displayName=H.Fallback.displayName;const ft=z.cva("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function os({className:a,variant:t,...r}){return e.jsx("div",{className:s(ft({variant:t}),a),...r})}const xt=n.forwardRef(({...a},t)=>e.jsx("nav",{ref:t,"aria-label":"breadcrumb",...a}));xt.displayName="Breadcrumb";const gt=n.forwardRef(({className:a,...t},r)=>e.jsx("ol",{ref:r,className:s("flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5",a),...t}));gt.displayName="BreadcrumbList";const bt=n.forwardRef(({className:a,...t},r)=>e.jsx("li",{ref:r,className:s("inline-flex items-center gap-1.5",a),...t}));bt.displayName="BreadcrumbItem";const ht=n.forwardRef(({asChild:a,className:t,...r},o)=>{const i=a?L.Slot:"a";return e.jsx(i,{ref:o,className:s("transition-colors hover:text-foreground",t),...r})});ht.displayName="BreadcrumbLink";const vt=n.forwardRef(({className:a,...t},r)=>e.jsx("span",{ref:r,role:"link","aria-disabled":"true","aria-current":"page",className:s("font-normal text-foreground",a),...t}));vt.displayName="BreadcrumbPage";const Nt=({children:a,className:t,...r})=>e.jsx("li",{role:"presentation","aria-hidden":"true",className:s("[&>svg]:size-3.5",t),...r,children:a??e.jsx(m.ChevronRight,{})});Nt.displayName="BreadcrumbSeparator";const wt=({className:a,...t})=>e.jsxs("span",{role:"presentation","aria-hidden":"true",className:s("flex h-9 w-9 items-center justify-center",a),...t,children:[e.jsx(m.MoreHorizontal,{className:"h-4 w-4"}),e.jsx("span",{className:"sr-only",children:"More"})]});wt.displayName="BreadcrumbElipssis";function yt({className:a,classNames:t,showOutsideDays:r=!0,...o}){return e.jsx(Co.DayPicker,{showOutsideDays:r,className:s("p-3",a),classNames:{months:"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0",month:"space-y-4",caption:"flex justify-center pt-1 relative items-center",caption_label:"text-sm font-medium",nav:"space-x-1 flex items-center",nav_button:s(E({variant:"outline"}),"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100"),nav_button_previous:"absolute left-1",nav_button_next:"absolute right-1",table:"w-full border-collapse space-y-1",head_row:"flex",head_cell:"text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]",row:"flex w-full mt-2",cell:"h-9 w-9 text-center text-sm p-0 relative [&:has([aria-selected].day-range-end)]:rounded-r-md [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected])]:bg-accent first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md focus-within:relative focus-within:z-20",day:s(E({variant:"ghost"}),"h-9 w-9 p-0 font-normal aria-selected:opacity-100"),day_range_end:"day-range-end",day_selected:"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground",day_today:"bg-accent text-accent-foreground",day_outside:"day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30",day_disabled:"text-muted-foreground opacity-50",day_range_middle:"aria-selected:bg-accent aria-selected:text-accent-foreground",day_hidden:"invisible",...t},components:{IconLeft:({...i})=>e.jsx(m.ChevronLeft,{className:"h-4 w-4"}),IconRight:({...i})=>e.jsx(m.ChevronRight,{className:"h-4 w-4"})},...o})}yt.displayName="Calendar";const jt=n.forwardRef(({className:a,...t},r)=>e.jsx("div",{ref:r,className:s("rounded-lg border bg-card text-card-foreground shadow-sm",a),...t}));jt.displayName="Card";const Ct=n.forwardRef(({className:a,...t},r)=>e.jsx("div",{ref:r,className:s("flex flex-col space-y-1.5 p-6",a),...t}));Ct.displayName="CardHeader";const St=n.forwardRef(({className:a,...t},r)=>e.jsx("h3",{ref:r,className:s("text-2xl font-semibold leading-none tracking-tight",a),...t}));St.displayName="CardTitle";const Rt=n.forwardRef(({className:a,...t},r)=>e.jsx("p",{ref:r,className:s("text-sm text-muted-foreground",a),...t}));Rt.displayName="CardDescription";const Tt=n.forwardRef(({className:a,...t},r)=>e.jsx("div",{ref:r,className:s("p-6 pt-0",a),...t}));Tt.displayName="CardContent";const kt=n.forwardRef(({className:a,...t},r)=>e.jsx("div",{ref:r,className:s("flex items-center p-6 pt-0",a),...t}));kt.displayName="CardFooter";const It=n.createContext(null);function ne(){const a=n.useContext(It);if(!a)throw new Error("useCarousel must be used within a <Carousel />");return a}const Mt=n.forwardRef(({orientation:a="horizontal",opts:t,setApi:r,plugins:o,className:i,children:l,...d},u)=>{const[N,c]=So({...t,axis:a==="horizontal"?"x":"y"},o),[I,F]=n.useState(!1),[O,A]=n.useState(!1),j=n.useCallback(w=>{w&&(F(w.canScrollPrev()),A(w.canScrollNext()))},[]),M=n.useCallback(()=>{c==null||c.scrollPrev()},[c]),D=n.useCallback(()=>{c==null||c.scrollNext()},[c]),b=n.useCallback(w=>{w.key==="ArrowLeft"?(w.preventDefault(),M()):w.key==="ArrowRight"&&(w.preventDefault(),D())},[M,D]);return n.useEffect(()=>{!c||!r||r(c)},[c,r]),n.useEffect(()=>{if(c)return j(c),c.on("reInit",j),c.on("select",j),()=>{c==null||c.off("select",j)}},[c,j]),e.jsx(It.Provider,{value:{carouselRef:N,api:c,opts:t,orientation:a||((t==null?void 0:t.axis)==="y"?"vertical":"horizontal"),scrollPrev:M,scrollNext:D,canScrollPrev:I,canScrollNext:O},children:e.jsx("div",{ref:u,onKeyDownCapture:b,className:s("relative",i),role:"region","aria-roledescription":"carousel",...d,children:l})})});Mt.displayName="Carousel";const Dt=n.forwardRef(({className:a,...t},r)=>{const{carouselRef:o,orientation:i}=ne();return e.jsx("div",{ref:o,className:"overflow-hidden",children:e.jsx("div",{ref:r,className:s("flex",i==="horizontal"?"-ml-4":"-mt-4 flex-col",a),...t})})});Dt.displayName="CarouselContent";const Pt=n.forwardRef(({className:a,...t},r)=>{const{orientation:o}=ne();return e.jsx("div",{ref:r,role:"group","aria-roledescription":"slide",className:s("min-w-0 shrink-0 grow-0 basis-full",o==="horizontal"?"pl-4":"pt-4",a),...t})});Pt.displayName="CarouselItem";const _t=n.forwardRef(({className:a,variant:t="outline",size:r="icon",...o},i)=>{const{orientation:l,scrollPrev:d,canScrollPrev:u}=ne();return e.jsxs(Y,{ref:i,variant:t,size:r,className:s("absolute h-8 w-8 rounded-full",l==="horizontal"?"-left-12 top-1/2 -translate-y-1/2":"-top-12 left-1/2 -translate-x-1/2 rotate-90",a),disabled:!u,onClick:d,...o,children:[e.jsx(m.ArrowLeft,{className:"h-4 w-4"}),e.jsx("span",{className:"sr-only",children:"Previous slide"})]})});_t.displayName="CarouselPrevious";const At=n.forwardRef(({className:a,variant:t="outline",size:r="icon",...o},i)=>{const{orientation:l,scrollNext:d,canScrollNext:u}=ne();return e.jsxs(Y,{ref:i,variant:t,size:r,className:s("absolute h-8 w-8 rounded-full",l==="horizontal"?"-right-12 top-1/2 -translate-y-1/2":"-bottom-12 left-1/2 -translate-x-1/2 rotate-90",a),disabled:!u,onClick:d,...o,children:[e.jsx(m.ArrowRight,{className:"h-4 w-4"}),e.jsx("span",{className:"sr-only",children:"Next slide"})]})});At.displayName="CarouselNext";const ss={light:"",dark:".dark"},zt=n.createContext(null);function Ft(){const a=n.useContext(zt);if(!a)throw new Error("useChart must be used within a <ChartContainer />");return a}const Lt=n.forwardRef(({id:a,className:t,children:r,config:o,...i},l)=>{const d=n.useId(),u=`chart-${a||d.replace(/:/g,"")}`;return e.jsx(zt.Provider,{value:{config:o},children:e.jsxs("div",{"data-chart":u,ref:l,className:s("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none",t),...i,children:[e.jsx(Ot,{id:u,config:o}),e.jsx(ve.ResponsiveContainer,{children:r})]})})});Lt.displayName="Chart";const Ot=({id:a,config:t})=>{const r=Object.entries(t).filter(([o,i])=>i.theme||i.color);return r.length?e.jsx("style",{dangerouslySetInnerHTML:{__html:Object.entries(ss).map(([o,i])=>`
2
+ ${i} [data-chart=${a}] {
3
+ ${r.map(([l,d])=>{var N;const u=((N=d.theme)==null?void 0:N[o])||d.color;return u?` --color-${l}: ${u};`:null}).join(`
4
+ `)}
5
+ }
6
+ `).join(`
7
+ `)}}):null},ns=ve.Tooltip,Bt=n.forwardRef(({active:a,payload:t,className:r,indicator:o="dot",hideLabel:i=!1,hideIndicator:l=!1,label:d,labelFormatter:u,labelClassName:N,formatter:c,color:I,nameKey:F,labelKey:O},A)=>{const{config:j}=Ft(),M=n.useMemo(()=>{var V;if(i||!(t!=null&&t.length))return null;const[b]=t,w=`${O||b.dataKey||b.name||"value"}`,S=fe(j,b,w),P=!O&&typeof d=="string"?((V=j[d])==null?void 0:V.label)||d:S==null?void 0:S.label;return u?e.jsx("div",{className:s("font-medium",N),children:u(P,t)}):P?e.jsx("div",{className:s("font-medium",N),children:P}):null},[d,u,t,i,N,j,O]);if(!a||!(t!=null&&t.length))return null;const D=t.length===1&&o!=="dot";return e.jsxs("div",{ref:A,className:s("grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",r),children:[D?null:M,e.jsx("div",{className:"grid gap-1.5",children:t.map((b,w)=>{const S=`${F||b.name||b.dataKey||"value"}`,P=fe(j,b,S),V=I||b.payload.fill||b.color;return e.jsx("div",{className:s("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",o==="dot"&&"items-center"),children:c&&(b==null?void 0:b.value)!==void 0&&b.name?c(b.value,b.name,b,w,b.payload):e.jsxs(e.Fragment,{children:[P!=null&&P.icon?e.jsx(P.icon,{}):!l&&e.jsx("div",{className:s("shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]",{"h-2.5 w-2.5":o==="dot","w-1":o==="line","w-0 border-[1.5px] border-dashed bg-transparent":o==="dashed","my-0.5":D&&o==="dashed"}),style:{"--color-bg":V,"--color-border":V}}),e.jsxs("div",{className:s("flex flex-1 justify-between leading-none",D?"items-end":"items-center"),children:[e.jsxs("div",{className:"grid gap-1.5",children:[D?M:null,e.jsx("span",{className:"text-muted-foreground",children:(P==null?void 0:P.label)||b.name})]}),b.value&&e.jsx("span",{className:"font-mono font-medium tabular-nums text-foreground",children:b.value.toLocaleString()})]})]})},b.dataKey)})})]})});Bt.displayName="ChartTooltip";const is=ve.Legend,Gt=n.forwardRef(({className:a,hideIcon:t=!1,payload:r,verticalAlign:o="bottom",nameKey:i},l)=>{const{config:d}=Ft();return r!=null&&r.length?e.jsx("div",{ref:l,className:s("flex items-center justify-center gap-4",o==="top"?"pb-3":"pt-3",a),children:r.map(u=>{const N=`${i||u.dataKey||"value"}`,c=fe(d,u,N);return e.jsxs("div",{className:s("flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"),children:[c!=null&&c.icon&&!t?e.jsx(c.icon,{}):e.jsx("div",{className:"h-2 w-2 shrink-0 rounded-[2px]",style:{backgroundColor:u.color}}),c==null?void 0:c.label]},u.value)})}):null});Gt.displayName="ChartLegend";function fe(a,t,r){if(typeof t!="object"||t===null)return;const o="payload"in t&&typeof t.payload=="object"&&t.payload!==null?t.payload:void 0;let i=r;return r in t&&typeof t[r]=="string"?i=t[r]:o&&r in o&&typeof o[r]=="string"&&(i=o[r]),i in a?a[i]:a[r]}const Et=n.forwardRef(({className:a,...t},r)=>e.jsx(me.Root,{ref:r,className:s("peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background data-[state=checked]:bg-primary data-[state=checked]:text-primary-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",a),...t,children:e.jsx(me.Indicator,{className:s("flex items-center justify-center text-current"),children:e.jsx(m.Check,{className:"h-4 w-4"})})}));Et.displayName=me.Root.displayName;const ls=Ne.Root,ds=Ne.CollapsibleTrigger,cs=Ne.CollapsibleContent,qt=g.Root,ms=g.Trigger,Ht=g.Portal,us=g.Close,je=n.forwardRef(({className:a,...t},r)=>e.jsx(g.Overlay,{ref:r,className:s("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",a),...t}));je.displayName=g.Overlay.displayName;const Ce=n.forwardRef(({className:a,children:t,...r},o)=>e.jsxs(Ht,{children:[e.jsx(je,{}),e.jsxs(g.Content,{ref:o,className:s("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 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-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",a),...r,children:[t,e.jsxs(g.Close,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity data-[state=open]:bg-accent data-[state=open]:text-muted-foreground hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",children:[e.jsx(m.X,{className:"h-4 w-4"}),e.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));Ce.displayName=g.Content.displayName;const Vt=({className:a,...t})=>e.jsx("div",{className:s("flex flex-col space-y-1.5 text-center sm:text-left",a),...t});Vt.displayName="DialogHeader";const $t=({className:a,...t})=>e.jsx("div",{className:s("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",a),...t});$t.displayName="DialogFooter";const Ut=n.forwardRef(({className:a,...t},r)=>e.jsx(g.Title,{ref:r,className:s("text-lg font-semibold leading-none tracking-tight",a),...t}));Ut.displayName=g.Title.displayName;const Kt=n.forwardRef(({className:a,...t},r)=>e.jsx(g.Description,{ref:r,className:s("text-sm text-muted-foreground",a),...t}));Kt.displayName=g.Description.displayName;const Se=n.forwardRef(({className:a,...t},r)=>e.jsx(R.Command,{ref:r,className:s("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",a),...t}));Se.displayName=R.Command.displayName;const ps=({children:a,...t})=>e.jsx(qt,{...t,children:e.jsx(Ce,{className:"overflow-hidden p-0 shadow-lg",children:e.jsx(Se,{className:"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5",children:a})})}),Wt=n.forwardRef(({className:a,...t},r)=>e.jsxs("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[e.jsx(m.Search,{className:"mr-2 h-4 w-4 shrink-0 opacity-50"}),e.jsx(R.Command.Input,{ref:r,className:s("flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",a),...t})]}));Wt.displayName=R.Command.Input.displayName;const Xt=n.forwardRef(({className:a,...t},r)=>e.jsx(R.Command.List,{ref:r,className:s("max-h-[300px] overflow-y-auto overflow-x-hidden",a),...t}));Xt.displayName=R.Command.List.displayName;const Yt=n.forwardRef((a,t)=>e.jsx(R.Command.Empty,{ref:t,className:"py-6 text-center text-sm",...a}));Yt.displayName=R.Command.Empty.displayName;const Jt=n.forwardRef(({className:a,...t},r)=>e.jsx(R.Command.Group,{ref:r,className:s("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",a),...t}));Jt.displayName=R.Command.Group.displayName;const Qt=n.forwardRef(({className:a,...t},r)=>e.jsx(R.Command.Separator,{ref:r,className:s("-mx-1 h-px bg-border",a),...t}));Qt.displayName=R.Command.Separator.displayName;const Zt=n.forwardRef(({className:a,...t},r)=>e.jsx(R.Command.Item,{ref:r,className:s("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected='true']:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50",a),...t}));Zt.displayName=R.Command.Item.displayName;const ea=({className:a,...t})=>e.jsx("span",{className:s("ml-auto text-xs tracking-widest text-muted-foreground",a),...t});ea.displayName="CommandShortcut";const fs=h.Root,xs=h.Trigger,gs=h.Group,bs=h.Portal,hs=h.Sub,vs=h.RadioGroup,ta=n.forwardRef(({className:a,inset:t,children:r,...o},i)=>e.jsxs(h.SubTrigger,{ref:i,className:s("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[state=open]:bg-accent data-[state=open]:text-accent-foreground focus:bg-accent focus:text-accent-foreground",t&&"pl-8",a),...o,children:[r,e.jsx(m.ChevronRight,{className:"ml-auto h-4 w-4"})]}));ta.displayName=h.SubTrigger.displayName;const aa=n.forwardRef(({className:a,...t},r)=>e.jsx(h.SubContent,{ref:r,className:s("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md 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",a),...t}));aa.displayName=h.SubContent.displayName;const ra=n.forwardRef(({className:a,...t},r)=>e.jsx(h.Portal,{children:e.jsx(h.Content,{ref:r,className:s("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in-80 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",a),...t})}));ra.displayName=h.Content.displayName;const oa=n.forwardRef(({className:a,inset:t,...r},o)=>e.jsx(h.Item,{ref:o,className:s("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground",t&&"pl-8",a),...r}));oa.displayName=h.Item.displayName;const sa=n.forwardRef(({className:a,children:t,checked:r,...o},i)=>e.jsxs(h.CheckboxItem,{ref:i,className:s("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground",a),checked:r,...o,children:[e.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx(h.ItemIndicator,{children:e.jsx(m.Check,{className:"h-4 w-4"})})}),t]}));sa.displayName=h.CheckboxItem.displayName;const na=n.forwardRef(({className:a,children:t,...r},o)=>e.jsxs(h.RadioItem,{ref:o,className:s("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground",a),...r,children:[e.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx(h.ItemIndicator,{children:e.jsx(m.Circle,{className:"h-2 w-2 fill-current"})})}),t]}));na.displayName=h.RadioItem.displayName;const ia=n.forwardRef(({className:a,inset:t,...r},o)=>e.jsx(h.Label,{ref:o,className:s("px-2 py-1.5 text-sm font-semibold text-foreground",t&&"pl-8",a),...r}));ia.displayName=h.Label.displayName;const la=n.forwardRef(({className:a,...t},r)=>e.jsx(h.Separator,{ref:r,className:s("-mx-1 my-1 h-px bg-border",a),...t}));la.displayName=h.Separator.displayName;const da=({className:a,...t})=>e.jsx("span",{className:s("ml-auto text-xs tracking-widest text-muted-foreground",a),...t});da.displayName="ContextMenuShortcut";const ca=({shouldScaleBackground:a=!0,...t})=>e.jsx(_.Drawer.Root,{shouldScaleBackground:a,...t});ca.displayName="Drawer";const Ns=_.Drawer.Trigger,ma=_.Drawer.Portal,ws=_.Drawer.Close,Re=n.forwardRef(({className:a,...t},r)=>e.jsx(_.Drawer.Overlay,{ref:r,className:s("fixed inset-0 z-50 bg-black/80",a),...t}));Re.displayName=_.Drawer.Overlay.displayName;const ua=n.forwardRef(({className:a,children:t,...r},o)=>e.jsxs(ma,{children:[e.jsx(Re,{}),e.jsxs(_.Drawer.Content,{ref:o,className:s("fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background",a),...r,children:[e.jsx("div",{className:"mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted"}),t]})]}));ua.displayName="DrawerContent";const pa=({className:a,...t})=>e.jsx("div",{className:s("grid gap-1.5 p-4 text-center sm:text-left",a),...t});pa.displayName="DrawerHeader";const fa=({className:a,...t})=>e.jsx("div",{className:s("mt-auto flex flex-col gap-2 p-4",a),...t});fa.displayName="DrawerFooter";const xa=n.forwardRef(({className:a,...t},r)=>e.jsx(_.Drawer.Title,{ref:r,className:s("text-lg font-semibold leading-none tracking-tight",a),...t}));xa.displayName=_.Drawer.Title.displayName;const ga=n.forwardRef(({className:a,...t},r)=>e.jsx(_.Drawer.Description,{ref:r,className:s("text-sm text-muted-foreground",a),...t}));ga.displayName=_.Drawer.Description.displayName;const ys=v.Root,js=v.Trigger,Cs=v.Group,Ss=v.Portal,Rs=v.Sub,Ts=v.RadioGroup,ba=n.forwardRef(({className:a,inset:t,children:r,...o},i)=>e.jsxs(v.SubTrigger,{ref:i,className:s("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[state=open]:bg-accent focus:bg-accent",t&&"pl-8",a),...o,children:[r,e.jsx(m.ChevronRight,{className:"ml-auto h-4 w-4"})]}));ba.displayName=v.SubTrigger.displayName;const ha=n.forwardRef(({className:a,...t},r)=>e.jsx(v.SubContent,{ref:r,className:s("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg 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",a),...t}));ha.displayName=v.SubContent.displayName;const va=n.forwardRef(({className:a,sideOffset:t=4,...r},o)=>e.jsx(v.Portal,{children:e.jsx(v.Content,{ref:o,sideOffset:t,className:s("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md 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",a),...r})}));va.displayName=v.Content.displayName;const Na=n.forwardRef(({className:a,inset:t,...r},o)=>e.jsx(v.Item,{ref:o,className:s("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground",t&&"pl-8",a),...r}));Na.displayName=v.Item.displayName;const wa=n.forwardRef(({className:a,children:t,checked:r,...o},i)=>e.jsxs(v.CheckboxItem,{ref:i,className:s("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground",a),checked:r,...o,children:[e.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx(v.ItemIndicator,{children:e.jsx(m.Check,{className:"h-4 w-4"})})}),t]}));wa.displayName=v.CheckboxItem.displayName;const ya=n.forwardRef(({className:a,children:t,...r},o)=>e.jsxs(v.RadioItem,{ref:o,className:s("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground",a),...r,children:[e.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx(v.ItemIndicator,{children:e.jsx(m.Circle,{className:"h-2 w-2 fill-current"})})}),t]}));ya.displayName=v.RadioItem.displayName;const ja=n.forwardRef(({className:a,inset:t,...r},o)=>e.jsx(v.Label,{ref:o,className:s("px-2 py-1.5 text-sm font-semibold",t&&"pl-8",a),...r}));ja.displayName=v.Label.displayName;const Ca=n.forwardRef(({className:a,...t},r)=>e.jsx(v.Separator,{ref:r,className:s("-mx-1 my-1 h-px bg-muted",a),...t}));Ca.displayName=v.Separator.displayName;const Sa=({className:a,...t})=>e.jsx("span",{className:s("ml-auto text-xs tracking-widest opacity-60",a),...t});Sa.displayName="DropdownMenuShortcut";const ks=z.cva("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),Te=n.forwardRef(({className:a,...t},r)=>e.jsx(We.Root,{ref:r,className:s(ks(),a),...t}));Te.displayName=We.Root.displayName;const Is=he.FormProvider,Ra=n.createContext({}),Ms=({...a})=>e.jsx(Ra.Provider,{value:{name:a.name},children:e.jsx(he.Controller,{...a})}),J=()=>{const a=n.useContext(Ra),t=n.useContext(Ta),{getFieldState:r,formState:o}=he.useFormContext(),i=r(a.name,o);if(!a)throw new Error("useFormField should be used within <FormField>");const{id:l}=t;return{id:l,name:a.name,formItemId:`${l}-form-item`,formDescriptionId:`${l}-form-item-description`,formMessageId:`${l}-form-item-message`,...i}},Ta=n.createContext({}),ka=n.forwardRef(({className:a,...t},r)=>{const o=n.useId();return e.jsx(Ta.Provider,{value:{id:o},children:e.jsx("div",{ref:r,className:s("space-y-2",a),...t})})});ka.displayName="FormItem";const Ia=n.forwardRef(({className:a,...t},r)=>{const{error:o,formItemId:i}=J();return e.jsx(Te,{ref:r,className:s(o&&"text-destructive",a),htmlFor:i,...t})});Ia.displayName="FormLabel";const Ma=n.forwardRef(({...a},t)=>{const{error:r,formItemId:o,formDescriptionId:i,formMessageId:l}=J();return e.jsx(L.Slot,{ref:t,id:o,"aria-describedby":r?`${i} ${l}`:`${i}`,"aria-invalid":!!r,...a})});Ma.displayName="FormControl";const Da=n.forwardRef(({className:a,...t},r)=>{const{formDescriptionId:o}=J();return e.jsx("p",{ref:r,id:o,className:s("text-sm text-muted-foreground",a),...t})});Da.displayName="FormDescription";const Pa=n.forwardRef(({className:a,children:t,...r},o)=>{const{error:i,formMessageId:l}=J(),d=i?String(i==null?void 0:i.message):t;return d?e.jsx("p",{ref:o,id:l,className:s("text-sm font-medium text-destructive",a),...r,children:d}):null});Pa.displayName="FormMessage";const Ds=oe.Root,Ps=oe.Trigger,_a=n.forwardRef(({className:a,align:t="center",sideOffset:r=4,...o},i)=>e.jsx(oe.Content,{ref:i,align:t,sideOffset:r,className:s("z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none 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",a),...o}));_a.displayName=oe.Content.displayName;const ke=n.forwardRef(({className:a,type:t,...r},o)=>e.jsx("input",{type:t,className:s("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file: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 md:text-sm",a),ref:o,...r}));ke.displayName="Input";const Aa=n.forwardRef(({className:a,containerClassName:t,...r},o)=>e.jsx(Ue.OTPInput,{ref:o,containerClassName:s("flex items-center gap-2 has-[:disabled]:opacity-50",t),className:s("disabled:cursor-not-allowed",a),...r}));Aa.displayName="InputOTP";const za=n.forwardRef(({className:a,...t},r)=>e.jsx("div",{ref:r,className:s("flex items-center",a),...t}));za.displayName="InputOTPGroup";const Fa=n.forwardRef(({index:a,className:t,...r},o)=>{const i=n.useContext(Ue.OTPInputContext),{char:l,hasFakeCaret:d,isActive:u}=i.slots[a];return e.jsxs("div",{ref:o,className:s("relative flex h-10 w-10 items-center justify-center border-y border-r border-input text-sm transition-all first:rounded-l-md first:border-l last:rounded-r-md",u&&"z-10 ring-2 ring-ring ring-offset-background",t),...r,children:[l,d&&e.jsx("div",{className:"pointer-events-none absolute inset-0 flex items-center justify-center",children:e.jsx("div",{className:"animate-caret-blink h-4 w-px bg-foreground duration-1000"})})]})});Fa.displayName="InputOTPSlot";const La=n.forwardRef(({...a},t)=>e.jsx("div",{ref:t,role:"separator",...a,children:e.jsx(m.Dot,{})}));La.displayName="InputOTPSeparator";const _s=x.Menu,As=x.Group,zs=x.Portal,Fs=x.Sub,Ls=x.RadioGroup,Oa=n.forwardRef(({className:a,...t},r)=>e.jsx(x.Root,{ref:r,className:s("flex h-10 items-center space-x-1 rounded-md border bg-background p-1",a),...t}));Oa.displayName=x.Root.displayName;const Ba=n.forwardRef(({className:a,...t},r)=>e.jsx(x.Trigger,{ref:r,className:s("flex cursor-default select-none items-center rounded-sm px-3 py-1.5 text-sm font-medium outline-none data-[state=open]:bg-accent data-[state=open]:text-accent-foreground focus:bg-accent focus:text-accent-foreground",a),...t}));Ba.displayName=x.Trigger.displayName;const Ga=n.forwardRef(({className:a,inset:t,children:r,...o},i)=>e.jsxs(x.SubTrigger,{ref:i,className:s("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[state=open]:bg-accent data-[state=open]:text-accent-foreground focus:bg-accent focus:text-accent-foreground",t&&"pl-8",a),...o,children:[r,e.jsx(m.ChevronRight,{className:"ml-auto h-4 w-4"})]}));Ga.displayName=x.SubTrigger.displayName;const Ea=n.forwardRef(({className:a,...t},r)=>e.jsx(x.SubContent,{ref:r,className:s("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground 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",a),...t}));Ea.displayName=x.SubContent.displayName;const qa=n.forwardRef(({className:a,align:t="start",alignOffset:r=-4,sideOffset:o=8,...i},l)=>e.jsx(x.Portal,{children:e.jsx(x.Content,{ref:l,align:t,alignOffset:r,sideOffset:o,className:s("z-50 min-w-[12rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in 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",a),...i})}));qa.displayName=x.Content.displayName;const Ha=n.forwardRef(({className:a,inset:t,...r},o)=>e.jsx(x.Item,{ref:o,className:s("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground",t&&"pl-8",a),...r}));Ha.displayName=x.Item.displayName;const Va=n.forwardRef(({className:a,children:t,checked:r,...o},i)=>e.jsxs(x.CheckboxItem,{ref:i,className:s("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground",a),checked:r,...o,children:[e.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx(x.ItemIndicator,{children:e.jsx(m.Check,{className:"h-4 w-4"})})}),t]}));Va.displayName=x.CheckboxItem.displayName;const $a=n.forwardRef(({className:a,children:t,...r},o)=>e.jsxs(x.RadioItem,{ref:o,className:s("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground",a),...r,children:[e.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx(x.ItemIndicator,{children:e.jsx(m.Circle,{className:"h-2 w-2 fill-current"})})}),t]}));$a.displayName=x.RadioItem.displayName;const Ua=n.forwardRef(({className:a,inset:t,...r},o)=>e.jsx(x.Label,{ref:o,className:s("px-2 py-1.5 text-sm font-semibold",t&&"pl-8",a),...r}));Ua.displayName=x.Label.displayName;const Ka=n.forwardRef(({className:a,...t},r)=>e.jsx(x.Separator,{ref:r,className:s("-mx-1 my-1 h-px bg-muted",a),...t}));Ka.displayName=x.Separator.displayName;const Wa=({className:a,...t})=>e.jsx("span",{className:s("ml-auto text-xs tracking-widest text-muted-foreground",a),...t});Wa.displayname="MenubarShortcut";const Xa=n.forwardRef(({className:a,children:t,...r},o)=>e.jsxs(T.Root,{ref:o,className:s("relative z-10 flex max-w-max flex-1 items-center justify-center",a),...r,children:[t,e.jsx(Ie,{})]}));Xa.displayName=T.Root.displayName;const Ya=n.forwardRef(({className:a,...t},r)=>e.jsx(T.List,{ref:r,className:s("group flex flex-1 list-none items-center justify-center space-x-1",a),...t}));Ya.displayName=T.List.displayName;const Os=T.Item,Ja=z.cva("group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50"),Qa=n.forwardRef(({className:a,children:t,...r},o)=>e.jsxs(T.Trigger,{ref:o,className:s(Ja(),"group",a),...r,children:[t," ",e.jsx(m.ChevronDown,{className:"relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180","aria-hidden":"true"})]}));Qa.displayName=T.Trigger.displayName;const Za=n.forwardRef(({className:a,...t},r)=>e.jsx(T.Content,{ref:r,className:s("left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto",a),...t}));Za.displayName=T.Content.displayName;const Bs=T.Link,Ie=n.forwardRef(({className:a,...t},r)=>e.jsx("div",{className:s("absolute left-0 top-full flex justify-center"),children:e.jsx(T.Viewport,{className:s("origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]",a),ref:r,...t})}));Ie.displayName=T.Viewport.displayName;const er=n.forwardRef(({className:a,...t},r)=>e.jsx(T.Indicator,{ref:r,className:s("top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in",a),...t,children:e.jsx("div",{className:"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md"})}));er.displayName=T.Indicator.displayName;const tr=({className:a,...t})=>e.jsx("nav",{role:"navigation","aria-label":"pagination",className:s("mx-auto flex w-full justify-center",a),...t});tr.displayName="Pagination";const ar=n.forwardRef(({className:a,...t},r)=>e.jsx("ul",{ref:r,className:s("flex flex-row items-center gap-1",a),...t}));ar.displayName="PaginationContent";const rr=n.forwardRef(({className:a,...t},r)=>e.jsx("li",{ref:r,className:s("",a),...t}));rr.displayName="PaginationItem";const ie=({className:a,isActive:t,size:r="icon",...o})=>e.jsx("a",{"aria-current":t?"page":void 0,className:s(E({variant:t?"outline":"ghost",size:r}),a),...o});ie.displayName="PaginationLink";const or=({className:a,...t})=>e.jsxs(ie,{"aria-label":"Go to previous page",size:"default",className:s("gap-1 pl-2.5",a),...t,children:[e.jsx(m.ChevronLeft,{className:"h-4 w-4"}),e.jsx("span",{children:"Previous"})]});or.displayName="PaginationPrevious";const sr=({className:a,...t})=>e.jsxs(ie,{"aria-label":"Go to next page",size:"default",className:s("gap-1 pr-2.5",a),...t,children:[e.jsx("span",{children:"Next"}),e.jsx(m.ChevronRight,{className:"h-4 w-4"})]});sr.displayName="PaginationNext";const nr=({className:a,...t})=>e.jsxs("span",{"aria-hidden":!0,className:s("flex h-9 w-9 items-center justify-center",a),...t,children:[e.jsx(m.MoreHorizontal,{className:"h-4 w-4"}),e.jsx("span",{className:"sr-only",children:"More pages"})]});nr.displayName="PaginationEllipsis";const Gs=K.Root,Es=K.Trigger,ir=n.forwardRef(({className:a,align:t="center",sideOffset:r=4,...o},i)=>e.jsx(K.Portal,{children:e.jsx(K.Content,{ref:i,align:t,sideOffset:r,className:s("z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none 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",a),...o})}));ir.displayName=K.Content.displayName;const lr=n.forwardRef(({className:a,value:t,...r},o)=>e.jsx(ue.Root,{ref:o,className:s("relative h-4 w-full overflow-hidden rounded-full bg-secondary",a),...r,children:e.jsx(ue.Indicator,{className:"h-full w-full flex-1 bg-primary transition-all",style:{transform:`translateX(-${100-(t||0)}%)`}})}));lr.displayName=ue.Root.displayName;const dr=n.forwardRef(({className:a,...t},r)=>e.jsx(W.Root,{className:s("grid gap-2",a),...t,ref:r}));dr.displayName=W.Root.displayName;const cr=n.forwardRef(({className:a,...t},r)=>e.jsx(W.Item,{ref:r,className:s("aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",a),...t,children:e.jsx(W.Indicator,{className:"flex items-center justify-center",children:e.jsx(m.Circle,{className:"h-2.5 w-2.5 fill-current text-current"})})}));cr.displayName=W.Item.displayName;const qs=({className:a,...t})=>e.jsx(we.PanelGroup,{className:s("flex h-full w-full data-[panel-group-direction=vertical]:flex-col",a),...t}),Hs=we.Panel,Vs=({withHandle:a,className:t,...r})=>e.jsx(we.PanelResizeHandle,{className:s("relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 [&[data-panel-group-direction=vertical]>div]:rotate-90",t),...r,children:a&&e.jsx("div",{className:"z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border",children:e.jsx(m.GripVertical,{className:"h-2.5 w-2.5"})})}),mr=n.forwardRef(({className:a,children:t,...r},o)=>e.jsxs(B.Root,{ref:o,className:s("relative overflow-hidden",a),...r,children:[e.jsx(B.Viewport,{className:"h-full w-full rounded-[inherit]",children:t}),e.jsx(Me,{}),e.jsx(B.Corner,{})]}));mr.displayName=B.Root.displayName;const Me=n.forwardRef(({className:a,orientation:t="vertical",...r},o)=>e.jsx(B.ScrollAreaScrollbar,{ref:o,orientation:t,className:s("flex touch-none select-none transition-colors",t==="vertical"&&"h-full w-2.5 border-l border-l-transparent p-[1px]",t==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",a),...r,children:e.jsx(B.ScrollAreaThumb,{className:"relative flex-1 rounded-full bg-border"})}));Me.displayName=B.ScrollAreaScrollbar.displayName;const xe=y.Root,$s=y.Group,ge=y.Value,te=n.forwardRef(({className:a,children:t,...r},o)=>e.jsxs(y.Trigger,{ref:o,className:s("flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",a),...r,children:[t,e.jsx(y.Icon,{asChild:!0,children:e.jsx(m.ChevronDown,{className:"h-4 w-4 opacity-50"})})]}));te.displayName=y.Trigger.displayName;const De=n.forwardRef(({className:a,...t},r)=>e.jsx(y.ScrollUpButton,{ref:r,className:s("flex cursor-default items-center justify-center py-1",a),...t,children:e.jsx(m.ChevronUp,{className:"h-4 w-4"})}));De.displayName=y.ScrollUpButton.displayName;const Pe=n.forwardRef(({className:a,...t},r)=>e.jsx(y.ScrollDownButton,{ref:r,className:s("flex cursor-default items-center justify-center py-1",a),...t,children:e.jsx(m.ChevronDown,{className:"h-4 w-4"})}));Pe.displayName=y.ScrollDownButton.displayName;const ae=n.forwardRef(({className:a,children:t,position:r="popper",...o},i)=>e.jsx(y.Portal,{children:e.jsxs(y.Content,{ref:i,className:s("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md 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",r==="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",a),position:r,...o,children:[e.jsx(De,{}),e.jsx(y.Viewport,{className:s("p-1",r==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:t}),e.jsx(Pe,{})]})}));ae.displayName=y.Content.displayName;const ur=n.forwardRef(({className:a,...t},r)=>e.jsx(y.Label,{ref:r,className:s("py-1.5 pl-8 pr-2 text-sm font-semibold",a),...t}));ur.displayName=y.Label.displayName;const re=n.forwardRef(({className:a,children:t,...r},o)=>e.jsxs(y.Item,{ref:o,className:s("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground",a),...r,children:[e.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx(y.ItemIndicator,{children:e.jsx(m.Check,{className:"h-4 w-4"})})}),e.jsx(y.ItemText,{children:t})]}));re.displayName=y.Item.displayName;const pr=n.forwardRef(({className:a,...t},r)=>e.jsx(y.Separator,{ref:r,className:s("-mx-1 my-1 h-px bg-muted",a),...t}));pr.displayName=y.Separator.displayName;const _e=n.forwardRef(({className:a,orientation:t="horizontal",decorative:r=!0,...o},i)=>e.jsx(Xe.Root,{ref:i,decorative:r,orientation:t,className:s("shrink-0 bg-border",t==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",a),...o}));_e.displayName=Xe.Root.displayName;const fr=g.Root,Us=g.Trigger,Ks=g.Close,xr=g.Portal,Ae=n.forwardRef(({className:a,...t},r)=>e.jsx(g.Overlay,{className:s("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",a),...t,ref:r}));Ae.displayName=g.Overlay.displayName;const Ws=z.cva("fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500",{variants:{side:{top:"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",bottom:"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",left:"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",right:"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"}},defaultVariants:{side:"right"}}),ze=n.forwardRef(({side:a="right",className:t,children:r,...o},i)=>e.jsxs(xr,{children:[e.jsx(Ae,{}),e.jsxs(g.Content,{ref:i,className:s(Ws({side:a}),t),...o,children:[r,e.jsxs(g.Close,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity data-[state=open]:bg-secondary hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",children:[e.jsx(m.X,{className:"h-4 w-4"}),e.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));ze.displayName=g.Content.displayName;const gr=({className:a,...t})=>e.jsx("div",{className:s("flex flex-col space-y-2 text-center sm:text-left",a),...t});gr.displayName="SheetHeader";const br=({className:a,...t})=>e.jsx("div",{className:s("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",a),...t});br.displayName="SheetFooter";const hr=n.forwardRef(({className:a,...t},r)=>e.jsx(g.Title,{ref:r,className:s("text-lg font-semibold text-foreground",a),...t}));hr.displayName=g.Title.displayName;const vr=n.forwardRef(({className:a,...t},r)=>e.jsx(g.Description,{ref:r,className:s("text-sm text-muted-foreground",a),...t}));vr.displayName=g.Description.displayName;const le=768;function Nr(){const[a,t]=n.useState(void 0);return n.useEffect(()=>{const r=window.matchMedia(`(max-width: ${le-1}px)`),o=()=>{t(window.innerWidth<le)};return r.addEventListener("change",o),t(window.innerWidth<le),()=>r.removeEventListener("change",o)},[]),!!a}function be({className:a,...t}){return e.jsx("div",{className:s("animate-pulse rounded-md bg-muted",a),...t})}const wr=X.Provider,yr=X.Root,jr=X.Trigger,Fe=n.forwardRef(({className:a,sideOffset:t=4,...r},o)=>e.jsx(X.Content,{ref:o,sideOffset:t,className:s("z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md 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",a),...r}));Fe.displayName=X.Content.displayName;const Xs="sidebar:state",Ys=60*60*24*7,Js="16rem",Qs="18rem",Zs="3rem",en="b",Cr=n.createContext(null);function Q(){const a=n.useContext(Cr);if(!a)throw new Error("useSidebar must be used within a SidebarProvider.");return a}const Sr=n.forwardRef(({defaultOpen:a=!0,open:t,onOpenChange:r,className:o,style:i,children:l,...d},u)=>{const N=Nr(),[c,I]=n.useState(!1),[F,O]=n.useState(a),A=t??F,j=n.useCallback(w=>{const S=typeof w=="function"?w(A):w;r?r(S):O(S),document.cookie=`${Xs}=${S}; path=/; max-age=${Ys}`},[r,A]),M=n.useCallback(()=>N?I(w=>!w):j(w=>!w),[N,j,I]);n.useEffect(()=>{const w=S=>{S.key===en&&(S.metaKey||S.ctrlKey)&&(S.preventDefault(),M())};return window.addEventListener("keydown",w),()=>window.removeEventListener("keydown",w)},[M]);const D=A?"expanded":"collapsed",b=n.useMemo(()=>({state:D,open:A,setOpen:j,isMobile:N,openMobile:c,setOpenMobile:I,toggleSidebar:M}),[D,A,j,N,c,I,M]);return e.jsx(Cr.Provider,{value:b,children:e.jsx(wr,{delayDuration:0,children:e.jsx("div",{style:{"--sidebar-width":Js,"--sidebar-width-icon":Zs,...i},className:s("group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar",o),ref:u,...d,children:l})})})});Sr.displayName="SidebarProvider";const Rr=n.forwardRef(({side:a="left",variant:t="sidebar",collapsible:r="offcanvas",className:o,children:i,...l},d)=>{const{isMobile:u,state:N,openMobile:c,setOpenMobile:I}=Q();return r==="none"?e.jsx("div",{className:s("flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground",o),ref:d,...l,children:i}):u?e.jsx(fr,{open:c,onOpenChange:I,...l,children:e.jsx(ze,{"data-sidebar":"sidebar","data-mobile":"true",className:"w-[--sidebar-width] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",style:{"--sidebar-width":Qs},side:a,children:e.jsx("div",{className:"flex h-full w-full flex-col",children:i})})}):e.jsxs("div",{ref:d,className:"group peer hidden text-sidebar-foreground md:block","data-state":N,"data-collapsible":N==="collapsed"?r:"","data-variant":t,"data-side":a,children:[e.jsx("div",{className:s("relative h-svh w-[--sidebar-width] bg-transparent transition-[width] duration-200 ease-linear","group-data-[collapsible=offcanvas]:w-0","group-data-[side=right]:rotate-180",t==="floating"||t==="inset"?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]":"group-data-[collapsible=icon]:w-[--sidebar-width-icon]")}),e.jsx("div",{className:s("fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] duration-200 ease-linear md:flex",a==="left"?"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]":"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",t==="floating"||t==="inset"?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]":"group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l",o),...l,children:e.jsx("div",{"data-sidebar":"sidebar",className:"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow",children:i})})]})});Rr.displayName="Sidebar";const Tr=n.forwardRef(({className:a,onClick:t,...r},o)=>{const{toggleSidebar:i}=Q();return e.jsxs(Y,{ref:o,"data-sidebar":"trigger",variant:"ghost",size:"icon",className:s("h-7 w-7",a),onClick:l=>{t==null||t(l),i()},...r,children:[e.jsx(m.PanelLeft,{}),e.jsx("span",{className:"sr-only",children:"Toggle Sidebar"})]})});Tr.displayName="SidebarTrigger";const kr=n.forwardRef(({className:a,...t},r)=>{const{toggleSidebar:o}=Q();return e.jsx("button",{ref:r,"data-sidebar":"rail","aria-label":"Toggle Sidebar",tabIndex:-1,onClick:o,title:"Toggle Sidebar",className:s("absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] group-data-[side=left]:-right-4 group-data-[side=right]:left-0 hover:after:bg-sidebar-border sm:flex","[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize","[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize","group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar","[[data-side=left][data-collapsible=offcanvas]_&]:-right-2","[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",a),...t})});kr.displayName="SidebarRail";const Ir=n.forwardRef(({className:a,...t},r)=>e.jsx("main",{ref:r,className:s("relative flex min-h-svh flex-1 flex-col bg-background","peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow",a),...t}));Ir.displayName="SidebarInset";const Mr=n.forwardRef(({className:a,...t},r)=>e.jsx(ke,{ref:r,"data-sidebar":"input",className:s("h-8 w-full bg-background shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring",a),...t}));Mr.displayName="SidebarInput";const Dr=n.forwardRef(({className:a,...t},r)=>e.jsx("div",{ref:r,"data-sidebar":"header",className:s("flex flex-col gap-2 p-2",a),...t}));Dr.displayName="SidebarHeader";const Pr=n.forwardRef(({className:a,...t},r)=>e.jsx("div",{ref:r,"data-sidebar":"footer",className:s("flex flex-col gap-2 p-2",a),...t}));Pr.displayName="SidebarFooter";const _r=n.forwardRef(({className:a,...t},r)=>e.jsx(_e,{ref:r,"data-sidebar":"separator",className:s("mx-2 w-auto bg-sidebar-border",a),...t}));_r.displayName="SidebarSeparator";const Ar=n.forwardRef(({className:a,...t},r)=>e.jsx("div",{ref:r,"data-sidebar":"content",className:s("flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",a),...t}));Ar.displayName="SidebarContent";const zr=n.forwardRef(({className:a,...t},r)=>e.jsx("div",{ref:r,"data-sidebar":"group",className:s("relative flex w-full min-w-0 flex-col p-2",a),...t}));zr.displayName="SidebarGroup";const Fr=n.forwardRef(({className:a,asChild:t=!1,...r},o)=>{const i=t?L.Slot:"div";return e.jsx(i,{ref:o,"data-sidebar":"group-label",className:s("flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opa] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",a),...r})});Fr.displayName="SidebarGroupLabel";const Lr=n.forwardRef(({className:a,asChild:t=!1,...r},o)=>{const i=t?L.Slot:"button";return e.jsx(i,{ref:o,"data-sidebar":"group-action",className:s("absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","after:absolute after:-inset-2 after:md:hidden","group-data-[collapsible=icon]:hidden",a),...r})});Lr.displayName="SidebarGroupAction";const Or=n.forwardRef(({className:a,...t},r)=>e.jsx("div",{ref:r,"data-sidebar":"group-content",className:s("w-full text-sm",a),...t}));Or.displayName="SidebarGroupContent";const Br=n.forwardRef(({className:a,...t},r)=>e.jsx("ul",{ref:r,"data-sidebar":"menu",className:s("flex w-full min-w-0 flex-col gap-1",a),...t}));Br.displayName="SidebarMenu";const Gr=n.forwardRef(({className:a,...t},r)=>e.jsx("li",{ref:r,"data-sidebar":"menu-item",className:s("group/menu-item relative",a),...t}));Gr.displayName="SidebarMenuItem";const tn=z.cva("peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground 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-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",{variants:{variant:{default:"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",outline:"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))]"},size:{default:"h-8 text-sm",sm:"h-7 text-xs",lg:"h-12 text-sm group-data-[collapsible=icon]:!p-0"}},defaultVariants:{variant:"default",size:"default"}}),Er=n.forwardRef(({asChild:a=!1,isActive:t=!1,variant:r="default",size:o="default",tooltip:i,className:l,...d},u)=>{const N=a?L.Slot:"button",{isMobile:c,state:I}=Q(),F=e.jsx(N,{ref:u,"data-sidebar":"menu-button","data-size":o,"data-active":t,className:s(tn({variant:r,size:o}),l),...d});return i?(typeof i=="string"&&(i={children:i}),e.jsxs(yr,{children:[e.jsx(jr,{asChild:!0,children:F}),e.jsx(Fe,{side:"right",align:"center",hidden:I!=="collapsed"||c,...i})]})):F});Er.displayName="SidebarMenuButton";const qr=n.forwardRef(({className:a,asChild:t=!1,showOnHover:r=!1,...o},i)=>{const l=t?L.Slot:"button";return e.jsx(l,{ref:i,"data-sidebar":"menu-action",className:s("absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform peer-hover/menu-button:text-sidebar-accent-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","after:absolute after:-inset-2 after:md:hidden","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:hidden",r&&"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0",a),...o})});qr.displayName="SidebarMenuAction";const Hr=n.forwardRef(({className:a,...t},r)=>e.jsx("div",{ref:r,"data-sidebar":"menu-badge",className:s("pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground","peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:hidden",a),...t}));Hr.displayName="SidebarMenuBadge";const Vr=n.forwardRef(({className:a,showIcon:t=!1,...r},o)=>{const i=n.useMemo(()=>`${Math.floor(Math.random()*40)+50}%`,[]);return e.jsxs("div",{ref:o,"data-sidebar":"menu-skeleton",className:s("flex h-8 items-center gap-2 rounded-md px-2",a),...r,children:[t&&e.jsx(be,{className:"size-4 rounded-md","data-sidebar":"menu-skeleton-icon"}),e.jsx(be,{className:"h-4 max-w-[--skeleton-width] flex-1","data-sidebar":"menu-skeleton-text",style:{"--skeleton-width":i}})]})});Vr.displayName="SidebarMenuSkeleton";const $r=n.forwardRef(({className:a,...t},r)=>e.jsx("ul",{ref:r,"data-sidebar":"menu-sub",className:s("mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5","group-data-[collapsible=icon]:hidden",a),...t}));$r.displayName="SidebarMenuSub";const Ur=n.forwardRef(({...a},t)=>e.jsx("li",{ref:t,...a}));Ur.displayName="SidebarMenuSubItem";const Kr=n.forwardRef(({asChild:a=!1,size:t="md",isActive:r,className:o,...i},l)=>{const d=a?L.Slot:"a";return e.jsx(d,{ref:l,"data-sidebar":"menu-sub-button","data-size":t,"data-active":r,className:s("flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring aria-disabled:pointer-events-none aria-disabled:opacity-50 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground","data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground",t==="sm"&&"text-xs",t==="md"&&"text-sm","group-data-[collapsible=icon]:hidden",o),...i})});Kr.displayName="SidebarMenuSubButton";const Wr=n.forwardRef(({className:a,...t},r)=>e.jsxs($.Root,{ref:r,className:s("relative flex w-full touch-none select-none items-center",a),...t,children:[e.jsx($.Track,{className:"relative h-2 w-full grow overflow-hidden rounded-full bg-secondary",children:e.jsx($.Range,{className:"absolute h-full bg-primary"})}),e.jsx($.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"})]}));Wr.displayName=$.Root.displayName;const an=({...a})=>{const{theme:t="system"}=$o.useTheme();return e.jsx(Ke.Toaster,{theme:t,className:"toaster group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"}},...a})},Xr=n.forwardRef(({className:a,...t},r)=>e.jsx(pe.Root,{className:s("peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors data-[state=checked]:bg-primary data-[state=unchecked]:bg-input 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",a),...t,ref:r,children:e.jsx(pe.Thumb,{className:s("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")})}));Xr.displayName=pe.Root.displayName;const Yr=n.forwardRef(({className:a,...t},r)=>e.jsx("div",{className:"relative w-full overflow-auto",children:e.jsx("table",{ref:r,className:s("w-full caption-bottom text-sm",a),...t})}));Yr.displayName="Table";const Jr=n.forwardRef(({className:a,...t},r)=>e.jsx("thead",{ref:r,className:s("[&_tr]:border-b",a),...t}));Jr.displayName="TableHeader";const Qr=n.forwardRef(({className:a,...t},r)=>e.jsx("tbody",{ref:r,className:s("[&_tr:last-child]:border-0",a),...t}));Qr.displayName="TableBody";const Zr=n.forwardRef(({className:a,...t},r)=>e.jsx("tfoot",{ref:r,className:s("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",a),...t}));Zr.displayName="TableFooter";const eo=n.forwardRef(({className:a,...t},r)=>e.jsx("tr",{ref:r,className:s("border-b transition-colors data-[state=selected]:bg-muted hover:bg-muted/50",a),...t}));eo.displayName="TableRow";const to=n.forwardRef(({className:a,...t},r)=>e.jsx("th",{ref:r,className:s("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",a),...t}));to.displayName="TableHead";const ao=n.forwardRef(({className:a,...t},r)=>e.jsx("td",{ref:r,className:s("p-4 align-middle [&:has([role=checkbox])]:pr-0",a),...t}));ao.displayName="TableCell";const ro=n.forwardRef(({className:a,...t},r)=>e.jsx("caption",{ref:r,className:s("mt-4 text-sm text-muted-foreground",a),...t}));ro.displayName="TableCaption";const rn=q.Root,oo=n.forwardRef(({className:a,...t},r)=>e.jsx(q.List,{ref:r,className:s("inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",a),...t}));oo.displayName=q.List.displayName;const so=n.forwardRef(({className:a,...t},r)=>e.jsx(q.Trigger,{ref:r,className:s("inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",a),...t}));so.displayName=q.Trigger.displayName;const no=n.forwardRef(({className:a,...t},r)=>e.jsx(q.Content,{ref:r,className:s("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",a),...t}));no.displayName=q.Content.displayName;const io=n.forwardRef(({className:a,...t},r)=>e.jsx("textarea",{className:s("flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background 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",a),ref:r,...t}));io.displayName="Textarea";const lo=k.Provider,Le=n.forwardRef(({className:a,...t},r)=>e.jsx(k.Viewport,{ref:r,className:s("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",a),...t}));Le.displayName=k.Viewport.displayName;const on=z.cva("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),Oe=n.forwardRef(({className:a,variant:t,...r},o)=>e.jsx(k.Root,{ref:o,className:s(on({variant:t}),a),...r}));Oe.displayName=k.Root.displayName;const co=n.forwardRef(({className:a,...t},r)=>e.jsx(k.Action,{ref:r,className:s("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors group-[.destructive]:border-muted/40 hover:bg-secondary group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 group-[.destructive]:focus:ring-destructive disabled:pointer-events-none disabled:opacity-50",a),...t}));co.displayName=k.Action.displayName;const Be=n.forwardRef(({className:a,...t},r)=>e.jsx(k.Close,{ref:r,className:s("absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity group-hover:opacity-100 group-[.destructive]:text-red-300 hover:text-foreground group-[.destructive]:hover:text-red-50 focus:opacity-100 focus:outline-none focus:ring-2 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",a),"toast-close":"",...t,children:e.jsx(m.X,{className:"h-4 w-4"})}));Be.displayName=k.Close.displayName;const Ge=n.forwardRef(({className:a,...t},r)=>e.jsx(k.Title,{ref:r,className:s("text-sm font-semibold",a),...t}));Ge.displayName=k.Title.displayName;const Ee=n.forwardRef(({className:a,...t},r)=>e.jsx(k.Description,{ref:r,className:s("text-sm opacity-90",a),...t}));Ee.displayName=k.Description.displayName;const sn=1,nn=1e6;let de=0;function ln(){return de=(de+1)%Number.MAX_SAFE_INTEGER,de.toString()}const ce=new Map,He=a=>{if(ce.has(a))return;const t=setTimeout(()=>{ce.delete(a),U({type:"REMOVE_TOAST",toastId:a})},nn);ce.set(a,t)},dn=(a,t)=>{switch(t.type){case"ADD_TOAST":return{...a,toasts:[t.toast,...a.toasts].slice(0,sn)};case"UPDATE_TOAST":return{...a,toasts:a.toasts.map(r=>r.id===t.toast.id?{...r,...t.toast}:r)};case"DISMISS_TOAST":{const{toastId:r}=t;return r?He(r):a.toasts.forEach(o=>{He(o.id)}),{...a,toasts:a.toasts.map(o=>o.id===r||r===void 0?{...o,open:!1}:o)}}case"REMOVE_TOAST":return t.toastId===void 0?{...a,toasts:[]}:{...a,toasts:a.toasts.filter(r=>r.id!==t.toastId)}}},Z=[];let ee={toasts:[]};function U(a){ee=dn(ee,a),Z.forEach(t=>{t(ee)})}function mo({...a}){const t=ln(),r=i=>U({type:"UPDATE_TOAST",toast:{...i,id:t}}),o=()=>U({type:"DISMISS_TOAST",toastId:t});return U({type:"ADD_TOAST",toast:{...a,id:t,open:!0,onOpenChange:i=>{i||o()}}}),{id:t,dismiss:o,update:r}}function uo(){const[a,t]=n.useState(ee);return n.useEffect(()=>(Z.push(t),()=>{const r=Z.indexOf(t);r>-1&&Z.splice(r,1)}),[a]),{...a,toast:mo,dismiss:r=>U({type:"DISMISS_TOAST",toastId:r})}}function cn(){const{toasts:a}=uo();return e.jsxs(lo,{children:[a.map(function({id:t,title:r,description:o,action:i,...l}){return e.jsxs(Oe,{...l,children:[e.jsxs("div",{className:"grid gap-1",children:[r&&e.jsx(Ge,{children:r}),o&&e.jsx(Ee,{children:o})]}),i,e.jsx(Be,{})]},t)}),e.jsx(Le,{})]})}const qe=z.cva("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-accent data-[state=on]:text-accent-foreground",{variants:{variant:{default:"bg-transparent",outline:"border border-input bg-transparent hover:bg-accent hover:text-accent-foreground"},size:{default:"h-10 px-3",sm:"h-9 px-2.5",lg:"h-11 px-5"}},defaultVariants:{variant:"default",size:"default"}}),po=n.forwardRef(({className:a,variant:t,size:r,...o},i)=>e.jsx(Ye.Root,{ref:i,className:s(qe({variant:t,size:r,className:a})),...o}));po.displayName=Ye.Root.displayName;const fo=n.createContext({size:"default",variant:"default"}),xo=n.forwardRef(({className:a,variant:t,size:r,children:o,...i},l)=>e.jsx(se.Root,{ref:l,className:s("flex items-center justify-center gap-1",a),...i,children:e.jsx(fo.Provider,{value:{variant:t,size:r},children:o})}));xo.displayName=se.Root.displayName;const go=n.forwardRef(({className:a,children:t,variant:r,size:o,...i},l)=>{const d=n.useContext(fo);return e.jsx(se.Item,{ref:l,className:s(qe({variant:d.variant||r,size:d.size||o}),a),...i,children:t})});go.displayName=se.Item.displayName;function mn({title:a,subtitle:t,author:r,date:o,readTime:i,category:l}){return e.jsxs("header",{className:"space-y-6 text-center",children:[e.jsx("div",{className:"inline-flex items-center rounded-full bg-accent px-4 py-1.5 text-sm font-medium text-primary",children:l}),e.jsx("h1",{className:"font-display text-4xl font-bold leading-tight tracking-tight text-foreground sm:text-5xl lg:text-6xl",children:a}),t&&e.jsx("p",{className:"mx-auto max-w-2xl text-lg leading-relaxed text-muted-foreground sm:text-xl",children:t}),e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-4 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(p.UserIcon,{className:"h-4 w-4"}),e.jsx("span",{children:r})]}),e.jsx("span",{className:"hidden sm:inline",children:"·"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(p.CalendarIcon,{className:"h-4 w-4"}),e.jsx("span",{children:o})]}),e.jsx("span",{className:"hidden sm:inline",children:"·"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(p.ClockIcon,{className:"h-4 w-4"}),e.jsx("span",{children:i})]})]})]})}const un=[{value:"api-design",label:"API Design"},{value:"authentication",label:"Authentication"},{value:"rate-limiting",label:"Rate Limiting"},{value:"monetization",label:"Monetization"}],Ve=[{value:"getting-started",label:"Getting Started with API Gateways",topic:"api-design"},{value:"api-versioning",label:"API Versioning Strategies",topic:"api-design"},{value:"rest-best-practices",label:"REST API Best Practices",topic:"api-design"},{value:"auth-best-practices",label:"Authentication Best Practices",topic:"authentication"},{value:"jwt-guide",label:"JWT Token Guide",topic:"authentication"},{value:"oauth-flows",label:"OAuth 2.0 Flows Explained",topic:"authentication"},{value:"rate-limit-patterns",label:"Rate Limiting Patterns",topic:"rate-limiting"},{value:"rate-limit-reference",label:"Rate Limiting Policy Reference",topic:"rate-limiting"},{value:"rate-limit-sample",label:"Rate Limiting Sample",topic:"rate-limiting"},{value:"api-monetization",label:"How to Monetize Your API",topic:"monetization"},{value:"pricing-models",label:"API Pricing Models",topic:"monetization"},{value:"usage-billing",label:"Usage-Based Billing Setup",topic:"monetization"}];function pn({currentTopic:a="api-design",currentPost:t="getting-started",onTopicChange:r,onPostChange:o,hideFilters:i=!1}){const l=a?Ve.filter(d=>d.topic===a):Ve;return e.jsx("nav",{className:"sticky top-0 z-50 w-full bg-background border-b border-border/40",children:e.jsxs("div",{className:"max-w-4xl mx-auto px-6 py-3 flex items-center gap-4",children:[e.jsx("a",{href:"/",className:"font-display font-semibold text-foreground hover:text-primary transition-colors",children:"Blog"}),!i&&e.jsxs("div",{className:"flex items-center gap-3 ml-auto",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-sm text-muted-foreground hidden sm:inline",children:"Topic:"}),e.jsxs(xe,{value:a,onValueChange:r,children:[e.jsx(te,{className:"w-[160px] h-9 rounded-full border-border-light bg-background text-sm",children:e.jsx(ge,{placeholder:"Select topic"})}),e.jsx(ae,{className:"bg-background border-border",children:un.map(d=>e.jsx(re,{value:d.value,children:d.label},d.value))})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-sm text-muted-foreground hidden sm:inline",children:"Post:"}),e.jsxs(xe,{value:t,onValueChange:o,children:[e.jsx(te,{className:"w-[220px] h-9 rounded-full border-border-light bg-background text-sm",children:e.jsx(ge,{placeholder:"Select post"})}),e.jsx(ae,{className:"bg-background border-border",children:l.map(d=>e.jsx(re,{value:d.value,children:d.label},d.value))})]})]})]})]})})}function fn({variant:a="bestFor",items:t}){const r=a==="bestFor";return e.jsxs("div",{className:"rounded-lg border border-border-light bg-muted/30 p-5",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[r?e.jsx(p.TargetIcon,{weight:"fill",className:"h-4 w-4 text-primary"}):e.jsx(p.UsersFourIcon,{weight:"fill",className:"h-4 w-4 text-primary"}),e.jsx("span",{className:"font-display text-sm font-semibold text-foreground",children:r?"Best for:":"Use this approach if you're:"})]}),e.jsx("ul",{className:"space-y-2",children:t.map((o,i)=>e.jsxs("li",{className:"flex items-start gap-2 text-sm text-muted-foreground",children:[e.jsx(p.CheckCircleIcon,{weight:"fill",className:"h-4 w-4 text-primary/70 mt-0.5 shrink-0"}),e.jsx("span",{children:o})]},i))})]})}function xn({title:a,description:t,code:r,language:o="typescript"}){const[i,l]=$e.useState(!1),d=()=>{navigator.clipboard.writeText(r),l(!0),setTimeout(()=>l(!1),2e3)};return e.jsxs("div",{className:"overflow-hidden rounded-lg",children:[e.jsxs("div",{className:"p-5 pb-3",style:{backgroundColor:"#20222E"},children:[e.jsx("h3",{className:"font-mono text-sm font-normal text-white",children:a}),t&&e.jsx("p",{className:"mt-1 text-sm text-white/60",children:t})]}),e.jsx("div",{className:"h-px bg-gray-600"}),e.jsxs("div",{className:"relative px-5 py-4",style:{backgroundColor:"#20222E"},children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("span",{className:"text-xs font-mono text-white/40 uppercase tracking-wider",children:o}),e.jsx("button",{onClick:d,className:"flex items-center gap-1.5 text-xs text-white/40 hover:text-white/70 transition-colors",children:i?e.jsxs(e.Fragment,{children:[e.jsx(p.CheckIcon,{className:"h-3.5 w-3.5 text-green-500"}),e.jsx("span",{children:"Copied!"})]}):e.jsxs(e.Fragment,{children:[e.jsx(p.CopyIcon,{className:"h-3.5 w-3.5"}),e.jsx("span",{children:"Copy"})]})})]}),e.jsx("pre",{className:"overflow-x-auto text-sm !bg-transparent",children:e.jsx("code",{className:"font-mono text-white !bg-transparent",children:r})})]})]})}function bo({features:a,className:t}){return!a||a.length===0?null:e.jsx("div",{className:`flex items-center justify-center px-6 py-3 bg-[#fafafa] ${t||""}`,children:a.map((r,o)=>e.jsxs("span",{className:"flex items-center justify-center gap-1.5 text-sm text-foreground flex-1",children:[e.jsx(p.CheckCircleIcon,{className:"w-4 h-4 text-primary flex-shrink-0",weight:"fill"}),r]},o))})}const gn={file:p.FileTextIcon,book:p.BookOpenIcon,code:p.CodeIcon,lightning:p.LightningIcon};function bn({title:a,description:t,href:r,icon:o="file",badge:i,features:l,tip:d}){const u=gn[o],N=e.jsxs("div",{className:s("my-8 rounded-lg border border-border/40 bg-card overflow-hidden",r&&"group transition-all hover:border-primary/30 hover:shadow-lg"),children:[e.jsx("div",{className:"p-6 pb-[16px]",children:e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsx("div",{className:"flex-shrink-0 w-10 h-10 rounded-lg bg-[#FCF3F8] flex items-center justify-center",children:e.jsx(u,{className:"w-5 h-5 text-primary",weight:"duotone"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsxs("h4",{className:s("font-display font-semibold text-foreground flex items-center gap-1",r&&"group-hover:text-primary transition-colors"),children:[a,r&&e.jsx(p.ArrowUpRightIcon,{className:"h-4 w-4 opacity-0 -translate-y-0.5 translate-x-0.5 transition-all group-hover:opacity-100 group-hover:translate-y-0 group-hover:translate-x-0"})]}),i&&e.jsx("span",{className:"px-2 py-0.5 text-xs font-medium rounded-full bg-muted text-muted-foreground",children:i})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:t}),d&&e.jsxs("div",{className:"mt-3 p-3 rounded-md bg-muted/50 border-l-2 border-primary",children:[e.jsx("p",{className:"text-xs font-medium text-muted-foreground mb-1",children:"Pro tip:"}),e.jsx("p",{className:"text-sm text-foreground",children:d})]})]})]})}),l&&l.length>0&&e.jsx(bo,{features:l})]});return r?e.jsx("a",{href:r,target:"_blank",rel:"noopener noreferrer",className:"block",children:N}):N}function hn({label:a="Next step",title:t,href:r,external:o=!1}){return e.jsxs("a",{href:r,target:o?"_blank":void 0,rel:o?"noopener noreferrer":void 0,className:"group inline-flex items-center gap-2 text-sm transition-colors hover:text-primary",children:[e.jsxs("span",{className:"font-medium text-[#20222E]",children:[a,":"]}),e.jsx("span",{className:"text-muted-foreground group-hover:underline underline-offset-2 group-hover:text-primary",children:t}),e.jsx(p.ArrowRightIcon,{className:"h-4 w-4 transition-transform group-hover:translate-x-0.5"})]})}function vn({title:a,description:t,deployUrl:r,repoUrl:o,localCommand:i="npx create-zuplo-app"}){const l=()=>{navigator.clipboard.writeText(i)};return e.jsxs("div",{className:"relative overflow-hidden rounded-lg",children:[e.jsx("div",{className:"absolute inset-0 rounded-lg p-[1px] bg-gradient-to-br from-primary via-primary/50 to-border-light",children:e.jsx("div",{className:"h-full w-full rounded-lg bg-background"})}),e.jsxs("div",{className:"relative z-10 p-6 sm:p-8",children:[e.jsx("div",{className:"flex items-start justify-between gap-4 mb-4",children:e.jsx("div",{className:"flex items-center gap-3",children:e.jsxs("div",{children:[e.jsxs("span",{className:"inline-flex items-center gap-1 rounded-full bg-primary/10 px-2.5 py-0.5 text-xs font-medium text-primary mb-[16px]",children:[e.jsx(p.RocketIcon,{weight:"fill",className:"h-3 w-3"}),"Try it yourself"]}),e.jsx("h3",{className:"font-display text-xl font-semibold text-foreground",children:a})]})})}),e.jsx("p",{className:"text-muted-foreground mb-6",children:t}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 sm:gap-3",children:[e.jsxs("a",{href:r,target:"_blank",rel:"noopener noreferrer",className:"group inline-flex items-center justify-center gap-1.5 rounded-full bg-primary px-4 py-2 text-sm font-medium text-primary-foreground transition-all hover:bg-primary/90 hover:shadow-lg hover:shadow-primary/20 whitespace-nowrap",children:[e.jsx(p.RocketIcon,{weight:"bold",className:"h-3.5 w-3.5"}),"Deploy to Zuplo",e.jsx(p.ArrowRightIcon,{className:"h-3.5 w-3.5 transition-transform group-hover:translate-x-0.5"})]}),e.jsxs("button",{onClick:l,className:"group inline-flex items-center justify-center gap-1.5 rounded-full border border-border bg-background px-4 py-2 text-sm font-medium text-foreground transition-all hover:border-primary/30 hover:bg-muted/50 whitespace-nowrap",children:[e.jsx(p.TerminalIcon,{weight:"bold",className:"h-3.5 w-3.5"}),e.jsx("span",{className:"font-mono text-xs",children:i})]}),e.jsxs("a",{href:o,target:"_blank",rel:"noopener noreferrer",className:"group inline-flex items-center justify-center gap-1.5 rounded-full border-border bg-secondary px-4 py-2 text-sm font-medium text-secondary-foreground transition-all hover:bg-secondary/80 whitespace-nowrap border-0",children:[e.jsx(p.GithubLogoIcon,{weight:"fill",className:"h-3.5 w-3.5"}),"GitHub"]})]}),e.jsx("div",{className:"absolute -right-8 -top-8 h-32 w-32 rounded-full bg-primary/5 blur-2xl"}),e.jsx("div",{className:"absolute -bottom-4 -left-4 h-24 w-24 rounded-full bg-primary/5 blur-xl"})]})]})}function Nn({variant:a="tip",children:t}){const r=a==="tip";return e.jsx("div",{className:`rounded-lg p-4 ${r?"bg-muted/50 border border-border":"bg-blue-50 border border-blue-200"}`,children:e.jsxs("p",{className:`text-sm ${r?"text-[#20222E]":"text-blue-800"}`,children:[r?e.jsxs(e.Fragment,{children:[e.jsx(p.LightbulbIcon,{weight:"fill",className:"inline h-4 w-4 mr-1.5 text-[#64748B]"}),e.jsx("span",{className:"font-semibold",children:"Pro tip:"})]}):e.jsxs(e.Fragment,{children:[e.jsx(p.WarningIcon,{weight:"fill",className:"inline h-4 w-4 mr-1.5 text-blue-600"}),e.jsx("span",{className:"font-semibold",children:"Common mistake:"})]})," ",t]})})}function wn({title:a,description:t,videoUrl:r,thumbnailUrl:o,duration:i,variant:l="card"}){if(l!=="button")return l==="inline"?e.jsxs("a",{href:r,target:"_blank",rel:"noopener noreferrer",className:"group flex items-center gap-3 rounded-lg border border-border/40 bg-background p-3 transition-all hover:border-primary/30 hover:bg-muted/30",children:[e.jsx("div",{className:"flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-[#FF0000]/10",children:e.jsx(p.YoutubeLogoIcon,{weight:"fill",className:"h-5 w-5 text-[#FF0000]"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-medium text-sm text-foreground group-hover:text-primary transition-colors truncate",children:a}),i&&e.jsx("span",{className:"shrink-0 rounded bg-muted px-1.5 py-0.5 font-mono text-xs text-muted-foreground",children:i})]}),t&&e.jsx("p",{className:"text-xs text-muted-foreground truncate mt-0.5",children:t})]}),e.jsx(p.ArrowUpRightIcon,{className:"h-4 w-4 shrink-0 text-muted-foreground opacity-0 transition-all group-hover:opacity-100"})]}):e.jsx("a",{href:r,target:"_blank",rel:"noopener noreferrer",className:"group block overflow-hidden rounded-lg border border-border/40 bg-background transition-all hover:border-primary/30 hover:shadow-lg",children:e.jsxs("div",{className:"flex flex-col sm:flex-row",children:[e.jsxs("div",{className:"relative aspect-video sm:aspect-auto sm:w-48 shrink-0 bg-muted overflow-hidden",children:[o?e.jsx("img",{src:o,alt:a,className:"h-full w-full object-cover transition-transform group-hover:scale-105"}):e.jsx("div",{className:"flex h-full w-full items-center justify-center bg-gradient-to-br from-primary/10 to-primary/5",children:e.jsx(p.YoutubeLogoIcon,{weight:"fill",className:"h-12 w-12 text-primary/60"})}),e.jsx("div",{className:"absolute inset-0 flex items-center justify-center bg-foreground/10 opacity-0 transition-opacity group-hover:opacity-100"}),i&&e.jsx("span",{className:"absolute bottom-2 right-2 rounded bg-foreground/80 px-1.5 py-0.5 font-mono text-xs text-background",children:i})]}),e.jsxs("div",{className:"flex flex-1 flex-col justify-center p-4 py-3",children:[e.jsx("span",{className:"text-xs font-medium text-muted-foreground uppercase tracking-wider mb-2",children:"Video Tutorial"}),e.jsxs("h4",{className:"font-display font-semibold text-foreground group-hover:text-primary transition-colors flex items-center gap-1",children:[a,e.jsx(p.ArrowUpRightIcon,{className:"h-4 w-4 opacity-0 -translate-y-0.5 translate-x-0.5 transition-all group-hover:opacity-100 group-hover:translate-y-0 group-hover:translate-x-0"})]}),t&&e.jsx("p",{className:"mt-1.5 text-sm text-muted-foreground line-clamp-2",children:t})]})]})})}function yn({articles:a,title:t="Related Articles",subtitle:r}){return e.jsxs("section",{className:"space-y-6",children:[(t||r)&&e.jsxs("div",{className:"mb-2",children:[t&&e.jsx("h2",{className:"font-display text-2xl font-semibold text-foreground mb-2",children:t}),r&&e.jsx("p",{className:"text-base text-muted-foreground",children:r})]}),e.jsx("div",{className:"grid gap-6 sm:grid-cols-2",children:a.map((o,i)=>e.jsxs(Jo.Link,{to:o.href,className:"group relative flex flex-col overflow-hidden rounded-lg border border-border/40 bg-card p-5 shadow-card transition-all duration-300 hover:-translate-y-1 hover:shadow-card-hover",style:{animationDelay:`${i*100}ms`},children:[e.jsxs("div",{className:"mb-3 flex items-center justify-between",children:[e.jsx("span",{className:"rounded-full bg-accent px-3 py-1 text-xs font-medium text-primary",children:o.category}),e.jsx(p.ArrowUpRightIcon,{className:"h-4 w-4 text-muted-foreground transition-all duration-300 group-hover:-translate-y-0.5 group-hover:translate-x-0.5 group-hover:text-primary"})]}),e.jsx("h3",{className:"mb-2 font-display text-lg font-semibold leading-snug text-foreground transition-colors group-hover:text-primary",children:o.title}),e.jsx("p",{className:"mb-4 flex-1 text-sm leading-relaxed text-muted-foreground",children:o.excerpt}),e.jsxs("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[e.jsx(p.ClockIcon,{className:"h-3.5 w-3.5"}),e.jsx("span",{children:o.readTime})]})]},o.id))})]})}function jn({items:a,title:t="On this page",className:r,activeSection:o,onSectionClick:i}){return!a||a.length===0?null:e.jsxs("div",{className:`border border-border/40 rounded-lg p-4 bg-background max-w-xs ${r||""}`,children:[e.jsx("p",{className:"font-display text-sm font-medium text-foreground mb-3",children:t}),e.jsx("nav",{className:"space-y-1",children:a.map(l=>e.jsx("a",{href:`#${l.id}`,onClick:()=>i==null?void 0:i(l.id),className:`block text-sm py-1.5 px-2 -mx-2 rounded-md transition-colors ${o===l.id?"text-primary font-medium bg-[#FCF3F8]":"text-muted-foreground hover:text-foreground"}`,children:l.label},l.id))})]})}function Cn({features:a,title:t="What's included",className:r}){return!a||a.length===0?null:e.jsxs("div",{className:r,children:[e.jsx("h2",{className:"font-display text-xl font-semibold text-foreground mb-6",children:t}),e.jsx("div",{className:"grid gap-4 sm:grid-cols-2",children:a.map(o=>e.jsxs("div",{className:"flex items-center gap-3 p-3 rounded-lg border border-border/40 bg-background",children:[e.jsx(p.CheckCircleIcon,{weight:"fill",className:"h-5 w-5 text-primary shrink-0"}),e.jsx("span",{className:"text-sm text-foreground",children:o})]},o))})]})}Object.defineProperty(exports,"sonnerToast",{enumerable:!0,get:()=>Ke.toast});exports.Accordion=Zo;exports.AccordionContent=Ze;exports.AccordionItem=Je;exports.AccordionTrigger=Qe;exports.Alert=et;exports.AlertDescription=at;exports.AlertDialog=ts;exports.AlertDialogAction=dt;exports.AlertDialogCancel=ct;exports.AlertDialogContent=ot;exports.AlertDialogDescription=lt;exports.AlertDialogFooter=nt;exports.AlertDialogHeader=st;exports.AlertDialogOverlay=ye;exports.AlertDialogPortal=rt;exports.AlertDialogTitle=it;exports.AlertDialogTrigger=as;exports.AlertTitle=tt;exports.AspectRatio=rs;exports.Avatar=mt;exports.AvatarFallback=pt;exports.AvatarImage=ut;exports.Badge=os;exports.BlogHeader=mn;exports.BlogNav=pn;exports.Breadcrumb=xt;exports.BreadcrumbEllipsis=wt;exports.BreadcrumbItem=bt;exports.BreadcrumbLink=ht;exports.BreadcrumbList=gt;exports.BreadcrumbPage=vt;exports.BreadcrumbSeparator=Nt;exports.Button=Y;exports.Calendar=yt;exports.CalloutAudience=fn;exports.CalloutCode=xn;exports.CalloutDoc=bn;exports.CalloutNextStep=hn;exports.CalloutSample=vn;exports.CalloutTip=Nn;exports.CalloutVideo=wn;exports.Card=jt;exports.CardContent=Tt;exports.CardDescription=Rt;exports.CardFooter=kt;exports.CardHeader=Ct;exports.CardTitle=St;exports.Carousel=Mt;exports.CarouselContent=Dt;exports.CarouselItem=Pt;exports.CarouselNext=At;exports.CarouselPrevious=_t;exports.ChartContainer=Lt;exports.ChartLegend=is;exports.ChartLegendContent=Gt;exports.ChartStyle=Ot;exports.ChartTooltip=ns;exports.ChartTooltipContent=Bt;exports.Checkbox=Et;exports.Collapsible=ls;exports.CollapsibleContent=cs;exports.CollapsibleTrigger=ds;exports.Command=Se;exports.CommandDialog=ps;exports.CommandEmpty=Yt;exports.CommandGroup=Jt;exports.CommandInput=Wt;exports.CommandItem=Zt;exports.CommandList=Xt;exports.CommandSeparator=Qt;exports.CommandShortcut=ea;exports.ContextMenu=fs;exports.ContextMenuCheckboxItem=sa;exports.ContextMenuContent=ra;exports.ContextMenuGroup=gs;exports.ContextMenuItem=oa;exports.ContextMenuLabel=ia;exports.ContextMenuPortal=bs;exports.ContextMenuRadioGroup=vs;exports.ContextMenuRadioItem=na;exports.ContextMenuSeparator=la;exports.ContextMenuShortcut=da;exports.ContextMenuSub=hs;exports.ContextMenuSubContent=aa;exports.ContextMenuSubTrigger=ta;exports.ContextMenuTrigger=xs;exports.Dialog=qt;exports.DialogClose=us;exports.DialogContent=Ce;exports.DialogDescription=Kt;exports.DialogFooter=$t;exports.DialogHeader=Vt;exports.DialogOverlay=je;exports.DialogPortal=Ht;exports.DialogTitle=Ut;exports.DialogTrigger=ms;exports.Drawer=ca;exports.DrawerClose=ws;exports.DrawerContent=ua;exports.DrawerDescription=ga;exports.DrawerFooter=fa;exports.DrawerHeader=pa;exports.DrawerOverlay=Re;exports.DrawerPortal=ma;exports.DrawerTitle=xa;exports.DrawerTrigger=Ns;exports.DropdownMenu=ys;exports.DropdownMenuCheckboxItem=wa;exports.DropdownMenuContent=va;exports.DropdownMenuGroup=Cs;exports.DropdownMenuItem=Na;exports.DropdownMenuLabel=ja;exports.DropdownMenuPortal=Ss;exports.DropdownMenuRadioGroup=Ts;exports.DropdownMenuRadioItem=ya;exports.DropdownMenuSeparator=Ca;exports.DropdownMenuShortcut=Sa;exports.DropdownMenuSub=Rs;exports.DropdownMenuSubContent=ha;exports.DropdownMenuSubTrigger=ba;exports.DropdownMenuTrigger=js;exports.FeatureList=bo;exports.Form=Is;exports.FormControl=Ma;exports.FormDescription=Da;exports.FormField=Ms;exports.FormItem=ka;exports.FormLabel=Ia;exports.FormMessage=Pa;exports.HoverCard=Ds;exports.HoverCardContent=_a;exports.HoverCardTrigger=Ps;exports.Input=ke;exports.InputOTP=Aa;exports.InputOTPGroup=za;exports.InputOTPSeparator=La;exports.InputOTPSlot=Fa;exports.Label=Te;exports.Menubar=Oa;exports.MenubarCheckboxItem=Va;exports.MenubarContent=qa;exports.MenubarGroup=As;exports.MenubarItem=Ha;exports.MenubarLabel=Ua;exports.MenubarMenu=_s;exports.MenubarPortal=zs;exports.MenubarRadioGroup=Ls;exports.MenubarRadioItem=$a;exports.MenubarSeparator=Ka;exports.MenubarShortcut=Wa;exports.MenubarSub=Fs;exports.MenubarSubContent=Ea;exports.MenubarSubTrigger=Ga;exports.MenubarTrigger=Ba;exports.NavigationMenu=Xa;exports.NavigationMenuContent=Za;exports.NavigationMenuIndicator=er;exports.NavigationMenuItem=Os;exports.NavigationMenuLink=Bs;exports.NavigationMenuList=Ya;exports.NavigationMenuTrigger=Qa;exports.NavigationMenuViewport=Ie;exports.Pagination=tr;exports.PaginationContent=ar;exports.PaginationEllipsis=nr;exports.PaginationItem=rr;exports.PaginationLink=ie;exports.PaginationNext=sr;exports.PaginationPrevious=or;exports.Popover=Gs;exports.PopoverContent=ir;exports.PopoverTrigger=Es;exports.Progress=lr;exports.RadioGroup=dr;exports.RadioGroupItem=cr;exports.RelatedArticles=yn;exports.ResizableHandle=Vs;exports.ResizablePanel=Hs;exports.ResizablePanelGroup=qs;exports.ScrollArea=mr;exports.ScrollBar=Me;exports.Select=xe;exports.SelectContent=ae;exports.SelectGroup=$s;exports.SelectItem=re;exports.SelectLabel=ur;exports.SelectScrollDownButton=Pe;exports.SelectScrollUpButton=De;exports.SelectSeparator=pr;exports.SelectTrigger=te;exports.SelectValue=ge;exports.Separator=_e;exports.Sheet=fr;exports.SheetClose=Ks;exports.SheetContent=ze;exports.SheetDescription=vr;exports.SheetFooter=br;exports.SheetHeader=gr;exports.SheetOverlay=Ae;exports.SheetPortal=xr;exports.SheetTitle=hr;exports.SheetTrigger=Us;exports.Sidebar=Rr;exports.SidebarContent=Ar;exports.SidebarFooter=Pr;exports.SidebarGroup=zr;exports.SidebarGroupAction=Lr;exports.SidebarGroupContent=Or;exports.SidebarGroupLabel=Fr;exports.SidebarHeader=Dr;exports.SidebarInput=Mr;exports.SidebarInset=Ir;exports.SidebarMenu=Br;exports.SidebarMenuAction=qr;exports.SidebarMenuBadge=Hr;exports.SidebarMenuButton=Er;exports.SidebarMenuItem=Gr;exports.SidebarMenuSkeleton=Vr;exports.SidebarMenuSub=$r;exports.SidebarMenuSubButton=Kr;exports.SidebarMenuSubItem=Ur;exports.SidebarProvider=Sr;exports.SidebarRail=kr;exports.SidebarSeparator=_r;exports.SidebarTrigger=Tr;exports.Skeleton=be;exports.Slider=Wr;exports.SonnerToaster=an;exports.Switch=Xr;exports.Table=Yr;exports.TableBody=Qr;exports.TableCaption=ro;exports.TableCell=ao;exports.TableFooter=Zr;exports.TableHead=to;exports.TableHeader=Jr;exports.TableOfContents=jn;exports.TableRow=eo;exports.Tabs=rn;exports.TabsContent=no;exports.TabsList=oo;exports.TabsTrigger=so;exports.Textarea=io;exports.Toast=Oe;exports.ToastAction=co;exports.ToastClose=Be;exports.ToastDescription=Ee;exports.ToastProvider=lo;exports.ToastTitle=Ge;exports.ToastViewport=Le;exports.Toaster=cn;exports.Toggle=po;exports.ToggleGroup=xo;exports.ToggleGroupItem=go;exports.Tooltip=yr;exports.TooltipContent=Fe;exports.TooltipProvider=wr;exports.TooltipTrigger=jr;exports.WhatsIncluded=Cn;exports.badgeVariants=ft;exports.buttonVariants=E;exports.cn=s;exports.navigationMenuTriggerStyle=Ja;exports.toast=mo;exports.toggleVariants=qe;exports.useFormField=J;exports.useIsMobile=Nr;exports.useSidebar=Q;exports.useToast=uo;
@@ -0,0 +1 @@
1
+ export {}