@refraction-ui/react 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,9 +1,368 @@
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
+ Popover: () => Popover,
161
+ PopoverClose: () => PopoverClose,
162
+ PopoverContent: () => PopoverContent,
163
+ PopoverTrigger: () => PopoverTrigger,
164
+ PresenceIndicator: () => PresenceIndicator,
165
+ ProgressBar: () => ProgressBar,
166
+ RadioGroup: () => RadioGroup,
167
+ RadioItem: () => RadioItem,
168
+ ReactionBar: () => ReactionBar,
169
+ ResizableDivider: () => ResizableDivider,
170
+ ResizableLayout: () => ResizableLayout,
171
+ ResizablePane: () => ResizablePane,
172
+ STATUS_COLORS: () => STATUS_COLORS2,
173
+ STATUS_LABELS: () => STATUS_LABELS2,
174
+ SearchBar: () => SearchBar,
175
+ SearchResultItem: () => SearchResultItem,
176
+ SearchResults: () => SearchResults,
177
+ Select: () => Select,
178
+ SelectContent: () => SelectContent,
179
+ SelectItem: () => SelectItem,
180
+ SelectTrigger: () => SelectTrigger,
181
+ ShortcutBadge: () => ShortcutBadge,
182
+ Sidebar: () => Sidebar,
183
+ Skeleton: () => Skeleton,
184
+ SkeletonText: () => SkeletonText,
185
+ SkipToContent: () => SkipToContent,
186
+ SlideViewer: () => SlideViewer,
187
+ StatsGrid: () => StatsGrid,
188
+ StatusIndicator: () => StatusIndicator,
189
+ Steps: () => Steps,
190
+ Switch: () => Switch,
191
+ TableOfContents: () => TableOfContents,
192
+ Tabs: () => Tabs,
193
+ TabsContent: () => TabsContent,
194
+ TabsList: () => TabsList,
195
+ TabsTrigger: () => TabsTrigger,
196
+ Textarea: () => Textarea,
197
+ ThemeProvider: () => ThemeProvider,
198
+ ThemeScript: () => ThemeScript,
199
+ ThemeToggle: () => ThemeToggle,
200
+ ThreadView: () => ThreadView,
201
+ Toast: () => Toast,
202
+ ToastProvider: () => ToastProvider,
203
+ Toaster: () => Toaster,
204
+ Tooltip: () => Tooltip,
205
+ TooltipContent: () => TooltipContent,
206
+ TooltipTrigger: () => TooltipTrigger,
207
+ TypewriterText: () => TypewriterText,
208
+ VersionSelector: () => VersionSelector,
209
+ VideoPlayer: () => VideoPlayer,
210
+ animatedTextVariants: () => animatedTextVariants,
211
+ avatarFallbackVariants: () => avatarFallbackVariants,
212
+ avatarImageVariants: () => avatarImageVariants,
213
+ avatarTokens: () => avatarTokens,
214
+ avatarVariants: () => avatarVariants,
215
+ badgeGridVariants: () => badgeGridVariants,
216
+ badgeItemVariants: () => badgeItemVariants,
217
+ badgeVariants: () => badgeVariants,
218
+ bottomNavTabVariants: () => bottomNavTabVariants,
219
+ bottomNavVariants: () => bottomNavVariants,
220
+ breadcrumbItemVariants: () => breadcrumbItemVariants,
221
+ breadcrumbSeparatorStyles: () => breadcrumbSeparatorStyles,
222
+ breadcrumbsVariants: () => breadcrumbsVariants,
223
+ buttonTokens: () => buttonTokens,
224
+ buttonVariants: () => buttonVariants,
225
+ calendarVariants: () => calendarVariants,
226
+ canAccessAdmin: () => canAccessAdmin,
227
+ canAccessReviewer: () => canAccessReviewer,
228
+ cardContentVariants: () => cardContentVariants,
229
+ cardDescriptionVariants: () => cardDescriptionVariants,
230
+ cardFooterVariants: () => cardFooterVariants,
231
+ cardHeaderVariants: () => cardHeaderVariants,
232
+ cardTitleVariants: () => cardTitleVariants,
233
+ cardTokens: () => cardTokens,
234
+ cardVariants: () => cardVariants,
235
+ cellVariants: () => cellVariants,
236
+ checkIconPath: () => checkIconPath,
237
+ checkboxTokens: () => checkboxTokens,
238
+ checkboxVariants: () => checkboxVariants,
239
+ codeEditorTokens: () => codeEditorTokens,
240
+ codeEditorVariants: () => codeEditorVariants,
241
+ collapsibleContentVariants: () => collapsibleContentVariants,
242
+ commandGroupVariants: () => commandGroupVariants,
243
+ commandInputVariants: () => commandInputVariants,
244
+ commandItemVariants: () => commandItemVariants,
245
+ commandVariants: () => commandVariants,
246
+ contentProtectionVariants: () => contentProtectionVariants,
247
+ controlsVariants: () => controlsVariants,
248
+ createDiffViewer: () => createDiffViewer,
249
+ dayVariants: () => dayVariants,
250
+ deviceFrameVariants: () => deviceFrameVariants,
251
+ dialogContentVariants: () => dialogContentVariants,
252
+ diffViewerTokens: () => diffViewerTokens,
253
+ diffViewerVariants: () => diffViewerVariants,
254
+ editorVariants: () => editorVariants,
255
+ emojiPickerContainerStyles: () => emojiPickerContainerStyles,
256
+ emojiPickerEmojiButtonStyles: () => emojiPickerEmojiButtonStyles,
257
+ emojiPickerGridStyles: () => emojiPickerGridStyles,
258
+ feedbackDialogVariants: () => feedbackDialogVariants,
259
+ fileUploadDropZoneVariants: () => fileUploadDropZoneVariants,
260
+ fileUploadFileItemStyles: () => fileUploadFileItemStyles,
261
+ fileUploadFileListStyles: () => fileUploadFileListStyles,
262
+ footerVariants: () => footerVariants,
263
+ formatFileSize: () => formatFileSize,
264
+ formatRelativeTime: () => formatRelativeTime,
265
+ formatShortcut: () => formatShortcut,
266
+ formatTimestamp: () => formatTimestamp,
267
+ getAssignableRoles: () => getAssignableRoles,
268
+ getDefaultPortal: () => getDefaultPortal,
269
+ getInitials: () => getInitials,
270
+ hasAllRoles: () => hasAllRoles,
271
+ hasAnyRole: () => hasAnyRole,
272
+ hasRole: () => hasRole,
273
+ headerVariants: () => headerVariants,
274
+ indeterminateIconPath: () => indeterminateIconPath,
275
+ inputGroupAddonVariants: () => inputGroupAddonVariants,
276
+ inputGroupButtonVariants: () => inputGroupButtonVariants,
277
+ inputGroupTokens: () => inputGroupTokens,
278
+ inputGroupVariants: () => inputGroupVariants,
279
+ inputVariants: () => inputVariants,
280
+ installPromptVariants: () => installPromptVariants,
281
+ latestBadgeVariants: () => latestBadgeVariants,
282
+ markdownRendererTokens: () => markdownRendererTokens,
283
+ menuContentVariants: () => menuContentVariants,
284
+ menuItemVariants: () => menuItemVariants,
285
+ mobileNavContentVariants: () => mobileNavContentVariants,
286
+ mobileNavLinkVariants: () => mobileNavLinkVariants,
287
+ mobileNavTokens: () => mobileNavTokens,
288
+ mobileNavTriggerVariants: () => mobileNavTriggerVariants,
289
+ mobileNavVariants: () => mobileNavVariants,
290
+ navLinkVariants: () => navLinkVariants,
291
+ navbarVariants: () => navbarVariants,
292
+ optionVariants: () => optionVariants,
293
+ otpInputContainerVariants: () => otpInputContainerVariants,
294
+ otpInputSlotVariants: () => otpInputSlotVariants,
295
+ otpInputTokens: () => otpInputTokens,
296
+ overlayStyles: () => overlayStyles,
297
+ overlayVariants: () => overlayVariants,
298
+ playerVariants: () => playerVariants,
299
+ popoverContentVariants: () => popoverContentVariants,
300
+ previewVariants: () => previewVariants,
301
+ progressBarVariants: () => progressBarVariants,
302
+ proseVariants: () => proseVariants,
303
+ radioCircleVariants: () => radioCircleVariants,
304
+ radioGroupVariants: () => radioGroupVariants,
305
+ radioItemVariants: () => radioItemVariants,
306
+ reactionAddButtonStyles: () => reactionAddButtonStyles,
307
+ reactionBarStyles: () => reactionBarStyles,
308
+ reactionCountStyles: () => reactionCountStyles,
309
+ reactionEmojiStyles: () => reactionEmojiStyles,
310
+ reactionPillVariants: () => reactionPillVariants,
311
+ resizableDividerVariants: () => resizableDividerVariants,
312
+ resizableLayoutTokens: () => resizableLayoutTokens,
313
+ resizableLayoutVariants: () => resizableLayoutVariants,
314
+ resizablePaneVariants: () => resizablePaneVariants,
315
+ rowVariants: () => rowVariants,
316
+ searchBarVariants: () => searchBarVariants,
317
+ searchResultVariants: () => searchResultVariants,
318
+ selectContentVariants: () => selectContentVariants,
319
+ selectItemVariants: () => selectItemVariants,
320
+ selectTokens: () => selectTokens,
321
+ selectTriggerVariants: () => selectTriggerVariants,
322
+ selectorVariants: () => selectorVariants,
323
+ shortcutBadgeStyles: () => shortcutBadgeStyles,
324
+ shortcutKeyStyles: () => shortcutKeyStyles,
325
+ shortcutSeparatorStyles: () => shortcutSeparatorStyles,
326
+ skeletonVariants: () => skeletonVariants,
327
+ slideTypeBadgeVariants: () => slideTypeBadgeVariants,
328
+ slideViewerProgressBarVariants: () => progressBarVariants2,
329
+ slideViewerTokens: () => slideViewerTokens,
330
+ slideViewerVariants: () => slideViewerVariants,
331
+ statCardVariants: () => statCardVariants,
332
+ statsGridVariants: () => statsGridVariants,
333
+ statusBarVariants: () => statusBarVariants,
334
+ statusContainerStyles: () => statusContainerStyles,
335
+ statusDotVariants: () => statusDotVariants,
336
+ statusLabelStyles: () => statusLabelStyles,
337
+ statusPulseVariants: () => statusPulseVariants,
338
+ switchThumbVariants: () => switchThumbVariants,
339
+ switchTokens: () => switchTokens,
340
+ switchVariants: () => switchVariants,
341
+ tabBarVariants: () => tabBarVariants,
342
+ tabVariants: () => tabVariants,
343
+ tableVariants: () => tableVariants,
344
+ tabsListVariants: () => tabsListVariants,
345
+ tabsTriggerVariants: () => tabsTriggerVariants,
346
+ textareaVariants: () => textareaVariants,
347
+ threadAuthorStyles: () => threadAuthorStyles,
348
+ threadAvatarStyles: () => threadAvatarStyles,
349
+ threadBodyStyles: () => threadBodyStyles,
350
+ threadContainerStyles: () => threadContainerStyles,
351
+ threadContentStyles: () => threadContentStyles,
352
+ threadMessageStyles: () => threadMessageStyles,
353
+ threadReactionsStyles: () => threadReactionsStyles,
354
+ threadTimestampStyles: () => threadTimestampStyles,
355
+ toastVariants: () => toastVariants,
356
+ toolbarVariants: () => toolbarVariants,
357
+ tooltipContentVariants: () => tooltipContentVariants,
358
+ typewriterVariants: () => typewriterVariants,
359
+ useAuth: () => useAuth,
360
+ useTheme: () => useTheme,
361
+ useToast: () => useToast,
362
+ versionSelectorOptionVariants: () => optionVariants2,
363
+ versionSelectorVariants: () => versionSelectorVariants,
364
+ watermarkVariants: () => watermarkVariants
365
+ });
7
366
 
8
367
  // ../theme/dist/index.js
9
368
  function resolveTheme(mode, systemPrefersDark) {
@@ -119,14 +478,14 @@ function applyThemeToDOM(resolved, attribute = "class") {
119
478
  }
120
479
 
121
480
  // ../react-theme/dist/index.js
122
- var ThemeContext = React40.createContext(null);
481
+ var ThemeContext = React41.createContext(null);
123
482
  function ThemeProvider({
124
483
  children,
125
484
  defaultMode = "system",
126
485
  storageKey = "rfr-theme",
127
486
  attribute = "class"
128
487
  }) {
129
- const themeRef = React40.useRef(null);
488
+ const themeRef = React41.useRef(null);
130
489
  if (!themeRef.current) {
131
490
  const isBrowser = typeof window !== "undefined";
132
491
  themeRef.current = createTheme(
@@ -135,8 +494,8 @@ function ThemeProvider({
135
494
  isBrowser ? createMediaQueryAdapter() : void 0
136
495
  );
137
496
  }
138
- const [state, setState] = React40.useState(() => themeRef.current.getState());
139
- React40.useEffect(() => {
497
+ const [state, setState] = React41.useState(() => themeRef.current.getState());
498
+ React41.useEffect(() => {
140
499
  const theme = themeRef.current;
141
500
  applyThemeToDOM(theme.getState().resolved, attribute);
142
501
  const unsub = theme.subscribe((newState) => {
@@ -148,7 +507,7 @@ function ThemeProvider({
148
507
  theme.destroy();
149
508
  };
150
509
  }, [attribute]);
151
- const contextValue = React40.useMemo(
510
+ const contextValue = React41.useMemo(
152
511
  () => ({
153
512
  mode: state.mode,
154
513
  resolved: state.resolved,
@@ -156,10 +515,10 @@ function ThemeProvider({
156
515
  }),
157
516
  [state.mode, state.resolved]
158
517
  );
159
- return React40.createElement(ThemeContext.Provider, { value: contextValue }, children);
518
+ return React41.createElement(ThemeContext.Provider, { value: contextValue }, children);
160
519
  }
161
520
  function useTheme() {
162
- const context = React40.useContext(ThemeContext);
521
+ const context = React41.useContext(ThemeContext);
163
522
  if (!context) {
164
523
  throw new Error("useTheme must be used within a <ThemeProvider>");
165
524
  }
@@ -171,7 +530,7 @@ var modes = [
171
530
  { value: "system", label: "System", icon: "monitor" }
172
531
  ];
173
532
  var icons = {
174
- sun: React40.createElement(
533
+ sun: React41.createElement(
175
534
  "svg",
176
535
  {
177
536
  xmlns: "http://www.w3.org/2000/svg",
@@ -184,10 +543,10 @@ var icons = {
184
543
  strokeLinecap: "round",
185
544
  strokeLinejoin: "round"
186
545
  },
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" })
546
+ React41.createElement("circle", { cx: 12, cy: 12, r: 5 }),
547
+ 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
548
  ),
190
- moon: React40.createElement(
549
+ moon: React41.createElement(
191
550
  "svg",
192
551
  {
193
552
  xmlns: "http://www.w3.org/2000/svg",
@@ -200,9 +559,9 @@ var icons = {
200
559
  strokeLinecap: "round",
201
560
  strokeLinejoin: "round"
202
561
  },
203
- React40.createElement("path", { d: "M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" })
562
+ React41.createElement("path", { d: "M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" })
204
563
  ),
205
- monitor: React40.createElement(
564
+ monitor: React41.createElement(
206
565
  "svg",
207
566
  {
208
567
  xmlns: "http://www.w3.org/2000/svg",
@@ -215,15 +574,15 @@ var icons = {
215
574
  strokeLinecap: "round",
216
575
  strokeLinejoin: "round"
217
576
  },
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 })
577
+ React41.createElement("rect", { x: 2, y: 3, width: 20, height: 14, rx: 2, ry: 2 }),
578
+ React41.createElement("line", { x1: 8, y1: 21, x2: 16, y2: 21 }),
579
+ React41.createElement("line", { x1: 12, y1: 17, x2: 12, y2: 21 })
221
580
  )
222
581
  };
223
582
  function ThemeToggle({ className, variant = "segmented" }) {
224
583
  const { mode, setMode } = useTheme();
225
584
  if (variant === "segmented") {
226
- return React40.createElement(
585
+ return React41.createElement(
227
586
  "div",
228
587
  {
229
588
  className: `inline-flex items-center gap-1 rounded-lg border p-1 ${className ?? ""}`,
@@ -231,7 +590,7 @@ function ThemeToggle({ className, variant = "segmented" }) {
231
590
  "aria-label": "Theme"
232
591
  },
233
592
  modes.map(
234
- ({ value, label, icon }) => React40.createElement("button", {
593
+ ({ value, label, icon }) => React41.createElement("button", {
235
594
  key: value,
236
595
  type: "button",
237
596
  role: "radio",
@@ -243,9 +602,9 @@ function ThemeToggle({ className, variant = "segmented" }) {
243
602
  )
244
603
  );
245
604
  }
246
- const [open, setOpen] = React40.useState(false);
247
- const ref = React40.useRef(null);
248
- React40.useEffect(() => {
605
+ const [open, setOpen] = React41.useState(false);
606
+ const ref = React41.useRef(null);
607
+ React41.useEffect(() => {
249
608
  if (!open) return;
250
609
  const handler = (e) => {
251
610
  if (ref.current && !ref.current.contains(e.target)) setOpen(false);
@@ -254,24 +613,24 @@ function ThemeToggle({ className, variant = "segmented" }) {
254
613
  return () => document.removeEventListener("mousedown", handler);
255
614
  }, [open]);
256
615
  const currentIcon = modes.find((m) => m.value === mode)?.icon ?? "monitor";
257
- return React40.createElement(
616
+ return React41.createElement(
258
617
  "div",
259
618
  { ref, className: `relative ${className ?? ""}` },
260
- React40.createElement("button", {
619
+ React41.createElement("button", {
261
620
  type: "button",
262
621
  "aria-label": "Toggle theme",
263
622
  "aria-expanded": open,
264
623
  className: "inline-flex items-center justify-center rounded-md p-2 text-sm transition-colors hover:bg-muted",
265
624
  onClick: () => setOpen(!open)
266
625
  }, icons[currentIcon]),
267
- open && React40.createElement(
626
+ open && React41.createElement(
268
627
  "div",
269
628
  {
270
629
  className: "absolute right-0 top-full mt-1 z-50 min-w-[8rem] rounded-md border bg-popover p-1 shadow-md",
271
630
  role: "menu"
272
631
  },
273
632
  modes.map(
274
- ({ value, label, icon }) => React40.createElement("button", {
633
+ ({ value, label, icon }) => React41.createElement("button", {
275
634
  key: value,
276
635
  type: "button",
277
636
  role: "menuitem",
@@ -289,7 +648,7 @@ function ThemeScript({
289
648
  storageKey = "rfr-theme",
290
649
  attribute = "class"
291
650
  }) {
292
- return React40.createElement("script", {
651
+ return React41.createElement("script", {
293
652
  dangerouslySetInnerHTML: {
294
653
  __html: getThemeScript(storageKey, attribute)
295
654
  }
@@ -407,6 +766,105 @@ function cva(config) {
407
766
  return classes.filter(Boolean).join(" ");
408
767
  };
409
768
  }
769
+ var AccordionContext = React41.createContext(null);
770
+ var Accordion = React41.forwardRef(
771
+ ({ className, type = "single", collapsible, value: controlledValue, defaultValue, onValueChange, ...props }, ref) => {
772
+ const [uncontrolledValue, setUncontrolledValue] = React41.useState(
773
+ defaultValue ?? (type === "multiple" ? [] : "")
774
+ );
775
+ const value = controlledValue !== void 0 ? controlledValue : uncontrolledValue;
776
+ const handleValueChange = React41.useCallback(
777
+ (itemValue) => {
778
+ if (type === "single") {
779
+ const newValue = value === itemValue && collapsible ? "" : itemValue;
780
+ setUncontrolledValue(newValue);
781
+ onValueChange?.(newValue);
782
+ } else {
783
+ const arrValue = Array.isArray(value) ? value : [];
784
+ const newValue = arrValue.includes(itemValue) ? arrValue.filter((v) => v !== itemValue) : [...arrValue, itemValue];
785
+ setUncontrolledValue(newValue);
786
+ onValueChange?.(newValue);
787
+ }
788
+ },
789
+ [type, collapsible, value, onValueChange]
790
+ );
791
+ return /* @__PURE__ */ jsx(AccordionContext.Provider, { value: { type, value, onValueChange: handleValueChange }, children: /* @__PURE__ */ jsx("div", { ref, className: cn("flex flex-col w-full", className), ...props }) });
792
+ }
793
+ );
794
+ Accordion.displayName = "Accordion";
795
+ var AccordionItemContext = React41.createContext(null);
796
+ var AccordionItem = React41.forwardRef(
797
+ ({ className, value, ...props }, ref) => {
798
+ const context = React41.useContext(AccordionContext);
799
+ if (!context) throw new Error("AccordionItem must be within Accordion");
800
+ const isOpen = context.type === "single" ? context.value === value : Array.isArray(context.value) && context.value.includes(value);
801
+ 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 }) });
802
+ }
803
+ );
804
+ AccordionItem.displayName = "AccordionItem";
805
+ var AccordionTrigger = React41.forwardRef(
806
+ ({ className, children, ...props }, ref) => {
807
+ const accordionContext = React41.useContext(AccordionContext);
808
+ const itemContext = React41.useContext(AccordionItemContext);
809
+ if (!accordionContext || !itemContext) throw new Error("AccordionTrigger missing context");
810
+ return /* @__PURE__ */ jsx("h3", { className: "flex m-0 p-0", children: /* @__PURE__ */ jsxs(
811
+ "button",
812
+ {
813
+ ref,
814
+ type: "button",
815
+ "aria-expanded": itemContext.isOpen,
816
+ className: cn(
817
+ "flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180",
818
+ className
819
+ ),
820
+ "data-state": itemContext.isOpen ? "open" : "closed",
821
+ onClick: () => accordionContext.onValueChange(itemContext.value),
822
+ ...props,
823
+ children: [
824
+ children,
825
+ /* @__PURE__ */ jsx(
826
+ "svg",
827
+ {
828
+ xmlns: "http://www.w3.org/2000/svg",
829
+ width: "24",
830
+ height: "24",
831
+ viewBox: "0 0 24 24",
832
+ fill: "none",
833
+ stroke: "currentColor",
834
+ strokeWidth: "2",
835
+ strokeLinecap: "round",
836
+ strokeLinejoin: "round",
837
+ className: "h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200",
838
+ children: /* @__PURE__ */ jsx("path", { d: "m6 9 6 6 6-6" })
839
+ }
840
+ )
841
+ ]
842
+ }
843
+ ) });
844
+ }
845
+ );
846
+ AccordionTrigger.displayName = "AccordionTrigger";
847
+ var AccordionContent = React41.forwardRef(
848
+ ({ className, children, ...props }, ref) => {
849
+ const itemContext = React41.useContext(AccordionItemContext);
850
+ if (!itemContext) throw new Error("AccordionContent missing context");
851
+ return /* @__PURE__ */ jsx(
852
+ "div",
853
+ {
854
+ ref,
855
+ className: cn(
856
+ "overflow-hidden text-sm",
857
+ className
858
+ ),
859
+ "data-state": itemContext.isOpen ? "open" : "closed",
860
+ hidden: !itemContext.isOpen,
861
+ ...props,
862
+ children: /* @__PURE__ */ jsx("div", { className: "pb-4 pt-0 text-muted-foreground leading-relaxed", children })
863
+ }
864
+ );
865
+ }
866
+ );
867
+ AccordionContent.displayName = "AccordionContent";
410
868
 
411
869
  // ../animated-text/dist/index.js
412
870
  function createAnimatedText(props) {
@@ -470,16 +928,16 @@ var typewriterVariants = cva({
470
928
  cursor: "blinking"
471
929
  }
472
930
  });
473
- var AnimatedText = React40.forwardRef(
931
+ var AnimatedText = React41.forwardRef(
474
932
  ({ words, interval = 2500, transitionDuration = 1e3, className, ...props }, ref) => {
475
- const apiRef = React40.useRef(
933
+ const apiRef = React41.useRef(
476
934
  createAnimatedText({ words})
477
935
  );
478
936
  const api = apiRef.current;
479
- const [currentIndex, setCurrentIndex] = React40.useState(0);
480
- const [isExiting, setIsExiting] = React40.useState(false);
937
+ const [currentIndex, setCurrentIndex] = React41.useState(0);
938
+ const [isExiting, setIsExiting] = React41.useState(false);
481
939
  const prefersReducedMotion = typeof globalThis !== "undefined" && typeof globalThis.matchMedia === "function" && globalThis.matchMedia("(prefers-reduced-motion: reduce)").matches;
482
- React40.useEffect(() => {
940
+ React41.useEffect(() => {
483
941
  if (words.length <= 1) return;
484
942
  const tick = setInterval(() => {
485
943
  if (prefersReducedMotion) {
@@ -515,13 +973,13 @@ var AnimatedText = React40.forwardRef(
515
973
  }
516
974
  );
517
975
  AnimatedText.displayName = "AnimatedText";
518
- var TypewriterText = React40.forwardRef(
976
+ var TypewriterText = React41.forwardRef(
519
977
  ({ text, speed = 50, startDelay = 0, className, ...props }, ref) => {
520
- const apiRef = React40.useRef(createTypewriter({ text}));
978
+ const apiRef = React41.useRef(createTypewriter({ text}));
521
979
  const api = apiRef.current;
522
- const [currentIndex, setCurrentIndex] = React40.useState(0);
980
+ const [currentIndex, setCurrentIndex] = React41.useState(0);
523
981
  const prefersReducedMotion = typeof globalThis !== "undefined" && typeof globalThis.matchMedia === "function" && globalThis.matchMedia("(prefers-reduced-motion: reduce)").matches;
524
- React40.useEffect(() => {
982
+ React41.useEffect(() => {
525
983
  if (prefersReducedMotion) {
526
984
  api.state.currentIndex = text.length;
527
985
  setCurrentIndex(text.length);
@@ -774,22 +1232,22 @@ function detectProvider() {
774
1232
  }
775
1233
 
776
1234
  // ../react-auth/dist/index.js
777
- var AuthContext = React40.createContext(null);
1235
+ var AuthContext = React41.createContext(null);
778
1236
  function AuthProvider({ children, ...config }) {
779
- const authRef = React40.useRef(null);
1237
+ const authRef = React41.useRef(null);
780
1238
  if (!authRef.current) {
781
1239
  const adapter = resolveAdapter(config.provider);
782
1240
  authRef.current = createAuth(adapter, config);
783
1241
  }
784
- const [state, setState] = React40.useState(() => authRef.current.getState());
785
- React40.useEffect(() => {
1242
+ const [state, setState] = React41.useState(() => authRef.current.getState());
1243
+ React41.useEffect(() => {
786
1244
  const unsub = authRef.current.subscribe(setState);
787
1245
  return () => {
788
1246
  unsub();
789
1247
  authRef.current.destroy();
790
1248
  };
791
1249
  }, []);
792
- const value = React40.useMemo(
1250
+ const value = React41.useMemo(
793
1251
  () => ({
794
1252
  user: state.user,
795
1253
  isLoading: state.status === "loading",
@@ -803,10 +1261,10 @@ function AuthProvider({ children, ...config }) {
803
1261
  }),
804
1262
  [state.user, state.status]
805
1263
  );
806
- return React40.createElement(AuthContext.Provider, { value }, children);
1264
+ return React41.createElement(AuthContext.Provider, { value }, children);
807
1265
  }
808
1266
  function useAuth() {
809
- const ctx = React40.useContext(AuthContext);
1267
+ const ctx = React41.useContext(AuthContext);
810
1268
  if (!ctx) {
811
1269
  throw new Error("useAuth must be used within an <AuthProvider>");
812
1270
  }
@@ -820,15 +1278,15 @@ function AuthGuard({
820
1278
  }) {
821
1279
  const { isLoading, isAuthenticated, user } = useAuth();
822
1280
  if (isLoading) {
823
- return React40.createElement(React40.Fragment, null, fallback ?? null);
1281
+ return React41.createElement(React41.Fragment, null, fallback ?? null);
824
1282
  }
825
1283
  if (!isAuthenticated) {
826
- return React40.createElement(React40.Fragment, null, fallback ?? null);
1284
+ return React41.createElement(React41.Fragment, null, fallback ?? null);
827
1285
  }
828
1286
  if (roles && roles.length > 0 && !hasAnyRole(user, roles)) {
829
- return React40.createElement(React40.Fragment, null, unauthorized ?? null);
1287
+ return React41.createElement(React41.Fragment, null, unauthorized ?? null);
830
1288
  }
831
- return React40.createElement(React40.Fragment, null, children);
1289
+ return React41.createElement(React41.Fragment, null, children);
832
1290
  }
833
1291
 
834
1292
  // ../badge/dist/index.js
@@ -868,7 +1326,7 @@ var badgeVariants = cva({
868
1326
  size: "md"
869
1327
  }
870
1328
  });
871
- var Badge = React40.forwardRef(
1329
+ var Badge = React41.forwardRef(
872
1330
  ({ variant, size, className, children, ...props }, ref) => {
873
1331
  const api = createBadge({ variant});
874
1332
  const classes = cn(badgeVariants({ variant, size }), className);
@@ -915,7 +1373,7 @@ var bottomNavTabVariants = cva({
915
1373
  active: "false"
916
1374
  }
917
1375
  });
918
- var BottomNav = React40.forwardRef(
1376
+ var BottomNav = React41.forwardRef(
919
1377
  ({ tabs = [], currentPath, className, ...props }, ref) => {
920
1378
  const api = createBottomNav({ currentPath });
921
1379
  const classes = cn(bottomNavVariants(), className);
@@ -973,7 +1431,7 @@ function createBreadcrumbs(props = {}) {
973
1431
  };
974
1432
  }
975
1433
  var breadcrumbsVariants = cva({
976
- base: "flex items-center gap-1.5 text-sm text-muted-foreground"
1434
+ base: "flex flex-wrap items-center gap-1.5 text-sm text-muted-foreground"
977
1435
  });
978
1436
  var breadcrumbItemVariants = cva({
979
1437
  base: "transition-colors",
@@ -988,7 +1446,7 @@ var breadcrumbItemVariants = cva({
988
1446
  }
989
1447
  });
990
1448
  var breadcrumbSeparatorStyles = "text-muted-foreground/50 select-none";
991
- var Breadcrumbs = React40.forwardRef(
1449
+ var Breadcrumbs = React41.forwardRef(
992
1450
  ({
993
1451
  pathname,
994
1452
  items,
@@ -1095,12 +1553,12 @@ var buttonVariants = cva({
1095
1553
  size: "default"
1096
1554
  }
1097
1555
  });
1098
- var Button = React40.forwardRef(
1556
+ var Button = React41.forwardRef(
1099
1557
  ({ variant, size, loading, asChild, className, disabled, children, ...props }, ref) => {
1100
1558
  const api = createButton({ disabled, loading, type: props.type });
1101
1559
  const classes = cn(buttonVariants({ variant, size }), className);
1102
- if (asChild && React40.isValidElement(children)) {
1103
- return React40.cloneElement(children, {
1560
+ if (asChild && React41.isValidElement(children)) {
1561
+ return React41.cloneElement(children, {
1104
1562
  ref,
1105
1563
  className: cn(classes, children.props.className),
1106
1564
  type: getButtonType({ type: props.type }),
@@ -1307,15 +1765,15 @@ function Calendar({
1307
1765
  maxDate,
1308
1766
  disabledDates
1309
1767
  }) {
1310
- const [uncontrolledValue, setUncontrolledValue] = React40.useState(defaultValue);
1311
- const [uncontrolledMonth, setUncontrolledMonth] = React40.useState(
1768
+ const [uncontrolledValue, setUncontrolledValue] = React41.useState(defaultValue);
1769
+ const [uncontrolledMonth, setUncontrolledMonth] = React41.useState(
1312
1770
  () => month ?? value ?? defaultValue ?? /* @__PURE__ */ new Date()
1313
1771
  );
1314
1772
  const isValueControlled = value !== void 0;
1315
1773
  const isMonthControlled = month !== void 0;
1316
1774
  const selectedValue = isValueControlled ? value : uncontrolledValue;
1317
1775
  const displayMonth = isMonthControlled ? month : uncontrolledMonth;
1318
- const handleSelect = React40.useCallback(
1776
+ const handleSelect = React41.useCallback(
1319
1777
  (date) => {
1320
1778
  if (!isValueControlled) {
1321
1779
  setUncontrolledValue(date);
@@ -1324,7 +1782,7 @@ function Calendar({
1324
1782
  },
1325
1783
  [isValueControlled, onSelect]
1326
1784
  );
1327
- const handleMonthChange = React40.useCallback(
1785
+ const handleMonthChange = React41.useCallback(
1328
1786
  (m) => {
1329
1787
  if (!isMonthControlled) {
1330
1788
  setUncontrolledMonth(m);
@@ -1350,28 +1808,28 @@ function Calendar({
1350
1808
  return "default";
1351
1809
  }
1352
1810
  const monthLabel = `${MONTH_NAMES[api.state.currentMonth.getMonth()]} ${api.state.currentMonth.getFullYear()}`;
1353
- return React40.createElement(
1811
+ return React41.createElement(
1354
1812
  "div",
1355
1813
  {
1356
1814
  className: cn(calendarVariants(), className),
1357
1815
  ...api.ariaProps
1358
1816
  },
1359
1817
  // Header row: prev, month label, next
1360
- React40.createElement(CalendarHeader, {
1818
+ React41.createElement(CalendarHeader, {
1361
1819
  label: monthLabel,
1362
1820
  labelId: api.ids.label,
1363
1821
  onPrevMonth: api.prevMonth,
1364
1822
  onNextMonth: api.nextMonth
1365
1823
  }),
1366
1824
  // Day-of-week headers
1367
- React40.createElement(
1825
+ React41.createElement(
1368
1826
  "div",
1369
1827
  {
1370
1828
  className: "grid grid-cols-7 gap-1 mb-1",
1371
1829
  role: "row"
1372
1830
  },
1373
1831
  DAY_HEADERS.map(
1374
- (d) => React40.createElement(
1832
+ (d) => React41.createElement(
1375
1833
  "div",
1376
1834
  {
1377
1835
  key: d,
@@ -1384,7 +1842,7 @@ function Calendar({
1384
1842
  )
1385
1843
  ),
1386
1844
  // Day grid
1387
- React40.createElement(
1845
+ React41.createElement(
1388
1846
  "div",
1389
1847
  {
1390
1848
  className: "grid grid-cols-7 gap-1",
@@ -1393,7 +1851,7 @@ function Calendar({
1393
1851
  api.days.map((day, i) => {
1394
1852
  const dayAriaProps = api.getDayAriaProps(day);
1395
1853
  const state = getDayState(day);
1396
- return React40.createElement(
1854
+ return React41.createElement(
1397
1855
  "button",
1398
1856
  {
1399
1857
  key: i,
@@ -1417,12 +1875,12 @@ function CalendarHeader({
1417
1875
  onNextMonth,
1418
1876
  className
1419
1877
  }) {
1420
- return React40.createElement(
1878
+ return React41.createElement(
1421
1879
  "div",
1422
1880
  {
1423
1881
  className: cn("flex items-center justify-between mb-2", className)
1424
1882
  },
1425
- React40.createElement(
1883
+ React41.createElement(
1426
1884
  "button",
1427
1885
  {
1428
1886
  type: "button",
@@ -1432,7 +1890,7 @@ function CalendarHeader({
1432
1890
  },
1433
1891
  "\u2039"
1434
1892
  ),
1435
- React40.createElement(
1893
+ React41.createElement(
1436
1894
  "div",
1437
1895
  {
1438
1896
  id: labelId,
@@ -1441,7 +1899,7 @@ function CalendarHeader({
1441
1899
  },
1442
1900
  label
1443
1901
  ),
1444
- React40.createElement(
1902
+ React41.createElement(
1445
1903
  "button",
1446
1904
  {
1447
1905
  type: "button",
@@ -1574,7 +2032,7 @@ var codeEditorVariants = cva({
1574
2032
  size: "default"
1575
2033
  }
1576
2034
  });
1577
- var CodeEditor = React40.forwardRef(
2035
+ var CodeEditor = React41.forwardRef(
1578
2036
  ({
1579
2037
  value = "",
1580
2038
  onChange,
@@ -1690,9 +2148,9 @@ var collapsibleContentVariants = cva({
1690
2148
  });
1691
2149
 
1692
2150
  // ../react-collapsible/dist/index.js
1693
- var CollapsibleContext = React40.createContext(null);
2151
+ var CollapsibleContext = React41.createContext(null);
1694
2152
  function useCollapsibleContext() {
1695
- const ctx = React40.useContext(CollapsibleContext);
2153
+ const ctx = React41.useContext(CollapsibleContext);
1696
2154
  if (!ctx) {
1697
2155
  throw new Error(
1698
2156
  "Collapsible compound components must be used within <Collapsible>"
@@ -1708,10 +2166,10 @@ function Collapsible({
1708
2166
  children,
1709
2167
  className
1710
2168
  }) {
1711
- const [uncontrolledOpen, setUncontrolledOpen] = React40.useState(defaultOpen);
2169
+ const [uncontrolledOpen, setUncontrolledOpen] = React41.useState(defaultOpen);
1712
2170
  const isControlled = controlledOpen !== void 0;
1713
2171
  const open = isControlled ? controlledOpen : uncontrolledOpen;
1714
- const handleOpenChange = React40.useCallback(
2172
+ const handleOpenChange = React41.useCallback(
1715
2173
  (next) => {
1716
2174
  if (!isControlled) {
1717
2175
  setUncontrolledOpen(next);
@@ -1720,12 +2178,12 @@ function Collapsible({
1720
2178
  },
1721
2179
  [isControlled, onOpenChange]
1722
2180
  );
1723
- const apiRef = React40.useRef(null);
2181
+ const apiRef = React41.useRef(null);
1724
2182
  if (apiRef.current === null) {
1725
2183
  apiRef.current = createCollapsible({ open, defaultOpen, disabled });
1726
2184
  }
1727
2185
  const contentId = apiRef.current.contentProps.id;
1728
- const ctx = React40.useMemo(
2186
+ const ctx = React41.useMemo(
1729
2187
  () => ({
1730
2188
  open,
1731
2189
  onOpenChange: handleOpenChange,
@@ -1734,10 +2192,10 @@ function Collapsible({
1734
2192
  }),
1735
2193
  [open, handleOpenChange, disabled, contentId]
1736
2194
  );
1737
- return React40.createElement(
2195
+ return React41.createElement(
1738
2196
  CollapsibleContext.Provider,
1739
2197
  { value: ctx },
1740
- React40.createElement(
2198
+ React41.createElement(
1741
2199
  "div",
1742
2200
  {
1743
2201
  "data-state": open ? "open" : "closed",
@@ -1749,7 +2207,7 @@ function Collapsible({
1749
2207
  );
1750
2208
  }
1751
2209
  Collapsible.displayName = "Collapsible";
1752
- var CollapsibleTrigger = React40.forwardRef(({ onClick, disabled: disabledProp, children, ...props }, ref) => {
2210
+ var CollapsibleTrigger = React41.forwardRef(({ onClick, disabled: disabledProp, children, ...props }, ref) => {
1753
2211
  const { open, onOpenChange, disabled: ctxDisabled, contentId } = useCollapsibleContext();
1754
2212
  const disabled = disabledProp ?? ctxDisabled;
1755
2213
  const handleClick = (e) => {
@@ -1758,7 +2216,7 @@ var CollapsibleTrigger = React40.forwardRef(({ onClick, disabled: disabledProp,
1758
2216
  }
1759
2217
  onClick?.(e);
1760
2218
  };
1761
- return React40.createElement(
2219
+ return React41.createElement(
1762
2220
  "button",
1763
2221
  {
1764
2222
  ref,
@@ -1775,11 +2233,11 @@ var CollapsibleTrigger = React40.forwardRef(({ onClick, disabled: disabledProp,
1775
2233
  );
1776
2234
  });
1777
2235
  CollapsibleTrigger.displayName = "CollapsibleTrigger";
1778
- var CollapsibleContent = React40.forwardRef(({ className, children, ...props }, ref) => {
2236
+ var CollapsibleContent = React41.forwardRef(({ className, children, ...props }, ref) => {
1779
2237
  const { open, contentId } = useCollapsibleContext();
1780
2238
  const dataState = open ? "open" : "closed";
1781
2239
  if (!open) return null;
1782
- return React40.createElement(
2240
+ return React41.createElement(
1783
2241
  "div",
1784
2242
  {
1785
2243
  ref,
@@ -1924,9 +2382,9 @@ var commandGroupVariants = cva({
1924
2382
  });
1925
2383
 
1926
2384
  // ../react-command/dist/index.js
1927
- var CommandContext = React40.createContext(null);
2385
+ var CommandContext = React41.createContext(null);
1928
2386
  function useCommandContext() {
1929
- const ctx = React40.useContext(CommandContext);
2387
+ const ctx = React41.useContext(CommandContext);
1930
2388
  if (!ctx) {
1931
2389
  throw new Error("Command compound components must be used within <Command>");
1932
2390
  }
@@ -1939,11 +2397,11 @@ function Command({
1939
2397
  className,
1940
2398
  children
1941
2399
  }) {
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(() => {
2400
+ const [items, setItems] = React41.useState([]);
2401
+ const [search, setSearch] = React41.useState("");
2402
+ const [selectedIndex, setSelectedIndex] = React41.useState(0);
2403
+ const apiRef = React41.useRef(null);
2404
+ const api = React41.useMemo(() => {
1947
2405
  const instance = createCommand({ open, onOpenChange, filter }, items);
1948
2406
  if (search) {
1949
2407
  instance.search(search);
@@ -1952,23 +2410,23 @@ function Command({
1952
2410
  return instance;
1953
2411
  }, [open, onOpenChange, filter, items, search]);
1954
2412
  const filteredItems = api.state.filteredItems;
1955
- const handleSearch = React40.useCallback((query) => {
2413
+ const handleSearch = React41.useCallback((query) => {
1956
2414
  setSearch(query);
1957
2415
  setSelectedIndex(0);
1958
2416
  }, []);
1959
- const handleSelect = React40.useCallback((index) => {
2417
+ const handleSelect = React41.useCallback((index) => {
1960
2418
  setSelectedIndex(index);
1961
2419
  }, []);
1962
- const registerItem = React40.useCallback((item) => {
2420
+ const registerItem = React41.useCallback((item) => {
1963
2421
  setItems((prev) => {
1964
2422
  if (prev.some((i) => i.id === item.id)) return prev;
1965
2423
  return [...prev, item];
1966
2424
  });
1967
2425
  }, []);
1968
- const unregisterItem = React40.useCallback((id) => {
2426
+ const unregisterItem = React41.useCallback((id) => {
1969
2427
  setItems((prev) => prev.filter((i) => i.id !== id));
1970
2428
  }, []);
1971
- const handleKeyDown = React40.useCallback(
2429
+ const handleKeyDown = React41.useCallback(
1972
2430
  (e) => {
1973
2431
  const handler = createKeyboardHandler({
1974
2432
  [Keys.ArrowDown]: (ev) => {
@@ -1995,7 +2453,7 @@ function Command({
1995
2453
  },
1996
2454
  [filteredItems.length, onOpenChange]
1997
2455
  );
1998
- const ctx = React40.useMemo(
2456
+ const ctx = React41.useMemo(
1999
2457
  () => ({
2000
2458
  search,
2001
2459
  onSearch: handleSearch,
@@ -2010,10 +2468,10 @@ function Command({
2010
2468
  }),
2011
2469
  [search, handleSearch, selectedIndex, handleSelect, items, filteredItems, registerItem, unregisterItem, api.ids.list, api.ids.input]
2012
2470
  );
2013
- return React40.createElement(
2471
+ return React41.createElement(
2014
2472
  CommandContext.Provider,
2015
2473
  { value: ctx },
2016
- React40.createElement(
2474
+ React41.createElement(
2017
2475
  "div",
2018
2476
  {
2019
2477
  className: cn(commandVariants(), className),
@@ -2025,14 +2483,14 @@ function Command({
2025
2483
  );
2026
2484
  }
2027
2485
  Command.displayName = "Command";
2028
- var CommandInput = React40.forwardRef(
2486
+ var CommandInput = React41.forwardRef(
2029
2487
  ({ className, onChange, ...props }, ref) => {
2030
2488
  const { search, onSearch, inputId, listId } = useCommandContext();
2031
2489
  const handleChange = (e) => {
2032
2490
  onSearch(e.target.value);
2033
2491
  onChange?.(e);
2034
2492
  };
2035
- return React40.createElement("input", {
2493
+ return React41.createElement("input", {
2036
2494
  ref,
2037
2495
  id: inputId,
2038
2496
  type: "text",
@@ -2047,10 +2505,10 @@ var CommandInput = React40.forwardRef(
2047
2505
  }
2048
2506
  );
2049
2507
  CommandInput.displayName = "CommandInput";
2050
- var CommandList = React40.forwardRef(
2508
+ var CommandList = React41.forwardRef(
2051
2509
  ({ className, children, ...props }, ref) => {
2052
2510
  const { listId } = useCommandContext();
2053
- return React40.createElement(
2511
+ return React41.createElement(
2054
2512
  "div",
2055
2513
  {
2056
2514
  ref,
@@ -2065,11 +2523,11 @@ var CommandList = React40.forwardRef(
2065
2523
  }
2066
2524
  );
2067
2525
  CommandList.displayName = "CommandList";
2068
- var CommandEmpty = React40.forwardRef(
2526
+ var CommandEmpty = React41.forwardRef(
2069
2527
  ({ className, children, ...props }, ref) => {
2070
2528
  const { filteredItems } = useCommandContext();
2071
2529
  if (filteredItems.length > 0) return null;
2072
- return React40.createElement(
2530
+ return React41.createElement(
2073
2531
  "div",
2074
2532
  {
2075
2533
  ref,
@@ -2082,9 +2540,9 @@ var CommandEmpty = React40.forwardRef(
2082
2540
  }
2083
2541
  );
2084
2542
  CommandEmpty.displayName = "CommandEmpty";
2085
- var CommandGroup = React40.forwardRef(
2543
+ var CommandGroup = React41.forwardRef(
2086
2544
  ({ className, heading, children, ...props }, ref) => {
2087
- return React40.createElement(
2545
+ return React41.createElement(
2088
2546
  "div",
2089
2547
  {
2090
2548
  ref,
@@ -2093,7 +2551,7 @@ var CommandGroup = React40.forwardRef(
2093
2551
  "aria-label": heading,
2094
2552
  ...props
2095
2553
  },
2096
- heading ? React40.createElement(
2554
+ heading ? React41.createElement(
2097
2555
  "div",
2098
2556
  { className: "px-2 py-1.5 text-xs font-medium text-muted-foreground" },
2099
2557
  heading
@@ -2103,10 +2561,10 @@ var CommandGroup = React40.forwardRef(
2103
2561
  }
2104
2562
  );
2105
2563
  CommandGroup.displayName = "CommandGroup";
2106
- var CommandItem = React40.forwardRef(
2564
+ var CommandItem = React41.forwardRef(
2107
2565
  ({ className, value, disabled, onSelect: onItemSelect, children, ...props }, ref) => {
2108
2566
  const state = disabled ? "disabled" : "default";
2109
- return React40.createElement(
2567
+ return React41.createElement(
2110
2568
  "div",
2111
2569
  {
2112
2570
  ref,
@@ -2127,9 +2585,9 @@ var CommandItem = React40.forwardRef(
2127
2585
  }
2128
2586
  );
2129
2587
  CommandItem.displayName = "CommandItem";
2130
- var CommandSeparator = React40.forwardRef(
2588
+ var CommandSeparator = React41.forwardRef(
2131
2589
  ({ className, ...props }, ref) => {
2132
- return React40.createElement("div", {
2590
+ return React41.createElement("div", {
2133
2591
  ref,
2134
2592
  role: "separator",
2135
2593
  className: cn("-mx-1 h-px bg-border", className),
@@ -2176,7 +2634,7 @@ var contentProtectionVariants = cva({
2176
2634
  var watermarkVariants = cva({
2177
2635
  base: "pointer-events-none absolute inset-0 z-50 overflow-hidden"
2178
2636
  });
2179
- var ContentProtection = React40.forwardRef(
2637
+ var ContentProtection = React41.forwardRef(
2180
2638
  ({
2181
2639
  enabled,
2182
2640
  disableCopy,
@@ -2423,10 +2881,10 @@ function DataTable({
2423
2881
  className,
2424
2882
  emptyMessage = "No data available"
2425
2883
  }) {
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(
2884
+ const [sortBy, setSortBy] = React41.useState(controlledSortBy ?? null);
2885
+ const [sortDir, setSortDir] = React41.useState(controlledSortDir);
2886
+ const [filters, setFilters] = React41.useState(controlledFilters ?? {});
2887
+ const api = React41.useMemo(
2430
2888
  () => createDataTable({
2431
2889
  columns,
2432
2890
  data,
@@ -2437,7 +2895,7 @@ function DataTable({
2437
2895
  }),
2438
2896
  [columns, data, sortBy, sortDir, onSort, filters]
2439
2897
  );
2440
- const handleSort = React40.useCallback(
2898
+ const handleSort = React41.useCallback(
2441
2899
  (columnId) => {
2442
2900
  const col = columns.find((c) => c.id === columnId);
2443
2901
  if (!col?.sortable) return;
@@ -2451,7 +2909,7 @@ function DataTable({
2451
2909
  },
2452
2910
  [columns, sortBy, sortDir, onSort]
2453
2911
  );
2454
- const handleFilter = React40.useCallback(
2912
+ const handleFilter = React41.useCallback(
2455
2913
  (columnId, value) => {
2456
2914
  setFilters((prev) => ({ ...prev, [columnId]: value }));
2457
2915
  },
@@ -2459,87 +2917,91 @@ function DataTable({
2459
2917
  );
2460
2918
  const sortedData = api.state.sortedData;
2461
2919
  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(
2920
+ return React41.createElement(
2921
+ "div",
2922
+ { className: "relative w-full overflow-auto" },
2923
+ React41.createElement(
2924
+ "table",
2925
+ {
2926
+ className: cn(tableVariants(), className),
2927
+ role: "table"
2928
+ },
2929
+ // thead
2930
+ React41.createElement(
2931
+ "thead",
2932
+ null,
2933
+ // Header row
2934
+ React41.createElement(
2528
2935
  "tr",
2529
- {
2530
- key: rowIndex,
2531
- ...api.getRowProps(row, rowIndex),
2532
- className: rowVariants()
2533
- },
2534
- ...columns.map(
2535
- (col) => React40.createElement(
2536
- "td",
2936
+ { role: "row" },
2937
+ ...columns.map((col) => {
2938
+ const headerProps = api.getHeaderProps(col);
2939
+ return React41.createElement(
2940
+ "th",
2537
2941
  {
2538
2942
  key: col.id,
2539
- ...api.getCellProps(col, row),
2540
- className: cellVariants()
2943
+ ...headerProps,
2944
+ className: headerVariants({ sortable: col.sortable ? "true" : "false" }),
2945
+ onClick: col.sortable ? () => handleSort(col.id) : void 0
2541
2946
  },
2542
- String(col.accessor(row) ?? "")
2947
+ col.header,
2948
+ col.sortable && sortBy === col.id ? React41.createElement("span", { "aria-hidden": true }, sortDir === "asc" ? " \u2191" : " \u2193") : null
2949
+ );
2950
+ })
2951
+ ),
2952
+ // Filter row
2953
+ hasFilterable ? React41.createElement(
2954
+ "tr",
2955
+ { role: "row", "data-filter-row": "true" },
2956
+ ...columns.map(
2957
+ (col) => React41.createElement(
2958
+ "th",
2959
+ { key: `filter-${col.id}` },
2960
+ col.filterable ? React41.createElement("input", {
2961
+ type: "text",
2962
+ "aria-label": `Filter ${col.header}`,
2963
+ value: filters[col.id] ?? "",
2964
+ onChange: (e) => handleFilter(col.id, e.target.value),
2965
+ placeholder: `Filter...`
2966
+ }) : null
2967
+ )
2968
+ )
2969
+ ) : null
2970
+ ),
2971
+ // tbody
2972
+ React41.createElement(
2973
+ "tbody",
2974
+ null,
2975
+ sortedData.length === 0 ? React41.createElement(
2976
+ "tr",
2977
+ { role: "row" },
2978
+ React41.createElement(
2979
+ "td",
2980
+ {
2981
+ colSpan: columns.length,
2982
+ className: "text-center p-4 text-muted-foreground",
2983
+ role: "cell"
2984
+ },
2985
+ emptyMessage
2986
+ )
2987
+ ) : sortedData.map(
2988
+ (row, rowIndex) => React41.createElement(
2989
+ "tr",
2990
+ {
2991
+ key: rowIndex,
2992
+ ...api.getRowProps(row, rowIndex),
2993
+ className: rowVariants()
2994
+ },
2995
+ ...columns.map(
2996
+ (col) => React41.createElement(
2997
+ "td",
2998
+ {
2999
+ key: col.id,
3000
+ ...api.getCellProps(col, row),
3001
+ className: cellVariants()
3002
+ },
3003
+ String(col.accessor(row) ?? "")
3004
+ )
2543
3005
  )
2544
3006
  )
2545
3007
  )
@@ -2641,7 +3103,7 @@ function DeviceFrame({
2641
3103
  children
2642
3104
  }) {
2643
3105
  const api = createDeviceFrame({ device, orientation });
2644
- return React40.createElement(
3106
+ return React41.createElement(
2645
3107
  "div",
2646
3108
  {
2647
3109
  className: cn(deviceFrameVariants({ device, orientation }), className),
@@ -2653,13 +3115,13 @@ function DeviceFrame({
2653
3115
  ...api.dataAttributes
2654
3116
  },
2655
3117
  // Notch decoration
2656
- api.dimensions.notch ? React40.createElement("div", {
3118
+ api.dimensions.notch ? React41.createElement("div", {
2657
3119
  className: "absolute top-0 left-1/2 -translate-x-1/2 w-[40%] h-[30px] bg-black rounded-b-2xl z-10",
2658
3120
  "aria-hidden": "true",
2659
3121
  "data-part": "notch"
2660
3122
  }) : null,
2661
3123
  // Screen area
2662
- React40.createElement(
3124
+ React41.createElement(
2663
3125
  "div",
2664
3126
  {
2665
3127
  className: "relative w-full h-full overflow-hidden bg-white",
@@ -2668,7 +3130,7 @@ function DeviceFrame({
2668
3130
  children
2669
3131
  ),
2670
3132
  // Home indicator decoration
2671
- api.dimensions.homeIndicator ? React40.createElement("div", {
3133
+ api.dimensions.homeIndicator ? React41.createElement("div", {
2672
3134
  className: "absolute bottom-2 left-1/2 -translate-x-1/2 w-[35%] h-[5px] bg-gray-300 rounded-full z-10",
2673
3135
  "aria-hidden": "true",
2674
3136
  "data-part": "home-indicator"
@@ -2757,9 +3219,9 @@ var dialogContentVariants = cva({
2757
3219
  });
2758
3220
 
2759
3221
  // ../react-dialog/dist/index.js
2760
- var DialogContext = React40.createContext(null);
3222
+ var DialogContext = React41.createContext(null);
2761
3223
  function useDialogContext() {
2762
- const ctx = React40.useContext(DialogContext);
3224
+ const ctx = React41.useContext(DialogContext);
2763
3225
  if (!ctx) {
2764
3226
  throw new Error("Dialog compound components must be used within <Dialog>");
2765
3227
  }
@@ -2772,10 +3234,10 @@ function Dialog({
2772
3234
  modal = true,
2773
3235
  children
2774
3236
  }) {
2775
- const [uncontrolledOpen, setUncontrolledOpen] = React40.useState(defaultOpen);
3237
+ const [uncontrolledOpen, setUncontrolledOpen] = React41.useState(defaultOpen);
2776
3238
  const isControlled = controlledOpen !== void 0;
2777
3239
  const open = isControlled ? controlledOpen : uncontrolledOpen;
2778
- const handleOpenChange = React40.useCallback(
3240
+ const handleOpenChange = React41.useCallback(
2779
3241
  (next) => {
2780
3242
  if (!isControlled) {
2781
3243
  setUncontrolledOpen(next);
@@ -2784,12 +3246,12 @@ function Dialog({
2784
3246
  },
2785
3247
  [isControlled, onOpenChange]
2786
3248
  );
2787
- const apiRef = React40.useRef(null);
3249
+ const apiRef = React41.useRef(null);
2788
3250
  if (apiRef.current === null) {
2789
3251
  apiRef.current = createDialog({ open, modal });
2790
3252
  }
2791
3253
  const api = apiRef.current;
2792
- const ctx = React40.useMemo(
3254
+ const ctx = React41.useMemo(
2793
3255
  () => ({
2794
3256
  open,
2795
3257
  onOpenChange: handleOpenChange,
@@ -2800,17 +3262,17 @@ function Dialog({
2800
3262
  }),
2801
3263
  [open, handleOpenChange, modal, api.ids.content, api.ids.title, api.ids.description]
2802
3264
  );
2803
- return React40.createElement(DialogContext.Provider, { value: ctx }, children);
3265
+ return React41.createElement(DialogContext.Provider, { value: ctx }, children);
2804
3266
  }
2805
3267
  Dialog.displayName = "Dialog";
2806
- var DialogTrigger = React40.forwardRef(
3268
+ var DialogTrigger = React41.forwardRef(
2807
3269
  ({ onClick, children, ...props }, ref) => {
2808
3270
  const { open, onOpenChange, contentId } = useDialogContext();
2809
3271
  const handleClick = (e) => {
2810
3272
  onOpenChange(!open);
2811
3273
  onClick?.(e);
2812
3274
  };
2813
- return React40.createElement(
3275
+ return React41.createElement(
2814
3276
  "button",
2815
3277
  {
2816
3278
  ref,
@@ -2826,7 +3288,7 @@ var DialogTrigger = React40.forwardRef(
2826
3288
  }
2827
3289
  );
2828
3290
  DialogTrigger.displayName = "DialogTrigger";
2829
- var DialogOverlay = React40.forwardRef(
3291
+ var DialogOverlay = React41.forwardRef(
2830
3292
  ({ className, onClick, ...props }, ref) => {
2831
3293
  const { open, onOpenChange } = useDialogContext();
2832
3294
  if (!open) return null;
@@ -2836,7 +3298,7 @@ var DialogOverlay = React40.forwardRef(
2836
3298
  }
2837
3299
  onClick?.(e);
2838
3300
  };
2839
- return React40.createElement("div", {
3301
+ return React41.createElement("div", {
2840
3302
  ref,
2841
3303
  className: cn(overlayStyles, className),
2842
3304
  "data-state": open ? "open" : "closed",
@@ -2846,10 +3308,10 @@ var DialogOverlay = React40.forwardRef(
2846
3308
  }
2847
3309
  );
2848
3310
  DialogOverlay.displayName = "DialogOverlay";
2849
- var DialogContent = React40.forwardRef(
3311
+ var DialogContent = React41.forwardRef(
2850
3312
  ({ className, children, onKeyDown, ...props }, ref) => {
2851
3313
  const { open, onOpenChange, modal, contentId, titleId, descriptionId } = useDialogContext();
2852
- React40.useMemo(
3314
+ React41.useMemo(
2853
3315
  () => createDialog({ open, modal }),
2854
3316
  [open, modal]
2855
3317
  );
@@ -2864,7 +3326,7 @@ var DialogContent = React40.forwardRef(
2864
3326
  onKeyDown?.(e);
2865
3327
  };
2866
3328
  if (!open) return null;
2867
- const content = React40.createElement(
3329
+ const content = React41.createElement(
2868
3330
  "div",
2869
3331
  {
2870
3332
  ref,
@@ -2887,9 +3349,9 @@ var DialogContent = React40.forwardRef(
2887
3349
  }
2888
3350
  );
2889
3351
  DialogContent.displayName = "DialogContent";
2890
- var DialogHeader = React40.forwardRef(
3352
+ var DialogHeader = React41.forwardRef(
2891
3353
  ({ className, ...props }, ref) => {
2892
- return React40.createElement("div", {
3354
+ return React41.createElement("div", {
2893
3355
  ref,
2894
3356
  className: cn("flex flex-col space-y-1.5 text-center sm:text-left", className),
2895
3357
  ...props
@@ -2897,9 +3359,9 @@ var DialogHeader = React40.forwardRef(
2897
3359
  }
2898
3360
  );
2899
3361
  DialogHeader.displayName = "DialogHeader";
2900
- var DialogFooter = React40.forwardRef(
3362
+ var DialogFooter = React41.forwardRef(
2901
3363
  ({ className, ...props }, ref) => {
2902
- return React40.createElement("div", {
3364
+ return React41.createElement("div", {
2903
3365
  ref,
2904
3366
  className: cn(
2905
3367
  "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
@@ -2910,10 +3372,10 @@ var DialogFooter = React40.forwardRef(
2910
3372
  }
2911
3373
  );
2912
3374
  DialogFooter.displayName = "DialogFooter";
2913
- var DialogTitle = React40.forwardRef(
3375
+ var DialogTitle = React41.forwardRef(
2914
3376
  ({ className, ...props }, ref) => {
2915
3377
  const { titleId } = useDialogContext();
2916
- return React40.createElement("h2", {
3378
+ return React41.createElement("h2", {
2917
3379
  ref,
2918
3380
  id: titleId,
2919
3381
  className: cn("text-lg font-semibold leading-none tracking-tight", className),
@@ -2922,9 +3384,9 @@ var DialogTitle = React40.forwardRef(
2922
3384
  }
2923
3385
  );
2924
3386
  DialogTitle.displayName = "DialogTitle";
2925
- var DialogDescription = React40.forwardRef(({ className, ...props }, ref) => {
3387
+ var DialogDescription = React41.forwardRef(({ className, ...props }, ref) => {
2926
3388
  const { descriptionId } = useDialogContext();
2927
- return React40.createElement("p", {
3389
+ return React41.createElement("p", {
2928
3390
  ref,
2929
3391
  id: descriptionId,
2930
3392
  className: cn("text-sm text-muted-foreground", className),
@@ -2932,14 +3394,14 @@ var DialogDescription = React40.forwardRef(({ className, ...props }, ref) => {
2932
3394
  });
2933
3395
  });
2934
3396
  DialogDescription.displayName = "DialogDescription";
2935
- var DialogClose = React40.forwardRef(
3397
+ var DialogClose = React41.forwardRef(
2936
3398
  ({ onClick, children, ...props }, ref) => {
2937
3399
  const { onOpenChange } = useDialogContext();
2938
3400
  const handleClick = (e) => {
2939
3401
  onOpenChange(false);
2940
3402
  onClick?.(e);
2941
3403
  };
2942
- return React40.createElement(
3404
+ return React41.createElement(
2943
3405
  "button",
2944
3406
  {
2945
3407
  ref,
@@ -3044,9 +3506,9 @@ var menuItemVariants = cva({
3044
3506
  });
3045
3507
 
3046
3508
  // ../react-dropdown-menu/dist/index.js
3047
- var DropdownMenuContext = React40.createContext(null);
3509
+ var DropdownMenuContext = React41.createContext(null);
3048
3510
  function useDropdownMenuContext() {
3049
- const ctx = React40.useContext(DropdownMenuContext);
3511
+ const ctx = React41.useContext(DropdownMenuContext);
3050
3512
  if (!ctx) {
3051
3513
  throw new Error("DropdownMenu compound components must be used within <DropdownMenu>");
3052
3514
  }
@@ -3058,10 +3520,10 @@ function DropdownMenu({
3058
3520
  onOpenChange,
3059
3521
  children
3060
3522
  }) {
3061
- const [uncontrolledOpen, setUncontrolledOpen] = React40.useState(defaultOpen);
3523
+ const [uncontrolledOpen, setUncontrolledOpen] = React41.useState(defaultOpen);
3062
3524
  const isControlled = controlledOpen !== void 0;
3063
3525
  const open = isControlled ? controlledOpen : uncontrolledOpen;
3064
- const handleOpenChange = React40.useCallback(
3526
+ const handleOpenChange = React41.useCallback(
3065
3527
  (next) => {
3066
3528
  if (!isControlled) {
3067
3529
  setUncontrolledOpen(next);
@@ -3070,12 +3532,12 @@ function DropdownMenu({
3070
3532
  },
3071
3533
  [isControlled, onOpenChange]
3072
3534
  );
3073
- const apiRef = React40.useRef(null);
3535
+ const apiRef = React41.useRef(null);
3074
3536
  if (apiRef.current === null) {
3075
3537
  apiRef.current = createDropdownMenu({ open });
3076
3538
  }
3077
3539
  const api = apiRef.current;
3078
- const ctx = React40.useMemo(
3540
+ const ctx = React41.useMemo(
3079
3541
  () => ({
3080
3542
  open,
3081
3543
  onOpenChange: handleOpenChange,
@@ -3083,17 +3545,17 @@ function DropdownMenu({
3083
3545
  }),
3084
3546
  [open, handleOpenChange, api.ids.content]
3085
3547
  );
3086
- return React40.createElement(DropdownMenuContext.Provider, { value: ctx }, children);
3548
+ return React41.createElement(DropdownMenuContext.Provider, { value: ctx }, children);
3087
3549
  }
3088
3550
  DropdownMenu.displayName = "DropdownMenu";
3089
- var DropdownMenuTrigger = React40.forwardRef(
3551
+ var DropdownMenuTrigger = React41.forwardRef(
3090
3552
  ({ onClick, children, ...props }, ref) => {
3091
3553
  const { open, onOpenChange, contentId } = useDropdownMenuContext();
3092
3554
  const handleClick = (e) => {
3093
3555
  onOpenChange(!open);
3094
3556
  onClick?.(e);
3095
3557
  };
3096
- return React40.createElement(
3558
+ return React41.createElement(
3097
3559
  "button",
3098
3560
  {
3099
3561
  ref,
@@ -3109,7 +3571,7 @@ var DropdownMenuTrigger = React40.forwardRef(
3109
3571
  }
3110
3572
  );
3111
3573
  DropdownMenuTrigger.displayName = "DropdownMenuTrigger";
3112
- var DropdownMenuContent = React40.forwardRef(
3574
+ var DropdownMenuContent = React41.forwardRef(
3113
3575
  ({ className, children, onKeyDown, ...props }, ref) => {
3114
3576
  const { open, onOpenChange, contentId } = useDropdownMenuContext();
3115
3577
  const handleKeyDown = (e) => {
@@ -3123,7 +3585,7 @@ var DropdownMenuContent = React40.forwardRef(
3123
3585
  onKeyDown?.(e);
3124
3586
  };
3125
3587
  if (!open) return null;
3126
- const content = React40.createElement(
3588
+ const content = React41.createElement(
3127
3589
  "div",
3128
3590
  {
3129
3591
  ref,
@@ -3144,7 +3606,7 @@ var DropdownMenuContent = React40.forwardRef(
3144
3606
  }
3145
3607
  );
3146
3608
  DropdownMenuContent.displayName = "DropdownMenuContent";
3147
- var DropdownMenuItem = React40.forwardRef(
3609
+ var DropdownMenuItem = React41.forwardRef(
3148
3610
  ({ className, disabled, onSelect, onClick, children, ...props }, ref) => {
3149
3611
  const { onOpenChange } = useDropdownMenuContext();
3150
3612
  const handleClick = (e) => {
@@ -3161,7 +3623,7 @@ var DropdownMenuItem = React40.forwardRef(
3161
3623
  onOpenChange(false);
3162
3624
  }
3163
3625
  };
3164
- return React40.createElement(
3626
+ return React41.createElement(
3165
3627
  "div",
3166
3628
  {
3167
3629
  ref,
@@ -3179,9 +3641,9 @@ var DropdownMenuItem = React40.forwardRef(
3179
3641
  }
3180
3642
  );
3181
3643
  DropdownMenuItem.displayName = "DropdownMenuItem";
3182
- var DropdownMenuSeparator = React40.forwardRef(
3644
+ var DropdownMenuSeparator = React41.forwardRef(
3183
3645
  ({ className, ...props }, ref) => {
3184
- return React40.createElement("div", {
3646
+ return React41.createElement("div", {
3185
3647
  ref,
3186
3648
  role: "separator",
3187
3649
  className: cn("-mx-1 my-1 h-px bg-muted", className),
@@ -3190,9 +3652,9 @@ var DropdownMenuSeparator = React40.forwardRef(
3190
3652
  }
3191
3653
  );
3192
3654
  DropdownMenuSeparator.displayName = "DropdownMenuSeparator";
3193
- var DropdownMenuLabel = React40.forwardRef(
3655
+ var DropdownMenuLabel = React41.forwardRef(
3194
3656
  ({ className, ...props }, ref) => {
3195
- return React40.createElement("div", {
3657
+ return React41.createElement("div", {
3196
3658
  ref,
3197
3659
  className: cn("px-2 py-1.5 text-sm font-semibold", className),
3198
3660
  ...props
@@ -3304,15 +3766,15 @@ function FeedbackDialog({
3304
3766
  type = "general",
3305
3767
  className
3306
3768
  }) {
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);
3769
+ const [open, setOpen] = React41.useState(controlledOpen ?? false);
3770
+ const [comment, setComment] = React41.useState("");
3771
+ const [email, setEmail] = React41.useState("");
3772
+ const [honeypot, setHoneypot] = React41.useState("");
3773
+ const [isSubmitting, setIsSubmitting] = React41.useState(false);
3774
+ const [isSubmitted, setIsSubmitted] = React41.useState(false);
3313
3775
  const isControlled = controlledOpen !== void 0;
3314
3776
  const isOpen = isControlled ? controlledOpen : open;
3315
- const handleOpenChange = React40.useCallback(
3777
+ const handleOpenChange = React41.useCallback(
3316
3778
  (next) => {
3317
3779
  if (!isControlled) {
3318
3780
  setOpen(next);
@@ -3321,11 +3783,11 @@ function FeedbackDialog({
3321
3783
  },
3322
3784
  [isControlled, onOpenChange]
3323
3785
  );
3324
- const apiRef = React40.useRef(null);
3786
+ const apiRef = React41.useRef(null);
3325
3787
  if (apiRef.current === null) {
3326
3788
  apiRef.current = createFeedbackDialog({ open: isOpen, onOpenChange: handleOpenChange, onSubmit, type });
3327
3789
  }
3328
- const handleSubmit = React40.useCallback(async () => {
3790
+ const handleSubmit = React41.useCallback(async () => {
3329
3791
  if (honeypot) return;
3330
3792
  if (!comment.trim()) return;
3331
3793
  setIsSubmitting(true);
@@ -3342,7 +3804,7 @@ function FeedbackDialog({
3342
3804
  setIsSubmitting(false);
3343
3805
  }
3344
3806
  }, [comment, email, honeypot, type, onSubmit]);
3345
- const handleReset = React40.useCallback(() => {
3807
+ const handleReset = React41.useCallback(() => {
3346
3808
  setComment("");
3347
3809
  setEmail("");
3348
3810
  setHoneypot("");
@@ -3352,15 +3814,15 @@ function FeedbackDialog({
3352
3814
  if (!isOpen) return null;
3353
3815
  const api = apiRef.current;
3354
3816
  if (isSubmitted) {
3355
- return React40.createElement(
3817
+ return React41.createElement(
3356
3818
  "div",
3357
3819
  {
3358
3820
  className: cn(feedbackDialogVariants({ type }), className),
3359
3821
  ...api.ariaProps,
3360
3822
  "data-state": "submitted"
3361
3823
  },
3362
- React40.createElement("p", { "data-testid": "success-message" }, "Thank you for your feedback!"),
3363
- React40.createElement(
3824
+ React41.createElement("p", { "data-testid": "success-message" }, "Thank you for your feedback!"),
3825
+ React41.createElement(
3364
3826
  "button",
3365
3827
  {
3366
3828
  type: "button",
@@ -3373,22 +3835,22 @@ function FeedbackDialog({
3373
3835
  )
3374
3836
  );
3375
3837
  }
3376
- return React40.createElement(
3838
+ return React41.createElement(
3377
3839
  "div",
3378
3840
  {
3379
3841
  className: cn(feedbackDialogVariants({ type }), className),
3380
3842
  ...api.ariaProps,
3381
3843
  "data-state": "open"
3382
3844
  },
3383
- React40.createElement("h2", { id: `${api.ariaProps.id}-title` }, "Send Feedback"),
3384
- React40.createElement("textarea", {
3845
+ React41.createElement("h2", { id: `${api.ariaProps.id}-title` }, "Send Feedback"),
3846
+ React41.createElement("textarea", {
3385
3847
  "aria-label": "Feedback comment",
3386
3848
  value: comment,
3387
3849
  onChange: (e) => setComment(e.target.value),
3388
3850
  placeholder: "Your feedback...",
3389
3851
  disabled: isSubmitting
3390
3852
  }),
3391
- React40.createElement("input", {
3853
+ React41.createElement("input", {
3392
3854
  type: "email",
3393
3855
  "aria-label": "Email",
3394
3856
  value: email,
@@ -3397,7 +3859,7 @@ function FeedbackDialog({
3397
3859
  disabled: isSubmitting
3398
3860
  }),
3399
3861
  // Honeypot field — hidden from real users
3400
- React40.createElement("input", {
3862
+ React41.createElement("input", {
3401
3863
  type: "text",
3402
3864
  "aria-hidden": true,
3403
3865
  tabIndex: -1,
@@ -3407,7 +3869,7 @@ function FeedbackDialog({
3407
3869
  autoComplete: "off",
3408
3870
  name: "website"
3409
3871
  }),
3410
- React40.createElement(
3872
+ React41.createElement(
3411
3873
  "button",
3412
3874
  {
3413
3875
  type: "button",
@@ -3419,9 +3881,9 @@ function FeedbackDialog({
3419
3881
  );
3420
3882
  }
3421
3883
  FeedbackDialog.displayName = "FeedbackDialog";
3422
- var FeedbackButton = React40.forwardRef(
3884
+ var FeedbackButton = React41.forwardRef(
3423
3885
  ({ children, ...props }, ref) => {
3424
- return React40.createElement(
3886
+ return React41.createElement(
3425
3887
  "button",
3426
3888
  {
3427
3889
  ref,
@@ -3448,7 +3910,7 @@ function createFooter(props = {}) {
3448
3910
  var footerVariants = cva({
3449
3911
  base: "border-t bg-background py-8"
3450
3912
  });
3451
- var Footer = React40.forwardRef(
3913
+ var Footer = React41.forwardRef(
3452
3914
  ({
3453
3915
  copyright,
3454
3916
  socialLinks = [],
@@ -3586,34 +4048,34 @@ function InlineEditor({
3586
4048
  onCancel,
3587
4049
  className
3588
4050
  }) {
3589
- const [isEditing, setIsEditing] = React40.useState(false);
3590
- const [editValue, setEditValue] = React40.useState(initialValue);
3591
- const apiRef = React40.useRef(null);
4051
+ const [isEditing, setIsEditing] = React41.useState(false);
4052
+ const [editValue, setEditValue] = React41.useState(initialValue);
4053
+ const apiRef = React41.useRef(null);
3592
4054
  if (apiRef.current === null) {
3593
4055
  apiRef.current = createInlineEditor({ value: initialValue, onSave, onCancel });
3594
4056
  }
3595
4057
  const api = apiRef.current;
3596
- const handleStartEditing = React40.useCallback(() => {
4058
+ const handleStartEditing = React41.useCallback(() => {
3597
4059
  setIsEditing(true);
3598
4060
  setEditValue(initialValue);
3599
4061
  }, [initialValue]);
3600
- const handleCancel = React40.useCallback(() => {
4062
+ const handleCancel = React41.useCallback(() => {
3601
4063
  setIsEditing(false);
3602
4064
  setEditValue(initialValue);
3603
4065
  onCancel?.();
3604
4066
  }, [initialValue, onCancel]);
3605
- const handleSave = React40.useCallback(() => {
4067
+ const handleSave = React41.useCallback(() => {
3606
4068
  setIsEditing(false);
3607
4069
  onSave?.(editValue);
3608
4070
  }, [editValue, onSave]);
3609
- const handleInsert = React40.useCallback(
4071
+ const handleInsert = React41.useCallback(
3610
4072
  (syntax) => {
3611
4073
  setEditValue((prev) => prev + syntax);
3612
4074
  },
3613
4075
  []
3614
4076
  );
3615
4077
  if (!isEditing) {
3616
- return React40.createElement(
4078
+ return React41.createElement(
3617
4079
  "div",
3618
4080
  {
3619
4081
  className: cn(editorVariants({ state: "viewing" }), className),
@@ -3628,20 +4090,20 @@ function InlineEditor({
3628
4090
  }
3629
4091
  }
3630
4092
  },
3631
- React40.createElement("div", { className: previewVariants() }, editValue || initialValue)
4093
+ React41.createElement("div", { className: previewVariants() }, editValue || initialValue)
3632
4094
  );
3633
4095
  }
3634
- return React40.createElement(
4096
+ return React41.createElement(
3635
4097
  "div",
3636
4098
  {
3637
4099
  className: cn(editorVariants({ state: "editing" }), className)
3638
4100
  },
3639
4101
  // Toolbar
3640
- React40.createElement(
4102
+ React41.createElement(
3641
4103
  "div",
3642
4104
  { className: toolbarVariants(), role: "toolbar", "aria-label": "Formatting toolbar" },
3643
4105
  ...api.toolbarActions.map(
3644
- (action) => React40.createElement(
4106
+ (action) => React41.createElement(
3645
4107
  "button",
3646
4108
  {
3647
4109
  key: action.name,
@@ -3655,16 +4117,16 @@ function InlineEditor({
3655
4117
  )
3656
4118
  ),
3657
4119
  // Editor area: side-by-side textarea + preview
3658
- React40.createElement(
4120
+ React41.createElement(
3659
4121
  "div",
3660
4122
  { className: "flex gap-2 p-2" },
3661
- React40.createElement("textarea", {
4123
+ React41.createElement("textarea", {
3662
4124
  value: editValue,
3663
4125
  onChange: (e) => setEditValue(e.target.value),
3664
4126
  className: "flex-1 min-h-[100px] resize-y border rounded p-2",
3665
4127
  "aria-label": "Editor content"
3666
4128
  }),
3667
- React40.createElement(
4129
+ React41.createElement(
3668
4130
  "div",
3669
4131
  {
3670
4132
  className: cn("flex-1", previewVariants()),
@@ -3674,15 +4136,15 @@ function InlineEditor({
3674
4136
  )
3675
4137
  ),
3676
4138
  // Action buttons
3677
- React40.createElement(
4139
+ React41.createElement(
3678
4140
  "div",
3679
4141
  { className: "flex justify-end gap-2 p-2 border-t" },
3680
- React40.createElement(
4142
+ React41.createElement(
3681
4143
  "button",
3682
4144
  { type: "button", onClick: handleCancel },
3683
4145
  "Cancel"
3684
4146
  ),
3685
- React40.createElement(
4147
+ React41.createElement(
3686
4148
  "button",
3687
4149
  { type: "button", onClick: handleSave },
3688
4150
  "Save"
@@ -3738,7 +4200,7 @@ var inputVariants = cva({
3738
4200
  size: "default"
3739
4201
  }
3740
4202
  });
3741
- var Input = React40.forwardRef(
4203
+ var Input = React41.forwardRef(
3742
4204
  ({ type = "text", size, className, disabled, readOnly, required, "aria-invalid": ariaInvalid, ...props }, ref) => {
3743
4205
  const api = createInput({
3744
4206
  disabled,
@@ -3831,7 +4293,7 @@ var inputGroupButtonVariants = cva({
3831
4293
  orientation: "horizontal"
3832
4294
  }
3833
4295
  });
3834
- var InputGroup = React40.forwardRef(
4296
+ var InputGroup = React41.forwardRef(
3835
4297
  ({ orientation = "horizontal", className, children, ...props }, ref) => {
3836
4298
  const api = createInputGroup({
3837
4299
  orientation,
@@ -3853,7 +4315,7 @@ var InputGroup = React40.forwardRef(
3853
4315
  }
3854
4316
  );
3855
4317
  InputGroup.displayName = "InputGroup";
3856
- var InputGroupAddon = React40.forwardRef(
4318
+ var InputGroupAddon = React41.forwardRef(
3857
4319
  ({ orientation = "horizontal", className, children, ...props }, ref) => {
3858
4320
  return /* @__PURE__ */ jsx(
3859
4321
  "div",
@@ -3867,7 +4329,7 @@ var InputGroupAddon = React40.forwardRef(
3867
4329
  }
3868
4330
  );
3869
4331
  InputGroupAddon.displayName = "InputGroupAddon";
3870
- var InputGroupText = React40.forwardRef(
4332
+ var InputGroupText = React41.forwardRef(
3871
4333
  ({ className, children, ...props }, ref) => {
3872
4334
  return /* @__PURE__ */ jsx(
3873
4335
  "span",
@@ -3881,7 +4343,7 @@ var InputGroupText = React40.forwardRef(
3881
4343
  }
3882
4344
  );
3883
4345
  InputGroupText.displayName = "InputGroupText";
3884
- var InputGroupButton = React40.forwardRef(
4346
+ var InputGroupButton = React41.forwardRef(
3885
4347
  ({ orientation = "horizontal", className, children, ...props }, ref) => {
3886
4348
  return /* @__PURE__ */ jsx(
3887
4349
  "button",
@@ -3947,7 +4409,7 @@ function createLocalStorage() {
3947
4409
  }
3948
4410
  };
3949
4411
  }
3950
- var InstallPrompt = React40.forwardRef(
4412
+ var InstallPrompt = React41.forwardRef(
3951
4413
  ({
3952
4414
  delay = 3e3,
3953
4415
  storageKey,
@@ -3957,14 +4419,14 @@ var InstallPrompt = React40.forwardRef(
3957
4419
  className,
3958
4420
  ...props
3959
4421
  }, ref) => {
3960
- const storageRef = React40.useRef(void 0);
4422
+ const storageRef = React41.useRef(void 0);
3961
4423
  if (typeof window !== "undefined" && !storageRef.current) {
3962
4424
  storageRef.current = createLocalStorage();
3963
4425
  }
3964
4426
  const api = createInstallPrompt({ storageKey }, storageRef.current);
3965
- const [visible, setVisible] = React40.useState(false);
3966
- const promptEventRef = React40.useRef(null);
3967
- React40.useEffect(() => {
4427
+ const [visible, setVisible] = React41.useState(false);
4428
+ const promptEventRef = React41.useRef(null);
4429
+ React41.useEffect(() => {
3968
4430
  if (api.state.isDismissed) return;
3969
4431
  const handleBeforeInstall = (e) => {
3970
4432
  e.preventDefault();
@@ -4205,7 +4667,7 @@ function sanitizeHtml(html) {
4205
4667
  sanitized = sanitized.replace(/(href|src)\s*=\s*["']?\s*javascript\s*:[^"'>]*/gi, '$1=""');
4206
4668
  return sanitized;
4207
4669
  }
4208
- var MarkdownRenderer = React40.forwardRef(
4670
+ var MarkdownRenderer = React41.forwardRef(
4209
4671
  ({ content, components, linkResolver, className, size }, ref) => {
4210
4672
  const coreProps = { content, components, linkResolver };
4211
4673
  const api = createMarkdownRenderer(coreProps);
@@ -4294,20 +4756,20 @@ var mobileNavLinkVariants = cva({
4294
4756
  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
4757
  variants: {}
4296
4758
  });
4297
- var MobileNavContext = React40.createContext(null);
4759
+ var MobileNavContext = React41.createContext(null);
4298
4760
  function useMobileNavContext() {
4299
- const ctx = React40.useContext(MobileNavContext);
4761
+ const ctx = React41.useContext(MobileNavContext);
4300
4762
  if (!ctx) {
4301
4763
  throw new Error("MobileNav compound components must be used within <MobileNav>");
4302
4764
  }
4303
4765
  return ctx;
4304
4766
  }
4305
- var MobileNav = React40.forwardRef(
4767
+ var MobileNav = React41.forwardRef(
4306
4768
  ({ open: controlledOpen, onOpenChange, defaultOpen = false, className, children, ...props }, ref) => {
4307
- const [uncontrolledOpen, setUncontrolledOpen] = React40.useState(defaultOpen);
4769
+ const [uncontrolledOpen, setUncontrolledOpen] = React41.useState(defaultOpen);
4308
4770
  const isControlled = controlledOpen !== void 0;
4309
4771
  const open = isControlled ? controlledOpen : uncontrolledOpen;
4310
- const setOpen = React40.useCallback(
4772
+ const setOpen = React41.useCallback(
4311
4773
  (value) => {
4312
4774
  if (!isControlled) {
4313
4775
  setUncontrolledOpen(value);
@@ -4317,11 +4779,11 @@ var MobileNav = React40.forwardRef(
4317
4779
  [isControlled, onOpenChange]
4318
4780
  );
4319
4781
  const api = createMobileNav({ open, onOpenChange: setOpen, id: props.id });
4320
- const handleKeyDown = React40.useMemo(
4782
+ const handleKeyDown = React41.useMemo(
4321
4783
  () => createKeyboardHandler(api.keyboardHandlers),
4322
4784
  [open]
4323
4785
  );
4324
- const contextValue = React40.useMemo(
4786
+ const contextValue = React41.useMemo(
4325
4787
  () => ({ open, setOpen, contentId: api.contentProps.id }),
4326
4788
  [open, setOpen, api.contentProps.id]
4327
4789
  );
@@ -4338,7 +4800,7 @@ var MobileNav = React40.forwardRef(
4338
4800
  }
4339
4801
  );
4340
4802
  MobileNav.displayName = "MobileNav";
4341
- var MobileNavTrigger = React40.forwardRef(
4803
+ var MobileNavTrigger = React41.forwardRef(
4342
4804
  ({ className, children, ...props }, ref) => {
4343
4805
  const { open, setOpen, contentId } = useMobileNavContext();
4344
4806
  return /* @__PURE__ */ jsx(
@@ -4379,7 +4841,7 @@ var MobileNavTrigger = React40.forwardRef(
4379
4841
  }
4380
4842
  );
4381
4843
  MobileNavTrigger.displayName = "MobileNavTrigger";
4382
- var MobileNavContent = React40.forwardRef(
4844
+ var MobileNavContent = React41.forwardRef(
4383
4845
  ({ className, children, ...props }, ref) => {
4384
4846
  const { open, contentId } = useMobileNavContext();
4385
4847
  const state = open ? "open" : "closed";
@@ -4398,7 +4860,7 @@ var MobileNavContent = React40.forwardRef(
4398
4860
  }
4399
4861
  );
4400
4862
  MobileNavContent.displayName = "MobileNavContent";
4401
- var MobileNavLink = React40.forwardRef(
4863
+ var MobileNavLink = React41.forwardRef(
4402
4864
  ({ className, children, ...props }, ref) => {
4403
4865
  return /* @__PURE__ */ jsx(
4404
4866
  "a",
@@ -4457,7 +4919,7 @@ var navLinkVariants = cva({
4457
4919
  active: "false"
4458
4920
  }
4459
4921
  });
4460
- var Navbar = React40.forwardRef(
4922
+ var Navbar = React41.forwardRef(
4461
4923
  ({
4462
4924
  links = [],
4463
4925
  currentPath,
@@ -4552,19 +5014,19 @@ var popoverContentVariants = cva({
4552
5014
  side: "bottom"
4553
5015
  }
4554
5016
  });
4555
- var PopoverContext = React40.createContext(null);
5017
+ var PopoverContext = React41.createContext(null);
4556
5018
  function usePopoverContext() {
4557
- const ctx = React40.useContext(PopoverContext);
5019
+ const ctx = React41.useContext(PopoverContext);
4558
5020
  if (!ctx) {
4559
5021
  throw new Error("Popover compound components must be used within <Popover>");
4560
5022
  }
4561
5023
  return ctx;
4562
5024
  }
4563
5025
  function Popover({ open: controlledOpen, defaultOpen = false, onOpenChange, placement, children }) {
4564
- const [internalOpen, setInternalOpen] = React40.useState(controlledOpen ?? defaultOpen);
5026
+ const [internalOpen, setInternalOpen] = React41.useState(controlledOpen ?? defaultOpen);
4565
5027
  const isControlled = controlledOpen !== void 0;
4566
5028
  const isOpen = isControlled ? controlledOpen : internalOpen;
4567
- const handleOpenChange = React40.useCallback(
5029
+ const handleOpenChange = React41.useCallback(
4568
5030
  (value) => {
4569
5031
  if (!isControlled) {
4570
5032
  setInternalOpen(value);
@@ -4573,18 +5035,18 @@ function Popover({ open: controlledOpen, defaultOpen = false, onOpenChange, plac
4573
5035
  },
4574
5036
  [isControlled, onOpenChange]
4575
5037
  );
4576
- const api = React40.useMemo(
5038
+ const api = React41.useMemo(
4577
5039
  () => createPopover({ open: isOpen, onOpenChange: handleOpenChange, placement }),
4578
5040
  [isOpen, handleOpenChange, placement]
4579
5041
  );
4580
- const ctx = React40.useMemo(
5042
+ const ctx = React41.useMemo(
4581
5043
  () => ({ api, open: isOpen, setOpen: handleOpenChange }),
4582
5044
  [api, isOpen, handleOpenChange]
4583
5045
  );
4584
- return React40.createElement(PopoverContext.Provider, { value: ctx }, children);
5046
+ return React41.createElement(PopoverContext.Provider, { value: ctx }, children);
4585
5047
  }
4586
5048
  Popover.displayName = "Popover";
4587
- var PopoverTrigger = React40.forwardRef(
5049
+ var PopoverTrigger = React41.forwardRef(
4588
5050
  ({ onClick, children, ...props }, ref) => {
4589
5051
  const { api, setOpen, open } = usePopoverContext();
4590
5052
  const handleClick = (e) => {
@@ -4607,7 +5069,7 @@ var PopoverTrigger = React40.forwardRef(
4607
5069
  }
4608
5070
  );
4609
5071
  PopoverTrigger.displayName = "PopoverTrigger";
4610
- var PopoverContent = React40.forwardRef(
5072
+ var PopoverContent = React41.forwardRef(
4611
5073
  ({ side, className, children, onKeyDown, ...props }, ref) => {
4612
5074
  const { api, open, setOpen } = usePopoverContext();
4613
5075
  const handleKeyDown = (e) => {
@@ -4636,7 +5098,7 @@ var PopoverContent = React40.forwardRef(
4636
5098
  }
4637
5099
  );
4638
5100
  PopoverContent.displayName = "PopoverContent";
4639
- var PopoverClose = React40.forwardRef(
5101
+ var PopoverClose = React41.forwardRef(
4640
5102
  ({ onClick, children, ...props }, ref) => {
4641
5103
  const { setOpen } = usePopoverContext();
4642
5104
  const handleClick = (e) => {
@@ -4757,9 +5219,9 @@ var searchResultVariants = cva({
4757
5219
  });
4758
5220
 
4759
5221
  // ../react-search-bar/dist/index.js
4760
- var SearchBarContext = React40.createContext(null);
5222
+ var SearchBarContext = React41.createContext(null);
4761
5223
  function useSearchBarContext() {
4762
- const ctx = React40.useContext(SearchBarContext);
5224
+ const ctx = React41.useContext(SearchBarContext);
4763
5225
  if (!ctx) {
4764
5226
  throw new Error("SearchBar compound components must be used within <SearchBar>");
4765
5227
  }
@@ -4777,11 +5239,11 @@ function SearchBar({
4777
5239
  children,
4778
5240
  ...inputProps
4779
5241
  }) {
4780
- const [internalValue, setInternalValue] = React40.useState(controlledValue ?? defaultValue);
5242
+ const [internalValue, setInternalValue] = React41.useState(controlledValue ?? defaultValue);
4781
5243
  const isControlled = controlledValue !== void 0;
4782
5244
  const currentValue = isControlled ? controlledValue : internalValue;
4783
- const debounceRef = React40.useRef(void 0);
4784
- const handleValueChange = React40.useCallback(
5245
+ const debounceRef = React41.useRef(void 0);
5246
+ const handleValueChange = React41.useCallback(
4785
5247
  (val) => {
4786
5248
  if (!isControlled) {
4787
5249
  setInternalValue(val);
@@ -4790,8 +5252,8 @@ function SearchBar({
4790
5252
  },
4791
5253
  [isControlled, onValueChange]
4792
5254
  );
4793
- const [isSearching, setIsSearching] = React40.useState(loading);
4794
- const handleSearch = React40.useCallback(
5255
+ const [isSearching, setIsSearching] = React41.useState(loading);
5256
+ const handleSearch = React41.useCallback(
4795
5257
  (val) => {
4796
5258
  if (debounceRef.current !== void 0) {
4797
5259
  clearTimeout(debounceRef.current);
@@ -4808,7 +5270,7 @@ function SearchBar({
4808
5270
  },
4809
5271
  [onSearch, debounceMs]
4810
5272
  );
4811
- const handleChange = React40.useCallback(
5273
+ const handleChange = React41.useCallback(
4812
5274
  (e) => {
4813
5275
  const val = e.target.value;
4814
5276
  handleValueChange(val);
@@ -4816,14 +5278,14 @@ function SearchBar({
4816
5278
  },
4817
5279
  [handleValueChange, handleSearch]
4818
5280
  );
4819
- const clear = React40.useCallback(() => {
5281
+ const clear = React41.useCallback(() => {
4820
5282
  if (debounceRef.current !== void 0) {
4821
5283
  clearTimeout(debounceRef.current);
4822
5284
  }
4823
5285
  handleValueChange("");
4824
5286
  setIsSearching(false);
4825
5287
  }, [handleValueChange]);
4826
- const api = React40.useMemo(
5288
+ const api = React41.useMemo(
4827
5289
  () => createSearchBar({
4828
5290
  value: currentValue,
4829
5291
  onValueChange: handleValueChange,
@@ -4834,7 +5296,7 @@ function SearchBar({
4834
5296
  }),
4835
5297
  [currentValue, handleValueChange, onSearch, debounceMs, placeholder, loading]
4836
5298
  );
4837
- const handleKeyDown = React40.useCallback(
5299
+ const handleKeyDown = React41.useCallback(
4838
5300
  (e) => {
4839
5301
  if (e.key === "Escape") {
4840
5302
  clear();
@@ -4848,18 +5310,18 @@ function SearchBar({
4848
5310
  },
4849
5311
  [clear, onSearch, currentValue]
4850
5312
  );
4851
- const ctx = React40.useMemo(
5313
+ const ctx = React41.useMemo(
4852
5314
  () => ({ api, value: currentValue, isSearching, setValue: handleValueChange, clear }),
4853
5315
  [api, currentValue, isSearching, handleValueChange, clear]
4854
5316
  );
4855
- return React40.createElement(
5317
+ return React41.createElement(
4856
5318
  SearchBarContext.Provider,
4857
5319
  { value: ctx },
4858
- React40.createElement(
5320
+ React41.createElement(
4859
5321
  "div",
4860
5322
  { className: cn(searchBarVariants(), className) },
4861
- React40.createElement("span", { className: "rfr-search-icon", "aria-hidden": "true" }, "\u{1F50D}"),
4862
- React40.createElement("input", {
5323
+ React41.createElement("span", { className: "rfr-search-icon", "aria-hidden": "true" }, "\u{1F50D}"),
5324
+ React41.createElement("input", {
4863
5325
  ...inputProps,
4864
5326
  role: api.inputProps.role,
4865
5327
  "aria-expanded": api.inputProps["aria-expanded"],
@@ -4871,8 +5333,8 @@ function SearchBar({
4871
5333
  onKeyDown: handleKeyDown,
4872
5334
  className: "rfr-search-input flex-1 bg-transparent outline-none"
4873
5335
  }),
4874
- isSearching && React40.createElement("span", { className: "rfr-search-spinner", "aria-label": "Loading" }, "\u23F3"),
4875
- currentValue.length > 0 && !isSearching && React40.createElement(
5336
+ isSearching && React41.createElement("span", { className: "rfr-search-spinner", "aria-label": "Loading" }, "\u23F3"),
5337
+ currentValue.length > 0 && !isSearching && React41.createElement(
4876
5338
  "button",
4877
5339
  {
4878
5340
  type: "button",
@@ -4887,11 +5349,11 @@ function SearchBar({
4887
5349
  );
4888
5350
  }
4889
5351
  SearchBar.displayName = "SearchBar";
4890
- var SearchResults = React40.forwardRef(
5352
+ var SearchResults = React41.forwardRef(
4891
5353
  ({ className, children, ...props }, ref) => {
4892
5354
  const { api, value } = useSearchBarContext();
4893
5355
  if (value.length === 0) return null;
4894
- return React40.createElement(
5356
+ return React41.createElement(
4895
5357
  "ul",
4896
5358
  {
4897
5359
  ref,
@@ -4905,9 +5367,9 @@ var SearchResults = React40.forwardRef(
4905
5367
  }
4906
5368
  );
4907
5369
  SearchResults.displayName = "SearchResults";
4908
- var SearchResultItem = React40.forwardRef(
5370
+ var SearchResultItem = React41.forwardRef(
4909
5371
  ({ className, children, ...props }, ref) => {
4910
- return React40.createElement(
5372
+ return React41.createElement(
4911
5373
  "li",
4912
5374
  {
4913
5375
  ref,
@@ -4968,7 +5430,7 @@ var sidebarItemVariants = cva({
4968
5430
  active: "false"
4969
5431
  }
4970
5432
  });
4971
- var Sidebar = React40.forwardRef(
5433
+ var Sidebar = React41.forwardRef(
4972
5434
  ({
4973
5435
  sections = [],
4974
5436
  currentPath,
@@ -5038,7 +5500,7 @@ var skeletonVariants = cva({
5038
5500
  });
5039
5501
 
5040
5502
  // ../react-skeleton/dist/index.js
5041
- var Skeleton = React40.forwardRef(
5503
+ var Skeleton = React41.forwardRef(
5042
5504
  ({ shape, width, height, animate, className, style, ...props }, ref) => {
5043
5505
  const api = createSkeleton({ shape, animate });
5044
5506
  const classes = cn(skeletonVariants({ shape }), className);
@@ -5047,7 +5509,7 @@ var Skeleton = React40.forwardRef(
5047
5509
  ...width !== void 0 ? { width } : {},
5048
5510
  ...height !== void 0 ? { height } : {}
5049
5511
  };
5050
- return React40.createElement("div", {
5512
+ return React41.createElement("div", {
5051
5513
  ref,
5052
5514
  className: classes,
5053
5515
  style: Object.keys(mergedStyle).length > 0 ? mergedStyle : void 0,
@@ -5059,13 +5521,13 @@ var Skeleton = React40.forwardRef(
5059
5521
  );
5060
5522
  Skeleton.displayName = "Skeleton";
5061
5523
  var lineWidths = ["100%", "92%", "85%", "96%", "78%", "88%", "94%", "82%"];
5062
- var SkeletonText = React40.forwardRef(
5524
+ var SkeletonText = React41.forwardRef(
5063
5525
  ({ lines = 3, animate, className, ...props }, ref) => {
5064
5526
  const children = [];
5065
5527
  for (let i = 0; i < lines; i++) {
5066
5528
  const width = lineWidths[i % lineWidths.length];
5067
5529
  children.push(
5068
- React40.createElement(Skeleton, {
5530
+ React41.createElement(Skeleton, {
5069
5531
  key: i,
5070
5532
  shape: "text",
5071
5533
  width,
@@ -5073,7 +5535,7 @@ var SkeletonText = React40.forwardRef(
5073
5535
  })
5074
5536
  );
5075
5537
  }
5076
- return React40.createElement(
5538
+ return React41.createElement(
5077
5539
  "div",
5078
5540
  {
5079
5541
  ref,
@@ -5174,16 +5636,16 @@ function createTabs(props = {}) {
5174
5636
  };
5175
5637
  }
5176
5638
  var tabsListVariants = cva({
5177
- base: "inline-flex items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground"
5639
+ base: "inline-flex max-w-full overflow-x-auto items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground"
5178
5640
  });
5179
5641
  var tabsTriggerVariants = cva({
5180
5642
  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
5643
  });
5182
5644
 
5183
5645
  // ../react-tabs/dist/index.js
5184
- var TabsContext = React40.createContext(null);
5646
+ var TabsContext = React41.createContext(null);
5185
5647
  function useTabsContext() {
5186
- const ctx = React40.useContext(TabsContext);
5648
+ const ctx = React41.useContext(TabsContext);
5187
5649
  if (!ctx) {
5188
5650
  throw new Error("Tabs compound components must be used within <Tabs>");
5189
5651
  }
@@ -5197,10 +5659,10 @@ function Tabs({
5197
5659
  className,
5198
5660
  children
5199
5661
  }) {
5200
- const [uncontrolledValue, setUncontrolledValue] = React40.useState(defaultValue);
5662
+ const [uncontrolledValue, setUncontrolledValue] = React41.useState(defaultValue);
5201
5663
  const isControlled = controlledValue !== void 0;
5202
5664
  const value = isControlled ? controlledValue : uncontrolledValue;
5203
- const handleValueChange = React40.useCallback(
5665
+ const handleValueChange = React41.useCallback(
5204
5666
  (next) => {
5205
5667
  if (!isControlled) {
5206
5668
  setUncontrolledValue(next);
@@ -5209,12 +5671,12 @@ function Tabs({
5209
5671
  },
5210
5672
  [isControlled, onValueChange]
5211
5673
  );
5212
- const apiRef = React40.useRef(null);
5674
+ const apiRef = React41.useRef(null);
5213
5675
  if (apiRef.current === null) {
5214
5676
  apiRef.current = createTabs({ value, orientation });
5215
5677
  }
5216
5678
  const api = apiRef.current;
5217
- const ctx = React40.useMemo(
5679
+ const ctx = React41.useMemo(
5218
5680
  () => ({
5219
5681
  value,
5220
5682
  onValueChange: handleValueChange,
@@ -5223,17 +5685,17 @@ function Tabs({
5223
5685
  }),
5224
5686
  [value, handleValueChange, orientation, api.idPrefix]
5225
5687
  );
5226
- return React40.createElement(
5688
+ return React41.createElement(
5227
5689
  "div",
5228
5690
  { className, "data-orientation": orientation },
5229
- React40.createElement(TabsContext.Provider, { value: ctx }, children)
5691
+ React41.createElement(TabsContext.Provider, { value: ctx }, children)
5230
5692
  );
5231
5693
  }
5232
5694
  Tabs.displayName = "Tabs";
5233
- var TabsList = React40.forwardRef(
5695
+ var TabsList = React41.forwardRef(
5234
5696
  ({ className, ...props }, ref) => {
5235
5697
  const { orientation } = useTabsContext();
5236
- return React40.createElement("div", {
5698
+ return React41.createElement("div", {
5237
5699
  ref,
5238
5700
  role: "tablist",
5239
5701
  "aria-orientation": orientation,
@@ -5243,7 +5705,7 @@ var TabsList = React40.forwardRef(
5243
5705
  }
5244
5706
  );
5245
5707
  TabsList.displayName = "TabsList";
5246
- var TabsTrigger = React40.forwardRef(
5708
+ var TabsTrigger = React41.forwardRef(
5247
5709
  ({ value, className, onClick, onKeyDown, children, ...props }, ref) => {
5248
5710
  const { value: activeValue, onValueChange, orientation, idPrefix } = useTabsContext();
5249
5711
  const isSelected = activeValue === value;
@@ -5256,7 +5718,7 @@ var TabsTrigger = React40.forwardRef(
5256
5718
  const handleKeyDown = (e) => {
5257
5719
  onKeyDown?.(e);
5258
5720
  };
5259
- return React40.createElement(
5721
+ return React41.createElement(
5260
5722
  "button",
5261
5723
  {
5262
5724
  ref,
@@ -5277,14 +5739,14 @@ var TabsTrigger = React40.forwardRef(
5277
5739
  }
5278
5740
  );
5279
5741
  TabsTrigger.displayName = "TabsTrigger";
5280
- var TabsContent = React40.forwardRef(
5742
+ var TabsContent = React41.forwardRef(
5281
5743
  ({ value, className, children, ...props }, ref) => {
5282
5744
  const { value: activeValue, idPrefix } = useTabsContext();
5283
5745
  const isSelected = activeValue === value;
5284
5746
  const tabId = `${idPrefix}-tab-${value}`;
5285
5747
  const panelId = `${idPrefix}-panel-${value}`;
5286
5748
  if (!isSelected) return null;
5287
- return React40.createElement(
5749
+ return React41.createElement(
5288
5750
  "div",
5289
5751
  {
5290
5752
  ref,
@@ -5348,7 +5810,7 @@ var textareaVariants = cva({
5348
5810
  size: "default"
5349
5811
  }
5350
5812
  });
5351
- var Textarea = React40.forwardRef(
5813
+ var Textarea = React41.forwardRef(
5352
5814
  ({ size, className, disabled, readOnly, required, rows, maxRows, "aria-invalid": ariaInvalid, ...props }, ref) => {
5353
5815
  const api = createTextarea({
5354
5816
  disabled,
@@ -5505,30 +5967,30 @@ var toastVariants = cva({
5505
5967
  });
5506
5968
 
5507
5969
  // ../react-toast/dist/index.js
5508
- var ToastContext = React40.createContext(null);
5970
+ var ToastContext = React41.createContext(null);
5509
5971
  function useToastContext() {
5510
- const ctx = React40.useContext(ToastContext);
5972
+ const ctx = React41.useContext(ToastContext);
5511
5973
  if (!ctx) {
5512
5974
  throw new Error("useToast must be used within a <ToastProvider>");
5513
5975
  }
5514
5976
  return ctx;
5515
5977
  }
5516
5978
  function ToastProvider({ children }) {
5517
- const managerRef = React40.useRef(null);
5979
+ const managerRef = React41.useRef(null);
5518
5980
  if (managerRef.current === null) {
5519
5981
  managerRef.current = createToastManager();
5520
5982
  }
5521
- const ctx = React40.useMemo(
5983
+ const ctx = React41.useMemo(
5522
5984
  () => ({ manager: managerRef.current }),
5523
5985
  []
5524
5986
  );
5525
- return React40.createElement(ToastContext.Provider, { value: ctx }, children);
5987
+ return React41.createElement(ToastContext.Provider, { value: ctx }, children);
5526
5988
  }
5527
5989
  ToastProvider.displayName = "ToastProvider";
5528
5990
  function useToast() {
5529
5991
  const { manager } = useToastContext();
5530
- const [toasts, setToasts] = React40.useState(manager.toasts);
5531
- React40.useEffect(() => {
5992
+ const [toasts, setToasts] = React41.useState(manager.toasts);
5993
+ React41.useEffect(() => {
5532
5994
  setToasts(manager.toasts);
5533
5995
  const unsub = manager.subscribe(setToasts);
5534
5996
  return unsub;
@@ -5539,13 +6001,13 @@ function useToast() {
5539
6001
  toasts
5540
6002
  };
5541
6003
  }
5542
- var Toast = React40.forwardRef(
6004
+ var Toast = React41.forwardRef(
5543
6005
  ({ entry, onDismiss, className, children, onMouseEnter, onMouseLeave, ...props }, ref) => {
5544
- const api = React40.useMemo(
6006
+ const api = React41.useMemo(
5545
6007
  () => createToast({ variant: entry.variant, duration: entry.duration }),
5546
6008
  [entry.variant, entry.duration]
5547
6009
  );
5548
- React40.useEffect(() => {
6010
+ React41.useEffect(() => {
5549
6011
  api.startTimer();
5550
6012
  return () => api.pauseTimer();
5551
6013
  }, [api]);
@@ -5557,7 +6019,7 @@ var Toast = React40.forwardRef(
5557
6019
  api.resumeTimer();
5558
6020
  onMouseLeave?.(e);
5559
6021
  };
5560
- return React40.createElement(
6022
+ return React41.createElement(
5561
6023
  "div",
5562
6024
  {
5563
6025
  ref,
@@ -5567,9 +6029,9 @@ var Toast = React40.forwardRef(
5567
6029
  onMouseLeave: handleMouseLeave,
5568
6030
  ...props
5569
6031
  },
5570
- React40.createElement("div", { className: "flex-1" }, entry.message),
6032
+ React41.createElement("div", { className: "flex-1" }, entry.message),
5571
6033
  children,
5572
- onDismiss && React40.createElement(
6034
+ onDismiss && React41.createElement(
5573
6035
  "button",
5574
6036
  {
5575
6037
  type: "button",
@@ -5583,10 +6045,10 @@ var Toast = React40.forwardRef(
5583
6045
  }
5584
6046
  );
5585
6047
  Toast.displayName = "Toast";
5586
- var Toaster = React40.forwardRef(
6048
+ var Toaster = React41.forwardRef(
5587
6049
  ({ className, ...props }, ref) => {
5588
6050
  const { toasts, dismiss } = useToast();
5589
- return React40.createElement(
6051
+ return React41.createElement(
5590
6052
  "div",
5591
6053
  {
5592
6054
  ref,
@@ -5597,7 +6059,7 @@ var Toaster = React40.forwardRef(
5597
6059
  ...props
5598
6060
  },
5599
6061
  toasts.map(
5600
- (entry) => React40.createElement(Toast, {
6062
+ (entry) => React41.createElement(Toast, {
5601
6063
  key: entry.id,
5602
6064
  entry,
5603
6065
  onDismiss: dismiss
@@ -5684,9 +6146,9 @@ var tooltipContentVariants = cva({
5684
6146
  side: "top"
5685
6147
  }
5686
6148
  });
5687
- var TooltipContext = React40.createContext(null);
6149
+ var TooltipContext = React41.createContext(null);
5688
6150
  function useTooltipContext() {
5689
- const ctx = React40.useContext(TooltipContext);
6151
+ const ctx = React41.useContext(TooltipContext);
5690
6152
  if (!ctx) {
5691
6153
  throw new Error("Tooltip compound components must be used within <Tooltip>");
5692
6154
  }
@@ -5700,11 +6162,11 @@ function Tooltip({
5700
6162
  delayDuration = 300,
5701
6163
  children
5702
6164
  }) {
5703
- const [internalOpen, setInternalOpen] = React40.useState(controlledOpen ?? defaultOpen);
6165
+ const [internalOpen, setInternalOpen] = React41.useState(controlledOpen ?? defaultOpen);
5704
6166
  const isControlled = controlledOpen !== void 0;
5705
6167
  const isOpen = isControlled ? controlledOpen : internalOpen;
5706
- const timerRef = React40.useRef(null);
5707
- const handleOpenChange = React40.useCallback(
6168
+ const timerRef = React41.useRef(null);
6169
+ const handleOpenChange = React41.useCallback(
5708
6170
  (value) => {
5709
6171
  if (!isControlled) {
5710
6172
  setInternalOpen(value);
@@ -5713,17 +6175,17 @@ function Tooltip({
5713
6175
  },
5714
6176
  [isControlled, onOpenChange]
5715
6177
  );
5716
- const api = React40.useMemo(
6178
+ const api = React41.useMemo(
5717
6179
  () => createTooltip({ open: isOpen, onOpenChange: handleOpenChange, placement, delayDuration }),
5718
6180
  [isOpen, handleOpenChange, placement, delayDuration]
5719
6181
  );
5720
- const cancelDelay = React40.useCallback(() => {
6182
+ const cancelDelay = React41.useCallback(() => {
5721
6183
  if (timerRef.current !== null) {
5722
6184
  clearTimeout(timerRef.current);
5723
6185
  timerRef.current = null;
5724
6186
  }
5725
6187
  }, []);
5726
- const openWithDelay = React40.useCallback(() => {
6188
+ const openWithDelay = React41.useCallback(() => {
5727
6189
  cancelDelay();
5728
6190
  if (delayDuration <= 0) {
5729
6191
  handleOpenChange(true);
@@ -5734,21 +6196,21 @@ function Tooltip({
5734
6196
  timerRef.current = null;
5735
6197
  }, delayDuration);
5736
6198
  }, [cancelDelay, delayDuration, handleOpenChange]);
5737
- React40.useEffect(() => {
6199
+ React41.useEffect(() => {
5738
6200
  return () => {
5739
6201
  if (timerRef.current !== null) {
5740
6202
  clearTimeout(timerRef.current);
5741
6203
  }
5742
6204
  };
5743
6205
  }, []);
5744
- const ctx = React40.useMemo(
6206
+ const ctx = React41.useMemo(
5745
6207
  () => ({ api, open: isOpen, setOpen: handleOpenChange, openWithDelay, cancelDelay }),
5746
6208
  [api, isOpen, handleOpenChange, openWithDelay, cancelDelay]
5747
6209
  );
5748
- return React40.createElement(TooltipContext.Provider, { value: ctx }, children);
6210
+ return React41.createElement(TooltipContext.Provider, { value: ctx }, children);
5749
6211
  }
5750
6212
  Tooltip.displayName = "Tooltip";
5751
- var TooltipTrigger = React40.forwardRef(
6213
+ var TooltipTrigger = React41.forwardRef(
5752
6214
  ({ onMouseEnter, onMouseLeave, onFocus, onBlur, children, ...props }, ref) => {
5753
6215
  const { api, setOpen, openWithDelay, cancelDelay } = useTooltipContext();
5754
6216
  const handleMouseEnter = (e) => {
@@ -5785,7 +6247,7 @@ var TooltipTrigger = React40.forwardRef(
5785
6247
  }
5786
6248
  );
5787
6249
  TooltipTrigger.displayName = "TooltipTrigger";
5788
- var TooltipContent = React40.forwardRef(
6250
+ var TooltipContent = React41.forwardRef(
5789
6251
  ({ side, className, children, ...props }, ref) => {
5790
6252
  const { api, open } = useTooltipContext();
5791
6253
  if (!open) return null;
@@ -5905,7 +6367,7 @@ var overlayVariants = cva({
5905
6367
  visibility: "visible"
5906
6368
  }
5907
6369
  });
5908
- var VideoPlayer = React40.forwardRef(
6370
+ var VideoPlayer = React41.forwardRef(
5909
6371
  ({
5910
6372
  src,
5911
6373
  poster,
@@ -5915,9 +6377,9 @@ var VideoPlayer = React40.forwardRef(
5915
6377
  className,
5916
6378
  ...props
5917
6379
  }, ref) => {
5918
- const [, setTick] = React40.useState(0);
5919
- const rerender = React40.useCallback(() => setTick((t) => t + 1), []);
5920
- const apiRef = React40.useRef(
6380
+ const [, setTick] = React41.useState(0);
6381
+ const rerender = React41.useCallback(() => setTick((t) => t + 1), []);
6382
+ const apiRef = React41.useRef(
5921
6383
  createVideoPlayer({ muted: initialMuted})
5922
6384
  );
5923
6385
  const api = apiRef.current;
@@ -6084,7 +6546,7 @@ var progressBarVariants = cva({
6084
6546
  size: "md"
6085
6547
  }
6086
6548
  });
6087
- var StatsGrid = React40.forwardRef(
6549
+ var StatsGrid = React41.forwardRef(
6088
6550
  ({ stats, badges = [], className, ...props }, ref) => {
6089
6551
  const api = createProgressDisplay({ stats, badges });
6090
6552
  return /* @__PURE__ */ jsx(
@@ -6113,7 +6575,7 @@ var StatsGrid = React40.forwardRef(
6113
6575
  }
6114
6576
  );
6115
6577
  StatsGrid.displayName = "StatsGrid";
6116
- var ProgressBar = React40.forwardRef(
6578
+ var ProgressBar = React41.forwardRef(
6117
6579
  ({ value, max = 100, size, className, ...props }, ref) => {
6118
6580
  const percent = Math.min(100, Math.max(0, value / max * 100));
6119
6581
  return /* @__PURE__ */ jsx(
@@ -6138,7 +6600,7 @@ var ProgressBar = React40.forwardRef(
6138
6600
  }
6139
6601
  );
6140
6602
  ProgressBar.displayName = "ProgressBar";
6141
- var BadgeDisplay = React40.forwardRef(
6603
+ var BadgeDisplay = React41.forwardRef(
6142
6604
  ({ badges, className, ...props }, ref) => {
6143
6605
  const api = createProgressDisplay({ stats: [], badges });
6144
6606
  return /* @__PURE__ */ jsx(
@@ -6306,7 +6768,7 @@ var slideTypeBadgeVariants = cva({
6306
6768
  type: "lesson"
6307
6769
  }
6308
6770
  });
6309
- var SlideViewer = React40.forwardRef(
6771
+ var SlideViewer = React41.forwardRef(
6310
6772
  ({
6311
6773
  slides,
6312
6774
  initialSlide,
@@ -6316,9 +6778,9 @@ var SlideViewer = React40.forwardRef(
6316
6778
  size,
6317
6779
  renderSlide
6318
6780
  }, ref) => {
6319
- const [, setTick] = React40.useState(0);
6781
+ const [, setTick] = React41.useState(0);
6320
6782
  const rerender = () => setTick((t) => t + 1);
6321
- const apiRef = React40.useRef(
6783
+ const apiRef = React41.useRef(
6322
6784
  createSlideViewer({ slides, initialSlide, onSlideChange, onComplete })
6323
6785
  );
6324
6786
  const api = apiRef.current;
@@ -6520,7 +6982,7 @@ var optionVariants = cva({
6520
6982
  });
6521
6983
 
6522
6984
  // ../react-language-selector/dist/index.js
6523
- var LanguageSelectorContext = React40.createContext(null);
6985
+ var LanguageSelectorContext = React41.createContext(null);
6524
6986
  function LanguageSelector({
6525
6987
  value: controlledValue,
6526
6988
  onValueChange,
@@ -6530,10 +6992,10 @@ function LanguageSelector({
6530
6992
  className
6531
6993
  }) {
6532
6994
  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(
6995
+ const [selectedValues, setSelectedValues] = React41.useState(initialValues);
6996
+ const [isOpen, setIsOpen] = React41.useState(false);
6997
+ const containerRef = React41.useRef(null);
6998
+ const handleValueChange = React41.useCallback(
6537
6999
  (val) => {
6538
7000
  const arr = Array.isArray(val) ? val : [val];
6539
7001
  setSelectedValues(arr);
@@ -6541,7 +7003,7 @@ function LanguageSelector({
6541
7003
  },
6542
7004
  [onValueChange]
6543
7005
  );
6544
- const api = React40.useMemo(
7006
+ const api = React41.useMemo(
6545
7007
  () => createLanguageSelector({
6546
7008
  value: multiple ? selectedValues : selectedValues[0],
6547
7009
  onValueChange: handleValueChange,
@@ -6549,7 +7011,7 @@ function LanguageSelector({
6549
7011
  }),
6550
7012
  [selectedValues, handleValueChange, options, multiple]
6551
7013
  );
6552
- const handleToggle = React40.useCallback(
7014
+ const handleToggle = React41.useCallback(
6553
7015
  (val) => {
6554
7016
  if (multiple) {
6555
7017
  const index = selectedValues.indexOf(val);
@@ -6564,10 +7026,10 @@ function LanguageSelector({
6564
7026
  },
6565
7027
  [multiple, selectedValues, onValueChange]
6566
7028
  );
6567
- const handleTriggerClick = React40.useCallback(() => {
7029
+ const handleTriggerClick = React41.useCallback(() => {
6568
7030
  setIsOpen((prev) => !prev);
6569
7031
  }, []);
6570
- const handleKeyDown = React40.useCallback(
7032
+ const handleKeyDown = React41.useCallback(
6571
7033
  (e) => {
6572
7034
  if (e.key === "Escape") {
6573
7035
  setIsOpen(false);
@@ -6582,7 +7044,7 @@ function LanguageSelector({
6582
7044
  },
6583
7045
  [isOpen]
6584
7046
  );
6585
- React40.useEffect(() => {
7047
+ React41.useEffect(() => {
6586
7048
  if (!isOpen) return;
6587
7049
  function handleClickOutside(e) {
6588
7050
  if (containerRef.current && !containerRef.current.contains(e.target)) {
@@ -6592,7 +7054,7 @@ function LanguageSelector({
6592
7054
  document.addEventListener("mousedown", handleClickOutside);
6593
7055
  return () => document.removeEventListener("mousedown", handleClickOutside);
6594
7056
  }, [isOpen]);
6595
- const ctx = React40.useMemo(
7057
+ const ctx = React41.useMemo(
6596
7058
  () => ({
6597
7059
  api,
6598
7060
  isOpen,
@@ -6603,7 +7065,7 @@ function LanguageSelector({
6603
7065
  }),
6604
7066
  [api, isOpen, handleToggle, options, multiple]
6605
7067
  );
6606
- const grouped = React40.useMemo(() => {
7068
+ const grouped = React41.useMemo(() => {
6607
7069
  const groups = /* @__PURE__ */ new Map();
6608
7070
  const ungrouped = [];
6609
7071
  for (const opt of options) {
@@ -6618,14 +7080,14 @@ function LanguageSelector({
6618
7080
  return { groups, ungrouped };
6619
7081
  }, [options]);
6620
7082
  const displayLabel = selectedValues.length > 0 ? options.filter((o) => selectedValues.includes(o.value)).map((o) => o.label).join(", ") : placeholder;
6621
- return React40.createElement(
7083
+ return React41.createElement(
6622
7084
  LanguageSelectorContext.Provider,
6623
7085
  { value: ctx },
6624
- React40.createElement(
7086
+ React41.createElement(
6625
7087
  "div",
6626
7088
  { ref: containerRef, className: cn("rfr-language-selector relative inline-block", className) },
6627
7089
  // Trigger
6628
- React40.createElement(
7090
+ React41.createElement(
6629
7091
  "button",
6630
7092
  {
6631
7093
  type: "button",
@@ -6637,11 +7099,11 @@ function LanguageSelector({
6637
7099
  onClick: handleTriggerClick,
6638
7100
  onKeyDown: handleKeyDown
6639
7101
  },
6640
- React40.createElement("span", null, displayLabel),
6641
- React40.createElement("span", { "aria-hidden": "true", className: "ml-2" }, "\u25BE")
7102
+ React41.createElement("span", null, displayLabel),
7103
+ React41.createElement("span", { "aria-hidden": "true", className: "ml-2" }, "\u25BE")
6642
7104
  ),
6643
7105
  // Dropdown
6644
- isOpen && React40.createElement(
7106
+ isOpen && React41.createElement(
6645
7107
  "ul",
6646
7108
  {
6647
7109
  role: api.contentProps.role,
@@ -6650,21 +7112,21 @@ function LanguageSelector({
6650
7112
  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
7113
  },
6652
7114
  ...[...grouped.groups.entries()].map(
6653
- ([group, opts]) => React40.createElement(
7115
+ ([group, opts]) => React41.createElement(
6654
7116
  "li",
6655
7117
  { key: group, role: "presentation" },
6656
- React40.createElement(
7118
+ React41.createElement(
6657
7119
  "div",
6658
7120
  { className: "px-3 py-1 text-xs font-semibold text-muted-foreground uppercase" },
6659
7121
  group
6660
7122
  ),
6661
- React40.createElement(
7123
+ React41.createElement(
6662
7124
  "ul",
6663
7125
  { role: "group", "aria-label": group },
6664
7126
  ...opts.map((opt) => {
6665
7127
  const optProps = api.getOptionProps(opt.value);
6666
7128
  const isSelected = selectedValues.includes(opt.value);
6667
- return React40.createElement(
7129
+ return React41.createElement(
6668
7130
  "li",
6669
7131
  {
6670
7132
  key: opt.value,
@@ -6672,8 +7134,8 @@ function LanguageSelector({
6672
7134
  className: optionVariants({ selected: isSelected ? "true" : "false" }),
6673
7135
  onClick: () => handleToggle(opt.value)
6674
7136
  },
6675
- isSelected && React40.createElement("span", { "aria-hidden": "true" }, "\u2713"),
6676
- React40.createElement("span", null, opt.label)
7137
+ isSelected && React41.createElement("span", { "aria-hidden": "true" }, "\u2713"),
7138
+ React41.createElement("span", null, opt.label)
6677
7139
  );
6678
7140
  })
6679
7141
  )
@@ -6682,7 +7144,7 @@ function LanguageSelector({
6682
7144
  ...grouped.ungrouped.map((opt) => {
6683
7145
  const optProps = api.getOptionProps(opt.value);
6684
7146
  const isSelected = selectedValues.includes(opt.value);
6685
- return React40.createElement(
7147
+ return React41.createElement(
6686
7148
  "li",
6687
7149
  {
6688
7150
  key: opt.value,
@@ -6690,8 +7152,8 @@ function LanguageSelector({
6690
7152
  className: optionVariants({ selected: isSelected ? "true" : "false" }),
6691
7153
  onClick: () => handleToggle(opt.value)
6692
7154
  },
6693
- isSelected && React40.createElement("span", { "aria-hidden": "true" }, "\u2713"),
6694
- React40.createElement("span", null, opt.label)
7155
+ isSelected && React41.createElement("span", { "aria-hidden": "true" }, "\u2713"),
7156
+ React41.createElement("span", null, opt.label)
6695
7157
  );
6696
7158
  })
6697
7159
  )
@@ -6816,7 +7278,7 @@ var latestBadgeVariants = cva({
6816
7278
  });
6817
7279
 
6818
7280
  // ../react-version-selector/dist/index.js
6819
- var VersionSelectorContext = React40.createContext(null);
7281
+ var VersionSelectorContext = React41.createContext(null);
6820
7282
  function VersionSelector({
6821
7283
  value: controlledValue,
6822
7284
  onValueChange,
@@ -6824,17 +7286,17 @@ function VersionSelector({
6824
7286
  placeholder = "Select version...",
6825
7287
  className
6826
7288
  }) {
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(
7289
+ const [selectedVersion, setSelectedVersion] = React41.useState(controlledValue ?? "");
7290
+ const [isOpen, setIsOpen] = React41.useState(false);
7291
+ const containerRef = React41.useRef(null);
7292
+ const handleValueChange = React41.useCallback(
6831
7293
  (val) => {
6832
7294
  setSelectedVersion(val);
6833
7295
  onValueChange?.(val);
6834
7296
  },
6835
7297
  [onValueChange]
6836
7298
  );
6837
- const api = React40.useMemo(
7299
+ const api = React41.useMemo(
6838
7300
  () => createVersionSelector({
6839
7301
  value: selectedVersion,
6840
7302
  onValueChange: handleValueChange,
@@ -6842,7 +7304,7 @@ function VersionSelector({
6842
7304
  }),
6843
7305
  [selectedVersion, handleValueChange, versions]
6844
7306
  );
6845
- const handleSelect = React40.useCallback(
7307
+ const handleSelect = React41.useCallback(
6846
7308
  (val) => {
6847
7309
  setSelectedVersion(val);
6848
7310
  onValueChange?.(val);
@@ -6850,10 +7312,10 @@ function VersionSelector({
6850
7312
  },
6851
7313
  [onValueChange]
6852
7314
  );
6853
- const handleTriggerClick = React40.useCallback(() => {
7315
+ const handleTriggerClick = React41.useCallback(() => {
6854
7316
  setIsOpen((prev) => !prev);
6855
7317
  }, []);
6856
- const handleKeyDown = React40.useCallback(
7318
+ const handleKeyDown = React41.useCallback(
6857
7319
  (e) => {
6858
7320
  if (e.key === "Escape") {
6859
7321
  setIsOpen(false);
@@ -6868,7 +7330,7 @@ function VersionSelector({
6868
7330
  },
6869
7331
  [isOpen]
6870
7332
  );
6871
- React40.useEffect(() => {
7333
+ React41.useEffect(() => {
6872
7334
  if (!isOpen) return;
6873
7335
  function handleClickOutside(e) {
6874
7336
  if (containerRef.current && !containerRef.current.contains(e.target)) {
@@ -6878,7 +7340,7 @@ function VersionSelector({
6878
7340
  document.addEventListener("mousedown", handleClickOutside);
6879
7341
  return () => document.removeEventListener("mousedown", handleClickOutside);
6880
7342
  }, [isOpen]);
6881
- const ctx = React40.useMemo(
7343
+ const ctx = React41.useMemo(
6882
7344
  () => ({
6883
7345
  api,
6884
7346
  isOpen,
@@ -6890,14 +7352,14 @@ function VersionSelector({
6890
7352
  );
6891
7353
  const selectedOpt = versions.find((v) => v.value === selectedVersion);
6892
7354
  const displayLabel = selectedOpt ? selectedOpt.label : placeholder;
6893
- return React40.createElement(
7355
+ return React41.createElement(
6894
7356
  VersionSelectorContext.Provider,
6895
7357
  { value: ctx },
6896
- React40.createElement(
7358
+ React41.createElement(
6897
7359
  "div",
6898
7360
  { ref: containerRef, className: cn("rfr-version-selector relative inline-block", className) },
6899
7361
  // Trigger
6900
- React40.createElement(
7362
+ React41.createElement(
6901
7363
  "button",
6902
7364
  {
6903
7365
  type: "button",
@@ -6909,16 +7371,16 @@ function VersionSelector({
6909
7371
  onClick: handleTriggerClick,
6910
7372
  onKeyDown: handleKeyDown
6911
7373
  },
6912
- React40.createElement("span", null, displayLabel),
6913
- selectedOpt?.isLatest && React40.createElement(
7374
+ React41.createElement("span", null, displayLabel),
7375
+ selectedOpt?.isLatest && React41.createElement(
6914
7376
  "span",
6915
7377
  { className: cn(latestBadgeVariants(), "ml-2") },
6916
7378
  "Latest"
6917
7379
  ),
6918
- React40.createElement("span", { "aria-hidden": "true", className: "ml-2" }, "\u25BE")
7380
+ React41.createElement("span", { "aria-hidden": "true", className: "ml-2" }, "\u25BE")
6919
7381
  ),
6920
7382
  // Dropdown
6921
- isOpen && React40.createElement(
7383
+ isOpen && React41.createElement(
6922
7384
  "ul",
6923
7385
  {
6924
7386
  role: api.contentProps.role,
@@ -6928,7 +7390,7 @@ function VersionSelector({
6928
7390
  ...versions.map((ver) => {
6929
7391
  const optProps = api.getOptionProps(ver.value);
6930
7392
  const isSelected = selectedVersion === ver.value;
6931
- return React40.createElement(
7393
+ return React41.createElement(
6932
7394
  "li",
6933
7395
  {
6934
7396
  key: ver.value,
@@ -6936,8 +7398,8 @@ function VersionSelector({
6936
7398
  className: optionVariants2({ selected: isSelected ? "true" : "false" }),
6937
7399
  onClick: () => handleSelect(ver.value)
6938
7400
  },
6939
- React40.createElement("span", null, ver.label),
6940
- ver.isLatest && React40.createElement(
7401
+ React41.createElement("span", null, ver.label),
7402
+ ver.isLatest && React41.createElement(
6941
7403
  "span",
6942
7404
  { className: latestBadgeVariants() },
6943
7405
  "Latest"
@@ -7080,15 +7542,15 @@ var resizablePaneVariants = cva({
7080
7542
  orientation: "horizontal"
7081
7543
  }
7082
7544
  });
7083
- var ResizableLayoutContext = React40.createContext(null);
7545
+ var ResizableLayoutContext = React41.createContext(null);
7084
7546
  function useResizableLayoutContext() {
7085
- const ctx = React40.useContext(ResizableLayoutContext);
7547
+ const ctx = React41.useContext(ResizableLayoutContext);
7086
7548
  if (!ctx) {
7087
7549
  throw new Error("Resizable compound components must be used within <ResizableLayout>");
7088
7550
  }
7089
7551
  return ctx;
7090
7552
  }
7091
- var ResizableLayout = React40.forwardRef(
7553
+ var ResizableLayout = React41.forwardRef(
7092
7554
  ({
7093
7555
  orientation = "horizontal",
7094
7556
  defaultSizes = [50, 50],
@@ -7101,7 +7563,7 @@ var ResizableLayout = React40.forwardRef(
7101
7563
  children,
7102
7564
  ...props
7103
7565
  }, ref) => {
7104
- const apiRef = React40.useRef(null);
7566
+ const apiRef = React41.useRef(null);
7105
7567
  if (!apiRef.current) {
7106
7568
  apiRef.current = createResizableLayout({
7107
7569
  orientation,
@@ -7112,22 +7574,22 @@ var ResizableLayout = React40.forwardRef(
7112
7574
  });
7113
7575
  }
7114
7576
  const api = apiRef.current;
7115
- const [sizes, setSizesState] = React40.useState(api.sizes);
7116
- const setSizes = React40.useCallback(
7577
+ const [sizes, setSizesState] = React41.useState(api.sizes);
7578
+ const setSizes = React41.useCallback(
7117
7579
  (newSizes) => {
7118
7580
  setSizesState([...newSizes]);
7119
7581
  onSizesChange?.(newSizes);
7120
7582
  },
7121
7583
  [onSizesChange]
7122
7584
  );
7123
- const cssVars = React40.useMemo(() => {
7585
+ const cssVars = React41.useMemo(() => {
7124
7586
  const vars = {};
7125
7587
  for (let i = 0; i < sizes.length; i++) {
7126
7588
  vars[`--rfr-pane-${i}-size`] = `${sizes[i]}%`;
7127
7589
  }
7128
7590
  return vars;
7129
7591
  }, [sizes]);
7130
- const contextValue = React40.useMemo(
7592
+ const contextValue = React41.useMemo(
7131
7593
  () => ({ api, orientation, sizes, setSizes }),
7132
7594
  [api, orientation, sizes, setSizes]
7133
7595
  );
@@ -7145,7 +7607,7 @@ var ResizableLayout = React40.forwardRef(
7145
7607
  }
7146
7608
  );
7147
7609
  ResizableLayout.displayName = "ResizableLayout";
7148
- var ResizablePane = React40.forwardRef(
7610
+ var ResizablePane = React41.forwardRef(
7149
7611
  ({ index, className, style, children, ...props }, ref) => {
7150
7612
  const { orientation, sizes } = useResizableLayoutContext();
7151
7613
  const size = sizes[index] ?? 50;
@@ -7169,12 +7631,12 @@ var ResizablePane = React40.forwardRef(
7169
7631
  }
7170
7632
  );
7171
7633
  ResizablePane.displayName = "ResizablePane";
7172
- var ResizableDivider = React40.forwardRef(
7634
+ var ResizableDivider = React41.forwardRef(
7173
7635
  ({ index, className, ...props }, ref) => {
7174
7636
  const { api, orientation, setSizes } = useResizableLayoutContext();
7175
- const startPosRef = React40.useRef(0);
7176
- const containerSizeRef = React40.useRef(0);
7177
- const onPointerDown = React40.useCallback(
7637
+ const startPosRef = React41.useRef(0);
7638
+ const containerSizeRef = React41.useRef(0);
7639
+ const onPointerDown = React41.useCallback(
7178
7640
  (e) => {
7179
7641
  e.preventDefault();
7180
7642
  const target = e.currentTarget;
@@ -7188,7 +7650,7 @@ var ResizableDivider = React40.forwardRef(
7188
7650
  },
7189
7651
  [api, index, orientation]
7190
7652
  );
7191
- const onPointerMove = React40.useCallback(
7653
+ const onPointerMove = React41.useCallback(
7192
7654
  (e) => {
7193
7655
  if (containerSizeRef.current === 0) return;
7194
7656
  const currentPos = orientation === "horizontal" ? e.clientX : e.clientY;
@@ -7199,7 +7661,7 @@ var ResizableDivider = React40.forwardRef(
7199
7661
  },
7200
7662
  [api, orientation, setSizes]
7201
7663
  );
7202
- const onPointerUp = React40.useCallback(
7664
+ const onPointerUp = React41.useCallback(
7203
7665
  (e) => {
7204
7666
  e.currentTarget.releasePointerCapture(e.pointerId);
7205
7667
  containerSizeRef.current = 0;
@@ -7452,26 +7914,26 @@ function createAuthShell(config) {
7452
7914
  }
7453
7915
 
7454
7916
  // ../react-app-shell/dist/index.js
7455
- var AppShellContext = React40.createContext(null);
7917
+ var AppShellContext = React41.createContext(null);
7456
7918
  function useAppShell() {
7457
- const ctx = React40.useContext(AppShellContext);
7919
+ const ctx = React41.useContext(AppShellContext);
7458
7920
  if (!ctx) {
7459
7921
  throw new Error("useAppShell must be used within <AppShell>");
7460
7922
  }
7461
7923
  return ctx;
7462
7924
  }
7463
7925
  function AppShellRoot({ config, children, className }) {
7464
- const apiRef = React40.useRef(null);
7926
+ const apiRef = React41.useRef(null);
7465
7927
  if (apiRef.current === null) {
7466
7928
  apiRef.current = createAppShell(config);
7467
7929
  }
7468
7930
  const api = apiRef.current;
7469
- const [state, setState] = React40.useState(() => api.state);
7470
- React40.useEffect(() => {
7931
+ const [state, setState] = React41.useState(() => api.state);
7932
+ React41.useEffect(() => {
7471
7933
  setState(api.state);
7472
7934
  return api.subscribe((s) => setState(s));
7473
7935
  }, [api]);
7474
- React40.useEffect(() => {
7936
+ React41.useEffect(() => {
7475
7937
  if (typeof window === "undefined") return;
7476
7938
  const { mobileBreakpoint, tabletBreakpoint } = api.config;
7477
7939
  const mobileQuery = window.matchMedia(`(max-width: ${mobileBreakpoint - 1}px)`);
@@ -7492,14 +7954,14 @@ function AppShellRoot({ config, children, className }) {
7492
7954
  };
7493
7955
  }, [api]);
7494
7956
  const cssVars = api.getCSSVariables();
7495
- const ctxValue = React40.useMemo(
7957
+ const ctxValue = React41.useMemo(
7496
7958
  () => ({ api, state }),
7497
7959
  [api, state]
7498
7960
  );
7499
- return React40.createElement(
7961
+ return React41.createElement(
7500
7962
  AppShellContext.Provider,
7501
7963
  { value: ctxValue },
7502
- React40.createElement(
7964
+ React41.createElement(
7503
7965
  "div",
7504
7966
  {
7505
7967
  className: cn("flex h-screen w-full overflow-hidden", className),
@@ -7529,7 +7991,7 @@ function Sidebar2({ children, className }) {
7529
7991
  "w-[var(--shell-sidebar-full-width)]",
7530
7992
  state.sidebarOpen ? "translate-x-0" : isRight ? "translate-x-full" : "-translate-x-full"
7531
7993
  ] : ["relative", "w-[var(--shell-sidebar-width)]"];
7532
- return React40.createElement(
7994
+ return React41.createElement(
7533
7995
  "aside",
7534
7996
  {
7535
7997
  ...api.sidebarAriaProps,
@@ -7542,7 +8004,7 @@ function Sidebar2({ children, className }) {
7542
8004
  }
7543
8005
  Sidebar2.displayName = "AppShell.Sidebar";
7544
8006
  function Main({ children, className }) {
7545
- return React40.createElement(
8007
+ return React41.createElement(
7546
8008
  "div",
7547
8009
  {
7548
8010
  className: cn("flex flex-1 flex-col min-w-0 h-full", className)
@@ -7553,7 +8015,7 @@ function Main({ children, className }) {
7553
8015
  Main.displayName = "AppShell.Main";
7554
8016
  function Header({ children, className }) {
7555
8017
  const { api, state } = useAppShell();
7556
- const hamburger = state.isMobile ? React40.createElement(
8018
+ const hamburger = state.isMobile ? React41.createElement(
7557
8019
  "button",
7558
8020
  {
7559
8021
  type: "button",
@@ -7563,7 +8025,7 @@ function Header({ children, className }) {
7563
8025
  onClick: () => api.toggleSidebar(),
7564
8026
  className: "inline-flex items-center justify-center p-2 mr-2"
7565
8027
  },
7566
- React40.createElement(
8028
+ React41.createElement(
7567
8029
  "svg",
7568
8030
  {
7569
8031
  xmlns: "http://www.w3.org/2000/svg",
@@ -7577,12 +8039,12 @@ function Header({ children, className }) {
7577
8039
  strokeLinejoin: "round",
7578
8040
  "aria-hidden": "true"
7579
8041
  },
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 })
8042
+ React41.createElement("line", { x1: 3, y1: 6, x2: 21, y2: 6 }),
8043
+ React41.createElement("line", { x1: 3, y1: 12, x2: 21, y2: 12 }),
8044
+ React41.createElement("line", { x1: 3, y1: 18, x2: 21, y2: 18 })
7583
8045
  )
7584
8046
  ) : null;
7585
- return React40.createElement(
8047
+ return React41.createElement(
7586
8048
  "header",
7587
8049
  {
7588
8050
  ...api.headerAriaProps,
@@ -7601,7 +8063,7 @@ Header.displayName = "AppShell.Header";
7601
8063
  function Content({ children, className, maxWidth }) {
7602
8064
  const { api } = useAppShell();
7603
8065
  const mwClass = maxWidth ? `max-w-${maxWidth}` : "";
7604
- return React40.createElement(
8066
+ return React41.createElement(
7605
8067
  "main",
7606
8068
  {
7607
8069
  ...api.mainAriaProps,
@@ -7620,7 +8082,7 @@ function MobileNav2({ children, className }) {
7620
8082
  const { api, state } = useAppShell();
7621
8083
  if (!state.isMobile) return null;
7622
8084
  if (api.config.mobileNavPosition === "none") return null;
7623
- return React40.createElement(
8085
+ return React41.createElement(
7624
8086
  "nav",
7625
8087
  {
7626
8088
  ...api.mobileNavAriaProps,
@@ -7639,7 +8101,7 @@ MobileNav2.displayName = "AppShell.MobileNav";
7639
8101
  function Overlay({ className }) {
7640
8102
  const { api, state } = useAppShell();
7641
8103
  if (!state.isMobile || !state.sidebarOpen) return null;
7642
- return React40.createElement("div", {
8104
+ return React41.createElement("div", {
7643
8105
  ...api.overlayAriaProps,
7644
8106
  className: cn(
7645
8107
  "fixed inset-0 z-30 bg-black/50 transition-opacity",
@@ -7658,29 +8120,29 @@ var AppShell = Object.assign(AppShellRoot, {
7658
8120
  MobileNav: MobileNav2,
7659
8121
  Overlay
7660
8122
  });
7661
- var PageShellContext = React40.createContext(null);
8123
+ var PageShellContext = React41.createContext(null);
7662
8124
  function usePageShell() {
7663
- const ctx = React40.useContext(PageShellContext);
8125
+ const ctx = React41.useContext(PageShellContext);
7664
8126
  if (!ctx) {
7665
8127
  throw new Error("PageShell compound components must be used within <PageShell>");
7666
8128
  }
7667
8129
  return ctx;
7668
8130
  }
7669
8131
  function PageShellRoot({ config, children, className }) {
7670
- const apiRef = React40.useRef(null);
8132
+ const apiRef = React41.useRef(null);
7671
8133
  if (apiRef.current === null) {
7672
8134
  apiRef.current = createPageShell(config);
7673
8135
  }
7674
8136
  const api = apiRef.current;
7675
8137
  const cssVars = api.getCSSVariables();
7676
- const ctxValue = React40.useMemo(
8138
+ const ctxValue = React41.useMemo(
7677
8139
  () => ({ api }),
7678
8140
  [api]
7679
8141
  );
7680
- return React40.createElement(
8142
+ return React41.createElement(
7681
8143
  PageShellContext.Provider,
7682
8144
  { value: ctxValue },
7683
- React40.createElement(
8145
+ React41.createElement(
7684
8146
  "div",
7685
8147
  {
7686
8148
  className: cn("flex min-h-screen flex-col", className),
@@ -7696,7 +8158,7 @@ function Nav({ children, className }) {
7696
8158
  const { api } = usePageShell();
7697
8159
  const stickyClass = api.config.navSticky ? "sticky top-0 z-40" : "";
7698
8160
  const transparentClass = api.config.navTransparent ? "bg-transparent" : "bg-background border-b";
7699
- return React40.createElement(
8161
+ return React41.createElement(
7700
8162
  "nav",
7701
8163
  {
7702
8164
  ...api.navAriaProps,
@@ -7721,7 +8183,7 @@ function Section({
7721
8183
  }) {
7722
8184
  const { api } = usePageShell();
7723
8185
  const sectionClasses = api.getSectionClasses({ fullWidth, maxWidth, padding, background });
7724
- return React40.createElement(
8186
+ return React41.createElement(
7725
8187
  "section",
7726
8188
  {
7727
8189
  className: cn("py-12", sectionClasses, className)
@@ -7733,7 +8195,7 @@ Section.displayName = "PageShell.Section";
7733
8195
  function Footer2({ children, className, columns }) {
7734
8196
  const { api } = usePageShell();
7735
8197
  const cols = columns ?? api.config.footerColumns;
7736
- return React40.createElement(
8198
+ return React41.createElement(
7737
8199
  "footer",
7738
8200
  {
7739
8201
  ...api.footerAriaProps,
@@ -7742,7 +8204,7 @@ function Footer2({ children, className, columns }) {
7742
8204
  className
7743
8205
  )
7744
8206
  },
7745
- React40.createElement(
8207
+ React41.createElement(
7746
8208
  "div",
7747
8209
  {
7748
8210
  className: `mx-auto max-w-[var(--page-max-width)] grid gap-8`,
@@ -7760,28 +8222,28 @@ Object.assign(PageShellRoot, {
7760
8222
  Section,
7761
8223
  Footer: Footer2
7762
8224
  });
7763
- var AuthShellContext = React40.createContext(null);
8225
+ var AuthShellContext = React41.createContext(null);
7764
8226
  function useAuthShell() {
7765
- const ctx = React40.useContext(AuthShellContext);
8227
+ const ctx = React41.useContext(AuthShellContext);
7766
8228
  if (!ctx) {
7767
8229
  throw new Error("AuthShell compound components must be used within <AuthShell>");
7768
8230
  }
7769
8231
  return ctx;
7770
8232
  }
7771
8233
  function AuthShellRoot({ config, children, className }) {
7772
- const apiRef = React40.useRef(null);
8234
+ const apiRef = React41.useRef(null);
7773
8235
  if (apiRef.current === null) {
7774
8236
  apiRef.current = createAuthShell(config);
7775
8237
  }
7776
8238
  const api = apiRef.current;
7777
- const ctxValue = React40.useMemo(
8239
+ const ctxValue = React41.useMemo(
7778
8240
  () => ({ api }),
7779
8241
  [api]
7780
8242
  );
7781
- return React40.createElement(
8243
+ return React41.createElement(
7782
8244
  AuthShellContext.Provider,
7783
8245
  { value: ctxValue },
7784
- React40.createElement(
8246
+ React41.createElement(
7785
8247
  "div",
7786
8248
  {
7787
8249
  ...api.ariaProps,
@@ -7795,7 +8257,7 @@ function AuthShellRoot({ config, children, className }) {
7795
8257
  AuthShellRoot.displayName = "AuthShell";
7796
8258
  function Card({ children, className }) {
7797
8259
  const { api } = useAuthShell();
7798
- return React40.createElement(
8260
+ return React41.createElement(
7799
8261
  "div",
7800
8262
  {
7801
8263
  className: cn(api.cardClasses, className),
@@ -7883,7 +8345,7 @@ var avatarFallbackVariants = cva({
7883
8345
  size: "md"
7884
8346
  }
7885
8347
  });
7886
- var AvatarContext = React40.createContext({
8348
+ var AvatarContext = React41.createContext({
7887
8349
  size: "md",
7888
8350
  imageLoaded: false,
7889
8351
  imageError: false,
@@ -7892,10 +8354,10 @@ var AvatarContext = React40.createContext({
7892
8354
  setImageError: () => {
7893
8355
  }
7894
8356
  });
7895
- var Avatar = React40.forwardRef(
8357
+ var Avatar = React41.forwardRef(
7896
8358
  ({ size = "md", className, children, ...props }, ref) => {
7897
- const [imageLoaded, setImageLoaded] = React40.useState(false);
7898
- const [imageError, setImageError] = React40.useState(false);
8359
+ const [imageLoaded, setImageLoaded] = React41.useState(false);
8360
+ const [imageError, setImageError] = React41.useState(false);
7899
8361
  const api = createAvatar({ size });
7900
8362
  return /* @__PURE__ */ jsx(AvatarContext.Provider, { value: { size, imageLoaded, imageError, setImageLoaded, setImageError }, children: /* @__PURE__ */ jsx(
7901
8363
  "span",
@@ -7911,9 +8373,9 @@ var Avatar = React40.forwardRef(
7911
8373
  }
7912
8374
  );
7913
8375
  Avatar.displayName = "Avatar";
7914
- var AvatarImage = React40.forwardRef(
8376
+ var AvatarImage = React41.forwardRef(
7915
8377
  ({ className, src, alt = "", onLoad, onError, ...props }, ref) => {
7916
- const { setImageLoaded, setImageError } = React40.useContext(AvatarContext);
8378
+ const { setImageLoaded, setImageError } = React41.useContext(AvatarContext);
7917
8379
  const handleLoad = (e) => {
7918
8380
  setImageLoaded(true);
7919
8381
  onLoad?.(e);
@@ -7937,9 +8399,9 @@ var AvatarImage = React40.forwardRef(
7937
8399
  }
7938
8400
  );
7939
8401
  AvatarImage.displayName = "AvatarImage";
7940
- var AvatarFallback = React40.forwardRef(
8402
+ var AvatarFallback = React41.forwardRef(
7941
8403
  ({ className, children, ...props }, ref) => {
7942
- const { size } = React40.useContext(AvatarContext);
8404
+ const { size } = React41.useContext(AvatarContext);
7943
8405
  return /* @__PURE__ */ jsx(
7944
8406
  "span",
7945
8407
  {
@@ -8056,28 +8518,28 @@ var avatarPresenceDotVariants = cva({
8056
8518
  // ../react-avatar-group/dist/index.js
8057
8519
  function AvatarGroup({ users, max, size = "md", className }) {
8058
8520
  const api = createAvatarGroup({ users, max});
8059
- return React40.createElement(
8521
+ return React41.createElement(
8060
8522
  "div",
8061
8523
  { ...api.ariaProps, className: cn(avatarGroupStyles, className) },
8062
8524
  api.visibleUsers.map(
8063
- (user) => React40.createElement(
8525
+ (user) => React41.createElement(
8064
8526
  "div",
8065
8527
  {
8066
8528
  key: user.id,
8067
8529
  className: avatarVariants2({ size }),
8068
8530
  ...api.getAvatarAriaProps(user)
8069
8531
  },
8070
- user.src ? React40.createElement("img", {
8532
+ user.src ? React41.createElement("img", {
8071
8533
  src: user.src,
8072
8534
  alt: user.name,
8073
8535
  className: avatarImageStyles
8074
- }) : React40.createElement("span", null, api.getInitials(user.name)),
8075
- user.status && React40.createElement("span", {
8536
+ }) : React41.createElement("span", null, api.getInitials(user.name)),
8537
+ user.status && React41.createElement("span", {
8076
8538
  className: avatarPresenceDotVariants({ size, status: user.status })
8077
8539
  })
8078
8540
  )
8079
8541
  ),
8080
- api.overflowCount > 0 && React40.createElement(
8542
+ api.overflowCount > 0 && React41.createElement(
8081
8543
  "div",
8082
8544
  {
8083
8545
  className: avatarOverflowBadgeVariants({ size }),
@@ -8161,7 +8623,7 @@ var cardContentVariants = cva({
8161
8623
  var cardFooterVariants = cva({
8162
8624
  base: "flex items-center p-6 pt-0"
8163
8625
  });
8164
- var Card2 = React40.forwardRef(
8626
+ var Card2 = React41.forwardRef(
8165
8627
  ({ className, ...props }, ref) => {
8166
8628
  const api = createCard();
8167
8629
  return /* @__PURE__ */ jsx(
@@ -8177,7 +8639,7 @@ var Card2 = React40.forwardRef(
8177
8639
  }
8178
8640
  );
8179
8641
  Card2.displayName = "Card";
8180
- var CardHeader = React40.forwardRef(
8642
+ var CardHeader = React41.forwardRef(
8181
8643
  ({ className, ...props }, ref) => {
8182
8644
  const api = createCardHeader();
8183
8645
  return /* @__PURE__ */ jsx(
@@ -8192,7 +8654,7 @@ var CardHeader = React40.forwardRef(
8192
8654
  }
8193
8655
  );
8194
8656
  CardHeader.displayName = "CardHeader";
8195
- var CardTitle = React40.forwardRef(
8657
+ var CardTitle = React41.forwardRef(
8196
8658
  ({ className, ...props }, ref) => {
8197
8659
  const api = createCardTitle();
8198
8660
  return /* @__PURE__ */ jsx(
@@ -8207,7 +8669,7 @@ var CardTitle = React40.forwardRef(
8207
8669
  }
8208
8670
  );
8209
8671
  CardTitle.displayName = "CardTitle";
8210
- var CardDescription = React40.forwardRef(
8672
+ var CardDescription = React41.forwardRef(
8211
8673
  ({ className, ...props }, ref) => {
8212
8674
  const api = createCardDescription();
8213
8675
  return /* @__PURE__ */ jsx(
@@ -8222,7 +8684,7 @@ var CardDescription = React40.forwardRef(
8222
8684
  }
8223
8685
  );
8224
8686
  CardDescription.displayName = "CardDescription";
8225
- var CardContent = React40.forwardRef(
8687
+ var CardContent = React41.forwardRef(
8226
8688
  ({ className, ...props }, ref) => {
8227
8689
  const api = createCardContent();
8228
8690
  return /* @__PURE__ */ jsx(
@@ -8237,7 +8699,7 @@ var CardContent = React40.forwardRef(
8237
8699
  }
8238
8700
  );
8239
8701
  CardContent.displayName = "CardContent";
8240
- var CardFooter = React40.forwardRef(
8702
+ var CardFooter = React41.forwardRef(
8241
8703
  ({ className, ...props }, ref) => {
8242
8704
  const api = createCardFooter();
8243
8705
  return /* @__PURE__ */ jsx(
@@ -8318,7 +8780,7 @@ var checkboxVariants = cva({
8318
8780
  size: "default"
8319
8781
  }
8320
8782
  });
8321
- var Checkbox = React40.forwardRef(
8783
+ var Checkbox = React41.forwardRef(
8322
8784
  ({ checked = false, onCheckedChange, disabled = false, size = "default", className, ...props }, ref) => {
8323
8785
  const api = createCheckbox({ checked, disabled });
8324
8786
  const checkedVariant = checked === "indeterminate" ? "indeterminate" : checked ? "true" : "false";
@@ -8629,13 +9091,13 @@ function DatePicker({
8629
9091
  className,
8630
9092
  disabled = false
8631
9093
  }) {
8632
- const [open, setOpen] = React40.useState(false);
8633
- const [currentMonth, setCurrentMonth] = React40.useState(
9094
+ const [open, setOpen] = React41.useState(false);
9095
+ const [currentMonth, setCurrentMonth] = React41.useState(
8634
9096
  () => value ? new Date(value.getFullYear(), value.getMonth(), 1) : new Date((/* @__PURE__ */ new Date()).getFullYear(), (/* @__PURE__ */ new Date()).getMonth(), 1)
8635
9097
  );
8636
- const [view, setView] = React40.useState("calendar");
8637
- const containerRef = React40.useRef(null);
8638
- const api = React40.useMemo(
9098
+ const [view, setView] = React41.useState("calendar");
9099
+ const containerRef = React41.useRef(null);
9100
+ const api = React41.useMemo(
8639
9101
  () => createDatePicker({
8640
9102
  value,
8641
9103
  onChange,
@@ -8649,7 +9111,7 @@ function DatePicker({
8649
9111
  }),
8650
9112
  [value, onChange, minDate, maxDate, showTime, format, placeholder, open]
8651
9113
  );
8652
- React40.useMemo(() => {
9114
+ React41.useMemo(() => {
8653
9115
  createDatePicker({
8654
9116
  value,
8655
9117
  minDate,
@@ -8664,7 +9126,7 @@ function DatePicker({
8664
9126
  });
8665
9127
  return tempApi.days;
8666
9128
  }, [value, minDate, maxDate, currentMonth]);
8667
- React40.useEffect(() => {
9129
+ React41.useEffect(() => {
8668
9130
  if (!open) return;
8669
9131
  function handleClick(e) {
8670
9132
  if (containerRef.current && !containerRef.current.contains(e.target)) {
@@ -8674,7 +9136,7 @@ function DatePicker({
8674
9136
  document.addEventListener("mousedown", handleClick);
8675
9137
  return () => document.removeEventListener("mousedown", handleClick);
8676
9138
  }, [open]);
8677
- React40.useEffect(() => {
9139
+ React41.useEffect(() => {
8678
9140
  if (!open) return;
8679
9141
  function handleKeyDown(e) {
8680
9142
  if (e.key === "Escape") {
@@ -8712,10 +9174,10 @@ function DatePicker({
8712
9174
  onChange?.(newDate);
8713
9175
  };
8714
9176
  const monthLabel = currentMonth.toLocaleDateString("en-US", { month: "long", year: "numeric" });
8715
- return React40.createElement(
9177
+ return React41.createElement(
8716
9178
  "div",
8717
9179
  { ref: containerRef, className: cn("relative inline-block", className) },
8718
- React40.createElement(
9180
+ React41.createElement(
8719
9181
  "button",
8720
9182
  {
8721
9183
  type: "button",
@@ -8727,17 +9189,17 @@ function DatePicker({
8727
9189
  },
8728
9190
  displayValue
8729
9191
  ),
8730
- open && React40.createElement(
9192
+ open && React41.createElement(
8731
9193
  "div",
8732
9194
  {
8733
9195
  className: datePickerDropdownStyles,
8734
9196
  role: "dialog",
8735
9197
  "aria-modal": true
8736
9198
  },
8737
- React40.createElement(
9199
+ React41.createElement(
8738
9200
  "div",
8739
9201
  { className: "flex items-center justify-between mb-3" },
8740
- React40.createElement(
9202
+ React41.createElement(
8741
9203
  "button",
8742
9204
  {
8743
9205
  type: "button",
@@ -8747,8 +9209,8 @@ function DatePicker({
8747
9209
  },
8748
9210
  "\u2039"
8749
9211
  ),
8750
- React40.createElement("span", { className: "text-sm font-medium" }, monthLabel),
8751
- React40.createElement(
9212
+ React41.createElement("span", { className: "text-sm font-medium" }, monthLabel),
9213
+ React41.createElement(
8752
9214
  "button",
8753
9215
  {
8754
9216
  type: "button",
@@ -8759,11 +9221,11 @@ function DatePicker({
8759
9221
  "\u203A"
8760
9222
  )
8761
9223
  ),
8762
- React40.createElement(
9224
+ React41.createElement(
8763
9225
  "div",
8764
9226
  { className: "grid grid-cols-7 gap-0 text-center", role: "grid" },
8765
9227
  ["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)
9228
+ (d) => React41.createElement("div", { key: d, className: "text-xs text-muted-foreground py-1 font-medium" }, d)
8767
9229
  ),
8768
9230
  api.days.map((day, i) => {
8769
9231
  let state = "default";
@@ -8771,7 +9233,7 @@ function DatePicker({
8771
9233
  else if (day.isSelected) state = "selected";
8772
9234
  else if (day.isToday) state = "today";
8773
9235
  else if (!day.isCurrentMonth) state = "outside";
8774
- return React40.createElement(
9236
+ return React41.createElement(
8775
9237
  "button",
8776
9238
  {
8777
9239
  key: i,
@@ -8786,11 +9248,11 @@ function DatePicker({
8786
9248
  );
8787
9249
  })
8788
9250
  ),
8789
- showTime && React40.createElement(
9251
+ showTime && React41.createElement(
8790
9252
  "div",
8791
9253
  { className: datePickerTimeStyles },
8792
- React40.createElement("span", { className: "text-sm text-muted-foreground" }, "Time:"),
8793
- React40.createElement("input", {
9254
+ React41.createElement("span", { className: "text-sm text-muted-foreground" }, "Time:"),
9255
+ React41.createElement("input", {
8794
9256
  type: "number",
8795
9257
  min: 0,
8796
9258
  max: 23,
@@ -8799,8 +9261,8 @@ function DatePicker({
8799
9261
  className: datePickerTimeInputStyles,
8800
9262
  "aria-label": "Hours"
8801
9263
  }),
8802
- React40.createElement("span", { className: "text-muted-foreground" }, ":"),
8803
- React40.createElement("input", {
9264
+ React41.createElement("span", { className: "text-muted-foreground" }, ":"),
9265
+ React41.createElement("input", {
8804
9266
  type: "number",
8805
9267
  min: 0,
8806
9268
  max: 59,
@@ -9072,10 +9534,10 @@ var statusBarVariants = cva({
9072
9534
  theme: "dark"
9073
9535
  }
9074
9536
  });
9075
- var MonacoDiffEditor = React40.lazy(
9537
+ var MonacoDiffEditor = React41.lazy(
9076
9538
  () => import('@monaco-editor/react').then((m) => ({ default: m.DiffEditor }))
9077
9539
  );
9078
- var DiffViewer = React40.forwardRef(
9540
+ var DiffViewer = React41.forwardRef(
9079
9541
  ({
9080
9542
  files,
9081
9543
  original = "",
@@ -9096,12 +9558,12 @@ var DiffViewer = React40.forwardRef(
9096
9558
  className,
9097
9559
  editorOptions
9098
9560
  }, 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(
9561
+ const [activeIdx, setActiveIdx] = React41.useState(controlledIndex);
9562
+ const [sidebarOpen, setSidebarOpen] = React41.useState(showSidebar);
9563
+ const [viewMode, setViewMode] = React41.useState(controlledViewMode);
9564
+ React41.useEffect(() => setActiveIdx(controlledIndex), [controlledIndex]);
9565
+ React41.useEffect(() => setViewMode(controlledViewMode), [controlledViewMode]);
9566
+ const api = React41.useMemo(
9105
9567
  () => createDiffViewer({
9106
9568
  files,
9107
9569
  activeFileIndex: activeIdx,
@@ -9123,7 +9585,7 @@ var DiffViewer = React40.forwardRef(
9123
9585
  );
9124
9586
  const activeFile = files[activeIdx];
9125
9587
  const detectedLang = language || (activeFile ? api.getLanguageForFile(activeFile.path) : "plaintext");
9126
- React40.useEffect(() => {
9588
+ React41.useEffect(() => {
9127
9589
  function onKey(e) {
9128
9590
  if (e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement) return;
9129
9591
  if (e.key === "j") {
@@ -9215,7 +9677,7 @@ var DiffViewer = React40.forwardRef(
9215
9677
  );
9216
9678
  }) }),
9217
9679
  /* @__PURE__ */ jsx("div", { style: { flex: 1 }, children: /* @__PURE__ */ jsx(
9218
- React40.Suspense,
9680
+ React41.Suspense,
9219
9681
  {
9220
9682
  fallback: /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center h-full text-xs opacity-50", children: "Loading editor..." }),
9221
9683
  children: /* @__PURE__ */ jsx(
@@ -9648,10 +10110,10 @@ var emojiPickerSectionLabelStyles = "px-2 py-1 text-xs font-medium text-muted-fo
9648
10110
 
9649
10111
  // ../react-emoji-picker/dist/index.js
9650
10112
  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(
10113
+ const [search, setSearch] = React41.useState("");
10114
+ const [activeCategory, setActiveCategory] = React41.useState("smileys");
10115
+ const [recentEmojis, setRecentEmojis] = React41.useState(initialRecent);
10116
+ const api = React41.useMemo(
9655
10117
  () => createEmojiPicker({
9656
10118
  onSelect: void 0,
9657
10119
  search,
@@ -9659,7 +10121,7 @@ function EmojiPicker({ onSelect, recentEmojis: initialRecent = [], className })
9659
10121
  }),
9660
10122
  [search, recentEmojis]
9661
10123
  );
9662
- const filteredEmojis = React40.useMemo(() => {
10124
+ const filteredEmojis = React41.useMemo(() => {
9663
10125
  if (search.trim()) {
9664
10126
  const query = search.toLowerCase().trim();
9665
10127
  const allEmojis = EMOJI_CATEGORIES.flatMap((cat) => EMOJI_DATA[cat]);
@@ -9679,22 +10141,22 @@ function EmojiPicker({ onSelect, recentEmojis: initialRecent = [], className })
9679
10141
  setActiveCategory(cat);
9680
10142
  setSearch("");
9681
10143
  };
9682
- return React40.createElement(
10144
+ return React41.createElement(
9683
10145
  "div",
9684
10146
  { className: cn(emojiPickerContainerStyles, className), ...api.ariaProps },
9685
10147
  // Search input
9686
- React40.createElement("input", {
10148
+ React41.createElement("input", {
9687
10149
  ...api.searchInputProps,
9688
10150
  className: emojiPickerSearchStyles,
9689
10151
  value: search,
9690
10152
  onChange: (e) => setSearch(e.target.value)
9691
10153
  }),
9692
10154
  // Category tabs
9693
- !search && React40.createElement(
10155
+ !search && React41.createElement(
9694
10156
  "div",
9695
10157
  { className: emojiPickerCategoryBarStyles },
9696
10158
  api.categoryTabs.map(
9697
- (tab) => React40.createElement(
10159
+ (tab) => React41.createElement(
9698
10160
  "button",
9699
10161
  {
9700
10162
  key: tab.category,
@@ -9711,15 +10173,15 @@ function EmojiPicker({ onSelect, recentEmojis: initialRecent = [], className })
9711
10173
  )
9712
10174
  ),
9713
10175
  // Recent emojis section
9714
- !search && recentEmojis.length > 0 && React40.createElement(
10176
+ !search && recentEmojis.length > 0 && React41.createElement(
9715
10177
  "div",
9716
10178
  null,
9717
- React40.createElement("div", { className: emojiPickerSectionLabelStyles }, "Recent"),
9718
- React40.createElement(
10179
+ React41.createElement("div", { className: emojiPickerSectionLabelStyles }, "Recent"),
10180
+ React41.createElement(
9719
10181
  "div",
9720
10182
  { className: emojiPickerGridStyles },
9721
10183
  recentEmojis.map(
9722
- (emoji, i) => React40.createElement(
10184
+ (emoji, i) => React41.createElement(
9723
10185
  "button",
9724
10186
  {
9725
10187
  key: `recent-${emoji.emoji}-${i}`,
@@ -9734,19 +10196,19 @@ function EmojiPicker({ onSelect, recentEmojis: initialRecent = [], className })
9734
10196
  )
9735
10197
  ),
9736
10198
  // Emoji grid
9737
- React40.createElement(
10199
+ React41.createElement(
9738
10200
  "div",
9739
10201
  null,
9740
- !search && React40.createElement(
10202
+ !search && React41.createElement(
9741
10203
  "div",
9742
10204
  { className: emojiPickerSectionLabelStyles },
9743
10205
  CATEGORY_LABELS[activeCategory]
9744
10206
  ),
9745
- React40.createElement(
10207
+ React41.createElement(
9746
10208
  "div",
9747
10209
  { className: emojiPickerGridStyles },
9748
10210
  filteredEmojis.map(
9749
- (emoji, i) => React40.createElement(
10211
+ (emoji, i) => React41.createElement(
9750
10212
  "button",
9751
10213
  {
9752
10214
  key: `${emoji.emoji}-${i}`,
@@ -9758,7 +10220,7 @@ function EmojiPicker({ onSelect, recentEmojis: initialRecent = [], className })
9758
10220
  emoji.emoji
9759
10221
  )
9760
10222
  ),
9761
- filteredEmojis.length === 0 && React40.createElement(
10223
+ filteredEmojis.length === 0 && React41.createElement(
9762
10224
  "div",
9763
10225
  { className: "col-span-8 text-center text-sm text-muted-foreground py-4" },
9764
10226
  "No emojis found"
@@ -9958,10 +10420,10 @@ function FileUpload({
9958
10420
  className,
9959
10421
  children
9960
10422
  }) {
9961
- const [files, setFiles] = React40.useState([]);
9962
- const [isDragging, setIsDragging] = React40.useState(false);
9963
- const inputRef = React40.useRef(null);
9964
- const api = React40.useMemo(
10423
+ const [files, setFiles] = React41.useState([]);
10424
+ const [isDragging, setIsDragging] = React41.useState(false);
10425
+ const inputRef = React41.useRef(null);
10426
+ const api = React41.useMemo(
9965
10427
  () => createFileUpload({
9966
10428
  accept,
9967
10429
  maxSize,
@@ -10026,17 +10488,17 @@ function FileUpload({
10026
10488
  handleClick();
10027
10489
  }
10028
10490
  };
10029
- return React40.createElement(
10491
+ return React41.createElement(
10030
10492
  "div",
10031
10493
  { className },
10032
10494
  // Hidden file input
10033
- React40.createElement("input", {
10495
+ React41.createElement("input", {
10034
10496
  ref: inputRef,
10035
10497
  ...api.inputProps,
10036
10498
  onChange: handleInputChange
10037
10499
  }),
10038
10500
  // Drop zone
10039
- React40.createElement(
10501
+ React41.createElement(
10040
10502
  "div",
10041
10503
  {
10042
10504
  ...api.dropZoneProps,
@@ -10050,21 +10512,21 @@ function FileUpload({
10050
10512
  onDragOver: handleDragOver,
10051
10513
  onDrop: handleDrop
10052
10514
  },
10053
- children ?? React40.createElement(
10054
- React40.Fragment,
10515
+ children ?? React41.createElement(
10516
+ React41.Fragment,
10055
10517
  null,
10056
- React40.createElement("div", { className: "text-2xl mb-2" }, "\u{1F4C1}"),
10057
- React40.createElement(
10518
+ React41.createElement("div", { className: "text-2xl mb-2" }, "\u{1F4C1}"),
10519
+ React41.createElement(
10058
10520
  "p",
10059
10521
  { className: "text-sm text-muted-foreground" },
10060
10522
  "Drag & drop files here, or click to select"
10061
10523
  ),
10062
- accept && React40.createElement(
10524
+ accept && React41.createElement(
10063
10525
  "p",
10064
10526
  { className: "text-xs text-muted-foreground mt-1" },
10065
10527
  `Accepted: ${accept}`
10066
10528
  ),
10067
- maxSize && React40.createElement(
10529
+ maxSize && React41.createElement(
10068
10530
  "p",
10069
10531
  { className: "text-xs text-muted-foreground" },
10070
10532
  `Max size: ${formatFileSize(maxSize)}`
@@ -10072,37 +10534,37 @@ function FileUpload({
10072
10534
  )
10073
10535
  ),
10074
10536
  // File list
10075
- files.length > 0 && React40.createElement(
10537
+ files.length > 0 && React41.createElement(
10076
10538
  "div",
10077
10539
  { className: fileUploadFileListStyles },
10078
10540
  files.map(
10079
- (file) => React40.createElement(
10541
+ (file) => React41.createElement(
10080
10542
  "div",
10081
10543
  { key: file.id, className: fileUploadFileItemStyles },
10082
- React40.createElement(
10544
+ React41.createElement(
10083
10545
  "div",
10084
10546
  { className: "flex-1 min-w-0" },
10085
- React40.createElement("div", { className: "font-medium truncate" }, file.name),
10086
- React40.createElement(
10547
+ React41.createElement("div", { className: "font-medium truncate" }, file.name),
10548
+ React41.createElement(
10087
10549
  "div",
10088
10550
  { className: "text-xs text-muted-foreground" },
10089
10551
  formatFileSize(file.size)
10090
10552
  ),
10091
- file.status === "uploading" && React40.createElement(
10553
+ file.status === "uploading" && React41.createElement(
10092
10554
  "div",
10093
10555
  { className: cn(fileUploadProgressStyles, "mt-1") },
10094
- React40.createElement("div", {
10556
+ React41.createElement("div", {
10095
10557
  className: fileUploadProgressBarStyles,
10096
10558
  style: { width: `${file.progress}%` }
10097
10559
  })
10098
10560
  ),
10099
- file.error && React40.createElement(
10561
+ file.error && React41.createElement(
10100
10562
  "div",
10101
10563
  { className: "text-xs text-destructive mt-0.5" },
10102
10564
  file.error
10103
10565
  )
10104
10566
  ),
10105
- React40.createElement(
10567
+ React41.createElement(
10106
10568
  "button",
10107
10569
  {
10108
10570
  type: "button",
@@ -10237,13 +10699,13 @@ function KeyboardShortcut({
10237
10699
  enabled = true,
10238
10700
  preventDefault = true
10239
10701
  }) {
10240
- const apiRef = React40.useRef(
10702
+ const apiRef = React41.useRef(
10241
10703
  createKeyboardShortcut({ keys, onTrigger, enabled, preventDefault })
10242
10704
  );
10243
- React40.useEffect(() => {
10705
+ React41.useEffect(() => {
10244
10706
  apiRef.current = createKeyboardShortcut({ keys, onTrigger, enabled, preventDefault });
10245
10707
  }, [keys, onTrigger, enabled, preventDefault]);
10246
- React40.useEffect(() => {
10708
+ React41.useEffect(() => {
10247
10709
  if (!enabled) return;
10248
10710
  const handleKeyDown = (e) => {
10249
10711
  apiRef.current.handler(e);
@@ -10259,15 +10721,15 @@ function ShortcutBadge({ keys, platform = true, className }) {
10259
10721
  }, enabled: false });
10260
10722
  const displayKeys = platform ? api.platformDisplay : api.display;
10261
10723
  const isMacDisplay = platform && displayKeys !== api.display;
10262
- return React40.createElement(
10724
+ return React41.createElement(
10263
10725
  "kbd",
10264
10726
  { ...api.badgeAriaProps, className: cn(shortcutBadgeStyles, className) },
10265
- isMacDisplay ? React40.createElement("span", null, displayKeys) : keys.map(
10266
- (key, i) => React40.createElement(
10267
- React40.Fragment,
10727
+ isMacDisplay ? React41.createElement("span", null, displayKeys) : keys.map(
10728
+ (key, i) => React41.createElement(
10729
+ React41.Fragment,
10268
10730
  { key: i },
10269
- i > 0 && React40.createElement("span", { className: shortcutSeparatorStyles }, "+"),
10270
- React40.createElement(
10731
+ i > 0 && React41.createElement("span", { className: shortcutSeparatorStyles }, "+"),
10732
+ React41.createElement(
10271
10733
  "span",
10272
10734
  { className: shortcutKeyStyles },
10273
10735
  formatShortcut([key], false)
@@ -10443,7 +10905,7 @@ var otpInputSlotVariants = cva({
10443
10905
  filled: "false"
10444
10906
  }
10445
10907
  });
10446
- var OtpInput = React40.forwardRef(
10908
+ var OtpInput = React41.forwardRef(
10447
10909
  ({
10448
10910
  length = 6,
10449
10911
  value = "",
@@ -10455,15 +10917,15 @@ var OtpInput = React40.forwardRef(
10455
10917
  className,
10456
10918
  ...props
10457
10919
  }, ref) => {
10458
- const inputRefs = React40.useRef([]);
10459
- const [focusedIndex, setFocusedIndex] = React40.useState(autoFocus ? 0 : -1);
10460
- const [values, setValues] = React40.useState(
10920
+ const inputRefs = React41.useRef([]);
10921
+ const [focusedIndex, setFocusedIndex] = React41.useState(autoFocus ? 0 : -1);
10922
+ const [values, setValues] = React41.useState(
10461
10923
  () => Array.from({ length }, (_, i) => value.charAt(i) || "")
10462
10924
  );
10463
- React40.useEffect(() => {
10925
+ React41.useEffect(() => {
10464
10926
  setValues(Array.from({ length }, (_, i) => value.charAt(i) || ""));
10465
10927
  }, [value, length]);
10466
- React40.useEffect(() => {
10928
+ React41.useEffect(() => {
10467
10929
  if (autoFocus && inputRefs.current[0]) {
10468
10930
  inputRefs.current[0].focus();
10469
10931
  }
@@ -10643,13 +11105,13 @@ function PresenceIndicator({
10643
11105
  className
10644
11106
  }) {
10645
11107
  const api = createPresence({ status, showLabel, label });
10646
- return React40.createElement(
11108
+ return React41.createElement(
10647
11109
  "span",
10648
11110
  { ...api.ariaProps, className: cn(presenceContainerStyles, className) },
10649
- React40.createElement("span", {
11111
+ React41.createElement("span", {
10650
11112
  className: presenceDotVariants({ status, size })
10651
11113
  }),
10652
- api.showLabel && React40.createElement("span", { className: presenceLabelStyles }, api.label)
11114
+ api.showLabel && React41.createElement("span", { className: presenceLabelStyles }, api.label)
10653
11115
  );
10654
11116
  }
10655
11117
  PresenceIndicator.displayName = "PresenceIndicator";
@@ -10737,7 +11199,7 @@ var radioCircleVariants = cva({
10737
11199
  });
10738
11200
 
10739
11201
  // ../react-radio/dist/index.js
10740
- var RadioContext = React40.createContext(null);
11202
+ var RadioContext = React41.createContext(null);
10741
11203
  function RadioGroup({
10742
11204
  children,
10743
11205
  className,
@@ -10748,25 +11210,25 @@ function RadioGroup({
10748
11210
  disabled = false,
10749
11211
  orientation = "vertical"
10750
11212
  }) {
10751
- const [internalValue, setInternalValue] = React40.useState(defaultValue);
11213
+ const [internalValue, setInternalValue] = React41.useState(defaultValue);
10752
11214
  const isControlled = controlledValue !== void 0;
10753
11215
  const currentValue = isControlled ? controlledValue : internalValue;
10754
11216
  const api = createRadioGroup({ value: currentValue, name, disabled, orientation });
10755
- const handleChange = React40.useCallback(
11217
+ const handleChange = React41.useCallback(
10756
11218
  (val) => {
10757
11219
  if (!isControlled) setInternalValue(val);
10758
11220
  onValueChange?.(val);
10759
11221
  },
10760
11222
  [isControlled, onValueChange]
10761
11223
  );
10762
- const ctx = React40.useMemo(
11224
+ const ctx = React41.useMemo(
10763
11225
  () => ({ value: currentValue, onValueChange: handleChange, name, disabled }),
10764
11226
  [currentValue, handleChange, name, disabled]
10765
11227
  );
10766
- return React40.createElement(
11228
+ return React41.createElement(
10767
11229
  RadioContext.Provider,
10768
11230
  { value: ctx },
10769
- React40.createElement(
11231
+ React41.createElement(
10770
11232
  "div",
10771
11233
  { ...api.groupProps, className: cn(radioGroupVariants({ orientation }), className) },
10772
11234
  children
@@ -10774,17 +11236,17 @@ function RadioGroup({
10774
11236
  );
10775
11237
  }
10776
11238
  function RadioItem({ value, children, disabled = false, className }) {
10777
- const ctx = React40.useContext(RadioContext);
11239
+ const ctx = React41.useContext(RadioContext);
10778
11240
  if (!ctx) throw new Error("RadioItem must be used within RadioGroup");
10779
11241
  const isChecked = ctx.value === value;
10780
11242
  const isDisabled = ctx.disabled || disabled;
10781
- return React40.createElement(
11243
+ return React41.createElement(
10782
11244
  "label",
10783
11245
  {
10784
11246
  className: cn(radioItemVariants({ disabled: isDisabled ? "true" : "false" }), className),
10785
11247
  "data-state": isChecked ? "checked" : "unchecked"
10786
11248
  },
10787
- React40.createElement(
11249
+ React41.createElement(
10788
11250
  "button",
10789
11251
  {
10790
11252
  type: "button",
@@ -10796,12 +11258,12 @@ function RadioItem({ value, children, disabled = false, className }) {
10796
11258
  className: cn(radioCircleVariants({ checked: isChecked ? "true" : "false" })),
10797
11259
  onClick: () => !isDisabled && ctx.onValueChange(value)
10798
11260
  },
10799
- isChecked && React40.createElement(
11261
+ isChecked && React41.createElement(
10800
11262
  "span",
10801
11263
  { className: "block h-2 w-2 rounded-full bg-primary-foreground mx-auto" }
10802
11264
  )
10803
11265
  ),
10804
- children && React40.createElement("span", { className: "text-sm" }, children)
11266
+ children && React41.createElement("span", { className: "text-sm" }, children)
10805
11267
  );
10806
11268
  }
10807
11269
  RadioGroup.displayName = "RadioGroup";
@@ -10873,11 +11335,11 @@ function ReactionBar({
10873
11335
  className
10874
11336
  }) {
10875
11337
  const api = createReactionBar({ reactions, onToggle, onAdd });
10876
- return React40.createElement(
11338
+ return React41.createElement(
10877
11339
  "div",
10878
11340
  { ...api.ariaProps, className: cn(reactionBarStyles, className) },
10879
11341
  api.reactions.map(
10880
- (reaction, i) => React40.createElement(
11342
+ (reaction, i) => React41.createElement(
10881
11343
  "button",
10882
11344
  {
10883
11345
  key: `${reaction.emoji}-${i}`,
@@ -10888,11 +11350,11 @@ function ReactionBar({
10888
11350
  onClick: () => api.toggle(reaction.emoji),
10889
11351
  ...api.getReactionAriaProps(reaction)
10890
11352
  },
10891
- React40.createElement("span", { className: reactionEmojiStyles }, reaction.emoji),
10892
- React40.createElement("span", { className: reactionCountStyles }, reaction.count)
11353
+ React41.createElement("span", { className: reactionEmojiStyles }, reaction.emoji),
11354
+ React41.createElement("span", { className: reactionCountStyles }, reaction.count)
10893
11355
  )
10894
11356
  ),
10895
- showAddButton && React40.createElement(
11357
+ showAddButton && React41.createElement(
10896
11358
  "button",
10897
11359
  {
10898
11360
  type: "button",
@@ -11041,7 +11503,7 @@ var selectItemVariants = cva({
11041
11503
  selected: "false"
11042
11504
  }
11043
11505
  });
11044
- var SelectContext = React40.createContext({
11506
+ var SelectContext = React41.createContext({
11045
11507
  value: void 0,
11046
11508
  onValueChange: () => {
11047
11509
  },
@@ -11061,7 +11523,7 @@ function Select({
11061
11523
  children,
11062
11524
  placeholder = "Select an option"
11063
11525
  }) {
11064
- const [open, setOpen] = React40.useState(false);
11526
+ const [open, setOpen] = React41.useState(false);
11065
11527
  const api = createSelect({ value, disabled, open, placeholder });
11066
11528
  return /* @__PURE__ */ jsx(
11067
11529
  SelectContext.Provider,
@@ -11084,9 +11546,9 @@ function Select({
11084
11546
  }
11085
11547
  );
11086
11548
  }
11087
- var SelectTrigger = React40.forwardRef(
11549
+ var SelectTrigger = React41.forwardRef(
11088
11550
  ({ className, children, size = "default", ...props }, ref) => {
11089
- const { open, setOpen, disabled, triggerId, contentId } = React40.useContext(SelectContext);
11551
+ const { open, setOpen, disabled, triggerId, contentId } = React41.useContext(SelectContext);
11090
11552
  const api = createSelect({ disabled, open });
11091
11553
  const handleClick = () => {
11092
11554
  if (!disabled) {
@@ -11143,9 +11605,9 @@ var SelectTrigger = React40.forwardRef(
11143
11605
  }
11144
11606
  );
11145
11607
  SelectTrigger.displayName = "SelectTrigger";
11146
- var SelectContent = React40.forwardRef(
11608
+ var SelectContent = React41.forwardRef(
11147
11609
  ({ className, children, ...props }, ref) => {
11148
- const { open, contentId, triggerId } = React40.useContext(SelectContext);
11610
+ const { open, contentId, triggerId } = React41.useContext(SelectContext);
11149
11611
  if (!open) return null;
11150
11612
  return /* @__PURE__ */ jsx(
11151
11613
  "div",
@@ -11163,9 +11625,9 @@ var SelectContent = React40.forwardRef(
11163
11625
  }
11164
11626
  );
11165
11627
  SelectContent.displayName = "SelectContent";
11166
- var SelectItem = React40.forwardRef(
11628
+ var SelectItem = React41.forwardRef(
11167
11629
  ({ className, children, value: itemValue, disabled: itemDisabled = false, ...props }, ref) => {
11168
- const { value, onValueChange, setOpen } = React40.useContext(SelectContext);
11630
+ const { value, onValueChange, setOpen } = React41.useContext(SelectContext);
11169
11631
  const isSelected = value === itemValue;
11170
11632
  const handleClick = () => {
11171
11633
  if (!itemDisabled) {
@@ -11297,11 +11759,11 @@ function StatusIndicator({
11297
11759
  }) {
11298
11760
  const api = createStatusIndicator({ type, label, pulse });
11299
11761
  const dotClassName = api.pulse ? statusPulseVariants({ type }) : statusDotVariants({ type });
11300
- return React40.createElement(
11762
+ return React41.createElement(
11301
11763
  "span",
11302
11764
  { ...api.ariaProps, className: cn(statusContainerStyles, className) },
11303
- React40.createElement("span", { className: dotClassName }),
11304
- showLabel && React40.createElement("span", { className: statusLabelStyles }, api.label)
11765
+ React41.createElement("span", { className: dotClassName }),
11766
+ showLabel && React41.createElement("span", { className: statusLabelStyles }, api.label)
11305
11767
  );
11306
11768
  }
11307
11769
  StatusIndicator.displayName = "StatusIndicator";
@@ -11388,7 +11850,7 @@ var switchThumbVariants = cva({
11388
11850
  { checked: "true", size: "lg", class: "translate-x-5" }
11389
11851
  ]
11390
11852
  });
11391
- var Switch = React40.forwardRef(
11853
+ var Switch = React41.forwardRef(
11392
11854
  ({ checked = false, onCheckedChange, disabled = false, size = "default", className, ...props }, ref) => {
11393
11855
  const api = createSwitch({ checked, disabled });
11394
11856
  const handleClick = () => {
@@ -11527,41 +11989,41 @@ function MessageComponent({
11527
11989
  message,
11528
11990
  api
11529
11991
  }) {
11530
- return React40.createElement(
11992
+ return React41.createElement(
11531
11993
  "div",
11532
11994
  { className: threadMessageStyles, ...api.getMessageAriaProps(message) },
11533
11995
  // Avatar
11534
- React40.createElement(
11996
+ React41.createElement(
11535
11997
  "div",
11536
11998
  { className: threadAvatarStyles },
11537
- message.author.avatarUrl ? React40.createElement("img", {
11999
+ message.author.avatarUrl ? React41.createElement("img", {
11538
12000
  src: message.author.avatarUrl,
11539
12001
  alt: message.author.name,
11540
12002
  className: "h-full w-full object-cover"
11541
12003
  }) : message.author.name.charAt(0).toUpperCase()
11542
12004
  ),
11543
12005
  // Content
11544
- React40.createElement(
12006
+ React41.createElement(
11545
12007
  "div",
11546
12008
  { className: threadContentStyles },
11547
- React40.createElement(
12009
+ React41.createElement(
11548
12010
  "div",
11549
12011
  { className: "flex items-baseline" },
11550
- React40.createElement("span", { className: threadAuthorStyles }, message.author.name),
11551
- React40.createElement(
12012
+ React41.createElement("span", { className: threadAuthorStyles }, message.author.name),
12013
+ React41.createElement(
11552
12014
  "span",
11553
12015
  { className: threadTimestampStyles },
11554
12016
  api.formatTimestamp(message.timestamp)
11555
12017
  ),
11556
- message.edited && React40.createElement("span", { className: threadEditedStyles }, "(edited)")
12018
+ message.edited && React41.createElement("span", { className: threadEditedStyles }, "(edited)")
11557
12019
  ),
11558
- React40.createElement("div", { className: threadBodyStyles }, message.content),
12020
+ React41.createElement("div", { className: threadBodyStyles }, message.content),
11559
12021
  // Reactions
11560
- message.reactions && message.reactions.length > 0 && React40.createElement(
12022
+ message.reactions && message.reactions.length > 0 && React41.createElement(
11561
12023
  "div",
11562
12024
  { className: threadReactionsStyles },
11563
12025
  message.reactions.map(
11564
- (reaction, i) => React40.createElement(
12026
+ (reaction, i) => React41.createElement(
11565
12027
  "button",
11566
12028
  {
11567
12029
  key: `${reaction.emoji}-${i}`,
@@ -11577,25 +12039,25 @@ function MessageComponent({
11577
12039
  )
11578
12040
  ),
11579
12041
  // Reply indicator
11580
- message.replies && message.replies.length > 0 && React40.createElement(
12042
+ message.replies && message.replies.length > 0 && React41.createElement(
11581
12043
  "div",
11582
12044
  { className: threadReplyIndicatorStyles },
11583
12045
  `${message.replies.length} ${message.replies.length === 1 ? "reply" : "replies"}`
11584
12046
  ),
11585
12047
  // Attachments
11586
12048
  message.attachments && message.attachments.map(
11587
- (attachment) => React40.createElement(
12049
+ (attachment) => React41.createElement(
11588
12050
  "div",
11589
12051
  { key: attachment.id, className: threadAttachmentStyles },
11590
- React40.createElement("span", null, "\u{1F4CE}"),
11591
- React40.createElement("span", { className: "truncate" }, attachment.name)
12052
+ React41.createElement("span", null, "\u{1F4CE}"),
12053
+ React41.createElement("span", { className: "truncate" }, attachment.name)
11592
12054
  )
11593
12055
  ),
11594
12056
  // Actions (reply button)
11595
- React40.createElement(
12057
+ React41.createElement(
11596
12058
  "div",
11597
12059
  { className: threadActionsStyles },
11598
- React40.createElement(
12060
+ React41.createElement(
11599
12061
  "button",
11600
12062
  {
11601
12063
  type: "button",
@@ -11617,11 +12079,11 @@ function ThreadView({
11617
12079
  className
11618
12080
  }) {
11619
12081
  const api = createThreadView({ messages, onReply, onReact, currentUserId });
11620
- return React40.createElement(
12082
+ return React41.createElement(
11621
12083
  "div",
11622
12084
  { ...api.ariaProps, className: cn(threadContainerStyles, className) },
11623
12085
  messages.map(
11624
- (message) => React40.createElement(MessageComponent, {
12086
+ (message) => React41.createElement(MessageComponent, {
11625
12087
  key: message.id,
11626
12088
  message,
11627
12089
  api
@@ -11631,6 +12093,239 @@ function ThreadView({
11631
12093
  }
11632
12094
  ThreadView.displayName = "ThreadView";
11633
12095
 
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 };
12096
+ // ../table-of-contents/dist/index.js
12097
+ function parseHeadings(container, selectors = "h2, h3, h4") {
12098
+ const headings = Array.from(container.querySelectorAll(selectors));
12099
+ return headings.map((h) => ({
12100
+ id: h.id || h.textContent?.toLowerCase().replace(/\s+/g, "-") || "",
12101
+ text: h.textContent || "",
12102
+ level: parseInt(h.tagName.charAt(1), 10)
12103
+ })).filter((h) => h.id !== "");
12104
+ }
12105
+ function observeHeadings(headingIds, callback, options) {
12106
+ const observer = new IntersectionObserver((entries) => {
12107
+ for (const entry of entries) {
12108
+ if (entry.isIntersecting) {
12109
+ callback(entry.target.id);
12110
+ break;
12111
+ }
12112
+ }
12113
+ }, { rootMargin: "0px 0px -80% 0px", ...options });
12114
+ headingIds.forEach((id) => {
12115
+ const el = document.getElementById(id);
12116
+ if (el) observer.observe(el);
12117
+ });
12118
+ return () => observer.disconnect();
12119
+ }
12120
+ var TableOfContents = React41.forwardRef(
12121
+ ({ className, containerRef, selectors = "h2, h3, h4", onActiveIdChange, ...props }, ref) => {
12122
+ const [headings, setHeadings] = React41.useState([]);
12123
+ const [activeId, setActiveId] = React41.useState("");
12124
+ React41.useEffect(() => {
12125
+ const container = containerRef?.current || document.body;
12126
+ if (!container) return;
12127
+ const parsedHeadings = parseHeadings(container, selectors);
12128
+ setHeadings(parsedHeadings);
12129
+ if (parsedHeadings.length === 0) return;
12130
+ const disconnect = observeHeadings(parsedHeadings.map((h) => h.id), (id) => {
12131
+ setActiveId(id);
12132
+ onActiveIdChange?.(id);
12133
+ });
12134
+ return () => disconnect();
12135
+ }, [containerRef, selectors, onActiveIdChange]);
12136
+ if (headings.length === 0) {
12137
+ return null;
12138
+ }
12139
+ 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(
12140
+ "li",
12141
+ {
12142
+ className: cn(
12143
+ "py-1",
12144
+ heading.level === 3 ? "pl-4" : heading.level === 4 ? "pl-8" : ""
12145
+ ),
12146
+ children: /* @__PURE__ */ jsx(
12147
+ "a",
12148
+ {
12149
+ href: `#${heading.id}`,
12150
+ className: cn(
12151
+ "block text-sm transition-colors hover:text-foreground",
12152
+ activeId === heading.id ? "font-medium text-foreground" : "text-muted-foreground"
12153
+ ),
12154
+ children: heading.text
12155
+ }
12156
+ )
12157
+ },
12158
+ heading.id
12159
+ )) }) });
12160
+ }
12161
+ );
12162
+ TableOfContents.displayName = "TableOfContents";
12163
+ var CarouselContext = React41.createContext(null);
12164
+ var Carousel = React41.forwardRef(
12165
+ ({ className, type = "single", collapsible, value: controlledValue, defaultValue, onValueChange, ...props }, ref) => {
12166
+ const [uncontrolledValue, setUncontrolledValue] = React41.useState(
12167
+ defaultValue ?? (type === "multiple" ? [] : "")
12168
+ );
12169
+ const value = controlledValue !== void 0 ? controlledValue : uncontrolledValue;
12170
+ const handleValueChange = React41.useCallback(
12171
+ (itemValue) => {
12172
+ if (type === "single") {
12173
+ const newValue = value === itemValue && collapsible ? "" : itemValue;
12174
+ setUncontrolledValue(newValue);
12175
+ onValueChange?.(newValue);
12176
+ } else {
12177
+ const arrValue = Array.isArray(value) ? value : [];
12178
+ const newValue = arrValue.includes(itemValue) ? arrValue.filter((v) => v !== itemValue) : [...arrValue, itemValue];
12179
+ setUncontrolledValue(newValue);
12180
+ onValueChange?.(newValue);
12181
+ }
12182
+ },
12183
+ [type, collapsible, value, onValueChange]
12184
+ );
12185
+ return /* @__PURE__ */ jsx(CarouselContext.Provider, { value: { type, value, onValueChange: handleValueChange }, children: /* @__PURE__ */ jsx("div", { ref, className: cn("flex flex-col w-full", className), ...props }) });
12186
+ }
12187
+ );
12188
+ Carousel.displayName = "Carousel";
12189
+ var CarouselItemContext = React41.createContext(null);
12190
+ var CarouselItem = React41.forwardRef(
12191
+ ({ className, value, ...props }, ref) => {
12192
+ const context = React41.useContext(CarouselContext);
12193
+ if (!context) throw new Error("CarouselItem must be within Carousel");
12194
+ const isOpen = context.type === "single" ? context.value === value : Array.isArray(context.value) && context.value.includes(value);
12195
+ 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 }) });
12196
+ }
12197
+ );
12198
+ CarouselItem.displayName = "CarouselItem";
12199
+ var CarouselTrigger = React41.forwardRef(
12200
+ ({ className, children, ...props }, ref) => {
12201
+ const carouselContext = React41.useContext(CarouselContext);
12202
+ const itemContext = React41.useContext(CarouselItemContext);
12203
+ if (!carouselContext || !itemContext) throw new Error("CarouselTrigger missing context");
12204
+ return /* @__PURE__ */ jsx("h3", { className: "flex m-0 p-0", children: /* @__PURE__ */ jsxs(
12205
+ "button",
12206
+ {
12207
+ ref,
12208
+ type: "button",
12209
+ "aria-expanded": itemContext.isOpen,
12210
+ className: cn(
12211
+ "flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180",
12212
+ className
12213
+ ),
12214
+ "data-state": itemContext.isOpen ? "open" : "closed",
12215
+ onClick: () => carouselContext.onValueChange(itemContext.value),
12216
+ ...props,
12217
+ children: [
12218
+ children,
12219
+ /* @__PURE__ */ jsx(
12220
+ "svg",
12221
+ {
12222
+ xmlns: "http://www.w3.org/2000/svg",
12223
+ width: "24",
12224
+ height: "24",
12225
+ viewBox: "0 0 24 24",
12226
+ fill: "none",
12227
+ stroke: "currentColor",
12228
+ strokeWidth: "2",
12229
+ strokeLinecap: "round",
12230
+ strokeLinejoin: "round",
12231
+ className: "h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200",
12232
+ children: /* @__PURE__ */ jsx("path", { d: "m6 9 6 6 6-6" })
12233
+ }
12234
+ )
12235
+ ]
12236
+ }
12237
+ ) });
12238
+ }
12239
+ );
12240
+ CarouselTrigger.displayName = "CarouselTrigger";
12241
+ var CarouselContent = React41.forwardRef(
12242
+ ({ className, children, ...props }, ref) => {
12243
+ const itemContext = React41.useContext(CarouselItemContext);
12244
+ if (!itemContext) throw new Error("CarouselContent missing context");
12245
+ return /* @__PURE__ */ jsx(
12246
+ "div",
12247
+ {
12248
+ ref,
12249
+ className: cn(
12250
+ "overflow-hidden text-sm",
12251
+ className
12252
+ ),
12253
+ "data-state": itemContext.isOpen ? "open" : "closed",
12254
+ hidden: !itemContext.isOpen,
12255
+ ...props,
12256
+ children: /* @__PURE__ */ jsx("div", { className: "pb-4 pt-0 text-muted-foreground leading-relaxed", children })
12257
+ }
12258
+ );
12259
+ }
12260
+ );
12261
+ CarouselContent.displayName = "CarouselContent";
12262
+ var Pagination = React41.forwardRef(
12263
+ ({ className, ...props }, ref) => {
12264
+ return /* @__PURE__ */ jsx("div", { ref, className: cn("", className), ...props });
12265
+ }
12266
+ );
12267
+ Pagination.displayName = "Pagination";
12268
+ var Callout = () => /* @__PURE__ */ jsx("div", {});
12269
+ var Steps = () => /* @__PURE__ */ jsx("div", {});
12270
+
12271
+ // src/index.ts
12272
+ __reExport(index_exports, __toESM(require_dist()));
12273
+ __reExport(index_exports, __toESM(require_dist2()));
12274
+
12275
+ // ../react-skip-to-content/dist/index.js
12276
+ var SkipToContent = () => {
12277
+ return null;
12278
+ };
12279
+
12280
+ // ../react-code-block/dist/index.js
12281
+ var CodeBlock = () => {
12282
+ return null;
12283
+ };
12284
+
12285
+ // ../link-card/dist/index.js
12286
+ function createLinkCard(props = {}) {
12287
+ return {
12288
+ dataAttributes: { "data-slot": "link-card" }
12289
+ };
12290
+ }
12291
+ var LinkCard = React41.forwardRef(
12292
+ ({ className, ...props }, ref) => {
12293
+ const api = createLinkCard(props);
12294
+ return /* @__PURE__ */ jsx(
12295
+ "a",
12296
+ {
12297
+ ref,
12298
+ className: cn(className),
12299
+ ...api.dataAttributes,
12300
+ ...props
12301
+ }
12302
+ );
12303
+ }
12304
+ );
12305
+ LinkCard.displayName = "LinkCard";
12306
+
12307
+ // ../card-grid/dist/index.js
12308
+ function createCardGrid(props = {}) {
12309
+ return {
12310
+ dataAttributes: { "data-slot": "card-grid" }
12311
+ };
12312
+ }
12313
+ var CardGrid = React41.forwardRef(
12314
+ ({ className, columns = 3, ...props }, ref) => {
12315
+ const api = createCardGrid({ });
12316
+ return /* @__PURE__ */ jsx(
12317
+ "div",
12318
+ {
12319
+ ref,
12320
+ className: cn(className),
12321
+ ...api.dataAttributes,
12322
+ ...props
12323
+ }
12324
+ );
12325
+ }
12326
+ );
12327
+ CardGrid.displayName = "CardGrid";
12328
+
12329
+ 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, 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
12330
  //# sourceMappingURL=index.js.map
11636
12331
  //# sourceMappingURL=index.js.map