@dashforge/tw 0.11.0-beta → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -12
- package/COVERAGE.md +2 -2
- package/PARITY.md +7 -9
- package/PERFORMANCE.md +3 -4
- package/THEME-AUDIT.md +3 -4
- package/dist/components/Accordion/Accordion.d.ts +21 -0
- package/dist/components/Accordion/Accordion.d.ts.map +1 -0
- package/dist/components/Accordion/accordion.types.d.ts +74 -0
- package/dist/components/Accordion/accordion.types.d.ts.map +1 -0
- package/dist/components/Accordion/accordion.variants.d.ts +58 -0
- package/dist/components/Accordion/accordion.variants.d.ts.map +1 -0
- package/dist/components/AppShell/AppShell.d.ts +46 -0
- package/dist/components/AppShell/AppShell.d.ts.map +1 -0
- package/dist/components/AppShell/appShell.types.d.ts +62 -0
- package/dist/components/AppShell/appShell.types.d.ts.map +1 -0
- package/dist/components/AppShell/appShell.variants.d.ts +65 -0
- package/dist/components/AppShell/appShell.variants.d.ts.map +1 -0
- package/dist/components/AspectRatio/AspectRatio.d.ts +36 -0
- package/dist/components/AspectRatio/AspectRatio.d.ts.map +1 -0
- package/dist/components/AspectRatio/aspectRatio.types.d.ts +50 -0
- package/dist/components/AspectRatio/aspectRatio.types.d.ts.map +1 -0
- package/dist/components/Autocomplete/Autocomplete.d.ts +32 -0
- package/dist/components/Autocomplete/Autocomplete.d.ts.map +1 -0
- package/dist/components/Autocomplete/autocomplete.types.d.ts +214 -0
- package/dist/components/Autocomplete/autocomplete.types.d.ts.map +1 -0
- package/dist/components/Autocomplete/autocomplete.variants.d.ts +214 -0
- package/dist/components/Autocomplete/autocomplete.variants.d.ts.map +1 -0
- package/dist/components/Box/Box.d.ts +36 -0
- package/dist/components/Box/Box.d.ts.map +1 -0
- package/dist/components/Box/box.types.d.ts +54 -0
- package/dist/components/Box/box.types.d.ts.map +1 -0
- package/dist/components/Box/box.variants.d.ts +402 -0
- package/dist/components/Box/box.variants.d.ts.map +1 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +23 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts.map +1 -0
- package/dist/components/Breadcrumbs/breadcrumbs.types.d.ts +98 -0
- package/dist/components/Breadcrumbs/breadcrumbs.types.d.ts.map +1 -0
- package/dist/components/Breadcrumbs/breadcrumbs.variants.d.ts +85 -0
- package/dist/components/Breadcrumbs/breadcrumbs.variants.d.ts.map +1 -0
- package/dist/components/Button/Button.d.ts +44 -0
- package/dist/components/Button/Button.d.ts.map +1 -0
- package/dist/components/Button/button.types.d.ts +66 -0
- package/dist/components/Button/button.types.d.ts.map +1 -0
- package/dist/components/Button/button.variants.d.ts +104 -0
- package/dist/components/Button/button.variants.d.ts.map +1 -0
- package/dist/components/Calendar/Calendar.d.ts +14 -0
- package/dist/components/Calendar/Calendar.d.ts.map +1 -0
- package/dist/components/Calendar/calendar.types.d.ts +72 -0
- package/dist/components/Calendar/calendar.types.d.ts.map +1 -0
- package/dist/components/Calendar/calendar.variants.d.ts +99 -0
- package/dist/components/Calendar/calendar.variants.d.ts.map +1 -0
- package/dist/components/Checkbox/Checkbox.d.ts +31 -0
- package/dist/components/Checkbox/Checkbox.d.ts.map +1 -0
- package/dist/components/Checkbox/checkbox.types.d.ts +86 -0
- package/dist/components/Checkbox/checkbox.types.d.ts.map +1 -0
- package/dist/components/Checkbox/checkbox.variants.d.ts +109 -0
- package/dist/components/Checkbox/checkbox.variants.d.ts.map +1 -0
- package/dist/components/ConfirmDialog/ConfirmDialog.d.ts +38 -0
- package/dist/components/ConfirmDialog/ConfirmDialog.d.ts.map +1 -0
- package/dist/components/ConfirmDialog/confirmDialog.types.d.ts +80 -0
- package/dist/components/ConfirmDialog/confirmDialog.types.d.ts.map +1 -0
- package/dist/components/ConfirmDialog/confirmDialog.variants.d.ts +90 -0
- package/dist/components/ConfirmDialog/confirmDialog.variants.d.ts.map +1 -0
- package/dist/components/Container/Container.d.ts +35 -0
- package/dist/components/Container/Container.d.ts.map +1 -0
- package/dist/components/Container/container.types.d.ts +41 -0
- package/dist/components/Container/container.types.d.ts.map +1 -0
- package/dist/components/Container/container.variants.d.ts +93 -0
- package/dist/components/Container/container.variants.d.ts.map +1 -0
- package/dist/components/DataGrid/DataGrid.d.ts +29 -0
- package/dist/components/DataGrid/DataGrid.d.ts.map +1 -0
- package/dist/components/DataGrid/dataGrid.types.d.ts +214 -0
- package/dist/components/DataGrid/dataGrid.types.d.ts.map +1 -0
- package/dist/components/DataGrid/dataGrid.variants.d.ts +222 -0
- package/dist/components/DataGrid/dataGrid.variants.d.ts.map +1 -0
- package/dist/components/DataGrid/filters/ColumnFilters.d.ts +23 -0
- package/dist/components/DataGrid/filters/ColumnFilters.d.ts.map +1 -0
- package/dist/components/DataGrid/reorder/useColumnReorder.d.ts +50 -0
- package/dist/components/DataGrid/reorder/useColumnReorder.d.ts.map +1 -0
- package/dist/components/DataGrid/resize/useColumnResize.d.ts +39 -0
- package/dist/components/DataGrid/resize/useColumnResize.d.ts.map +1 -0
- package/dist/components/DataGrid/visibility/ColumnVisibilityMenu.d.ts +44 -0
- package/dist/components/DataGrid/visibility/ColumnVisibilityMenu.d.ts.map +1 -0
- package/dist/components/DatePicker/DatePicker.d.ts +14 -0
- package/dist/components/DatePicker/DatePicker.d.ts.map +1 -0
- package/dist/components/DatePicker/datePicker.types.d.ts +88 -0
- package/dist/components/DatePicker/datePicker.types.d.ts.map +1 -0
- package/dist/components/DatePicker/datePicker.variants.d.ts +97 -0
- package/dist/components/DatePicker/datePicker.variants.d.ts.map +1 -0
- package/dist/components/DateRangePicker/DateRangePicker.d.ts +13 -0
- package/dist/components/DateRangePicker/DateRangePicker.d.ts.map +1 -0
- package/dist/components/DateRangePicker/dateRangePicker.types.d.ts +85 -0
- package/dist/components/DateRangePicker/dateRangePicker.types.d.ts.map +1 -0
- package/dist/components/DateRangePicker/dateRangePicker.variants.d.ts +183 -0
- package/dist/components/DateRangePicker/dateRangePicker.variants.d.ts.map +1 -0
- package/dist/components/DateTimePicker/DateTimePicker.d.ts +13 -0
- package/dist/components/DateTimePicker/DateTimePicker.d.ts.map +1 -0
- package/dist/components/DateTimePicker/dateTimePicker.types.d.ts +90 -0
- package/dist/components/DateTimePicker/dateTimePicker.types.d.ts.map +1 -0
- package/dist/components/DateTimePicker/dateTimePicker.variants.d.ts +107 -0
- package/dist/components/DateTimePicker/dateTimePicker.variants.d.ts.map +1 -0
- package/dist/components/Dialog/Dialog.d.ts +17 -0
- package/dist/components/Dialog/Dialog.d.ts.map +1 -0
- package/dist/components/Dialog/dialog.types.d.ts +75 -0
- package/dist/components/Dialog/dialog.types.d.ts.map +1 -0
- package/dist/components/Dialog/dialog.variants.d.ts +80 -0
- package/dist/components/Dialog/dialog.variants.d.ts.map +1 -0
- package/dist/components/Divider/Divider.d.ts +50 -0
- package/dist/components/Divider/Divider.d.ts.map +1 -0
- package/dist/components/Divider/divider.types.d.ts +47 -0
- package/dist/components/Divider/divider.types.d.ts.map +1 -0
- package/dist/components/Divider/divider.variants.d.ts +129 -0
- package/dist/components/Divider/divider.variants.d.ts.map +1 -0
- package/dist/components/Grid/Grid.d.ts +32 -0
- package/dist/components/Grid/Grid.d.ts.map +1 -0
- package/dist/components/Grid/grid.types.d.ts +103 -0
- package/dist/components/Grid/grid.types.d.ts.map +1 -0
- package/dist/components/Grid/grid.variants.d.ts +453 -0
- package/dist/components/Grid/grid.variants.d.ts.map +1 -0
- package/dist/components/LeftNav/LeftNav.d.ts +34 -0
- package/dist/components/LeftNav/LeftNav.d.ts.map +1 -0
- package/dist/components/LeftNav/leftNav.types.d.ts +136 -0
- package/dist/components/LeftNav/leftNav.types.d.ts.map +1 -0
- package/dist/components/LeftNav/leftNav.variants.d.ts +143 -0
- package/dist/components/LeftNav/leftNav.variants.d.ts.map +1 -0
- package/dist/components/NumberField/NumberField.d.ts +18 -0
- package/dist/components/NumberField/NumberField.d.ts.map +1 -0
- package/dist/components/NumberField/numberField.types.d.ts +79 -0
- package/dist/components/NumberField/numberField.types.d.ts.map +1 -0
- package/dist/components/NumberField/numberField.variants.d.ts +169 -0
- package/dist/components/NumberField/numberField.variants.d.ts.map +1 -0
- package/dist/components/OTPField/OTPField.d.ts +25 -0
- package/dist/components/OTPField/OTPField.d.ts.map +1 -0
- package/dist/components/OTPField/otpField.types.d.ts +74 -0
- package/dist/components/OTPField/otpField.types.d.ts.map +1 -0
- package/dist/components/OTPField/otpField.variants.d.ts +105 -0
- package/dist/components/OTPField/otpField.variants.d.ts.map +1 -0
- package/dist/components/Pagination/Pagination.d.ts +32 -0
- package/dist/components/Pagination/Pagination.d.ts.map +1 -0
- package/dist/components/Pagination/pagination.helpers.d.ts +23 -0
- package/dist/components/Pagination/pagination.helpers.d.ts.map +1 -0
- package/dist/components/Pagination/pagination.types.d.ts +120 -0
- package/dist/components/Pagination/pagination.types.d.ts.map +1 -0
- package/dist/components/Pagination/pagination.variants.d.ts +150 -0
- package/dist/components/Pagination/pagination.variants.d.ts.map +1 -0
- package/dist/components/Popover/Popover.d.ts +15 -0
- package/dist/components/Popover/Popover.d.ts.map +1 -0
- package/dist/components/Popover/popover.types.d.ts +45 -0
- package/dist/components/Popover/popover.types.d.ts.map +1 -0
- package/dist/components/Popover/popover.variants.d.ts +34 -0
- package/dist/components/Popover/popover.variants.d.ts.map +1 -0
- package/dist/components/RadioGroup/RadioGroup.d.ts +35 -0
- package/dist/components/RadioGroup/RadioGroup.d.ts.map +1 -0
- package/dist/components/RadioGroup/radioGroup.types.d.ts +103 -0
- package/dist/components/RadioGroup/radioGroup.types.d.ts.map +1 -0
- package/dist/components/RadioGroup/radioGroup.variants.d.ts +166 -0
- package/dist/components/RadioGroup/radioGroup.variants.d.ts.map +1 -0
- package/dist/components/Skeleton/Skeleton.d.ts +23 -0
- package/dist/components/Skeleton/Skeleton.d.ts.map +1 -0
- package/dist/components/Skeleton/skeleton.types.d.ts +56 -0
- package/dist/components/Skeleton/skeleton.types.d.ts.map +1 -0
- package/dist/components/Skeleton/skeleton.variants.d.ts +110 -0
- package/dist/components/Skeleton/skeleton.variants.d.ts.map +1 -0
- package/dist/components/Snackbar/Snackbar.d.ts +37 -0
- package/dist/components/Snackbar/Snackbar.d.ts.map +1 -0
- package/dist/components/Snackbar/snackbar.types.d.ts +86 -0
- package/dist/components/Snackbar/snackbar.types.d.ts.map +1 -0
- package/dist/components/Snackbar/snackbar.variants.d.ts +153 -0
- package/dist/components/Snackbar/snackbar.variants.d.ts.map +1 -0
- package/dist/components/Stack/Stack.d.ts +24 -0
- package/dist/components/Stack/Stack.d.ts.map +1 -0
- package/dist/components/Stack/stack.types.d.ts +61 -0
- package/dist/components/Stack/stack.types.d.ts.map +1 -0
- package/dist/components/Stack/stack.variants.d.ts +163 -0
- package/dist/components/Stack/stack.variants.d.ts.map +1 -0
- package/dist/components/Switch/Switch.d.ts +15 -0
- package/dist/components/Switch/Switch.d.ts.map +1 -0
- package/dist/components/Switch/switch.types.d.ts +47 -0
- package/dist/components/Switch/switch.types.d.ts.map +1 -0
- package/dist/components/Switch/switch.variants.d.ts +105 -0
- package/dist/components/Switch/switch.variants.d.ts.map +1 -0
- package/dist/components/Table/Table.d.ts +24 -0
- package/dist/components/Table/Table.d.ts.map +1 -0
- package/dist/components/Table/cells/RenderButton.d.ts +13 -0
- package/dist/components/Table/cells/RenderButton.d.ts.map +1 -0
- package/dist/components/Table/cells/RenderChip.d.ts +80 -0
- package/dist/components/Table/cells/RenderChip.d.ts.map +1 -0
- package/dist/components/Table/cells/RenderText.d.ts +21 -0
- package/dist/components/Table/cells/RenderText.d.ts.map +1 -0
- package/dist/components/Table/cells/RenderTwoLine.d.ts +20 -0
- package/dist/components/Table/cells/RenderTwoLine.d.ts.map +1 -0
- package/dist/components/Table/cells/RowActionsMenu.d.ts +36 -0
- package/dist/components/Table/cells/RowActionsMenu.d.ts.map +1 -0
- package/dist/components/Table/cells/index.d.ts +11 -0
- package/dist/components/Table/cells/index.d.ts.map +1 -0
- package/dist/components/Table/table.types.d.ts +399 -0
- package/dist/components/Table/table.types.d.ts.map +1 -0
- package/dist/components/Table/table.variants.d.ts +285 -0
- package/dist/components/Table/table.variants.d.ts.map +1 -0
- package/dist/components/Tabs/Tabs.d.ts +19 -0
- package/dist/components/Tabs/Tabs.d.ts.map +1 -0
- package/dist/components/Tabs/tabs.types.d.ts +61 -0
- package/dist/components/Tabs/tabs.types.d.ts.map +1 -0
- package/dist/components/Tabs/tabs.variants.d.ts +82 -0
- package/dist/components/Tabs/tabs.variants.d.ts.map +1 -0
- package/dist/components/Tabs/useTabs.d.ts +55 -0
- package/dist/components/Tabs/useTabs.d.ts.map +1 -0
- package/dist/components/TextField/TextField.d.ts +25 -0
- package/dist/components/TextField/TextField.d.ts.map +1 -0
- package/dist/components/TextField/textField.types.d.ts +98 -0
- package/dist/components/TextField/textField.types.d.ts.map +1 -0
- package/dist/components/TextField/textField.variants.d.ts +166 -0
- package/dist/components/TextField/textField.variants.d.ts.map +1 -0
- package/dist/components/Textarea/Textarea.d.ts +16 -0
- package/dist/components/Textarea/Textarea.d.ts.map +1 -0
- package/dist/components/Textarea/textarea.types.d.ts +63 -0
- package/dist/components/Textarea/textarea.types.d.ts.map +1 -0
- package/dist/components/Textarea/textarea.variants.d.ts +197 -0
- package/dist/components/Textarea/textarea.variants.d.ts.map +1 -0
- package/dist/components/TimePicker/TimePicker.d.ts +12 -0
- package/dist/components/TimePicker/TimePicker.d.ts.map +1 -0
- package/dist/components/TimePicker/timePicker.types.d.ts +80 -0
- package/dist/components/TimePicker/timePicker.types.d.ts.map +1 -0
- package/dist/components/TimePicker/timePicker.variants.d.ts +103 -0
- package/dist/components/TimePicker/timePicker.variants.d.ts.map +1 -0
- package/dist/components/Tooltip/Tooltip.d.ts +29 -0
- package/dist/components/Tooltip/Tooltip.d.ts.map +1 -0
- package/dist/components/Tooltip/tooltip.types.d.ts +47 -0
- package/dist/components/Tooltip/tooltip.types.d.ts.map +1 -0
- package/dist/components/Tooltip/tooltip.variants.d.ts +34 -0
- package/dist/components/Tooltip/tooltip.variants.d.ts.map +1 -0
- package/dist/components/TopBar/TopBar.d.ts +33 -0
- package/dist/components/TopBar/TopBar.d.ts.map +1 -0
- package/dist/components/TopBar/topBar.types.d.ts +49 -0
- package/dist/components/TopBar/topBar.types.d.ts.map +1 -0
- package/dist/components/TopBar/topBar.variants.d.ts +79 -0
- package/dist/components/TopBar/topBar.variants.d.ts.map +1 -0
- package/dist/components/Typography/Typography.d.ts +42 -0
- package/dist/components/Typography/Typography.d.ts.map +1 -0
- package/dist/components/Typography/typography.types.d.ts +61 -0
- package/dist/components/Typography/typography.types.d.ts.map +1 -0
- package/dist/components/Typography/typography.variants.d.ts +167 -0
- package/dist/components/Typography/typography.variants.d.ts.map +1 -0
- package/dist/components/VisuallyHidden/VisuallyHidden.d.ts +42 -0
- package/dist/components/VisuallyHidden/VisuallyHidden.d.ts.map +1 -0
- package/dist/components/VisuallyHidden/visuallyHidden.types.d.ts +42 -0
- package/dist/components/VisuallyHidden/visuallyHidden.types.d.ts.map +1 -0
- package/dist/components/_shared/data/getNestedValue.d.ts +20 -0
- package/dist/components/_shared/data/getNestedValue.d.ts.map +1 -0
- package/dist/components/_shared/data/useColumnAutoDetect.d.ts +45 -0
- package/dist/components/_shared/data/useColumnAutoDetect.d.ts.map +1 -0
- package/dist/components/_shared/data/useControllableState.d.ts +23 -0
- package/dist/components/_shared/data/useControllableState.d.ts.map +1 -0
- package/dist/components/_shared/data/useDebouncedValue.d.ts +10 -0
- package/dist/components/_shared/data/useDebouncedValue.d.ts.map +1 -0
- package/dist/components/_shared/data/useTableFilter.d.ts +36 -0
- package/dist/components/_shared/data/useTableFilter.d.ts.map +1 -0
- package/dist/components/_shared/data/useTableSearch.d.ts +23 -0
- package/dist/components/_shared/data/useTableSearch.d.ts.map +1 -0
- package/dist/components/_shared/data/useTableSelection.d.ts +25 -0
- package/dist/components/_shared/data/useTableSelection.d.ts.map +1 -0
- package/dist/components/_shared/data/useTableSort.d.ts +20 -0
- package/dist/components/_shared/data/useTableSort.d.ts.map +1 -0
- package/dist/components/_shared/data/useVirtualizer.d.ts +107 -0
- package/dist/components/_shared/data/useVirtualizer.d.ts.map +1 -0
- package/dist/components/_shared/resolveValidationState.d.ts +42 -0
- package/dist/components/_shared/resolveValidationState.d.ts.map +1 -0
- package/dist/hooks/useAccessState.d.ts +37 -0
- package/dist/hooks/useAccessState.d.ts.map +1 -0
- package/dist/index.d.ts +146 -1
- package/dist/index.d.ts.map +1 -0
- package/dist/index.esm.js +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/tsconfig.lib.tsbuildinfo +1 -0
- package/dist/utils/cn.d.ts +26 -0
- package/dist/utils/cn.d.ts.map +1 -0
- package/package.json +7 -7
- package/src/components/TextField/TextField.test.tsx +5 -1
- package/vite.config.ts +8 -0
- package/vitest.config.mts +8 -1
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { Engine } from '@dashforge/ui-core';
|
|
3
|
+
import type { AccessRequirement } from '@dashforge/rbac';
|
|
4
|
+
import type { AutocompleteVariants } from './autocomplete.variants.js';
|
|
5
|
+
/**
|
|
6
|
+
* Default `{ value, label, disabled? }` option shape.
|
|
7
|
+
*
|
|
8
|
+
* The simplest shape and the one used by the component when no
|
|
9
|
+
* `getOptionValue` / `getOptionLabel` props are provided. For richer
|
|
10
|
+
* option shapes (e.g., `{ id, name, country, ... }`) make the component
|
|
11
|
+
* generic by passing `<TOption>` and providing the accessors:
|
|
12
|
+
*
|
|
13
|
+
* ```tsx
|
|
14
|
+
* type User = { id: string; name: string; admin?: boolean };
|
|
15
|
+
*
|
|
16
|
+
* <Autocomplete<User>
|
|
17
|
+
* name="owner"
|
|
18
|
+
* options={users}
|
|
19
|
+
* getOptionValue={(u) => u.id}
|
|
20
|
+
* getOptionLabel={(u) => u.name}
|
|
21
|
+
* getOptionDisabled={(u) => !u.admin}
|
|
22
|
+
* />
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export interface AutocompleteOption {
|
|
26
|
+
/** Value persisted on the form. */
|
|
27
|
+
value: string;
|
|
28
|
+
/** Display label (string or any React node). */
|
|
29
|
+
label: ReactNode;
|
|
30
|
+
/** Per-option explicit disable. */
|
|
31
|
+
disabled?: boolean;
|
|
32
|
+
}
|
|
33
|
+
export interface AutocompleteSlotProps {
|
|
34
|
+
root?: {
|
|
35
|
+
className?: string;
|
|
36
|
+
};
|
|
37
|
+
label?: {
|
|
38
|
+
className?: string;
|
|
39
|
+
};
|
|
40
|
+
requiredMark?: {
|
|
41
|
+
className?: string;
|
|
42
|
+
};
|
|
43
|
+
inputWrapper?: {
|
|
44
|
+
className?: string;
|
|
45
|
+
};
|
|
46
|
+
input?: {
|
|
47
|
+
className?: string;
|
|
48
|
+
};
|
|
49
|
+
trigger?: {
|
|
50
|
+
className?: string;
|
|
51
|
+
};
|
|
52
|
+
clearButton?: {
|
|
53
|
+
className?: string;
|
|
54
|
+
};
|
|
55
|
+
popover?: {
|
|
56
|
+
className?: string;
|
|
57
|
+
};
|
|
58
|
+
listBox?: {
|
|
59
|
+
className?: string;
|
|
60
|
+
};
|
|
61
|
+
listItem?: {
|
|
62
|
+
className?: string;
|
|
63
|
+
};
|
|
64
|
+
emptyState?: {
|
|
65
|
+
className?: string;
|
|
66
|
+
};
|
|
67
|
+
helperText?: {
|
|
68
|
+
className?: string;
|
|
69
|
+
};
|
|
70
|
+
errorText?: {
|
|
71
|
+
className?: string;
|
|
72
|
+
};
|
|
73
|
+
/** Wrapper around the chip list (multi-select only). */
|
|
74
|
+
chipsList?: {
|
|
75
|
+
className?: string;
|
|
76
|
+
};
|
|
77
|
+
/** Individual chip displayed in multi-select. */
|
|
78
|
+
chip?: {
|
|
79
|
+
className?: string;
|
|
80
|
+
};
|
|
81
|
+
/** `×` button on a chip. */
|
|
82
|
+
chipRemove?: {
|
|
83
|
+
className?: string;
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Union of the value shapes `<Autocomplete>` accepts.
|
|
88
|
+
*
|
|
89
|
+
* - **Single-select (default)**: `string | null`
|
|
90
|
+
* - **Multi-select** (`multiple` prop): `string[] | null`
|
|
91
|
+
*
|
|
92
|
+
* `null` means "no selection" in both modes — a multi-select with no
|
|
93
|
+
* picks emits an empty array on first commit, then keeps emitting arrays.
|
|
94
|
+
*/
|
|
95
|
+
export type AutocompleteValue = string | string[] | null;
|
|
96
|
+
/**
|
|
97
|
+
* Props for `<Autocomplete>`.
|
|
98
|
+
*
|
|
99
|
+
* Bridge-integrated single-select combobox with full ARIA combobox
|
|
100
|
+
* a11y, keyboard navigation, and Form Closure v1 error gating.
|
|
101
|
+
*
|
|
102
|
+
* Mirrors the MUI-side `@dashforge/ui/Autocomplete` at the bridge
|
|
103
|
+
* level — same `name` / `rules` / `visibleWhen` / `access` semantics,
|
|
104
|
+
* same StrictMode-safe unregister-on-unmount.
|
|
105
|
+
*
|
|
106
|
+
* @typeParam TOption Shape of an option. Defaults to
|
|
107
|
+
* `AutocompleteOption` (`{ value, label, disabled? }`).
|
|
108
|
+
* Pass `<TOption>` + `getOptionValue` / `getOptionLabel`
|
|
109
|
+
* for arbitrary domain types.
|
|
110
|
+
*/
|
|
111
|
+
export interface AutocompleteProps<TOption = AutocompleteOption> extends AutocompleteVariants {
|
|
112
|
+
name: string;
|
|
113
|
+
rules?: unknown;
|
|
114
|
+
options: TOption[];
|
|
115
|
+
label?: ReactNode;
|
|
116
|
+
helperText?: ReactNode;
|
|
117
|
+
required?: boolean;
|
|
118
|
+
error?: boolean;
|
|
119
|
+
disabled?: boolean;
|
|
120
|
+
/** Placeholder shown when the input is empty. */
|
|
121
|
+
placeholder?: string;
|
|
122
|
+
/** Engine predicate — field not rendered when it returns `false`. */
|
|
123
|
+
visibleWhen?: (engine: Engine) => boolean;
|
|
124
|
+
/** RBAC access requirement. */
|
|
125
|
+
access?: AccessRequirement;
|
|
126
|
+
/** Root className shortcut. */
|
|
127
|
+
sx?: string;
|
|
128
|
+
/** Per-slot className overrides. */
|
|
129
|
+
slotProps?: AutocompleteSlotProps;
|
|
130
|
+
/** Controlled value (form mode reads from the bridge if omitted). */
|
|
131
|
+
value?: AutocompleteValue;
|
|
132
|
+
/** Default value for uncontrolled mode (no-op in form mode). */
|
|
133
|
+
defaultValue?: AutocompleteValue;
|
|
134
|
+
/** Fires when the user picks an option (after bridge update in form mode). */
|
|
135
|
+
onValueChange?: (value: AutocompleteValue) => void;
|
|
136
|
+
/** Fallback text when no option matches the typed filter. */
|
|
137
|
+
emptyMessage?: string;
|
|
138
|
+
/**
|
|
139
|
+
* Multi-select mode. When `true`:
|
|
140
|
+
*
|
|
141
|
+
* - `value` / `defaultValue` accept `string[]` (or `null`).
|
|
142
|
+
* - Picks are toggled rather than replaced; the popover stays open.
|
|
143
|
+
* - Selected items render as chips inside the input wrapper.
|
|
144
|
+
* - Backspace at the start of an empty input removes the last chip.
|
|
145
|
+
* - The clear button (`×`) clears the entire selection.
|
|
146
|
+
*/
|
|
147
|
+
multiple?: boolean;
|
|
148
|
+
/**
|
|
149
|
+
* Allow committing arbitrary strings (not just option values).
|
|
150
|
+
*
|
|
151
|
+
* When `true`:
|
|
152
|
+
* - **Enter** commits the typed text as the value when no option
|
|
153
|
+
* row is highlighted (or no rows match the filter).
|
|
154
|
+
* - **Blur** commits the typed text the same way, unless the text
|
|
155
|
+
* exactly matches an existing option's label (in which case the
|
|
156
|
+
* option's value snaps in).
|
|
157
|
+
* - In multi mode, each free-solo commit adds a new chip whose key
|
|
158
|
+
* and label are the typed string.
|
|
159
|
+
*
|
|
160
|
+
* Free-solo is independent of `multiple` — works in both modes.
|
|
161
|
+
*/
|
|
162
|
+
freeSolo?: boolean;
|
|
163
|
+
/**
|
|
164
|
+
* Async option loader. Called (debounced by `loadDebounceMs`) every
|
|
165
|
+
* time the user types in the input. Results replace the static
|
|
166
|
+
* `options` prop while the user is actively filtering.
|
|
167
|
+
*
|
|
168
|
+
* Return a promise that resolves with the new option list. Reject /
|
|
169
|
+
* throw to surface a generic empty state.
|
|
170
|
+
*
|
|
171
|
+
* @example
|
|
172
|
+
* ```tsx
|
|
173
|
+
* <Autocomplete
|
|
174
|
+
* name="user"
|
|
175
|
+
* options={[]}
|
|
176
|
+
* loadOptions={async (q) => {
|
|
177
|
+
* const res = await fetch(`/api/users?q=${q}`);
|
|
178
|
+
* return res.ok ? res.json() : [];
|
|
179
|
+
* }}
|
|
180
|
+
* />
|
|
181
|
+
* ```
|
|
182
|
+
*/
|
|
183
|
+
loadOptions?: (query: string) => Promise<TOption[]>;
|
|
184
|
+
/**
|
|
185
|
+
* Debounce window (ms) for `loadOptions`. The loader fires after the
|
|
186
|
+
* user stops typing for this long.
|
|
187
|
+
* @default 250
|
|
188
|
+
*/
|
|
189
|
+
loadDebounceMs?: number;
|
|
190
|
+
/** Text displayed in the popover while a fetch is in flight. */
|
|
191
|
+
loadingMessage?: ReactNode;
|
|
192
|
+
/**
|
|
193
|
+
* Extract the persistable value (string) from an option.
|
|
194
|
+
* @default `(o) => (o as AutocompleteOption).value`
|
|
195
|
+
*/
|
|
196
|
+
getOptionValue?: (option: TOption) => string;
|
|
197
|
+
/**
|
|
198
|
+
* Extract the display label from an option.
|
|
199
|
+
* @default `(o) => (o as AutocompleteOption).label`
|
|
200
|
+
*/
|
|
201
|
+
getOptionLabel?: (option: TOption) => ReactNode;
|
|
202
|
+
/**
|
|
203
|
+
* Per-option disabled flag.
|
|
204
|
+
* @default `(o) => Boolean((o as AutocompleteOption).disabled)`
|
|
205
|
+
*/
|
|
206
|
+
getOptionDisabled?: (option: TOption) => boolean;
|
|
207
|
+
/**
|
|
208
|
+
* Unique React key for an option. Defaults to `getOptionValue`.
|
|
209
|
+
* Override if your `value` strings can collide across distinct
|
|
210
|
+
* option records (rare).
|
|
211
|
+
*/
|
|
212
|
+
getOptionKey?: (option: TOption) => string;
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=autocomplete.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autocomplete.types.d.ts","sourceRoot":"","sources":["../../../src/components/Autocomplete/autocomplete.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,kBAAkB;IACjC,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,KAAK,EAAE,SAAS,CAAC;IACjB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,KAAK,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/B,YAAY,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,YAAY,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,KAAK,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/B,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,WAAW,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,QAAQ,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,UAAU,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,UAAU,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,SAAS,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,wDAAwD;IACxD,SAAS,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,iDAAiD;IACjD,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,4BAA4B;IAC5B,UAAU,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACrC;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;AAEzD;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,iBAAiB,CAAC,OAAO,GAAG,kBAAkB,CAC7D,SAAQ,oBAAoB;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1C,+BAA+B;IAC/B,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,+BAA+B;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,oCAAoC;IACpC,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC,qEAAqE;IACrE,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,gEAAgE;IAChE,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,8EAA8E;IAC9E,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACnD,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IAItB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAInB;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAInB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACpD;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,cAAc,CAAC,EAAE,SAAS,CAAC;IAI3B;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,MAAM,CAAC;IAC7C;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,SAAS,CAAC;IAChD;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IACjD;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,MAAM,CAAC;CAC5C"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import { type VariantProps } from 'tailwind-variants';
|
|
2
|
+
/**
|
|
3
|
+
* Tailwind-variants recipe for `<Autocomplete>` with slots.
|
|
4
|
+
*
|
|
5
|
+
* Slots:
|
|
6
|
+
* - `root` — outer wrapper (label + combobox + helper/error)
|
|
7
|
+
* - `label` — text label above the input
|
|
8
|
+
* - `requiredMark` — red `*` for required fields
|
|
9
|
+
* - `inputWrapper` — surface holding the input + clear/trigger buttons
|
|
10
|
+
* - `input` — the typeable text input
|
|
11
|
+
* - `trigger` — caret / chevron button that opens the popover
|
|
12
|
+
* - `clearButton` — `×` button to clear the current selection
|
|
13
|
+
* - `popover` — floating panel containing the option list
|
|
14
|
+
* - `listBox` — list element wrapping the options
|
|
15
|
+
* - `listItem` — single option row
|
|
16
|
+
* - `emptyState` — fallback when no options match the filter
|
|
17
|
+
* - `helperText` — descriptive line below the input
|
|
18
|
+
* - `errorText` — semantic counterpart for error mode
|
|
19
|
+
* - `chipsList` — wrapper around selected chips (multi-select only)
|
|
20
|
+
* - `chip` — individual selected chip
|
|
21
|
+
* - `chipRemove` — `×` button on a chip
|
|
22
|
+
*/
|
|
23
|
+
export declare const autocompleteVariants: import("tailwind-variants").TVReturnType<{
|
|
24
|
+
size: {
|
|
25
|
+
sm: {
|
|
26
|
+
inputWrapper: string;
|
|
27
|
+
input: string;
|
|
28
|
+
trigger: string;
|
|
29
|
+
clearButton: string;
|
|
30
|
+
};
|
|
31
|
+
md: {
|
|
32
|
+
inputWrapper: string;
|
|
33
|
+
input: string;
|
|
34
|
+
trigger: string;
|
|
35
|
+
clearButton: string;
|
|
36
|
+
};
|
|
37
|
+
lg: {
|
|
38
|
+
inputWrapper: string;
|
|
39
|
+
input: string;
|
|
40
|
+
trigger: string;
|
|
41
|
+
clearButton: string;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
layout: {
|
|
45
|
+
stacked: {
|
|
46
|
+
root: string;
|
|
47
|
+
};
|
|
48
|
+
inline: {
|
|
49
|
+
root: string;
|
|
50
|
+
label: string;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
error: {
|
|
54
|
+
true: {
|
|
55
|
+
inputWrapper: string;
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
fullWidth: {
|
|
59
|
+
true: {
|
|
60
|
+
root: string;
|
|
61
|
+
inputWrapper: string;
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
disabled: {
|
|
65
|
+
true: {
|
|
66
|
+
inputWrapper: string;
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
}, {
|
|
70
|
+
root: string;
|
|
71
|
+
label: string;
|
|
72
|
+
requiredMark: string;
|
|
73
|
+
inputWrapper: string[];
|
|
74
|
+
input: string[];
|
|
75
|
+
trigger: string[];
|
|
76
|
+
clearButton: string[];
|
|
77
|
+
popover: string[];
|
|
78
|
+
listBox: string;
|
|
79
|
+
listItem: string[];
|
|
80
|
+
emptyState: string;
|
|
81
|
+
helperText: string;
|
|
82
|
+
errorText: string;
|
|
83
|
+
chipsList: string;
|
|
84
|
+
chip: string[];
|
|
85
|
+
chipRemove: string[];
|
|
86
|
+
}, undefined, {
|
|
87
|
+
size: {
|
|
88
|
+
sm: {
|
|
89
|
+
inputWrapper: string;
|
|
90
|
+
input: string;
|
|
91
|
+
trigger: string;
|
|
92
|
+
clearButton: string;
|
|
93
|
+
};
|
|
94
|
+
md: {
|
|
95
|
+
inputWrapper: string;
|
|
96
|
+
input: string;
|
|
97
|
+
trigger: string;
|
|
98
|
+
clearButton: string;
|
|
99
|
+
};
|
|
100
|
+
lg: {
|
|
101
|
+
inputWrapper: string;
|
|
102
|
+
input: string;
|
|
103
|
+
trigger: string;
|
|
104
|
+
clearButton: string;
|
|
105
|
+
};
|
|
106
|
+
};
|
|
107
|
+
layout: {
|
|
108
|
+
stacked: {
|
|
109
|
+
root: string;
|
|
110
|
+
};
|
|
111
|
+
inline: {
|
|
112
|
+
root: string;
|
|
113
|
+
label: string;
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
error: {
|
|
117
|
+
true: {
|
|
118
|
+
inputWrapper: string;
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
fullWidth: {
|
|
122
|
+
true: {
|
|
123
|
+
root: string;
|
|
124
|
+
inputWrapper: string;
|
|
125
|
+
};
|
|
126
|
+
};
|
|
127
|
+
disabled: {
|
|
128
|
+
true: {
|
|
129
|
+
inputWrapper: string;
|
|
130
|
+
};
|
|
131
|
+
};
|
|
132
|
+
}, {
|
|
133
|
+
root: string;
|
|
134
|
+
label: string;
|
|
135
|
+
requiredMark: string;
|
|
136
|
+
inputWrapper: string[];
|
|
137
|
+
input: string[];
|
|
138
|
+
trigger: string[];
|
|
139
|
+
clearButton: string[];
|
|
140
|
+
popover: string[];
|
|
141
|
+
listBox: string;
|
|
142
|
+
listItem: string[];
|
|
143
|
+
emptyState: string;
|
|
144
|
+
helperText: string;
|
|
145
|
+
errorText: string;
|
|
146
|
+
chipsList: string;
|
|
147
|
+
chip: string[];
|
|
148
|
+
chipRemove: string[];
|
|
149
|
+
}, import("tailwind-variants").TVReturnType<{
|
|
150
|
+
size: {
|
|
151
|
+
sm: {
|
|
152
|
+
inputWrapper: string;
|
|
153
|
+
input: string;
|
|
154
|
+
trigger: string;
|
|
155
|
+
clearButton: string;
|
|
156
|
+
};
|
|
157
|
+
md: {
|
|
158
|
+
inputWrapper: string;
|
|
159
|
+
input: string;
|
|
160
|
+
trigger: string;
|
|
161
|
+
clearButton: string;
|
|
162
|
+
};
|
|
163
|
+
lg: {
|
|
164
|
+
inputWrapper: string;
|
|
165
|
+
input: string;
|
|
166
|
+
trigger: string;
|
|
167
|
+
clearButton: string;
|
|
168
|
+
};
|
|
169
|
+
};
|
|
170
|
+
layout: {
|
|
171
|
+
stacked: {
|
|
172
|
+
root: string;
|
|
173
|
+
};
|
|
174
|
+
inline: {
|
|
175
|
+
root: string;
|
|
176
|
+
label: string;
|
|
177
|
+
};
|
|
178
|
+
};
|
|
179
|
+
error: {
|
|
180
|
+
true: {
|
|
181
|
+
inputWrapper: string;
|
|
182
|
+
};
|
|
183
|
+
};
|
|
184
|
+
fullWidth: {
|
|
185
|
+
true: {
|
|
186
|
+
root: string;
|
|
187
|
+
inputWrapper: string;
|
|
188
|
+
};
|
|
189
|
+
};
|
|
190
|
+
disabled: {
|
|
191
|
+
true: {
|
|
192
|
+
inputWrapper: string;
|
|
193
|
+
};
|
|
194
|
+
};
|
|
195
|
+
}, {
|
|
196
|
+
root: string;
|
|
197
|
+
label: string;
|
|
198
|
+
requiredMark: string;
|
|
199
|
+
inputWrapper: string[];
|
|
200
|
+
input: string[];
|
|
201
|
+
trigger: string[];
|
|
202
|
+
clearButton: string[];
|
|
203
|
+
popover: string[];
|
|
204
|
+
listBox: string;
|
|
205
|
+
listItem: string[];
|
|
206
|
+
emptyState: string;
|
|
207
|
+
helperText: string;
|
|
208
|
+
errorText: string;
|
|
209
|
+
chipsList: string;
|
|
210
|
+
chip: string[];
|
|
211
|
+
chipRemove: string[];
|
|
212
|
+
}, undefined, unknown, unknown, undefined>>;
|
|
213
|
+
export type AutocompleteVariants = VariantProps<typeof autocompleteVariants>;
|
|
214
|
+
//# sourceMappingURL=autocomplete.variants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autocomplete.variants.d.ts","sourceRoot":"","sources":["../../../src/components/Autocomplete/autocomplete.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAmH/B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,YAAY,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { BoxProps } from './box.types.js';
|
|
2
|
+
/**
|
|
3
|
+
* `<Box>` — the surface primitive of @dashforge/tw.
|
|
4
|
+
*
|
|
5
|
+
* What it IS:
|
|
6
|
+
* A polymorphic container with typed surface variants (plain /
|
|
7
|
+
* outlined / elevated / soft / solid) × 7 intent colours, plus
|
|
8
|
+
* spacing / sizing / rounded / elevation as enumerated token-scale
|
|
9
|
+
* props. Replaces MUI's Box + Paper + Card + Surface in one component.
|
|
10
|
+
*
|
|
11
|
+
* What it is NOT (deliberate, enforced by the prop set):
|
|
12
|
+
* • Not a flex container → use <Stack>
|
|
13
|
+
* • Not a grid container → use <Grid>
|
|
14
|
+
* • Not a paragraph → use <Typography>
|
|
15
|
+
* • Not a button → use <Button>
|
|
16
|
+
*
|
|
17
|
+
* The "Box is not flex" rule is the spine of the layout layer. Without
|
|
18
|
+
* it, every `<div>` in an app gravitates back to Box and the surface
|
|
19
|
+
* vs layout distinction collapses. Box's job is the SURFACE around
|
|
20
|
+
* content; Stack/Grid's job is the ARRANGEMENT of content. Two
|
|
21
|
+
* primitives, two responsibilities.
|
|
22
|
+
*
|
|
23
|
+
* When BOTH `as` and `asChild` are passed, `asChild` wins. Same rule
|
|
24
|
+
* as Typography — documented to avoid the dimension-bloat of a
|
|
25
|
+
* discriminated union over an 11-axis props type.
|
|
26
|
+
*
|
|
27
|
+
* Layering:
|
|
28
|
+
* • Sits BENEATH every visual chrome — every card, every panel,
|
|
29
|
+
* every section background.
|
|
30
|
+
* • Composes ON TOP of @dashforge/tw-tokens (color + spacing + radius
|
|
31
|
+
* + shadow scales) via the dashforgePreset CSS variables.
|
|
32
|
+
* • Pairs with Typography for text content, Stack/Grid for layout
|
|
33
|
+
* children inside it.
|
|
34
|
+
*/
|
|
35
|
+
export declare const Box: import("react").ForwardRefExoticComponent<BoxProps & import("react").RefAttributes<HTMLElement>>;
|
|
36
|
+
//# sourceMappingURL=Box.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Box.d.ts","sourceRoot":"","sources":["../../../src/components/Box/Box.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,GAAG,kGAyCf,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { ElementType, HTMLAttributes } from 'react';
|
|
2
|
+
import type { BoxVariants } from './box.variants.js';
|
|
3
|
+
/**
|
|
4
|
+
* Props for `<Box>` — the surface primitive.
|
|
5
|
+
*
|
|
6
|
+
* What lives in props (typed, ergonomic):
|
|
7
|
+
* • Surface — variant, color, elevation, rounded
|
|
8
|
+
* • Spacing — p, px, py, m, mx, my (token-scale steps)
|
|
9
|
+
* • Sizing — fullWidth, fullHeight
|
|
10
|
+
* • Polymorphism — as, asChild
|
|
11
|
+
* • Override escape — sx (utility string, merged via tailwind-merge)
|
|
12
|
+
*
|
|
13
|
+
* What does NOT live here (deliberate, see Box.tsx header):
|
|
14
|
+
* • display / flex / grid / gap → use Stack or Grid
|
|
15
|
+
* • position / top / z-index → use sx
|
|
16
|
+
* • overflow / cursor → use sx
|
|
17
|
+
* • animation / transition → use sx
|
|
18
|
+
*
|
|
19
|
+
* Native attribute overrides:
|
|
20
|
+
* • `className` is omitted in favour of `sx` (string of utilities,
|
|
21
|
+
* resolved by tailwind-merge so consumer wins over variant defaults)
|
|
22
|
+
* — same convention as Button/TextField/Checkbox/Switch.
|
|
23
|
+
* • `color` is omitted: collides with the deprecated HTML4 `color`
|
|
24
|
+
* attribute. Our typed `color` (intent) is the right one.
|
|
25
|
+
*/
|
|
26
|
+
export interface BoxProps extends Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'color'>, Pick<BoxVariants, 'variant' | 'color' | 'elevation' | 'rounded' | 'p' | 'px' | 'py' | 'm' | 'mx' | 'my' | 'fullWidth' | 'fullHeight'> {
|
|
27
|
+
/**
|
|
28
|
+
* Override the rendered HTML tag. Defaults to `'div'`. Useful when
|
|
29
|
+
* the surface should also carry semantic meaning — `<Box as="section">`
|
|
30
|
+
* for a page section, `<Box as="article">` for a card-shaped article.
|
|
31
|
+
*
|
|
32
|
+
* Ignored when `asChild` is true.
|
|
33
|
+
*/
|
|
34
|
+
as?: ElementType;
|
|
35
|
+
/**
|
|
36
|
+
* Render via Radix `Slot` — the Box styles paint onto the single
|
|
37
|
+
* React child instead of wrapping it in our own element. Useful for
|
|
38
|
+
* `<Box asChild><Link>...</Link></Box>` to get a styled router link
|
|
39
|
+
* with no extra DOM wrapper.
|
|
40
|
+
*
|
|
41
|
+
* Mutually exclusive with `as` (when both are passed, `asChild` wins
|
|
42
|
+
* — see Box.tsx for the reasoning).
|
|
43
|
+
*/
|
|
44
|
+
asChild?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Utility classes appended to the variant chain. Resolved via
|
|
47
|
+
* `tailwind-merge` so the consumer's classes always win over the
|
|
48
|
+
* variant defaults. Use for one-off overrides AND for utility
|
|
49
|
+
* dimensions Box deliberately doesn't expose as props (overflow,
|
|
50
|
+
* position, animation, etc.).
|
|
51
|
+
*/
|
|
52
|
+
sx?: string;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=box.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"box.types.d.ts","sourceRoot":"","sources":["../../../src/components/Box/box.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,QACf,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,EAC3D,IAAI,CAAC,WAAW,EACd,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,GAC3C,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GACrC,WAAW,GAAG,YAAY,CAAC;IACvC;;;;;;OAMG;IACH,EAAE,CAAC,EAAE,WAAW,CAAC;IAEjB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;;;OAMG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;CACb"}
|