@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,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compute the array of page indices (or `'ellipsis'` sentinels) to
|
|
3
|
+
* render for a `<Pagination>`.
|
|
4
|
+
*
|
|
5
|
+
* Algorithm (standard "siblings + boundaries + ellipsis fill"):
|
|
6
|
+
* 1. Always show `boundaryCount` pages at the start and `boundaryCount`
|
|
7
|
+
* at the end.
|
|
8
|
+
* 2. Show `siblingCount` pages on each side of the current page.
|
|
9
|
+
* 3. Fill gaps wider than 1 with `'ellipsis'`.
|
|
10
|
+
* 4. If a gap is exactly 1 page wide, include that page directly
|
|
11
|
+
* (no ellipsis for a single hidden number).
|
|
12
|
+
*
|
|
13
|
+
* Output is 1-indexed page numbers OR the literal string `'ellipsis'`.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* range(1, 10, 1, 1) // [1, 'ellipsis', 5, 'ellipsis', 10] when current=5
|
|
18
|
+
* range(1, 5, 1, 1) // [1, 2, 3, 4, 5]
|
|
19
|
+
* range(1, 100, 1, 1) // edges varying with current
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare function computePageRange(currentPage: number, totalPages: number, siblingCount: number, boundaryCount: number): (number | 'ellipsis')[];
|
|
23
|
+
//# sourceMappingURL=pagination.helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.helpers.d.ts","sourceRoot":"","sources":["../../../src/components/Pagination/pagination.helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,GACpB,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE,CAsEzB"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import type { PaginationVariants } from './pagination.variants.js';
|
|
2
|
+
export interface PaginationSlotProps {
|
|
3
|
+
root?: {
|
|
4
|
+
className?: string;
|
|
5
|
+
};
|
|
6
|
+
summary?: {
|
|
7
|
+
className?: string;
|
|
8
|
+
};
|
|
9
|
+
list?: {
|
|
10
|
+
className?: string;
|
|
11
|
+
};
|
|
12
|
+
pageButton?: {
|
|
13
|
+
className?: string;
|
|
14
|
+
};
|
|
15
|
+
activeButton?: {
|
|
16
|
+
className?: string;
|
|
17
|
+
};
|
|
18
|
+
navButton?: {
|
|
19
|
+
className?: string;
|
|
20
|
+
};
|
|
21
|
+
ellipsis?: {
|
|
22
|
+
className?: string;
|
|
23
|
+
};
|
|
24
|
+
pageSizeSelector?: {
|
|
25
|
+
className?: string;
|
|
26
|
+
};
|
|
27
|
+
jumpInput?: {
|
|
28
|
+
className?: string;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* I18n strings for `<Pagination>`. Default = English. Override the
|
|
33
|
+
* subset you need to translate; the rest fall back to defaults.
|
|
34
|
+
*/
|
|
35
|
+
export interface PaginationLabels {
|
|
36
|
+
first?: string;
|
|
37
|
+
prev?: string;
|
|
38
|
+
next?: string;
|
|
39
|
+
last?: string;
|
|
40
|
+
page?: string;
|
|
41
|
+
of?: string;
|
|
42
|
+
showing?: string;
|
|
43
|
+
perPage?: string;
|
|
44
|
+
goToPage?: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Props for `<Pagination>`.
|
|
48
|
+
*
|
|
49
|
+
* Controlled component: the consumer owns `page` + `pageSize`. The
|
|
50
|
+
* component emits `onPageChange` / `onPageSizeChange` and recomputes
|
|
51
|
+
* the visible page range from `totalCount`.
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```tsx
|
|
55
|
+
* const [page, setPage] = useState(1);
|
|
56
|
+
* const [pageSize, setPageSize] = useState(20);
|
|
57
|
+
*
|
|
58
|
+
* <Pagination
|
|
59
|
+
* page={page}
|
|
60
|
+
* pageSize={pageSize}
|
|
61
|
+
* totalCount={1437}
|
|
62
|
+
* onPageChange={setPage}
|
|
63
|
+
* onPageSizeChange={setPageSize}
|
|
64
|
+
* pageSizeOptions={[10, 20, 50, 100]}
|
|
65
|
+
* />
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export interface PaginationProps extends Pick<PaginationVariants, 'variant' | 'size'> {
|
|
69
|
+
/** Current page, **1-indexed**. */
|
|
70
|
+
page: number;
|
|
71
|
+
/** Items per page. */
|
|
72
|
+
pageSize: number;
|
|
73
|
+
/** Total items in the underlying data set (NOT total pages — we compute that). */
|
|
74
|
+
totalCount: number;
|
|
75
|
+
/** Fired when the user picks a different page. */
|
|
76
|
+
onPageChange: (page: number) => void;
|
|
77
|
+
/**
|
|
78
|
+
* Fired when the user picks a different page size. Omit (or pass
|
|
79
|
+
* undefined) to hide the page-size selector.
|
|
80
|
+
*/
|
|
81
|
+
onPageSizeChange?: (pageSize: number) => void;
|
|
82
|
+
/**
|
|
83
|
+
* Options shown in the page-size selector.
|
|
84
|
+
* @default [10, 20, 50, 100]
|
|
85
|
+
*/
|
|
86
|
+
pageSizeOptions?: number[];
|
|
87
|
+
/**
|
|
88
|
+
* How many page buttons to show on each side of the current page.
|
|
89
|
+
* @default 1
|
|
90
|
+
*/
|
|
91
|
+
siblingCount?: number;
|
|
92
|
+
/**
|
|
93
|
+
* How many page buttons to always show at the start/end of the
|
|
94
|
+
* sequence (acts as "boundary"). @default 1
|
|
95
|
+
*/
|
|
96
|
+
boundaryCount?: number;
|
|
97
|
+
/**
|
|
98
|
+
* Show first/last buttons (`«` / `»`). @default true
|
|
99
|
+
*/
|
|
100
|
+
showFirstLast?: boolean;
|
|
101
|
+
/**
|
|
102
|
+
* Show the direct page-jump input (variant=`default` only).
|
|
103
|
+
* @default true
|
|
104
|
+
*/
|
|
105
|
+
showJumpInput?: boolean;
|
|
106
|
+
/**
|
|
107
|
+
* Disable all interactive elements (kept rendered but inert).
|
|
108
|
+
*/
|
|
109
|
+
disabled?: boolean;
|
|
110
|
+
/**
|
|
111
|
+
* I18n strings. Defaults are English; pass the subset you need
|
|
112
|
+
* to translate.
|
|
113
|
+
*/
|
|
114
|
+
labels?: PaginationLabels;
|
|
115
|
+
/** Root-level Tailwind override. */
|
|
116
|
+
sx?: string;
|
|
117
|
+
/** Per-slot overrides. */
|
|
118
|
+
slotProps?: PaginationSlotProps;
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=pagination.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.types.d.ts","sourceRoot":"","sources":["../../../src/components/Pagination/pagination.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,UAAU,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,YAAY,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,SAAS,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,QAAQ,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,gBAAgB,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,SAAS,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,kBAAkB,EAAE,SAAS,GAAG,MAAM,CAAC;IACnF,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IAEb,sBAAsB;IACtB,QAAQ,EAAE,MAAM,CAAC;IAEjB,kFAAkF;IAClF,UAAU,EAAE,MAAM,CAAC;IAEnB,kDAAkD;IAClD,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAErC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAE9C;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAE1B,oCAAoC;IACpC,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,0BAA0B;IAC1B,SAAS,CAAC,EAAE,mBAAmB,CAAC;CACjC"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { type VariantProps } from 'tailwind-variants';
|
|
2
|
+
/**
|
|
3
|
+
* `<Pagination>` variant recipe.
|
|
4
|
+
*
|
|
5
|
+
* Slots:
|
|
6
|
+
* - `root` — outer `<nav>` container
|
|
7
|
+
* - `summary` — "Showing X-Y of Z" text
|
|
8
|
+
* - `list` — `<ul>` of page buttons
|
|
9
|
+
* - `pageButton` — individual page number button
|
|
10
|
+
* - `activeButton` — modifier applied to the current page
|
|
11
|
+
* - `navButton` — first/prev/next/last buttons
|
|
12
|
+
* - `ellipsis` — `…` rendered when range gap
|
|
13
|
+
* - `pageSizeSelector` — native `<select>` for page size
|
|
14
|
+
* - `jumpInput` — direct page jump `<input>`
|
|
15
|
+
*
|
|
16
|
+
* Variant axes:
|
|
17
|
+
* - `variant` — `default` (full kit) | `compact` (number buttons +
|
|
18
|
+
* prev/next only) | `minimal` ("X / Y pages" + prev/next only).
|
|
19
|
+
* - `size` — `sm` | `md` (default) | `lg`. Drives padding + text
|
|
20
|
+
* size on the buttons.
|
|
21
|
+
*/
|
|
22
|
+
export declare const paginationVariants: import("tailwind-variants").TVReturnType<{
|
|
23
|
+
variant: {
|
|
24
|
+
default: {};
|
|
25
|
+
compact: {};
|
|
26
|
+
minimal: {};
|
|
27
|
+
};
|
|
28
|
+
size: {
|
|
29
|
+
sm: {
|
|
30
|
+
summary: string;
|
|
31
|
+
pageButton: string;
|
|
32
|
+
navButton: string;
|
|
33
|
+
ellipsis: string;
|
|
34
|
+
pageSizeSelector: string;
|
|
35
|
+
jumpInput: string;
|
|
36
|
+
};
|
|
37
|
+
md: {
|
|
38
|
+
summary: string;
|
|
39
|
+
pageButton: string;
|
|
40
|
+
navButton: string;
|
|
41
|
+
ellipsis: string;
|
|
42
|
+
pageSizeSelector: string;
|
|
43
|
+
jumpInput: string;
|
|
44
|
+
};
|
|
45
|
+
lg: {
|
|
46
|
+
summary: string;
|
|
47
|
+
pageButton: string;
|
|
48
|
+
navButton: string;
|
|
49
|
+
ellipsis: string;
|
|
50
|
+
pageSizeSelector: string;
|
|
51
|
+
jumpInput: string;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
}, {
|
|
55
|
+
root: string;
|
|
56
|
+
summary: string;
|
|
57
|
+
list: string;
|
|
58
|
+
pageButton: string[];
|
|
59
|
+
activeButton: string[];
|
|
60
|
+
navButton: string[];
|
|
61
|
+
ellipsis: string;
|
|
62
|
+
pageSizeSelector: string[];
|
|
63
|
+
jumpInput: string[];
|
|
64
|
+
}, undefined, {
|
|
65
|
+
variant: {
|
|
66
|
+
default: {};
|
|
67
|
+
compact: {};
|
|
68
|
+
minimal: {};
|
|
69
|
+
};
|
|
70
|
+
size: {
|
|
71
|
+
sm: {
|
|
72
|
+
summary: string;
|
|
73
|
+
pageButton: string;
|
|
74
|
+
navButton: string;
|
|
75
|
+
ellipsis: string;
|
|
76
|
+
pageSizeSelector: string;
|
|
77
|
+
jumpInput: string;
|
|
78
|
+
};
|
|
79
|
+
md: {
|
|
80
|
+
summary: string;
|
|
81
|
+
pageButton: string;
|
|
82
|
+
navButton: string;
|
|
83
|
+
ellipsis: string;
|
|
84
|
+
pageSizeSelector: string;
|
|
85
|
+
jumpInput: string;
|
|
86
|
+
};
|
|
87
|
+
lg: {
|
|
88
|
+
summary: string;
|
|
89
|
+
pageButton: string;
|
|
90
|
+
navButton: string;
|
|
91
|
+
ellipsis: string;
|
|
92
|
+
pageSizeSelector: string;
|
|
93
|
+
jumpInput: string;
|
|
94
|
+
};
|
|
95
|
+
};
|
|
96
|
+
}, {
|
|
97
|
+
root: string;
|
|
98
|
+
summary: string;
|
|
99
|
+
list: string;
|
|
100
|
+
pageButton: string[];
|
|
101
|
+
activeButton: string[];
|
|
102
|
+
navButton: string[];
|
|
103
|
+
ellipsis: string;
|
|
104
|
+
pageSizeSelector: string[];
|
|
105
|
+
jumpInput: string[];
|
|
106
|
+
}, import("tailwind-variants").TVReturnType<{
|
|
107
|
+
variant: {
|
|
108
|
+
default: {};
|
|
109
|
+
compact: {};
|
|
110
|
+
minimal: {};
|
|
111
|
+
};
|
|
112
|
+
size: {
|
|
113
|
+
sm: {
|
|
114
|
+
summary: string;
|
|
115
|
+
pageButton: string;
|
|
116
|
+
navButton: string;
|
|
117
|
+
ellipsis: string;
|
|
118
|
+
pageSizeSelector: string;
|
|
119
|
+
jumpInput: string;
|
|
120
|
+
};
|
|
121
|
+
md: {
|
|
122
|
+
summary: string;
|
|
123
|
+
pageButton: string;
|
|
124
|
+
navButton: string;
|
|
125
|
+
ellipsis: string;
|
|
126
|
+
pageSizeSelector: string;
|
|
127
|
+
jumpInput: string;
|
|
128
|
+
};
|
|
129
|
+
lg: {
|
|
130
|
+
summary: string;
|
|
131
|
+
pageButton: string;
|
|
132
|
+
navButton: string;
|
|
133
|
+
ellipsis: string;
|
|
134
|
+
pageSizeSelector: string;
|
|
135
|
+
jumpInput: string;
|
|
136
|
+
};
|
|
137
|
+
};
|
|
138
|
+
}, {
|
|
139
|
+
root: string;
|
|
140
|
+
summary: string;
|
|
141
|
+
list: string;
|
|
142
|
+
pageButton: string[];
|
|
143
|
+
activeButton: string[];
|
|
144
|
+
navButton: string[];
|
|
145
|
+
ellipsis: string;
|
|
146
|
+
pageSizeSelector: string[];
|
|
147
|
+
jumpInput: string[];
|
|
148
|
+
}, undefined, unknown, unknown, undefined>>;
|
|
149
|
+
export type PaginationVariants = VariantProps<typeof paginationVariants>;
|
|
150
|
+
//# sourceMappingURL=pagination.variants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.variants.d.ts","sourceRoot":"","sources":["../../../src/components/Pagination/pagination.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CA4F7B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { PopoverProps } from './popover.types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Dashforge TW `<Popover>` — clickable floating content panel.
|
|
4
|
+
*
|
|
5
|
+
* Built on `@radix-ui/react-popover`:
|
|
6
|
+
* - Focus trap inside the popover (Tab cycles within).
|
|
7
|
+
* - Outside-click + Escape dismiss.
|
|
8
|
+
* - APG dialog-like semantics (`role="dialog"` on content).
|
|
9
|
+
* - Portal-rendered.
|
|
10
|
+
*
|
|
11
|
+
* Use `<Popover>` for menus / pickers / settings panels with
|
|
12
|
+
* interactive children. Use `<Tooltip>` for read-only hints.
|
|
13
|
+
*/
|
|
14
|
+
export declare function Popover(props: PopoverProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=Popover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Popover.d.ts","sourceRoot":"","sources":["../../../src/components/Popover/Popover.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,2CAqC1C"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export interface PopoverSlotProps {
|
|
3
|
+
content?: {
|
|
4
|
+
className?: string;
|
|
5
|
+
};
|
|
6
|
+
arrow?: {
|
|
7
|
+
className?: string;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Props for `<Popover>`.
|
|
12
|
+
*
|
|
13
|
+
* Built on `@radix-ui/react-popover`. Use for richer floating UI
|
|
14
|
+
* than a tooltip — e.g. action menus, color pickers, settings
|
|
15
|
+
* panels.
|
|
16
|
+
*
|
|
17
|
+
* Differences vs `<Tooltip>`:
|
|
18
|
+
* - Popover is **clickable** and captures focus inside (focus trap).
|
|
19
|
+
* - Popover supports arbitrary interactive content (forms, buttons).
|
|
20
|
+
* - Popover dismisses on outside-click / Escape (Radix-managed).
|
|
21
|
+
* - No `role="tooltip"` — popovers are conceptually mini-dialogs.
|
|
22
|
+
*/
|
|
23
|
+
export interface PopoverProps {
|
|
24
|
+
/** The trigger element (wrapped in Radix's `asChild` slot). */
|
|
25
|
+
children: ReactNode;
|
|
26
|
+
/** Popover body content. */
|
|
27
|
+
content: ReactNode;
|
|
28
|
+
/** Side of the trigger to render on. @default 'bottom' */
|
|
29
|
+
side?: 'top' | 'right' | 'bottom' | 'left';
|
|
30
|
+
/** Alignment along the perpendicular axis. @default 'center' */
|
|
31
|
+
align?: 'start' | 'center' | 'end';
|
|
32
|
+
/** Show an arrow indicator. @default false */
|
|
33
|
+
showArrow?: boolean;
|
|
34
|
+
/** Controlled open state. */
|
|
35
|
+
open?: boolean;
|
|
36
|
+
/** Called when open state changes. */
|
|
37
|
+
onOpenChange?: (open: boolean) => void;
|
|
38
|
+
/** Side offset in pixels. @default 8 */
|
|
39
|
+
sideOffset?: number;
|
|
40
|
+
/** Width of the popover content. CSS value. */
|
|
41
|
+
width?: string;
|
|
42
|
+
/** Per-slot overrides. */
|
|
43
|
+
slotProps?: PopoverSlotProps;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=popover.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popover.types.d.ts","sourceRoot":"","sources":["../../../src/components/Popover/popover.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,KAAK,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAChC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,YAAY;IAC3B,+DAA+D;IAC/D,QAAQ,EAAE,SAAS,CAAC;IACpB,4BAA4B;IAC5B,OAAO,EAAE,SAAS,CAAC;IACnB,0DAA0D;IAC1D,IAAI,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC3C,gEAAgE;IAChE,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACnC,8CAA8C;IAC9C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,sCAAsC;IACtC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAC9B"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type VariantProps } from 'tailwind-variants';
|
|
2
|
+
export declare const popoverVariants: import("tailwind-variants").TVReturnType<{
|
|
3
|
+
[key: string]: {
|
|
4
|
+
[key: string]: import("tailwind-merge").ClassNameValue | {
|
|
5
|
+
content?: import("tailwind-merge").ClassNameValue;
|
|
6
|
+
arrow?: import("tailwind-merge").ClassNameValue;
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
} | {
|
|
10
|
+
[x: string]: {
|
|
11
|
+
[x: string]: import("tailwind-merge").ClassNameValue | {
|
|
12
|
+
content?: import("tailwind-merge").ClassNameValue;
|
|
13
|
+
arrow?: import("tailwind-merge").ClassNameValue;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
} | {}, {
|
|
17
|
+
content: string[];
|
|
18
|
+
arrow: string;
|
|
19
|
+
}, undefined, {
|
|
20
|
+
[key: string]: {
|
|
21
|
+
[key: string]: import("tailwind-merge").ClassNameValue | {
|
|
22
|
+
content?: import("tailwind-merge").ClassNameValue;
|
|
23
|
+
arrow?: import("tailwind-merge").ClassNameValue;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
} | {}, {
|
|
27
|
+
content: string[];
|
|
28
|
+
arrow: string;
|
|
29
|
+
}, import("tailwind-variants").TVReturnType<unknown, {
|
|
30
|
+
content: string[];
|
|
31
|
+
arrow: string;
|
|
32
|
+
}, undefined, unknown, unknown, undefined>>;
|
|
33
|
+
export type PopoverVariants = VariantProps<typeof popoverVariants>;
|
|
34
|
+
//# sourceMappingURL=popover.variants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popover.variants.d.ts","sourceRoot":"","sources":["../../../src/components/Popover/popover.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1D,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAmB1B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO,eAAe,CAAC,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { RadioGroupProps } from './radioGroup.types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Dashforge TW RadioGroup — bridge-integrated single-choice group.
|
|
4
|
+
*
|
|
5
|
+
* Renders through Radix `RadioGroup.Root` + `Item` + `Indicator`, styled
|
|
6
|
+
* with the `radioGroupVariants` TV recipe. Behaviour at the bridge level
|
|
7
|
+
* is a 1:1 port of `@dashforge/ui/RadioGroup` (MUI):
|
|
8
|
+
*
|
|
9
|
+
* - Inside `DashFormProvider`: registers with the bridge, reads
|
|
10
|
+
* `useDashFieldMeta` for the selected value (reactive snapshot),
|
|
11
|
+
* writes through `bridge.setValue` on change, fires
|
|
12
|
+
* `registration.onChange` / `onBlur` for RHF.
|
|
13
|
+
* - Outside: behaves as a plain Radix RadioGroup (controlled by `value`
|
|
14
|
+
* + `onValueChange`, or uncontrolled via `defaultValue`).
|
|
15
|
+
* - `visibleWhen` predicates the engine state.
|
|
16
|
+
* - `useAccessState(access)` resolves group-level RBAC; per-option RBAC
|
|
17
|
+
* is resolved by calling `useAccessState` for every entry of the
|
|
18
|
+
* `options` array (Rules of Hooks: stable as long as `options.length`
|
|
19
|
+
* is stable, which is the documented contract — mutating the array
|
|
20
|
+
* between renders breaks).
|
|
21
|
+
* - Group-level RBAC has precedence over option-level (hide-the-group
|
|
22
|
+
* wins even if some options would be visible).
|
|
23
|
+
* - Error gating: bridge error shows only after `touched` or after the
|
|
24
|
+
* form has been submitted at least once (Form Closure v1).
|
|
25
|
+
* - StrictMode-safe unregister-on-unmount, mirrors Checkbox/Switch.
|
|
26
|
+
*
|
|
27
|
+
* **A11y**:
|
|
28
|
+
* - The group root is a `<div role="radiogroup">` (Radix default).
|
|
29
|
+
* - A `<label id="...">` is associated with the group via `aria-labelledby`.
|
|
30
|
+
* - The helper/error text is linked via `aria-describedby`.
|
|
31
|
+
* - Each option is a Radix `<RadioGroup.Item>` (`<button role="radio">`)
|
|
32
|
+
* keyboard-accessible by default (arrow keys move selection).
|
|
33
|
+
*/
|
|
34
|
+
export declare function RadioGroup(props: RadioGroupProps): import("react/jsx-runtime").JSX.Element | null;
|
|
35
|
+
//# sourceMappingURL=RadioGroup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadioGroup.d.ts","sourceRoot":"","sources":["../../../src/components/RadioGroup/RadioGroup.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,kDA+OhD"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { Engine } from '@dashforge/ui-core';
|
|
3
|
+
import type { AccessRequirement } from '@dashforge/rbac';
|
|
4
|
+
import type { RadioGroupVariants } from './radioGroup.variants.js';
|
|
5
|
+
/**
|
|
6
|
+
* A single selectable option in a `<RadioGroup>`.
|
|
7
|
+
*/
|
|
8
|
+
export interface RadioGroupOption {
|
|
9
|
+
/** The string value persisted on the form for this option. */
|
|
10
|
+
value: string;
|
|
11
|
+
/** Display label (string or any React node — e.g. with an icon). */
|
|
12
|
+
label: ReactNode;
|
|
13
|
+
/** Per-option explicit disable. ORed with group-level disable + RBAC. */
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* RBAC access requirement for this specific option:
|
|
17
|
+
* - `onUnauthorized: 'hide'` → option not rendered (unless it's the currently selected value, kept disabled to expose the choice)
|
|
18
|
+
* - `onUnauthorized: 'disable'` → option visible but not selectable
|
|
19
|
+
* - `onUnauthorized: 'readonly'` → falls back to disabled (radios have no true readonly semantics)
|
|
20
|
+
*
|
|
21
|
+
* Group-level access has **precedence** over option-level access — if the
|
|
22
|
+
* whole group is hidden/disabled, that wins for all options regardless of
|
|
23
|
+
* their own access.
|
|
24
|
+
*/
|
|
25
|
+
access?: AccessRequirement;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Optional className override for each slot. Use to extend specific parts
|
|
29
|
+
* of the recipe without losing the default classes. Override semantics
|
|
30
|
+
* follow the `tailwind-merge` last-wins rule.
|
|
31
|
+
*/
|
|
32
|
+
export interface RadioGroupSlotProps {
|
|
33
|
+
root?: {
|
|
34
|
+
className?: string;
|
|
35
|
+
};
|
|
36
|
+
label?: {
|
|
37
|
+
className?: string;
|
|
38
|
+
};
|
|
39
|
+
requiredMark?: {
|
|
40
|
+
className?: string;
|
|
41
|
+
};
|
|
42
|
+
optionList?: {
|
|
43
|
+
className?: string;
|
|
44
|
+
};
|
|
45
|
+
option?: {
|
|
46
|
+
className?: string;
|
|
47
|
+
};
|
|
48
|
+
control?: {
|
|
49
|
+
className?: string;
|
|
50
|
+
};
|
|
51
|
+
indicator?: {
|
|
52
|
+
className?: string;
|
|
53
|
+
};
|
|
54
|
+
optionLabel?: {
|
|
55
|
+
className?: string;
|
|
56
|
+
};
|
|
57
|
+
helperText?: {
|
|
58
|
+
className?: string;
|
|
59
|
+
};
|
|
60
|
+
errorText?: {
|
|
61
|
+
className?: string;
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Props for `<RadioGroup>`.
|
|
66
|
+
*
|
|
67
|
+
* Mirrors the MUI-side `@dashforge/ui/RadioGroup` at the bridge level —
|
|
68
|
+
* same `name` / `rules` / `visibleWhen` / `access` semantics, same
|
|
69
|
+
* Form Closure v1 error gating, same option-level RBAC.
|
|
70
|
+
*/
|
|
71
|
+
export interface RadioGroupProps extends RadioGroupVariants {
|
|
72
|
+
/** Field name registered with the bridge. */
|
|
73
|
+
name: string;
|
|
74
|
+
/** Array of selectable options. Order is render order. */
|
|
75
|
+
options: RadioGroupOption[];
|
|
76
|
+
/** Group-level label (rendered above the option list). */
|
|
77
|
+
label?: ReactNode;
|
|
78
|
+
/** React Hook Form validation rules — forwarded to `bridge.register`. */
|
|
79
|
+
rules?: unknown;
|
|
80
|
+
/** Helper text shown below the option list when not in error state. */
|
|
81
|
+
helperText?: ReactNode;
|
|
82
|
+
/** Marks the group as required (renders red `*` after the label). */
|
|
83
|
+
required?: boolean;
|
|
84
|
+
/** Explicit error override (otherwise resolved from bridge). */
|
|
85
|
+
error?: boolean;
|
|
86
|
+
/** Explicit disable override (ORed with RBAC). */
|
|
87
|
+
disabled?: boolean;
|
|
88
|
+
/** Engine predicate — group not rendered when it returns `false`. */
|
|
89
|
+
visibleWhen?: (engine: Engine) => boolean;
|
|
90
|
+
/** Group-level RBAC requirement (precedes option-level access). */
|
|
91
|
+
access?: AccessRequirement;
|
|
92
|
+
/** Root className shortcut (`cn`'d with the variant root class). */
|
|
93
|
+
sx?: string;
|
|
94
|
+
/** Per-slot className overrides. */
|
|
95
|
+
slotProps?: RadioGroupSlotProps;
|
|
96
|
+
/** Controlled value (for standalone mode without a form bridge). */
|
|
97
|
+
value?: string;
|
|
98
|
+
/** Default value for uncontrolled mode (no-op in form mode — bridge wins). */
|
|
99
|
+
defaultValue?: string;
|
|
100
|
+
/** Change handler (called *after* bridge update in form mode). */
|
|
101
|
+
onValueChange?: (value: string) => void;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=radioGroup.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radioGroup.types.d.ts","sourceRoot":"","sources":["../../../src/components/RadioGroup/radioGroup.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,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,KAAK,EAAE,SAAS,CAAC;IACjB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,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,UAAU,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,MAAM,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,SAAS,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,WAAW,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,UAAU,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,SAAS,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACpC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAgB,SAAQ,kBAAkB;IACzD,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,0DAA0D;IAC1D,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,yEAAyE;IACzE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,uEAAuE;IACvE,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gEAAgE;IAChE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qEAAqE;IACrE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1C,mEAAmE;IACnE,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,oEAAoE;IACpE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,oCAAoC;IACpC,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC"}
|