@dimaan/ui 0.0.14 → 0.0.17

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.d.ts CHANGED
@@ -1,13 +1,164 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as react from 'react';
3
- import { HTMLAttributes, ReactNode, ButtonHTMLAttributes, ReactElement, InputHTMLAttributes, ChangeEvent, ComponentPropsWithoutRef, FormEventHandler, FieldsetHTMLAttributes, Ref, TextareaHTMLAttributes } from 'react';
3
+ import { ComponentPropsWithoutRef, HTMLAttributes, ReactNode, ButtonHTMLAttributes, ReactElement, InputHTMLAttributes, ChangeEvent, FormEventHandler, FieldsetHTMLAttributes, Ref, TextareaHTMLAttributes } from 'react';
4
+ import * as RadixAlertDialog from '@radix-ui/react-alert-dialog';
4
5
  import { LinkProps } from 'react-router-dom';
5
6
  import { Locale } from 'react-day-picker';
7
+ import * as RadixDialog from '@radix-ui/react-dialog';
6
8
  import * as RadixDropdown from '@radix-ui/react-dropdown-menu';
7
9
  import { FieldValues, FieldPath, Control } from 'react-hook-form';
8
10
  import * as RadixRadioGroup from '@radix-ui/react-radio-group';
11
+ import { ToasterProps as ToasterProps$1 } from 'sonner';
12
+ export { ExternalToast as ToastOptions, ToastT, toast } from 'sonner';
13
+ import * as RadixTooltip from '@radix-ui/react-tooltip';
9
14
  import { ClassValue } from 'clsx';
10
15
 
16
+ /**
17
+ * Destructive-confirm dialog built on `@radix-ui/react-alert-dialog`. Same
18
+ * visual surface as `Dialog`, but with stricter dismissal UX:
19
+ *
20
+ * - **Click-outside does NOT close** — users must press Cancel or Action.
21
+ * This is the canonical "are you sure?" pattern.
22
+ * - **No default × close button** — both exits are explicit through the
23
+ * footer buttons.
24
+ * - **Description is required** for accessibility — Radix throws a console
25
+ * warning if `AlertDialogDescription` is missing.
26
+ *
27
+ * Use for destructive confirmations (delete, archive, revoke). For neutral
28
+ * forms / modals use `Dialog` instead.
29
+ *
30
+ * @example Delete confirmation
31
+ * ```tsx
32
+ * <AlertDialog>
33
+ * <AlertDialogTrigger asChild>
34
+ * <Button variant="destructive">
35
+ * <Trash2 />
36
+ * Delete user
37
+ * </Button>
38
+ * </AlertDialogTrigger>
39
+ * <AlertDialogContent>
40
+ * <AlertDialogHeader>
41
+ * <AlertDialogTitle>Delete this user?</AlertDialogTitle>
42
+ * <AlertDialogDescription>
43
+ * This will permanently remove the account. This action cannot be undone.
44
+ * </AlertDialogDescription>
45
+ * </AlertDialogHeader>
46
+ * <AlertDialogFooter>
47
+ * <AlertDialogCancel asChild>
48
+ * <Button variant="outline">Cancel</Button>
49
+ * </AlertDialogCancel>
50
+ * <AlertDialogAction asChild>
51
+ * <Button variant="destructive" onClick={handleDelete}>Delete</Button>
52
+ * </AlertDialogAction>
53
+ * </AlertDialogFooter>
54
+ * </AlertDialogContent>
55
+ * </AlertDialog>
56
+ * ```
57
+ */
58
+ declare const AlertDialog: react.FC<RadixAlertDialog.AlertDialogProps>;
59
+ declare const AlertDialogTrigger: react.ForwardRefExoticComponent<RadixAlertDialog.AlertDialogTriggerProps & react.RefAttributes<HTMLButtonElement>>;
60
+ declare const AlertDialogPortal: react.FC<RadixAlertDialog.AlertDialogPortalProps>;
61
+ /**
62
+ * Confirm button. Wraps any element via `asChild` — pair with our `<Button>` for
63
+ * full styling. Closes the dialog when clicked.
64
+ */
65
+ declare const AlertDialogAction: react.ForwardRefExoticComponent<RadixAlertDialog.AlertDialogActionProps & react.RefAttributes<HTMLButtonElement>>;
66
+ /**
67
+ * Cancel button. Wraps any element via `asChild` — pair with our `<Button>` for
68
+ * full styling. Closes the dialog when clicked. Also the default focus target
69
+ * when the dialog opens.
70
+ */
71
+ declare const AlertDialogCancel: react.ForwardRefExoticComponent<RadixAlertDialog.AlertDialogCancelProps & react.RefAttributes<HTMLButtonElement>>;
72
+ interface AlertDialogOverlayProps extends ComponentPropsWithoutRef<typeof RadixAlertDialog.Overlay> {
73
+ }
74
+ declare const AlertDialogOverlay: react.ForwardRefExoticComponent<AlertDialogOverlayProps & react.RefAttributes<HTMLDivElement>>;
75
+ interface AlertDialogContentProps extends ComponentPropsWithoutRef<typeof RadixAlertDialog.Content> {
76
+ }
77
+ declare const AlertDialogContent: react.ForwardRefExoticComponent<AlertDialogContentProps & react.RefAttributes<HTMLDivElement>>;
78
+ interface AlertDialogHeaderProps extends HTMLAttributes<HTMLDivElement> {
79
+ children: ReactNode;
80
+ }
81
+ declare function AlertDialogHeader({ className, ...props }: AlertDialogHeaderProps): react_jsx_runtime.JSX.Element;
82
+ interface AlertDialogFooterProps extends HTMLAttributes<HTMLDivElement> {
83
+ children: ReactNode;
84
+ }
85
+ declare function AlertDialogFooter({ className, ...props }: AlertDialogFooterProps): react_jsx_runtime.JSX.Element;
86
+ interface AlertDialogTitleProps extends ComponentPropsWithoutRef<typeof RadixAlertDialog.Title> {
87
+ }
88
+ declare const AlertDialogTitle: react.ForwardRefExoticComponent<AlertDialogTitleProps & react.RefAttributes<HTMLHeadingElement>>;
89
+ type AlertDialogDescriptionProps = ComponentPropsWithoutRef<typeof RadixAlertDialog.Description>;
90
+ declare const AlertDialogDescription: react.ForwardRefExoticComponent<Omit<RadixAlertDialog.AlertDialogDescriptionProps & react.RefAttributes<HTMLParagraphElement>, "ref"> & react.RefAttributes<HTMLParagraphElement>>;
91
+
92
+ interface ConfirmOptions {
93
+ /** Question / strong statement at the top of the dialog. */
94
+ title: ReactNode;
95
+ /** Optional secondary line — explain consequences. Strongly recommended. */
96
+ description?: ReactNode;
97
+ /** Confirm button label. Falls back to provider's `labels.confirm` then `'Confirm'`. */
98
+ confirmLabel?: ReactNode;
99
+ /** Cancel button label. Falls back to provider's `labels.cancel` then `'Cancel'`. */
100
+ cancelLabel?: ReactNode;
101
+ /** Render the confirm button with the destructive variant. Use for delete/revoke. */
102
+ destructive?: boolean;
103
+ }
104
+ interface ConfirmDialogLabels {
105
+ confirm?: ReactNode;
106
+ cancel?: ReactNode;
107
+ }
108
+ interface ConfirmDialogProviderProps {
109
+ /**
110
+ * Global default labels — typically wired to the consumer's i18n strings so
111
+ * every `confirm(...)` call doesn't have to pass `cancelLabel` / `confirmLabel`.
112
+ */
113
+ labels?: ConfirmDialogLabels;
114
+ children: ReactNode;
115
+ }
116
+ type ConfirmFn = (options: ConfirmOptions) => Promise<boolean>;
117
+ /**
118
+ * App-level provider for the imperative confirm dialog. Mount **once** at the
119
+ * app root (next to `<Toaster />`); every descendant can then call
120
+ * `useConfirm()` and trigger a destructive-confirm dialog in a single line.
121
+ *
122
+ * @example Mount at the app root
123
+ * ```tsx
124
+ * <AppShell brand={…} nav={…}>
125
+ * <ConfirmDialogProvider labels={{ confirm: t.confirm, cancel: t.cancel }}>
126
+ * <Routes>…</Routes>
127
+ * </ConfirmDialogProvider>
128
+ * <Toaster />
129
+ * </AppShell>
130
+ * ```
131
+ *
132
+ * @example One-line confirm from anywhere
133
+ * ```tsx
134
+ * function UserRow({ user }: { user: User }) {
135
+ * const confirm = useConfirm();
136
+ *
137
+ * async function handleDelete() {
138
+ * const ok = await confirm({
139
+ * title: 'Delete this user?',
140
+ * description: 'This action cannot be undone.',
141
+ * confirmLabel: 'Delete',
142
+ * destructive: true,
143
+ * });
144
+ * if (!ok) return;
145
+ * deleteUser(user.id);
146
+ * toast.success('User deleted');
147
+ * }
148
+ *
149
+ * return <Button variant="destructive" onClick={handleDelete}>Delete</Button>;
150
+ * }
151
+ * ```
152
+ */
153
+ declare function ConfirmDialogProvider({ labels, children }: ConfirmDialogProviderProps): react_jsx_runtime.JSX.Element;
154
+ /**
155
+ * Hook returning a `confirm(options)` function. Resolves `true` when the user
156
+ * presses the confirm button, `false` for cancel / Escape / overlay dismiss.
157
+ *
158
+ * Must be called from inside a `<ConfirmDialogProvider>`.
159
+ */
160
+ declare function useConfirm(): ConfirmFn;
161
+
11
162
  interface DashboardLayoutContextValue {
12
163
  collapsed: boolean;
13
164
  setCollapsed: (next: boolean) => void;
@@ -443,6 +594,307 @@ interface DatePickerProps {
443
594
  */
444
595
  declare const DatePicker: react.ForwardRefExoticComponent<DatePickerProps & react.RefAttributes<HTMLButtonElement>>;
445
596
 
597
+ type PageHeaderHeadingLevel = 'h1' | 'h2' | 'h3' | 'h4';
598
+ /** Props passed to the routing-library `render` slot of the back button. */
599
+ interface PageHeaderBackRenderProps {
600
+ to?: LinkProps['to'];
601
+ className?: string;
602
+ children: ReactNode;
603
+ onClick?: () => void;
604
+ }
605
+ interface PageHeaderBackProps {
606
+ /** Visible label next to the arrow. Defaults to `"Back"`. */
607
+ label?: ReactNode;
608
+ /** Target to — renders a React Router `<Link>`. */
609
+ to?: LinkProps['to'];
610
+ /** Click handler — renders a `<button>` (or wraps the `render` element). */
611
+ onClick?: () => void;
612
+ /** Routing-library render prop (e.g. wrap a different link component). Wins over `to`. */
613
+ render?: (props: PageHeaderBackRenderProps) => ReactElement;
614
+ }
615
+ interface PageHeaderProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {
616
+ /** Page title (required). */
617
+ title: ReactNode;
618
+ /** Optional secondary text under the title. */
619
+ description?: ReactNode;
620
+ /** Slot above the title for breadcrumbs (e.g. `<Breadcrumbs items={…} />` or your own JSX). */
621
+ breadcrumbs?: ReactNode;
622
+ /** Optional back button rendered above the title row. */
623
+ back?: PageHeaderBackProps;
624
+ /** Slot on the trailing side of the title row — buttons, dropdowns, etc. */
625
+ actions?: ReactNode;
626
+ /** Heading level for the title element. Defaults to `'h1'`. */
627
+ as?: PageHeaderHeadingLevel;
628
+ /** Add a bottom border separator. Default: `false`. */
629
+ bordered?: boolean;
630
+ }
631
+ /**
632
+ * Top-of-page header — title, optional description, breadcrumbs, back button,
633
+ * and actions slot. The first thing a user sees on any list / detail / form
634
+ * page in a dashboard.
635
+ *
636
+ * Designed to drop directly into `<DashboardContent>` (or any padded page
637
+ * container). Has no outer padding of its own — the surrounding layout owns
638
+ * spacing.
639
+ *
640
+ * @example List page header with primary action
641
+ * ```tsx
642
+ * <PageHeader
643
+ * title="Users"
644
+ * description="Manage your team members and their roles."
645
+ * actions={<Button onClick={openCreate}>Add user</Button>}
646
+ * bordered
647
+ * />
648
+ * ```
649
+ *
650
+ * @example Detail page header with back button
651
+ * ```tsx
652
+ * <PageHeader
653
+ * title={user.name}
654
+ * description={user.email}
655
+ * back={{
656
+ * label: 'Users',
657
+ * to: '/users',
658
+ * }}
659
+ * actions={
660
+ * <>
661
+ * <Button variant="outline">Edit</Button>
662
+ * <Button variant="destructive">Delete</Button>
663
+ * </>
664
+ * }
665
+ * />
666
+ * ```
667
+ *
668
+ * @example With breadcrumbs slot
669
+ * ```tsx
670
+ * <PageHeader
671
+ * breadcrumbs={
672
+ * <nav aria-label="Breadcrumb">
673
+ * <ol className="flex items-center gap-1">
674
+ * <li><Link to="/">Home</Link></li>
675
+ * <li>/</li>
676
+ * <li>Users</li>
677
+ * </ol>
678
+ * </nav>
679
+ * }
680
+ * title="Users"
681
+ * />
682
+ * ```
683
+ */
684
+ declare const PageHeader: react.ForwardRefExoticComponent<PageHeaderProps & react.RefAttributes<HTMLElement>>;
685
+
686
+ declare const pageHeaderBaseClass = "flex w-full flex-col gap-3";
687
+ /** Adds a bottom border separator below the header. */
688
+ declare const pageHeaderBorderedClass = "border-b border-border pb-4";
689
+ declare const pageHeaderTitleRowClass = "flex flex-wrap items-start justify-between gap-3 sm:gap-4";
690
+ declare const pageHeaderTitleBlockClass = "min-w-0 flex-1 space-y-1";
691
+ declare const pageHeaderTitleClass = "text-2xl font-semibold tracking-tight text-foreground";
692
+ declare const pageHeaderDescriptionClass = "text-sm text-muted-foreground";
693
+ declare const pageHeaderActionsClass = "flex shrink-0 flex-wrap items-center gap-2";
694
+ declare const pageHeaderBackClass = "inline-flex items-center gap-1.5 self-start text-sm text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40 focus-visible:ring-offset-2 focus-visible:ring-offset-background rounded-md";
695
+ declare const pageHeaderBackIconClass = "size-4 shrink-0 rtl:rotate-180";
696
+ declare const pageHeaderBreadcrumbsClass = "text-xs text-muted-foreground";
697
+
698
+ interface DetailPageNotFoundState {
699
+ icon?: ReactNode;
700
+ title?: ReactNode;
701
+ description?: ReactNode;
702
+ /** Override the action slot. Pass `null` to hide it (no default action). */
703
+ action?: ReactNode | null;
704
+ }
705
+ interface DetailPageLabels {
706
+ notFoundTitle?: string;
707
+ notFoundDescription?: string;
708
+ }
709
+ interface DetailPageProps {
710
+ /** Page title (required). Typically the resource name (e.g. "User · Layla Hassan"). */
711
+ title: ReactNode;
712
+ /** Optional secondary text under the title (e.g. status pill, joined date). */
713
+ description?: ReactNode;
714
+ /** Optional back-button config — forwarded straight to `PageHeader.back`. */
715
+ back?: PageHeaderBackProps;
716
+ /** Header action slot — Edit / Archive / Delete buttons. */
717
+ actions?: ReactNode;
718
+ /** Page-header bottom border separator. Defaults to `true` for detail pages. */
719
+ bordered?: boolean;
720
+ /**
721
+ * Show skeleton placeholders in the body while the record is being fetched.
722
+ * Wins over `notFound` so users don't see a flicker of "not found" before
723
+ * the data resolves.
724
+ */
725
+ isLoading?: boolean;
726
+ /** Number of skeleton rows shown while loading. Defaults to `6`. */
727
+ loadingRowCount?: number;
728
+ /**
729
+ * Render the "not found" empty state instead of `children`. Use when the
730
+ * query resolved successfully but the requested record does not exist
731
+ * (404-style). Ignored while `isLoading` is true.
732
+ */
733
+ notFound?: boolean;
734
+ /** Customize the not-found surface. Defaults to a `FileQuestion` icon + label-driven copy. */
735
+ notFoundState?: DetailPageNotFoundState;
736
+ /** Localized copy for the default not-found prompt. */
737
+ labels?: DetailPageLabels;
738
+ /** Body content — typically a stack of `<section>` cards / DescriptionList rows. */
739
+ children: ReactNode;
740
+ /** Class applied to the outer wrapper. */
741
+ className?: string;
742
+ /** Class applied to the body container. */
743
+ bodyClassName?: string;
744
+ }
745
+ /**
746
+ * Declarative detail-page template — composes `PageHeader` + a body that
747
+ * renders one of three branches:
748
+ *
749
+ * 1. **`isLoading`** → skeleton rows (wins over everything else).
750
+ * 2. **`notFound`** → `<EmptyState>` with a `FileQuestion` icon.
751
+ * 3. otherwise → `children` (consumer composes their own sections / cards).
752
+ *
753
+ * Pairs with `<ListPage>` (read flow) and `<FormPage>` (write flow) as the
754
+ * third Phase-4 template. RHF-agnostic — no form integration.
755
+ *
756
+ * @example View user
757
+ * ```tsx
758
+ * const { data: user, isLoading } = useUser(id);
759
+ *
760
+ * return (
761
+ * <DetailPage
762
+ * title={user ? `${user.name}` : 'Loading…'}
763
+ * description={user?.role}
764
+ * back={{ to: '/users' }}
765
+ * actions={
766
+ * <>
767
+ * <Button variant="outline" onClick={onArchive}>Archive</Button>
768
+ * <Button onClick={onEdit}>Edit</Button>
769
+ * </>
770
+ * }
771
+ * isLoading={isLoading}
772
+ * notFound={!isLoading && !user}
773
+ * >
774
+ * {user && (
775
+ * <section className="grid gap-4 md:grid-cols-2">…</section>
776
+ * )}
777
+ * </DetailPage>
778
+ * );
779
+ * ```
780
+ *
781
+ * @example Custom not-found
782
+ * ```tsx
783
+ * <DetailPage
784
+ * title="Order"
785
+ * notFound={!order}
786
+ * notFoundState={{
787
+ * title: 'Order does not exist',
788
+ * description: 'It may have been cancelled.',
789
+ * action: <Button onClick={() => navigate('/orders')}>Back to orders</Button>,
790
+ * }}
791
+ * >
792
+ * …
793
+ * </DetailPage>
794
+ * ```
795
+ */
796
+ declare function DetailPage({ title, description, back, actions, bordered, isLoading, loadingRowCount, notFound, notFoundState, labels: labelsProp, children, className, bodyClassName, }: DetailPageProps): react_jsx_runtime.JSX.Element;
797
+
798
+ /** Outermost wrapper of `DetailPage` — vertical flex column with consistent spacing. */
799
+ declare const detailPageBaseClass = "flex w-full flex-col gap-6";
800
+ /** Body region that wraps either children, the skeleton, or the not-found state. */
801
+ declare const detailPageBodyClass = "flex flex-col gap-6";
802
+ /**
803
+ * Single skeleton row rendered while `isLoading` is true. Tuned to a
804
+ * description-list cell — short width range, comfortable height.
805
+ */
806
+ declare const detailPageSkeletonRowClass = "h-5 w-full animate-pulse rounded-md bg-muted";
807
+ /** Container around the not-found `<EmptyState>` — matches the ListPage empty surface. */
808
+ declare const detailPageEmptyClass = "rounded-md border border-border bg-card";
809
+
810
+ /**
811
+ * Modal dialog built on `@radix-ui/react-dialog`. Compound API — same shape as
812
+ * `DropdownMenu`. Use for edit/create in-modal flows, confirmations, and any
813
+ * blocking interaction. For destructive confirms specifically, the
814
+ * `AlertDialog` (Phase 2) layer will sit on top of this primitive later.
815
+ *
816
+ * @example Edit-in-modal
817
+ * ```tsx
818
+ * <Dialog>
819
+ * <DialogTrigger asChild>
820
+ * <Button variant="outline">Edit user</Button>
821
+ * </DialogTrigger>
822
+ * <DialogContent>
823
+ * <DialogHeader>
824
+ * <DialogTitle>Edit user</DialogTitle>
825
+ * <DialogDescription>Update the user's profile.</DialogDescription>
826
+ * </DialogHeader>
827
+ * <form onSubmit={handleSubmit}>
828
+ * <Field name="name" label="Name"><Input /></Field>
829
+ * </form>
830
+ * <DialogFooter>
831
+ * <DialogClose asChild>
832
+ * <Button variant="outline">Cancel</Button>
833
+ * </DialogClose>
834
+ * <Button type="submit">Save</Button>
835
+ * </DialogFooter>
836
+ * </DialogContent>
837
+ * </Dialog>
838
+ * ```
839
+ *
840
+ * @example Controlled state
841
+ * ```tsx
842
+ * const [open, setOpen] = useState(false);
843
+ *
844
+ * <Dialog open={open} onOpenChange={setOpen}>
845
+ * <DialogContent>…</DialogContent>
846
+ * </Dialog>
847
+ * ```
848
+ */
849
+ declare const Dialog: react.FC<RadixDialog.DialogProps>;
850
+ declare const DialogTrigger: react.ForwardRefExoticComponent<RadixDialog.DialogTriggerProps & react.RefAttributes<HTMLButtonElement>>;
851
+ declare const DialogPortal: react.FC<RadixDialog.DialogPortalProps>;
852
+ /** Use inside `DialogFooter` to wire a custom Cancel/Close button. */
853
+ declare const DialogClose: react.ForwardRefExoticComponent<RadixDialog.DialogCloseProps & react.RefAttributes<HTMLButtonElement>>;
854
+ interface DialogOverlayProps extends ComponentPropsWithoutRef<typeof RadixDialog.Overlay> {
855
+ }
856
+ declare const DialogOverlay: react.ForwardRefExoticComponent<DialogOverlayProps & react.RefAttributes<HTMLDivElement>>;
857
+ interface DialogContentProps extends ComponentPropsWithoutRef<typeof RadixDialog.Content> {
858
+ /** Render the default × close button at the top-end of the panel. Default `true`. */
859
+ showCloseButton?: boolean;
860
+ /** Accessible label for the default close button. Default `'Close'`. */
861
+ closeLabel?: string;
862
+ }
863
+ declare const DialogContent: react.ForwardRefExoticComponent<DialogContentProps & react.RefAttributes<HTMLDivElement>>;
864
+ interface DialogHeaderProps extends HTMLAttributes<HTMLDivElement> {
865
+ children: ReactNode;
866
+ }
867
+ declare function DialogHeader({ className, ...props }: DialogHeaderProps): react_jsx_runtime.JSX.Element;
868
+ interface DialogFooterProps extends HTMLAttributes<HTMLDivElement> {
869
+ children: ReactNode;
870
+ }
871
+ declare function DialogFooter({ className, ...props }: DialogFooterProps): react_jsx_runtime.JSX.Element;
872
+ interface DialogTitleProps extends ComponentPropsWithoutRef<typeof RadixDialog.Title> {
873
+ }
874
+ declare const DialogTitle: react.ForwardRefExoticComponent<DialogTitleProps & react.RefAttributes<HTMLHeadingElement>>;
875
+ interface DialogDescriptionProps extends ComponentPropsWithoutRef<typeof RadixDialog.Description> {
876
+ }
877
+ declare const DialogDescription: react.ForwardRefExoticComponent<DialogDescriptionProps & react.RefAttributes<HTMLParagraphElement>>;
878
+
879
+ /** Backdrop overlay rendered behind the dialog content. Fades in/out. */
880
+ declare const dialogOverlayClass = "fixed inset-0 z-50 bg-foreground/40 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0";
881
+ /**
882
+ * Centered content panel. Caps width at `lg` by default — consumers wanting a
883
+ * wider/narrower dialog override via `className`. Zoom + fade animation matches
884
+ * the rest of the kit's overlays (Select, DropdownMenu).
885
+ */
886
+ declare const dialogContentClass = "fixed start-1/2 top-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 rounded-lg border border-border bg-background p-6 text-foreground shadow-lg outline-none rtl:translate-x-1/2 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95";
887
+ /** Title + description grouping above the body. */
888
+ declare const dialogHeaderClass = "flex flex-col gap-1.5 text-start";
889
+ /** Dialog title — rendered as the heading and used for aria-labelledby. */
890
+ declare const dialogTitleClass = "text-lg font-semibold text-foreground";
891
+ /** Secondary text linked to the dialog via aria-describedby. */
892
+ declare const dialogDescriptionClass = "text-sm text-muted-foreground";
893
+ /** Action row at the bottom. Reverses on small screens so primary stays on top. */
894
+ declare const dialogFooterClass = "flex flex-col-reverse gap-2 sm:flex-row sm:items-center sm:justify-end";
895
+ /** Small × button rendered at the top-end of the content panel. */
896
+ declare const dialogCloseButtonClass = "absolute end-4 top-4 inline-flex size-7 items-center justify-center rounded-sm text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40 disabled:pointer-events-none";
897
+
446
898
  type DropdownMenuItemVariant = 'default' | 'destructive';
447
899
  declare const dropdownMenuContentClass = "z-50 min-w-32 overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95";
448
900
  declare const dropdownMenuItemBaseClass = "relative flex w-full cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0";
@@ -675,107 +1127,6 @@ type FieldProps<TValues extends FieldValues = FieldValues, TName extends FieldPa
675
1127
  */
676
1128
  declare function Field<TValues extends FieldValues = FieldValues, TName extends FieldPath<TValues> = FieldPath<TValues>>(props: FieldProps<TValues, TName>): ReactElement;
677
1129
 
678
- type PageHeaderHeadingLevel = 'h1' | 'h2' | 'h3' | 'h4';
679
- /** Props passed to the routing-library `render` slot of the back button. */
680
- interface PageHeaderBackRenderProps {
681
- to?: LinkProps['to'];
682
- className?: string;
683
- children: ReactNode;
684
- onClick?: () => void;
685
- }
686
- interface PageHeaderBackProps {
687
- /** Visible label next to the arrow. Defaults to `"Back"`. */
688
- label?: ReactNode;
689
- /** Target to — renders a React Router `<Link>`. */
690
- to?: LinkProps['to'];
691
- /** Click handler — renders a `<button>` (or wraps the `render` element). */
692
- onClick?: () => void;
693
- /** Routing-library render prop (e.g. wrap a different link component). Wins over `to`. */
694
- render?: (props: PageHeaderBackRenderProps) => ReactElement;
695
- }
696
- interface PageHeaderProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {
697
- /** Page title (required). */
698
- title: ReactNode;
699
- /** Optional secondary text under the title. */
700
- description?: ReactNode;
701
- /** Slot above the title for breadcrumbs (e.g. `<Breadcrumbs items={…} />` or your own JSX). */
702
- breadcrumbs?: ReactNode;
703
- /** Optional back button rendered above the title row. */
704
- back?: PageHeaderBackProps;
705
- /** Slot on the trailing side of the title row — buttons, dropdowns, etc. */
706
- actions?: ReactNode;
707
- /** Heading level for the title element. Defaults to `'h1'`. */
708
- as?: PageHeaderHeadingLevel;
709
- /** Add a bottom border separator. Default: `false`. */
710
- bordered?: boolean;
711
- }
712
- /**
713
- * Top-of-page header — title, optional description, breadcrumbs, back button,
714
- * and actions slot. The first thing a user sees on any list / detail / form
715
- * page in a dashboard.
716
- *
717
- * Designed to drop directly into `<DashboardContent>` (or any padded page
718
- * container). Has no outer padding of its own — the surrounding layout owns
719
- * spacing.
720
- *
721
- * @example List page header with primary action
722
- * ```tsx
723
- * <PageHeader
724
- * title="Users"
725
- * description="Manage your team members and their roles."
726
- * actions={<Button onClick={openCreate}>Add user</Button>}
727
- * bordered
728
- * />
729
- * ```
730
- *
731
- * @example Detail page header with back button
732
- * ```tsx
733
- * <PageHeader
734
- * title={user.name}
735
- * description={user.email}
736
- * back={{
737
- * label: 'Users',
738
- * to: '/users',
739
- * }}
740
- * actions={
741
- * <>
742
- * <Button variant="outline">Edit</Button>
743
- * <Button variant="destructive">Delete</Button>
744
- * </>
745
- * }
746
- * />
747
- * ```
748
- *
749
- * @example With breadcrumbs slot
750
- * ```tsx
751
- * <PageHeader
752
- * breadcrumbs={
753
- * <nav aria-label="Breadcrumb">
754
- * <ol className="flex items-center gap-1">
755
- * <li><Link to="/">Home</Link></li>
756
- * <li>/</li>
757
- * <li>Users</li>
758
- * </ol>
759
- * </nav>
760
- * }
761
- * title="Users"
762
- * />
763
- * ```
764
- */
765
- declare const PageHeader: react.ForwardRefExoticComponent<PageHeaderProps & react.RefAttributes<HTMLElement>>;
766
-
767
- declare const pageHeaderBaseClass = "flex w-full flex-col gap-3";
768
- /** Adds a bottom border separator below the header. */
769
- declare const pageHeaderBorderedClass = "border-b border-border pb-4";
770
- declare const pageHeaderTitleRowClass = "flex flex-wrap items-start justify-between gap-3 sm:gap-4";
771
- declare const pageHeaderTitleBlockClass = "min-w-0 flex-1 space-y-1";
772
- declare const pageHeaderTitleClass = "text-2xl font-semibold tracking-tight text-foreground";
773
- declare const pageHeaderDescriptionClass = "text-sm text-muted-foreground";
774
- declare const pageHeaderActionsClass = "flex shrink-0 flex-wrap items-center gap-2";
775
- declare const pageHeaderBackClass = "inline-flex items-center gap-1.5 self-start text-sm text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40 focus-visible:ring-offset-2 focus-visible:ring-offset-background rounded-md";
776
- declare const pageHeaderBackIconClass = "size-4 shrink-0 rtl:rotate-180";
777
- declare const pageHeaderBreadcrumbsClass = "text-xs text-muted-foreground";
778
-
779
1130
  interface FormPageProps {
780
1131
  /** Page title (required). Rendered as an `<h1>` by `PageHeader`. */
781
1132
  title: ReactNode;
@@ -1549,9 +1900,161 @@ interface TextareaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>
1549
1900
  */
1550
1901
  declare const Textarea: react.ForwardRefExoticComponent<TextareaProps & react.RefAttributes<HTMLTextAreaElement>>;
1551
1902
 
1903
+ interface ToasterProps extends ToasterProps$1 {
1904
+ }
1905
+ /**
1906
+ * Toast host. Render **once** at the app root (typically inside or next to
1907
+ * `<AppShell>`) — every subsequent call to `toast(...)` from anywhere in the
1908
+ * tree pops a notification through this single host. Built on
1909
+ * [`sonner`](https://sonner.emilkowal.ski).
1910
+ *
1911
+ * Defaults tuned for dashboards:
1912
+ * - `position` flips with `<html dir>`: bottom-right in LTR, bottom-left in RTL.
1913
+ * - `richColors` enabled so success / error / warning / info pick up the kit's
1914
+ * feedback tokens automatically.
1915
+ * - `closeButton` enabled so users can dismiss without waiting for the timer.
1916
+ * - `duration` 4 s (sonner default). Override per-call via `toast(msg, { duration })`.
1917
+ *
1918
+ * Override any of the above via props — the wrapper is a thin pass-through.
1919
+ *
1920
+ * @example Mount at the app root
1921
+ * ```tsx
1922
+ * import { AppShell, Toaster, toast } from '@dimaan/ui';
1923
+ *
1924
+ * function App() {
1925
+ * return (
1926
+ * <AppShell brand={…} nav={…}>
1927
+ * <Routes>…</Routes>
1928
+ * <Toaster />
1929
+ * </AppShell>
1930
+ * );
1931
+ * }
1932
+ * ```
1933
+ *
1934
+ * @example Fire toasts from anywhere
1935
+ * ```tsx
1936
+ * import { toast } from '@dimaan/ui';
1937
+ *
1938
+ * toast.success('Saved');
1939
+ * toast.error('Failed to save', { description: 'Try again.' });
1940
+ * toast.promise(saveUser(), {
1941
+ * loading: 'Saving…',
1942
+ * success: 'Saved',
1943
+ * error: 'Failed to save',
1944
+ * });
1945
+ * ```
1946
+ */
1947
+ declare function Toaster(props: ToasterProps): react_jsx_runtime.JSX.Element;
1948
+
1949
+ /**
1950
+ * Tailwind class names mapped onto sonner's `toastOptions.classNames` slots.
1951
+ * Every entry uses our design tokens so toasts pick up the kit's theme
1952
+ * automatically.
1953
+ */
1954
+ declare const toastClassNames: {
1955
+ toast: string;
1956
+ title: string;
1957
+ description: string;
1958
+ actionButton: string;
1959
+ cancelButton: string;
1960
+ closeButton: string;
1961
+ icon: string;
1962
+ content: string;
1963
+ success: string;
1964
+ error: string;
1965
+ warning: string;
1966
+ info: string;
1967
+ };
1968
+
1969
+ interface TooltipProviderProps extends ComponentPropsWithoutRef<typeof RadixTooltip.Provider> {
1970
+ }
1971
+ /**
1972
+ * App-level provider that coordinates show / hide delays across every
1973
+ * `<Tooltip>` in the tree. Mount **once** at the app root — typically next to
1974
+ * `<Toaster />` and `<ConfirmDialogProvider>`. Without it, individual
1975
+ * `<Tooltip>` calls fall back to Radix's per-instance defaults.
1976
+ *
1977
+ * Defaults tuned for dashboards:
1978
+ * - `delayDuration` 200 ms — fast enough to feel snappy on icon buttons but
1979
+ * slow enough to avoid the "rapid-cursor flash" effect when sweeping past.
1980
+ * - `skipDelayDuration` 300 ms — once one tooltip has shown, neighbouring
1981
+ * tooltips open instantly until the user pauses for ≥300 ms.
1982
+ *
1983
+ * @example Mount once
1984
+ * ```tsx
1985
+ * <AppShell brand={…} nav={…}>
1986
+ * <TooltipProvider>
1987
+ * <Routes>…</Routes>
1988
+ * </TooltipProvider>
1989
+ * <Toaster />
1990
+ * </AppShell>
1991
+ * ```
1992
+ */
1993
+ declare function TooltipProvider({ delayDuration, skipDelayDuration, ...props }: TooltipProviderProps): react_jsx_runtime.JSX.Element;
1994
+ interface TooltipProps {
1995
+ /** Tooltip text or rich content. When falsy the tooltip is skipped entirely. */
1996
+ content: ReactNode;
1997
+ /** The trigger element (button / icon button / link). Rendered via `asChild`. */
1998
+ children: ReactElement;
1999
+ /** Side relative to the trigger. RTL flips automatically via the global DirectionProvider. */
2000
+ side?: 'top' | 'bottom' | 'left' | 'right';
2001
+ /** Alignment along the side axis. */
2002
+ align?: 'start' | 'center' | 'end';
2003
+ /** Override the provider-level show delay (ms). */
2004
+ delayDuration?: number;
2005
+ /** Opt-out — render the children but never show a tooltip. */
2006
+ disabled?: boolean;
2007
+ /** Controlled open state. */
2008
+ open?: boolean;
2009
+ /** Uncontrolled initial open state. */
2010
+ defaultOpen?: boolean;
2011
+ /** Fired when the open state changes. */
2012
+ onOpenChange?: (open: boolean) => void;
2013
+ /** Class applied to the content panel. */
2014
+ className?: string;
2015
+ /** Offset in pixels between the trigger and the panel. Defaults to `6`. */
2016
+ sideOffset?: number;
2017
+ }
2018
+ /**
2019
+ * Single-line wrapper that adds a hover / focus tooltip to its child. For the
2020
+ * 80% case (icon buttons, truncated labels, "what does this mean?" affordances)
2021
+ * — drop in a `<Tooltip>` and forget it.
2022
+ *
2023
+ * Hover, focus, long-press (touch), and keyboard navigation all open it; mouse
2024
+ * leave, blur, Escape, and the matching trigger event close it. The child must
2025
+ * be a single React element that forwards refs / props (any of our kit's
2026
+ * components do).
2027
+ *
2028
+ * @example Icon button
2029
+ * ```tsx
2030
+ * <Tooltip content="Edit user">
2031
+ * <Button variant="ghost" size="icon" aria-label="Edit user">
2032
+ * <Pencil />
2033
+ * </Button>
2034
+ * </Tooltip>
2035
+ * ```
2036
+ *
2037
+ * @example Skip the tooltip dynamically
2038
+ * ```tsx
2039
+ * <Tooltip content="Cannot delete a system user" disabled={!user.isSystem}>
2040
+ * <Button onClick={onDelete}>Delete</Button>
2041
+ * </Tooltip>
2042
+ * ```
2043
+ */
2044
+ declare function Tooltip({ content, children, side, align, delayDuration, disabled, open, defaultOpen, onOpenChange, className, sideOffset, }: TooltipProps): react_jsx_runtime.JSX.Element;
2045
+
2046
+ /**
2047
+ * Tooltip content panel. Small dark-ish surface with a subtle shadow and
2048
+ * the same zoom/fade animation as the rest of the kit's overlays
2049
+ * (Select, DropdownMenu, Dialog).
2050
+ */
2051
+ declare const tooltipContentClass = "z-50 max-w-xs rounded-md bg-foreground px-2.5 py-1.5 text-xs font-medium text-background shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95";
2052
+ /** Optional arrow that matches the panel surface. */
2053
+ declare const tooltipArrowClass = "fill-foreground";
2054
+
1552
2055
  type Direction = 'ltr' | 'rtl';
1553
2056
  declare function useDirection(): Direction;
1554
2057
 
1555
2058
  declare function cn(...inputs: ClassValue[]): string;
1556
2059
 
1557
- export { AppShell, type AppShellBrand, type AppShellNavGroup, type AppShellNavItem, type AppShellProps, Avatar, type AvatarProps, Badge, type BadgeProps, type BadgeSize, type BadgeVariant, Button, type ButtonProps, type ButtonSize, type ButtonVariant, Checkbox, type CheckboxProps, type CheckboxSize, type Column, type ColumnAlign, DashboardContent, type DashboardContentProps, DashboardHeader, type DashboardHeaderProps, DashboardLayout, type DashboardLayoutContextValue, type DashboardLayoutProps, DashboardMain, type DashboardMainProps, DatePicker, type DatePickerProps, type DatePickerSize, type DatePickerVariant, type Direction, DropdownMenu, DropdownMenuContent, type DropdownMenuContentProps, DropdownMenuGroup, DropdownMenuItem, type DropdownMenuItemProps, type DropdownMenuItemVariant, DropdownMenuLabel, type DropdownMenuLabelProps, DropdownMenuPortal, DropdownMenuSeparator, type DropdownMenuSeparatorProps, DropdownMenuShortcut, type DropdownMenuShortcutProps, DropdownMenuTrigger, EmptyState, type EmptyStateProps, type EmptyStateSize, Field, type FieldOrientation, type FieldProps, type FieldRHFProps, FormPage, type FormPageProps, HeaderActions, type HeaderActionsProps, HeaderCollapseTrigger, type HeaderCollapseTriggerProps, HeaderMobileTrigger, type HeaderMobileTriggerProps, HeaderSearch, type HeaderSearchProps, HeaderTitle, type HeaderTitleProps, Input, type InputProps, type InputSize, type InputVariant, type LanguageOption, LanguageSwitcher, type LanguageSwitcherProps, ListPage, type ListPageEmptyState, type ListPageFilter, type ListPageLabels, type ListPageProps, PageHeader, type PageHeaderBackProps, type PageHeaderBackRenderProps, type PageHeaderHeadingLevel, type PageHeaderProps, type PaginationState, RadioGroup, RadioGroupItem, type RadioGroupOption, type RadioGroupOrientation, type RadioGroupProps, type RadioGroupSize, type RowSelectionState, Select, type SelectOption, type SelectProps, type SelectSize, type SelectVariant, Sidebar, SidebarFooter, type SidebarFooterProps, SidebarGroup, type SidebarGroupProps, SidebarHeader, type SidebarHeaderProps, SidebarNav, SidebarNavGroup, type SidebarNavGroupProps, SidebarNavItem, type SidebarNavItemProps, type SidebarNavItemRenderProps, type SidebarNavProps, type SidebarProps, type SortDirection, type SortState, type SortableValue, Switch, type SwitchProps, type SwitchSize, Table, type TableProps, type TableSize, type TableSizeClasses, Textarea, type TextareaProps, type TextareaResize, type TextareaSize, type TextareaVariant, badgeBaseClass, badgeDotSizeClass, badgeSizeClass, badgeVariantClass, buttonBaseClass, buttonSizeClass, buttonVariantClass, cn, datePickerCalendarClass, datePickerCaptionClass, datePickerContentClass, datePickerDayBaseClass, datePickerDayWrapperClass, datePickerDisabledClass, datePickerMonthClass, datePickerMonthGridClass, datePickerMonthsClass, datePickerNavButtonClass, datePickerNavClass, datePickerOutsideClass, datePickerPlaceholderClass, datePickerSelectedClass, datePickerTodayClass, datePickerTriggerBaseClass, datePickerTriggerSizeClass, datePickerTriggerVariantClass, datePickerValueClass, datePickerWeekClass, datePickerWeekdayClass, datePickerWeekdaysClass, dropdownMenuContentClass, dropdownMenuItemBaseClass, dropdownMenuItemInsetClass, dropdownMenuItemVariantClass, dropdownMenuLabelClass, dropdownMenuSeparatorClass, dropdownMenuShortcutClass, emptyStateActionsSpacingClass, emptyStateBaseClass, emptyStateContainerSizeClass, emptyStateDescriptionSizeClass, emptyStateIconWrapperBaseClass, emptyStateIconWrapperSizeClass, emptyStateTitleSizeClass, formPageActionsBarClass, formPageBaseClass, formPageBodyClass, formPageSkeletonRowClass, inputBaseClass, inputSizeClass, inputVariantClass, pageHeaderActionsClass, pageHeaderBackClass, pageHeaderBackIconClass, pageHeaderBaseClass, pageHeaderBorderedClass, pageHeaderBreadcrumbsClass, pageHeaderDescriptionClass, pageHeaderTitleBlockClass, pageHeaderTitleClass, pageHeaderTitleRowClass, radioGroupBaseClass, radioGroupOrientationClass, radioIndicatorBaseClass, radioIndicatorDotClass, radioIndicatorSizeClass, radioItemBaseClass, radioItemSizeClass, radioLabelSizeClass, radioOptionRowClass, selectBaseClass, selectSizeClass, selectVariantClass, switchThumbBaseClass, switchThumbClass, switchTrackBaseClass, switchTrackClass, alignClass as tableAlignClass, tableBaseClass, selectedRowClass as tableSelectedRowClass, tableSizeClass, sortIconClass as tableSortIconClass, textareaBaseClass, textareaResizeClass, textareaSizeClass, textareaVariantClass, useDashboardLayout, useDirection };
2060
+ export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, type AlertDialogContentProps, AlertDialogDescription, type AlertDialogDescriptionProps, AlertDialogFooter, type AlertDialogFooterProps, AlertDialogHeader, type AlertDialogHeaderProps, AlertDialogOverlay, type AlertDialogOverlayProps, AlertDialogPortal, AlertDialogTitle, type AlertDialogTitleProps, AlertDialogTrigger, AppShell, type AppShellBrand, type AppShellNavGroup, type AppShellNavItem, type AppShellProps, Avatar, type AvatarProps, Badge, type BadgeProps, type BadgeSize, type BadgeVariant, Button, type ButtonProps, type ButtonSize, type ButtonVariant, Checkbox, type CheckboxProps, type CheckboxSize, type Column, type ColumnAlign, type ConfirmDialogLabels, ConfirmDialogProvider, type ConfirmDialogProviderProps, type ConfirmOptions, DashboardContent, type DashboardContentProps, DashboardHeader, type DashboardHeaderProps, DashboardLayout, type DashboardLayoutContextValue, type DashboardLayoutProps, DashboardMain, type DashboardMainProps, DatePicker, type DatePickerProps, type DatePickerSize, type DatePickerVariant, DetailPage, type DetailPageLabels, type DetailPageNotFoundState, type DetailPageProps, Dialog, DialogClose, DialogContent, type DialogContentProps, DialogDescription, type DialogDescriptionProps, DialogFooter, type DialogFooterProps, DialogHeader, type DialogHeaderProps, DialogOverlay, type DialogOverlayProps, DialogPortal, DialogTitle, type DialogTitleProps, DialogTrigger, type Direction, DropdownMenu, DropdownMenuContent, type DropdownMenuContentProps, DropdownMenuGroup, DropdownMenuItem, type DropdownMenuItemProps, type DropdownMenuItemVariant, DropdownMenuLabel, type DropdownMenuLabelProps, DropdownMenuPortal, DropdownMenuSeparator, type DropdownMenuSeparatorProps, DropdownMenuShortcut, type DropdownMenuShortcutProps, DropdownMenuTrigger, EmptyState, type EmptyStateProps, type EmptyStateSize, Field, type FieldOrientation, type FieldProps, type FieldRHFProps, FormPage, type FormPageProps, HeaderActions, type HeaderActionsProps, HeaderCollapseTrigger, type HeaderCollapseTriggerProps, HeaderMobileTrigger, type HeaderMobileTriggerProps, HeaderSearch, type HeaderSearchProps, HeaderTitle, type HeaderTitleProps, Input, type InputProps, type InputSize, type InputVariant, type LanguageOption, LanguageSwitcher, type LanguageSwitcherProps, ListPage, type ListPageEmptyState, type ListPageFilter, type ListPageLabels, type ListPageProps, PageHeader, type PageHeaderBackProps, type PageHeaderBackRenderProps, type PageHeaderHeadingLevel, type PageHeaderProps, type PaginationState, RadioGroup, RadioGroupItem, type RadioGroupOption, type RadioGroupOrientation, type RadioGroupProps, type RadioGroupSize, type RowSelectionState, Select, type SelectOption, type SelectProps, type SelectSize, type SelectVariant, Sidebar, SidebarFooter, type SidebarFooterProps, SidebarGroup, type SidebarGroupProps, SidebarHeader, type SidebarHeaderProps, SidebarNav, SidebarNavGroup, type SidebarNavGroupProps, SidebarNavItem, type SidebarNavItemProps, type SidebarNavItemRenderProps, type SidebarNavProps, type SidebarProps, type SortDirection, type SortState, type SortableValue, Switch, type SwitchProps, type SwitchSize, Table, type TableProps, type TableSize, type TableSizeClasses, Textarea, type TextareaProps, type TextareaResize, type TextareaSize, type TextareaVariant, Toaster, type ToasterProps, Tooltip, type TooltipProps, TooltipProvider, type TooltipProviderProps, badgeBaseClass, badgeDotSizeClass, badgeSizeClass, badgeVariantClass, buttonBaseClass, buttonSizeClass, buttonVariantClass, cn, datePickerCalendarClass, datePickerCaptionClass, datePickerContentClass, datePickerDayBaseClass, datePickerDayWrapperClass, datePickerDisabledClass, datePickerMonthClass, datePickerMonthGridClass, datePickerMonthsClass, datePickerNavButtonClass, datePickerNavClass, datePickerOutsideClass, datePickerPlaceholderClass, datePickerSelectedClass, datePickerTodayClass, datePickerTriggerBaseClass, datePickerTriggerSizeClass, datePickerTriggerVariantClass, datePickerValueClass, datePickerWeekClass, datePickerWeekdayClass, datePickerWeekdaysClass, detailPageBaseClass, detailPageBodyClass, detailPageEmptyClass, detailPageSkeletonRowClass, dialogCloseButtonClass, dialogContentClass, dialogDescriptionClass, dialogFooterClass, dialogHeaderClass, dialogOverlayClass, dialogTitleClass, dropdownMenuContentClass, dropdownMenuItemBaseClass, dropdownMenuItemInsetClass, dropdownMenuItemVariantClass, dropdownMenuLabelClass, dropdownMenuSeparatorClass, dropdownMenuShortcutClass, emptyStateActionsSpacingClass, emptyStateBaseClass, emptyStateContainerSizeClass, emptyStateDescriptionSizeClass, emptyStateIconWrapperBaseClass, emptyStateIconWrapperSizeClass, emptyStateTitleSizeClass, formPageActionsBarClass, formPageBaseClass, formPageBodyClass, formPageSkeletonRowClass, inputBaseClass, inputSizeClass, inputVariantClass, pageHeaderActionsClass, pageHeaderBackClass, pageHeaderBackIconClass, pageHeaderBaseClass, pageHeaderBorderedClass, pageHeaderBreadcrumbsClass, pageHeaderDescriptionClass, pageHeaderTitleBlockClass, pageHeaderTitleClass, pageHeaderTitleRowClass, radioGroupBaseClass, radioGroupOrientationClass, radioIndicatorBaseClass, radioIndicatorDotClass, radioIndicatorSizeClass, radioItemBaseClass, radioItemSizeClass, radioLabelSizeClass, radioOptionRowClass, selectBaseClass, selectSizeClass, selectVariantClass, switchThumbBaseClass, switchThumbClass, switchTrackBaseClass, switchTrackClass, alignClass as tableAlignClass, tableBaseClass, selectedRowClass as tableSelectedRowClass, tableSizeClass, sortIconClass as tableSortIconClass, textareaBaseClass, textareaResizeClass, textareaSizeClass, textareaVariantClass, toastClassNames, tooltipArrowClass, tooltipContentClass, useConfirm, useDashboardLayout, useDirection };