@refraction-ui/react 0.1.3 → 0.2.1

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/dist/index.js CHANGED
@@ -1,9 +1,369 @@
1
- import * as React40 from 'react';
1
+ import * as React41 from 'react';
2
2
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
3
  import * as ReactDOM from 'react-dom';
4
4
  import { createPortal } from 'react-dom';
5
5
 
6
- // ../react-theme/dist/index.js
6
+ var __create = Object.create;
7
+ var __defProp = Object.defineProperty;
8
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
9
+ var __getOwnPropNames = Object.getOwnPropertyNames;
10
+ var __getProtoOf = Object.getPrototypeOf;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
13
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
14
+ }) : x)(function(x) {
15
+ if (typeof require !== "undefined") return require.apply(this, arguments);
16
+ throw Error('Dynamic require of "' + x + '" is not supported');
17
+ });
18
+ var __commonJS = (cb, mod) => function __require2() {
19
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
20
+ };
21
+ var __export = (target, all) => {
22
+ for (var name in all)
23
+ __defProp(target, name, { get: all[name], enumerable: true });
24
+ };
25
+ var __copyProps = (to, from, except, desc) => {
26
+ if (from && typeof from === "object" || typeof from === "function") {
27
+ for (let key of __getOwnPropNames(from))
28
+ if (!__hasOwnProp.call(to, key) && key !== except)
29
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
30
+ }
31
+ return to;
32
+ };
33
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget);
34
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
35
+ // If the importer is in node compatibility mode or this is not an ESM
36
+ // file that has been converted to a CommonJS file using a Babel-
37
+ // compatible transform (i.e. "__esModule" has not been set), then set
38
+ // "default" to the CommonJS "module.exports" for node compatibility.
39
+ __defProp(target, "default", { value: mod, enumerable: true }) ,
40
+ mod
41
+ ));
42
+
43
+ // ../react-file-tree/dist/index.js
44
+ var require_dist = __commonJS({
45
+ "../react-file-tree/dist/index.js"(exports) {
46
+ var jsxRuntime = __require("react/jsx-runtime");
47
+ var FileTree = () => {
48
+ return /* @__PURE__ */ jsxRuntime.jsx("div", {});
49
+ };
50
+ exports.FileTree = FileTree;
51
+ }
52
+ });
53
+
54
+ // ../react-icon-system/dist/index.js
55
+ var require_dist2 = __commonJS({
56
+ "../react-icon-system/dist/index.js"(exports) {
57
+ var jsxRuntime = __require("react/jsx-runtime");
58
+ var IconSystem = () => {
59
+ return /* @__PURE__ */ jsxRuntime.jsx("div", {});
60
+ };
61
+ exports.IconSystem = IconSystem;
62
+ }
63
+ });
64
+
65
+ // src/index.ts
66
+ var index_exports = {};
67
+ __export(index_exports, {
68
+ Accordion: () => Accordion,
69
+ AccordionContent: () => AccordionContent,
70
+ AccordionItem: () => AccordionItem,
71
+ AccordionTrigger: () => AccordionTrigger,
72
+ AnimatedText: () => AnimatedText,
73
+ AppShell: () => AppShell,
74
+ AuthGuard: () => AuthGuard,
75
+ AuthProvider: () => AuthProvider,
76
+ Avatar: () => Avatar,
77
+ AvatarFallback: () => AvatarFallback,
78
+ AvatarGroup: () => AvatarGroup,
79
+ AvatarImage: () => AvatarImage,
80
+ Badge: () => Badge,
81
+ BadgeDisplay: () => BadgeDisplay,
82
+ BottomNav: () => BottomNav,
83
+ Breadcrumbs: () => Breadcrumbs,
84
+ Button: () => Button,
85
+ CATEGORY_LABELS: () => CATEGORY_LABELS,
86
+ Calendar: () => Calendar,
87
+ CalendarHeader: () => CalendarHeader,
88
+ Callout: () => Callout,
89
+ Card: () => Card2,
90
+ CardContent: () => CardContent,
91
+ CardDescription: () => CardDescription,
92
+ CardFooter: () => CardFooter,
93
+ CardGrid: () => CardGrid,
94
+ CardHeader: () => CardHeader,
95
+ CardTitle: () => CardTitle,
96
+ Carousel: () => Carousel,
97
+ CarouselContent: () => CarouselContent,
98
+ CarouselItem: () => CarouselItem,
99
+ CarouselTrigger: () => CarouselTrigger,
100
+ Checkbox: () => Checkbox,
101
+ CodeBlock: () => CodeBlock,
102
+ CodeEditor: () => CodeEditor,
103
+ Collapsible: () => Collapsible,
104
+ CollapsibleContent: () => CollapsibleContent,
105
+ CollapsibleTrigger: () => CollapsibleTrigger,
106
+ Command: () => Command,
107
+ CommandEmpty: () => CommandEmpty,
108
+ CommandGroup: () => CommandGroup,
109
+ CommandInput: () => CommandInput,
110
+ CommandItem: () => CommandItem,
111
+ CommandList: () => CommandList,
112
+ CommandSeparator: () => CommandSeparator,
113
+ ContentProtection: () => ContentProtection,
114
+ DataTable: () => DataTable,
115
+ DatePicker: () => DatePicker,
116
+ DeviceFrame: () => DeviceFrame,
117
+ Dialog: () => Dialog,
118
+ DialogClose: () => DialogClose,
119
+ DialogContent: () => DialogContent,
120
+ DialogDescription: () => DialogDescription,
121
+ DialogFooter: () => DialogFooter,
122
+ DialogHeader: () => DialogHeader,
123
+ DialogOverlay: () => DialogOverlay,
124
+ DialogTitle: () => DialogTitle,
125
+ DialogTrigger: () => DialogTrigger,
126
+ DiffViewer: () => DiffViewer,
127
+ DropdownMenu: () => DropdownMenu,
128
+ DropdownMenuContent: () => DropdownMenuContent,
129
+ DropdownMenuItem: () => DropdownMenuItem,
130
+ DropdownMenuLabel: () => DropdownMenuLabel,
131
+ DropdownMenuSeparator: () => DropdownMenuSeparator,
132
+ DropdownMenuTrigger: () => DropdownMenuTrigger,
133
+ EMOJI_CATEGORIES: () => EMOJI_CATEGORIES,
134
+ EMOJI_DATA: () => EMOJI_DATA,
135
+ EmojiPicker: () => EmojiPicker,
136
+ FeedbackButton: () => FeedbackButton,
137
+ FeedbackDialog: () => FeedbackDialog,
138
+ FileUpload: () => FileUpload,
139
+ Footer: () => Footer,
140
+ InlineEditor: () => InlineEditor,
141
+ Input: () => Input,
142
+ InputGroup: () => InputGroup,
143
+ InputGroupAddon: () => InputGroupAddon,
144
+ InputGroupButton: () => InputGroupButton,
145
+ InputGroupText: () => InputGroupText,
146
+ InstallPrompt: () => InstallPrompt,
147
+ KeyboardShortcut: () => KeyboardShortcut,
148
+ LanguageSelector: () => LanguageSelector,
149
+ LinkCard: () => LinkCard,
150
+ MarkdownRenderer: () => MarkdownRenderer,
151
+ MobileNav: () => MobileNav,
152
+ MobileNavContent: () => MobileNavContent,
153
+ MobileNavLink: () => MobileNavLink,
154
+ MobileNavTrigger: () => MobileNavTrigger,
155
+ Navbar: () => Navbar,
156
+ OtpInput: () => OtpInput,
157
+ PRESENCE_STATUS_COLORS: () => STATUS_COLORS,
158
+ PRESENCE_STATUS_LABELS: () => STATUS_LABELS,
159
+ Pagination: () => Pagination,
160
+ Payment: () => Payment,
161
+ Popover: () => Popover,
162
+ PopoverClose: () => PopoverClose,
163
+ PopoverContent: () => PopoverContent,
164
+ PopoverTrigger: () => PopoverTrigger,
165
+ PresenceIndicator: () => PresenceIndicator,
166
+ ProgressBar: () => ProgressBar,
167
+ RadioGroup: () => RadioGroup,
168
+ RadioItem: () => RadioItem,
169
+ ReactionBar: () => ReactionBar,
170
+ ResizableDivider: () => ResizableDivider,
171
+ ResizableLayout: () => ResizableLayout,
172
+ ResizablePane: () => ResizablePane,
173
+ STATUS_COLORS: () => STATUS_COLORS2,
174
+ STATUS_LABELS: () => STATUS_LABELS2,
175
+ SearchBar: () => SearchBar,
176
+ SearchResultItem: () => SearchResultItem,
177
+ SearchResults: () => SearchResults,
178
+ Select: () => Select,
179
+ SelectContent: () => SelectContent,
180
+ SelectItem: () => SelectItem,
181
+ SelectTrigger: () => SelectTrigger,
182
+ ShortcutBadge: () => ShortcutBadge,
183
+ Sidebar: () => Sidebar,
184
+ Skeleton: () => Skeleton,
185
+ SkeletonText: () => SkeletonText,
186
+ SkipToContent: () => SkipToContent,
187
+ SlideViewer: () => SlideViewer,
188
+ StatsGrid: () => StatsGrid,
189
+ StatusIndicator: () => StatusIndicator,
190
+ Steps: () => Steps,
191
+ Switch: () => Switch,
192
+ TableOfContents: () => TableOfContents,
193
+ Tabs: () => Tabs,
194
+ TabsContent: () => TabsContent,
195
+ TabsList: () => TabsList,
196
+ TabsTrigger: () => TabsTrigger,
197
+ Textarea: () => Textarea,
198
+ ThemeProvider: () => ThemeProvider,
199
+ ThemeScript: () => ThemeScript,
200
+ ThemeToggle: () => ThemeToggle,
201
+ ThreadView: () => ThreadView,
202
+ Toast: () => Toast,
203
+ ToastProvider: () => ToastProvider,
204
+ Toaster: () => Toaster,
205
+ Tooltip: () => Tooltip,
206
+ TooltipContent: () => TooltipContent,
207
+ TooltipTrigger: () => TooltipTrigger,
208
+ TypewriterText: () => TypewriterText,
209
+ VersionSelector: () => VersionSelector,
210
+ VideoPlayer: () => VideoPlayer,
211
+ animatedTextVariants: () => animatedTextVariants,
212
+ avatarFallbackVariants: () => avatarFallbackVariants,
213
+ avatarImageVariants: () => avatarImageVariants,
214
+ avatarTokens: () => avatarTokens,
215
+ avatarVariants: () => avatarVariants,
216
+ badgeGridVariants: () => badgeGridVariants,
217
+ badgeItemVariants: () => badgeItemVariants,
218
+ badgeVariants: () => badgeVariants,
219
+ bottomNavTabVariants: () => bottomNavTabVariants,
220
+ bottomNavVariants: () => bottomNavVariants,
221
+ breadcrumbItemVariants: () => breadcrumbItemVariants,
222
+ breadcrumbSeparatorStyles: () => breadcrumbSeparatorStyles,
223
+ breadcrumbsVariants: () => breadcrumbsVariants,
224
+ buttonTokens: () => buttonTokens,
225
+ buttonVariants: () => buttonVariants,
226
+ calendarVariants: () => calendarVariants,
227
+ canAccessAdmin: () => canAccessAdmin,
228
+ canAccessReviewer: () => canAccessReviewer,
229
+ cardContentVariants: () => cardContentVariants,
230
+ cardDescriptionVariants: () => cardDescriptionVariants,
231
+ cardFooterVariants: () => cardFooterVariants,
232
+ cardHeaderVariants: () => cardHeaderVariants,
233
+ cardTitleVariants: () => cardTitleVariants,
234
+ cardTokens: () => cardTokens,
235
+ cardVariants: () => cardVariants,
236
+ cellVariants: () => cellVariants,
237
+ checkIconPath: () => checkIconPath,
238
+ checkboxTokens: () => checkboxTokens,
239
+ checkboxVariants: () => checkboxVariants,
240
+ codeEditorTokens: () => codeEditorTokens,
241
+ codeEditorVariants: () => codeEditorVariants,
242
+ collapsibleContentVariants: () => collapsibleContentVariants,
243
+ commandGroupVariants: () => commandGroupVariants,
244
+ commandInputVariants: () => commandInputVariants,
245
+ commandItemVariants: () => commandItemVariants,
246
+ commandVariants: () => commandVariants,
247
+ contentProtectionVariants: () => contentProtectionVariants,
248
+ controlsVariants: () => controlsVariants,
249
+ createDiffViewer: () => createDiffViewer,
250
+ dayVariants: () => dayVariants,
251
+ deviceFrameVariants: () => deviceFrameVariants,
252
+ dialogContentVariants: () => dialogContentVariants,
253
+ diffViewerTokens: () => diffViewerTokens,
254
+ diffViewerVariants: () => diffViewerVariants,
255
+ editorVariants: () => editorVariants,
256
+ emojiPickerContainerStyles: () => emojiPickerContainerStyles,
257
+ emojiPickerEmojiButtonStyles: () => emojiPickerEmojiButtonStyles,
258
+ emojiPickerGridStyles: () => emojiPickerGridStyles,
259
+ feedbackDialogVariants: () => feedbackDialogVariants,
260
+ fileUploadDropZoneVariants: () => fileUploadDropZoneVariants,
261
+ fileUploadFileItemStyles: () => fileUploadFileItemStyles,
262
+ fileUploadFileListStyles: () => fileUploadFileListStyles,
263
+ footerVariants: () => footerVariants,
264
+ formatFileSize: () => formatFileSize,
265
+ formatRelativeTime: () => formatRelativeTime,
266
+ formatShortcut: () => formatShortcut,
267
+ formatTimestamp: () => formatTimestamp,
268
+ getAssignableRoles: () => getAssignableRoles,
269
+ getDefaultPortal: () => getDefaultPortal,
270
+ getInitials: () => getInitials,
271
+ hasAllRoles: () => hasAllRoles,
272
+ hasAnyRole: () => hasAnyRole,
273
+ hasRole: () => hasRole,
274
+ headerVariants: () => headerVariants,
275
+ indeterminateIconPath: () => indeterminateIconPath,
276
+ inputGroupAddonVariants: () => inputGroupAddonVariants,
277
+ inputGroupButtonVariants: () => inputGroupButtonVariants,
278
+ inputGroupTokens: () => inputGroupTokens,
279
+ inputGroupVariants: () => inputGroupVariants,
280
+ inputVariants: () => inputVariants,
281
+ installPromptVariants: () => installPromptVariants,
282
+ latestBadgeVariants: () => latestBadgeVariants,
283
+ markdownRendererTokens: () => markdownRendererTokens,
284
+ menuContentVariants: () => menuContentVariants,
285
+ menuItemVariants: () => menuItemVariants,
286
+ mobileNavContentVariants: () => mobileNavContentVariants,
287
+ mobileNavLinkVariants: () => mobileNavLinkVariants,
288
+ mobileNavTokens: () => mobileNavTokens,
289
+ mobileNavTriggerVariants: () => mobileNavTriggerVariants,
290
+ mobileNavVariants: () => mobileNavVariants,
291
+ navLinkVariants: () => navLinkVariants,
292
+ navbarVariants: () => navbarVariants,
293
+ optionVariants: () => optionVariants,
294
+ otpInputContainerVariants: () => otpInputContainerVariants,
295
+ otpInputSlotVariants: () => otpInputSlotVariants,
296
+ otpInputTokens: () => otpInputTokens,
297
+ overlayStyles: () => overlayStyles,
298
+ overlayVariants: () => overlayVariants,
299
+ playerVariants: () => playerVariants,
300
+ popoverContentVariants: () => popoverContentVariants,
301
+ previewVariants: () => previewVariants,
302
+ progressBarVariants: () => progressBarVariants,
303
+ proseVariants: () => proseVariants,
304
+ radioCircleVariants: () => radioCircleVariants,
305
+ radioGroupVariants: () => radioGroupVariants,
306
+ radioItemVariants: () => radioItemVariants,
307
+ reactionAddButtonStyles: () => reactionAddButtonStyles,
308
+ reactionBarStyles: () => reactionBarStyles,
309
+ reactionCountStyles: () => reactionCountStyles,
310
+ reactionEmojiStyles: () => reactionEmojiStyles,
311
+ reactionPillVariants: () => reactionPillVariants,
312
+ resizableDividerVariants: () => resizableDividerVariants,
313
+ resizableLayoutTokens: () => resizableLayoutTokens,
314
+ resizableLayoutVariants: () => resizableLayoutVariants,
315
+ resizablePaneVariants: () => resizablePaneVariants,
316
+ rowVariants: () => rowVariants,
317
+ searchBarVariants: () => searchBarVariants,
318
+ searchResultVariants: () => searchResultVariants,
319
+ selectContentVariants: () => selectContentVariants,
320
+ selectItemVariants: () => selectItemVariants,
321
+ selectTokens: () => selectTokens,
322
+ selectTriggerVariants: () => selectTriggerVariants,
323
+ selectorVariants: () => selectorVariants,
324
+ shortcutBadgeStyles: () => shortcutBadgeStyles,
325
+ shortcutKeyStyles: () => shortcutKeyStyles,
326
+ shortcutSeparatorStyles: () => shortcutSeparatorStyles,
327
+ skeletonVariants: () => skeletonVariants,
328
+ slideTypeBadgeVariants: () => slideTypeBadgeVariants,
329
+ slideViewerProgressBarVariants: () => progressBarVariants2,
330
+ slideViewerTokens: () => slideViewerTokens,
331
+ slideViewerVariants: () => slideViewerVariants,
332
+ statCardVariants: () => statCardVariants,
333
+ statsGridVariants: () => statsGridVariants,
334
+ statusBarVariants: () => statusBarVariants,
335
+ statusContainerStyles: () => statusContainerStyles,
336
+ statusDotVariants: () => statusDotVariants,
337
+ statusLabelStyles: () => statusLabelStyles,
338
+ statusPulseVariants: () => statusPulseVariants,
339
+ switchThumbVariants: () => switchThumbVariants,
340
+ switchTokens: () => switchTokens,
341
+ switchVariants: () => switchVariants,
342
+ tabBarVariants: () => tabBarVariants,
343
+ tabVariants: () => tabVariants,
344
+ tableVariants: () => tableVariants,
345
+ tabsListVariants: () => tabsListVariants,
346
+ tabsTriggerVariants: () => tabsTriggerVariants,
347
+ textareaVariants: () => textareaVariants,
348
+ threadAuthorStyles: () => threadAuthorStyles,
349
+ threadAvatarStyles: () => threadAvatarStyles,
350
+ threadBodyStyles: () => threadBodyStyles,
351
+ threadContainerStyles: () => threadContainerStyles,
352
+ threadContentStyles: () => threadContentStyles,
353
+ threadMessageStyles: () => threadMessageStyles,
354
+ threadReactionsStyles: () => threadReactionsStyles,
355
+ threadTimestampStyles: () => threadTimestampStyles,
356
+ toastVariants: () => toastVariants,
357
+ toolbarVariants: () => toolbarVariants,
358
+ tooltipContentVariants: () => tooltipContentVariants,
359
+ typewriterVariants: () => typewriterVariants,
360
+ useAuth: () => useAuth,
361
+ useTheme: () => useTheme,
362
+ useToast: () => useToast,
363
+ versionSelectorOptionVariants: () => optionVariants2,
364
+ versionSelectorVariants: () => versionSelectorVariants,
365
+ watermarkVariants: () => watermarkVariants
366
+ });
7
367
 
8
368
  // ../theme/dist/index.js
9
369
  function resolveTheme(mode, systemPrefersDark) {
@@ -119,14 +479,14 @@ function applyThemeToDOM(resolved, attribute = "class") {
119
479
  }
120
480
 
121
481
  // ../react-theme/dist/index.js
122
- var ThemeContext = React40.createContext(null);
482
+ var ThemeContext = React41.createContext(null);
123
483
  function ThemeProvider({
124
484
  children,
125
485
  defaultMode = "system",
126
486
  storageKey = "rfr-theme",
127
487
  attribute = "class"
128
488
  }) {
129
- const themeRef = React40.useRef(null);
489
+ const themeRef = React41.useRef(null);
130
490
  if (!themeRef.current) {
131
491
  const isBrowser = typeof window !== "undefined";
132
492
  themeRef.current = createTheme(
@@ -135,8 +495,8 @@ function ThemeProvider({
135
495
  isBrowser ? createMediaQueryAdapter() : void 0
136
496
  );
137
497
  }
138
- const [state, setState] = React40.useState(() => themeRef.current.getState());
139
- React40.useEffect(() => {
498
+ const [state, setState] = React41.useState(() => themeRef.current.getState());
499
+ React41.useEffect(() => {
140
500
  const theme = themeRef.current;
141
501
  applyThemeToDOM(theme.getState().resolved, attribute);
142
502
  const unsub = theme.subscribe((newState) => {
@@ -148,7 +508,7 @@ function ThemeProvider({
148
508
  theme.destroy();
149
509
  };
150
510
  }, [attribute]);
151
- const contextValue = React40.useMemo(
511
+ const contextValue = React41.useMemo(
152
512
  () => ({
153
513
  mode: state.mode,
154
514
  resolved: state.resolved,
@@ -156,10 +516,10 @@ function ThemeProvider({
156
516
  }),
157
517
  [state.mode, state.resolved]
158
518
  );
159
- return React40.createElement(ThemeContext.Provider, { value: contextValue }, children);
519
+ return React41.createElement(ThemeContext.Provider, { value: contextValue }, children);
160
520
  }
161
521
  function useTheme() {
162
- const context = React40.useContext(ThemeContext);
522
+ const context = React41.useContext(ThemeContext);
163
523
  if (!context) {
164
524
  throw new Error("useTheme must be used within a <ThemeProvider>");
165
525
  }
@@ -171,7 +531,7 @@ var modes = [
171
531
  { value: "system", label: "System", icon: "monitor" }
172
532
  ];
173
533
  var icons = {
174
- sun: React40.createElement(
534
+ sun: React41.createElement(
175
535
  "svg",
176
536
  {
177
537
  xmlns: "http://www.w3.org/2000/svg",
@@ -184,10 +544,10 @@ var icons = {
184
544
  strokeLinecap: "round",
185
545
  strokeLinejoin: "round"
186
546
  },
187
- React40.createElement("circle", { cx: 12, cy: 12, r: 5 }),
188
- React40.createElement("path", { d: "M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42" })
547
+ React41.createElement("circle", { cx: 12, cy: 12, r: 5 }),
548
+ React41.createElement("path", { d: "M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42" })
189
549
  ),
190
- moon: React40.createElement(
550
+ moon: React41.createElement(
191
551
  "svg",
192
552
  {
193
553
  xmlns: "http://www.w3.org/2000/svg",
@@ -200,9 +560,9 @@ var icons = {
200
560
  strokeLinecap: "round",
201
561
  strokeLinejoin: "round"
202
562
  },
203
- React40.createElement("path", { d: "M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" })
563
+ React41.createElement("path", { d: "M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" })
204
564
  ),
205
- monitor: React40.createElement(
565
+ monitor: React41.createElement(
206
566
  "svg",
207
567
  {
208
568
  xmlns: "http://www.w3.org/2000/svg",
@@ -215,15 +575,15 @@ var icons = {
215
575
  strokeLinecap: "round",
216
576
  strokeLinejoin: "round"
217
577
  },
218
- React40.createElement("rect", { x: 2, y: 3, width: 20, height: 14, rx: 2, ry: 2 }),
219
- React40.createElement("line", { x1: 8, y1: 21, x2: 16, y2: 21 }),
220
- React40.createElement("line", { x1: 12, y1: 17, x2: 12, y2: 21 })
578
+ React41.createElement("rect", { x: 2, y: 3, width: 20, height: 14, rx: 2, ry: 2 }),
579
+ React41.createElement("line", { x1: 8, y1: 21, x2: 16, y2: 21 }),
580
+ React41.createElement("line", { x1: 12, y1: 17, x2: 12, y2: 21 })
221
581
  )
222
582
  };
223
583
  function ThemeToggle({ className, variant = "segmented" }) {
224
584
  const { mode, setMode } = useTheme();
225
585
  if (variant === "segmented") {
226
- return React40.createElement(
586
+ return React41.createElement(
227
587
  "div",
228
588
  {
229
589
  className: `inline-flex items-center gap-1 rounded-lg border p-1 ${className ?? ""}`,
@@ -231,7 +591,7 @@ function ThemeToggle({ className, variant = "segmented" }) {
231
591
  "aria-label": "Theme"
232
592
  },
233
593
  modes.map(
234
- ({ value, label, icon }) => React40.createElement("button", {
594
+ ({ value, label, icon }) => React41.createElement("button", {
235
595
  key: value,
236
596
  type: "button",
237
597
  role: "radio",
@@ -243,9 +603,9 @@ function ThemeToggle({ className, variant = "segmented" }) {
243
603
  )
244
604
  );
245
605
  }
246
- const [open, setOpen] = React40.useState(false);
247
- const ref = React40.useRef(null);
248
- React40.useEffect(() => {
606
+ const [open, setOpen] = React41.useState(false);
607
+ const ref = React41.useRef(null);
608
+ React41.useEffect(() => {
249
609
  if (!open) return;
250
610
  const handler = (e) => {
251
611
  if (ref.current && !ref.current.contains(e.target)) setOpen(false);
@@ -254,24 +614,24 @@ function ThemeToggle({ className, variant = "segmented" }) {
254
614
  return () => document.removeEventListener("mousedown", handler);
255
615
  }, [open]);
256
616
  const currentIcon = modes.find((m) => m.value === mode)?.icon ?? "monitor";
257
- return React40.createElement(
617
+ return React41.createElement(
258
618
  "div",
259
619
  { ref, className: `relative ${className ?? ""}` },
260
- React40.createElement("button", {
620
+ React41.createElement("button", {
261
621
  type: "button",
262
622
  "aria-label": "Toggle theme",
263
623
  "aria-expanded": open,
264
624
  className: "inline-flex items-center justify-center rounded-md p-2 text-sm transition-colors hover:bg-muted",
265
625
  onClick: () => setOpen(!open)
266
626
  }, icons[currentIcon]),
267
- open && React40.createElement(
627
+ open && React41.createElement(
268
628
  "div",
269
629
  {
270
630
  className: "absolute right-0 top-full mt-1 z-50 min-w-[8rem] rounded-md border bg-popover p-1 shadow-md",
271
631
  role: "menu"
272
632
  },
273
633
  modes.map(
274
- ({ value, label, icon }) => React40.createElement("button", {
634
+ ({ value, label, icon }) => React41.createElement("button", {
275
635
  key: value,
276
636
  type: "button",
277
637
  role: "menuitem",
@@ -289,7 +649,7 @@ function ThemeScript({
289
649
  storageKey = "rfr-theme",
290
650
  attribute = "class"
291
651
  }) {
292
- return React40.createElement("script", {
652
+ return React41.createElement("script", {
293
653
  dangerouslySetInnerHTML: {
294
654
  __html: getThemeScript(storageKey, attribute)
295
655
  }
@@ -407,6 +767,105 @@ function cva(config) {
407
767
  return classes.filter(Boolean).join(" ");
408
768
  };
409
769
  }
770
+ var AccordionContext = React41.createContext(null);
771
+ var Accordion = React41.forwardRef(
772
+ ({ className, type = "single", collapsible, value: controlledValue, defaultValue, onValueChange, ...props }, ref) => {
773
+ const [uncontrolledValue, setUncontrolledValue] = React41.useState(
774
+ defaultValue ?? (type === "multiple" ? [] : "")
775
+ );
776
+ const value = controlledValue !== void 0 ? controlledValue : uncontrolledValue;
777
+ const handleValueChange = React41.useCallback(
778
+ (itemValue) => {
779
+ if (type === "single") {
780
+ const newValue = value === itemValue && collapsible ? "" : itemValue;
781
+ setUncontrolledValue(newValue);
782
+ onValueChange?.(newValue);
783
+ } else {
784
+ const arrValue = Array.isArray(value) ? value : [];
785
+ const newValue = arrValue.includes(itemValue) ? arrValue.filter((v) => v !== itemValue) : [...arrValue, itemValue];
786
+ setUncontrolledValue(newValue);
787
+ onValueChange?.(newValue);
788
+ }
789
+ },
790
+ [type, collapsible, value, onValueChange]
791
+ );
792
+ return /* @__PURE__ */ jsx(AccordionContext.Provider, { value: { type, value, onValueChange: handleValueChange }, children: /* @__PURE__ */ jsx("div", { ref, className: cn("flex flex-col w-full", className), ...props }) });
793
+ }
794
+ );
795
+ Accordion.displayName = "Accordion";
796
+ var AccordionItemContext = React41.createContext(null);
797
+ var AccordionItem = React41.forwardRef(
798
+ ({ className, value, ...props }, ref) => {
799
+ const context = React41.useContext(AccordionContext);
800
+ if (!context) throw new Error("AccordionItem must be within Accordion");
801
+ const isOpen = context.type === "single" ? context.value === value : Array.isArray(context.value) && context.value.includes(value);
802
+ return /* @__PURE__ */ jsx(AccordionItemContext.Provider, { value: { value, isOpen }, children: /* @__PURE__ */ jsx("div", { ref, className: cn("border-b border-border", className), "data-state": isOpen ? "open" : "closed", ...props }) });
803
+ }
804
+ );
805
+ AccordionItem.displayName = "AccordionItem";
806
+ var AccordionTrigger = React41.forwardRef(
807
+ ({ className, children, ...props }, ref) => {
808
+ const accordionContext = React41.useContext(AccordionContext);
809
+ const itemContext = React41.useContext(AccordionItemContext);
810
+ if (!accordionContext || !itemContext) throw new Error("AccordionTrigger missing context");
811
+ return /* @__PURE__ */ jsx("h3", { className: "flex m-0 p-0", children: /* @__PURE__ */ jsxs(
812
+ "button",
813
+ {
814
+ ref,
815
+ type: "button",
816
+ "aria-expanded": itemContext.isOpen,
817
+ className: cn(
818
+ "flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180",
819
+ className
820
+ ),
821
+ "data-state": itemContext.isOpen ? "open" : "closed",
822
+ onClick: () => accordionContext.onValueChange(itemContext.value),
823
+ ...props,
824
+ children: [
825
+ children,
826
+ /* @__PURE__ */ jsx(
827
+ "svg",
828
+ {
829
+ xmlns: "http://www.w3.org/2000/svg",
830
+ width: "24",
831
+ height: "24",
832
+ viewBox: "0 0 24 24",
833
+ fill: "none",
834
+ stroke: "currentColor",
835
+ strokeWidth: "2",
836
+ strokeLinecap: "round",
837
+ strokeLinejoin: "round",
838
+ className: "h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200",
839
+ children: /* @__PURE__ */ jsx("path", { d: "m6 9 6 6 6-6" })
840
+ }
841
+ )
842
+ ]
843
+ }
844
+ ) });
845
+ }
846
+ );
847
+ AccordionTrigger.displayName = "AccordionTrigger";
848
+ var AccordionContent = React41.forwardRef(
849
+ ({ className, children, ...props }, ref) => {
850
+ const itemContext = React41.useContext(AccordionItemContext);
851
+ if (!itemContext) throw new Error("AccordionContent missing context");
852
+ return /* @__PURE__ */ jsx(
853
+ "div",
854
+ {
855
+ ref,
856
+ className: cn(
857
+ "overflow-hidden text-sm",
858
+ className
859
+ ),
860
+ "data-state": itemContext.isOpen ? "open" : "closed",
861
+ hidden: !itemContext.isOpen,
862
+ ...props,
863
+ children: /* @__PURE__ */ jsx("div", { className: "pb-4 pt-0 text-muted-foreground leading-relaxed", children })
864
+ }
865
+ );
866
+ }
867
+ );
868
+ AccordionContent.displayName = "AccordionContent";
410
869
 
411
870
  // ../animated-text/dist/index.js
412
871
  function createAnimatedText(props) {
@@ -470,16 +929,16 @@ var typewriterVariants = cva({
470
929
  cursor: "blinking"
471
930
  }
472
931
  });
473
- var AnimatedText = React40.forwardRef(
932
+ var AnimatedText = React41.forwardRef(
474
933
  ({ words, interval = 2500, transitionDuration = 1e3, className, ...props }, ref) => {
475
- const apiRef = React40.useRef(
934
+ const apiRef = React41.useRef(
476
935
  createAnimatedText({ words})
477
936
  );
478
937
  const api = apiRef.current;
479
- const [currentIndex, setCurrentIndex] = React40.useState(0);
480
- const [isExiting, setIsExiting] = React40.useState(false);
938
+ const [currentIndex, setCurrentIndex] = React41.useState(0);
939
+ const [isExiting, setIsExiting] = React41.useState(false);
481
940
  const prefersReducedMotion = typeof globalThis !== "undefined" && typeof globalThis.matchMedia === "function" && globalThis.matchMedia("(prefers-reduced-motion: reduce)").matches;
482
- React40.useEffect(() => {
941
+ React41.useEffect(() => {
483
942
  if (words.length <= 1) return;
484
943
  const tick = setInterval(() => {
485
944
  if (prefersReducedMotion) {
@@ -515,13 +974,13 @@ var AnimatedText = React40.forwardRef(
515
974
  }
516
975
  );
517
976
  AnimatedText.displayName = "AnimatedText";
518
- var TypewriterText = React40.forwardRef(
977
+ var TypewriterText = React41.forwardRef(
519
978
  ({ text, speed = 50, startDelay = 0, className, ...props }, ref) => {
520
- const apiRef = React40.useRef(createTypewriter({ text}));
979
+ const apiRef = React41.useRef(createTypewriter({ text}));
521
980
  const api = apiRef.current;
522
- const [currentIndex, setCurrentIndex] = React40.useState(0);
981
+ const [currentIndex, setCurrentIndex] = React41.useState(0);
523
982
  const prefersReducedMotion = typeof globalThis !== "undefined" && typeof globalThis.matchMedia === "function" && globalThis.matchMedia("(prefers-reduced-motion: reduce)").matches;
524
- React40.useEffect(() => {
983
+ React41.useEffect(() => {
525
984
  if (prefersReducedMotion) {
526
985
  api.state.currentIndex = text.length;
527
986
  setCurrentIndex(text.length);
@@ -680,116 +1139,26 @@ function getAssignableRoles(user) {
680
1139
  if (hasRole(user, "reviewer")) return ["student"];
681
1140
  return [];
682
1141
  }
683
- function createMockAdapter(initialUser) {
684
- let currentUser = initialUser ?? null;
685
- const listeners = /* @__PURE__ */ new Set();
686
- function notify() {
687
- for (const fn of listeners) {
688
- fn(currentUser);
689
- }
690
- }
691
- return {
692
- async signIn(email, _password) {
693
- currentUser = {
694
- uid: "mock-" + email,
695
- email,
696
- displayName: email.split("@")[0],
697
- photoURL: null,
698
- roles: ["student"]
699
- };
700
- notify();
701
- return currentUser;
702
- },
703
- async signInWithOAuth(_provider) {
704
- currentUser = {
705
- uid: "mock-oauth",
706
- email: "oauth@example.com",
707
- displayName: "OAuth User",
708
- photoURL: null,
709
- roles: ["student"]
710
- };
711
- notify();
712
- return currentUser;
713
- },
714
- async signUp(email, _password, displayName) {
715
- currentUser = {
716
- uid: "mock-" + email,
717
- email,
718
- displayName,
719
- photoURL: null,
720
- roles: ["student"]
721
- };
722
- notify();
723
- return currentUser;
724
- },
725
- async signOut() {
726
- currentUser = null;
727
- notify();
728
- },
729
- async resetPassword(_email) {
730
- },
731
- async getToken() {
732
- return currentUser ? "mock-token-" + currentUser.uid : null;
733
- },
734
- onAuthStateChange(callback) {
735
- listeners.add(callback);
736
- callback(currentUser);
737
- return () => {
738
- listeners.delete(callback);
739
- };
740
- }
741
- };
742
- }
743
- function resolveAdapter(provider) {
744
- const resolved = provider ?? detectProvider();
745
- switch (resolved) {
746
- case "firebase":
747
- if (typeof console !== "undefined") {
748
- console.warn("[refraction-ui/auth] Firebase adapter not yet implemented. Using mock adapter.");
749
- }
750
- return createMockAdapter();
751
- case "supabase":
752
- if (typeof console !== "undefined") {
753
- console.warn("[refraction-ui/auth] Supabase adapter not yet implemented. Using mock adapter.");
754
- }
755
- return createMockAdapter();
756
- case "mock":
757
- return createMockAdapter();
758
- case "none":
759
- default:
760
- return createMockAdapter();
761
- }
762
- }
763
- function detectProvider() {
764
- const env = typeof process !== "undefined" ? process.env : {};
765
- const explicit = env["REFRACTION_AUTH_PROVIDER"];
766
- if (explicit) return explicit;
767
- if (env["FIREBASE_API_KEY"] || env["NEXT_PUBLIC_FIREBASE_API_KEY"]) {
768
- return "firebase";
769
- }
770
- if (env["SUPABASE_URL"] || env["NEXT_PUBLIC_SUPABASE_URL"]) {
771
- return "supabase";
772
- }
773
- return "none";
774
- }
775
1142
 
776
1143
  // ../react-auth/dist/index.js
777
- var AuthContext = React40.createContext(null);
1144
+ var AuthContext = React41.createContext(null);
778
1145
  function AuthProvider({ children, ...config }) {
779
- const authRef = React40.useRef(null);
1146
+ const authRef = React41.useRef(null);
780
1147
  if (!authRef.current) {
781
- const adapter = resolveAdapter(config.provider);
782
- authRef.current = createAuth(adapter, config);
1148
+ if (!config.adapter) {
1149
+ throw new Error("[refraction-ui/react-auth] You must provide an `adapter` to AuthProvider.");
1150
+ }
1151
+ authRef.current = createAuth(config.adapter, config);
783
1152
  }
784
- const [state, setState] = React40.useState(() => authRef.current.getState());
785
- React40.useEffect(() => {
1153
+ const [state, setState] = React41.useState(() => authRef.current.getState());
1154
+ React41.useEffect(() => {
786
1155
  const unsub = authRef.current.subscribe(setState);
787
1156
  return () => {
788
1157
  unsub();
789
1158
  authRef.current.destroy();
790
1159
  };
791
1160
  }, []);
792
- const value = React40.useMemo(
1161
+ const value = React41.useMemo(
793
1162
  () => ({
794
1163
  user: state.user,
795
1164
  isLoading: state.status === "loading",
@@ -803,10 +1172,10 @@ function AuthProvider({ children, ...config }) {
803
1172
  }),
804
1173
  [state.user, state.status]
805
1174
  );
806
- return React40.createElement(AuthContext.Provider, { value }, children);
1175
+ return React41.createElement(AuthContext.Provider, { value }, children);
807
1176
  }
808
1177
  function useAuth() {
809
- const ctx = React40.useContext(AuthContext);
1178
+ const ctx = React41.useContext(AuthContext);
810
1179
  if (!ctx) {
811
1180
  throw new Error("useAuth must be used within an <AuthProvider>");
812
1181
  }
@@ -820,15 +1189,15 @@ function AuthGuard({
820
1189
  }) {
821
1190
  const { isLoading, isAuthenticated, user } = useAuth();
822
1191
  if (isLoading) {
823
- return React40.createElement(React40.Fragment, null, fallback ?? null);
1192
+ return React41.createElement(React41.Fragment, null, fallback ?? null);
824
1193
  }
825
1194
  if (!isAuthenticated) {
826
- return React40.createElement(React40.Fragment, null, fallback ?? null);
1195
+ return React41.createElement(React41.Fragment, null, fallback ?? null);
827
1196
  }
828
1197
  if (roles && roles.length > 0 && !hasAnyRole(user, roles)) {
829
- return React40.createElement(React40.Fragment, null, unauthorized ?? null);
1198
+ return React41.createElement(React41.Fragment, null, unauthorized ?? null);
830
1199
  }
831
- return React40.createElement(React40.Fragment, null, children);
1200
+ return React41.createElement(React41.Fragment, null, children);
832
1201
  }
833
1202
 
834
1203
  // ../badge/dist/index.js
@@ -868,7 +1237,7 @@ var badgeVariants = cva({
868
1237
  size: "md"
869
1238
  }
870
1239
  });
871
- var Badge = React40.forwardRef(
1240
+ var Badge = React41.forwardRef(
872
1241
  ({ variant, size, className, children, ...props }, ref) => {
873
1242
  const api = createBadge({ variant});
874
1243
  const classes = cn(badgeVariants({ variant, size }), className);
@@ -915,7 +1284,7 @@ var bottomNavTabVariants = cva({
915
1284
  active: "false"
916
1285
  }
917
1286
  });
918
- var BottomNav = React40.forwardRef(
1287
+ var BottomNav = React41.forwardRef(
919
1288
  ({ tabs = [], currentPath, className, ...props }, ref) => {
920
1289
  const api = createBottomNav({ currentPath });
921
1290
  const classes = cn(bottomNavVariants(), className);
@@ -973,7 +1342,7 @@ function createBreadcrumbs(props = {}) {
973
1342
  };
974
1343
  }
975
1344
  var breadcrumbsVariants = cva({
976
- base: "flex items-center gap-1.5 text-sm text-muted-foreground"
1345
+ base: "flex flex-wrap items-center gap-1.5 text-sm text-muted-foreground"
977
1346
  });
978
1347
  var breadcrumbItemVariants = cva({
979
1348
  base: "transition-colors",
@@ -988,7 +1357,7 @@ var breadcrumbItemVariants = cva({
988
1357
  }
989
1358
  });
990
1359
  var breadcrumbSeparatorStyles = "text-muted-foreground/50 select-none";
991
- var Breadcrumbs = React40.forwardRef(
1360
+ var Breadcrumbs = React41.forwardRef(
992
1361
  ({
993
1362
  pathname,
994
1363
  items,
@@ -1095,12 +1464,12 @@ var buttonVariants = cva({
1095
1464
  size: "default"
1096
1465
  }
1097
1466
  });
1098
- var Button = React40.forwardRef(
1467
+ var Button = React41.forwardRef(
1099
1468
  ({ variant, size, loading, asChild, className, disabled, children, ...props }, ref) => {
1100
1469
  const api = createButton({ disabled, loading, type: props.type });
1101
1470
  const classes = cn(buttonVariants({ variant, size }), className);
1102
- if (asChild && React40.isValidElement(children)) {
1103
- return React40.cloneElement(children, {
1471
+ if (asChild && React41.isValidElement(children)) {
1472
+ return React41.cloneElement(children, {
1104
1473
  ref,
1105
1474
  className: cn(classes, children.props.className),
1106
1475
  type: getButtonType({ type: props.type }),
@@ -1307,15 +1676,15 @@ function Calendar({
1307
1676
  maxDate,
1308
1677
  disabledDates
1309
1678
  }) {
1310
- const [uncontrolledValue, setUncontrolledValue] = React40.useState(defaultValue);
1311
- const [uncontrolledMonth, setUncontrolledMonth] = React40.useState(
1679
+ const [uncontrolledValue, setUncontrolledValue] = React41.useState(defaultValue);
1680
+ const [uncontrolledMonth, setUncontrolledMonth] = React41.useState(
1312
1681
  () => month ?? value ?? defaultValue ?? /* @__PURE__ */ new Date()
1313
1682
  );
1314
1683
  const isValueControlled = value !== void 0;
1315
1684
  const isMonthControlled = month !== void 0;
1316
1685
  const selectedValue = isValueControlled ? value : uncontrolledValue;
1317
1686
  const displayMonth = isMonthControlled ? month : uncontrolledMonth;
1318
- const handleSelect = React40.useCallback(
1687
+ const handleSelect = React41.useCallback(
1319
1688
  (date) => {
1320
1689
  if (!isValueControlled) {
1321
1690
  setUncontrolledValue(date);
@@ -1324,7 +1693,7 @@ function Calendar({
1324
1693
  },
1325
1694
  [isValueControlled, onSelect]
1326
1695
  );
1327
- const handleMonthChange = React40.useCallback(
1696
+ const handleMonthChange = React41.useCallback(
1328
1697
  (m) => {
1329
1698
  if (!isMonthControlled) {
1330
1699
  setUncontrolledMonth(m);
@@ -1350,28 +1719,28 @@ function Calendar({
1350
1719
  return "default";
1351
1720
  }
1352
1721
  const monthLabel = `${MONTH_NAMES[api.state.currentMonth.getMonth()]} ${api.state.currentMonth.getFullYear()}`;
1353
- return React40.createElement(
1722
+ return React41.createElement(
1354
1723
  "div",
1355
1724
  {
1356
1725
  className: cn(calendarVariants(), className),
1357
1726
  ...api.ariaProps
1358
1727
  },
1359
1728
  // Header row: prev, month label, next
1360
- React40.createElement(CalendarHeader, {
1729
+ React41.createElement(CalendarHeader, {
1361
1730
  label: monthLabel,
1362
1731
  labelId: api.ids.label,
1363
1732
  onPrevMonth: api.prevMonth,
1364
1733
  onNextMonth: api.nextMonth
1365
1734
  }),
1366
1735
  // Day-of-week headers
1367
- React40.createElement(
1736
+ React41.createElement(
1368
1737
  "div",
1369
1738
  {
1370
1739
  className: "grid grid-cols-7 gap-1 mb-1",
1371
1740
  role: "row"
1372
1741
  },
1373
1742
  DAY_HEADERS.map(
1374
- (d) => React40.createElement(
1743
+ (d) => React41.createElement(
1375
1744
  "div",
1376
1745
  {
1377
1746
  key: d,
@@ -1384,7 +1753,7 @@ function Calendar({
1384
1753
  )
1385
1754
  ),
1386
1755
  // Day grid
1387
- React40.createElement(
1756
+ React41.createElement(
1388
1757
  "div",
1389
1758
  {
1390
1759
  className: "grid grid-cols-7 gap-1",
@@ -1393,7 +1762,7 @@ function Calendar({
1393
1762
  api.days.map((day, i) => {
1394
1763
  const dayAriaProps = api.getDayAriaProps(day);
1395
1764
  const state = getDayState(day);
1396
- return React40.createElement(
1765
+ return React41.createElement(
1397
1766
  "button",
1398
1767
  {
1399
1768
  key: i,
@@ -1417,12 +1786,12 @@ function CalendarHeader({
1417
1786
  onNextMonth,
1418
1787
  className
1419
1788
  }) {
1420
- return React40.createElement(
1789
+ return React41.createElement(
1421
1790
  "div",
1422
1791
  {
1423
1792
  className: cn("flex items-center justify-between mb-2", className)
1424
1793
  },
1425
- React40.createElement(
1794
+ React41.createElement(
1426
1795
  "button",
1427
1796
  {
1428
1797
  type: "button",
@@ -1432,7 +1801,7 @@ function CalendarHeader({
1432
1801
  },
1433
1802
  "\u2039"
1434
1803
  ),
1435
- React40.createElement(
1804
+ React41.createElement(
1436
1805
  "div",
1437
1806
  {
1438
1807
  id: labelId,
@@ -1441,7 +1810,7 @@ function CalendarHeader({
1441
1810
  },
1442
1811
  label
1443
1812
  ),
1444
- React40.createElement(
1813
+ React41.createElement(
1445
1814
  "button",
1446
1815
  {
1447
1816
  type: "button",
@@ -1574,7 +1943,7 @@ var codeEditorVariants = cva({
1574
1943
  size: "default"
1575
1944
  }
1576
1945
  });
1577
- var CodeEditor = React40.forwardRef(
1946
+ var CodeEditor = React41.forwardRef(
1578
1947
  ({
1579
1948
  value = "",
1580
1949
  onChange,
@@ -1690,9 +2059,9 @@ var collapsibleContentVariants = cva({
1690
2059
  });
1691
2060
 
1692
2061
  // ../react-collapsible/dist/index.js
1693
- var CollapsibleContext = React40.createContext(null);
2062
+ var CollapsibleContext = React41.createContext(null);
1694
2063
  function useCollapsibleContext() {
1695
- const ctx = React40.useContext(CollapsibleContext);
2064
+ const ctx = React41.useContext(CollapsibleContext);
1696
2065
  if (!ctx) {
1697
2066
  throw new Error(
1698
2067
  "Collapsible compound components must be used within <Collapsible>"
@@ -1708,10 +2077,10 @@ function Collapsible({
1708
2077
  children,
1709
2078
  className
1710
2079
  }) {
1711
- const [uncontrolledOpen, setUncontrolledOpen] = React40.useState(defaultOpen);
2080
+ const [uncontrolledOpen, setUncontrolledOpen] = React41.useState(defaultOpen);
1712
2081
  const isControlled = controlledOpen !== void 0;
1713
2082
  const open = isControlled ? controlledOpen : uncontrolledOpen;
1714
- const handleOpenChange = React40.useCallback(
2083
+ const handleOpenChange = React41.useCallback(
1715
2084
  (next) => {
1716
2085
  if (!isControlled) {
1717
2086
  setUncontrolledOpen(next);
@@ -1720,12 +2089,12 @@ function Collapsible({
1720
2089
  },
1721
2090
  [isControlled, onOpenChange]
1722
2091
  );
1723
- const apiRef = React40.useRef(null);
2092
+ const apiRef = React41.useRef(null);
1724
2093
  if (apiRef.current === null) {
1725
2094
  apiRef.current = createCollapsible({ open, defaultOpen, disabled });
1726
2095
  }
1727
2096
  const contentId = apiRef.current.contentProps.id;
1728
- const ctx = React40.useMemo(
2097
+ const ctx = React41.useMemo(
1729
2098
  () => ({
1730
2099
  open,
1731
2100
  onOpenChange: handleOpenChange,
@@ -1734,10 +2103,10 @@ function Collapsible({
1734
2103
  }),
1735
2104
  [open, handleOpenChange, disabled, contentId]
1736
2105
  );
1737
- return React40.createElement(
2106
+ return React41.createElement(
1738
2107
  CollapsibleContext.Provider,
1739
2108
  { value: ctx },
1740
- React40.createElement(
2109
+ React41.createElement(
1741
2110
  "div",
1742
2111
  {
1743
2112
  "data-state": open ? "open" : "closed",
@@ -1749,7 +2118,7 @@ function Collapsible({
1749
2118
  );
1750
2119
  }
1751
2120
  Collapsible.displayName = "Collapsible";
1752
- var CollapsibleTrigger = React40.forwardRef(({ onClick, disabled: disabledProp, children, ...props }, ref) => {
2121
+ var CollapsibleTrigger = React41.forwardRef(({ onClick, disabled: disabledProp, children, ...props }, ref) => {
1753
2122
  const { open, onOpenChange, disabled: ctxDisabled, contentId } = useCollapsibleContext();
1754
2123
  const disabled = disabledProp ?? ctxDisabled;
1755
2124
  const handleClick = (e) => {
@@ -1758,7 +2127,7 @@ var CollapsibleTrigger = React40.forwardRef(({ onClick, disabled: disabledProp,
1758
2127
  }
1759
2128
  onClick?.(e);
1760
2129
  };
1761
- return React40.createElement(
2130
+ return React41.createElement(
1762
2131
  "button",
1763
2132
  {
1764
2133
  ref,
@@ -1775,11 +2144,11 @@ var CollapsibleTrigger = React40.forwardRef(({ onClick, disabled: disabledProp,
1775
2144
  );
1776
2145
  });
1777
2146
  CollapsibleTrigger.displayName = "CollapsibleTrigger";
1778
- var CollapsibleContent = React40.forwardRef(({ className, children, ...props }, ref) => {
2147
+ var CollapsibleContent = React41.forwardRef(({ className, children, ...props }, ref) => {
1779
2148
  const { open, contentId } = useCollapsibleContext();
1780
2149
  const dataState = open ? "open" : "closed";
1781
2150
  if (!open) return null;
1782
- return React40.createElement(
2151
+ return React41.createElement(
1783
2152
  "div",
1784
2153
  {
1785
2154
  ref,
@@ -1924,9 +2293,9 @@ var commandGroupVariants = cva({
1924
2293
  });
1925
2294
 
1926
2295
  // ../react-command/dist/index.js
1927
- var CommandContext = React40.createContext(null);
2296
+ var CommandContext = React41.createContext(null);
1928
2297
  function useCommandContext() {
1929
- const ctx = React40.useContext(CommandContext);
2298
+ const ctx = React41.useContext(CommandContext);
1930
2299
  if (!ctx) {
1931
2300
  throw new Error("Command compound components must be used within <Command>");
1932
2301
  }
@@ -1939,11 +2308,11 @@ function Command({
1939
2308
  className,
1940
2309
  children
1941
2310
  }) {
1942
- const [items, setItems] = React40.useState([]);
1943
- const [search, setSearch] = React40.useState("");
1944
- const [selectedIndex, setSelectedIndex] = React40.useState(0);
1945
- const apiRef = React40.useRef(null);
1946
- const api = React40.useMemo(() => {
2311
+ const [items, setItems] = React41.useState([]);
2312
+ const [search, setSearch] = React41.useState("");
2313
+ const [selectedIndex, setSelectedIndex] = React41.useState(0);
2314
+ const apiRef = React41.useRef(null);
2315
+ const api = React41.useMemo(() => {
1947
2316
  const instance = createCommand({ open, onOpenChange, filter }, items);
1948
2317
  if (search) {
1949
2318
  instance.search(search);
@@ -1952,23 +2321,23 @@ function Command({
1952
2321
  return instance;
1953
2322
  }, [open, onOpenChange, filter, items, search]);
1954
2323
  const filteredItems = api.state.filteredItems;
1955
- const handleSearch = React40.useCallback((query) => {
2324
+ const handleSearch = React41.useCallback((query) => {
1956
2325
  setSearch(query);
1957
2326
  setSelectedIndex(0);
1958
2327
  }, []);
1959
- const handleSelect = React40.useCallback((index) => {
2328
+ const handleSelect = React41.useCallback((index) => {
1960
2329
  setSelectedIndex(index);
1961
2330
  }, []);
1962
- const registerItem = React40.useCallback((item) => {
2331
+ const registerItem = React41.useCallback((item) => {
1963
2332
  setItems((prev) => {
1964
2333
  if (prev.some((i) => i.id === item.id)) return prev;
1965
2334
  return [...prev, item];
1966
2335
  });
1967
2336
  }, []);
1968
- const unregisterItem = React40.useCallback((id) => {
2337
+ const unregisterItem = React41.useCallback((id) => {
1969
2338
  setItems((prev) => prev.filter((i) => i.id !== id));
1970
2339
  }, []);
1971
- const handleKeyDown = React40.useCallback(
2340
+ const handleKeyDown = React41.useCallback(
1972
2341
  (e) => {
1973
2342
  const handler = createKeyboardHandler({
1974
2343
  [Keys.ArrowDown]: (ev) => {
@@ -1995,7 +2364,7 @@ function Command({
1995
2364
  },
1996
2365
  [filteredItems.length, onOpenChange]
1997
2366
  );
1998
- const ctx = React40.useMemo(
2367
+ const ctx = React41.useMemo(
1999
2368
  () => ({
2000
2369
  search,
2001
2370
  onSearch: handleSearch,
@@ -2010,10 +2379,10 @@ function Command({
2010
2379
  }),
2011
2380
  [search, handleSearch, selectedIndex, handleSelect, items, filteredItems, registerItem, unregisterItem, api.ids.list, api.ids.input]
2012
2381
  );
2013
- return React40.createElement(
2382
+ return React41.createElement(
2014
2383
  CommandContext.Provider,
2015
2384
  { value: ctx },
2016
- React40.createElement(
2385
+ React41.createElement(
2017
2386
  "div",
2018
2387
  {
2019
2388
  className: cn(commandVariants(), className),
@@ -2025,14 +2394,14 @@ function Command({
2025
2394
  );
2026
2395
  }
2027
2396
  Command.displayName = "Command";
2028
- var CommandInput = React40.forwardRef(
2397
+ var CommandInput = React41.forwardRef(
2029
2398
  ({ className, onChange, ...props }, ref) => {
2030
2399
  const { search, onSearch, inputId, listId } = useCommandContext();
2031
2400
  const handleChange = (e) => {
2032
2401
  onSearch(e.target.value);
2033
2402
  onChange?.(e);
2034
2403
  };
2035
- return React40.createElement("input", {
2404
+ return React41.createElement("input", {
2036
2405
  ref,
2037
2406
  id: inputId,
2038
2407
  type: "text",
@@ -2047,10 +2416,10 @@ var CommandInput = React40.forwardRef(
2047
2416
  }
2048
2417
  );
2049
2418
  CommandInput.displayName = "CommandInput";
2050
- var CommandList = React40.forwardRef(
2419
+ var CommandList = React41.forwardRef(
2051
2420
  ({ className, children, ...props }, ref) => {
2052
2421
  const { listId } = useCommandContext();
2053
- return React40.createElement(
2422
+ return React41.createElement(
2054
2423
  "div",
2055
2424
  {
2056
2425
  ref,
@@ -2065,11 +2434,11 @@ var CommandList = React40.forwardRef(
2065
2434
  }
2066
2435
  );
2067
2436
  CommandList.displayName = "CommandList";
2068
- var CommandEmpty = React40.forwardRef(
2437
+ var CommandEmpty = React41.forwardRef(
2069
2438
  ({ className, children, ...props }, ref) => {
2070
2439
  const { filteredItems } = useCommandContext();
2071
2440
  if (filteredItems.length > 0) return null;
2072
- return React40.createElement(
2441
+ return React41.createElement(
2073
2442
  "div",
2074
2443
  {
2075
2444
  ref,
@@ -2082,9 +2451,9 @@ var CommandEmpty = React40.forwardRef(
2082
2451
  }
2083
2452
  );
2084
2453
  CommandEmpty.displayName = "CommandEmpty";
2085
- var CommandGroup = React40.forwardRef(
2454
+ var CommandGroup = React41.forwardRef(
2086
2455
  ({ className, heading, children, ...props }, ref) => {
2087
- return React40.createElement(
2456
+ return React41.createElement(
2088
2457
  "div",
2089
2458
  {
2090
2459
  ref,
@@ -2093,7 +2462,7 @@ var CommandGroup = React40.forwardRef(
2093
2462
  "aria-label": heading,
2094
2463
  ...props
2095
2464
  },
2096
- heading ? React40.createElement(
2465
+ heading ? React41.createElement(
2097
2466
  "div",
2098
2467
  { className: "px-2 py-1.5 text-xs font-medium text-muted-foreground" },
2099
2468
  heading
@@ -2103,10 +2472,10 @@ var CommandGroup = React40.forwardRef(
2103
2472
  }
2104
2473
  );
2105
2474
  CommandGroup.displayName = "CommandGroup";
2106
- var CommandItem = React40.forwardRef(
2475
+ var CommandItem = React41.forwardRef(
2107
2476
  ({ className, value, disabled, onSelect: onItemSelect, children, ...props }, ref) => {
2108
2477
  const state = disabled ? "disabled" : "default";
2109
- return React40.createElement(
2478
+ return React41.createElement(
2110
2479
  "div",
2111
2480
  {
2112
2481
  ref,
@@ -2127,9 +2496,9 @@ var CommandItem = React40.forwardRef(
2127
2496
  }
2128
2497
  );
2129
2498
  CommandItem.displayName = "CommandItem";
2130
- var CommandSeparator = React40.forwardRef(
2499
+ var CommandSeparator = React41.forwardRef(
2131
2500
  ({ className, ...props }, ref) => {
2132
- return React40.createElement("div", {
2501
+ return React41.createElement("div", {
2133
2502
  ref,
2134
2503
  role: "separator",
2135
2504
  className: cn("-mx-1 h-px bg-border", className),
@@ -2176,7 +2545,7 @@ var contentProtectionVariants = cva({
2176
2545
  var watermarkVariants = cva({
2177
2546
  base: "pointer-events-none absolute inset-0 z-50 overflow-hidden"
2178
2547
  });
2179
- var ContentProtection = React40.forwardRef(
2548
+ var ContentProtection = React41.forwardRef(
2180
2549
  ({
2181
2550
  enabled,
2182
2551
  disableCopy,
@@ -2423,10 +2792,10 @@ function DataTable({
2423
2792
  className,
2424
2793
  emptyMessage = "No data available"
2425
2794
  }) {
2426
- const [sortBy, setSortBy] = React40.useState(controlledSortBy ?? null);
2427
- const [sortDir, setSortDir] = React40.useState(controlledSortDir);
2428
- const [filters, setFilters] = React40.useState(controlledFilters ?? {});
2429
- const api = React40.useMemo(
2795
+ const [sortBy, setSortBy] = React41.useState(controlledSortBy ?? null);
2796
+ const [sortDir, setSortDir] = React41.useState(controlledSortDir);
2797
+ const [filters, setFilters] = React41.useState(controlledFilters ?? {});
2798
+ const api = React41.useMemo(
2430
2799
  () => createDataTable({
2431
2800
  columns,
2432
2801
  data,
@@ -2437,7 +2806,7 @@ function DataTable({
2437
2806
  }),
2438
2807
  [columns, data, sortBy, sortDir, onSort, filters]
2439
2808
  );
2440
- const handleSort = React40.useCallback(
2809
+ const handleSort = React41.useCallback(
2441
2810
  (columnId) => {
2442
2811
  const col = columns.find((c) => c.id === columnId);
2443
2812
  if (!col?.sortable) return;
@@ -2451,7 +2820,7 @@ function DataTable({
2451
2820
  },
2452
2821
  [columns, sortBy, sortDir, onSort]
2453
2822
  );
2454
- const handleFilter = React40.useCallback(
2823
+ const handleFilter = React41.useCallback(
2455
2824
  (columnId, value) => {
2456
2825
  setFilters((prev) => ({ ...prev, [columnId]: value }));
2457
2826
  },
@@ -2459,87 +2828,91 @@ function DataTable({
2459
2828
  );
2460
2829
  const sortedData = api.state.sortedData;
2461
2830
  const hasFilterable = columns.some((c) => c.filterable);
2462
- return React40.createElement(
2463
- "table",
2464
- {
2465
- className: cn(tableVariants(), className),
2466
- role: "table"
2467
- },
2468
- // thead
2469
- React40.createElement(
2470
- "thead",
2471
- null,
2472
- // Header row
2473
- React40.createElement(
2474
- "tr",
2475
- { role: "row" },
2476
- ...columns.map((col) => {
2477
- const headerProps = api.getHeaderProps(col);
2478
- return React40.createElement(
2479
- "th",
2480
- {
2481
- key: col.id,
2482
- ...headerProps,
2483
- className: headerVariants({ sortable: col.sortable ? "true" : "false" }),
2484
- onClick: col.sortable ? () => handleSort(col.id) : void 0
2485
- },
2486
- col.header,
2487
- col.sortable && sortBy === col.id ? React40.createElement("span", { "aria-hidden": true }, sortDir === "asc" ? " \u2191" : " \u2193") : null
2488
- );
2489
- })
2490
- ),
2491
- // Filter row
2492
- hasFilterable ? React40.createElement(
2493
- "tr",
2494
- { role: "row", "data-filter-row": "true" },
2495
- ...columns.map(
2496
- (col) => React40.createElement(
2497
- "th",
2498
- { key: `filter-${col.id}` },
2499
- col.filterable ? React40.createElement("input", {
2500
- type: "text",
2501
- "aria-label": `Filter ${col.header}`,
2502
- value: filters[col.id] ?? "",
2503
- onChange: (e) => handleFilter(col.id, e.target.value),
2504
- placeholder: `Filter...`
2505
- }) : null
2506
- )
2507
- )
2508
- ) : null
2509
- ),
2510
- // tbody
2511
- React40.createElement(
2512
- "tbody",
2513
- null,
2514
- sortedData.length === 0 ? React40.createElement(
2515
- "tr",
2516
- { role: "row" },
2517
- React40.createElement(
2518
- "td",
2519
- {
2520
- colSpan: columns.length,
2521
- className: "text-center p-4 text-muted-foreground",
2522
- role: "cell"
2523
- },
2524
- emptyMessage
2525
- )
2526
- ) : sortedData.map(
2527
- (row, rowIndex) => React40.createElement(
2831
+ return React41.createElement(
2832
+ "div",
2833
+ { className: "relative w-full overflow-auto" },
2834
+ React41.createElement(
2835
+ "table",
2836
+ {
2837
+ className: cn(tableVariants(), className),
2838
+ role: "table"
2839
+ },
2840
+ // thead
2841
+ React41.createElement(
2842
+ "thead",
2843
+ null,
2844
+ // Header row
2845
+ React41.createElement(
2528
2846
  "tr",
2529
- {
2530
- key: rowIndex,
2531
- ...api.getRowProps(row, rowIndex),
2532
- className: rowVariants()
2533
- },
2534
- ...columns.map(
2535
- (col) => React40.createElement(
2536
- "td",
2847
+ { role: "row" },
2848
+ ...columns.map((col) => {
2849
+ const headerProps = api.getHeaderProps(col);
2850
+ return React41.createElement(
2851
+ "th",
2537
2852
  {
2538
2853
  key: col.id,
2539
- ...api.getCellProps(col, row),
2540
- className: cellVariants()
2854
+ ...headerProps,
2855
+ className: headerVariants({ sortable: col.sortable ? "true" : "false" }),
2856
+ onClick: col.sortable ? () => handleSort(col.id) : void 0
2541
2857
  },
2542
- String(col.accessor(row) ?? "")
2858
+ col.header,
2859
+ col.sortable && sortBy === col.id ? React41.createElement("span", { "aria-hidden": true }, sortDir === "asc" ? " \u2191" : " \u2193") : null
2860
+ );
2861
+ })
2862
+ ),
2863
+ // Filter row
2864
+ hasFilterable ? React41.createElement(
2865
+ "tr",
2866
+ { role: "row", "data-filter-row": "true" },
2867
+ ...columns.map(
2868
+ (col) => React41.createElement(
2869
+ "th",
2870
+ { key: `filter-${col.id}` },
2871
+ col.filterable ? React41.createElement("input", {
2872
+ type: "text",
2873
+ "aria-label": `Filter ${col.header}`,
2874
+ value: filters[col.id] ?? "",
2875
+ onChange: (e) => handleFilter(col.id, e.target.value),
2876
+ placeholder: `Filter...`
2877
+ }) : null
2878
+ )
2879
+ )
2880
+ ) : null
2881
+ ),
2882
+ // tbody
2883
+ React41.createElement(
2884
+ "tbody",
2885
+ null,
2886
+ sortedData.length === 0 ? React41.createElement(
2887
+ "tr",
2888
+ { role: "row" },
2889
+ React41.createElement(
2890
+ "td",
2891
+ {
2892
+ colSpan: columns.length,
2893
+ className: "text-center p-4 text-muted-foreground",
2894
+ role: "cell"
2895
+ },
2896
+ emptyMessage
2897
+ )
2898
+ ) : sortedData.map(
2899
+ (row, rowIndex) => React41.createElement(
2900
+ "tr",
2901
+ {
2902
+ key: rowIndex,
2903
+ ...api.getRowProps(row, rowIndex),
2904
+ className: rowVariants()
2905
+ },
2906
+ ...columns.map(
2907
+ (col) => React41.createElement(
2908
+ "td",
2909
+ {
2910
+ key: col.id,
2911
+ ...api.getCellProps(col, row),
2912
+ className: cellVariants()
2913
+ },
2914
+ String(col.accessor(row) ?? "")
2915
+ )
2543
2916
  )
2544
2917
  )
2545
2918
  )
@@ -2641,7 +3014,7 @@ function DeviceFrame({
2641
3014
  children
2642
3015
  }) {
2643
3016
  const api = createDeviceFrame({ device, orientation });
2644
- return React40.createElement(
3017
+ return React41.createElement(
2645
3018
  "div",
2646
3019
  {
2647
3020
  className: cn(deviceFrameVariants({ device, orientation }), className),
@@ -2653,13 +3026,13 @@ function DeviceFrame({
2653
3026
  ...api.dataAttributes
2654
3027
  },
2655
3028
  // Notch decoration
2656
- api.dimensions.notch ? React40.createElement("div", {
3029
+ api.dimensions.notch ? React41.createElement("div", {
2657
3030
  className: "absolute top-0 left-1/2 -translate-x-1/2 w-[40%] h-[30px] bg-black rounded-b-2xl z-10",
2658
3031
  "aria-hidden": "true",
2659
3032
  "data-part": "notch"
2660
3033
  }) : null,
2661
3034
  // Screen area
2662
- React40.createElement(
3035
+ React41.createElement(
2663
3036
  "div",
2664
3037
  {
2665
3038
  className: "relative w-full h-full overflow-hidden bg-white",
@@ -2668,7 +3041,7 @@ function DeviceFrame({
2668
3041
  children
2669
3042
  ),
2670
3043
  // Home indicator decoration
2671
- api.dimensions.homeIndicator ? React40.createElement("div", {
3044
+ api.dimensions.homeIndicator ? React41.createElement("div", {
2672
3045
  className: "absolute bottom-2 left-1/2 -translate-x-1/2 w-[35%] h-[5px] bg-gray-300 rounded-full z-10",
2673
3046
  "aria-hidden": "true",
2674
3047
  "data-part": "home-indicator"
@@ -2757,9 +3130,9 @@ var dialogContentVariants = cva({
2757
3130
  });
2758
3131
 
2759
3132
  // ../react-dialog/dist/index.js
2760
- var DialogContext = React40.createContext(null);
3133
+ var DialogContext = React41.createContext(null);
2761
3134
  function useDialogContext() {
2762
- const ctx = React40.useContext(DialogContext);
3135
+ const ctx = React41.useContext(DialogContext);
2763
3136
  if (!ctx) {
2764
3137
  throw new Error("Dialog compound components must be used within <Dialog>");
2765
3138
  }
@@ -2772,10 +3145,10 @@ function Dialog({
2772
3145
  modal = true,
2773
3146
  children
2774
3147
  }) {
2775
- const [uncontrolledOpen, setUncontrolledOpen] = React40.useState(defaultOpen);
3148
+ const [uncontrolledOpen, setUncontrolledOpen] = React41.useState(defaultOpen);
2776
3149
  const isControlled = controlledOpen !== void 0;
2777
3150
  const open = isControlled ? controlledOpen : uncontrolledOpen;
2778
- const handleOpenChange = React40.useCallback(
3151
+ const handleOpenChange = React41.useCallback(
2779
3152
  (next) => {
2780
3153
  if (!isControlled) {
2781
3154
  setUncontrolledOpen(next);
@@ -2784,12 +3157,12 @@ function Dialog({
2784
3157
  },
2785
3158
  [isControlled, onOpenChange]
2786
3159
  );
2787
- const apiRef = React40.useRef(null);
3160
+ const apiRef = React41.useRef(null);
2788
3161
  if (apiRef.current === null) {
2789
3162
  apiRef.current = createDialog({ open, modal });
2790
3163
  }
2791
3164
  const api = apiRef.current;
2792
- const ctx = React40.useMemo(
3165
+ const ctx = React41.useMemo(
2793
3166
  () => ({
2794
3167
  open,
2795
3168
  onOpenChange: handleOpenChange,
@@ -2800,17 +3173,17 @@ function Dialog({
2800
3173
  }),
2801
3174
  [open, handleOpenChange, modal, api.ids.content, api.ids.title, api.ids.description]
2802
3175
  );
2803
- return React40.createElement(DialogContext.Provider, { value: ctx }, children);
3176
+ return React41.createElement(DialogContext.Provider, { value: ctx }, children);
2804
3177
  }
2805
3178
  Dialog.displayName = "Dialog";
2806
- var DialogTrigger = React40.forwardRef(
3179
+ var DialogTrigger = React41.forwardRef(
2807
3180
  ({ onClick, children, ...props }, ref) => {
2808
3181
  const { open, onOpenChange, contentId } = useDialogContext();
2809
3182
  const handleClick = (e) => {
2810
3183
  onOpenChange(!open);
2811
3184
  onClick?.(e);
2812
3185
  };
2813
- return React40.createElement(
3186
+ return React41.createElement(
2814
3187
  "button",
2815
3188
  {
2816
3189
  ref,
@@ -2826,7 +3199,7 @@ var DialogTrigger = React40.forwardRef(
2826
3199
  }
2827
3200
  );
2828
3201
  DialogTrigger.displayName = "DialogTrigger";
2829
- var DialogOverlay = React40.forwardRef(
3202
+ var DialogOverlay = React41.forwardRef(
2830
3203
  ({ className, onClick, ...props }, ref) => {
2831
3204
  const { open, onOpenChange } = useDialogContext();
2832
3205
  if (!open) return null;
@@ -2836,7 +3209,7 @@ var DialogOverlay = React40.forwardRef(
2836
3209
  }
2837
3210
  onClick?.(e);
2838
3211
  };
2839
- return React40.createElement("div", {
3212
+ return React41.createElement("div", {
2840
3213
  ref,
2841
3214
  className: cn(overlayStyles, className),
2842
3215
  "data-state": open ? "open" : "closed",
@@ -2846,10 +3219,10 @@ var DialogOverlay = React40.forwardRef(
2846
3219
  }
2847
3220
  );
2848
3221
  DialogOverlay.displayName = "DialogOverlay";
2849
- var DialogContent = React40.forwardRef(
3222
+ var DialogContent = React41.forwardRef(
2850
3223
  ({ className, children, onKeyDown, ...props }, ref) => {
2851
3224
  const { open, onOpenChange, modal, contentId, titleId, descriptionId } = useDialogContext();
2852
- React40.useMemo(
3225
+ React41.useMemo(
2853
3226
  () => createDialog({ open, modal }),
2854
3227
  [open, modal]
2855
3228
  );
@@ -2864,7 +3237,7 @@ var DialogContent = React40.forwardRef(
2864
3237
  onKeyDown?.(e);
2865
3238
  };
2866
3239
  if (!open) return null;
2867
- const content = React40.createElement(
3240
+ const content = React41.createElement(
2868
3241
  "div",
2869
3242
  {
2870
3243
  ref,
@@ -2887,9 +3260,9 @@ var DialogContent = React40.forwardRef(
2887
3260
  }
2888
3261
  );
2889
3262
  DialogContent.displayName = "DialogContent";
2890
- var DialogHeader = React40.forwardRef(
3263
+ var DialogHeader = React41.forwardRef(
2891
3264
  ({ className, ...props }, ref) => {
2892
- return React40.createElement("div", {
3265
+ return React41.createElement("div", {
2893
3266
  ref,
2894
3267
  className: cn("flex flex-col space-y-1.5 text-center sm:text-left", className),
2895
3268
  ...props
@@ -2897,9 +3270,9 @@ var DialogHeader = React40.forwardRef(
2897
3270
  }
2898
3271
  );
2899
3272
  DialogHeader.displayName = "DialogHeader";
2900
- var DialogFooter = React40.forwardRef(
3273
+ var DialogFooter = React41.forwardRef(
2901
3274
  ({ className, ...props }, ref) => {
2902
- return React40.createElement("div", {
3275
+ return React41.createElement("div", {
2903
3276
  ref,
2904
3277
  className: cn(
2905
3278
  "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
@@ -2910,10 +3283,10 @@ var DialogFooter = React40.forwardRef(
2910
3283
  }
2911
3284
  );
2912
3285
  DialogFooter.displayName = "DialogFooter";
2913
- var DialogTitle = React40.forwardRef(
3286
+ var DialogTitle = React41.forwardRef(
2914
3287
  ({ className, ...props }, ref) => {
2915
3288
  const { titleId } = useDialogContext();
2916
- return React40.createElement("h2", {
3289
+ return React41.createElement("h2", {
2917
3290
  ref,
2918
3291
  id: titleId,
2919
3292
  className: cn("text-lg font-semibold leading-none tracking-tight", className),
@@ -2922,9 +3295,9 @@ var DialogTitle = React40.forwardRef(
2922
3295
  }
2923
3296
  );
2924
3297
  DialogTitle.displayName = "DialogTitle";
2925
- var DialogDescription = React40.forwardRef(({ className, ...props }, ref) => {
3298
+ var DialogDescription = React41.forwardRef(({ className, ...props }, ref) => {
2926
3299
  const { descriptionId } = useDialogContext();
2927
- return React40.createElement("p", {
3300
+ return React41.createElement("p", {
2928
3301
  ref,
2929
3302
  id: descriptionId,
2930
3303
  className: cn("text-sm text-muted-foreground", className),
@@ -2932,14 +3305,14 @@ var DialogDescription = React40.forwardRef(({ className, ...props }, ref) => {
2932
3305
  });
2933
3306
  });
2934
3307
  DialogDescription.displayName = "DialogDescription";
2935
- var DialogClose = React40.forwardRef(
3308
+ var DialogClose = React41.forwardRef(
2936
3309
  ({ onClick, children, ...props }, ref) => {
2937
3310
  const { onOpenChange } = useDialogContext();
2938
3311
  const handleClick = (e) => {
2939
3312
  onOpenChange(false);
2940
3313
  onClick?.(e);
2941
3314
  };
2942
- return React40.createElement(
3315
+ return React41.createElement(
2943
3316
  "button",
2944
3317
  {
2945
3318
  ref,
@@ -3044,9 +3417,9 @@ var menuItemVariants = cva({
3044
3417
  });
3045
3418
 
3046
3419
  // ../react-dropdown-menu/dist/index.js
3047
- var DropdownMenuContext = React40.createContext(null);
3420
+ var DropdownMenuContext = React41.createContext(null);
3048
3421
  function useDropdownMenuContext() {
3049
- const ctx = React40.useContext(DropdownMenuContext);
3422
+ const ctx = React41.useContext(DropdownMenuContext);
3050
3423
  if (!ctx) {
3051
3424
  throw new Error("DropdownMenu compound components must be used within <DropdownMenu>");
3052
3425
  }
@@ -3058,10 +3431,10 @@ function DropdownMenu({
3058
3431
  onOpenChange,
3059
3432
  children
3060
3433
  }) {
3061
- const [uncontrolledOpen, setUncontrolledOpen] = React40.useState(defaultOpen);
3434
+ const [uncontrolledOpen, setUncontrolledOpen] = React41.useState(defaultOpen);
3062
3435
  const isControlled = controlledOpen !== void 0;
3063
3436
  const open = isControlled ? controlledOpen : uncontrolledOpen;
3064
- const handleOpenChange = React40.useCallback(
3437
+ const handleOpenChange = React41.useCallback(
3065
3438
  (next) => {
3066
3439
  if (!isControlled) {
3067
3440
  setUncontrolledOpen(next);
@@ -3070,12 +3443,12 @@ function DropdownMenu({
3070
3443
  },
3071
3444
  [isControlled, onOpenChange]
3072
3445
  );
3073
- const apiRef = React40.useRef(null);
3446
+ const apiRef = React41.useRef(null);
3074
3447
  if (apiRef.current === null) {
3075
3448
  apiRef.current = createDropdownMenu({ open });
3076
3449
  }
3077
3450
  const api = apiRef.current;
3078
- const ctx = React40.useMemo(
3451
+ const ctx = React41.useMemo(
3079
3452
  () => ({
3080
3453
  open,
3081
3454
  onOpenChange: handleOpenChange,
@@ -3083,17 +3456,17 @@ function DropdownMenu({
3083
3456
  }),
3084
3457
  [open, handleOpenChange, api.ids.content]
3085
3458
  );
3086
- return React40.createElement(DropdownMenuContext.Provider, { value: ctx }, children);
3459
+ return React41.createElement(DropdownMenuContext.Provider, { value: ctx }, children);
3087
3460
  }
3088
3461
  DropdownMenu.displayName = "DropdownMenu";
3089
- var DropdownMenuTrigger = React40.forwardRef(
3462
+ var DropdownMenuTrigger = React41.forwardRef(
3090
3463
  ({ onClick, children, ...props }, ref) => {
3091
3464
  const { open, onOpenChange, contentId } = useDropdownMenuContext();
3092
3465
  const handleClick = (e) => {
3093
3466
  onOpenChange(!open);
3094
3467
  onClick?.(e);
3095
3468
  };
3096
- return React40.createElement(
3469
+ return React41.createElement(
3097
3470
  "button",
3098
3471
  {
3099
3472
  ref,
@@ -3109,7 +3482,7 @@ var DropdownMenuTrigger = React40.forwardRef(
3109
3482
  }
3110
3483
  );
3111
3484
  DropdownMenuTrigger.displayName = "DropdownMenuTrigger";
3112
- var DropdownMenuContent = React40.forwardRef(
3485
+ var DropdownMenuContent = React41.forwardRef(
3113
3486
  ({ className, children, onKeyDown, ...props }, ref) => {
3114
3487
  const { open, onOpenChange, contentId } = useDropdownMenuContext();
3115
3488
  const handleKeyDown = (e) => {
@@ -3123,7 +3496,7 @@ var DropdownMenuContent = React40.forwardRef(
3123
3496
  onKeyDown?.(e);
3124
3497
  };
3125
3498
  if (!open) return null;
3126
- const content = React40.createElement(
3499
+ const content = React41.createElement(
3127
3500
  "div",
3128
3501
  {
3129
3502
  ref,
@@ -3144,7 +3517,7 @@ var DropdownMenuContent = React40.forwardRef(
3144
3517
  }
3145
3518
  );
3146
3519
  DropdownMenuContent.displayName = "DropdownMenuContent";
3147
- var DropdownMenuItem = React40.forwardRef(
3520
+ var DropdownMenuItem = React41.forwardRef(
3148
3521
  ({ className, disabled, onSelect, onClick, children, ...props }, ref) => {
3149
3522
  const { onOpenChange } = useDropdownMenuContext();
3150
3523
  const handleClick = (e) => {
@@ -3161,7 +3534,7 @@ var DropdownMenuItem = React40.forwardRef(
3161
3534
  onOpenChange(false);
3162
3535
  }
3163
3536
  };
3164
- return React40.createElement(
3537
+ return React41.createElement(
3165
3538
  "div",
3166
3539
  {
3167
3540
  ref,
@@ -3179,9 +3552,9 @@ var DropdownMenuItem = React40.forwardRef(
3179
3552
  }
3180
3553
  );
3181
3554
  DropdownMenuItem.displayName = "DropdownMenuItem";
3182
- var DropdownMenuSeparator = React40.forwardRef(
3555
+ var DropdownMenuSeparator = React41.forwardRef(
3183
3556
  ({ className, ...props }, ref) => {
3184
- return React40.createElement("div", {
3557
+ return React41.createElement("div", {
3185
3558
  ref,
3186
3559
  role: "separator",
3187
3560
  className: cn("-mx-1 my-1 h-px bg-muted", className),
@@ -3190,9 +3563,9 @@ var DropdownMenuSeparator = React40.forwardRef(
3190
3563
  }
3191
3564
  );
3192
3565
  DropdownMenuSeparator.displayName = "DropdownMenuSeparator";
3193
- var DropdownMenuLabel = React40.forwardRef(
3566
+ var DropdownMenuLabel = React41.forwardRef(
3194
3567
  ({ className, ...props }, ref) => {
3195
- return React40.createElement("div", {
3568
+ return React41.createElement("div", {
3196
3569
  ref,
3197
3570
  className: cn("px-2 py-1.5 text-sm font-semibold", className),
3198
3571
  ...props
@@ -3304,15 +3677,15 @@ function FeedbackDialog({
3304
3677
  type = "general",
3305
3678
  className
3306
3679
  }) {
3307
- const [open, setOpen] = React40.useState(controlledOpen ?? false);
3308
- const [comment, setComment] = React40.useState("");
3309
- const [email, setEmail] = React40.useState("");
3310
- const [honeypot, setHoneypot] = React40.useState("");
3311
- const [isSubmitting, setIsSubmitting] = React40.useState(false);
3312
- const [isSubmitted, setIsSubmitted] = React40.useState(false);
3680
+ const [open, setOpen] = React41.useState(controlledOpen ?? false);
3681
+ const [comment, setComment] = React41.useState("");
3682
+ const [email, setEmail] = React41.useState("");
3683
+ const [honeypot, setHoneypot] = React41.useState("");
3684
+ const [isSubmitting, setIsSubmitting] = React41.useState(false);
3685
+ const [isSubmitted, setIsSubmitted] = React41.useState(false);
3313
3686
  const isControlled = controlledOpen !== void 0;
3314
3687
  const isOpen = isControlled ? controlledOpen : open;
3315
- const handleOpenChange = React40.useCallback(
3688
+ const handleOpenChange = React41.useCallback(
3316
3689
  (next) => {
3317
3690
  if (!isControlled) {
3318
3691
  setOpen(next);
@@ -3321,11 +3694,11 @@ function FeedbackDialog({
3321
3694
  },
3322
3695
  [isControlled, onOpenChange]
3323
3696
  );
3324
- const apiRef = React40.useRef(null);
3697
+ const apiRef = React41.useRef(null);
3325
3698
  if (apiRef.current === null) {
3326
3699
  apiRef.current = createFeedbackDialog({ open: isOpen, onOpenChange: handleOpenChange, onSubmit, type });
3327
3700
  }
3328
- const handleSubmit = React40.useCallback(async () => {
3701
+ const handleSubmit = React41.useCallback(async () => {
3329
3702
  if (honeypot) return;
3330
3703
  if (!comment.trim()) return;
3331
3704
  setIsSubmitting(true);
@@ -3342,7 +3715,7 @@ function FeedbackDialog({
3342
3715
  setIsSubmitting(false);
3343
3716
  }
3344
3717
  }, [comment, email, honeypot, type, onSubmit]);
3345
- const handleReset = React40.useCallback(() => {
3718
+ const handleReset = React41.useCallback(() => {
3346
3719
  setComment("");
3347
3720
  setEmail("");
3348
3721
  setHoneypot("");
@@ -3352,15 +3725,15 @@ function FeedbackDialog({
3352
3725
  if (!isOpen) return null;
3353
3726
  const api = apiRef.current;
3354
3727
  if (isSubmitted) {
3355
- return React40.createElement(
3728
+ return React41.createElement(
3356
3729
  "div",
3357
3730
  {
3358
3731
  className: cn(feedbackDialogVariants({ type }), className),
3359
3732
  ...api.ariaProps,
3360
3733
  "data-state": "submitted"
3361
3734
  },
3362
- React40.createElement("p", { "data-testid": "success-message" }, "Thank you for your feedback!"),
3363
- React40.createElement(
3735
+ React41.createElement("p", { "data-testid": "success-message" }, "Thank you for your feedback!"),
3736
+ React41.createElement(
3364
3737
  "button",
3365
3738
  {
3366
3739
  type: "button",
@@ -3373,22 +3746,22 @@ function FeedbackDialog({
3373
3746
  )
3374
3747
  );
3375
3748
  }
3376
- return React40.createElement(
3749
+ return React41.createElement(
3377
3750
  "div",
3378
3751
  {
3379
3752
  className: cn(feedbackDialogVariants({ type }), className),
3380
3753
  ...api.ariaProps,
3381
3754
  "data-state": "open"
3382
3755
  },
3383
- React40.createElement("h2", { id: `${api.ariaProps.id}-title` }, "Send Feedback"),
3384
- React40.createElement("textarea", {
3756
+ React41.createElement("h2", { id: `${api.ariaProps.id}-title` }, "Send Feedback"),
3757
+ React41.createElement("textarea", {
3385
3758
  "aria-label": "Feedback comment",
3386
3759
  value: comment,
3387
3760
  onChange: (e) => setComment(e.target.value),
3388
3761
  placeholder: "Your feedback...",
3389
3762
  disabled: isSubmitting
3390
3763
  }),
3391
- React40.createElement("input", {
3764
+ React41.createElement("input", {
3392
3765
  type: "email",
3393
3766
  "aria-label": "Email",
3394
3767
  value: email,
@@ -3397,7 +3770,7 @@ function FeedbackDialog({
3397
3770
  disabled: isSubmitting
3398
3771
  }),
3399
3772
  // Honeypot field — hidden from real users
3400
- React40.createElement("input", {
3773
+ React41.createElement("input", {
3401
3774
  type: "text",
3402
3775
  "aria-hidden": true,
3403
3776
  tabIndex: -1,
@@ -3407,7 +3780,7 @@ function FeedbackDialog({
3407
3780
  autoComplete: "off",
3408
3781
  name: "website"
3409
3782
  }),
3410
- React40.createElement(
3783
+ React41.createElement(
3411
3784
  "button",
3412
3785
  {
3413
3786
  type: "button",
@@ -3419,9 +3792,9 @@ function FeedbackDialog({
3419
3792
  );
3420
3793
  }
3421
3794
  FeedbackDialog.displayName = "FeedbackDialog";
3422
- var FeedbackButton = React40.forwardRef(
3795
+ var FeedbackButton = React41.forwardRef(
3423
3796
  ({ children, ...props }, ref) => {
3424
- return React40.createElement(
3797
+ return React41.createElement(
3425
3798
  "button",
3426
3799
  {
3427
3800
  ref,
@@ -3448,7 +3821,7 @@ function createFooter(props = {}) {
3448
3821
  var footerVariants = cva({
3449
3822
  base: "border-t bg-background py-8"
3450
3823
  });
3451
- var Footer = React40.forwardRef(
3824
+ var Footer = React41.forwardRef(
3452
3825
  ({
3453
3826
  copyright,
3454
3827
  socialLinks = [],
@@ -3586,34 +3959,34 @@ function InlineEditor({
3586
3959
  onCancel,
3587
3960
  className
3588
3961
  }) {
3589
- const [isEditing, setIsEditing] = React40.useState(false);
3590
- const [editValue, setEditValue] = React40.useState(initialValue);
3591
- const apiRef = React40.useRef(null);
3962
+ const [isEditing, setIsEditing] = React41.useState(false);
3963
+ const [editValue, setEditValue] = React41.useState(initialValue);
3964
+ const apiRef = React41.useRef(null);
3592
3965
  if (apiRef.current === null) {
3593
3966
  apiRef.current = createInlineEditor({ value: initialValue, onSave, onCancel });
3594
3967
  }
3595
3968
  const api = apiRef.current;
3596
- const handleStartEditing = React40.useCallback(() => {
3969
+ const handleStartEditing = React41.useCallback(() => {
3597
3970
  setIsEditing(true);
3598
3971
  setEditValue(initialValue);
3599
3972
  }, [initialValue]);
3600
- const handleCancel = React40.useCallback(() => {
3973
+ const handleCancel = React41.useCallback(() => {
3601
3974
  setIsEditing(false);
3602
3975
  setEditValue(initialValue);
3603
3976
  onCancel?.();
3604
3977
  }, [initialValue, onCancel]);
3605
- const handleSave = React40.useCallback(() => {
3978
+ const handleSave = React41.useCallback(() => {
3606
3979
  setIsEditing(false);
3607
3980
  onSave?.(editValue);
3608
3981
  }, [editValue, onSave]);
3609
- const handleInsert = React40.useCallback(
3982
+ const handleInsert = React41.useCallback(
3610
3983
  (syntax) => {
3611
3984
  setEditValue((prev) => prev + syntax);
3612
3985
  },
3613
3986
  []
3614
3987
  );
3615
3988
  if (!isEditing) {
3616
- return React40.createElement(
3989
+ return React41.createElement(
3617
3990
  "div",
3618
3991
  {
3619
3992
  className: cn(editorVariants({ state: "viewing" }), className),
@@ -3628,20 +4001,20 @@ function InlineEditor({
3628
4001
  }
3629
4002
  }
3630
4003
  },
3631
- React40.createElement("div", { className: previewVariants() }, editValue || initialValue)
4004
+ React41.createElement("div", { className: previewVariants() }, editValue || initialValue)
3632
4005
  );
3633
4006
  }
3634
- return React40.createElement(
4007
+ return React41.createElement(
3635
4008
  "div",
3636
4009
  {
3637
4010
  className: cn(editorVariants({ state: "editing" }), className)
3638
4011
  },
3639
4012
  // Toolbar
3640
- React40.createElement(
4013
+ React41.createElement(
3641
4014
  "div",
3642
4015
  { className: toolbarVariants(), role: "toolbar", "aria-label": "Formatting toolbar" },
3643
4016
  ...api.toolbarActions.map(
3644
- (action) => React40.createElement(
4017
+ (action) => React41.createElement(
3645
4018
  "button",
3646
4019
  {
3647
4020
  key: action.name,
@@ -3655,16 +4028,16 @@ function InlineEditor({
3655
4028
  )
3656
4029
  ),
3657
4030
  // Editor area: side-by-side textarea + preview
3658
- React40.createElement(
4031
+ React41.createElement(
3659
4032
  "div",
3660
4033
  { className: "flex gap-2 p-2" },
3661
- React40.createElement("textarea", {
4034
+ React41.createElement("textarea", {
3662
4035
  value: editValue,
3663
4036
  onChange: (e) => setEditValue(e.target.value),
3664
4037
  className: "flex-1 min-h-[100px] resize-y border rounded p-2",
3665
4038
  "aria-label": "Editor content"
3666
4039
  }),
3667
- React40.createElement(
4040
+ React41.createElement(
3668
4041
  "div",
3669
4042
  {
3670
4043
  className: cn("flex-1", previewVariants()),
@@ -3674,15 +4047,15 @@ function InlineEditor({
3674
4047
  )
3675
4048
  ),
3676
4049
  // Action buttons
3677
- React40.createElement(
4050
+ React41.createElement(
3678
4051
  "div",
3679
4052
  { className: "flex justify-end gap-2 p-2 border-t" },
3680
- React40.createElement(
4053
+ React41.createElement(
3681
4054
  "button",
3682
4055
  { type: "button", onClick: handleCancel },
3683
4056
  "Cancel"
3684
4057
  ),
3685
- React40.createElement(
4058
+ React41.createElement(
3686
4059
  "button",
3687
4060
  { type: "button", onClick: handleSave },
3688
4061
  "Save"
@@ -3738,7 +4111,7 @@ var inputVariants = cva({
3738
4111
  size: "default"
3739
4112
  }
3740
4113
  });
3741
- var Input = React40.forwardRef(
4114
+ var Input = React41.forwardRef(
3742
4115
  ({ type = "text", size, className, disabled, readOnly, required, "aria-invalid": ariaInvalid, ...props }, ref) => {
3743
4116
  const api = createInput({
3744
4117
  disabled,
@@ -3831,7 +4204,7 @@ var inputGroupButtonVariants = cva({
3831
4204
  orientation: "horizontal"
3832
4205
  }
3833
4206
  });
3834
- var InputGroup = React40.forwardRef(
4207
+ var InputGroup = React41.forwardRef(
3835
4208
  ({ orientation = "horizontal", className, children, ...props }, ref) => {
3836
4209
  const api = createInputGroup({
3837
4210
  orientation,
@@ -3853,7 +4226,7 @@ var InputGroup = React40.forwardRef(
3853
4226
  }
3854
4227
  );
3855
4228
  InputGroup.displayName = "InputGroup";
3856
- var InputGroupAddon = React40.forwardRef(
4229
+ var InputGroupAddon = React41.forwardRef(
3857
4230
  ({ orientation = "horizontal", className, children, ...props }, ref) => {
3858
4231
  return /* @__PURE__ */ jsx(
3859
4232
  "div",
@@ -3867,7 +4240,7 @@ var InputGroupAddon = React40.forwardRef(
3867
4240
  }
3868
4241
  );
3869
4242
  InputGroupAddon.displayName = "InputGroupAddon";
3870
- var InputGroupText = React40.forwardRef(
4243
+ var InputGroupText = React41.forwardRef(
3871
4244
  ({ className, children, ...props }, ref) => {
3872
4245
  return /* @__PURE__ */ jsx(
3873
4246
  "span",
@@ -3881,7 +4254,7 @@ var InputGroupText = React40.forwardRef(
3881
4254
  }
3882
4255
  );
3883
4256
  InputGroupText.displayName = "InputGroupText";
3884
- var InputGroupButton = React40.forwardRef(
4257
+ var InputGroupButton = React41.forwardRef(
3885
4258
  ({ orientation = "horizontal", className, children, ...props }, ref) => {
3886
4259
  return /* @__PURE__ */ jsx(
3887
4260
  "button",
@@ -3947,7 +4320,7 @@ function createLocalStorage() {
3947
4320
  }
3948
4321
  };
3949
4322
  }
3950
- var InstallPrompt = React40.forwardRef(
4323
+ var InstallPrompt = React41.forwardRef(
3951
4324
  ({
3952
4325
  delay = 3e3,
3953
4326
  storageKey,
@@ -3957,14 +4330,14 @@ var InstallPrompt = React40.forwardRef(
3957
4330
  className,
3958
4331
  ...props
3959
4332
  }, ref) => {
3960
- const storageRef = React40.useRef(void 0);
4333
+ const storageRef = React41.useRef(void 0);
3961
4334
  if (typeof window !== "undefined" && !storageRef.current) {
3962
4335
  storageRef.current = createLocalStorage();
3963
4336
  }
3964
4337
  const api = createInstallPrompt({ storageKey }, storageRef.current);
3965
- const [visible, setVisible] = React40.useState(false);
3966
- const promptEventRef = React40.useRef(null);
3967
- React40.useEffect(() => {
4338
+ const [visible, setVisible] = React41.useState(false);
4339
+ const promptEventRef = React41.useRef(null);
4340
+ React41.useEffect(() => {
3968
4341
  if (api.state.isDismissed) return;
3969
4342
  const handleBeforeInstall = (e) => {
3970
4343
  e.preventDefault();
@@ -4205,7 +4578,7 @@ function sanitizeHtml(html) {
4205
4578
  sanitized = sanitized.replace(/(href|src)\s*=\s*["']?\s*javascript\s*:[^"'>]*/gi, '$1=""');
4206
4579
  return sanitized;
4207
4580
  }
4208
- var MarkdownRenderer = React40.forwardRef(
4581
+ var MarkdownRenderer = React41.forwardRef(
4209
4582
  ({ content, components, linkResolver, className, size }, ref) => {
4210
4583
  const coreProps = { content, components, linkResolver };
4211
4584
  const api = createMarkdownRenderer(coreProps);
@@ -4294,20 +4667,20 @@ var mobileNavLinkVariants = cva({
4294
4667
  base: "block w-full px-4 py-2 text-sm transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2",
4295
4668
  variants: {}
4296
4669
  });
4297
- var MobileNavContext = React40.createContext(null);
4670
+ var MobileNavContext = React41.createContext(null);
4298
4671
  function useMobileNavContext() {
4299
- const ctx = React40.useContext(MobileNavContext);
4672
+ const ctx = React41.useContext(MobileNavContext);
4300
4673
  if (!ctx) {
4301
4674
  throw new Error("MobileNav compound components must be used within <MobileNav>");
4302
4675
  }
4303
4676
  return ctx;
4304
4677
  }
4305
- var MobileNav = React40.forwardRef(
4678
+ var MobileNav = React41.forwardRef(
4306
4679
  ({ open: controlledOpen, onOpenChange, defaultOpen = false, className, children, ...props }, ref) => {
4307
- const [uncontrolledOpen, setUncontrolledOpen] = React40.useState(defaultOpen);
4680
+ const [uncontrolledOpen, setUncontrolledOpen] = React41.useState(defaultOpen);
4308
4681
  const isControlled = controlledOpen !== void 0;
4309
4682
  const open = isControlled ? controlledOpen : uncontrolledOpen;
4310
- const setOpen = React40.useCallback(
4683
+ const setOpen = React41.useCallback(
4311
4684
  (value) => {
4312
4685
  if (!isControlled) {
4313
4686
  setUncontrolledOpen(value);
@@ -4317,11 +4690,11 @@ var MobileNav = React40.forwardRef(
4317
4690
  [isControlled, onOpenChange]
4318
4691
  );
4319
4692
  const api = createMobileNav({ open, onOpenChange: setOpen, id: props.id });
4320
- const handleKeyDown = React40.useMemo(
4693
+ const handleKeyDown = React41.useMemo(
4321
4694
  () => createKeyboardHandler(api.keyboardHandlers),
4322
4695
  [open]
4323
4696
  );
4324
- const contextValue = React40.useMemo(
4697
+ const contextValue = React41.useMemo(
4325
4698
  () => ({ open, setOpen, contentId: api.contentProps.id }),
4326
4699
  [open, setOpen, api.contentProps.id]
4327
4700
  );
@@ -4338,7 +4711,7 @@ var MobileNav = React40.forwardRef(
4338
4711
  }
4339
4712
  );
4340
4713
  MobileNav.displayName = "MobileNav";
4341
- var MobileNavTrigger = React40.forwardRef(
4714
+ var MobileNavTrigger = React41.forwardRef(
4342
4715
  ({ className, children, ...props }, ref) => {
4343
4716
  const { open, setOpen, contentId } = useMobileNavContext();
4344
4717
  return /* @__PURE__ */ jsx(
@@ -4379,7 +4752,7 @@ var MobileNavTrigger = React40.forwardRef(
4379
4752
  }
4380
4753
  );
4381
4754
  MobileNavTrigger.displayName = "MobileNavTrigger";
4382
- var MobileNavContent = React40.forwardRef(
4755
+ var MobileNavContent = React41.forwardRef(
4383
4756
  ({ className, children, ...props }, ref) => {
4384
4757
  const { open, contentId } = useMobileNavContext();
4385
4758
  const state = open ? "open" : "closed";
@@ -4398,7 +4771,7 @@ var MobileNavContent = React40.forwardRef(
4398
4771
  }
4399
4772
  );
4400
4773
  MobileNavContent.displayName = "MobileNavContent";
4401
- var MobileNavLink = React40.forwardRef(
4774
+ var MobileNavLink = React41.forwardRef(
4402
4775
  ({ className, children, ...props }, ref) => {
4403
4776
  return /* @__PURE__ */ jsx(
4404
4777
  "a",
@@ -4457,7 +4830,7 @@ var navLinkVariants = cva({
4457
4830
  active: "false"
4458
4831
  }
4459
4832
  });
4460
- var Navbar = React40.forwardRef(
4833
+ var Navbar = React41.forwardRef(
4461
4834
  ({
4462
4835
  links = [],
4463
4836
  currentPath,
@@ -4552,19 +4925,19 @@ var popoverContentVariants = cva({
4552
4925
  side: "bottom"
4553
4926
  }
4554
4927
  });
4555
- var PopoverContext = React40.createContext(null);
4928
+ var PopoverContext = React41.createContext(null);
4556
4929
  function usePopoverContext() {
4557
- const ctx = React40.useContext(PopoverContext);
4930
+ const ctx = React41.useContext(PopoverContext);
4558
4931
  if (!ctx) {
4559
4932
  throw new Error("Popover compound components must be used within <Popover>");
4560
4933
  }
4561
4934
  return ctx;
4562
4935
  }
4563
4936
  function Popover({ open: controlledOpen, defaultOpen = false, onOpenChange, placement, children }) {
4564
- const [internalOpen, setInternalOpen] = React40.useState(controlledOpen ?? defaultOpen);
4937
+ const [internalOpen, setInternalOpen] = React41.useState(controlledOpen ?? defaultOpen);
4565
4938
  const isControlled = controlledOpen !== void 0;
4566
4939
  const isOpen = isControlled ? controlledOpen : internalOpen;
4567
- const handleOpenChange = React40.useCallback(
4940
+ const handleOpenChange = React41.useCallback(
4568
4941
  (value) => {
4569
4942
  if (!isControlled) {
4570
4943
  setInternalOpen(value);
@@ -4573,18 +4946,18 @@ function Popover({ open: controlledOpen, defaultOpen = false, onOpenChange, plac
4573
4946
  },
4574
4947
  [isControlled, onOpenChange]
4575
4948
  );
4576
- const api = React40.useMemo(
4949
+ const api = React41.useMemo(
4577
4950
  () => createPopover({ open: isOpen, onOpenChange: handleOpenChange, placement }),
4578
4951
  [isOpen, handleOpenChange, placement]
4579
4952
  );
4580
- const ctx = React40.useMemo(
4953
+ const ctx = React41.useMemo(
4581
4954
  () => ({ api, open: isOpen, setOpen: handleOpenChange }),
4582
4955
  [api, isOpen, handleOpenChange]
4583
4956
  );
4584
- return React40.createElement(PopoverContext.Provider, { value: ctx }, children);
4957
+ return React41.createElement(PopoverContext.Provider, { value: ctx }, children);
4585
4958
  }
4586
4959
  Popover.displayName = "Popover";
4587
- var PopoverTrigger = React40.forwardRef(
4960
+ var PopoverTrigger = React41.forwardRef(
4588
4961
  ({ onClick, children, ...props }, ref) => {
4589
4962
  const { api, setOpen, open } = usePopoverContext();
4590
4963
  const handleClick = (e) => {
@@ -4607,7 +4980,7 @@ var PopoverTrigger = React40.forwardRef(
4607
4980
  }
4608
4981
  );
4609
4982
  PopoverTrigger.displayName = "PopoverTrigger";
4610
- var PopoverContent = React40.forwardRef(
4983
+ var PopoverContent = React41.forwardRef(
4611
4984
  ({ side, className, children, onKeyDown, ...props }, ref) => {
4612
4985
  const { api, open, setOpen } = usePopoverContext();
4613
4986
  const handleKeyDown = (e) => {
@@ -4636,7 +5009,7 @@ var PopoverContent = React40.forwardRef(
4636
5009
  }
4637
5010
  );
4638
5011
  PopoverContent.displayName = "PopoverContent";
4639
- var PopoverClose = React40.forwardRef(
5012
+ var PopoverClose = React41.forwardRef(
4640
5013
  ({ onClick, children, ...props }, ref) => {
4641
5014
  const { setOpen } = usePopoverContext();
4642
5015
  const handleClick = (e) => {
@@ -4757,9 +5130,9 @@ var searchResultVariants = cva({
4757
5130
  });
4758
5131
 
4759
5132
  // ../react-search-bar/dist/index.js
4760
- var SearchBarContext = React40.createContext(null);
5133
+ var SearchBarContext = React41.createContext(null);
4761
5134
  function useSearchBarContext() {
4762
- const ctx = React40.useContext(SearchBarContext);
5135
+ const ctx = React41.useContext(SearchBarContext);
4763
5136
  if (!ctx) {
4764
5137
  throw new Error("SearchBar compound components must be used within <SearchBar>");
4765
5138
  }
@@ -4777,11 +5150,11 @@ function SearchBar({
4777
5150
  children,
4778
5151
  ...inputProps
4779
5152
  }) {
4780
- const [internalValue, setInternalValue] = React40.useState(controlledValue ?? defaultValue);
5153
+ const [internalValue, setInternalValue] = React41.useState(controlledValue ?? defaultValue);
4781
5154
  const isControlled = controlledValue !== void 0;
4782
5155
  const currentValue = isControlled ? controlledValue : internalValue;
4783
- const debounceRef = React40.useRef(void 0);
4784
- const handleValueChange = React40.useCallback(
5156
+ const debounceRef = React41.useRef(void 0);
5157
+ const handleValueChange = React41.useCallback(
4785
5158
  (val) => {
4786
5159
  if (!isControlled) {
4787
5160
  setInternalValue(val);
@@ -4790,8 +5163,8 @@ function SearchBar({
4790
5163
  },
4791
5164
  [isControlled, onValueChange]
4792
5165
  );
4793
- const [isSearching, setIsSearching] = React40.useState(loading);
4794
- const handleSearch = React40.useCallback(
5166
+ const [isSearching, setIsSearching] = React41.useState(loading);
5167
+ const handleSearch = React41.useCallback(
4795
5168
  (val) => {
4796
5169
  if (debounceRef.current !== void 0) {
4797
5170
  clearTimeout(debounceRef.current);
@@ -4808,7 +5181,7 @@ function SearchBar({
4808
5181
  },
4809
5182
  [onSearch, debounceMs]
4810
5183
  );
4811
- const handleChange = React40.useCallback(
5184
+ const handleChange = React41.useCallback(
4812
5185
  (e) => {
4813
5186
  const val = e.target.value;
4814
5187
  handleValueChange(val);
@@ -4816,14 +5189,14 @@ function SearchBar({
4816
5189
  },
4817
5190
  [handleValueChange, handleSearch]
4818
5191
  );
4819
- const clear = React40.useCallback(() => {
5192
+ const clear = React41.useCallback(() => {
4820
5193
  if (debounceRef.current !== void 0) {
4821
5194
  clearTimeout(debounceRef.current);
4822
5195
  }
4823
5196
  handleValueChange("");
4824
5197
  setIsSearching(false);
4825
5198
  }, [handleValueChange]);
4826
- const api = React40.useMemo(
5199
+ const api = React41.useMemo(
4827
5200
  () => createSearchBar({
4828
5201
  value: currentValue,
4829
5202
  onValueChange: handleValueChange,
@@ -4834,7 +5207,7 @@ function SearchBar({
4834
5207
  }),
4835
5208
  [currentValue, handleValueChange, onSearch, debounceMs, placeholder, loading]
4836
5209
  );
4837
- const handleKeyDown = React40.useCallback(
5210
+ const handleKeyDown = React41.useCallback(
4838
5211
  (e) => {
4839
5212
  if (e.key === "Escape") {
4840
5213
  clear();
@@ -4848,18 +5221,18 @@ function SearchBar({
4848
5221
  },
4849
5222
  [clear, onSearch, currentValue]
4850
5223
  );
4851
- const ctx = React40.useMemo(
5224
+ const ctx = React41.useMemo(
4852
5225
  () => ({ api, value: currentValue, isSearching, setValue: handleValueChange, clear }),
4853
5226
  [api, currentValue, isSearching, handleValueChange, clear]
4854
5227
  );
4855
- return React40.createElement(
5228
+ return React41.createElement(
4856
5229
  SearchBarContext.Provider,
4857
5230
  { value: ctx },
4858
- React40.createElement(
5231
+ React41.createElement(
4859
5232
  "div",
4860
5233
  { className: cn(searchBarVariants(), className) },
4861
- React40.createElement("span", { className: "rfr-search-icon", "aria-hidden": "true" }, "\u{1F50D}"),
4862
- React40.createElement("input", {
5234
+ React41.createElement("span", { className: "rfr-search-icon", "aria-hidden": "true" }, "\u{1F50D}"),
5235
+ React41.createElement("input", {
4863
5236
  ...inputProps,
4864
5237
  role: api.inputProps.role,
4865
5238
  "aria-expanded": api.inputProps["aria-expanded"],
@@ -4871,8 +5244,8 @@ function SearchBar({
4871
5244
  onKeyDown: handleKeyDown,
4872
5245
  className: "rfr-search-input flex-1 bg-transparent outline-none"
4873
5246
  }),
4874
- isSearching && React40.createElement("span", { className: "rfr-search-spinner", "aria-label": "Loading" }, "\u23F3"),
4875
- currentValue.length > 0 && !isSearching && React40.createElement(
5247
+ isSearching && React41.createElement("span", { className: "rfr-search-spinner", "aria-label": "Loading" }, "\u23F3"),
5248
+ currentValue.length > 0 && !isSearching && React41.createElement(
4876
5249
  "button",
4877
5250
  {
4878
5251
  type: "button",
@@ -4887,11 +5260,11 @@ function SearchBar({
4887
5260
  );
4888
5261
  }
4889
5262
  SearchBar.displayName = "SearchBar";
4890
- var SearchResults = React40.forwardRef(
5263
+ var SearchResults = React41.forwardRef(
4891
5264
  ({ className, children, ...props }, ref) => {
4892
5265
  const { api, value } = useSearchBarContext();
4893
5266
  if (value.length === 0) return null;
4894
- return React40.createElement(
5267
+ return React41.createElement(
4895
5268
  "ul",
4896
5269
  {
4897
5270
  ref,
@@ -4905,9 +5278,9 @@ var SearchResults = React40.forwardRef(
4905
5278
  }
4906
5279
  );
4907
5280
  SearchResults.displayName = "SearchResults";
4908
- var SearchResultItem = React40.forwardRef(
5281
+ var SearchResultItem = React41.forwardRef(
4909
5282
  ({ className, children, ...props }, ref) => {
4910
- return React40.createElement(
5283
+ return React41.createElement(
4911
5284
  "li",
4912
5285
  {
4913
5286
  ref,
@@ -4968,7 +5341,7 @@ var sidebarItemVariants = cva({
4968
5341
  active: "false"
4969
5342
  }
4970
5343
  });
4971
- var Sidebar = React40.forwardRef(
5344
+ var Sidebar = React41.forwardRef(
4972
5345
  ({
4973
5346
  sections = [],
4974
5347
  currentPath,
@@ -5038,7 +5411,7 @@ var skeletonVariants = cva({
5038
5411
  });
5039
5412
 
5040
5413
  // ../react-skeleton/dist/index.js
5041
- var Skeleton = React40.forwardRef(
5414
+ var Skeleton = React41.forwardRef(
5042
5415
  ({ shape, width, height, animate, className, style, ...props }, ref) => {
5043
5416
  const api = createSkeleton({ shape, animate });
5044
5417
  const classes = cn(skeletonVariants({ shape }), className);
@@ -5047,7 +5420,7 @@ var Skeleton = React40.forwardRef(
5047
5420
  ...width !== void 0 ? { width } : {},
5048
5421
  ...height !== void 0 ? { height } : {}
5049
5422
  };
5050
- return React40.createElement("div", {
5423
+ return React41.createElement("div", {
5051
5424
  ref,
5052
5425
  className: classes,
5053
5426
  style: Object.keys(mergedStyle).length > 0 ? mergedStyle : void 0,
@@ -5059,13 +5432,13 @@ var Skeleton = React40.forwardRef(
5059
5432
  );
5060
5433
  Skeleton.displayName = "Skeleton";
5061
5434
  var lineWidths = ["100%", "92%", "85%", "96%", "78%", "88%", "94%", "82%"];
5062
- var SkeletonText = React40.forwardRef(
5435
+ var SkeletonText = React41.forwardRef(
5063
5436
  ({ lines = 3, animate, className, ...props }, ref) => {
5064
5437
  const children = [];
5065
5438
  for (let i = 0; i < lines; i++) {
5066
5439
  const width = lineWidths[i % lineWidths.length];
5067
5440
  children.push(
5068
- React40.createElement(Skeleton, {
5441
+ React41.createElement(Skeleton, {
5069
5442
  key: i,
5070
5443
  shape: "text",
5071
5444
  width,
@@ -5073,7 +5446,7 @@ var SkeletonText = React40.forwardRef(
5073
5446
  })
5074
5447
  );
5075
5448
  }
5076
- return React40.createElement(
5449
+ return React41.createElement(
5077
5450
  "div",
5078
5451
  {
5079
5452
  ref,
@@ -5174,16 +5547,16 @@ function createTabs(props = {}) {
5174
5547
  };
5175
5548
  }
5176
5549
  var tabsListVariants = cva({
5177
- base: "inline-flex items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground"
5550
+ base: "inline-flex max-w-full overflow-x-auto items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground"
5178
5551
  });
5179
5552
  var tabsTriggerVariants = cva({
5180
5553
  base: "inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow"
5181
5554
  });
5182
5555
 
5183
5556
  // ../react-tabs/dist/index.js
5184
- var TabsContext = React40.createContext(null);
5557
+ var TabsContext = React41.createContext(null);
5185
5558
  function useTabsContext() {
5186
- const ctx = React40.useContext(TabsContext);
5559
+ const ctx = React41.useContext(TabsContext);
5187
5560
  if (!ctx) {
5188
5561
  throw new Error("Tabs compound components must be used within <Tabs>");
5189
5562
  }
@@ -5197,10 +5570,10 @@ function Tabs({
5197
5570
  className,
5198
5571
  children
5199
5572
  }) {
5200
- const [uncontrolledValue, setUncontrolledValue] = React40.useState(defaultValue);
5573
+ const [uncontrolledValue, setUncontrolledValue] = React41.useState(defaultValue);
5201
5574
  const isControlled = controlledValue !== void 0;
5202
5575
  const value = isControlled ? controlledValue : uncontrolledValue;
5203
- const handleValueChange = React40.useCallback(
5576
+ const handleValueChange = React41.useCallback(
5204
5577
  (next) => {
5205
5578
  if (!isControlled) {
5206
5579
  setUncontrolledValue(next);
@@ -5209,12 +5582,12 @@ function Tabs({
5209
5582
  },
5210
5583
  [isControlled, onValueChange]
5211
5584
  );
5212
- const apiRef = React40.useRef(null);
5585
+ const apiRef = React41.useRef(null);
5213
5586
  if (apiRef.current === null) {
5214
5587
  apiRef.current = createTabs({ value, orientation });
5215
5588
  }
5216
5589
  const api = apiRef.current;
5217
- const ctx = React40.useMemo(
5590
+ const ctx = React41.useMemo(
5218
5591
  () => ({
5219
5592
  value,
5220
5593
  onValueChange: handleValueChange,
@@ -5223,17 +5596,17 @@ function Tabs({
5223
5596
  }),
5224
5597
  [value, handleValueChange, orientation, api.idPrefix]
5225
5598
  );
5226
- return React40.createElement(
5599
+ return React41.createElement(
5227
5600
  "div",
5228
5601
  { className, "data-orientation": orientation },
5229
- React40.createElement(TabsContext.Provider, { value: ctx }, children)
5602
+ React41.createElement(TabsContext.Provider, { value: ctx }, children)
5230
5603
  );
5231
5604
  }
5232
5605
  Tabs.displayName = "Tabs";
5233
- var TabsList = React40.forwardRef(
5606
+ var TabsList = React41.forwardRef(
5234
5607
  ({ className, ...props }, ref) => {
5235
5608
  const { orientation } = useTabsContext();
5236
- return React40.createElement("div", {
5609
+ return React41.createElement("div", {
5237
5610
  ref,
5238
5611
  role: "tablist",
5239
5612
  "aria-orientation": orientation,
@@ -5243,7 +5616,7 @@ var TabsList = React40.forwardRef(
5243
5616
  }
5244
5617
  );
5245
5618
  TabsList.displayName = "TabsList";
5246
- var TabsTrigger = React40.forwardRef(
5619
+ var TabsTrigger = React41.forwardRef(
5247
5620
  ({ value, className, onClick, onKeyDown, children, ...props }, ref) => {
5248
5621
  const { value: activeValue, onValueChange, orientation, idPrefix } = useTabsContext();
5249
5622
  const isSelected = activeValue === value;
@@ -5256,7 +5629,7 @@ var TabsTrigger = React40.forwardRef(
5256
5629
  const handleKeyDown = (e) => {
5257
5630
  onKeyDown?.(e);
5258
5631
  };
5259
- return React40.createElement(
5632
+ return React41.createElement(
5260
5633
  "button",
5261
5634
  {
5262
5635
  ref,
@@ -5277,14 +5650,14 @@ var TabsTrigger = React40.forwardRef(
5277
5650
  }
5278
5651
  );
5279
5652
  TabsTrigger.displayName = "TabsTrigger";
5280
- var TabsContent = React40.forwardRef(
5653
+ var TabsContent = React41.forwardRef(
5281
5654
  ({ value, className, children, ...props }, ref) => {
5282
5655
  const { value: activeValue, idPrefix } = useTabsContext();
5283
5656
  const isSelected = activeValue === value;
5284
5657
  const tabId = `${idPrefix}-tab-${value}`;
5285
5658
  const panelId = `${idPrefix}-panel-${value}`;
5286
5659
  if (!isSelected) return null;
5287
- return React40.createElement(
5660
+ return React41.createElement(
5288
5661
  "div",
5289
5662
  {
5290
5663
  ref,
@@ -5348,7 +5721,7 @@ var textareaVariants = cva({
5348
5721
  size: "default"
5349
5722
  }
5350
5723
  });
5351
- var Textarea = React40.forwardRef(
5724
+ var Textarea = React41.forwardRef(
5352
5725
  ({ size, className, disabled, readOnly, required, rows, maxRows, "aria-invalid": ariaInvalid, ...props }, ref) => {
5353
5726
  const api = createTextarea({
5354
5727
  disabled,
@@ -5505,30 +5878,30 @@ var toastVariants = cva({
5505
5878
  });
5506
5879
 
5507
5880
  // ../react-toast/dist/index.js
5508
- var ToastContext = React40.createContext(null);
5881
+ var ToastContext = React41.createContext(null);
5509
5882
  function useToastContext() {
5510
- const ctx = React40.useContext(ToastContext);
5883
+ const ctx = React41.useContext(ToastContext);
5511
5884
  if (!ctx) {
5512
5885
  throw new Error("useToast must be used within a <ToastProvider>");
5513
5886
  }
5514
5887
  return ctx;
5515
5888
  }
5516
5889
  function ToastProvider({ children }) {
5517
- const managerRef = React40.useRef(null);
5890
+ const managerRef = React41.useRef(null);
5518
5891
  if (managerRef.current === null) {
5519
5892
  managerRef.current = createToastManager();
5520
5893
  }
5521
- const ctx = React40.useMemo(
5894
+ const ctx = React41.useMemo(
5522
5895
  () => ({ manager: managerRef.current }),
5523
5896
  []
5524
5897
  );
5525
- return React40.createElement(ToastContext.Provider, { value: ctx }, children);
5898
+ return React41.createElement(ToastContext.Provider, { value: ctx }, children);
5526
5899
  }
5527
5900
  ToastProvider.displayName = "ToastProvider";
5528
5901
  function useToast() {
5529
5902
  const { manager } = useToastContext();
5530
- const [toasts, setToasts] = React40.useState(manager.toasts);
5531
- React40.useEffect(() => {
5903
+ const [toasts, setToasts] = React41.useState(manager.toasts);
5904
+ React41.useEffect(() => {
5532
5905
  setToasts(manager.toasts);
5533
5906
  const unsub = manager.subscribe(setToasts);
5534
5907
  return unsub;
@@ -5539,13 +5912,13 @@ function useToast() {
5539
5912
  toasts
5540
5913
  };
5541
5914
  }
5542
- var Toast = React40.forwardRef(
5915
+ var Toast = React41.forwardRef(
5543
5916
  ({ entry, onDismiss, className, children, onMouseEnter, onMouseLeave, ...props }, ref) => {
5544
- const api = React40.useMemo(
5917
+ const api = React41.useMemo(
5545
5918
  () => createToast({ variant: entry.variant, duration: entry.duration }),
5546
5919
  [entry.variant, entry.duration]
5547
5920
  );
5548
- React40.useEffect(() => {
5921
+ React41.useEffect(() => {
5549
5922
  api.startTimer();
5550
5923
  return () => api.pauseTimer();
5551
5924
  }, [api]);
@@ -5557,7 +5930,7 @@ var Toast = React40.forwardRef(
5557
5930
  api.resumeTimer();
5558
5931
  onMouseLeave?.(e);
5559
5932
  };
5560
- return React40.createElement(
5933
+ return React41.createElement(
5561
5934
  "div",
5562
5935
  {
5563
5936
  ref,
@@ -5567,9 +5940,9 @@ var Toast = React40.forwardRef(
5567
5940
  onMouseLeave: handleMouseLeave,
5568
5941
  ...props
5569
5942
  },
5570
- React40.createElement("div", { className: "flex-1" }, entry.message),
5943
+ React41.createElement("div", { className: "flex-1" }, entry.message),
5571
5944
  children,
5572
- onDismiss && React40.createElement(
5945
+ onDismiss && React41.createElement(
5573
5946
  "button",
5574
5947
  {
5575
5948
  type: "button",
@@ -5583,10 +5956,10 @@ var Toast = React40.forwardRef(
5583
5956
  }
5584
5957
  );
5585
5958
  Toast.displayName = "Toast";
5586
- var Toaster = React40.forwardRef(
5959
+ var Toaster = React41.forwardRef(
5587
5960
  ({ className, ...props }, ref) => {
5588
5961
  const { toasts, dismiss } = useToast();
5589
- return React40.createElement(
5962
+ return React41.createElement(
5590
5963
  "div",
5591
5964
  {
5592
5965
  ref,
@@ -5597,7 +5970,7 @@ var Toaster = React40.forwardRef(
5597
5970
  ...props
5598
5971
  },
5599
5972
  toasts.map(
5600
- (entry) => React40.createElement(Toast, {
5973
+ (entry) => React41.createElement(Toast, {
5601
5974
  key: entry.id,
5602
5975
  entry,
5603
5976
  onDismiss: dismiss
@@ -5684,9 +6057,9 @@ var tooltipContentVariants = cva({
5684
6057
  side: "top"
5685
6058
  }
5686
6059
  });
5687
- var TooltipContext = React40.createContext(null);
6060
+ var TooltipContext = React41.createContext(null);
5688
6061
  function useTooltipContext() {
5689
- const ctx = React40.useContext(TooltipContext);
6062
+ const ctx = React41.useContext(TooltipContext);
5690
6063
  if (!ctx) {
5691
6064
  throw new Error("Tooltip compound components must be used within <Tooltip>");
5692
6065
  }
@@ -5700,11 +6073,11 @@ function Tooltip({
5700
6073
  delayDuration = 300,
5701
6074
  children
5702
6075
  }) {
5703
- const [internalOpen, setInternalOpen] = React40.useState(controlledOpen ?? defaultOpen);
6076
+ const [internalOpen, setInternalOpen] = React41.useState(controlledOpen ?? defaultOpen);
5704
6077
  const isControlled = controlledOpen !== void 0;
5705
6078
  const isOpen = isControlled ? controlledOpen : internalOpen;
5706
- const timerRef = React40.useRef(null);
5707
- const handleOpenChange = React40.useCallback(
6079
+ const timerRef = React41.useRef(null);
6080
+ const handleOpenChange = React41.useCallback(
5708
6081
  (value) => {
5709
6082
  if (!isControlled) {
5710
6083
  setInternalOpen(value);
@@ -5713,17 +6086,17 @@ function Tooltip({
5713
6086
  },
5714
6087
  [isControlled, onOpenChange]
5715
6088
  );
5716
- const api = React40.useMemo(
6089
+ const api = React41.useMemo(
5717
6090
  () => createTooltip({ open: isOpen, onOpenChange: handleOpenChange, placement, delayDuration }),
5718
6091
  [isOpen, handleOpenChange, placement, delayDuration]
5719
6092
  );
5720
- const cancelDelay = React40.useCallback(() => {
6093
+ const cancelDelay = React41.useCallback(() => {
5721
6094
  if (timerRef.current !== null) {
5722
6095
  clearTimeout(timerRef.current);
5723
6096
  timerRef.current = null;
5724
6097
  }
5725
6098
  }, []);
5726
- const openWithDelay = React40.useCallback(() => {
6099
+ const openWithDelay = React41.useCallback(() => {
5727
6100
  cancelDelay();
5728
6101
  if (delayDuration <= 0) {
5729
6102
  handleOpenChange(true);
@@ -5734,21 +6107,21 @@ function Tooltip({
5734
6107
  timerRef.current = null;
5735
6108
  }, delayDuration);
5736
6109
  }, [cancelDelay, delayDuration, handleOpenChange]);
5737
- React40.useEffect(() => {
6110
+ React41.useEffect(() => {
5738
6111
  return () => {
5739
6112
  if (timerRef.current !== null) {
5740
6113
  clearTimeout(timerRef.current);
5741
6114
  }
5742
6115
  };
5743
6116
  }, []);
5744
- const ctx = React40.useMemo(
6117
+ const ctx = React41.useMemo(
5745
6118
  () => ({ api, open: isOpen, setOpen: handleOpenChange, openWithDelay, cancelDelay }),
5746
6119
  [api, isOpen, handleOpenChange, openWithDelay, cancelDelay]
5747
6120
  );
5748
- return React40.createElement(TooltipContext.Provider, { value: ctx }, children);
6121
+ return React41.createElement(TooltipContext.Provider, { value: ctx }, children);
5749
6122
  }
5750
6123
  Tooltip.displayName = "Tooltip";
5751
- var TooltipTrigger = React40.forwardRef(
6124
+ var TooltipTrigger = React41.forwardRef(
5752
6125
  ({ onMouseEnter, onMouseLeave, onFocus, onBlur, children, ...props }, ref) => {
5753
6126
  const { api, setOpen, openWithDelay, cancelDelay } = useTooltipContext();
5754
6127
  const handleMouseEnter = (e) => {
@@ -5785,7 +6158,7 @@ var TooltipTrigger = React40.forwardRef(
5785
6158
  }
5786
6159
  );
5787
6160
  TooltipTrigger.displayName = "TooltipTrigger";
5788
- var TooltipContent = React40.forwardRef(
6161
+ var TooltipContent = React41.forwardRef(
5789
6162
  ({ side, className, children, ...props }, ref) => {
5790
6163
  const { api, open } = useTooltipContext();
5791
6164
  if (!open) return null;
@@ -5905,7 +6278,7 @@ var overlayVariants = cva({
5905
6278
  visibility: "visible"
5906
6279
  }
5907
6280
  });
5908
- var VideoPlayer = React40.forwardRef(
6281
+ var VideoPlayer = React41.forwardRef(
5909
6282
  ({
5910
6283
  src,
5911
6284
  poster,
@@ -5915,9 +6288,9 @@ var VideoPlayer = React40.forwardRef(
5915
6288
  className,
5916
6289
  ...props
5917
6290
  }, ref) => {
5918
- const [, setTick] = React40.useState(0);
5919
- const rerender = React40.useCallback(() => setTick((t) => t + 1), []);
5920
- const apiRef = React40.useRef(
6291
+ const [, setTick] = React41.useState(0);
6292
+ const rerender = React41.useCallback(() => setTick((t) => t + 1), []);
6293
+ const apiRef = React41.useRef(
5921
6294
  createVideoPlayer({ muted: initialMuted})
5922
6295
  );
5923
6296
  const api = apiRef.current;
@@ -6084,7 +6457,7 @@ var progressBarVariants = cva({
6084
6457
  size: "md"
6085
6458
  }
6086
6459
  });
6087
- var StatsGrid = React40.forwardRef(
6460
+ var StatsGrid = React41.forwardRef(
6088
6461
  ({ stats, badges = [], className, ...props }, ref) => {
6089
6462
  const api = createProgressDisplay({ stats, badges });
6090
6463
  return /* @__PURE__ */ jsx(
@@ -6113,7 +6486,7 @@ var StatsGrid = React40.forwardRef(
6113
6486
  }
6114
6487
  );
6115
6488
  StatsGrid.displayName = "StatsGrid";
6116
- var ProgressBar = React40.forwardRef(
6489
+ var ProgressBar = React41.forwardRef(
6117
6490
  ({ value, max = 100, size, className, ...props }, ref) => {
6118
6491
  const percent = Math.min(100, Math.max(0, value / max * 100));
6119
6492
  return /* @__PURE__ */ jsx(
@@ -6138,7 +6511,7 @@ var ProgressBar = React40.forwardRef(
6138
6511
  }
6139
6512
  );
6140
6513
  ProgressBar.displayName = "ProgressBar";
6141
- var BadgeDisplay = React40.forwardRef(
6514
+ var BadgeDisplay = React41.forwardRef(
6142
6515
  ({ badges, className, ...props }, ref) => {
6143
6516
  const api = createProgressDisplay({ stats: [], badges });
6144
6517
  return /* @__PURE__ */ jsx(
@@ -6306,7 +6679,7 @@ var slideTypeBadgeVariants = cva({
6306
6679
  type: "lesson"
6307
6680
  }
6308
6681
  });
6309
- var SlideViewer = React40.forwardRef(
6682
+ var SlideViewer = React41.forwardRef(
6310
6683
  ({
6311
6684
  slides,
6312
6685
  initialSlide,
@@ -6316,9 +6689,9 @@ var SlideViewer = React40.forwardRef(
6316
6689
  size,
6317
6690
  renderSlide
6318
6691
  }, ref) => {
6319
- const [, setTick] = React40.useState(0);
6692
+ const [, setTick] = React41.useState(0);
6320
6693
  const rerender = () => setTick((t) => t + 1);
6321
- const apiRef = React40.useRef(
6694
+ const apiRef = React41.useRef(
6322
6695
  createSlideViewer({ slides, initialSlide, onSlideChange, onComplete })
6323
6696
  );
6324
6697
  const api = apiRef.current;
@@ -6520,7 +6893,7 @@ var optionVariants = cva({
6520
6893
  });
6521
6894
 
6522
6895
  // ../react-language-selector/dist/index.js
6523
- var LanguageSelectorContext = React40.createContext(null);
6896
+ var LanguageSelectorContext = React41.createContext(null);
6524
6897
  function LanguageSelector({
6525
6898
  value: controlledValue,
6526
6899
  onValueChange,
@@ -6530,10 +6903,10 @@ function LanguageSelector({
6530
6903
  className
6531
6904
  }) {
6532
6905
  const initialValues = Array.isArray(controlledValue) ? controlledValue : controlledValue ? [controlledValue] : [];
6533
- const [selectedValues, setSelectedValues] = React40.useState(initialValues);
6534
- const [isOpen, setIsOpen] = React40.useState(false);
6535
- const containerRef = React40.useRef(null);
6536
- const handleValueChange = React40.useCallback(
6906
+ const [selectedValues, setSelectedValues] = React41.useState(initialValues);
6907
+ const [isOpen, setIsOpen] = React41.useState(false);
6908
+ const containerRef = React41.useRef(null);
6909
+ const handleValueChange = React41.useCallback(
6537
6910
  (val) => {
6538
6911
  const arr = Array.isArray(val) ? val : [val];
6539
6912
  setSelectedValues(arr);
@@ -6541,7 +6914,7 @@ function LanguageSelector({
6541
6914
  },
6542
6915
  [onValueChange]
6543
6916
  );
6544
- const api = React40.useMemo(
6917
+ const api = React41.useMemo(
6545
6918
  () => createLanguageSelector({
6546
6919
  value: multiple ? selectedValues : selectedValues[0],
6547
6920
  onValueChange: handleValueChange,
@@ -6549,7 +6922,7 @@ function LanguageSelector({
6549
6922
  }),
6550
6923
  [selectedValues, handleValueChange, options, multiple]
6551
6924
  );
6552
- const handleToggle = React40.useCallback(
6925
+ const handleToggle = React41.useCallback(
6553
6926
  (val) => {
6554
6927
  if (multiple) {
6555
6928
  const index = selectedValues.indexOf(val);
@@ -6564,10 +6937,10 @@ function LanguageSelector({
6564
6937
  },
6565
6938
  [multiple, selectedValues, onValueChange]
6566
6939
  );
6567
- const handleTriggerClick = React40.useCallback(() => {
6940
+ const handleTriggerClick = React41.useCallback(() => {
6568
6941
  setIsOpen((prev) => !prev);
6569
6942
  }, []);
6570
- const handleKeyDown = React40.useCallback(
6943
+ const handleKeyDown = React41.useCallback(
6571
6944
  (e) => {
6572
6945
  if (e.key === "Escape") {
6573
6946
  setIsOpen(false);
@@ -6582,7 +6955,7 @@ function LanguageSelector({
6582
6955
  },
6583
6956
  [isOpen]
6584
6957
  );
6585
- React40.useEffect(() => {
6958
+ React41.useEffect(() => {
6586
6959
  if (!isOpen) return;
6587
6960
  function handleClickOutside(e) {
6588
6961
  if (containerRef.current && !containerRef.current.contains(e.target)) {
@@ -6592,7 +6965,7 @@ function LanguageSelector({
6592
6965
  document.addEventListener("mousedown", handleClickOutside);
6593
6966
  return () => document.removeEventListener("mousedown", handleClickOutside);
6594
6967
  }, [isOpen]);
6595
- const ctx = React40.useMemo(
6968
+ const ctx = React41.useMemo(
6596
6969
  () => ({
6597
6970
  api,
6598
6971
  isOpen,
@@ -6603,7 +6976,7 @@ function LanguageSelector({
6603
6976
  }),
6604
6977
  [api, isOpen, handleToggle, options, multiple]
6605
6978
  );
6606
- const grouped = React40.useMemo(() => {
6979
+ const grouped = React41.useMemo(() => {
6607
6980
  const groups = /* @__PURE__ */ new Map();
6608
6981
  const ungrouped = [];
6609
6982
  for (const opt of options) {
@@ -6618,14 +6991,14 @@ function LanguageSelector({
6618
6991
  return { groups, ungrouped };
6619
6992
  }, [options]);
6620
6993
  const displayLabel = selectedValues.length > 0 ? options.filter((o) => selectedValues.includes(o.value)).map((o) => o.label).join(", ") : placeholder;
6621
- return React40.createElement(
6994
+ return React41.createElement(
6622
6995
  LanguageSelectorContext.Provider,
6623
6996
  { value: ctx },
6624
- React40.createElement(
6997
+ React41.createElement(
6625
6998
  "div",
6626
6999
  { ref: containerRef, className: cn("rfr-language-selector relative inline-block", className) },
6627
7000
  // Trigger
6628
- React40.createElement(
7001
+ React41.createElement(
6629
7002
  "button",
6630
7003
  {
6631
7004
  type: "button",
@@ -6637,11 +7010,11 @@ function LanguageSelector({
6637
7010
  onClick: handleTriggerClick,
6638
7011
  onKeyDown: handleKeyDown
6639
7012
  },
6640
- React40.createElement("span", null, displayLabel),
6641
- React40.createElement("span", { "aria-hidden": "true", className: "ml-2" }, "\u25BE")
7013
+ React41.createElement("span", null, displayLabel),
7014
+ React41.createElement("span", { "aria-hidden": "true", className: "ml-2" }, "\u25BE")
6642
7015
  ),
6643
7016
  // Dropdown
6644
- isOpen && React40.createElement(
7017
+ isOpen && React41.createElement(
6645
7018
  "ul",
6646
7019
  {
6647
7020
  role: api.contentProps.role,
@@ -6650,21 +7023,21 @@ function LanguageSelector({
6650
7023
  className: "absolute top-full left-0 w-full mt-1 rounded-md border bg-popover text-popover-foreground shadow-md z-50 overflow-auto max-h-60"
6651
7024
  },
6652
7025
  ...[...grouped.groups.entries()].map(
6653
- ([group, opts]) => React40.createElement(
7026
+ ([group, opts]) => React41.createElement(
6654
7027
  "li",
6655
7028
  { key: group, role: "presentation" },
6656
- React40.createElement(
7029
+ React41.createElement(
6657
7030
  "div",
6658
7031
  { className: "px-3 py-1 text-xs font-semibold text-muted-foreground uppercase" },
6659
7032
  group
6660
7033
  ),
6661
- React40.createElement(
7034
+ React41.createElement(
6662
7035
  "ul",
6663
7036
  { role: "group", "aria-label": group },
6664
7037
  ...opts.map((opt) => {
6665
7038
  const optProps = api.getOptionProps(opt.value);
6666
7039
  const isSelected = selectedValues.includes(opt.value);
6667
- return React40.createElement(
7040
+ return React41.createElement(
6668
7041
  "li",
6669
7042
  {
6670
7043
  key: opt.value,
@@ -6672,8 +7045,8 @@ function LanguageSelector({
6672
7045
  className: optionVariants({ selected: isSelected ? "true" : "false" }),
6673
7046
  onClick: () => handleToggle(opt.value)
6674
7047
  },
6675
- isSelected && React40.createElement("span", { "aria-hidden": "true" }, "\u2713"),
6676
- React40.createElement("span", null, opt.label)
7048
+ isSelected && React41.createElement("span", { "aria-hidden": "true" }, "\u2713"),
7049
+ React41.createElement("span", null, opt.label)
6677
7050
  );
6678
7051
  })
6679
7052
  )
@@ -6682,7 +7055,7 @@ function LanguageSelector({
6682
7055
  ...grouped.ungrouped.map((opt) => {
6683
7056
  const optProps = api.getOptionProps(opt.value);
6684
7057
  const isSelected = selectedValues.includes(opt.value);
6685
- return React40.createElement(
7058
+ return React41.createElement(
6686
7059
  "li",
6687
7060
  {
6688
7061
  key: opt.value,
@@ -6690,8 +7063,8 @@ function LanguageSelector({
6690
7063
  className: optionVariants({ selected: isSelected ? "true" : "false" }),
6691
7064
  onClick: () => handleToggle(opt.value)
6692
7065
  },
6693
- isSelected && React40.createElement("span", { "aria-hidden": "true" }, "\u2713"),
6694
- React40.createElement("span", null, opt.label)
7066
+ isSelected && React41.createElement("span", { "aria-hidden": "true" }, "\u2713"),
7067
+ React41.createElement("span", null, opt.label)
6695
7068
  );
6696
7069
  })
6697
7070
  )
@@ -6816,7 +7189,7 @@ var latestBadgeVariants = cva({
6816
7189
  });
6817
7190
 
6818
7191
  // ../react-version-selector/dist/index.js
6819
- var VersionSelectorContext = React40.createContext(null);
7192
+ var VersionSelectorContext = React41.createContext(null);
6820
7193
  function VersionSelector({
6821
7194
  value: controlledValue,
6822
7195
  onValueChange,
@@ -6824,17 +7197,17 @@ function VersionSelector({
6824
7197
  placeholder = "Select version...",
6825
7198
  className
6826
7199
  }) {
6827
- const [selectedVersion, setSelectedVersion] = React40.useState(controlledValue ?? "");
6828
- const [isOpen, setIsOpen] = React40.useState(false);
6829
- const containerRef = React40.useRef(null);
6830
- const handleValueChange = React40.useCallback(
7200
+ const [selectedVersion, setSelectedVersion] = React41.useState(controlledValue ?? "");
7201
+ const [isOpen, setIsOpen] = React41.useState(false);
7202
+ const containerRef = React41.useRef(null);
7203
+ const handleValueChange = React41.useCallback(
6831
7204
  (val) => {
6832
7205
  setSelectedVersion(val);
6833
7206
  onValueChange?.(val);
6834
7207
  },
6835
7208
  [onValueChange]
6836
7209
  );
6837
- const api = React40.useMemo(
7210
+ const api = React41.useMemo(
6838
7211
  () => createVersionSelector({
6839
7212
  value: selectedVersion,
6840
7213
  onValueChange: handleValueChange,
@@ -6842,7 +7215,7 @@ function VersionSelector({
6842
7215
  }),
6843
7216
  [selectedVersion, handleValueChange, versions]
6844
7217
  );
6845
- const handleSelect = React40.useCallback(
7218
+ const handleSelect = React41.useCallback(
6846
7219
  (val) => {
6847
7220
  setSelectedVersion(val);
6848
7221
  onValueChange?.(val);
@@ -6850,10 +7223,10 @@ function VersionSelector({
6850
7223
  },
6851
7224
  [onValueChange]
6852
7225
  );
6853
- const handleTriggerClick = React40.useCallback(() => {
7226
+ const handleTriggerClick = React41.useCallback(() => {
6854
7227
  setIsOpen((prev) => !prev);
6855
7228
  }, []);
6856
- const handleKeyDown = React40.useCallback(
7229
+ const handleKeyDown = React41.useCallback(
6857
7230
  (e) => {
6858
7231
  if (e.key === "Escape") {
6859
7232
  setIsOpen(false);
@@ -6868,7 +7241,7 @@ function VersionSelector({
6868
7241
  },
6869
7242
  [isOpen]
6870
7243
  );
6871
- React40.useEffect(() => {
7244
+ React41.useEffect(() => {
6872
7245
  if (!isOpen) return;
6873
7246
  function handleClickOutside(e) {
6874
7247
  if (containerRef.current && !containerRef.current.contains(e.target)) {
@@ -6878,7 +7251,7 @@ function VersionSelector({
6878
7251
  document.addEventListener("mousedown", handleClickOutside);
6879
7252
  return () => document.removeEventListener("mousedown", handleClickOutside);
6880
7253
  }, [isOpen]);
6881
- const ctx = React40.useMemo(
7254
+ const ctx = React41.useMemo(
6882
7255
  () => ({
6883
7256
  api,
6884
7257
  isOpen,
@@ -6890,14 +7263,14 @@ function VersionSelector({
6890
7263
  );
6891
7264
  const selectedOpt = versions.find((v) => v.value === selectedVersion);
6892
7265
  const displayLabel = selectedOpt ? selectedOpt.label : placeholder;
6893
- return React40.createElement(
7266
+ return React41.createElement(
6894
7267
  VersionSelectorContext.Provider,
6895
7268
  { value: ctx },
6896
- React40.createElement(
7269
+ React41.createElement(
6897
7270
  "div",
6898
7271
  { ref: containerRef, className: cn("rfr-version-selector relative inline-block", className) },
6899
7272
  // Trigger
6900
- React40.createElement(
7273
+ React41.createElement(
6901
7274
  "button",
6902
7275
  {
6903
7276
  type: "button",
@@ -6909,16 +7282,16 @@ function VersionSelector({
6909
7282
  onClick: handleTriggerClick,
6910
7283
  onKeyDown: handleKeyDown
6911
7284
  },
6912
- React40.createElement("span", null, displayLabel),
6913
- selectedOpt?.isLatest && React40.createElement(
7285
+ React41.createElement("span", null, displayLabel),
7286
+ selectedOpt?.isLatest && React41.createElement(
6914
7287
  "span",
6915
7288
  { className: cn(latestBadgeVariants(), "ml-2") },
6916
7289
  "Latest"
6917
7290
  ),
6918
- React40.createElement("span", { "aria-hidden": "true", className: "ml-2" }, "\u25BE")
7291
+ React41.createElement("span", { "aria-hidden": "true", className: "ml-2" }, "\u25BE")
6919
7292
  ),
6920
7293
  // Dropdown
6921
- isOpen && React40.createElement(
7294
+ isOpen && React41.createElement(
6922
7295
  "ul",
6923
7296
  {
6924
7297
  role: api.contentProps.role,
@@ -6928,7 +7301,7 @@ function VersionSelector({
6928
7301
  ...versions.map((ver) => {
6929
7302
  const optProps = api.getOptionProps(ver.value);
6930
7303
  const isSelected = selectedVersion === ver.value;
6931
- return React40.createElement(
7304
+ return React41.createElement(
6932
7305
  "li",
6933
7306
  {
6934
7307
  key: ver.value,
@@ -6936,8 +7309,8 @@ function VersionSelector({
6936
7309
  className: optionVariants2({ selected: isSelected ? "true" : "false" }),
6937
7310
  onClick: () => handleSelect(ver.value)
6938
7311
  },
6939
- React40.createElement("span", null, ver.label),
6940
- ver.isLatest && React40.createElement(
7312
+ React41.createElement("span", null, ver.label),
7313
+ ver.isLatest && React41.createElement(
6941
7314
  "span",
6942
7315
  { className: latestBadgeVariants() },
6943
7316
  "Latest"
@@ -7080,15 +7453,15 @@ var resizablePaneVariants = cva({
7080
7453
  orientation: "horizontal"
7081
7454
  }
7082
7455
  });
7083
- var ResizableLayoutContext = React40.createContext(null);
7456
+ var ResizableLayoutContext = React41.createContext(null);
7084
7457
  function useResizableLayoutContext() {
7085
- const ctx = React40.useContext(ResizableLayoutContext);
7458
+ const ctx = React41.useContext(ResizableLayoutContext);
7086
7459
  if (!ctx) {
7087
7460
  throw new Error("Resizable compound components must be used within <ResizableLayout>");
7088
7461
  }
7089
7462
  return ctx;
7090
7463
  }
7091
- var ResizableLayout = React40.forwardRef(
7464
+ var ResizableLayout = React41.forwardRef(
7092
7465
  ({
7093
7466
  orientation = "horizontal",
7094
7467
  defaultSizes = [50, 50],
@@ -7101,7 +7474,7 @@ var ResizableLayout = React40.forwardRef(
7101
7474
  children,
7102
7475
  ...props
7103
7476
  }, ref) => {
7104
- const apiRef = React40.useRef(null);
7477
+ const apiRef = React41.useRef(null);
7105
7478
  if (!apiRef.current) {
7106
7479
  apiRef.current = createResizableLayout({
7107
7480
  orientation,
@@ -7112,22 +7485,22 @@ var ResizableLayout = React40.forwardRef(
7112
7485
  });
7113
7486
  }
7114
7487
  const api = apiRef.current;
7115
- const [sizes, setSizesState] = React40.useState(api.sizes);
7116
- const setSizes = React40.useCallback(
7488
+ const [sizes, setSizesState] = React41.useState(api.sizes);
7489
+ const setSizes = React41.useCallback(
7117
7490
  (newSizes) => {
7118
7491
  setSizesState([...newSizes]);
7119
7492
  onSizesChange?.(newSizes);
7120
7493
  },
7121
7494
  [onSizesChange]
7122
7495
  );
7123
- const cssVars = React40.useMemo(() => {
7496
+ const cssVars = React41.useMemo(() => {
7124
7497
  const vars = {};
7125
7498
  for (let i = 0; i < sizes.length; i++) {
7126
7499
  vars[`--rfr-pane-${i}-size`] = `${sizes[i]}%`;
7127
7500
  }
7128
7501
  return vars;
7129
7502
  }, [sizes]);
7130
- const contextValue = React40.useMemo(
7503
+ const contextValue = React41.useMemo(
7131
7504
  () => ({ api, orientation, sizes, setSizes }),
7132
7505
  [api, orientation, sizes, setSizes]
7133
7506
  );
@@ -7145,7 +7518,7 @@ var ResizableLayout = React40.forwardRef(
7145
7518
  }
7146
7519
  );
7147
7520
  ResizableLayout.displayName = "ResizableLayout";
7148
- var ResizablePane = React40.forwardRef(
7521
+ var ResizablePane = React41.forwardRef(
7149
7522
  ({ index, className, style, children, ...props }, ref) => {
7150
7523
  const { orientation, sizes } = useResizableLayoutContext();
7151
7524
  const size = sizes[index] ?? 50;
@@ -7169,12 +7542,12 @@ var ResizablePane = React40.forwardRef(
7169
7542
  }
7170
7543
  );
7171
7544
  ResizablePane.displayName = "ResizablePane";
7172
- var ResizableDivider = React40.forwardRef(
7545
+ var ResizableDivider = React41.forwardRef(
7173
7546
  ({ index, className, ...props }, ref) => {
7174
7547
  const { api, orientation, setSizes } = useResizableLayoutContext();
7175
- const startPosRef = React40.useRef(0);
7176
- const containerSizeRef = React40.useRef(0);
7177
- const onPointerDown = React40.useCallback(
7548
+ const startPosRef = React41.useRef(0);
7549
+ const containerSizeRef = React41.useRef(0);
7550
+ const onPointerDown = React41.useCallback(
7178
7551
  (e) => {
7179
7552
  e.preventDefault();
7180
7553
  const target = e.currentTarget;
@@ -7188,7 +7561,7 @@ var ResizableDivider = React40.forwardRef(
7188
7561
  },
7189
7562
  [api, index, orientation]
7190
7563
  );
7191
- const onPointerMove = React40.useCallback(
7564
+ const onPointerMove = React41.useCallback(
7192
7565
  (e) => {
7193
7566
  if (containerSizeRef.current === 0) return;
7194
7567
  const currentPos = orientation === "horizontal" ? e.clientX : e.clientY;
@@ -7199,7 +7572,7 @@ var ResizableDivider = React40.forwardRef(
7199
7572
  },
7200
7573
  [api, orientation, setSizes]
7201
7574
  );
7202
- const onPointerUp = React40.useCallback(
7575
+ const onPointerUp = React41.useCallback(
7203
7576
  (e) => {
7204
7577
  e.currentTarget.releasePointerCapture(e.pointerId);
7205
7578
  containerSizeRef.current = 0;
@@ -7452,26 +7825,26 @@ function createAuthShell(config) {
7452
7825
  }
7453
7826
 
7454
7827
  // ../react-app-shell/dist/index.js
7455
- var AppShellContext = React40.createContext(null);
7828
+ var AppShellContext = React41.createContext(null);
7456
7829
  function useAppShell() {
7457
- const ctx = React40.useContext(AppShellContext);
7830
+ const ctx = React41.useContext(AppShellContext);
7458
7831
  if (!ctx) {
7459
7832
  throw new Error("useAppShell must be used within <AppShell>");
7460
7833
  }
7461
7834
  return ctx;
7462
7835
  }
7463
7836
  function AppShellRoot({ config, children, className }) {
7464
- const apiRef = React40.useRef(null);
7837
+ const apiRef = React41.useRef(null);
7465
7838
  if (apiRef.current === null) {
7466
7839
  apiRef.current = createAppShell(config);
7467
7840
  }
7468
7841
  const api = apiRef.current;
7469
- const [state, setState] = React40.useState(() => api.state);
7470
- React40.useEffect(() => {
7842
+ const [state, setState] = React41.useState(() => api.state);
7843
+ React41.useEffect(() => {
7471
7844
  setState(api.state);
7472
7845
  return api.subscribe((s) => setState(s));
7473
7846
  }, [api]);
7474
- React40.useEffect(() => {
7847
+ React41.useEffect(() => {
7475
7848
  if (typeof window === "undefined") return;
7476
7849
  const { mobileBreakpoint, tabletBreakpoint } = api.config;
7477
7850
  const mobileQuery = window.matchMedia(`(max-width: ${mobileBreakpoint - 1}px)`);
@@ -7492,14 +7865,14 @@ function AppShellRoot({ config, children, className }) {
7492
7865
  };
7493
7866
  }, [api]);
7494
7867
  const cssVars = api.getCSSVariables();
7495
- const ctxValue = React40.useMemo(
7868
+ const ctxValue = React41.useMemo(
7496
7869
  () => ({ api, state }),
7497
7870
  [api, state]
7498
7871
  );
7499
- return React40.createElement(
7872
+ return React41.createElement(
7500
7873
  AppShellContext.Provider,
7501
7874
  { value: ctxValue },
7502
- React40.createElement(
7875
+ React41.createElement(
7503
7876
  "div",
7504
7877
  {
7505
7878
  className: cn("flex h-screen w-full overflow-hidden", className),
@@ -7529,7 +7902,7 @@ function Sidebar2({ children, className }) {
7529
7902
  "w-[var(--shell-sidebar-full-width)]",
7530
7903
  state.sidebarOpen ? "translate-x-0" : isRight ? "translate-x-full" : "-translate-x-full"
7531
7904
  ] : ["relative", "w-[var(--shell-sidebar-width)]"];
7532
- return React40.createElement(
7905
+ return React41.createElement(
7533
7906
  "aside",
7534
7907
  {
7535
7908
  ...api.sidebarAriaProps,
@@ -7542,7 +7915,7 @@ function Sidebar2({ children, className }) {
7542
7915
  }
7543
7916
  Sidebar2.displayName = "AppShell.Sidebar";
7544
7917
  function Main({ children, className }) {
7545
- return React40.createElement(
7918
+ return React41.createElement(
7546
7919
  "div",
7547
7920
  {
7548
7921
  className: cn("flex flex-1 flex-col min-w-0 h-full", className)
@@ -7553,7 +7926,7 @@ function Main({ children, className }) {
7553
7926
  Main.displayName = "AppShell.Main";
7554
7927
  function Header({ children, className }) {
7555
7928
  const { api, state } = useAppShell();
7556
- const hamburger = state.isMobile ? React40.createElement(
7929
+ const hamburger = state.isMobile ? React41.createElement(
7557
7930
  "button",
7558
7931
  {
7559
7932
  type: "button",
@@ -7563,7 +7936,7 @@ function Header({ children, className }) {
7563
7936
  onClick: () => api.toggleSidebar(),
7564
7937
  className: "inline-flex items-center justify-center p-2 mr-2"
7565
7938
  },
7566
- React40.createElement(
7939
+ React41.createElement(
7567
7940
  "svg",
7568
7941
  {
7569
7942
  xmlns: "http://www.w3.org/2000/svg",
@@ -7577,12 +7950,12 @@ function Header({ children, className }) {
7577
7950
  strokeLinejoin: "round",
7578
7951
  "aria-hidden": "true"
7579
7952
  },
7580
- React40.createElement("line", { x1: 3, y1: 6, x2: 21, y2: 6 }),
7581
- React40.createElement("line", { x1: 3, y1: 12, x2: 21, y2: 12 }),
7582
- React40.createElement("line", { x1: 3, y1: 18, x2: 21, y2: 18 })
7953
+ React41.createElement("line", { x1: 3, y1: 6, x2: 21, y2: 6 }),
7954
+ React41.createElement("line", { x1: 3, y1: 12, x2: 21, y2: 12 }),
7955
+ React41.createElement("line", { x1: 3, y1: 18, x2: 21, y2: 18 })
7583
7956
  )
7584
7957
  ) : null;
7585
- return React40.createElement(
7958
+ return React41.createElement(
7586
7959
  "header",
7587
7960
  {
7588
7961
  ...api.headerAriaProps,
@@ -7601,7 +7974,7 @@ Header.displayName = "AppShell.Header";
7601
7974
  function Content({ children, className, maxWidth }) {
7602
7975
  const { api } = useAppShell();
7603
7976
  const mwClass = maxWidth ? `max-w-${maxWidth}` : "";
7604
- return React40.createElement(
7977
+ return React41.createElement(
7605
7978
  "main",
7606
7979
  {
7607
7980
  ...api.mainAriaProps,
@@ -7620,7 +7993,7 @@ function MobileNav2({ children, className }) {
7620
7993
  const { api, state } = useAppShell();
7621
7994
  if (!state.isMobile) return null;
7622
7995
  if (api.config.mobileNavPosition === "none") return null;
7623
- return React40.createElement(
7996
+ return React41.createElement(
7624
7997
  "nav",
7625
7998
  {
7626
7999
  ...api.mobileNavAriaProps,
@@ -7639,7 +8012,7 @@ MobileNav2.displayName = "AppShell.MobileNav";
7639
8012
  function Overlay({ className }) {
7640
8013
  const { api, state } = useAppShell();
7641
8014
  if (!state.isMobile || !state.sidebarOpen) return null;
7642
- return React40.createElement("div", {
8015
+ return React41.createElement("div", {
7643
8016
  ...api.overlayAriaProps,
7644
8017
  className: cn(
7645
8018
  "fixed inset-0 z-30 bg-black/50 transition-opacity",
@@ -7658,29 +8031,29 @@ var AppShell = Object.assign(AppShellRoot, {
7658
8031
  MobileNav: MobileNav2,
7659
8032
  Overlay
7660
8033
  });
7661
- var PageShellContext = React40.createContext(null);
8034
+ var PageShellContext = React41.createContext(null);
7662
8035
  function usePageShell() {
7663
- const ctx = React40.useContext(PageShellContext);
8036
+ const ctx = React41.useContext(PageShellContext);
7664
8037
  if (!ctx) {
7665
8038
  throw new Error("PageShell compound components must be used within <PageShell>");
7666
8039
  }
7667
8040
  return ctx;
7668
8041
  }
7669
8042
  function PageShellRoot({ config, children, className }) {
7670
- const apiRef = React40.useRef(null);
8043
+ const apiRef = React41.useRef(null);
7671
8044
  if (apiRef.current === null) {
7672
8045
  apiRef.current = createPageShell(config);
7673
8046
  }
7674
8047
  const api = apiRef.current;
7675
8048
  const cssVars = api.getCSSVariables();
7676
- const ctxValue = React40.useMemo(
8049
+ const ctxValue = React41.useMemo(
7677
8050
  () => ({ api }),
7678
8051
  [api]
7679
8052
  );
7680
- return React40.createElement(
8053
+ return React41.createElement(
7681
8054
  PageShellContext.Provider,
7682
8055
  { value: ctxValue },
7683
- React40.createElement(
8056
+ React41.createElement(
7684
8057
  "div",
7685
8058
  {
7686
8059
  className: cn("flex min-h-screen flex-col", className),
@@ -7696,7 +8069,7 @@ function Nav({ children, className }) {
7696
8069
  const { api } = usePageShell();
7697
8070
  const stickyClass = api.config.navSticky ? "sticky top-0 z-40" : "";
7698
8071
  const transparentClass = api.config.navTransparent ? "bg-transparent" : "bg-background border-b";
7699
- return React40.createElement(
8072
+ return React41.createElement(
7700
8073
  "nav",
7701
8074
  {
7702
8075
  ...api.navAriaProps,
@@ -7721,7 +8094,7 @@ function Section({
7721
8094
  }) {
7722
8095
  const { api } = usePageShell();
7723
8096
  const sectionClasses = api.getSectionClasses({ fullWidth, maxWidth, padding, background });
7724
- return React40.createElement(
8097
+ return React41.createElement(
7725
8098
  "section",
7726
8099
  {
7727
8100
  className: cn("py-12", sectionClasses, className)
@@ -7733,7 +8106,7 @@ Section.displayName = "PageShell.Section";
7733
8106
  function Footer2({ children, className, columns }) {
7734
8107
  const { api } = usePageShell();
7735
8108
  const cols = columns ?? api.config.footerColumns;
7736
- return React40.createElement(
8109
+ return React41.createElement(
7737
8110
  "footer",
7738
8111
  {
7739
8112
  ...api.footerAriaProps,
@@ -7742,7 +8115,7 @@ function Footer2({ children, className, columns }) {
7742
8115
  className
7743
8116
  )
7744
8117
  },
7745
- React40.createElement(
8118
+ React41.createElement(
7746
8119
  "div",
7747
8120
  {
7748
8121
  className: `mx-auto max-w-[var(--page-max-width)] grid gap-8`,
@@ -7760,28 +8133,28 @@ Object.assign(PageShellRoot, {
7760
8133
  Section,
7761
8134
  Footer: Footer2
7762
8135
  });
7763
- var AuthShellContext = React40.createContext(null);
8136
+ var AuthShellContext = React41.createContext(null);
7764
8137
  function useAuthShell() {
7765
- const ctx = React40.useContext(AuthShellContext);
8138
+ const ctx = React41.useContext(AuthShellContext);
7766
8139
  if (!ctx) {
7767
8140
  throw new Error("AuthShell compound components must be used within <AuthShell>");
7768
8141
  }
7769
8142
  return ctx;
7770
8143
  }
7771
8144
  function AuthShellRoot({ config, children, className }) {
7772
- const apiRef = React40.useRef(null);
8145
+ const apiRef = React41.useRef(null);
7773
8146
  if (apiRef.current === null) {
7774
8147
  apiRef.current = createAuthShell(config);
7775
8148
  }
7776
8149
  const api = apiRef.current;
7777
- const ctxValue = React40.useMemo(
8150
+ const ctxValue = React41.useMemo(
7778
8151
  () => ({ api }),
7779
8152
  [api]
7780
8153
  );
7781
- return React40.createElement(
8154
+ return React41.createElement(
7782
8155
  AuthShellContext.Provider,
7783
8156
  { value: ctxValue },
7784
- React40.createElement(
8157
+ React41.createElement(
7785
8158
  "div",
7786
8159
  {
7787
8160
  ...api.ariaProps,
@@ -7795,7 +8168,7 @@ function AuthShellRoot({ config, children, className }) {
7795
8168
  AuthShellRoot.displayName = "AuthShell";
7796
8169
  function Card({ children, className }) {
7797
8170
  const { api } = useAuthShell();
7798
- return React40.createElement(
8171
+ return React41.createElement(
7799
8172
  "div",
7800
8173
  {
7801
8174
  className: cn(api.cardClasses, className),
@@ -7883,7 +8256,7 @@ var avatarFallbackVariants = cva({
7883
8256
  size: "md"
7884
8257
  }
7885
8258
  });
7886
- var AvatarContext = React40.createContext({
8259
+ var AvatarContext = React41.createContext({
7887
8260
  size: "md",
7888
8261
  imageLoaded: false,
7889
8262
  imageError: false,
@@ -7892,10 +8265,10 @@ var AvatarContext = React40.createContext({
7892
8265
  setImageError: () => {
7893
8266
  }
7894
8267
  });
7895
- var Avatar = React40.forwardRef(
8268
+ var Avatar = React41.forwardRef(
7896
8269
  ({ size = "md", className, children, ...props }, ref) => {
7897
- const [imageLoaded, setImageLoaded] = React40.useState(false);
7898
- const [imageError, setImageError] = React40.useState(false);
8270
+ const [imageLoaded, setImageLoaded] = React41.useState(false);
8271
+ const [imageError, setImageError] = React41.useState(false);
7899
8272
  const api = createAvatar({ size });
7900
8273
  return /* @__PURE__ */ jsx(AvatarContext.Provider, { value: { size, imageLoaded, imageError, setImageLoaded, setImageError }, children: /* @__PURE__ */ jsx(
7901
8274
  "span",
@@ -7911,9 +8284,9 @@ var Avatar = React40.forwardRef(
7911
8284
  }
7912
8285
  );
7913
8286
  Avatar.displayName = "Avatar";
7914
- var AvatarImage = React40.forwardRef(
8287
+ var AvatarImage = React41.forwardRef(
7915
8288
  ({ className, src, alt = "", onLoad, onError, ...props }, ref) => {
7916
- const { setImageLoaded, setImageError } = React40.useContext(AvatarContext);
8289
+ const { setImageLoaded, setImageError } = React41.useContext(AvatarContext);
7917
8290
  const handleLoad = (e) => {
7918
8291
  setImageLoaded(true);
7919
8292
  onLoad?.(e);
@@ -7937,9 +8310,9 @@ var AvatarImage = React40.forwardRef(
7937
8310
  }
7938
8311
  );
7939
8312
  AvatarImage.displayName = "AvatarImage";
7940
- var AvatarFallback = React40.forwardRef(
8313
+ var AvatarFallback = React41.forwardRef(
7941
8314
  ({ className, children, ...props }, ref) => {
7942
- const { size } = React40.useContext(AvatarContext);
8315
+ const { size } = React41.useContext(AvatarContext);
7943
8316
  return /* @__PURE__ */ jsx(
7944
8317
  "span",
7945
8318
  {
@@ -8056,28 +8429,28 @@ var avatarPresenceDotVariants = cva({
8056
8429
  // ../react-avatar-group/dist/index.js
8057
8430
  function AvatarGroup({ users, max, size = "md", className }) {
8058
8431
  const api = createAvatarGroup({ users, max});
8059
- return React40.createElement(
8432
+ return React41.createElement(
8060
8433
  "div",
8061
8434
  { ...api.ariaProps, className: cn(avatarGroupStyles, className) },
8062
8435
  api.visibleUsers.map(
8063
- (user) => React40.createElement(
8436
+ (user) => React41.createElement(
8064
8437
  "div",
8065
8438
  {
8066
8439
  key: user.id,
8067
8440
  className: avatarVariants2({ size }),
8068
8441
  ...api.getAvatarAriaProps(user)
8069
8442
  },
8070
- user.src ? React40.createElement("img", {
8443
+ user.src ? React41.createElement("img", {
8071
8444
  src: user.src,
8072
8445
  alt: user.name,
8073
8446
  className: avatarImageStyles
8074
- }) : React40.createElement("span", null, api.getInitials(user.name)),
8075
- user.status && React40.createElement("span", {
8447
+ }) : React41.createElement("span", null, api.getInitials(user.name)),
8448
+ user.status && React41.createElement("span", {
8076
8449
  className: avatarPresenceDotVariants({ size, status: user.status })
8077
8450
  })
8078
8451
  )
8079
8452
  ),
8080
- api.overflowCount > 0 && React40.createElement(
8453
+ api.overflowCount > 0 && React41.createElement(
8081
8454
  "div",
8082
8455
  {
8083
8456
  className: avatarOverflowBadgeVariants({ size }),
@@ -8161,7 +8534,7 @@ var cardContentVariants = cva({
8161
8534
  var cardFooterVariants = cva({
8162
8535
  base: "flex items-center p-6 pt-0"
8163
8536
  });
8164
- var Card2 = React40.forwardRef(
8537
+ var Card2 = React41.forwardRef(
8165
8538
  ({ className, ...props }, ref) => {
8166
8539
  const api = createCard();
8167
8540
  return /* @__PURE__ */ jsx(
@@ -8177,7 +8550,7 @@ var Card2 = React40.forwardRef(
8177
8550
  }
8178
8551
  );
8179
8552
  Card2.displayName = "Card";
8180
- var CardHeader = React40.forwardRef(
8553
+ var CardHeader = React41.forwardRef(
8181
8554
  ({ className, ...props }, ref) => {
8182
8555
  const api = createCardHeader();
8183
8556
  return /* @__PURE__ */ jsx(
@@ -8192,7 +8565,7 @@ var CardHeader = React40.forwardRef(
8192
8565
  }
8193
8566
  );
8194
8567
  CardHeader.displayName = "CardHeader";
8195
- var CardTitle = React40.forwardRef(
8568
+ var CardTitle = React41.forwardRef(
8196
8569
  ({ className, ...props }, ref) => {
8197
8570
  const api = createCardTitle();
8198
8571
  return /* @__PURE__ */ jsx(
@@ -8207,7 +8580,7 @@ var CardTitle = React40.forwardRef(
8207
8580
  }
8208
8581
  );
8209
8582
  CardTitle.displayName = "CardTitle";
8210
- var CardDescription = React40.forwardRef(
8583
+ var CardDescription = React41.forwardRef(
8211
8584
  ({ className, ...props }, ref) => {
8212
8585
  const api = createCardDescription();
8213
8586
  return /* @__PURE__ */ jsx(
@@ -8222,7 +8595,7 @@ var CardDescription = React40.forwardRef(
8222
8595
  }
8223
8596
  );
8224
8597
  CardDescription.displayName = "CardDescription";
8225
- var CardContent = React40.forwardRef(
8598
+ var CardContent = React41.forwardRef(
8226
8599
  ({ className, ...props }, ref) => {
8227
8600
  const api = createCardContent();
8228
8601
  return /* @__PURE__ */ jsx(
@@ -8237,7 +8610,7 @@ var CardContent = React40.forwardRef(
8237
8610
  }
8238
8611
  );
8239
8612
  CardContent.displayName = "CardContent";
8240
- var CardFooter = React40.forwardRef(
8613
+ var CardFooter = React41.forwardRef(
8241
8614
  ({ className, ...props }, ref) => {
8242
8615
  const api = createCardFooter();
8243
8616
  return /* @__PURE__ */ jsx(
@@ -8318,7 +8691,7 @@ var checkboxVariants = cva({
8318
8691
  size: "default"
8319
8692
  }
8320
8693
  });
8321
- var Checkbox = React40.forwardRef(
8694
+ var Checkbox = React41.forwardRef(
8322
8695
  ({ checked = false, onCheckedChange, disabled = false, size = "default", className, ...props }, ref) => {
8323
8696
  const api = createCheckbox({ checked, disabled });
8324
8697
  const checkedVariant = checked === "indeterminate" ? "indeterminate" : checked ? "true" : "false";
@@ -8629,13 +9002,13 @@ function DatePicker({
8629
9002
  className,
8630
9003
  disabled = false
8631
9004
  }) {
8632
- const [open, setOpen] = React40.useState(false);
8633
- const [currentMonth, setCurrentMonth] = React40.useState(
9005
+ const [open, setOpen] = React41.useState(false);
9006
+ const [currentMonth, setCurrentMonth] = React41.useState(
8634
9007
  () => value ? new Date(value.getFullYear(), value.getMonth(), 1) : new Date((/* @__PURE__ */ new Date()).getFullYear(), (/* @__PURE__ */ new Date()).getMonth(), 1)
8635
9008
  );
8636
- const [view, setView] = React40.useState("calendar");
8637
- const containerRef = React40.useRef(null);
8638
- const api = React40.useMemo(
9009
+ const [view, setView] = React41.useState("calendar");
9010
+ const containerRef = React41.useRef(null);
9011
+ const api = React41.useMemo(
8639
9012
  () => createDatePicker({
8640
9013
  value,
8641
9014
  onChange,
@@ -8649,7 +9022,7 @@ function DatePicker({
8649
9022
  }),
8650
9023
  [value, onChange, minDate, maxDate, showTime, format, placeholder, open]
8651
9024
  );
8652
- React40.useMemo(() => {
9025
+ React41.useMemo(() => {
8653
9026
  createDatePicker({
8654
9027
  value,
8655
9028
  minDate,
@@ -8664,7 +9037,7 @@ function DatePicker({
8664
9037
  });
8665
9038
  return tempApi.days;
8666
9039
  }, [value, minDate, maxDate, currentMonth]);
8667
- React40.useEffect(() => {
9040
+ React41.useEffect(() => {
8668
9041
  if (!open) return;
8669
9042
  function handleClick(e) {
8670
9043
  if (containerRef.current && !containerRef.current.contains(e.target)) {
@@ -8674,7 +9047,7 @@ function DatePicker({
8674
9047
  document.addEventListener("mousedown", handleClick);
8675
9048
  return () => document.removeEventListener("mousedown", handleClick);
8676
9049
  }, [open]);
8677
- React40.useEffect(() => {
9050
+ React41.useEffect(() => {
8678
9051
  if (!open) return;
8679
9052
  function handleKeyDown(e) {
8680
9053
  if (e.key === "Escape") {
@@ -8712,10 +9085,10 @@ function DatePicker({
8712
9085
  onChange?.(newDate);
8713
9086
  };
8714
9087
  const monthLabel = currentMonth.toLocaleDateString("en-US", { month: "long", year: "numeric" });
8715
- return React40.createElement(
9088
+ return React41.createElement(
8716
9089
  "div",
8717
9090
  { ref: containerRef, className: cn("relative inline-block", className) },
8718
- React40.createElement(
9091
+ React41.createElement(
8719
9092
  "button",
8720
9093
  {
8721
9094
  type: "button",
@@ -8727,17 +9100,17 @@ function DatePicker({
8727
9100
  },
8728
9101
  displayValue
8729
9102
  ),
8730
- open && React40.createElement(
9103
+ open && React41.createElement(
8731
9104
  "div",
8732
9105
  {
8733
9106
  className: datePickerDropdownStyles,
8734
9107
  role: "dialog",
8735
9108
  "aria-modal": true
8736
9109
  },
8737
- React40.createElement(
9110
+ React41.createElement(
8738
9111
  "div",
8739
9112
  { className: "flex items-center justify-between mb-3" },
8740
- React40.createElement(
9113
+ React41.createElement(
8741
9114
  "button",
8742
9115
  {
8743
9116
  type: "button",
@@ -8747,8 +9120,8 @@ function DatePicker({
8747
9120
  },
8748
9121
  "\u2039"
8749
9122
  ),
8750
- React40.createElement("span", { className: "text-sm font-medium" }, monthLabel),
8751
- React40.createElement(
9123
+ React41.createElement("span", { className: "text-sm font-medium" }, monthLabel),
9124
+ React41.createElement(
8752
9125
  "button",
8753
9126
  {
8754
9127
  type: "button",
@@ -8759,11 +9132,11 @@ function DatePicker({
8759
9132
  "\u203A"
8760
9133
  )
8761
9134
  ),
8762
- React40.createElement(
9135
+ React41.createElement(
8763
9136
  "div",
8764
9137
  { className: "grid grid-cols-7 gap-0 text-center", role: "grid" },
8765
9138
  ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"].map(
8766
- (d) => React40.createElement("div", { key: d, className: "text-xs text-muted-foreground py-1 font-medium" }, d)
9139
+ (d) => React41.createElement("div", { key: d, className: "text-xs text-muted-foreground py-1 font-medium" }, d)
8767
9140
  ),
8768
9141
  api.days.map((day, i) => {
8769
9142
  let state = "default";
@@ -8771,7 +9144,7 @@ function DatePicker({
8771
9144
  else if (day.isSelected) state = "selected";
8772
9145
  else if (day.isToday) state = "today";
8773
9146
  else if (!day.isCurrentMonth) state = "outside";
8774
- return React40.createElement(
9147
+ return React41.createElement(
8775
9148
  "button",
8776
9149
  {
8777
9150
  key: i,
@@ -8786,11 +9159,11 @@ function DatePicker({
8786
9159
  );
8787
9160
  })
8788
9161
  ),
8789
- showTime && React40.createElement(
9162
+ showTime && React41.createElement(
8790
9163
  "div",
8791
9164
  { className: datePickerTimeStyles },
8792
- React40.createElement("span", { className: "text-sm text-muted-foreground" }, "Time:"),
8793
- React40.createElement("input", {
9165
+ React41.createElement("span", { className: "text-sm text-muted-foreground" }, "Time:"),
9166
+ React41.createElement("input", {
8794
9167
  type: "number",
8795
9168
  min: 0,
8796
9169
  max: 23,
@@ -8799,8 +9172,8 @@ function DatePicker({
8799
9172
  className: datePickerTimeInputStyles,
8800
9173
  "aria-label": "Hours"
8801
9174
  }),
8802
- React40.createElement("span", { className: "text-muted-foreground" }, ":"),
8803
- React40.createElement("input", {
9175
+ React41.createElement("span", { className: "text-muted-foreground" }, ":"),
9176
+ React41.createElement("input", {
8804
9177
  type: "number",
8805
9178
  min: 0,
8806
9179
  max: 59,
@@ -9072,10 +9445,10 @@ var statusBarVariants = cva({
9072
9445
  theme: "dark"
9073
9446
  }
9074
9447
  });
9075
- var MonacoDiffEditor = React40.lazy(
9448
+ var MonacoDiffEditor = React41.lazy(
9076
9449
  () => import('@monaco-editor/react').then((m) => ({ default: m.DiffEditor }))
9077
9450
  );
9078
- var DiffViewer = React40.forwardRef(
9451
+ var DiffViewer = React41.forwardRef(
9079
9452
  ({
9080
9453
  files,
9081
9454
  original = "",
@@ -9096,12 +9469,12 @@ var DiffViewer = React40.forwardRef(
9096
9469
  className,
9097
9470
  editorOptions
9098
9471
  }, ref) => {
9099
- const [activeIdx, setActiveIdx] = React40.useState(controlledIndex);
9100
- const [sidebarOpen, setSidebarOpen] = React40.useState(showSidebar);
9101
- const [viewMode, setViewMode] = React40.useState(controlledViewMode);
9102
- React40.useEffect(() => setActiveIdx(controlledIndex), [controlledIndex]);
9103
- React40.useEffect(() => setViewMode(controlledViewMode), [controlledViewMode]);
9104
- const api = React40.useMemo(
9472
+ const [activeIdx, setActiveIdx] = React41.useState(controlledIndex);
9473
+ const [sidebarOpen, setSidebarOpen] = React41.useState(showSidebar);
9474
+ const [viewMode, setViewMode] = React41.useState(controlledViewMode);
9475
+ React41.useEffect(() => setActiveIdx(controlledIndex), [controlledIndex]);
9476
+ React41.useEffect(() => setViewMode(controlledViewMode), [controlledViewMode]);
9477
+ const api = React41.useMemo(
9105
9478
  () => createDiffViewer({
9106
9479
  files,
9107
9480
  activeFileIndex: activeIdx,
@@ -9123,7 +9496,7 @@ var DiffViewer = React40.forwardRef(
9123
9496
  );
9124
9497
  const activeFile = files[activeIdx];
9125
9498
  const detectedLang = language || (activeFile ? api.getLanguageForFile(activeFile.path) : "plaintext");
9126
- React40.useEffect(() => {
9499
+ React41.useEffect(() => {
9127
9500
  function onKey(e) {
9128
9501
  if (e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement) return;
9129
9502
  if (e.key === "j") {
@@ -9215,7 +9588,7 @@ var DiffViewer = React40.forwardRef(
9215
9588
  );
9216
9589
  }) }),
9217
9590
  /* @__PURE__ */ jsx("div", { style: { flex: 1 }, children: /* @__PURE__ */ jsx(
9218
- React40.Suspense,
9591
+ React41.Suspense,
9219
9592
  {
9220
9593
  fallback: /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center h-full text-xs opacity-50", children: "Loading editor..." }),
9221
9594
  children: /* @__PURE__ */ jsx(
@@ -9648,10 +10021,10 @@ var emojiPickerSectionLabelStyles = "px-2 py-1 text-xs font-medium text-muted-fo
9648
10021
 
9649
10022
  // ../react-emoji-picker/dist/index.js
9650
10023
  function EmojiPicker({ onSelect, recentEmojis: initialRecent = [], className }) {
9651
- const [search, setSearch] = React40.useState("");
9652
- const [activeCategory, setActiveCategory] = React40.useState("smileys");
9653
- const [recentEmojis, setRecentEmojis] = React40.useState(initialRecent);
9654
- const api = React40.useMemo(
10024
+ const [search, setSearch] = React41.useState("");
10025
+ const [activeCategory, setActiveCategory] = React41.useState("smileys");
10026
+ const [recentEmojis, setRecentEmojis] = React41.useState(initialRecent);
10027
+ const api = React41.useMemo(
9655
10028
  () => createEmojiPicker({
9656
10029
  onSelect: void 0,
9657
10030
  search,
@@ -9659,7 +10032,7 @@ function EmojiPicker({ onSelect, recentEmojis: initialRecent = [], className })
9659
10032
  }),
9660
10033
  [search, recentEmojis]
9661
10034
  );
9662
- const filteredEmojis = React40.useMemo(() => {
10035
+ const filteredEmojis = React41.useMemo(() => {
9663
10036
  if (search.trim()) {
9664
10037
  const query = search.toLowerCase().trim();
9665
10038
  const allEmojis = EMOJI_CATEGORIES.flatMap((cat) => EMOJI_DATA[cat]);
@@ -9679,22 +10052,22 @@ function EmojiPicker({ onSelect, recentEmojis: initialRecent = [], className })
9679
10052
  setActiveCategory(cat);
9680
10053
  setSearch("");
9681
10054
  };
9682
- return React40.createElement(
10055
+ return React41.createElement(
9683
10056
  "div",
9684
10057
  { className: cn(emojiPickerContainerStyles, className), ...api.ariaProps },
9685
10058
  // Search input
9686
- React40.createElement("input", {
10059
+ React41.createElement("input", {
9687
10060
  ...api.searchInputProps,
9688
10061
  className: emojiPickerSearchStyles,
9689
10062
  value: search,
9690
10063
  onChange: (e) => setSearch(e.target.value)
9691
10064
  }),
9692
10065
  // Category tabs
9693
- !search && React40.createElement(
10066
+ !search && React41.createElement(
9694
10067
  "div",
9695
10068
  { className: emojiPickerCategoryBarStyles },
9696
10069
  api.categoryTabs.map(
9697
- (tab) => React40.createElement(
10070
+ (tab) => React41.createElement(
9698
10071
  "button",
9699
10072
  {
9700
10073
  key: tab.category,
@@ -9711,15 +10084,15 @@ function EmojiPicker({ onSelect, recentEmojis: initialRecent = [], className })
9711
10084
  )
9712
10085
  ),
9713
10086
  // Recent emojis section
9714
- !search && recentEmojis.length > 0 && React40.createElement(
10087
+ !search && recentEmojis.length > 0 && React41.createElement(
9715
10088
  "div",
9716
10089
  null,
9717
- React40.createElement("div", { className: emojiPickerSectionLabelStyles }, "Recent"),
9718
- React40.createElement(
10090
+ React41.createElement("div", { className: emojiPickerSectionLabelStyles }, "Recent"),
10091
+ React41.createElement(
9719
10092
  "div",
9720
10093
  { className: emojiPickerGridStyles },
9721
10094
  recentEmojis.map(
9722
- (emoji, i) => React40.createElement(
10095
+ (emoji, i) => React41.createElement(
9723
10096
  "button",
9724
10097
  {
9725
10098
  key: `recent-${emoji.emoji}-${i}`,
@@ -9734,19 +10107,19 @@ function EmojiPicker({ onSelect, recentEmojis: initialRecent = [], className })
9734
10107
  )
9735
10108
  ),
9736
10109
  // Emoji grid
9737
- React40.createElement(
10110
+ React41.createElement(
9738
10111
  "div",
9739
10112
  null,
9740
- !search && React40.createElement(
10113
+ !search && React41.createElement(
9741
10114
  "div",
9742
10115
  { className: emojiPickerSectionLabelStyles },
9743
10116
  CATEGORY_LABELS[activeCategory]
9744
10117
  ),
9745
- React40.createElement(
10118
+ React41.createElement(
9746
10119
  "div",
9747
10120
  { className: emojiPickerGridStyles },
9748
10121
  filteredEmojis.map(
9749
- (emoji, i) => React40.createElement(
10122
+ (emoji, i) => React41.createElement(
9750
10123
  "button",
9751
10124
  {
9752
10125
  key: `${emoji.emoji}-${i}`,
@@ -9758,7 +10131,7 @@ function EmojiPicker({ onSelect, recentEmojis: initialRecent = [], className })
9758
10131
  emoji.emoji
9759
10132
  )
9760
10133
  ),
9761
- filteredEmojis.length === 0 && React40.createElement(
10134
+ filteredEmojis.length === 0 && React41.createElement(
9762
10135
  "div",
9763
10136
  { className: "col-span-8 text-center text-sm text-muted-foreground py-4" },
9764
10137
  "No emojis found"
@@ -9958,10 +10331,10 @@ function FileUpload({
9958
10331
  className,
9959
10332
  children
9960
10333
  }) {
9961
- const [files, setFiles] = React40.useState([]);
9962
- const [isDragging, setIsDragging] = React40.useState(false);
9963
- const inputRef = React40.useRef(null);
9964
- const api = React40.useMemo(
10334
+ const [files, setFiles] = React41.useState([]);
10335
+ const [isDragging, setIsDragging] = React41.useState(false);
10336
+ const inputRef = React41.useRef(null);
10337
+ const api = React41.useMemo(
9965
10338
  () => createFileUpload({
9966
10339
  accept,
9967
10340
  maxSize,
@@ -10026,17 +10399,17 @@ function FileUpload({
10026
10399
  handleClick();
10027
10400
  }
10028
10401
  };
10029
- return React40.createElement(
10402
+ return React41.createElement(
10030
10403
  "div",
10031
10404
  { className },
10032
10405
  // Hidden file input
10033
- React40.createElement("input", {
10406
+ React41.createElement("input", {
10034
10407
  ref: inputRef,
10035
10408
  ...api.inputProps,
10036
10409
  onChange: handleInputChange
10037
10410
  }),
10038
10411
  // Drop zone
10039
- React40.createElement(
10412
+ React41.createElement(
10040
10413
  "div",
10041
10414
  {
10042
10415
  ...api.dropZoneProps,
@@ -10050,21 +10423,21 @@ function FileUpload({
10050
10423
  onDragOver: handleDragOver,
10051
10424
  onDrop: handleDrop
10052
10425
  },
10053
- children ?? React40.createElement(
10054
- React40.Fragment,
10426
+ children ?? React41.createElement(
10427
+ React41.Fragment,
10055
10428
  null,
10056
- React40.createElement("div", { className: "text-2xl mb-2" }, "\u{1F4C1}"),
10057
- React40.createElement(
10429
+ React41.createElement("div", { className: "text-2xl mb-2" }, "\u{1F4C1}"),
10430
+ React41.createElement(
10058
10431
  "p",
10059
10432
  { className: "text-sm text-muted-foreground" },
10060
10433
  "Drag & drop files here, or click to select"
10061
10434
  ),
10062
- accept && React40.createElement(
10435
+ accept && React41.createElement(
10063
10436
  "p",
10064
10437
  { className: "text-xs text-muted-foreground mt-1" },
10065
10438
  `Accepted: ${accept}`
10066
10439
  ),
10067
- maxSize && React40.createElement(
10440
+ maxSize && React41.createElement(
10068
10441
  "p",
10069
10442
  { className: "text-xs text-muted-foreground" },
10070
10443
  `Max size: ${formatFileSize(maxSize)}`
@@ -10072,37 +10445,37 @@ function FileUpload({
10072
10445
  )
10073
10446
  ),
10074
10447
  // File list
10075
- files.length > 0 && React40.createElement(
10448
+ files.length > 0 && React41.createElement(
10076
10449
  "div",
10077
10450
  { className: fileUploadFileListStyles },
10078
10451
  files.map(
10079
- (file) => React40.createElement(
10452
+ (file) => React41.createElement(
10080
10453
  "div",
10081
10454
  { key: file.id, className: fileUploadFileItemStyles },
10082
- React40.createElement(
10455
+ React41.createElement(
10083
10456
  "div",
10084
10457
  { className: "flex-1 min-w-0" },
10085
- React40.createElement("div", { className: "font-medium truncate" }, file.name),
10086
- React40.createElement(
10458
+ React41.createElement("div", { className: "font-medium truncate" }, file.name),
10459
+ React41.createElement(
10087
10460
  "div",
10088
10461
  { className: "text-xs text-muted-foreground" },
10089
10462
  formatFileSize(file.size)
10090
10463
  ),
10091
- file.status === "uploading" && React40.createElement(
10464
+ file.status === "uploading" && React41.createElement(
10092
10465
  "div",
10093
10466
  { className: cn(fileUploadProgressStyles, "mt-1") },
10094
- React40.createElement("div", {
10467
+ React41.createElement("div", {
10095
10468
  className: fileUploadProgressBarStyles,
10096
10469
  style: { width: `${file.progress}%` }
10097
10470
  })
10098
10471
  ),
10099
- file.error && React40.createElement(
10472
+ file.error && React41.createElement(
10100
10473
  "div",
10101
10474
  { className: "text-xs text-destructive mt-0.5" },
10102
10475
  file.error
10103
10476
  )
10104
10477
  ),
10105
- React40.createElement(
10478
+ React41.createElement(
10106
10479
  "button",
10107
10480
  {
10108
10481
  type: "button",
@@ -10237,13 +10610,13 @@ function KeyboardShortcut({
10237
10610
  enabled = true,
10238
10611
  preventDefault = true
10239
10612
  }) {
10240
- const apiRef = React40.useRef(
10613
+ const apiRef = React41.useRef(
10241
10614
  createKeyboardShortcut({ keys, onTrigger, enabled, preventDefault })
10242
10615
  );
10243
- React40.useEffect(() => {
10616
+ React41.useEffect(() => {
10244
10617
  apiRef.current = createKeyboardShortcut({ keys, onTrigger, enabled, preventDefault });
10245
10618
  }, [keys, onTrigger, enabled, preventDefault]);
10246
- React40.useEffect(() => {
10619
+ React41.useEffect(() => {
10247
10620
  if (!enabled) return;
10248
10621
  const handleKeyDown = (e) => {
10249
10622
  apiRef.current.handler(e);
@@ -10259,15 +10632,15 @@ function ShortcutBadge({ keys, platform = true, className }) {
10259
10632
  }, enabled: false });
10260
10633
  const displayKeys = platform ? api.platformDisplay : api.display;
10261
10634
  const isMacDisplay = platform && displayKeys !== api.display;
10262
- return React40.createElement(
10635
+ return React41.createElement(
10263
10636
  "kbd",
10264
10637
  { ...api.badgeAriaProps, className: cn(shortcutBadgeStyles, className) },
10265
- isMacDisplay ? React40.createElement("span", null, displayKeys) : keys.map(
10266
- (key, i) => React40.createElement(
10267
- React40.Fragment,
10638
+ isMacDisplay ? React41.createElement("span", null, displayKeys) : keys.map(
10639
+ (key, i) => React41.createElement(
10640
+ React41.Fragment,
10268
10641
  { key: i },
10269
- i > 0 && React40.createElement("span", { className: shortcutSeparatorStyles }, "+"),
10270
- React40.createElement(
10642
+ i > 0 && React41.createElement("span", { className: shortcutSeparatorStyles }, "+"),
10643
+ React41.createElement(
10271
10644
  "span",
10272
10645
  { className: shortcutKeyStyles },
10273
10646
  formatShortcut([key], false)
@@ -10443,7 +10816,7 @@ var otpInputSlotVariants = cva({
10443
10816
  filled: "false"
10444
10817
  }
10445
10818
  });
10446
- var OtpInput = React40.forwardRef(
10819
+ var OtpInput = React41.forwardRef(
10447
10820
  ({
10448
10821
  length = 6,
10449
10822
  value = "",
@@ -10455,15 +10828,15 @@ var OtpInput = React40.forwardRef(
10455
10828
  className,
10456
10829
  ...props
10457
10830
  }, ref) => {
10458
- const inputRefs = React40.useRef([]);
10459
- const [focusedIndex, setFocusedIndex] = React40.useState(autoFocus ? 0 : -1);
10460
- const [values, setValues] = React40.useState(
10831
+ const inputRefs = React41.useRef([]);
10832
+ const [focusedIndex, setFocusedIndex] = React41.useState(autoFocus ? 0 : -1);
10833
+ const [values, setValues] = React41.useState(
10461
10834
  () => Array.from({ length }, (_, i) => value.charAt(i) || "")
10462
10835
  );
10463
- React40.useEffect(() => {
10836
+ React41.useEffect(() => {
10464
10837
  setValues(Array.from({ length }, (_, i) => value.charAt(i) || ""));
10465
10838
  }, [value, length]);
10466
- React40.useEffect(() => {
10839
+ React41.useEffect(() => {
10467
10840
  if (autoFocus && inputRefs.current[0]) {
10468
10841
  inputRefs.current[0].focus();
10469
10842
  }
@@ -10643,13 +11016,13 @@ function PresenceIndicator({
10643
11016
  className
10644
11017
  }) {
10645
11018
  const api = createPresence({ status, showLabel, label });
10646
- return React40.createElement(
11019
+ return React41.createElement(
10647
11020
  "span",
10648
11021
  { ...api.ariaProps, className: cn(presenceContainerStyles, className) },
10649
- React40.createElement("span", {
11022
+ React41.createElement("span", {
10650
11023
  className: presenceDotVariants({ status, size })
10651
11024
  }),
10652
- api.showLabel && React40.createElement("span", { className: presenceLabelStyles }, api.label)
11025
+ api.showLabel && React41.createElement("span", { className: presenceLabelStyles }, api.label)
10653
11026
  );
10654
11027
  }
10655
11028
  PresenceIndicator.displayName = "PresenceIndicator";
@@ -10737,7 +11110,7 @@ var radioCircleVariants = cva({
10737
11110
  });
10738
11111
 
10739
11112
  // ../react-radio/dist/index.js
10740
- var RadioContext = React40.createContext(null);
11113
+ var RadioContext = React41.createContext(null);
10741
11114
  function RadioGroup({
10742
11115
  children,
10743
11116
  className,
@@ -10748,25 +11121,25 @@ function RadioGroup({
10748
11121
  disabled = false,
10749
11122
  orientation = "vertical"
10750
11123
  }) {
10751
- const [internalValue, setInternalValue] = React40.useState(defaultValue);
11124
+ const [internalValue, setInternalValue] = React41.useState(defaultValue);
10752
11125
  const isControlled = controlledValue !== void 0;
10753
11126
  const currentValue = isControlled ? controlledValue : internalValue;
10754
11127
  const api = createRadioGroup({ value: currentValue, name, disabled, orientation });
10755
- const handleChange = React40.useCallback(
11128
+ const handleChange = React41.useCallback(
10756
11129
  (val) => {
10757
11130
  if (!isControlled) setInternalValue(val);
10758
11131
  onValueChange?.(val);
10759
11132
  },
10760
11133
  [isControlled, onValueChange]
10761
11134
  );
10762
- const ctx = React40.useMemo(
11135
+ const ctx = React41.useMemo(
10763
11136
  () => ({ value: currentValue, onValueChange: handleChange, name, disabled }),
10764
11137
  [currentValue, handleChange, name, disabled]
10765
11138
  );
10766
- return React40.createElement(
11139
+ return React41.createElement(
10767
11140
  RadioContext.Provider,
10768
11141
  { value: ctx },
10769
- React40.createElement(
11142
+ React41.createElement(
10770
11143
  "div",
10771
11144
  { ...api.groupProps, className: cn(radioGroupVariants({ orientation }), className) },
10772
11145
  children
@@ -10774,17 +11147,17 @@ function RadioGroup({
10774
11147
  );
10775
11148
  }
10776
11149
  function RadioItem({ value, children, disabled = false, className }) {
10777
- const ctx = React40.useContext(RadioContext);
11150
+ const ctx = React41.useContext(RadioContext);
10778
11151
  if (!ctx) throw new Error("RadioItem must be used within RadioGroup");
10779
11152
  const isChecked = ctx.value === value;
10780
11153
  const isDisabled = ctx.disabled || disabled;
10781
- return React40.createElement(
11154
+ return React41.createElement(
10782
11155
  "label",
10783
11156
  {
10784
11157
  className: cn(radioItemVariants({ disabled: isDisabled ? "true" : "false" }), className),
10785
11158
  "data-state": isChecked ? "checked" : "unchecked"
10786
11159
  },
10787
- React40.createElement(
11160
+ React41.createElement(
10788
11161
  "button",
10789
11162
  {
10790
11163
  type: "button",
@@ -10796,12 +11169,12 @@ function RadioItem({ value, children, disabled = false, className }) {
10796
11169
  className: cn(radioCircleVariants({ checked: isChecked ? "true" : "false" })),
10797
11170
  onClick: () => !isDisabled && ctx.onValueChange(value)
10798
11171
  },
10799
- isChecked && React40.createElement(
11172
+ isChecked && React41.createElement(
10800
11173
  "span",
10801
11174
  { className: "block h-2 w-2 rounded-full bg-primary-foreground mx-auto" }
10802
11175
  )
10803
11176
  ),
10804
- children && React40.createElement("span", { className: "text-sm" }, children)
11177
+ children && React41.createElement("span", { className: "text-sm" }, children)
10805
11178
  );
10806
11179
  }
10807
11180
  RadioGroup.displayName = "RadioGroup";
@@ -10873,11 +11246,11 @@ function ReactionBar({
10873
11246
  className
10874
11247
  }) {
10875
11248
  const api = createReactionBar({ reactions, onToggle, onAdd });
10876
- return React40.createElement(
11249
+ return React41.createElement(
10877
11250
  "div",
10878
11251
  { ...api.ariaProps, className: cn(reactionBarStyles, className) },
10879
11252
  api.reactions.map(
10880
- (reaction, i) => React40.createElement(
11253
+ (reaction, i) => React41.createElement(
10881
11254
  "button",
10882
11255
  {
10883
11256
  key: `${reaction.emoji}-${i}`,
@@ -10888,11 +11261,11 @@ function ReactionBar({
10888
11261
  onClick: () => api.toggle(reaction.emoji),
10889
11262
  ...api.getReactionAriaProps(reaction)
10890
11263
  },
10891
- React40.createElement("span", { className: reactionEmojiStyles }, reaction.emoji),
10892
- React40.createElement("span", { className: reactionCountStyles }, reaction.count)
11264
+ React41.createElement("span", { className: reactionEmojiStyles }, reaction.emoji),
11265
+ React41.createElement("span", { className: reactionCountStyles }, reaction.count)
10893
11266
  )
10894
11267
  ),
10895
- showAddButton && React40.createElement(
11268
+ showAddButton && React41.createElement(
10896
11269
  "button",
10897
11270
  {
10898
11271
  type: "button",
@@ -11041,7 +11414,7 @@ var selectItemVariants = cva({
11041
11414
  selected: "false"
11042
11415
  }
11043
11416
  });
11044
- var SelectContext = React40.createContext({
11417
+ var SelectContext = React41.createContext({
11045
11418
  value: void 0,
11046
11419
  onValueChange: () => {
11047
11420
  },
@@ -11061,7 +11434,7 @@ function Select({
11061
11434
  children,
11062
11435
  placeholder = "Select an option"
11063
11436
  }) {
11064
- const [open, setOpen] = React40.useState(false);
11437
+ const [open, setOpen] = React41.useState(false);
11065
11438
  const api = createSelect({ value, disabled, open, placeholder });
11066
11439
  return /* @__PURE__ */ jsx(
11067
11440
  SelectContext.Provider,
@@ -11084,9 +11457,9 @@ function Select({
11084
11457
  }
11085
11458
  );
11086
11459
  }
11087
- var SelectTrigger = React40.forwardRef(
11460
+ var SelectTrigger = React41.forwardRef(
11088
11461
  ({ className, children, size = "default", ...props }, ref) => {
11089
- const { open, setOpen, disabled, triggerId, contentId } = React40.useContext(SelectContext);
11462
+ const { open, setOpen, disabled, triggerId, contentId } = React41.useContext(SelectContext);
11090
11463
  const api = createSelect({ disabled, open });
11091
11464
  const handleClick = () => {
11092
11465
  if (!disabled) {
@@ -11143,9 +11516,9 @@ var SelectTrigger = React40.forwardRef(
11143
11516
  }
11144
11517
  );
11145
11518
  SelectTrigger.displayName = "SelectTrigger";
11146
- var SelectContent = React40.forwardRef(
11519
+ var SelectContent = React41.forwardRef(
11147
11520
  ({ className, children, ...props }, ref) => {
11148
- const { open, contentId, triggerId } = React40.useContext(SelectContext);
11521
+ const { open, contentId, triggerId } = React41.useContext(SelectContext);
11149
11522
  if (!open) return null;
11150
11523
  return /* @__PURE__ */ jsx(
11151
11524
  "div",
@@ -11163,9 +11536,9 @@ var SelectContent = React40.forwardRef(
11163
11536
  }
11164
11537
  );
11165
11538
  SelectContent.displayName = "SelectContent";
11166
- var SelectItem = React40.forwardRef(
11539
+ var SelectItem = React41.forwardRef(
11167
11540
  ({ className, children, value: itemValue, disabled: itemDisabled = false, ...props }, ref) => {
11168
- const { value, onValueChange, setOpen } = React40.useContext(SelectContext);
11541
+ const { value, onValueChange, setOpen } = React41.useContext(SelectContext);
11169
11542
  const isSelected = value === itemValue;
11170
11543
  const handleClick = () => {
11171
11544
  if (!itemDisabled) {
@@ -11297,11 +11670,11 @@ function StatusIndicator({
11297
11670
  }) {
11298
11671
  const api = createStatusIndicator({ type, label, pulse });
11299
11672
  const dotClassName = api.pulse ? statusPulseVariants({ type }) : statusDotVariants({ type });
11300
- return React40.createElement(
11673
+ return React41.createElement(
11301
11674
  "span",
11302
11675
  { ...api.ariaProps, className: cn(statusContainerStyles, className) },
11303
- React40.createElement("span", { className: dotClassName }),
11304
- showLabel && React40.createElement("span", { className: statusLabelStyles }, api.label)
11676
+ React41.createElement("span", { className: dotClassName }),
11677
+ showLabel && React41.createElement("span", { className: statusLabelStyles }, api.label)
11305
11678
  );
11306
11679
  }
11307
11680
  StatusIndicator.displayName = "StatusIndicator";
@@ -11388,7 +11761,7 @@ var switchThumbVariants = cva({
11388
11761
  { checked: "true", size: "lg", class: "translate-x-5" }
11389
11762
  ]
11390
11763
  });
11391
- var Switch = React40.forwardRef(
11764
+ var Switch = React41.forwardRef(
11392
11765
  ({ checked = false, onCheckedChange, disabled = false, size = "default", className, ...props }, ref) => {
11393
11766
  const api = createSwitch({ checked, disabled });
11394
11767
  const handleClick = () => {
@@ -11527,41 +11900,41 @@ function MessageComponent({
11527
11900
  message,
11528
11901
  api
11529
11902
  }) {
11530
- return React40.createElement(
11903
+ return React41.createElement(
11531
11904
  "div",
11532
11905
  { className: threadMessageStyles, ...api.getMessageAriaProps(message) },
11533
11906
  // Avatar
11534
- React40.createElement(
11907
+ React41.createElement(
11535
11908
  "div",
11536
11909
  { className: threadAvatarStyles },
11537
- message.author.avatarUrl ? React40.createElement("img", {
11910
+ message.author.avatarUrl ? React41.createElement("img", {
11538
11911
  src: message.author.avatarUrl,
11539
11912
  alt: message.author.name,
11540
11913
  className: "h-full w-full object-cover"
11541
11914
  }) : message.author.name.charAt(0).toUpperCase()
11542
11915
  ),
11543
11916
  // Content
11544
- React40.createElement(
11917
+ React41.createElement(
11545
11918
  "div",
11546
11919
  { className: threadContentStyles },
11547
- React40.createElement(
11920
+ React41.createElement(
11548
11921
  "div",
11549
11922
  { className: "flex items-baseline" },
11550
- React40.createElement("span", { className: threadAuthorStyles }, message.author.name),
11551
- React40.createElement(
11923
+ React41.createElement("span", { className: threadAuthorStyles }, message.author.name),
11924
+ React41.createElement(
11552
11925
  "span",
11553
11926
  { className: threadTimestampStyles },
11554
11927
  api.formatTimestamp(message.timestamp)
11555
11928
  ),
11556
- message.edited && React40.createElement("span", { className: threadEditedStyles }, "(edited)")
11929
+ message.edited && React41.createElement("span", { className: threadEditedStyles }, "(edited)")
11557
11930
  ),
11558
- React40.createElement("div", { className: threadBodyStyles }, message.content),
11931
+ React41.createElement("div", { className: threadBodyStyles }, message.content),
11559
11932
  // Reactions
11560
- message.reactions && message.reactions.length > 0 && React40.createElement(
11933
+ message.reactions && message.reactions.length > 0 && React41.createElement(
11561
11934
  "div",
11562
11935
  { className: threadReactionsStyles },
11563
11936
  message.reactions.map(
11564
- (reaction, i) => React40.createElement(
11937
+ (reaction, i) => React41.createElement(
11565
11938
  "button",
11566
11939
  {
11567
11940
  key: `${reaction.emoji}-${i}`,
@@ -11577,25 +11950,25 @@ function MessageComponent({
11577
11950
  )
11578
11951
  ),
11579
11952
  // Reply indicator
11580
- message.replies && message.replies.length > 0 && React40.createElement(
11953
+ message.replies && message.replies.length > 0 && React41.createElement(
11581
11954
  "div",
11582
11955
  { className: threadReplyIndicatorStyles },
11583
11956
  `${message.replies.length} ${message.replies.length === 1 ? "reply" : "replies"}`
11584
11957
  ),
11585
11958
  // Attachments
11586
11959
  message.attachments && message.attachments.map(
11587
- (attachment) => React40.createElement(
11960
+ (attachment) => React41.createElement(
11588
11961
  "div",
11589
11962
  { key: attachment.id, className: threadAttachmentStyles },
11590
- React40.createElement("span", null, "\u{1F4CE}"),
11591
- React40.createElement("span", { className: "truncate" }, attachment.name)
11963
+ React41.createElement("span", null, "\u{1F4CE}"),
11964
+ React41.createElement("span", { className: "truncate" }, attachment.name)
11592
11965
  )
11593
11966
  ),
11594
11967
  // Actions (reply button)
11595
- React40.createElement(
11968
+ React41.createElement(
11596
11969
  "div",
11597
11970
  { className: threadActionsStyles },
11598
- React40.createElement(
11971
+ React41.createElement(
11599
11972
  "button",
11600
11973
  {
11601
11974
  type: "button",
@@ -11617,11 +11990,11 @@ function ThreadView({
11617
11990
  className
11618
11991
  }) {
11619
11992
  const api = createThreadView({ messages, onReply, onReact, currentUserId });
11620
- return React40.createElement(
11993
+ return React41.createElement(
11621
11994
  "div",
11622
11995
  { ...api.ariaProps, className: cn(threadContainerStyles, className) },
11623
11996
  messages.map(
11624
- (message) => React40.createElement(MessageComponent, {
11997
+ (message) => React41.createElement(MessageComponent, {
11625
11998
  key: message.id,
11626
11999
  message,
11627
12000
  api
@@ -11631,6 +12004,302 @@ function ThreadView({
11631
12004
  }
11632
12005
  ThreadView.displayName = "ThreadView";
11633
12006
 
11634
- export { AnimatedText, AppShell, AuthGuard, AuthProvider, Avatar, AvatarFallback, AvatarGroup, AvatarImage, Badge, BadgeDisplay, BottomNav, Breadcrumbs, Button, CATEGORY_LABELS, Calendar, CalendarHeader, Card2 as Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, CodeEditor, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, ContentProtection, DataTable, DatePicker, DeviceFrame, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogTitle, DialogTrigger, DiffViewer, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, EMOJI_CATEGORIES, EMOJI_DATA, EmojiPicker, FeedbackButton, FeedbackDialog, FileUpload, Footer, InlineEditor, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupText, InstallPrompt, KeyboardShortcut, LanguageSelector, MarkdownRenderer, MobileNav, MobileNavContent, MobileNavLink, MobileNavTrigger, Navbar, OtpInput, STATUS_COLORS as PRESENCE_STATUS_COLORS, STATUS_LABELS as PRESENCE_STATUS_LABELS, Popover, PopoverClose, PopoverContent, PopoverTrigger, PresenceIndicator, ProgressBar, RadioGroup, RadioItem, ReactionBar, ResizableDivider, ResizableLayout, ResizablePane, STATUS_COLORS2 as STATUS_COLORS, STATUS_LABELS2 as STATUS_LABELS, SearchBar, SearchResultItem, SearchResults, Select, SelectContent, SelectItem, SelectTrigger, ShortcutBadge, Sidebar, Skeleton, SkeletonText, SlideViewer, StatsGrid, StatusIndicator, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ThemeProvider, ThemeScript, ThemeToggle, ThreadView, Toast, ToastProvider, Toaster, Tooltip, TooltipContent, TooltipTrigger, TypewriterText, VersionSelector, VideoPlayer, animatedTextVariants, avatarFallbackVariants, avatarImageVariants, avatarTokens, avatarVariants, badgeGridVariants, badgeItemVariants, badgeVariants, bottomNavTabVariants, bottomNavVariants, breadcrumbItemVariants, breadcrumbSeparatorStyles, breadcrumbsVariants, buttonTokens, buttonVariants, calendarVariants, canAccessAdmin, canAccessReviewer, cardContentVariants, cardDescriptionVariants, cardFooterVariants, cardHeaderVariants, cardTitleVariants, cardTokens, cardVariants, cellVariants, checkIconPath, checkboxTokens, checkboxVariants, codeEditorTokens, codeEditorVariants, collapsibleContentVariants, commandGroupVariants, commandInputVariants, commandItemVariants, commandVariants, contentProtectionVariants, controlsVariants, createDiffViewer, dayVariants, deviceFrameVariants, dialogContentVariants, diffViewerTokens, diffViewerVariants, editorVariants, emojiPickerContainerStyles, emojiPickerEmojiButtonStyles, emojiPickerGridStyles, feedbackDialogVariants, fileUploadDropZoneVariants, fileUploadFileItemStyles, fileUploadFileListStyles, footerVariants, formatFileSize, formatRelativeTime, formatShortcut, formatTimestamp, getAssignableRoles, getDefaultPortal, getInitials, hasAllRoles, hasAnyRole, hasRole, headerVariants, indeterminateIconPath, inputGroupAddonVariants, inputGroupButtonVariants, inputGroupTokens, inputGroupVariants, inputVariants, installPromptVariants, latestBadgeVariants, markdownRendererTokens, menuContentVariants, menuItemVariants, mobileNavContentVariants, mobileNavLinkVariants, mobileNavTokens, mobileNavTriggerVariants, mobileNavVariants, navLinkVariants, navbarVariants, optionVariants, otpInputContainerVariants, otpInputSlotVariants, otpInputTokens, overlayStyles, overlayVariants, playerVariants, popoverContentVariants, previewVariants, progressBarVariants, proseVariants, radioCircleVariants, radioGroupVariants, radioItemVariants, reactionAddButtonStyles, reactionBarStyles, reactionCountStyles, reactionEmojiStyles, reactionPillVariants, resizableDividerVariants, resizableLayoutTokens, resizableLayoutVariants, resizablePaneVariants, rowVariants, searchBarVariants, searchResultVariants, selectContentVariants, selectItemVariants, selectTokens, selectTriggerVariants, selectorVariants, shortcutBadgeStyles, shortcutKeyStyles, shortcutSeparatorStyles, skeletonVariants, slideTypeBadgeVariants, progressBarVariants2 as slideViewerProgressBarVariants, slideViewerTokens, slideViewerVariants, statCardVariants, statsGridVariants, statusBarVariants, statusContainerStyles, statusDotVariants, statusLabelStyles, statusPulseVariants, switchThumbVariants, switchTokens, switchVariants, tabBarVariants, tabVariants, tableVariants, tabsListVariants, tabsTriggerVariants, textareaVariants, threadAuthorStyles, threadAvatarStyles, threadBodyStyles, threadContainerStyles, threadContentStyles, threadMessageStyles, threadReactionsStyles, threadTimestampStyles, toastVariants, toolbarVariants, tooltipContentVariants, typewriterVariants, useAuth, useTheme, useToast, optionVariants2 as versionSelectorOptionVariants, versionSelectorVariants, watermarkVariants };
12007
+ // ../table-of-contents/dist/index.js
12008
+ function parseHeadings(container, selectors = "h2, h3, h4") {
12009
+ const headings = Array.from(container.querySelectorAll(selectors));
12010
+ return headings.map((h) => ({
12011
+ id: h.id || h.textContent?.toLowerCase().replace(/\s+/g, "-") || "",
12012
+ text: h.textContent || "",
12013
+ level: parseInt(h.tagName.charAt(1), 10)
12014
+ })).filter((h) => h.id !== "");
12015
+ }
12016
+ function observeHeadings(headingIds, callback, options) {
12017
+ const observer = new IntersectionObserver((entries) => {
12018
+ for (const entry of entries) {
12019
+ if (entry.isIntersecting) {
12020
+ callback(entry.target.id);
12021
+ break;
12022
+ }
12023
+ }
12024
+ }, { rootMargin: "0px 0px -80% 0px", ...options });
12025
+ headingIds.forEach((id) => {
12026
+ const el = document.getElementById(id);
12027
+ if (el) observer.observe(el);
12028
+ });
12029
+ return () => observer.disconnect();
12030
+ }
12031
+ var TableOfContents = React41.forwardRef(
12032
+ ({ className, containerRef, selectors = "h2, h3, h4", onActiveIdChange, ...props }, ref) => {
12033
+ const [headings, setHeadings] = React41.useState([]);
12034
+ const [activeId, setActiveId] = React41.useState("");
12035
+ React41.useEffect(() => {
12036
+ const container = containerRef?.current || document.body;
12037
+ if (!container) return;
12038
+ const parsedHeadings = parseHeadings(container, selectors);
12039
+ setHeadings(parsedHeadings);
12040
+ if (parsedHeadings.length === 0) return;
12041
+ const disconnect = observeHeadings(parsedHeadings.map((h) => h.id), (id) => {
12042
+ setActiveId(id);
12043
+ onActiveIdChange?.(id);
12044
+ });
12045
+ return () => disconnect();
12046
+ }, [containerRef, selectors, onActiveIdChange]);
12047
+ if (headings.length === 0) {
12048
+ return null;
12049
+ }
12050
+ return /* @__PURE__ */ jsx("nav", { ref, className: cn("space-y-1", className), ...props, children: /* @__PURE__ */ jsx("ul", { className: "m-0 list-none p-0", children: headings.map((heading) => /* @__PURE__ */ jsx(
12051
+ "li",
12052
+ {
12053
+ className: cn(
12054
+ "py-1",
12055
+ heading.level === 3 ? "pl-4" : heading.level === 4 ? "pl-8" : ""
12056
+ ),
12057
+ children: /* @__PURE__ */ jsx(
12058
+ "a",
12059
+ {
12060
+ href: `#${heading.id}`,
12061
+ className: cn(
12062
+ "block text-sm transition-colors hover:text-foreground",
12063
+ activeId === heading.id ? "font-medium text-foreground" : "text-muted-foreground"
12064
+ ),
12065
+ children: heading.text
12066
+ }
12067
+ )
12068
+ },
12069
+ heading.id
12070
+ )) }) });
12071
+ }
12072
+ );
12073
+ TableOfContents.displayName = "TableOfContents";
12074
+ var CarouselContext = React41.createContext(null);
12075
+ var Carousel = React41.forwardRef(
12076
+ ({ className, type = "single", collapsible, value: controlledValue, defaultValue, onValueChange, ...props }, ref) => {
12077
+ const [uncontrolledValue, setUncontrolledValue] = React41.useState(
12078
+ defaultValue ?? (type === "multiple" ? [] : "")
12079
+ );
12080
+ const value = controlledValue !== void 0 ? controlledValue : uncontrolledValue;
12081
+ const handleValueChange = React41.useCallback(
12082
+ (itemValue) => {
12083
+ if (type === "single") {
12084
+ const newValue = value === itemValue && collapsible ? "" : itemValue;
12085
+ setUncontrolledValue(newValue);
12086
+ onValueChange?.(newValue);
12087
+ } else {
12088
+ const arrValue = Array.isArray(value) ? value : [];
12089
+ const newValue = arrValue.includes(itemValue) ? arrValue.filter((v) => v !== itemValue) : [...arrValue, itemValue];
12090
+ setUncontrolledValue(newValue);
12091
+ onValueChange?.(newValue);
12092
+ }
12093
+ },
12094
+ [type, collapsible, value, onValueChange]
12095
+ );
12096
+ return /* @__PURE__ */ jsx(CarouselContext.Provider, { value: { type, value, onValueChange: handleValueChange }, children: /* @__PURE__ */ jsx("div", { ref, className: cn("flex flex-col w-full", className), ...props }) });
12097
+ }
12098
+ );
12099
+ Carousel.displayName = "Carousel";
12100
+ var CarouselItemContext = React41.createContext(null);
12101
+ var CarouselItem = React41.forwardRef(
12102
+ ({ className, value, ...props }, ref) => {
12103
+ const context = React41.useContext(CarouselContext);
12104
+ if (!context) throw new Error("CarouselItem must be within Carousel");
12105
+ const isOpen = context.type === "single" ? context.value === value : Array.isArray(context.value) && context.value.includes(value);
12106
+ return /* @__PURE__ */ jsx(CarouselItemContext.Provider, { value: { value, isOpen }, children: /* @__PURE__ */ jsx("div", { ref, className: cn("border-b border-border", className), "data-state": isOpen ? "open" : "closed", ...props }) });
12107
+ }
12108
+ );
12109
+ CarouselItem.displayName = "CarouselItem";
12110
+ var CarouselTrigger = React41.forwardRef(
12111
+ ({ className, children, ...props }, ref) => {
12112
+ const carouselContext = React41.useContext(CarouselContext);
12113
+ const itemContext = React41.useContext(CarouselItemContext);
12114
+ if (!carouselContext || !itemContext) throw new Error("CarouselTrigger missing context");
12115
+ return /* @__PURE__ */ jsx("h3", { className: "flex m-0 p-0", children: /* @__PURE__ */ jsxs(
12116
+ "button",
12117
+ {
12118
+ ref,
12119
+ type: "button",
12120
+ "aria-expanded": itemContext.isOpen,
12121
+ className: cn(
12122
+ "flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180",
12123
+ className
12124
+ ),
12125
+ "data-state": itemContext.isOpen ? "open" : "closed",
12126
+ onClick: () => carouselContext.onValueChange(itemContext.value),
12127
+ ...props,
12128
+ children: [
12129
+ children,
12130
+ /* @__PURE__ */ jsx(
12131
+ "svg",
12132
+ {
12133
+ xmlns: "http://www.w3.org/2000/svg",
12134
+ width: "24",
12135
+ height: "24",
12136
+ viewBox: "0 0 24 24",
12137
+ fill: "none",
12138
+ stroke: "currentColor",
12139
+ strokeWidth: "2",
12140
+ strokeLinecap: "round",
12141
+ strokeLinejoin: "round",
12142
+ className: "h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200",
12143
+ children: /* @__PURE__ */ jsx("path", { d: "m6 9 6 6 6-6" })
12144
+ }
12145
+ )
12146
+ ]
12147
+ }
12148
+ ) });
12149
+ }
12150
+ );
12151
+ CarouselTrigger.displayName = "CarouselTrigger";
12152
+ var CarouselContent = React41.forwardRef(
12153
+ ({ className, children, ...props }, ref) => {
12154
+ const itemContext = React41.useContext(CarouselItemContext);
12155
+ if (!itemContext) throw new Error("CarouselContent missing context");
12156
+ return /* @__PURE__ */ jsx(
12157
+ "div",
12158
+ {
12159
+ ref,
12160
+ className: cn(
12161
+ "overflow-hidden text-sm",
12162
+ className
12163
+ ),
12164
+ "data-state": itemContext.isOpen ? "open" : "closed",
12165
+ hidden: !itemContext.isOpen,
12166
+ ...props,
12167
+ children: /* @__PURE__ */ jsx("div", { className: "pb-4 pt-0 text-muted-foreground leading-relaxed", children })
12168
+ }
12169
+ );
12170
+ }
12171
+ );
12172
+ CarouselContent.displayName = "CarouselContent";
12173
+ var Pagination = React41.forwardRef(
12174
+ ({ className, ...props }, ref) => {
12175
+ return /* @__PURE__ */ jsx("div", { ref, className: cn("", className), ...props });
12176
+ }
12177
+ );
12178
+ Pagination.displayName = "Pagination";
12179
+ var Callout = () => /* @__PURE__ */ jsx("div", {});
12180
+ var Steps = () => /* @__PURE__ */ jsx("div", {});
12181
+
12182
+ // src/index.ts
12183
+ __reExport(index_exports, __toESM(require_dist()));
12184
+ __reExport(index_exports, __toESM(require_dist2()));
12185
+
12186
+ // ../react-skip-to-content/dist/index.js
12187
+ var SkipToContent = () => {
12188
+ return null;
12189
+ };
12190
+
12191
+ // ../react-code-block/dist/index.js
12192
+ var CodeBlock = () => {
12193
+ return null;
12194
+ };
12195
+
12196
+ // ../link-card/dist/index.js
12197
+ function createLinkCard(props = {}) {
12198
+ return {
12199
+ dataAttributes: { "data-slot": "link-card" }
12200
+ };
12201
+ }
12202
+ var LinkCard = React41.forwardRef(
12203
+ ({ className, ...props }, ref) => {
12204
+ const api = createLinkCard(props);
12205
+ return /* @__PURE__ */ jsx(
12206
+ "a",
12207
+ {
12208
+ ref,
12209
+ className: cn(className),
12210
+ ...api.dataAttributes,
12211
+ ...props
12212
+ }
12213
+ );
12214
+ }
12215
+ );
12216
+ LinkCard.displayName = "LinkCard";
12217
+
12218
+ // ../card-grid/dist/index.js
12219
+ function createCardGrid(props = {}) {
12220
+ return {
12221
+ dataAttributes: { "data-slot": "card-grid" }
12222
+ };
12223
+ }
12224
+ var CardGrid = React41.forwardRef(
12225
+ ({ className, columns = 3, ...props }, ref) => {
12226
+ const api = createCardGrid({ });
12227
+ return /* @__PURE__ */ jsx(
12228
+ "div",
12229
+ {
12230
+ ref,
12231
+ className: cn(className),
12232
+ ...api.dataAttributes,
12233
+ ...props
12234
+ }
12235
+ );
12236
+ }
12237
+ );
12238
+ CardGrid.displayName = "CardGrid";
12239
+
12240
+ // ../payment/dist/index.js
12241
+ function createPayment(props = {}) {
12242
+ return {
12243
+ props: {
12244
+ ...props,
12245
+ "data-slot": "payment"
12246
+ }
12247
+ };
12248
+ }
12249
+ var Payment = React41.forwardRef(
12250
+ ({ className, disabled, ...props }, ref) => {
12251
+ const api = createPayment({ disabled });
12252
+ return /* @__PURE__ */ jsx(
12253
+ "div",
12254
+ {
12255
+ ref,
12256
+ className: cn(
12257
+ "w-full max-w-md mx-auto p-6 border border-border rounded-xl bg-card text-card-foreground shadow-sm",
12258
+ disabled && "opacity-50 pointer-events-none",
12259
+ className
12260
+ ),
12261
+ ...api.props,
12262
+ ...props
12263
+ }
12264
+ );
12265
+ }
12266
+ );
12267
+ Payment.displayName = "Payment";
12268
+ var PaymentHeader = React41.forwardRef(
12269
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("mb-6 flex flex-col gap-1.5", className), ...props })
12270
+ );
12271
+ PaymentHeader.displayName = "PaymentHeader";
12272
+ var PaymentTitle = React41.forwardRef(
12273
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx("h3", { ref, className: cn("text-xl font-semibold leading-none tracking-tight", className), ...props })
12274
+ );
12275
+ PaymentTitle.displayName = "PaymentTitle";
12276
+ var PaymentDescription = React41.forwardRef(
12277
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx("p", { ref, className: cn("text-sm text-muted-foreground", className), ...props })
12278
+ );
12279
+ PaymentDescription.displayName = "PaymentDescription";
12280
+ var PaymentContent = React41.forwardRef(
12281
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("flex flex-col gap-4", className), ...props })
12282
+ );
12283
+ PaymentContent.displayName = "PaymentContent";
12284
+ var PaymentFooter = React41.forwardRef(
12285
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("mt-6 flex flex-col gap-3", className), ...props })
12286
+ );
12287
+ PaymentFooter.displayName = "PaymentFooter";
12288
+ var PaymentButton = React41.forwardRef(
12289
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
12290
+ "button",
12291
+ {
12292
+ ref,
12293
+ className: cn(
12294
+ "inline-flex w-full items-center justify-center whitespace-nowrap rounded-md bg-primary px-4 py-2.5 text-sm font-medium text-primary-foreground shadow transition-colors hover:bg-primary/90 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",
12295
+ className
12296
+ ),
12297
+ ...props
12298
+ }
12299
+ )
12300
+ );
12301
+ PaymentButton.displayName = "PaymentButton";
12302
+
12303
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AnimatedText, AppShell, AuthGuard, AuthProvider, Avatar, AvatarFallback, AvatarGroup, AvatarImage, Badge, BadgeDisplay, BottomNav, Breadcrumbs, Button, CATEGORY_LABELS, Calendar, CalendarHeader, Callout, Card2 as Card, CardContent, CardDescription, CardFooter, CardGrid, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselTrigger, Checkbox, CodeBlock, CodeEditor, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, ContentProtection, DataTable, DatePicker, DeviceFrame, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogTitle, DialogTrigger, DiffViewer, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, EMOJI_CATEGORIES, EMOJI_DATA, EmojiPicker, FeedbackButton, FeedbackDialog, FileUpload, Footer, InlineEditor, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupText, InstallPrompt, KeyboardShortcut, LanguageSelector, LinkCard, MarkdownRenderer, MobileNav, MobileNavContent, MobileNavLink, MobileNavTrigger, Navbar, OtpInput, STATUS_COLORS as PRESENCE_STATUS_COLORS, STATUS_LABELS as PRESENCE_STATUS_LABELS, Pagination, Payment, Popover, PopoverClose, PopoverContent, PopoverTrigger, PresenceIndicator, ProgressBar, RadioGroup, RadioItem, ReactionBar, ResizableDivider, ResizableLayout, ResizablePane, STATUS_COLORS2 as STATUS_COLORS, STATUS_LABELS2 as STATUS_LABELS, SearchBar, SearchResultItem, SearchResults, Select, SelectContent, SelectItem, SelectTrigger, ShortcutBadge, Sidebar, Skeleton, SkeletonText, SkipToContent, SlideViewer, StatsGrid, StatusIndicator, Steps, Switch, TableOfContents, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ThemeProvider, ThemeScript, ThemeToggle, ThreadView, Toast, ToastProvider, Toaster, Tooltip, TooltipContent, TooltipTrigger, TypewriterText, VersionSelector, VideoPlayer, animatedTextVariants, avatarFallbackVariants, avatarImageVariants, avatarTokens, avatarVariants, badgeGridVariants, badgeItemVariants, badgeVariants, bottomNavTabVariants, bottomNavVariants, breadcrumbItemVariants, breadcrumbSeparatorStyles, breadcrumbsVariants, buttonTokens, buttonVariants, calendarVariants, canAccessAdmin, canAccessReviewer, cardContentVariants, cardDescriptionVariants, cardFooterVariants, cardHeaderVariants, cardTitleVariants, cardTokens, cardVariants, cellVariants, checkIconPath, checkboxTokens, checkboxVariants, codeEditorTokens, codeEditorVariants, collapsibleContentVariants, commandGroupVariants, commandInputVariants, commandItemVariants, commandVariants, contentProtectionVariants, controlsVariants, createDiffViewer, dayVariants, deviceFrameVariants, dialogContentVariants, diffViewerTokens, diffViewerVariants, editorVariants, emojiPickerContainerStyles, emojiPickerEmojiButtonStyles, emojiPickerGridStyles, feedbackDialogVariants, fileUploadDropZoneVariants, fileUploadFileItemStyles, fileUploadFileListStyles, footerVariants, formatFileSize, formatRelativeTime, formatShortcut, formatTimestamp, getAssignableRoles, getDefaultPortal, getInitials, hasAllRoles, hasAnyRole, hasRole, headerVariants, indeterminateIconPath, inputGroupAddonVariants, inputGroupButtonVariants, inputGroupTokens, inputGroupVariants, inputVariants, installPromptVariants, latestBadgeVariants, markdownRendererTokens, menuContentVariants, menuItemVariants, mobileNavContentVariants, mobileNavLinkVariants, mobileNavTokens, mobileNavTriggerVariants, mobileNavVariants, navLinkVariants, navbarVariants, optionVariants, otpInputContainerVariants, otpInputSlotVariants, otpInputTokens, overlayStyles, overlayVariants, playerVariants, popoverContentVariants, previewVariants, progressBarVariants, proseVariants, radioCircleVariants, radioGroupVariants, radioItemVariants, reactionAddButtonStyles, reactionBarStyles, reactionCountStyles, reactionEmojiStyles, reactionPillVariants, resizableDividerVariants, resizableLayoutTokens, resizableLayoutVariants, resizablePaneVariants, rowVariants, searchBarVariants, searchResultVariants, selectContentVariants, selectItemVariants, selectTokens, selectTriggerVariants, selectorVariants, shortcutBadgeStyles, shortcutKeyStyles, shortcutSeparatorStyles, skeletonVariants, slideTypeBadgeVariants, progressBarVariants2 as slideViewerProgressBarVariants, slideViewerTokens, slideViewerVariants, statCardVariants, statsGridVariants, statusBarVariants, statusContainerStyles, statusDotVariants, statusLabelStyles, statusPulseVariants, switchThumbVariants, switchTokens, switchVariants, tabBarVariants, tabVariants, tableVariants, tabsListVariants, tabsTriggerVariants, textareaVariants, threadAuthorStyles, threadAvatarStyles, threadBodyStyles, threadContainerStyles, threadContentStyles, threadMessageStyles, threadReactionsStyles, threadTimestampStyles, toastVariants, toolbarVariants, tooltipContentVariants, typewriterVariants, useAuth, useTheme, useToast, optionVariants2 as versionSelectorOptionVariants, versionSelectorVariants, watermarkVariants };
11635
12304
  //# sourceMappingURL=index.js.map
11636
12305
  //# sourceMappingURL=index.js.map