@dimaan/ui 0.0.21 → 0.0.22
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.cjs +479 -192
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +367 -244
- package/dist/index.d.ts +367 -244
- package/dist/index.js +471 -194
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -594,107 +594,6 @@ interface DatePickerProps {
|
|
|
594
594
|
*/
|
|
595
595
|
declare const DatePicker: react.ForwardRefExoticComponent<DatePickerProps & react.RefAttributes<HTMLButtonElement>>;
|
|
596
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
597
|
interface DetailPageNotFoundState {
|
|
699
598
|
icon?: ReactNode;
|
|
700
599
|
title?: ReactNode;
|
|
@@ -703,6 +602,8 @@ interface DetailPageNotFoundState {
|
|
|
703
602
|
action?: ReactNode | null;
|
|
704
603
|
}
|
|
705
604
|
interface DetailPageLabels {
|
|
605
|
+
/** Back button label. Direction-aware default: `"Back"` / `"رجوع"`. */
|
|
606
|
+
back?: string;
|
|
706
607
|
notFoundTitle?: string;
|
|
707
608
|
notFoundDescription?: string;
|
|
708
609
|
}
|
|
@@ -711,8 +612,6 @@ interface DetailPageProps {
|
|
|
711
612
|
title: ReactNode;
|
|
712
613
|
/** Optional secondary text under the title (e.g. status pill, joined date). */
|
|
713
614
|
description?: ReactNode;
|
|
714
|
-
/** Optional back-button config — forwarded straight to `PageHeader.back`. */
|
|
715
|
-
back?: PageHeaderBackProps;
|
|
716
615
|
/** Header action slot — Edit / Archive / Delete buttons. */
|
|
717
616
|
actions?: ReactNode;
|
|
718
617
|
/** Page-header bottom border separator. Defaults to `true` for detail pages. */
|
|
@@ -753,6 +652,10 @@ interface DetailPageProps {
|
|
|
753
652
|
* Pairs with `<ListPage>` (read flow) and `<FormPage>` (write flow) as the
|
|
754
653
|
* third Phase-4 template. RHF-agnostic — no form integration.
|
|
755
654
|
*
|
|
655
|
+
* A back button is always rendered in the top-left of the header; clicking it
|
|
656
|
+
* calls `navigate(-1)`. The label is direction-aware (EN / AR) via
|
|
657
|
+
* `useDirection()` and can be overridden through `labels.back`.
|
|
658
|
+
*
|
|
756
659
|
* @example View user
|
|
757
660
|
* ```tsx
|
|
758
661
|
* const { data: user, isLoading } = useUser(id);
|
|
@@ -761,7 +664,6 @@ interface DetailPageProps {
|
|
|
761
664
|
* <DetailPage
|
|
762
665
|
* title={user ? `${user.name}` : 'Loading…'}
|
|
763
666
|
* description={user?.role}
|
|
764
|
-
* back={{ to: '/users' }}
|
|
765
667
|
* actions={
|
|
766
668
|
* <>
|
|
767
669
|
* <Button variant="outline" onClick={onArchive}>Archive</Button>
|
|
@@ -793,7 +695,7 @@ interface DetailPageProps {
|
|
|
793
695
|
* </DetailPage>
|
|
794
696
|
* ```
|
|
795
697
|
*/
|
|
796
|
-
declare function DetailPage({ title, description,
|
|
698
|
+
declare function DetailPage({ title, description, actions, bordered, isLoading, loadingRowCount, notFound, notFoundState, labels: labelsProp, children, className, bodyClassName, }: DetailPageProps): react_jsx_runtime.JSX.Element;
|
|
797
699
|
|
|
798
700
|
/** Outermost wrapper of `DetailPage` — vertical flex column with consistent spacing. */
|
|
799
701
|
declare const detailPageBaseClass = "flex w-full flex-col gap-6";
|
|
@@ -1343,101 +1245,6 @@ interface LanguageSwitcherProps<TCode extends string = string> extends Omit<Fiel
|
|
|
1343
1245
|
}
|
|
1344
1246
|
declare function LanguageSwitcher<TCode extends string = string>({ languages, value, onChange, ariaLabel, className, ...props }: LanguageSwitcherProps<TCode>): react_jsx_runtime.JSX.Element;
|
|
1345
1247
|
|
|
1346
|
-
type SelectVariant = 'default' | 'filled' | 'ghost';
|
|
1347
|
-
type SelectSize = 'sm' | 'md' | 'lg';
|
|
1348
|
-
declare const selectVariantClass: Record<SelectVariant, string>;
|
|
1349
|
-
/**
|
|
1350
|
-
* `pe-*` is wider than `ps-*` to leave room for the chevron icon. Logical
|
|
1351
|
-
* properties keep RTL working free.
|
|
1352
|
-
*/
|
|
1353
|
-
declare const selectSizeClass: Record<SelectSize, string>;
|
|
1354
|
-
declare const selectBaseClass = "group/select relative inline-flex w-full items-center text-foreground outline-none transition-[background-color,border-color,box-shadow] focus:ring-2 focus:ring-ring/40 focus:ring-offset-1 focus:ring-offset-background aria-[invalid=true]:border-destructive aria-[invalid=true]:focus:ring-destructive/40 disabled:pointer-events-none disabled:opacity-50 cursor-pointer data-[placeholder]:text-muted-foreground";
|
|
1355
|
-
|
|
1356
|
-
interface SelectOption {
|
|
1357
|
-
value: string;
|
|
1358
|
-
label: string;
|
|
1359
|
-
disabled?: boolean;
|
|
1360
|
-
}
|
|
1361
|
-
interface SelectGroup {
|
|
1362
|
-
label: string;
|
|
1363
|
-
options: SelectOption[];
|
|
1364
|
-
}
|
|
1365
|
-
/**
|
|
1366
|
-
* `options` accepts either a flat list of options OR a list of groups.
|
|
1367
|
-
* Use `children` for full Radix composition (Select.Item, Select.Separator…).
|
|
1368
|
-
*/
|
|
1369
|
-
type SelectOptions = SelectOption[] | SelectGroup[];
|
|
1370
|
-
interface SelectProps {
|
|
1371
|
-
variant?: SelectVariant;
|
|
1372
|
-
/** Visual size. Named `selectSize` to mirror Input's `inputSize`. */
|
|
1373
|
-
selectSize?: SelectSize;
|
|
1374
|
-
/** Declarative options (flat or grouped). When `children` is provided it wins. */
|
|
1375
|
-
options?: SelectOptions;
|
|
1376
|
-
/** Placeholder shown when no value is selected. */
|
|
1377
|
-
placeholder?: string;
|
|
1378
|
-
/** Controlled value. */
|
|
1379
|
-
value?: string;
|
|
1380
|
-
/** Initial value for uncontrolled usage. */
|
|
1381
|
-
defaultValue?: string;
|
|
1382
|
-
/** Radix-style change handler — receives the new value directly. */
|
|
1383
|
-
onValueChange?: (value: string) => void;
|
|
1384
|
-
/**
|
|
1385
|
-
* Synthetic-event handler for compatibility with `react-hook-form`'s
|
|
1386
|
-
* `field.onChange` and other consumers that expect a `ChangeEvent`-shaped
|
|
1387
|
-
* object. Both this and `onValueChange` fire on selection.
|
|
1388
|
-
*/
|
|
1389
|
-
onChange?: (event: ChangeEvent<HTMLSelectElement>) => void;
|
|
1390
|
-
/** Called when focus leaves the trigger. */
|
|
1391
|
-
onBlur?: () => void;
|
|
1392
|
-
/** Form name (for native form submission). */
|
|
1393
|
-
name?: string;
|
|
1394
|
-
/** Disables the trigger. */
|
|
1395
|
-
disabled?: boolean;
|
|
1396
|
-
/** Marks the underlying form input as required. */
|
|
1397
|
-
required?: boolean;
|
|
1398
|
-
/** Override id (otherwise auto-generated via useId). */
|
|
1399
|
-
id?: string;
|
|
1400
|
-
/** Class applied to the trigger button. */
|
|
1401
|
-
className?: string;
|
|
1402
|
-
'aria-invalid'?: boolean | 'true' | 'false';
|
|
1403
|
-
'aria-describedby'?: string;
|
|
1404
|
-
'aria-label'?: string;
|
|
1405
|
-
/** Radix children — used for advanced composition (Select.Group, etc.). */
|
|
1406
|
-
children?: ReactNode;
|
|
1407
|
-
}
|
|
1408
|
-
/**
|
|
1409
|
-
* Dropdown select built on `@radix-ui/react-select`. Renders only the trigger
|
|
1410
|
-
* button + Radix popup — wrap it in `<Field label="…">` to add a label, helper
|
|
1411
|
-
* text, error, and aria wiring.
|
|
1412
|
-
*
|
|
1413
|
-
* @example Inside a Field (RHF + Zod)
|
|
1414
|
-
* ```tsx
|
|
1415
|
-
* <Field name="country" label="Country" required>
|
|
1416
|
-
* <Select options={COUNTRIES} placeholder="Pick one" />
|
|
1417
|
-
* </Field>
|
|
1418
|
-
* ```
|
|
1419
|
-
*
|
|
1420
|
-
* @example Bare in a filter bar (no label)
|
|
1421
|
-
* ```tsx
|
|
1422
|
-
* <Select
|
|
1423
|
-
* value={status}
|
|
1424
|
-
* onValueChange={setStatus}
|
|
1425
|
-
* options={STATUS_OPTIONS}
|
|
1426
|
-
* placeholder="Status"
|
|
1427
|
-
* aria-label="Status filter"
|
|
1428
|
-
* />
|
|
1429
|
-
* ```
|
|
1430
|
-
*
|
|
1431
|
-
* @example Grouped options
|
|
1432
|
-
* ```tsx
|
|
1433
|
-
* <Select options={[
|
|
1434
|
-
* { label: 'GCC', options: [{ value: 'sa', label: 'Saudi Arabia' }] },
|
|
1435
|
-
* { label: 'Levant', options: [{ value: 'jo', label: 'Jordan' }] },
|
|
1436
|
-
* ]} />
|
|
1437
|
-
* ```
|
|
1438
|
-
*/
|
|
1439
|
-
declare const Select: react.ForwardRefExoticComponent<SelectProps & react.RefAttributes<HTMLButtonElement>>;
|
|
1440
|
-
|
|
1441
1248
|
type TableSize = 'sm' | 'md' | 'lg';
|
|
1442
1249
|
interface TableSizeClasses {
|
|
1443
1250
|
/** Applied to <tr> when needed (currently empty — present for symmetry). */
|
|
@@ -1588,21 +1395,152 @@ interface TableProps<T> {
|
|
|
1588
1395
|
*/
|
|
1589
1396
|
declare function Table<T>(props: TableProps<T>): react_jsx_runtime.JSX.Element;
|
|
1590
1397
|
|
|
1398
|
+
type SelectVariant = 'default' | 'filled' | 'ghost';
|
|
1399
|
+
type SelectSize = 'sm' | 'md' | 'lg';
|
|
1400
|
+
declare const selectVariantClass: Record<SelectVariant, string>;
|
|
1401
|
+
/**
|
|
1402
|
+
* `pe-*` is wider than `ps-*` to leave room for the chevron icon. Logical
|
|
1403
|
+
* properties keep RTL working free.
|
|
1404
|
+
*/
|
|
1405
|
+
declare const selectSizeClass: Record<SelectSize, string>;
|
|
1406
|
+
declare const selectBaseClass = "group/select relative inline-flex w-full items-center text-foreground outline-none transition-[background-color,border-color,box-shadow] focus:ring-2 focus:ring-ring/40 focus:ring-offset-1 focus:ring-offset-background aria-[invalid=true]:border-destructive aria-[invalid=true]:focus:ring-destructive/40 disabled:pointer-events-none disabled:opacity-50 cursor-pointer data-[placeholder]:text-muted-foreground";
|
|
1407
|
+
|
|
1408
|
+
interface SelectOption {
|
|
1409
|
+
value: string;
|
|
1410
|
+
label: string;
|
|
1411
|
+
disabled?: boolean;
|
|
1412
|
+
}
|
|
1413
|
+
interface SelectGroup {
|
|
1414
|
+
label: string;
|
|
1415
|
+
options: SelectOption[];
|
|
1416
|
+
}
|
|
1591
1417
|
/**
|
|
1592
|
-
*
|
|
1593
|
-
*
|
|
1594
|
-
* renders the Select + reports changes.
|
|
1418
|
+
* `options` accepts either a flat list of options OR a list of groups.
|
|
1419
|
+
* Use `children` for full Radix composition (Select.Item, Select.Separator…).
|
|
1595
1420
|
*/
|
|
1596
|
-
|
|
1597
|
-
|
|
1421
|
+
type SelectOptions = SelectOption[] | SelectGroup[];
|
|
1422
|
+
interface SelectProps {
|
|
1423
|
+
variant?: SelectVariant;
|
|
1424
|
+
/** Visual size. Named `selectSize` to mirror Input's `inputSize`. */
|
|
1425
|
+
selectSize?: SelectSize;
|
|
1426
|
+
/** Declarative options (flat or grouped). When `children` is provided it wins. */
|
|
1427
|
+
options?: SelectOptions;
|
|
1428
|
+
/** Placeholder shown when no value is selected. */
|
|
1429
|
+
placeholder?: string;
|
|
1430
|
+
/** Controlled value. */
|
|
1431
|
+
value?: string;
|
|
1432
|
+
/** Initial value for uncontrolled usage. */
|
|
1433
|
+
defaultValue?: string;
|
|
1434
|
+
/** Radix-style change handler — receives the new value directly. */
|
|
1435
|
+
onValueChange?: (value: string) => void;
|
|
1436
|
+
/**
|
|
1437
|
+
* Synthetic-event handler for compatibility with `react-hook-form`'s
|
|
1438
|
+
* `field.onChange` and other consumers that expect a `ChangeEvent`-shaped
|
|
1439
|
+
* object. Both this and `onValueChange` fire on selection.
|
|
1440
|
+
*/
|
|
1441
|
+
onChange?: (event: ChangeEvent<HTMLSelectElement>) => void;
|
|
1442
|
+
/** Called when focus leaves the trigger. */
|
|
1443
|
+
onBlur?: () => void;
|
|
1444
|
+
/** Form name (for native form submission). */
|
|
1445
|
+
name?: string;
|
|
1446
|
+
/** Disables the trigger. */
|
|
1447
|
+
disabled?: boolean;
|
|
1448
|
+
/** Marks the underlying form input as required. */
|
|
1449
|
+
required?: boolean;
|
|
1450
|
+
/** Override id (otherwise auto-generated via useId). */
|
|
1451
|
+
id?: string;
|
|
1452
|
+
/** Class applied to the trigger button. */
|
|
1453
|
+
className?: string;
|
|
1454
|
+
'aria-invalid'?: boolean | 'true' | 'false';
|
|
1455
|
+
'aria-describedby'?: string;
|
|
1456
|
+
'aria-label'?: string;
|
|
1457
|
+
/** Radix children — used for advanced composition (Select.Group, etc.). */
|
|
1458
|
+
children?: ReactNode;
|
|
1459
|
+
}
|
|
1460
|
+
/**
|
|
1461
|
+
* Dropdown select built on `@radix-ui/react-select`. Renders only the trigger
|
|
1462
|
+
* button + Radix popup — wrap it in `<Field label="…">` to add a label, helper
|
|
1463
|
+
* text, error, and aria wiring.
|
|
1464
|
+
*
|
|
1465
|
+
* @example Inside a Field (RHF + Zod)
|
|
1466
|
+
* ```tsx
|
|
1467
|
+
* <Field name="country" label="Country" required>
|
|
1468
|
+
* <Select options={COUNTRIES} placeholder="Pick one" />
|
|
1469
|
+
* </Field>
|
|
1470
|
+
* ```
|
|
1471
|
+
*
|
|
1472
|
+
* @example Bare in a filter bar (no label)
|
|
1473
|
+
* ```tsx
|
|
1474
|
+
* <Select
|
|
1475
|
+
* value={status}
|
|
1476
|
+
* onValueChange={setStatus}
|
|
1477
|
+
* options={STATUS_OPTIONS}
|
|
1478
|
+
* placeholder="Status"
|
|
1479
|
+
* aria-label="Status filter"
|
|
1480
|
+
* />
|
|
1481
|
+
* ```
|
|
1482
|
+
*
|
|
1483
|
+
* @example Grouped options
|
|
1484
|
+
* ```tsx
|
|
1485
|
+
* <Select options={[
|
|
1486
|
+
* { label: 'GCC', options: [{ value: 'sa', label: 'Saudi Arabia' }] },
|
|
1487
|
+
* { label: 'Levant', options: [{ value: 'jo', label: 'Jordan' }] },
|
|
1488
|
+
* ]} />
|
|
1489
|
+
* ```
|
|
1490
|
+
*/
|
|
1491
|
+
declare const Select: react.ForwardRefExoticComponent<SelectProps & react.RefAttributes<HTMLButtonElement>>;
|
|
1492
|
+
|
|
1493
|
+
/** How many columns a filter spans in the responsive filter grid. */
|
|
1494
|
+
type ListPageFilterWidth = 'narrow' | 'default' | 'wide';
|
|
1495
|
+
interface ListPageFilterBase {
|
|
1496
|
+
/** Unique key — used in the `filterValues` record and as the aria-label fallback. */
|
|
1598
1497
|
key: string;
|
|
1599
|
-
/** Display label.
|
|
1498
|
+
/** Display label. Drives the control's accessible name; falls back to `key`. */
|
|
1600
1499
|
label?: ReactNode;
|
|
1601
|
-
/**
|
|
1500
|
+
/**
|
|
1501
|
+
* Column span in the responsive filter grid. `'wide'` spans two columns on
|
|
1502
|
+
* `sm+` (good for a search box); `'narrow'` / `'default'` span one. Controls
|
|
1503
|
+
* always fill their cell, so this only affects how many columns they take.
|
|
1504
|
+
*/
|
|
1505
|
+
width?: ListPageFilterWidth;
|
|
1506
|
+
}
|
|
1507
|
+
/** Dropdown filter — the first option's value is treated as "show all / no filter". */
|
|
1508
|
+
interface ListPageSelectFilter extends ListPageFilterBase {
|
|
1509
|
+
type: 'select';
|
|
1510
|
+
options: SelectOption[];
|
|
1511
|
+
}
|
|
1512
|
+
/**
|
|
1513
|
+
* Free-text filter — rendered as a search input (with a leading search icon).
|
|
1514
|
+
* Use it for the page's global text query as well as per-field text filters.
|
|
1515
|
+
* Empty / whitespace-only string means "no filter".
|
|
1516
|
+
*/
|
|
1517
|
+
interface ListPageTextFilter extends ListPageFilterBase {
|
|
1518
|
+
type: 'text';
|
|
1519
|
+
placeholder?: string;
|
|
1520
|
+
}
|
|
1521
|
+
/** Date filter — rendered as a `DatePicker`. ISO `YYYY-MM-DD`; empty means "no filter". */
|
|
1522
|
+
interface ListPageDateFilter extends ListPageFilterBase {
|
|
1523
|
+
type: 'date';
|
|
1524
|
+
placeholder?: string;
|
|
1525
|
+
}
|
|
1526
|
+
/**
|
|
1527
|
+
* Multi-select filter — rendered as a `MultiSelect`. The value is the selected
|
|
1528
|
+
* option values joined by commas (e.g. `"admin,editor"`); empty = no filter.
|
|
1529
|
+
* Consumers `.split(',')` to build the server query.
|
|
1530
|
+
*/
|
|
1531
|
+
interface ListPageMultiSelectFilter extends ListPageFilterBase {
|
|
1532
|
+
type: 'multiselect';
|
|
1602
1533
|
options: SelectOption[];
|
|
1603
|
-
|
|
1604
|
-
width?: 'narrow' | 'default' | 'wide';
|
|
1534
|
+
placeholder?: string;
|
|
1605
1535
|
}
|
|
1536
|
+
/**
|
|
1537
|
+
* One filter definition for `<ListPage>`, discriminated by `type`. The consumer
|
|
1538
|
+
* declares the control kind explicitly (`select` / `text` / `date`); the server
|
|
1539
|
+
* still owns the actual filtering — every filter reads and writes a single
|
|
1540
|
+
* string in the `filterValues` record.
|
|
1541
|
+
*/
|
|
1542
|
+
type ListPageFilter = ListPageSelectFilter | ListPageTextFilter | ListPageDateFilter | ListPageMultiSelectFilter;
|
|
1543
|
+
|
|
1606
1544
|
interface ListPageEmptyState {
|
|
1607
1545
|
icon?: ReactNode;
|
|
1608
1546
|
title?: ReactNode;
|
|
@@ -1616,10 +1554,6 @@ interface ListPageEmptyState {
|
|
|
1616
1554
|
* `nextPage`) flow through to the inner Table without re-declaration.
|
|
1617
1555
|
*/
|
|
1618
1556
|
interface ListPageLabels extends TableLabels {
|
|
1619
|
-
/** Search input placeholder. */
|
|
1620
|
-
searchPlaceholder?: string;
|
|
1621
|
-
/** Search input aria-label. Falls back to the placeholder. */
|
|
1622
|
-
searchAriaLabel?: string;
|
|
1623
1557
|
/** "Reset filters" button label. */
|
|
1624
1558
|
reset?: string;
|
|
1625
1559
|
/** "No results matching filters" title. */
|
|
@@ -1650,21 +1584,15 @@ interface ListPageProps<T> {
|
|
|
1650
1584
|
isLoading?: boolean;
|
|
1651
1585
|
/** Number of skeleton rows rendered while loading. Defaults to the table page size. */
|
|
1652
1586
|
loadingRowCount?: number;
|
|
1653
|
-
/** Current search query — the consumer's state. */
|
|
1654
|
-
searchValue?: string;
|
|
1655
|
-
/**
|
|
1656
|
-
* Fires on every keystroke. Providing this **renders the search input**.
|
|
1657
|
-
* Wire it to your data layer (and reset pagination to page 0 on change).
|
|
1658
|
-
*/
|
|
1659
|
-
onSearchChange?: (value: string) => void;
|
|
1660
1587
|
/**
|
|
1661
|
-
*
|
|
1662
|
-
* `
|
|
1588
|
+
* Typed filter definitions (`select` / `text` / `date`). Renders the matching
|
|
1589
|
+
* control per entry via `ListPageFilterBar`. A `text` filter doubles as the
|
|
1590
|
+
* page's search box. Pair with `filterValues` + `onFilterChange` to drive them.
|
|
1663
1591
|
*/
|
|
1664
1592
|
filters?: ListPageFilter[];
|
|
1665
|
-
/** Current filter selections, keyed by `filter.key
|
|
1593
|
+
/** Current filter selections, keyed by `filter.key` (date values are ISO `YYYY-MM-DD`). */
|
|
1666
1594
|
filterValues?: Record<string, string>;
|
|
1667
|
-
/** Fires when any filter
|
|
1595
|
+
/** Fires when any filter control changes. */
|
|
1668
1596
|
onFilterChange?: (key: string, value: string) => void;
|
|
1669
1597
|
enableRowSelection?: boolean;
|
|
1670
1598
|
bulkActions?: (selected: T[]) => ReactNode;
|
|
@@ -1690,29 +1618,29 @@ interface ListPageProps<T> {
|
|
|
1690
1618
|
className?: string;
|
|
1691
1619
|
}
|
|
1692
1620
|
/**
|
|
1693
|
-
* Declarative server-driven list-page template — composes `PageHeader +
|
|
1694
|
-
*
|
|
1621
|
+
* Declarative server-driven list-page template — composes `PageHeader + filter
|
|
1622
|
+
* bar + Table + EmptyState` into a single component.
|
|
1695
1623
|
*
|
|
1696
1624
|
* **All data-shaping is server-side.** ListPage does not filter / search /
|
|
1697
1625
|
* paginate `data` locally; it renders whatever the consumer's data layer
|
|
1698
|
-
* returned for the current `
|
|
1699
|
-
*
|
|
1700
|
-
*
|
|
1626
|
+
* returned for the current `filterValues` + `pagination` query. ListPage's job
|
|
1627
|
+
* is the UI: render the controls, report user input back through callbacks, and
|
|
1628
|
+
* pick the right empty state. Search is just a `text` filter — there is no
|
|
1629
|
+
* separate search prop.
|
|
1701
1630
|
*
|
|
1702
1631
|
* **Three rendering branches in the table area:**
|
|
1703
1632
|
* - `isLoading` → Table with skeleton rows.
|
|
1704
|
-
* - `data` empty AND
|
|
1705
|
-
* -
|
|
1633
|
+
* - `data` empty AND no filter active → `noDataState` (first-run).
|
|
1634
|
+
* - a filter active but `data` empty → `emptyState` (no results) with a Reset button.
|
|
1706
1635
|
*
|
|
1707
1636
|
* @example Server-driven list with TanStack Query
|
|
1708
1637
|
* ```tsx
|
|
1709
|
-
* const [
|
|
1710
|
-
* const [filters, setFilters] = useState({ status: 'all' });
|
|
1638
|
+
* const [filters, setFilters] = useState({ q: '', status: 'all', createdFrom: '' });
|
|
1711
1639
|
* const [pagination, setPagination] = useState({ pageIndex: 0, pageSize: 10 });
|
|
1712
1640
|
*
|
|
1713
1641
|
* const { data, isLoading } = useQuery({
|
|
1714
|
-
* queryKey: ['users',
|
|
1715
|
-
* queryFn: () => fetchUsers({
|
|
1642
|
+
* queryKey: ['users', filters, pagination],
|
|
1643
|
+
* queryFn: () => fetchUsers({ ...filters, ...pagination }),
|
|
1716
1644
|
* });
|
|
1717
1645
|
*
|
|
1718
1646
|
* return (
|
|
@@ -1724,14 +1652,10 @@ interface ListPageProps<T> {
|
|
|
1724
1652
|
* isLoading={isLoading}
|
|
1725
1653
|
* columns={USER_COLUMNS}
|
|
1726
1654
|
*
|
|
1727
|
-
* searchValue={search}
|
|
1728
|
-
* onSearchChange={(v) => {
|
|
1729
|
-
* setSearch(v);
|
|
1730
|
-
* setPagination((p) => ({ ...p, pageIndex: 0 }));
|
|
1731
|
-
* }}
|
|
1732
|
-
*
|
|
1733
1655
|
* filters={[
|
|
1734
|
-
* { key: '
|
|
1656
|
+
* { type: 'text', key: 'q', placeholder: 'Search…', width: 'wide' },
|
|
1657
|
+
* { type: 'select', key: 'status', label: 'Status', options: STATUS_OPTIONS },
|
|
1658
|
+
* { type: 'date', key: 'createdFrom', label: 'Created after' },
|
|
1735
1659
|
* ]}
|
|
1736
1660
|
* filterValues={filters}
|
|
1737
1661
|
* onFilterChange={(key, value) => {
|
|
@@ -1745,7 +1669,206 @@ interface ListPageProps<T> {
|
|
|
1745
1669
|
* );
|
|
1746
1670
|
* ```
|
|
1747
1671
|
*/
|
|
1748
|
-
declare function ListPage<T>({ title, description, bordered, actions, data, columns, getRowId, isLoading, loadingRowCount,
|
|
1672
|
+
declare function ListPage<T>({ title, description, bordered, actions, data, columns, getRowId, isLoading, loadingRowCount, filters, filterValues, onFilterChange, enableRowSelection, bulkActions, pagination, onPaginationChange, totalCount, pageSizeOptions, emptyState, noDataState, labels: labelsProp, className, }: ListPageProps<T>): react_jsx_runtime.JSX.Element;
|
|
1673
|
+
|
|
1674
|
+
interface MultiSelectLabels {
|
|
1675
|
+
/** Search input placeholder. Direction-aware default: `"Search…"` / `"بحث…"`. */
|
|
1676
|
+
search?: string;
|
|
1677
|
+
/** Empty-state text when the search matches nothing. Default: `"No results"` / `"لا نتائج"`. */
|
|
1678
|
+
empty?: string;
|
|
1679
|
+
}
|
|
1680
|
+
interface MultiSelectProps {
|
|
1681
|
+
variant?: SelectVariant;
|
|
1682
|
+
/** Visual size. Named `selectSize` to mirror `Select`. */
|
|
1683
|
+
selectSize?: SelectSize;
|
|
1684
|
+
/** Options to choose from. */
|
|
1685
|
+
options: SelectOption[];
|
|
1686
|
+
/** Placeholder shown when nothing is selected. */
|
|
1687
|
+
placeholder?: string;
|
|
1688
|
+
/** Controlled value (array of selected option values). */
|
|
1689
|
+
value?: string[];
|
|
1690
|
+
/** Initial value for uncontrolled usage. */
|
|
1691
|
+
defaultValue?: string[];
|
|
1692
|
+
/** Radix-style change handler — receives the new array directly. */
|
|
1693
|
+
onValueChange?: (value: string[]) => void;
|
|
1694
|
+
/** Compatibility handler (e.g. react-hook-form's `field.onChange`). Receives the array. */
|
|
1695
|
+
onChange?: (value: string[]) => void;
|
|
1696
|
+
/** Called when focus leaves the trigger. */
|
|
1697
|
+
onBlur?: () => void;
|
|
1698
|
+
/** Show the in-dropdown search input. Defaults to `true`. */
|
|
1699
|
+
searchable?: boolean;
|
|
1700
|
+
/** Collapse chips beyond this count into a `+N` badge. Default: show all (wrap). */
|
|
1701
|
+
maxTagCount?: number;
|
|
1702
|
+
/** Localized copy for search / empty-state. */
|
|
1703
|
+
labels?: MultiSelectLabels;
|
|
1704
|
+
/** Form name — renders a hidden input with the comma-joined value. */
|
|
1705
|
+
name?: string;
|
|
1706
|
+
/** Disables the trigger. */
|
|
1707
|
+
disabled?: boolean;
|
|
1708
|
+
/** Marks the field as required (for form validation). */
|
|
1709
|
+
required?: boolean;
|
|
1710
|
+
/** Override id (otherwise auto-generated via useId). */
|
|
1711
|
+
id?: string;
|
|
1712
|
+
/** Class applied to the trigger. */
|
|
1713
|
+
className?: string;
|
|
1714
|
+
/** Class applied to the popover content. */
|
|
1715
|
+
contentClassName?: string;
|
|
1716
|
+
'aria-invalid'?: boolean | 'true' | 'false';
|
|
1717
|
+
'aria-describedby'?: string;
|
|
1718
|
+
'aria-label'?: string;
|
|
1719
|
+
}
|
|
1720
|
+
/**
|
|
1721
|
+
* Multi-select control built on `@radix-ui/react-popover` (Radix Select is
|
|
1722
|
+
* single-select only). Selected values render as removable chips in the
|
|
1723
|
+
* trigger; the popup lists checkbox options with an optional search filter.
|
|
1724
|
+
* **RHF-friendly**: works inside `<Field>` — it coerces a non-array `value`
|
|
1725
|
+
* (e.g. `''`) to `[]` and emits the new array through `onChange`.
|
|
1726
|
+
*
|
|
1727
|
+
* @example Inside a Field (RHF + Zod)
|
|
1728
|
+
* ```tsx
|
|
1729
|
+
* <Field name="roles" label="Roles" required>
|
|
1730
|
+
* <MultiSelect options={ROLE_OPTIONS} placeholder="Pick roles" />
|
|
1731
|
+
* </Field>
|
|
1732
|
+
* ```
|
|
1733
|
+
*
|
|
1734
|
+
* @example Bare / controlled
|
|
1735
|
+
* ```tsx
|
|
1736
|
+
* <MultiSelect
|
|
1737
|
+
* options={ROLE_OPTIONS}
|
|
1738
|
+
* value={roles}
|
|
1739
|
+
* onValueChange={setRoles}
|
|
1740
|
+
* placeholder="Roles"
|
|
1741
|
+
* aria-label="Roles filter"
|
|
1742
|
+
* />
|
|
1743
|
+
* ```
|
|
1744
|
+
*/
|
|
1745
|
+
declare const MultiSelect: react.ForwardRefExoticComponent<MultiSelectProps & react.RefAttributes<HTMLDivElement>>;
|
|
1746
|
+
|
|
1747
|
+
/**
|
|
1748
|
+
* MultiSelect reuses the Select trigger look (`selectBaseClass` + variant) and
|
|
1749
|
+
* a Select-like popup. These constants cover only what's MultiSelect-specific:
|
|
1750
|
+
* the (auto-height) trigger, the chip row, the search row, and the option list.
|
|
1751
|
+
* Re-exported from `src/index.ts` so consumers can compose the same styling.
|
|
1752
|
+
*/
|
|
1753
|
+
/** Trigger height is `auto` (chips may wrap to multiple rows) unlike Select's fixed height. */
|
|
1754
|
+
declare const multiSelectTriggerSizeClass: Record<'sm' | 'md' | 'lg', string>;
|
|
1755
|
+
/** Wraps the chips / placeholder inside the trigger. */
|
|
1756
|
+
declare const multiSelectValueRowClass = "flex min-w-0 flex-1 flex-wrap items-center gap-1";
|
|
1757
|
+
/** A single selected-value chip (Badge-styled) with its remove button. */
|
|
1758
|
+
declare const multiSelectChipClass = "max-w-full gap-1 pe-1";
|
|
1759
|
+
/** The chip's "×" remove control. */
|
|
1760
|
+
declare const multiSelectChipRemoveClass = "inline-flex size-3.5 shrink-0 items-center justify-center rounded-sm hover:bg-foreground/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40";
|
|
1761
|
+
/** Popup content (the open dropdown panel) — width tracks the trigger. */
|
|
1762
|
+
declare const multiSelectContentClass = "z-50 w-(--radix-popover-trigger-width) overflow-hidden rounded-md border border-border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95";
|
|
1763
|
+
/** Search row pinned to the top of the popup. */
|
|
1764
|
+
declare const multiSelectSearchRowClass = "border-b border-border p-1";
|
|
1765
|
+
/** Scrollable option list. */
|
|
1766
|
+
declare const multiSelectListClass = "max-h-60 overflow-y-auto overflow-x-hidden p-1";
|
|
1767
|
+
/** A single option row (Checkbox + label). */
|
|
1768
|
+
declare const multiSelectOptionClass = "flex w-full cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none hover:bg-accent hover:text-accent-foreground has-[:focus-visible]:bg-accent has-[:disabled]:pointer-events-none has-[:disabled]:opacity-50";
|
|
1769
|
+
/** Empty-state row shown when the search matches nothing. */
|
|
1770
|
+
declare const multiSelectEmptyClass = "px-2 py-6 text-center text-sm text-muted-foreground";
|
|
1771
|
+
|
|
1772
|
+
type PageHeaderHeadingLevel = 'h1' | 'h2' | 'h3' | 'h4';
|
|
1773
|
+
/** Props passed to the routing-library `render` slot of the back button. */
|
|
1774
|
+
interface PageHeaderBackRenderProps {
|
|
1775
|
+
to?: LinkProps['to'];
|
|
1776
|
+
className?: string;
|
|
1777
|
+
children: ReactNode;
|
|
1778
|
+
onClick?: () => void;
|
|
1779
|
+
}
|
|
1780
|
+
interface PageHeaderBackProps {
|
|
1781
|
+
/** Visible label next to the arrow. Defaults to `"Back"`. */
|
|
1782
|
+
label?: ReactNode;
|
|
1783
|
+
/** Target to — renders a React Router `<Link>`. */
|
|
1784
|
+
to?: LinkProps['to'];
|
|
1785
|
+
/** Click handler — renders a `<button>` (or wraps the `render` element). */
|
|
1786
|
+
onClick?: () => void;
|
|
1787
|
+
/** Routing-library render prop (e.g. wrap a different link component). Wins over `to`. */
|
|
1788
|
+
render?: (props: PageHeaderBackRenderProps) => ReactElement;
|
|
1789
|
+
}
|
|
1790
|
+
interface PageHeaderProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {
|
|
1791
|
+
/** Page title (required). */
|
|
1792
|
+
title: ReactNode;
|
|
1793
|
+
/** Optional secondary text under the title. */
|
|
1794
|
+
description?: ReactNode;
|
|
1795
|
+
/** Slot above the title for breadcrumbs (e.g. `<Breadcrumbs items={…} />` or your own JSX). */
|
|
1796
|
+
breadcrumbs?: ReactNode;
|
|
1797
|
+
/** Optional back button rendered above the title row. */
|
|
1798
|
+
back?: PageHeaderBackProps;
|
|
1799
|
+
/** Slot on the trailing side of the title row — buttons, dropdowns, etc. */
|
|
1800
|
+
actions?: ReactNode;
|
|
1801
|
+
/** Heading level for the title element. Defaults to `'h1'`. */
|
|
1802
|
+
as?: PageHeaderHeadingLevel;
|
|
1803
|
+
/** Add a bottom border separator. Default: `false`. */
|
|
1804
|
+
bordered?: boolean;
|
|
1805
|
+
}
|
|
1806
|
+
/**
|
|
1807
|
+
* Top-of-page header — title, optional description, breadcrumbs, back button,
|
|
1808
|
+
* and actions slot. The first thing a user sees on any list / detail / form
|
|
1809
|
+
* page in a dashboard.
|
|
1810
|
+
*
|
|
1811
|
+
* Designed to drop directly into `<DashboardContent>` (or any padded page
|
|
1812
|
+
* container). Has no outer padding of its own — the surrounding layout owns
|
|
1813
|
+
* spacing.
|
|
1814
|
+
*
|
|
1815
|
+
* @example List page header with primary action
|
|
1816
|
+
* ```tsx
|
|
1817
|
+
* <PageHeader
|
|
1818
|
+
* title="Users"
|
|
1819
|
+
* description="Manage your team members and their roles."
|
|
1820
|
+
* actions={<Button onClick={openCreate}>Add user</Button>}
|
|
1821
|
+
* bordered
|
|
1822
|
+
* />
|
|
1823
|
+
* ```
|
|
1824
|
+
*
|
|
1825
|
+
* @example Detail page header with back button
|
|
1826
|
+
* ```tsx
|
|
1827
|
+
* <PageHeader
|
|
1828
|
+
* title={user.name}
|
|
1829
|
+
* description={user.email}
|
|
1830
|
+
* back={{
|
|
1831
|
+
* label: 'Users',
|
|
1832
|
+
* to: '/users',
|
|
1833
|
+
* }}
|
|
1834
|
+
* actions={
|
|
1835
|
+
* <>
|
|
1836
|
+
* <Button variant="outline">Edit</Button>
|
|
1837
|
+
* <Button variant="destructive">Delete</Button>
|
|
1838
|
+
* </>
|
|
1839
|
+
* }
|
|
1840
|
+
* />
|
|
1841
|
+
* ```
|
|
1842
|
+
*
|
|
1843
|
+
* @example With breadcrumbs slot
|
|
1844
|
+
* ```tsx
|
|
1845
|
+
* <PageHeader
|
|
1846
|
+
* breadcrumbs={
|
|
1847
|
+
* <nav aria-label="Breadcrumb">
|
|
1848
|
+
* <ol className="flex items-center gap-1">
|
|
1849
|
+
* <li><Link to="/">Home</Link></li>
|
|
1850
|
+
* <li>/</li>
|
|
1851
|
+
* <li>Users</li>
|
|
1852
|
+
* </ol>
|
|
1853
|
+
* </nav>
|
|
1854
|
+
* }
|
|
1855
|
+
* title="Users"
|
|
1856
|
+
* />
|
|
1857
|
+
* ```
|
|
1858
|
+
*/
|
|
1859
|
+
declare const PageHeader: react.ForwardRefExoticComponent<PageHeaderProps & react.RefAttributes<HTMLElement>>;
|
|
1860
|
+
|
|
1861
|
+
declare const pageHeaderBaseClass = "flex w-full flex-col gap-3";
|
|
1862
|
+
/** Adds a bottom border separator below the header. */
|
|
1863
|
+
declare const pageHeaderBorderedClass = "border-b border-border pb-4";
|
|
1864
|
+
declare const pageHeaderTitleRowClass = "flex flex-wrap items-start justify-between gap-3 sm:gap-4";
|
|
1865
|
+
declare const pageHeaderTitleBlockClass = "min-w-0 flex-1 space-y-1";
|
|
1866
|
+
declare const pageHeaderTitleClass = "text-2xl font-semibold tracking-tight text-foreground";
|
|
1867
|
+
declare const pageHeaderDescriptionClass = "text-sm text-muted-foreground";
|
|
1868
|
+
declare const pageHeaderActionsClass = "flex shrink-0 flex-wrap items-center gap-2";
|
|
1869
|
+
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";
|
|
1870
|
+
declare const pageHeaderBackIconClass = "size-4 shrink-0 rtl:rotate-180";
|
|
1871
|
+
declare const pageHeaderBreadcrumbsClass = "text-xs text-muted-foreground";
|
|
1749
1872
|
|
|
1750
1873
|
type RadioGroupSize = 'sm' | 'md' | 'lg';
|
|
1751
1874
|
/** Outer circle (radio button itself) — sized + bordered. */
|
|
@@ -2138,4 +2261,4 @@ declare function useDirection(): Direction;
|
|
|
2138
2261
|
|
|
2139
2262
|
declare function cn(...inputs: ClassValue[]): string;
|
|
2140
2263
|
|
|
2141
|
-
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 FormPageLabels, 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, Switch, type SwitchProps, type SwitchSize, Table, type TableLabels, 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 };
|
|
2264
|
+
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 FormPageLabels, 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 ListPageDateFilter, type ListPageEmptyState, type ListPageFilter, type ListPageFilterWidth, type ListPageLabels, type ListPageMultiSelectFilter, type ListPageProps, type ListPageSelectFilter, type ListPageTextFilter, MultiSelect, type MultiSelectLabels, type MultiSelectProps, 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, Switch, type SwitchProps, type SwitchSize, Table, type TableLabels, 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, multiSelectChipClass, multiSelectChipRemoveClass, multiSelectContentClass, multiSelectEmptyClass, multiSelectListClass, multiSelectOptionClass, multiSelectSearchRowClass, multiSelectTriggerSizeClass, multiSelectValueRowClass, 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 };
|