@dashforge/tw 0.10.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 +35 -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 +133 -24
- package/dist/src/components/Tabs/Tabs.d.ts +8 -4
- package/dist/src/components/Tabs/Tabs.d.ts.map +1 -1
- package/dist/src/components/Tabs/tabs.types.d.ts +8 -2
- package/dist/src/components/Tabs/tabs.types.d.ts.map +1 -1
- package/dist/src/components/Tabs/useTabs.d.ts +55 -0
- package/dist/src/components/Tabs/useTabs.d.ts.map +1 -0
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +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 -8
- package/src/components/Tabs/Tabs.test.tsx +85 -14
- package/src/components/Tabs/Tabs.tsx +35 -24
- package/src/components/Tabs/tabs.types.ts +8 -2
- package/src/components/Tabs/useTabs.ts +167 -0
- package/src/components/TextField/TextField.test.tsx +5 -1
- package/src/index.ts +1 -1
- package/vite.config.ts +8 -0
- package/vitest.config.mts +8 -1
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { TableRowSelectionMode } from '../../Table/table.types.js';
|
|
2
|
+
export interface UseTableSelectionResult {
|
|
3
|
+
selectedRowIds: string[];
|
|
4
|
+
isSelected: (rowId: string) => boolean;
|
|
5
|
+
toggleRow: (rowId: string) => void;
|
|
6
|
+
toggleAll: (allRowIds: string[]) => void;
|
|
7
|
+
clearSelection: () => void;
|
|
8
|
+
/** True when EVERY id in `allRowIds` is selected. */
|
|
9
|
+
isAllSelected: (allRowIds: string[]) => boolean;
|
|
10
|
+
/** True when at least one (but not all) of `allRowIds` is selected. */
|
|
11
|
+
isIndeterminate: (allRowIds: string[]) => boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Selection logic helper. Given the controllable selection state +
|
|
15
|
+
* the setter (from `useControllableState`), exposes ergonomic
|
|
16
|
+
* helpers the Table calls from its render path.
|
|
17
|
+
*
|
|
18
|
+
* - `single` mode: at most one row selected. Toggling another
|
|
19
|
+
* replaces the previous.
|
|
20
|
+
* - `multiple` mode: any subset selectable; toggling adds/removes.
|
|
21
|
+
* - `none` mode: every toggle is a no-op (the Table shouldn't
|
|
22
|
+
* render the checkbox cells anyway, but this is defensive).
|
|
23
|
+
*/
|
|
24
|
+
export declare function useTableSelection(mode: TableRowSelectionMode, selectedRowIds: string[], setSelectedRowIds: (next: string[] | ((prev: string[]) => string[])) => void): UseTableSelectionResult;
|
|
25
|
+
//# sourceMappingURL=useTableSelection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTableSelection.d.ts","sourceRoot":"","sources":["../../../../src/components/_shared/data/useTableSelection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAExE,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACzC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,qDAAqD;IACrD,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC;IAChD,uEAAuE;IACvE,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC;CACnD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,qBAAqB,EAC3B,cAAc,EAAE,MAAM,EAAE,EACxB,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,CAAC,KAAK,IAAI,GAC3E,uBAAuB,CAqEzB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { TableColumn, TableSortModel } from '../../Table/table.types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Applies the `sortModel` to `rows`. Returns a NEW sorted array
|
|
4
|
+
* (does not mutate input). Stable sort guaranteed by the underlying
|
|
5
|
+
* `Array.prototype.sort` in modern engines.
|
|
6
|
+
*
|
|
7
|
+
* Multi-column sort: items earlier in `sortModel` have higher
|
|
8
|
+
* precedence. Equal values fall through to the next sort item; if
|
|
9
|
+
* all sort items tie, the original order is preserved (stable).
|
|
10
|
+
*/
|
|
11
|
+
export declare function useTableSort<T extends object>(rows: T[], cols: TableColumn<T>[], sortModel: TableSortModel): T[];
|
|
12
|
+
/**
|
|
13
|
+
* Three-state sort cycler: `none` → `asc` → `desc` → `none`.
|
|
14
|
+
*
|
|
15
|
+
* Used by the header click handler. Returns the next sort model
|
|
16
|
+
* to apply, given the current model + the clicked field + whether
|
|
17
|
+
* the user is multi-sorting (shift key).
|
|
18
|
+
*/
|
|
19
|
+
export declare function cycleSortFor(current: TableSortModel, field: string, multi: boolean): TableSortModel;
|
|
20
|
+
//# sourceMappingURL=useTableSort.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTableSort.d.ts","sourceRoot":"","sources":["../../../../src/components/_shared/data/useTableSort.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EAEf,MAAM,4BAA4B,CAAC;AA+CpC;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAC3C,IAAI,EAAE,CAAC,EAAE,EACT,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,EACtB,SAAS,EAAE,cAAc,GACxB,CAAC,EAAE,CA2CL;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,OAAO,GACb,cAAc,CAkBhB"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Window descriptor — which slice of the row array is currently
|
|
3
|
+
* mounted in DOM, and how much spacer height to render above and
|
|
4
|
+
* below the visible window so the scrollbar size matches the
|
|
5
|
+
* "virtual" total height.
|
|
6
|
+
*/
|
|
7
|
+
export interface VirtualizerWindow {
|
|
8
|
+
/** First row index inside the visible window (inclusive). */
|
|
9
|
+
startIndex: number;
|
|
10
|
+
/** Last row index inside the visible window (inclusive). */
|
|
11
|
+
endIndex: number;
|
|
12
|
+
/** Pixels to render above the visible rows (spacer top). */
|
|
13
|
+
paddingTop: number;
|
|
14
|
+
/** Pixels to render below the visible rows (spacer bottom). */
|
|
15
|
+
paddingBottom: number;
|
|
16
|
+
}
|
|
17
|
+
export interface UseVirtualizerArgs {
|
|
18
|
+
/** Total number of rows in the underlying data set. */
|
|
19
|
+
totalCount: number;
|
|
20
|
+
/** Fixed row height in pixels. */
|
|
21
|
+
rowHeight: number;
|
|
22
|
+
/**
|
|
23
|
+
* Visible viewport height in pixels. Pass the height of the
|
|
24
|
+
* scroll container.
|
|
25
|
+
*/
|
|
26
|
+
viewportHeight: number;
|
|
27
|
+
/** Current scrollTop of the scroll container. */
|
|
28
|
+
scrollTop: number;
|
|
29
|
+
/**
|
|
30
|
+
* How many extra rows to render above / below the visible window
|
|
31
|
+
* for smoother scrolling (reduces blank-flash on fast scroll).
|
|
32
|
+
* @default 5
|
|
33
|
+
*/
|
|
34
|
+
overscan?: number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Compute the visible window of rows + the spacer heights given the
|
|
38
|
+
* current scroll position. Pure function — exported for testability.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```ts
|
|
42
|
+
* computeWindow({ totalCount: 1000, rowHeight: 48, viewportHeight: 600,
|
|
43
|
+
* scrollTop: 0, overscan: 5 });
|
|
44
|
+
* // → { startIndex: 0, endIndex: 17, paddingTop: 0, paddingBottom: 47136 }
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare function computeWindow(args: UseVirtualizerArgs): VirtualizerWindow;
|
|
48
|
+
/**
|
|
49
|
+
* `useVirtualizer` — viewport-based row windowing for `<DataGrid>`.
|
|
50
|
+
*
|
|
51
|
+
* Hand-rolled (no `@tanstack/react-virtual` dep — constraint memorized
|
|
52
|
+
* in `feedback_dashforge_preset_is_identity` companion: "no new
|
|
53
|
+
* external runtime deps"). Uses scroll event + `requestAnimationFrame`
|
|
54
|
+
* debounce + `ResizeObserver` on the container. Fixed row height
|
|
55
|
+
* only in v1 — variable-height with measurement cache deferred to
|
|
56
|
+
* v1-bis.
|
|
57
|
+
*
|
|
58
|
+
* Returns:
|
|
59
|
+
* - `scrollRef`: attach to the scroll container `<div>`.
|
|
60
|
+
* - `window`: which row indices to mount + top/bottom spacer heights
|
|
61
|
+
* to preserve scroll-area size.
|
|
62
|
+
* - `viewportHeight`: current container height (re-measured on
|
|
63
|
+
* `ResizeObserver` ticks).
|
|
64
|
+
*
|
|
65
|
+
* The DataGrid renders `rows.slice(window.startIndex, window.endIndex + 1)`
|
|
66
|
+
* between two spacer `<tr style={{ height: paddingTop }} />` elements
|
|
67
|
+
* (above and below). This preserves `<table>` semantics — screen
|
|
68
|
+
* readers see a continuous structure with `aria-hidden` spacers.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```tsx
|
|
72
|
+
* const { scrollRef, window } = useVirtualizer({
|
|
73
|
+
* totalCount: rows.length,
|
|
74
|
+
* rowHeight: 48,
|
|
75
|
+
* overscan: 5,
|
|
76
|
+
* });
|
|
77
|
+
*
|
|
78
|
+
* return (
|
|
79
|
+
* <div ref={scrollRef} style={{ height: 600, overflow: 'auto' }}>
|
|
80
|
+
* <table>
|
|
81
|
+
* <tbody>
|
|
82
|
+
* <tr aria-hidden="true" style={{ height: window.paddingTop }} />
|
|
83
|
+
* {rows.slice(window.startIndex, window.endIndex + 1).map(...)}
|
|
84
|
+
* <tr aria-hidden="true" style={{ height: window.paddingBottom }} />
|
|
85
|
+
* </tbody>
|
|
86
|
+
* </table>
|
|
87
|
+
* </div>
|
|
88
|
+
* );
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
export declare function useVirtualizer(args: {
|
|
92
|
+
totalCount: number;
|
|
93
|
+
rowHeight: number;
|
|
94
|
+
overscan?: number;
|
|
95
|
+
/**
|
|
96
|
+
* Initial viewport height — used before the ResizeObserver
|
|
97
|
+
* settles on first paint. Pass an explicit `height` prop value
|
|
98
|
+
* if you have one; otherwise the hook re-measures on layout.
|
|
99
|
+
* @default 400
|
|
100
|
+
*/
|
|
101
|
+
initialViewportHeight?: number;
|
|
102
|
+
}): {
|
|
103
|
+
scrollRef: React.RefObject<HTMLDivElement | null>;
|
|
104
|
+
window: VirtualizerWindow;
|
|
105
|
+
viewportHeight: number;
|
|
106
|
+
};
|
|
107
|
+
//# sourceMappingURL=useVirtualizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useVirtualizer.d.ts","sourceRoot":"","sources":["../../../../src/components/_shared/data/useVirtualizer.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,6DAA6D;IAC7D,UAAU,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,kBAAkB,GAAG,iBAAiB,CAmBzE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,GAAG;IACF,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAClD,MAAM,EAAE,iBAAiB,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;CACxB,CAqEA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { DashFormBridge } from '@dashforge/ui-core';
|
|
3
|
+
/**
|
|
4
|
+
* Resolved validation state for a bridge-managed field.
|
|
5
|
+
*
|
|
6
|
+
* Returned by `resolveValidationState`, this is consumed by all form
|
|
7
|
+
* components that surface error + helper text (TextField, Checkbox,
|
|
8
|
+
* Switch, …) to derive their final render state.
|
|
9
|
+
*/
|
|
10
|
+
export interface ValidationState {
|
|
11
|
+
error: boolean;
|
|
12
|
+
helperText: ReactNode;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Compute `error` + `helperText` for a bridge-managed field.
|
|
16
|
+
*
|
|
17
|
+
* **Renderer-agnostic** — copy of the MUI-side
|
|
18
|
+
* `textField.validation.ts`. Promoted to a `_shared/` directory inside
|
|
19
|
+
* `@dashforge/tw` so all form components (TextField + Checkbox +
|
|
20
|
+
* Switch) reuse the same precedence logic without depending on a
|
|
21
|
+
* specific component folder.
|
|
22
|
+
*
|
|
23
|
+
* Precedence rules (matches MUI side byte-for-byte):
|
|
24
|
+
*
|
|
25
|
+
* 1. **Explicit props win.** If the user passed `error` / `helperText`
|
|
26
|
+
* explicitly, those values are used as-is.
|
|
27
|
+
* 2. **Auto values are gated by interaction.** The bridge's error is
|
|
28
|
+
* surfaced only when the field is `touched` OR the form has been
|
|
29
|
+
* submitted at least once (`submitCount > 0`). This prevents the
|
|
30
|
+
* "error spam while typing" anti-pattern.
|
|
31
|
+
* 3. **`error === false` explicitly clears the bridge's error message
|
|
32
|
+
* text.** Useful for forcing a "valid" visual state regardless of
|
|
33
|
+
* bridge state.
|
|
34
|
+
*
|
|
35
|
+
* @param name field name registered with the bridge
|
|
36
|
+
* @param bridge active `DashFormBridge` (guaranteed non-null at
|
|
37
|
+
* call sites by the surrounding `if (bridge)`)
|
|
38
|
+
* @param explicitError `error` prop from the consumer
|
|
39
|
+
* @param explicitHelperText `helperText` prop from the consumer
|
|
40
|
+
*/
|
|
41
|
+
export declare function resolveValidationState(name: string, bridge: DashFormBridge, explicitError: boolean | undefined, explicitHelperText: ReactNode | undefined): ValidationState;
|
|
42
|
+
//# sourceMappingURL=resolveValidationState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveValidationState.d.ts","sourceRoot":"","sources":["../../../src/components/_shared/resolveValidationState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,SAAS,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,cAAc,EACtB,aAAa,EAAE,OAAO,GAAG,SAAS,EAClC,kBAAkB,EAAE,SAAS,GAAG,SAAS,GACxC,eAAe,CAYjB"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { AccessRequirement, AccessState } from '@dashforge/rbac';
|
|
2
|
+
/**
|
|
3
|
+
* Hook to resolve RBAC access state for a UI component.
|
|
4
|
+
*
|
|
5
|
+
* **TW-side copy of the MUI implementation** in `@dashforge/ui/src/hooks/useAccessState.ts`.
|
|
6
|
+
* Per the architecture plan v2 (2026-05-15) the two ecosystems share
|
|
7
|
+
* only the bridge layer (`@dashforge/forms` + `@dashforge/ui-core` +
|
|
8
|
+
* `@dashforge/rbac`); UI-side hooks are duplicated intentionally so
|
|
9
|
+
* the MUI and TW ecosystems remain fully isolated.
|
|
10
|
+
*
|
|
11
|
+
* The behaviour is byte-equivalent to the MUI side:
|
|
12
|
+
*
|
|
13
|
+
* - If `access` is undefined → returns `DEFAULT_ACCESS_STATE`.
|
|
14
|
+
* - If `access` is supplied but no `RbacProvider` is mounted → returns
|
|
15
|
+
* `DEFAULT_ACCESS_STATE` and emits a dev-only `console.warn` so the
|
|
16
|
+
* developer notices the missing provider. Failing **open** is the
|
|
17
|
+
* safer default (RBAC silently denying everything would be a hidden
|
|
18
|
+
* regression in development).
|
|
19
|
+
* - Otherwise → evaluates the requirement against the active
|
|
20
|
+
* `rbac.engine` + `rbac.subject` via `resolveAccessState`.
|
|
21
|
+
*
|
|
22
|
+
* The memo dependency list is `[access, rbac]` — a stable RBAC
|
|
23
|
+
* context + identical access requirement re-uses the same result
|
|
24
|
+
* object so downstream `useMemo` / `React.memo` comparisons stay
|
|
25
|
+
* cheap.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```tsx
|
|
29
|
+
* function MyComponent({ access }: { access?: AccessRequirement }) {
|
|
30
|
+
* const accessState = useAccessState(access);
|
|
31
|
+
* if (!accessState.visible) return null;
|
|
32
|
+
* return <input disabled={accessState.disabled} readOnly={accessState.readonly} />;
|
|
33
|
+
* }
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare function useAccessState(access: AccessRequirement | undefined): AccessState;
|
|
37
|
+
//# sourceMappingURL=useAccessState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAccessState.d.ts","sourceRoot":"","sources":["../../src/hooks/useAccessState.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAetE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,iBAAiB,GAAG,SAAS,GACpC,WAAW,CA2Bb"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1 +1,146 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @dashforge/tw
|
|
3
|
+
*
|
|
4
|
+
* Tailwind-rendered UI components for the Dashforge ecosystem.
|
|
5
|
+
*
|
|
6
|
+
* Architectural contract (plan v2 — 2026-05-15):
|
|
7
|
+
* - **Props-driven**: each Tailwind utility that matters for the public
|
|
8
|
+
* API becomes a typed prop. `sx` + `slotProps` are escape hatches.
|
|
9
|
+
* - **Tokens as source of truth**: components reference colors /
|
|
10
|
+
* spacing / radius / fontSize through `@dashforge/tw-tokens` via the
|
|
11
|
+
* `dashforgePreset()` from `@dashforge/tw-theme`.
|
|
12
|
+
* - **Shared bridge with MUI side**: both ecosystems consume
|
|
13
|
+
* `@dashforge/forms` + `@dashforge/ui-core` + `@dashforge/rbac`.
|
|
14
|
+
* No styling code is shared.
|
|
15
|
+
* - **Variant API**: `tailwind-variants` (TV) with `slots` +
|
|
16
|
+
* `compoundVariants`.
|
|
17
|
+
*
|
|
18
|
+
* F3 surface (tier-1, this release):
|
|
19
|
+
* - `<Button>` (action, RBAC only, `asChild` polymorphism)
|
|
20
|
+
* - `<TextField>` (bridge-integrated, 7 slots)
|
|
21
|
+
* - `<Checkbox>` (bridge-integrated, Radix Checkbox primitive)
|
|
22
|
+
* - `<Switch>` (bridge-integrated, Radix Switch primitive)
|
|
23
|
+
*
|
|
24
|
+
* @module @dashforge/tw
|
|
25
|
+
*/
|
|
26
|
+
export { Button } from './components/Button/Button.js';
|
|
27
|
+
export type { ButtonProps } from './components/Button/button.types.js';
|
|
28
|
+
export { buttonVariants } from './components/Button/button.variants.js';
|
|
29
|
+
export { TextField } from './components/TextField/TextField.js';
|
|
30
|
+
export type { TextFieldProps, TextFieldSlotProps, } from './components/TextField/textField.types.js';
|
|
31
|
+
export { textFieldVariants } from './components/TextField/textField.variants.js';
|
|
32
|
+
export { Checkbox } from './components/Checkbox/Checkbox.js';
|
|
33
|
+
export type { CheckboxProps, CheckboxSlotProps, } from './components/Checkbox/checkbox.types.js';
|
|
34
|
+
export { checkboxVariants } from './components/Checkbox/checkbox.variants.js';
|
|
35
|
+
export { Switch } from './components/Switch/Switch.js';
|
|
36
|
+
export type { SwitchProps, SwitchSlotProps, } from './components/Switch/switch.types.js';
|
|
37
|
+
export { switchVariants } from './components/Switch/switch.variants.js';
|
|
38
|
+
export { RadioGroup } from './components/RadioGroup/RadioGroup.js';
|
|
39
|
+
export type { RadioGroupProps, RadioGroupOption, RadioGroupSlotProps, } from './components/RadioGroup/radioGroup.types.js';
|
|
40
|
+
export { radioGroupVariants } from './components/RadioGroup/radioGroup.variants.js';
|
|
41
|
+
export { Textarea } from './components/Textarea/Textarea.js';
|
|
42
|
+
export type { TextareaProps, TextareaSlotProps, } from './components/Textarea/textarea.types.js';
|
|
43
|
+
export { textareaVariants } from './components/Textarea/textarea.variants.js';
|
|
44
|
+
export { NumberField } from './components/NumberField/NumberField.js';
|
|
45
|
+
export type { NumberFieldProps, NumberFieldSlotProps, } from './components/NumberField/numberField.types.js';
|
|
46
|
+
export { numberFieldVariants } from './components/NumberField/numberField.variants.js';
|
|
47
|
+
export { OTPField } from './components/OTPField/OTPField.js';
|
|
48
|
+
export type { OTPFieldProps, OTPFieldSlotProps, OTPFieldMode, } from './components/OTPField/otpField.types.js';
|
|
49
|
+
export { otpFieldVariants } from './components/OTPField/otpField.variants.js';
|
|
50
|
+
export { Autocomplete } from './components/Autocomplete/Autocomplete.js';
|
|
51
|
+
export type { AutocompleteProps, AutocompleteOption, AutocompleteSlotProps, AutocompleteValue, } from './components/Autocomplete/autocomplete.types.js';
|
|
52
|
+
export { autocompleteVariants } from './components/Autocomplete/autocomplete.variants.js';
|
|
53
|
+
export { Calendar } from './components/Calendar/Calendar.js';
|
|
54
|
+
export type { CalendarProps, CalendarSlotProps, } from './components/Calendar/calendar.types.js';
|
|
55
|
+
export { calendarVariants, calendarDayVariants, } from './components/Calendar/calendar.variants.js';
|
|
56
|
+
export { DatePicker } from './components/DatePicker/DatePicker.js';
|
|
57
|
+
export type { DatePickerProps, DatePickerSlotProps, } from './components/DatePicker/datePicker.types.js';
|
|
58
|
+
export { datePickerVariants } from './components/DatePicker/datePicker.variants.js';
|
|
59
|
+
export { TimePicker } from './components/TimePicker/TimePicker.js';
|
|
60
|
+
export type { TimePickerProps, TimePickerSlotProps, } from './components/TimePicker/timePicker.types.js';
|
|
61
|
+
export { timePickerVariants } from './components/TimePicker/timePicker.variants.js';
|
|
62
|
+
export { DateTimePicker } from './components/DateTimePicker/DateTimePicker.js';
|
|
63
|
+
export type { DateTimePickerProps, DateTimePickerSlotProps, } from './components/DateTimePicker/dateTimePicker.types.js';
|
|
64
|
+
export { dateTimePickerVariants } from './components/DateTimePicker/dateTimePicker.variants.js';
|
|
65
|
+
export { DateRangePicker } from './components/DateRangePicker/DateRangePicker.js';
|
|
66
|
+
export type { DateRangePickerProps, DateRangePickerSlotProps, } from './components/DateRangePicker/dateRangePicker.types.js';
|
|
67
|
+
export { dateRangePickerVariants, dateRangeDayVariants, } from './components/DateRangePicker/dateRangePicker.variants.js';
|
|
68
|
+
export { Breadcrumbs } from './components/Breadcrumbs/Breadcrumbs.js';
|
|
69
|
+
export type { BreadcrumbsProps, BreadcrumbItem, BreadcrumbsSlotProps, BreadcrumbLinkComponent, } from './components/Breadcrumbs/breadcrumbs.types.js';
|
|
70
|
+
export { breadcrumbsVariants } from './components/Breadcrumbs/breadcrumbs.variants.js';
|
|
71
|
+
export { LeftNav } from './components/LeftNav/LeftNav.js';
|
|
72
|
+
export type { LeftNavProps, LeftNavNode, LeftNavItem, LeftNavGroup, LeftNavSlotProps, LeftNavLinkComponent, } from './components/LeftNav/leftNav.types.js';
|
|
73
|
+
export { leftNavVariants } from './components/LeftNav/leftNav.variants.js';
|
|
74
|
+
export { TopBar } from './components/TopBar/TopBar.js';
|
|
75
|
+
export type { TopBarProps, TopBarSlotProps, } from './components/TopBar/topBar.types.js';
|
|
76
|
+
export { topBarVariants } from './components/TopBar/topBar.variants.js';
|
|
77
|
+
export { AppShell } from './components/AppShell/AppShell.js';
|
|
78
|
+
export type { AppShellProps, AppShellSlotProps, } from './components/AppShell/appShell.types.js';
|
|
79
|
+
export { appShellVariants } from './components/AppShell/appShell.variants.js';
|
|
80
|
+
export { ConfirmDialogProvider, useConfirm, } from './components/ConfirmDialog/ConfirmDialog.js';
|
|
81
|
+
export type { ConfirmDialogProviderProps, ConfirmDialogSlotProps, ConfirmFn, ConfirmOptions, ConfirmSeverity, } from './components/ConfirmDialog/confirmDialog.types.js';
|
|
82
|
+
export { confirmDialogVariants } from './components/ConfirmDialog/confirmDialog.variants.js';
|
|
83
|
+
export { SnackbarProvider, useSnackbar, } from './components/Snackbar/Snackbar.js';
|
|
84
|
+
export type { SnackbarProviderProps, SnackbarApi, SnackbarOptions, SnackbarRecord, SnackbarSeverity, SnackbarPosition, SnackbarSlotProps, } from './components/Snackbar/snackbar.types.js';
|
|
85
|
+
export { snackbarVariants } from './components/Snackbar/snackbar.variants.js';
|
|
86
|
+
export { Typography } from './components/Typography/Typography.js';
|
|
87
|
+
export type { TypographyProps } from './components/Typography/typography.types.js';
|
|
88
|
+
export { typographyVariants } from './components/Typography/typography.variants.js';
|
|
89
|
+
export { Box } from './components/Box/Box.js';
|
|
90
|
+
export type { BoxProps } from './components/Box/box.types.js';
|
|
91
|
+
export { boxVariants } from './components/Box/box.variants.js';
|
|
92
|
+
export { Stack } from './components/Stack/Stack.js';
|
|
93
|
+
export type { StackProps } from './components/Stack/stack.types.js';
|
|
94
|
+
export { stackVariants } from './components/Stack/stack.variants.js';
|
|
95
|
+
export { Grid } from './components/Grid/Grid.js';
|
|
96
|
+
export type { GridProps, GridContainerProps, GridItemProps, ColSpan, GridSpacingStep, } from './components/Grid/grid.types.js';
|
|
97
|
+
export { gridVariants } from './components/Grid/grid.variants.js';
|
|
98
|
+
export { Container } from './components/Container/Container.js';
|
|
99
|
+
export type { ContainerProps } from './components/Container/container.types.js';
|
|
100
|
+
export { containerVariants } from './components/Container/container.variants.js';
|
|
101
|
+
export { Divider } from './components/Divider/Divider.js';
|
|
102
|
+
export type { DividerProps } from './components/Divider/divider.types.js';
|
|
103
|
+
export { dividerVariants, dividerLineVariants, } from './components/Divider/divider.variants.js';
|
|
104
|
+
export { AspectRatio } from './components/AspectRatio/AspectRatio.js';
|
|
105
|
+
export type { AspectRatioProps } from './components/AspectRatio/aspectRatio.types.js';
|
|
106
|
+
export { VisuallyHidden } from './components/VisuallyHidden/VisuallyHidden.js';
|
|
107
|
+
export type { VisuallyHiddenProps } from './components/VisuallyHidden/visuallyHidden.types.js';
|
|
108
|
+
export { Dialog } from './components/Dialog/Dialog.js';
|
|
109
|
+
export type { DialogProps, DialogSlotProps, } from './components/Dialog/dialog.types.js';
|
|
110
|
+
export { dialogVariants } from './components/Dialog/dialog.variants.js';
|
|
111
|
+
export { Tabs } from './components/Tabs/Tabs.js';
|
|
112
|
+
export type { TabsProps, TabsSlotProps, TabItem, } from './components/Tabs/tabs.types.js';
|
|
113
|
+
export { tabsVariants } from './components/Tabs/tabs.variants.js';
|
|
114
|
+
export { Tooltip } from './components/Tooltip/Tooltip.js';
|
|
115
|
+
export type { TooltipProps, TooltipSlotProps, } from './components/Tooltip/tooltip.types.js';
|
|
116
|
+
export { tooltipVariants } from './components/Tooltip/tooltip.variants.js';
|
|
117
|
+
export { Popover } from './components/Popover/Popover.js';
|
|
118
|
+
export type { PopoverProps, PopoverSlotProps, } from './components/Popover/popover.types.js';
|
|
119
|
+
export { popoverVariants } from './components/Popover/popover.variants.js';
|
|
120
|
+
export { Accordion } from './components/Accordion/Accordion.js';
|
|
121
|
+
export type { AccordionProps, AccordionSlotProps, AccordionItem, } from './components/Accordion/accordion.types.js';
|
|
122
|
+
export { accordionVariants } from './components/Accordion/accordion.variants.js';
|
|
123
|
+
export { Skeleton } from './components/Skeleton/Skeleton.js';
|
|
124
|
+
export type { SkeletonProps, SkeletonSlotProps, } from './components/Skeleton/skeleton.types.js';
|
|
125
|
+
export { skeletonVariants } from './components/Skeleton/skeleton.variants.js';
|
|
126
|
+
export { Pagination } from './components/Pagination/Pagination.js';
|
|
127
|
+
export type { PaginationProps, PaginationSlotProps, PaginationLabels, } from './components/Pagination/pagination.types.js';
|
|
128
|
+
export { paginationVariants } from './components/Pagination/pagination.variants.js';
|
|
129
|
+
export { Table } from './components/Table/Table.js';
|
|
130
|
+
export type { TableProps, TableColumn, TableColumnInferredType, TableCellContext, TableSortDirection, TableSortItem, TableSortModel, TableFilterItem, TableFilterModel, TableFilterOperator, TableFilterType, TableRowSelectionMode, TableExpandableConfig, TableLabels, TableSlotProps, NestedKeyOf, } from './components/Table/table.types.js';
|
|
131
|
+
export { tableVariants } from './components/Table/table.variants.js';
|
|
132
|
+
export { RenderText, RenderTwoLine, RenderChip, RenderButton, RowActionsMenu, } from './components/Table/cells/index.js';
|
|
133
|
+
export type { RenderTextProps, RenderTwoLineProps, RenderChipProps, RenderButtonProps, RowActionsMenuProps, TableRowAction, } from './components/Table/cells/index.js';
|
|
134
|
+
export { getNestedValue } from './components/_shared/data/getNestedValue.js';
|
|
135
|
+
export { DataGrid } from './components/DataGrid/DataGrid.js';
|
|
136
|
+
export type { DataGridProps, DataGridSlotProps, DataGridSelectAllScope, DataGridServerSideFlags, DataGridPaginationConfig, } from './components/DataGrid/dataGrid.types.js';
|
|
137
|
+
export { dataGridVariants } from './components/DataGrid/dataGrid.variants.js';
|
|
138
|
+
export { useAccessState } from './hooks/useAccessState.js';
|
|
139
|
+
export { cn } from './utils/cn.js';
|
|
140
|
+
export { tv } from 'tailwind-variants';
|
|
141
|
+
export type { VariantProps } from 'tailwind-variants';
|
|
142
|
+
/**
|
|
143
|
+
* Package version (synced with `package.json` at publish time).
|
|
144
|
+
*/
|
|
145
|
+
export declare const VERSION = "0.11.0-beta";
|
|
146
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,YAAY,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAExE,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAChE,YAAY,EACV,cAAc,EACd,kBAAkB,GACnB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AAEjF,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAC7D,YAAY,EACV,aAAa,EACb,iBAAiB,GAClB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAE9E,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,YAAY,EACV,WAAW,EACX,eAAe,GAChB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAIxE,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACnE,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAEpF,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAC7D,YAAY,EACV,aAAa,EACb,iBAAiB,GAClB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAI9E,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AACtE,YAAY,EACV,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AAEvF,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAC7D,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,YAAY,GACb,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAI9E,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzE,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oDAAoD,CAAC;AAM1F,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAC7D,YAAY,EACV,aAAa,EACb,iBAAiB,GAClB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,4CAA4C,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACnE,YAAY,EACV,eAAe,EACf,mBAAmB,GACpB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAEpF,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACnE,YAAY,EACV,eAAe,EACf,mBAAmB,GACpB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAEpF,OAAO,EAAE,cAAc,EAAE,MAAM,+CAA+C,CAAC;AAC/E,YAAY,EACV,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,qDAAqD,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wDAAwD,CAAC;AAEhG,OAAO,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAClF,YAAY,EACV,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,uDAAuD,CAAC;AAC/D,OAAO,EACL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,0DAA0D,CAAC;AAIlE,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AACtE,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AAEvF,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAC1D,YAAY,EACV,YAAY,EACZ,WAAW,EACX,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAE3E,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,YAAY,EACV,WAAW,EACX,eAAe,GAChB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAExE,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAC7D,YAAY,EACV,aAAa,EACb,iBAAiB,GAClB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAI9E,OAAO,EACL,qBAAqB,EACrB,UAAU,GACX,MAAM,6CAA6C,CAAC;AACrD,YAAY,EACV,0BAA0B,EAC1B,sBAAsB,EACtB,SAAS,EACT,cAAc,EACd,eAAe,GAChB,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sDAAsD,CAAC;AAE7F,OAAO,EACL,gBAAgB,EAChB,WAAW,GACZ,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EACV,qBAAqB,EACrB,WAAW,EACX,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAO9E,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACnE,YAAY,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAEpF,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,YAAY,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAE/D,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACpD,YAAY,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAErE,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACjD,YAAY,EACV,SAAS,EACT,kBAAkB,EAClB,aAAa,EACb,OAAO,EACP,eAAe,GAChB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAOlE,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAChE,YAAY,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AAEjF,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAC1D,YAAY,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EACL,eAAe,EACf,mBAAmB,GACpB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AACtE,YAAY,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AAEtF,OAAO,EAAE,cAAc,EAAE,MAAM,+CAA+C,CAAC;AAC/E,YAAY,EAAE,mBAAmB,EAAE,MAAM,qDAAqD,CAAC;AAI/F,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,YAAY,EACV,WAAW,EACX,eAAe,GAChB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAExE,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACjD,YAAY,EACV,SAAS,EACT,aAAa,EACb,OAAO,GACR,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAElE,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAC1D,YAAY,EACV,YAAY,EACZ,gBAAgB,GACjB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAE3E,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAC1D,YAAY,EACV,YAAY,EACZ,gBAAgB,GACjB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAE3E,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAChE,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,aAAa,GACd,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AAIjF,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAC7D,YAAY,EACV,aAAa,EACb,iBAAiB,GAClB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACnE,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAMpF,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACpD,YAAY,EACV,UAAU,EACV,WAAW,EACX,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,WAAW,EACX,cAAc,EACd,WAAW,GACZ,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAErE,OAAO,EACL,UAAU,EACV,aAAa,EACb,UAAU,EACV,YAAY,EACZ,cAAc,GACf,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,GACf,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAQ7E,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAC7D,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAG9E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAG3D,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAInC,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AACvC,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;GAEG;AACH,eAAO,MAAM,OAAO,gBAAgB,CAAC"}
|
package/dist/index.esm.js
CHANGED
|
@@ -14,7 +14,6 @@ import * as RadixRadioGroup from '@radix-ui/react-radio-group';
|
|
|
14
14
|
import { useCalendar, resolveCalendarKey, formatLongDate, parseISODate, formatTime, generateTimeOptions, timeStringToMinutes, getTodayISODate, useDateRange } from '@dashforge/calendar-core';
|
|
15
15
|
import * as RadixPopover from '@radix-ui/react-popover';
|
|
16
16
|
import * as RadixDialog from '@radix-ui/react-dialog';
|
|
17
|
-
import * as RadixTabs from '@radix-ui/react-tabs';
|
|
18
17
|
import * as RadixTooltip from '@radix-ui/react-tooltip';
|
|
19
18
|
import * as RadixAccordion from '@radix-ui/react-accordion';
|
|
20
19
|
|
|
@@ -8486,51 +8485,161 @@ const tabsVariants = tv({
|
|
|
8486
8485
|
}
|
|
8487
8486
|
});
|
|
8488
8487
|
|
|
8488
|
+
function useTabs(options) {
|
|
8489
|
+
var _ref;
|
|
8490
|
+
var _items_;
|
|
8491
|
+
const { items, value, defaultValue, onValueChange, orientation } = options;
|
|
8492
|
+
const baseId = useId();
|
|
8493
|
+
const firstValue = (_ref = (_items_ = items[0]) == null ? void 0 : _items_.value) != null ? _ref : '';
|
|
8494
|
+
const [internalValue, setInternalValue] = useState(defaultValue != null ? defaultValue : firstValue);
|
|
8495
|
+
const isControlled = value !== undefined;
|
|
8496
|
+
const activeValue = isControlled ? value : internalValue;
|
|
8497
|
+
// Tab buttons, keyed by value — used to move DOM focus on keyboard nav.
|
|
8498
|
+
const tabRefs = useRef(new Map());
|
|
8499
|
+
const select = useCallback((next)=>{
|
|
8500
|
+
if (!isControlled) {
|
|
8501
|
+
setInternalValue(next);
|
|
8502
|
+
}
|
|
8503
|
+
onValueChange == null ? void 0 : onValueChange(next);
|
|
8504
|
+
}, [
|
|
8505
|
+
isControlled,
|
|
8506
|
+
onValueChange
|
|
8507
|
+
]);
|
|
8508
|
+
const handleKeyDown = useCallback((event)=>{
|
|
8509
|
+
var _tabRefs_current_get;
|
|
8510
|
+
const nextKey = orientation === 'vertical' ? 'ArrowDown' : 'ArrowRight';
|
|
8511
|
+
const prevKey = orientation === 'vertical' ? 'ArrowUp' : 'ArrowLeft';
|
|
8512
|
+
const enabled = items.filter((item)=>item.disabled !== true);
|
|
8513
|
+
if (enabled.length === 0) {
|
|
8514
|
+
return;
|
|
8515
|
+
}
|
|
8516
|
+
const currentIndex = enabled.findIndex((item)=>item.value === activeValue);
|
|
8517
|
+
let targetIndex = null;
|
|
8518
|
+
if (event.key === nextKey) {
|
|
8519
|
+
targetIndex = currentIndex < 0 ? 0 : (currentIndex + 1) % enabled.length;
|
|
8520
|
+
} else if (event.key === prevKey) {
|
|
8521
|
+
targetIndex = currentIndex < 0 ? enabled.length - 1 : (currentIndex - 1 + enabled.length) % enabled.length;
|
|
8522
|
+
} else if (event.key === 'Home') {
|
|
8523
|
+
targetIndex = 0;
|
|
8524
|
+
} else if (event.key === 'End') {
|
|
8525
|
+
targetIndex = enabled.length - 1;
|
|
8526
|
+
}
|
|
8527
|
+
if (targetIndex === null) {
|
|
8528
|
+
return;
|
|
8529
|
+
}
|
|
8530
|
+
event.preventDefault();
|
|
8531
|
+
const target = enabled[targetIndex];
|
|
8532
|
+
if (target === undefined) {
|
|
8533
|
+
return;
|
|
8534
|
+
}
|
|
8535
|
+
select(target.value);
|
|
8536
|
+
(_tabRefs_current_get = tabRefs.current.get(target.value)) == null ? void 0 : _tabRefs_current_get.focus();
|
|
8537
|
+
}, [
|
|
8538
|
+
items,
|
|
8539
|
+
orientation,
|
|
8540
|
+
activeValue,
|
|
8541
|
+
select
|
|
8542
|
+
]);
|
|
8543
|
+
const getTabListProps = ()=>({
|
|
8544
|
+
role: 'tablist',
|
|
8545
|
+
'aria-orientation': orientation,
|
|
8546
|
+
onKeyDown: handleKeyDown
|
|
8547
|
+
});
|
|
8548
|
+
const getTabProps = (item)=>{
|
|
8549
|
+
const active = item.value === activeValue;
|
|
8550
|
+
return {
|
|
8551
|
+
role: 'tab',
|
|
8552
|
+
id: `${baseId}-tab-${item.value}`,
|
|
8553
|
+
'aria-selected': active,
|
|
8554
|
+
'aria-controls': `${baseId}-panel-${item.value}`,
|
|
8555
|
+
tabIndex: active ? 0 : -1,
|
|
8556
|
+
disabled: item.disabled,
|
|
8557
|
+
'data-state': active ? 'active' : 'inactive',
|
|
8558
|
+
onClick: ()=>{
|
|
8559
|
+
if (item.disabled !== true) {
|
|
8560
|
+
select(item.value);
|
|
8561
|
+
}
|
|
8562
|
+
},
|
|
8563
|
+
ref: (el)=>{
|
|
8564
|
+
if (el) {
|
|
8565
|
+
tabRefs.current.set(item.value, el);
|
|
8566
|
+
} else {
|
|
8567
|
+
tabRefs.current.delete(item.value);
|
|
8568
|
+
}
|
|
8569
|
+
}
|
|
8570
|
+
};
|
|
8571
|
+
};
|
|
8572
|
+
const getPanelProps = (item)=>{
|
|
8573
|
+
const active = item.value === activeValue;
|
|
8574
|
+
return {
|
|
8575
|
+
role: 'tabpanel',
|
|
8576
|
+
id: `${baseId}-panel-${item.value}`,
|
|
8577
|
+
'aria-labelledby': `${baseId}-tab-${item.value}`,
|
|
8578
|
+
tabIndex: 0,
|
|
8579
|
+
hidden: !active,
|
|
8580
|
+
'data-state': active ? 'active' : 'inactive'
|
|
8581
|
+
};
|
|
8582
|
+
};
|
|
8583
|
+
return {
|
|
8584
|
+
activeValue,
|
|
8585
|
+
getTabListProps,
|
|
8586
|
+
getTabProps,
|
|
8587
|
+
getPanelProps
|
|
8588
|
+
};
|
|
8589
|
+
}
|
|
8590
|
+
|
|
8489
8591
|
/**
|
|
8490
8592
|
* Dashforge TW `<Tabs>` — declarative tab navigation.
|
|
8491
8593
|
*
|
|
8492
|
-
*
|
|
8493
|
-
*
|
|
8494
|
-
*
|
|
8495
|
-
*
|
|
8594
|
+
* Custom clean-room implementation on the headless `useTabs` engine — no
|
|
8595
|
+
* runtime UI dependency. Implements the WAI-ARIA APG tabs pattern: arrow-key
|
|
8596
|
+
* navigation, automatic activation, roving tabindex, `role="tablist"` +
|
|
8597
|
+
* `role="tab"` + `role="tabpanel"`.
|
|
8496
8598
|
*
|
|
8497
8599
|
* Two variant axes:
|
|
8498
8600
|
* - `variant` — `underline` (default) | `pill`
|
|
8499
8601
|
* - `orientation` — `horizontal` (default) | `vertical`
|
|
8602
|
+
*
|
|
8603
|
+
* Controlled (`value` + `onValueChange`) or uncontrolled (`defaultValue`).
|
|
8604
|
+
* `keepMounted` keeps inactive panels in the DOM (default: only the active
|
|
8605
|
+
* panel is mounted).
|
|
8500
8606
|
*/ function Tabs(props) {
|
|
8501
|
-
var
|
|
8502
|
-
const { items, value, defaultValue, onValueChange, variant = 'underline', orientation = 'horizontal', sx, slotProps } = props;
|
|
8607
|
+
var _slotProps_root, _slotProps_list;
|
|
8608
|
+
const { items, value, defaultValue, onValueChange, variant = 'underline', orientation = 'horizontal', keepMounted = false, sx, slotProps } = props;
|
|
8503
8609
|
const v = tabsVariants({
|
|
8504
8610
|
variant,
|
|
8505
8611
|
orientation
|
|
8506
8612
|
});
|
|
8507
|
-
const
|
|
8508
|
-
|
|
8509
|
-
value
|
|
8510
|
-
defaultValue
|
|
8511
|
-
onValueChange
|
|
8512
|
-
orientation
|
|
8613
|
+
const tabs = useTabs({
|
|
8614
|
+
items,
|
|
8615
|
+
value,
|
|
8616
|
+
defaultValue,
|
|
8617
|
+
onValueChange,
|
|
8618
|
+
orientation
|
|
8619
|
+
});
|
|
8620
|
+
// Either all panels (hidden when inactive) or just the active one.
|
|
8621
|
+
const panels = keepMounted ? items : items.filter((item)=>item.value === tabs.activeValue);
|
|
8622
|
+
return jsxs("div", {
|
|
8513
8623
|
className: cn(v.root(), sx, slotProps == null ? void 0 : (_slotProps_root = slotProps.root) == null ? void 0 : _slotProps_root.className),
|
|
8514
8624
|
children: [
|
|
8515
|
-
jsx(
|
|
8625
|
+
jsx("div", _extends({}, tabs.getTabListProps(), {
|
|
8516
8626
|
className: cn(v.list(), slotProps == null ? void 0 : (_slotProps_list = slotProps.list) == null ? void 0 : _slotProps_list.className),
|
|
8517
8627
|
children: items.map((item)=>{
|
|
8518
8628
|
var _slotProps_trigger;
|
|
8519
|
-
return jsx(
|
|
8520
|
-
|
|
8521
|
-
|
|
8629
|
+
return jsx("button", _extends({
|
|
8630
|
+
type: "button"
|
|
8631
|
+
}, tabs.getTabProps(item), {
|
|
8522
8632
|
className: cn(v.trigger(), slotProps == null ? void 0 : (_slotProps_trigger = slotProps.trigger) == null ? void 0 : _slotProps_trigger.className),
|
|
8523
8633
|
children: item.label
|
|
8524
|
-
}, item.value);
|
|
8634
|
+
}), item.value);
|
|
8525
8635
|
})
|
|
8526
|
-
}),
|
|
8527
|
-
|
|
8636
|
+
})),
|
|
8637
|
+
panels.map((item)=>{
|
|
8528
8638
|
var _slotProps_content;
|
|
8529
|
-
return jsx(
|
|
8530
|
-
value: item.value,
|
|
8639
|
+
return jsx("div", _extends({}, tabs.getPanelProps(item), {
|
|
8531
8640
|
className: cn(v.content(), slotProps == null ? void 0 : (_slotProps_content = slotProps.content) == null ? void 0 : _slotProps_content.className),
|
|
8532
8641
|
children: item.content
|
|
8533
|
-
}, item.value);
|
|
8642
|
+
}), item.value);
|
|
8534
8643
|
})
|
|
8535
8644
|
]
|
|
8536
8645
|
});
|
|
@@ -12795,6 +12904,6 @@ function SearchIcon(props) {
|
|
|
12795
12904
|
*/ // ───── Components ─────
|
|
12796
12905
|
/**
|
|
12797
12906
|
* Package version (synced with `package.json` at publish time).
|
|
12798
|
-
*/ const VERSION = '0.
|
|
12907
|
+
*/ const VERSION = '0.11.0-beta';
|
|
12799
12908
|
|
|
12800
12909
|
export { Accordion, AppShell, AspectRatio, Autocomplete, Box, Breadcrumbs, Button, Calendar, Checkbox, ConfirmDialogProvider, Container, DataGrid, DatePicker, DateRangePicker, DateTimePicker, Dialog, Divider, Grid, LeftNav, NumberField, OTPField, Pagination, Popover, RadioGroup, RenderButton, RenderChip, RenderText, RenderTwoLine, RowActionsMenu, Skeleton, SnackbarProvider, Stack, Switch, Table, Tabs, TextField, Textarea, TimePicker, Tooltip, TopBar, Typography, VERSION, VisuallyHidden, accordionVariants, appShellVariants, autocompleteVariants, boxVariants, breadcrumbsVariants, buttonVariants, calendarDayVariants, calendarVariants, checkboxVariants, cn, confirmDialogVariants, containerVariants, dataGridVariants, datePickerVariants, dateRangeDayVariants, dateRangePickerVariants, dateTimePickerVariants, dialogVariants, dividerLineVariants, dividerVariants, getNestedValue, gridVariants, leftNavVariants, numberFieldVariants, otpFieldVariants, paginationVariants, popoverVariants, radioGroupVariants, skeletonVariants, snackbarVariants, stackVariants, switchVariants, tableVariants, tabsVariants, textFieldVariants, textareaVariants, timePickerVariants, tooltipVariants, topBarVariants, typographyVariants, useAccessState, useConfirm, useSnackbar };
|