@doscientos/ui 0.1.8 → 0.1.9

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
@@ -184,17 +184,75 @@ function AlertAction({ className, children, ...props }) {
184
184
 
185
185
  // src/ui/app-shell/app-shell.tsx
186
186
  import { jsx as jsx3 } from "react/jsx-runtime";
187
- function AppShell({ className, ...props }) {
188
- return /* @__PURE__ */ jsx3("div", { "data-slot": "app-shell", className: cn("flex min-h-screen w-full bg-muted/30 text-foreground", className), ...props });
187
+ function AppShell({
188
+ className,
189
+ sidebarBreakpoint = "md",
190
+ ...props
191
+ }) {
192
+ return /* @__PURE__ */ jsx3(
193
+ "div",
194
+ {
195
+ "data-slot": "app-shell",
196
+ "data-sidebar-breakpoint": sidebarBreakpoint,
197
+ className: cn("bg-background text-foreground", className),
198
+ ...props
199
+ }
200
+ );
201
+ }
202
+ function AppShellSidebar({ className, ...props }) {
203
+ return /* @__PURE__ */ jsx3(
204
+ "aside",
205
+ {
206
+ "data-slot": "app-shell-sidebar",
207
+ className: cn("w-56 shrink-0 border-r border-border bg-card text-foreground", className),
208
+ ...props
209
+ }
210
+ );
189
211
  }
190
212
  function AppShellMain({ className, ...props }) {
191
- return /* @__PURE__ */ jsx3("main", { "data-slot": "app-shell-main", className: cn("min-w-0 flex-1", className), ...props });
213
+ return /* @__PURE__ */ jsx3("main", { "data-slot": "app-shell-main", className: cn("bg-background", className), ...props });
192
214
  }
193
215
  function AppShellHeader({ className, ...props }) {
194
- return /* @__PURE__ */ jsx3("header", { "data-slot": "app-shell-header", className: cn("sticky top-0 z-10 flex min-h-14 items-center border-b border-border bg-background/85 px-4 backdrop-blur-md supports-[backdrop-filter]:bg-background/70", className), ...props });
216
+ return /* @__PURE__ */ jsx3(
217
+ "header",
218
+ {
219
+ "data-slot": "app-shell-header",
220
+ className: cn("border-b border-border bg-background px-4", className),
221
+ ...props
222
+ }
223
+ );
224
+ }
225
+ function AppShellMobileHeader({
226
+ className,
227
+ ...props
228
+ }) {
229
+ return /* @__PURE__ */ jsx3(
230
+ "header",
231
+ {
232
+ "data-slot": "app-shell-mobile-header",
233
+ className: cn("h-14 shrink-0 items-center gap-2 border-b border-border bg-background px-3", className),
234
+ ...props
235
+ }
236
+ );
195
237
  }
196
- function AppShellContent({ className, ...props }) {
197
- return /* @__PURE__ */ jsx3("div", { "data-slot": "app-shell-content", className: cn("mx-auto w-full max-w-[1600px] p-4 md:p-6", className), ...props });
238
+ function AppShellContent({
239
+ className,
240
+ size = "wide",
241
+ padded = true,
242
+ scrollable = true,
243
+ ...props
244
+ }) {
245
+ return /* @__PURE__ */ jsx3(
246
+ "div",
247
+ {
248
+ "data-slot": "app-shell-content",
249
+ "data-size": size,
250
+ "data-padded": padded || void 0,
251
+ "data-scrollable": scrollable || void 0,
252
+ className,
253
+ ...props
254
+ }
255
+ );
198
256
  }
199
257
 
200
258
  // src/ui/avatar/avatar.tsx
@@ -262,10 +320,19 @@ function BreadcrumbSeparator({ children = "/", className, ...props }) {
262
320
  return /* @__PURE__ */ jsx6("span", { "data-slot": "breadcrumb-separator", "aria-hidden": "true", className: cn("text-muted-foreground/60", className), ...props, children });
263
321
  }
264
322
 
323
+ // src/ui/button-group/button-group.tsx
324
+ import { jsx as jsx7 } from "react/jsx-runtime";
325
+ function ButtonGroup({ className, ...props }) {
326
+ return /* @__PURE__ */ jsx7("div", { role: "group", "data-slot": "button-group", className: cn("inline-flex items-center gap-2", className), ...props });
327
+ }
328
+ function ButtonGroupText({ className, ...props }) {
329
+ return /* @__PURE__ */ jsx7("span", { "data-slot": "button-group-text", className: cn("text-sm text-muted-foreground", className), ...props });
330
+ }
331
+
265
332
  // src/ui/button/button.tsx
266
333
  import { cva as cva2 } from "class-variance-authority";
267
334
  import { Button as AriaButton } from "react-aria-components";
268
- import { jsx as jsx7 } from "react/jsx-runtime";
335
+ import { jsx as jsx8 } from "react/jsx-runtime";
269
336
  var buttonVariants = cva2(
270
337
  "inline-flex shrink-0 cursor-pointer items-center justify-center gap-1.5 rounded-lg border border-transparent text-sm font-medium whitespace-nowrap transition-[background-color,border-color,color,box-shadow,transform] duration-150 outline-none focus-visible:ring-3 focus-visible:ring-ring/50 data-pressed:scale-[0.98] disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 motion-reduce:transition-none motion-reduce:data-pressed:transform-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
271
338
  {
@@ -290,16 +357,7 @@ var buttonVariants = cva2(
290
357
  }
291
358
  );
292
359
  function Button2({ className, variant, size, ...props }) {
293
- return /* @__PURE__ */ jsx7(AriaButton, { "data-slot": "button", className: cn(buttonVariants({ variant, size }), className), ...props });
294
- }
295
-
296
- // src/ui/button-group/button-group.tsx
297
- import { jsx as jsx8 } from "react/jsx-runtime";
298
- function ButtonGroup({ className, ...props }) {
299
- return /* @__PURE__ */ jsx8("div", { role: "group", "data-slot": "button-group", className: cn("inline-flex items-center gap-2", className), ...props });
300
- }
301
- function ButtonGroupText({ className, ...props }) {
302
- return /* @__PURE__ */ jsx8("span", { "data-slot": "button-group-text", className: cn("text-sm text-muted-foreground", className), ...props });
360
+ return /* @__PURE__ */ jsx8(AriaButton, { "data-slot": "button", className: cn(buttonVariants({ variant, size }), className), ...props });
303
361
  }
304
362
 
305
363
  // src/ui/card/card.tsx
@@ -414,8 +472,7 @@ function CommandItem({ className, ...props }) {
414
472
  return /* @__PURE__ */ jsx12(ListBoxItem2, { "data-slot": "command-item", className: cn("flex cursor-default items-center rounded-md px-2 py-1.5 text-sm outline-none data-focused:bg-muted data-disabled:pointer-events-none data-disabled:opacity-50", className), ...props });
415
473
  }
416
474
 
417
- // src/ui/dialog/dialog.tsx
418
- import { createContext, useContext } from "react";
475
+ // src/ui/modal-dialog/modal-dialog.tsx
419
476
  import { X } from "lucide-react";
420
477
  import {
421
478
  Dialog as AriaDialog,
@@ -424,50 +481,114 @@ import {
424
481
  ModalOverlay,
425
482
  Text as Text2
426
483
  } from "react-aria-components";
427
- import { jsx as jsx13, jsxs as jsxs4 } from "react/jsx-runtime";
428
- var DialogCloseContext = createContext(null);
429
- function Dialog({ open, children, ...props }) {
430
- return /* @__PURE__ */ jsx13(ModalOverlay, { isOpen: open, className: "fixed inset-0 z-50 grid place-items-center bg-black/20 p-4 backdrop-blur-[1px] motion-safe:data-entering:animate-ui-overlay-in motion-safe:data-exiting:animate-ui-overlay-out", ...props, children });
431
- }
432
- function DialogClose({ onPress, ...props }) {
433
- const close = useContext(DialogCloseContext);
434
- return /* @__PURE__ */ jsx13(Button2, { onPress: (event) => {
435
- onPress?.(event);
436
- close?.();
437
- }, ...props });
438
- }
439
- function DialogContent({ className, children, showCloseButton = true, ...props }) {
440
- return /* @__PURE__ */ jsx13(Modal, { className: "w-full max-w-md outline-none motion-safe:data-entering:animate-ui-surface-in motion-safe:data-exiting:animate-ui-surface-out", children: /* @__PURE__ */ jsx13(AriaDialog, { "data-slot": "dialog-content", className: cn("relative grid max-h-[calc(100dvh-2rem)] gap-4 overflow-y-auto rounded-xl bg-background p-5 text-foreground shadow-xl outline-none", className), ...props, children: ({ close }) => /* @__PURE__ */ jsxs4(DialogCloseContext.Provider, { value: close, children: [
441
- typeof children === "function" ? children({ close }) : children,
442
- showCloseButton && /* @__PURE__ */ jsx13(DialogClose, { "aria-label": "Cerrar di\xE1logo", variant: "ghost", size: "icon", className: "absolute top-2 right-2", children: /* @__PURE__ */ jsx13(X, { "aria-hidden": "true", className: "size-4" }) })
443
- ] }) }) });
444
- }
445
- function DialogHeader({ className, ...props }) {
446
- return /* @__PURE__ */ jsx13("div", { "data-slot": "dialog-header", className: cn("flex flex-col gap-2", className), ...props });
447
- }
448
- function DialogFooter({ className, ...props }) {
449
- return /* @__PURE__ */ jsx13("div", { "data-slot": "dialog-footer", className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className), ...props });
450
- }
451
- function DialogTitle({ className, ...props }) {
452
- return /* @__PURE__ */ jsx13(Heading, { slot: "title", className: cn("text-base font-semibold", className), ...props });
453
- }
454
- function DialogDescription({ className, ...props }) {
455
- return /* @__PURE__ */ jsx13(Text2, { slot: "description", className: cn("text-sm text-muted-foreground", className), ...props });
484
+ import { Fragment as Fragment4, jsx as jsx13, jsxs as jsxs4 } from "react/jsx-runtime";
485
+ var sizeClasses = {
486
+ sm: "w-[min(calc(100dvw-2rem),24rem)]",
487
+ md: "w-[min(calc(100dvw-2rem),28rem)]",
488
+ lg: "w-[min(calc(100dvw-2rem),36rem)]"
489
+ };
490
+ function ModalDialog({
491
+ open,
492
+ onOpenChange,
493
+ title,
494
+ description,
495
+ children,
496
+ footer,
497
+ size = "sm",
498
+ showCloseButton = true,
499
+ className,
500
+ footerClassName,
501
+ ...props
502
+ }) {
503
+ const layoutClass = children ? footer ? "grid-rows-[auto_minmax(0,1fr)_auto]" : "grid-rows-[auto_minmax(0,1fr)]" : "grid-rows-[auto_auto]";
504
+ return /* @__PURE__ */ jsx13(
505
+ ModalOverlay,
506
+ {
507
+ isOpen: open,
508
+ onOpenChange,
509
+ className: "fixed inset-0 z-50 grid place-items-center bg-black/20 p-4 backdrop-blur-[1px] motion-safe:data-entering:animate-ui-overlay-in motion-safe:data-exiting:animate-ui-overlay-out",
510
+ ...props,
511
+ children: /* @__PURE__ */ jsx13(
512
+ Modal,
513
+ {
514
+ className: cn(
515
+ "max-h-[calc(100dvh-2rem)] outline-none motion-safe:data-entering:animate-ui-surface-in motion-safe:data-exiting:animate-ui-surface-out",
516
+ sizeClasses[size],
517
+ className
518
+ ),
519
+ children: /* @__PURE__ */ jsx13(
520
+ AriaDialog,
521
+ {
522
+ className: cn(
523
+ "grid max-h-[calc(100dvh-2rem)] overflow-hidden rounded-xl bg-background text-foreground shadow-xl outline-none",
524
+ layoutClass
525
+ ),
526
+ children: ({ close }) => /* @__PURE__ */ jsxs4(Fragment4, { children: [
527
+ /* @__PURE__ */ jsxs4("header", { "data-slot": "modal-dialog-header", className: "flex items-start gap-3 border-b border-border px-5 py-4", children: [
528
+ /* @__PURE__ */ jsxs4("div", { className: "min-w-0 flex-1", children: [
529
+ /* @__PURE__ */ jsx13(Heading, { slot: "title", className: "font-heading text-base leading-none font-medium", children: title }),
530
+ description ? /* @__PURE__ */ jsx13(Text2, { slot: "description", className: "mt-2 text-sm text-muted-foreground", children: description }) : null
531
+ ] }),
532
+ showCloseButton ? /* @__PURE__ */ jsx13(
533
+ Button2,
534
+ {
535
+ "aria-label": "Cerrar di\xE1logo",
536
+ variant: "ghost",
537
+ size: "icon",
538
+ className: "-mr-2 -mt-1",
539
+ onPress: close,
540
+ children: /* @__PURE__ */ jsx13(X, { "aria-hidden": "true", className: "size-4" })
541
+ }
542
+ ) : null
543
+ ] }),
544
+ children ? /* @__PURE__ */ jsx13("div", { "data-slot": "modal-dialog-body", className: "min-h-0 overflow-y-auto px-5 py-4", children }) : null,
545
+ footer ? /* @__PURE__ */ jsx13(
546
+ "footer",
547
+ {
548
+ "data-slot": "modal-dialog-footer",
549
+ className: cn(
550
+ "flex flex-col-reverse gap-2 border-t border-border bg-muted/50 px-5 py-4 sm:flex-row sm:flex-wrap sm:justify-end",
551
+ footerClassName
552
+ ),
553
+ children: footer
554
+ }
555
+ ) : null
556
+ ] })
557
+ }
558
+ )
559
+ }
560
+ )
561
+ }
562
+ );
456
563
  }
457
564
 
458
565
  // src/ui/confirm-dialog/confirm-dialog.tsx
459
- import { jsx as jsx14, jsxs as jsxs5 } from "react/jsx-runtime";
460
- function ConfirmDialog({ open, onOpenChange, title, description, confirmLabel = "Confirmar", cancelLabel = "Cancelar", destructive = false, pending = false, onConfirm }) {
461
- return /* @__PURE__ */ jsx14(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs5(DialogContent, { showCloseButton: false, children: [
462
- /* @__PURE__ */ jsxs5(DialogHeader, { children: [
463
- /* @__PURE__ */ jsx14(DialogTitle, { children: title }),
464
- description && /* @__PURE__ */ jsx14(DialogDescription, { children: description })
465
- ] }),
466
- /* @__PURE__ */ jsxs5(DialogFooter, { children: [
467
- /* @__PURE__ */ jsx14(Button2, { variant: "outline", isDisabled: pending, onPress: () => onOpenChange(false), children: cancelLabel }),
468
- /* @__PURE__ */ jsx14(Button2, { variant: destructive ? "destructive" : "default", isDisabled: pending, onPress: onConfirm, children: confirmLabel })
469
- ] })
470
- ] }) });
566
+ import { Fragment as Fragment5, jsx as jsx14, jsxs as jsxs5 } from "react/jsx-runtime";
567
+ function ConfirmDialog({
568
+ open,
569
+ onOpenChange,
570
+ title,
571
+ description,
572
+ confirmLabel = "Confirmar",
573
+ cancelLabel = "Cancelar",
574
+ destructive = false,
575
+ pending = false,
576
+ onConfirm
577
+ }) {
578
+ return /* @__PURE__ */ jsx14(
579
+ ModalDialog,
580
+ {
581
+ open,
582
+ onOpenChange,
583
+ title,
584
+ description,
585
+ showCloseButton: false,
586
+ footer: /* @__PURE__ */ jsxs5(Fragment5, { children: [
587
+ /* @__PURE__ */ jsx14(Button2, { variant: "outline", isDisabled: pending, onPress: () => onOpenChange(false), children: cancelLabel }),
588
+ /* @__PURE__ */ jsx14(Button2, { variant: destructive ? "destructive" : "default", isDisabled: pending, onPress: onConfirm, children: confirmLabel })
589
+ ] })
590
+ }
591
+ );
471
592
  }
472
593
 
473
594
  // src/ui/drawer/drawer.tsx
@@ -586,14 +707,14 @@ function FormFeedback({ state, className, pendingLabel = "Guardando\u2026", succ
586
707
  }
587
708
 
588
709
  // src/ui/form-row/form-row.tsx
589
- import { Fragment as Fragment4, jsx as jsx21, jsxs as jsxs7 } from "react/jsx-runtime";
710
+ import { Fragment as Fragment6, jsx as jsx21, jsxs as jsxs7 } from "react/jsx-runtime";
590
711
  function FormRow({ label, htmlFor, required, hint, error, className, children }) {
591
712
  const hintId = hint ? `${htmlFor}-hint` : void 0;
592
713
  const errorId = error ? `${htmlFor}-error` : void 0;
593
714
  return /* @__PURE__ */ jsxs7("div", { "data-slot": "form-row", className: cn("flex flex-col gap-1.5", className), children: [
594
715
  /* @__PURE__ */ jsxs7("label", { htmlFor, className: "text-sm font-medium text-foreground", children: [
595
716
  label,
596
- required && /* @__PURE__ */ jsxs7(Fragment4, { children: [
717
+ required && /* @__PURE__ */ jsxs7(Fragment6, { children: [
597
718
  /* @__PURE__ */ jsx21("span", { "aria-hidden": "true", className: "ml-0.5 text-destructive", children: "*" }),
598
719
  /* @__PURE__ */ jsx21("span", { className: "sr-only", children: " (obligatorio)" })
599
720
  ] })
@@ -659,6 +780,9 @@ function IconButton({
659
780
  ] });
660
781
  }
661
782
 
783
+ // src/ui/input-group/input-group.tsx
784
+ import { cva as cva3 } from "class-variance-authority";
785
+
662
786
  // src/ui/input/input.tsx
663
787
  import { forwardRef as forwardRef2 } from "react";
664
788
  import { Input as AriaInput2 } from "react-aria-components";
@@ -668,9 +792,6 @@ var InputImpl = forwardRef2(function Input2({ className, type, ...props }, ref)
668
792
  });
669
793
  var Input3 = InputImpl;
670
794
 
671
- // src/ui/input-group/input-group.tsx
672
- import { cva as cva3 } from "class-variance-authority";
673
-
674
795
  // src/ui/textarea/textarea.tsx
675
796
  import { forwardRef as forwardRef3 } from "react";
676
797
  import { TextArea as AriaTextArea } from "react-aria-components";
@@ -858,10 +979,10 @@ import {
858
979
  Popover as Popover5
859
980
  } from "react-aria-components";
860
981
  import { ChevronDown as ChevronDown2 } from "lucide-react";
861
- import { Fragment as Fragment5, jsx as jsx35, jsxs as jsxs12 } from "react/jsx-runtime";
982
+ import { Fragment as Fragment7, jsx as jsx35, jsxs as jsxs12 } from "react/jsx-runtime";
862
983
  var Select = AriaSelect;
863
984
  function SelectTrigger({ className, children, ...props }) {
864
- return /* @__PURE__ */ jsx35(AriaButton3, { "data-slot": "select-trigger", className: cn("group/select-trigger flex h-8 w-full min-w-36 items-center gap-2 rounded-lg border border-border bg-background px-2.5 text-left text-sm text-foreground outline-none data-focus-visible:ring-3 data-focus-visible:ring-ring/50 data-disabled:cursor-not-allowed data-disabled:opacity-50", className), ...props, children: (state) => /* @__PURE__ */ jsxs12(Fragment5, { children: [
985
+ return /* @__PURE__ */ jsx35(AriaButton3, { "data-slot": "select-trigger", className: cn("group/select-trigger flex h-8 w-full min-w-36 items-center gap-2 rounded-lg border border-border bg-background px-2.5 text-left text-sm text-foreground outline-none data-focus-visible:ring-3 data-focus-visible:ring-ring/50 data-disabled:cursor-not-allowed data-disabled:opacity-50", className), ...props, children: (state) => /* @__PURE__ */ jsxs12(Fragment7, { children: [
865
986
  typeof children === "function" ? children(state) : children,
866
987
  /* @__PURE__ */ jsx35(ChevronDown2, { "aria-hidden": "true", className: "ml-auto size-4 text-muted-foreground transition-transform group-data-pressed/select-trigger:rotate-180 motion-reduce:transition-none" })
867
988
  ] }) });
@@ -894,16 +1015,16 @@ import {
894
1015
  Search
895
1016
  } from "lucide-react";
896
1017
  import {
897
- createContext as createContext2,
898
- useContext as useContext2,
1018
+ createContext,
1019
+ useContext,
899
1020
  useMemo as useMemo2,
900
1021
  useState as useState7
901
1022
  } from "react";
902
1023
  import { Link as Link2 } from "react-aria-components";
903
- import { Fragment as Fragment6, jsx as jsx37, jsxs as jsxs13 } from "react/jsx-runtime";
904
- var SidebarContext = createContext2(null);
1024
+ import { Fragment as Fragment8, jsx as jsx37, jsxs as jsxs13 } from "react/jsx-runtime";
1025
+ var SidebarContext = createContext(null);
905
1026
  function useSidebar() {
906
- const context = useContext2(SidebarContext);
1027
+ const context = useContext(SidebarContext);
907
1028
  if (!context)
908
1029
  throw new Error("useSidebar must be used inside SidebarProvider");
909
1030
  return context;
@@ -1060,7 +1181,7 @@ function SidebarItem({
1060
1181
  typeof className === "function" ? className : className
1061
1182
  ),
1062
1183
  ...props,
1063
- children: (values) => /* @__PURE__ */ jsxs13(Fragment6, { children: [
1184
+ children: (values) => /* @__PURE__ */ jsxs13(Fragment8, { children: [
1064
1185
  /* @__PURE__ */ jsx37("span", { className: "flex size-4 shrink-0 items-center justify-center", children: icon }),
1065
1186
  /* @__PURE__ */ jsx37(
1066
1187
  "span",
@@ -1144,11 +1265,11 @@ function Skeleton({ className, ...props }) {
1144
1265
  // src/ui/submit-button/submit-button.tsx
1145
1266
  import { useFormStatus } from "react-dom";
1146
1267
  import { LoaderCircle as LoaderCircle3 } from "lucide-react";
1147
- import { Fragment as Fragment7, jsx as jsx39, jsxs as jsxs14 } from "react/jsx-runtime";
1268
+ import { Fragment as Fragment9, jsx as jsx39, jsxs as jsxs14 } from "react/jsx-runtime";
1148
1269
  function SubmitButton({ pendingLabel = "Guardando\u2026", loading = false, children, isDisabled, size = "sm", ...props }) {
1149
1270
  const { pending } = useFormStatus();
1150
1271
  const busy = pending || loading;
1151
- return /* @__PURE__ */ jsx39(Button2, { type: "submit", size, isDisabled: busy || isDisabled, "aria-busy": busy || void 0, ...props, children: busy ? /* @__PURE__ */ jsxs14(Fragment7, { children: [
1272
+ return /* @__PURE__ */ jsx39(Button2, { type: "submit", size, isDisabled: busy || isDisabled, "aria-busy": busy || void 0, ...props, children: busy ? /* @__PURE__ */ jsxs14(Fragment9, { children: [
1152
1273
  /* @__PURE__ */ jsx39(LoaderCircle3, { "aria-hidden": "true", className: "size-3.5 animate-spin" }),
1153
1274
  pendingLabel
1154
1275
  ] }) : children });
@@ -1159,7 +1280,7 @@ import {
1159
1280
  SwitchButton as AriaSwitchButton,
1160
1281
  SwitchField as AriaSwitchField
1161
1282
  } from "react-aria-components";
1162
- import { Fragment as Fragment8, jsx as jsx40, jsxs as jsxs15 } from "react/jsx-runtime";
1283
+ import { Fragment as Fragment10, jsx as jsx40, jsxs as jsxs15 } from "react/jsx-runtime";
1163
1284
  var sizeStyles = {
1164
1285
  sm: { track: "h-5 w-9 p-0.5", thumb: "size-4", travel: "group-data-selected/switch:translate-x-4" },
1165
1286
  md: { track: "h-6 w-11 p-0.5", thumb: "size-5", travel: "group-data-selected/switch:translate-x-5" }
@@ -1176,7 +1297,7 @@ function Switch({ className, children, size = "sm", ...props }) {
1176
1297
  "data-disabled:cursor-not-allowed data-disabled:opacity-50",
1177
1298
  typeof className === "function" ? className(state) : className
1178
1299
  ),
1179
- children: (state) => /* @__PURE__ */ jsxs15(Fragment8, { children: [
1300
+ children: (state) => /* @__PURE__ */ jsxs15(Fragment10, { children: [
1180
1301
  /* @__PURE__ */ jsx40(
1181
1302
  "span",
1182
1303
  {
@@ -1266,7 +1387,7 @@ function TabsContent({ className, ...props }) {
1266
1387
  // src/ui/toast/toast.tsx
1267
1388
  import { useEffect as useEffect4, useSyncExternalStore } from "react";
1268
1389
  import { CheckCircle as CheckCircle2, Info, CircleAlert as CircleAlert2, XCircle, X as X3 } from "lucide-react";
1269
- import { Fragment as Fragment9, jsx as jsx43, jsxs as jsxs16 } from "react/jsx-runtime";
1390
+ import { Fragment as Fragment11, jsx as jsx43, jsxs as jsxs16 } from "react/jsx-runtime";
1270
1391
  var records = [];
1271
1392
  var listeners = /* @__PURE__ */ new Set();
1272
1393
  var snapshot = () => records;
@@ -1311,7 +1432,7 @@ function useToast() {
1311
1432
  return toast;
1312
1433
  }
1313
1434
  function ToastProvider({ children }) {
1314
- return /* @__PURE__ */ jsxs16(Fragment9, { children: [
1435
+ return /* @__PURE__ */ jsxs16(Fragment11, { children: [
1315
1436
  children,
1316
1437
  /* @__PURE__ */ jsx43(Toaster, {})
1317
1438
  ] });
@@ -1325,7 +1446,7 @@ var positionClasses = {
1325
1446
  "bottom-right": "bottom-4 right-4 items-end"
1326
1447
  };
1327
1448
  function Toaster({ position = "bottom-right" }) {
1328
- return /* @__PURE__ */ jsx43(Fragment9, { children: Object.keys(positionClasses).map((item) => /* @__PURE__ */ jsx43(ToastViewport, { position: item, visiblePosition: position }, item)) });
1449
+ return /* @__PURE__ */ jsx43(Fragment11, { children: Object.keys(positionClasses).map((item) => /* @__PURE__ */ jsx43(ToastViewport, { position: item, visiblePosition: position }, item)) });
1329
1450
  }
1330
1451
  function ToastViewport({ position, visiblePosition, className }) {
1331
1452
  const toasts = useSyncExternalStore(subscribe, snapshot, snapshot).filter((item) => item.position === position);
@@ -1374,6 +1495,8 @@ export {
1374
1495
  AppShellContent,
1375
1496
  AppShellHeader,
1376
1497
  AppShellMain,
1498
+ AppShellMobileHeader,
1499
+ AppShellSidebar,
1377
1500
  AutocompleteCombobox,
1378
1501
  Avatar,
1379
1502
  AvatarBadge,
@@ -1409,13 +1532,6 @@ export {
1409
1532
  CommandItem,
1410
1533
  CommandList,
1411
1534
  ConfirmDialog,
1412
- Dialog,
1413
- DialogClose,
1414
- DialogContent,
1415
- DialogDescription,
1416
- DialogFooter,
1417
- DialogHeader,
1418
- DialogTitle,
1419
1535
  Drawer,
1420
1536
  DrawerDescription,
1421
1537
  DrawerFooter,
@@ -1452,6 +1568,7 @@ export {
1452
1568
  MenuContent,
1453
1569
  MenuItem,
1454
1570
  MenuTrigger,
1571
+ ModalDialog,
1455
1572
  PageHeader,
1456
1573
  PageHeaderActions,
1457
1574
  PageHeaderDescription,