flikkui 0.2.0-beta.2 → 0.2.0-beta.5
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/README.md +92 -0
- package/dist/components/ai/PromptInput/PromptInput.js +23 -15
- package/dist/components/ai/PromptSuggestions/PromptSuggestion.d.ts +27 -0
- package/dist/components/ai/PromptSuggestions/PromptSuggestion.js +62 -0
- package/dist/components/ai/PromptSuggestions/PromptSuggestion.theme.d.ts +10 -0
- package/dist/components/ai/PromptSuggestions/PromptSuggestion.theme.js +12 -0
- package/dist/components/ai/PromptSuggestions/PromptSuggestion.types.d.ts +53 -0
- package/dist/components/ai/PromptSuggestions/index.d.ts +4 -2
- package/dist/components/ai/index.d.ts +2 -12
- package/dist/components/charts/ActivityRings/ActivityRings.js +70 -58
- package/dist/components/charts/ActivityRings/ActivityRings.theme.js +0 -1
- package/dist/components/charts/ActivityRings/ActivityRings.types.d.ts +17 -0
- package/dist/components/charts/BarChart/BarChart.js +8 -4
- package/dist/components/charts/BarChart/BarChart.types.d.ts +14 -0
- package/dist/components/charts/DonutChart/DonutChart.js +11 -8
- package/dist/components/charts/DonutChart/DonutChart.theme.d.ts +3 -0
- package/dist/components/charts/DonutChart/DonutChart.theme.js +5 -4
- package/dist/components/charts/DonutChart/donut-utils.d.ts +5 -0
- package/dist/components/charts/DonutChart/donut-utils.js +26 -1
- package/dist/components/charts/Heatmap/Heatmap.theme.js +2 -2
- package/dist/components/charts/shared/ChartAxis/XAxis.d.ts +2 -2
- package/dist/components/charts/shared/ChartAxis/XAxis.js +4 -4
- package/dist/components/charts/shared/ChartAxis/YAxis.d.ts +2 -2
- package/dist/components/charts/shared/ChartAxis/YAxis.js +8 -7
- package/dist/components/charts/shared/ChartGrid/HorizontalGrid.d.ts +1 -1
- package/dist/components/charts/shared/ChartGrid/HorizontalGrid.js +2 -2
- package/dist/components/charts/theme/chart.theme.d.ts +1 -1
- package/dist/components/charts/theme/chart.theme.js +39 -39
- package/dist/components/core/Accordion/Accordion.d.ts +1 -1
- package/dist/components/core/Accordion/Accordion.js +2 -2
- package/dist/components/core/Accordion/Accordion.types.d.ts +8 -0
- package/dist/components/core/Badge/Badge.js +11 -15
- package/dist/components/core/Badge/Badge.theme.js +7 -21
- package/dist/components/core/Badge/Badge.types.d.ts +9 -1
- package/dist/components/core/Button/Button.js +2 -2
- package/dist/components/core/Button/Button.theme.js +1 -1
- package/dist/components/core/Button/Button.types.d.ts +8 -0
- package/dist/components/core/Card/Card.js +8 -2
- package/dist/components/core/Card/Card.theme.js +1 -1
- package/dist/components/core/Card/Card.types.d.ts +24 -1
- package/dist/components/core/Drawer/Drawer.d.ts +1 -1
- package/dist/components/core/Drawer/Drawer.js +10 -40
- package/dist/components/core/Drawer/Drawer.theme.js +2 -1
- package/dist/components/core/Drawer/Drawer.types.d.ts +8 -0
- package/dist/components/core/Dropdown/Dropdown.d.ts +1 -1
- package/dist/components/core/Dropdown/Dropdown.js +2 -2
- package/dist/components/core/Dropdown/Dropdown.types.d.ts +8 -0
- package/dist/components/core/Metric/Metric.d.ts +1 -1
- package/dist/components/core/Metric/Metric.js +9 -5
- package/dist/components/core/Metric/Metric.theme.d.ts +1 -1
- package/dist/components/core/Metric/Metric.theme.js +38 -28
- package/dist/components/core/Metric/Metric.types.d.ts +27 -8
- package/dist/components/core/Modal/Modal.d.ts +1 -1
- package/dist/components/core/Modal/Modal.js +17 -40
- package/dist/components/core/Modal/Modal.theme.js +8 -3
- package/dist/components/core/Modal/Modal.types.d.ts +18 -0
- package/dist/components/core/Modal/index.d.ts +1 -1
- package/dist/components/core/Notification/Notification.js +2 -0
- package/dist/components/core/Pill/Pill.d.ts +6 -11
- package/dist/components/core/Pill/Pill.theme.d.ts +2 -2
- package/dist/components/core/Pill/Pill.types.d.ts +9 -22
- package/dist/components/core/Pill/index.d.ts +1 -1
- package/dist/components/core/Popover/Popover.d.ts +1 -1
- package/dist/components/core/Popover/Popover.js +2 -2
- package/dist/components/core/Popover/Popover.types.d.ts +8 -0
- package/dist/components/core/Progress/Progress.d.ts +28 -0
- package/dist/components/core/Progress/Progress.js +114 -0
- package/dist/components/core/Progress/Progress.theme.d.ts +5 -0
- package/dist/components/core/Progress/Progress.theme.js +33 -0
- package/dist/components/core/Progress/Progress.types.d.ts +92 -0
- package/dist/components/core/Progress/index.d.ts +2 -0
- package/dist/components/core/Table/Table.animations.d.ts +5 -16
- package/dist/components/core/Table/Table.animations.js +46 -0
- package/dist/components/core/Table/Table.d.ts +0 -27
- package/dist/components/core/Table/Table.js +58 -156
- package/dist/components/core/Table/Table.theme.js +28 -19
- package/dist/components/core/Table/Table.types.d.ts +95 -8
- package/dist/components/core/Table/Table.utils.d.ts +7 -0
- package/dist/components/core/Table/Table.utils.js +11 -1
- package/dist/components/core/Table/{components/TableActions/TableActions.d.ts → TableActions.d.ts} +3 -3
- package/dist/components/core/Table/{components/TableActions/TableActions.js → TableActions.js} +14 -24
- package/dist/components/core/Table/{components/TableActions/TableActionsMenu.d.ts → TableActionsMenu.d.ts} +1 -1
- package/dist/components/core/Table/{components/TableActions/TableActionsMenu.js → TableActionsMenu.js} +4 -4
- package/dist/components/core/Table/{components/core/TableBody.d.ts → TableBody.d.ts} +1 -1
- package/dist/components/core/Table/{components/core/TableBody.js → TableBody.js} +14 -20
- package/dist/components/core/Table/{components/core/TableCell.d.ts → TableCell.d.ts} +1 -9
- package/dist/components/core/Table/{components/core/TableCell.js → TableCell.js} +5 -13
- package/dist/components/core/Table/TableColumnManager.d.ts +3 -0
- package/dist/components/core/Table/TableColumnManager.js +34 -0
- package/dist/components/core/Table/{components/DeclarativeComponents.d.ts → TableDeclarative.d.ts} +1 -1
- package/dist/components/core/Table/{components/DeclarativeComponents.js → TableDeclarative.js} +6 -56
- package/dist/components/core/Table/TableFilter.d.ts +3 -0
- package/dist/components/core/Table/TableFilter.js +122 -0
- package/dist/components/core/Table/{components/core/TableHeader.d.ts → TableHeader.d.ts} +1 -1
- package/dist/components/core/Table/{components/core/TableHeader.js → TableHeader.js} +15 -29
- package/dist/components/core/Table/TablePagination.d.ts +7 -0
- package/dist/components/core/Table/{components/TablePagination/TablePagination.js → TablePagination.js} +5 -16
- package/dist/components/core/Table/TableRow.d.ts +8 -0
- package/dist/components/core/Table/TableRow.js +45 -0
- package/dist/components/core/Table/TableSelectionHeader.d.ts +7 -0
- package/dist/components/core/Table/{components/TableSelectionHeader/TableSelectionHeader.js → TableSelectionHeader.js} +4 -5
- package/dist/components/core/Table/hooks/index.d.ts +10 -0
- package/dist/components/core/Table/hooks/useTableColumns.d.ts +16 -0
- package/dist/components/core/Table/hooks/useTableColumns.js +67 -0
- package/dist/components/core/Table/hooks/useTableExpansion.d.ts +8 -0
- package/dist/components/core/Table/hooks/useTableExpansion.js +15 -0
- package/dist/components/core/Table/hooks/useTableFilter.d.ts +12 -0
- package/dist/components/core/Table/hooks/useTableFilter.js +37 -0
- package/dist/components/core/Table/hooks/useTablePagination.d.ts +12 -0
- package/dist/components/core/Table/hooks/useTablePagination.js +13 -0
- package/dist/components/core/Table/hooks/useTableSelection.d.ts +17 -0
- package/dist/components/core/Table/hooks/useTableSelection.js +40 -0
- package/dist/components/core/Table/index.d.ts +9 -8
- package/dist/components/core/Table/index.js +7 -5
- package/dist/components/core/Tabs/Tabs.js +2 -2
- package/dist/components/core/Tabs/Tabs.types.d.ts +8 -0
- package/dist/components/core/Tag/Tag.animations.d.ts +3 -0
- package/dist/components/core/Tag/Tag.animations.js +31 -0
- package/dist/components/core/Tag/Tag.d.ts +14 -0
- package/dist/components/core/Tag/Tag.js +45 -0
- package/dist/components/core/Tag/Tag.theme.d.ts +2 -0
- package/dist/components/core/Tag/Tag.theme.js +21 -0
- package/dist/components/core/Tag/Tag.types.d.ts +40 -0
- package/dist/components/core/Tag/index.d.ts +3 -0
- package/dist/components/core/Tooltip/Tooltip.d.ts +1 -1
- package/dist/components/core/Tooltip/Tooltip.js +3 -3
- package/dist/components/core/Tooltip/Tooltip.theme.js +1 -1
- package/dist/components/core/Tooltip/Tooltip.types.d.ts +17 -0
- package/dist/components/core/index.d.ts +2 -1
- package/dist/components/core/index.js +12 -5
- package/dist/components/effects/CustomCursor/CustomCursor.d.ts +0 -13
- package/dist/components/effects/CustomCursor/CustomCursor.js +26 -2
- package/dist/components/effects/CustomCursor/CustomCursor.theme.js +12 -1
- package/dist/components/effects/CustomCursor/CustomCursor.types.d.ts +14 -1
- package/dist/components/forms/Combobox/Combobox.d.ts +25 -0
- package/dist/components/forms/Combobox/Combobox.js +412 -0
- package/dist/components/forms/Combobox/Combobox.theme.d.ts +6 -0
- package/dist/components/forms/Combobox/Combobox.theme.js +60 -0
- package/dist/components/forms/Combobox/Combobox.types.d.ts +111 -0
- package/dist/components/forms/Combobox/index.d.ts +3 -0
- package/dist/components/forms/FileUpload/FileUpload.js +2 -0
- package/dist/components/forms/Input/Input.js +25 -28
- package/dist/components/forms/Input/inputMasks.d.ts +15 -0
- package/dist/components/forms/Input/inputMasks.js +72 -1
- package/dist/components/forms/InputTag/InputTag.d.ts +40 -0
- package/dist/components/forms/InputTag/InputTag.js +491 -0
- package/dist/components/forms/InputTag/InputTag.theme.d.ts +2 -0
- package/dist/components/forms/InputTag/InputTag.theme.js +16 -0
- package/dist/components/forms/InputTag/InputTag.types.d.ts +107 -0
- package/dist/components/forms/InputTag/index.d.ts +3 -0
- package/dist/components/forms/Select/Select.d.ts +101 -2
- package/dist/components/forms/Select/Select.js +128 -132
- package/dist/components/forms/Select/Select.theme.js +10 -14
- package/dist/components/forms/Select/Select.types.d.ts +6 -2
- package/dist/components/forms/Select/index.d.ts +7 -4
- package/dist/components/forms/Select/useSelectState.d.ts +66 -0
- package/dist/components/forms/Select/useSelectState.js +134 -0
- package/dist/components/forms/SelectExpand/SelectExpand.animations.d.ts +20 -0
- package/dist/components/forms/SelectExpand/SelectExpand.animations.js +74 -0
- package/dist/components/forms/SelectExpand/SelectExpand.d.ts +9 -0
- package/dist/components/forms/SelectExpand/SelectExpand.js +223 -0
- package/dist/components/forms/SelectExpand/SelectExpand.theme.d.ts +5 -0
- package/dist/components/forms/SelectExpand/SelectExpand.theme.js +74 -0
- package/dist/components/forms/SelectExpand/SelectExpand.types.d.ts +126 -0
- package/dist/components/forms/SelectExpand/index.d.ts +4 -0
- package/dist/components/forms/Switch/Switch.js +3 -3
- package/dist/components/forms/Switch/Switch.theme.d.ts +1 -1
- package/dist/components/forms/Switch/Switch.theme.js +2 -2
- package/dist/components/forms/TimePicker/TimePicker.animations.d.ts +0 -46
- package/dist/components/forms/TimePicker/TimePicker.d.ts +15 -6
- package/dist/components/forms/TimePicker/TimePicker.js +285 -124
- package/dist/components/forms/TimePicker/TimePicker.theme.d.ts +1 -1
- package/dist/components/forms/TimePicker/TimePicker.theme.js +39 -22
- package/dist/components/forms/TimePicker/TimePicker.types.d.ts +88 -34
- package/dist/components/forms/TimePicker/TimePickerContent.d.ts +7 -10
- package/dist/components/forms/TimePicker/TimePickerContent.js +149 -16
- package/dist/components/forms/TimePicker/TimePickerTrigger.d.ts +3 -3
- package/dist/components/forms/TimePicker/TimePickerTrigger.js +22 -19
- package/dist/components/forms/TimePicker/WheelColumn.d.ts +14 -0
- package/dist/components/forms/TimePicker/WheelColumn.js +90 -0
- package/dist/components/forms/TimePicker/index.d.ts +4 -1
- package/dist/components/forms/TimePicker/useWheelPicker.d.ts +37 -0
- package/dist/components/forms/TimePicker/useWheelPicker.js +138 -0
- package/dist/components/forms/forms.theme.d.ts +14 -0
- package/dist/components/forms/forms.theme.js +31 -0
- package/dist/components/forms/index.d.ts +9 -3
- package/dist/components/forms/index.js +73 -2
- package/dist/hooks/index.d.ts +0 -4
- package/dist/icons/Icon.d.ts +7 -0
- package/dist/icons/Icon.js +6 -2
- package/dist/index.js +21 -19
- package/dist/styles.css +1 -1
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/optimisticErrors.js +1 -70
- package/package.json +1 -1
- package/dist/components/ai/EditingIndicator/EditingIndicator.animations.d.ts +0 -31
- package/dist/components/ai/EditingIndicator/EditingIndicator.animations.js +0 -115
- package/dist/components/ai/EditingIndicator/EditingIndicator.d.ts +0 -35
- package/dist/components/ai/EditingIndicator/EditingIndicator.js +0 -94
- package/dist/components/ai/EditingIndicator/EditingIndicator.theme.d.ts +0 -2
- package/dist/components/ai/EditingIndicator/EditingIndicator.theme.js +0 -13
- package/dist/components/ai/EditingIndicator/EditingIndicator.types.d.ts +0 -54
- package/dist/components/ai/EditingIndicator/index.d.ts +0 -9
- package/dist/components/ai/GenerativeRenderer/GenerativeRenderer.d.ts +0 -3
- package/dist/components/ai/GenerativeRenderer/GenerativeRenderer.js +0 -126
- package/dist/components/ai/GenerativeRenderer/GenerativeRenderer.theme.d.ts +0 -2
- package/dist/components/ai/GenerativeRenderer/GenerativeRenderer.theme.js +0 -8
- package/dist/components/ai/GenerativeRenderer/GenerativeRenderer.types.d.ts +0 -45
- package/dist/components/ai/GenerativeRenderer/index.d.ts +0 -3
- package/dist/components/ai/PresenceIndicator/PresenceIndicator.animations.d.ts +0 -17
- package/dist/components/ai/PresenceIndicator/PresenceIndicator.animations.js +0 -56
- package/dist/components/ai/PresenceIndicator/PresenceIndicator.d.ts +0 -38
- package/dist/components/ai/PresenceIndicator/PresenceIndicator.js +0 -110
- package/dist/components/ai/PresenceIndicator/PresenceIndicator.theme.d.ts +0 -2
- package/dist/components/ai/PresenceIndicator/PresenceIndicator.theme.js +0 -13
- package/dist/components/ai/PresenceIndicator/PresenceIndicator.types.d.ts +0 -53
- package/dist/components/ai/PresenceIndicator/index.d.ts +0 -8
- package/dist/components/ai/PresenceProvider/PresenceContext.d.ts +0 -24
- package/dist/components/ai/PresenceProvider/PresenceContext.js +0 -34
- package/dist/components/ai/PresenceProvider/PresenceProvider.d.ts +0 -32
- package/dist/components/ai/PresenceProvider/PresenceProvider.js +0 -321
- package/dist/components/ai/PresenceProvider/PresenceProvider.types.d.ts +0 -140
- package/dist/components/ai/PresenceProvider/adapters/MockAdapter.d.ts +0 -102
- package/dist/components/ai/PresenceProvider/adapters/MockAdapter.js +0 -331
- package/dist/components/ai/PresenceProvider/adapters/PresenceAdapter.d.ts +0 -93
- package/dist/components/ai/PresenceProvider/adapters/SupabaseAdapter.d.ts +0 -134
- package/dist/components/ai/PresenceProvider/adapters/WebSocketAdapter.d.ts +0 -149
- package/dist/components/ai/PresenceProvider/adapters/index.d.ts +0 -11
- package/dist/components/ai/PresenceProvider/index.d.ts +0 -10
- package/dist/components/ai/PromptSuggestions/PromptSuggestions.d.ts +0 -27
- package/dist/components/ai/PromptSuggestions/PromptSuggestions.js +0 -61
- package/dist/components/ai/PromptSuggestions/PromptSuggestions.types.d.ts +0 -65
- package/dist/components/ai/VersionSlider/VersionSlider.d.ts +0 -3
- package/dist/components/ai/VersionSlider/VersionSlider.js +0 -97
- package/dist/components/ai/VersionSlider/VersionSlider.theme.d.ts +0 -2
- package/dist/components/ai/VersionSlider/VersionSlider.theme.js +0 -18
- package/dist/components/ai/VersionSlider/VersionSlider.types.d.ts +0 -77
- package/dist/components/ai/VersionSlider/index.d.ts +0 -3
- package/dist/components/core/Pill/Pill.animations.js +0 -25
- package/dist/components/core/Pill/Pill.js +0 -145
- package/dist/components/core/Pill/Pill.theme.js +0 -65
- package/dist/components/core/RetryBoundary/RetryBoundary.d.ts +0 -35
- package/dist/components/core/RetryBoundary/RetryBoundary.js +0 -154
- package/dist/components/core/RetryBoundary/RetryBoundary.theme.d.ts +0 -2
- package/dist/components/core/RetryBoundary/RetryBoundary.theme.js +0 -7
- package/dist/components/core/RetryBoundary/RetryBoundary.types.d.ts +0 -51
- package/dist/components/core/RetryBoundary/index.d.ts +0 -3
- package/dist/components/core/Table/components/TableActions/TableActions.types.d.ts +0 -40
- package/dist/components/core/Table/components/TableActions/index.d.ts +0 -3
- package/dist/components/core/Table/components/TableActionsMenu.d.ts +0 -6
- package/dist/components/core/Table/components/TablePagination/TablePagination.d.ts +0 -17
- package/dist/components/core/Table/components/TablePagination/TablePagination.types.d.ts +0 -21
- package/dist/components/core/Table/components/TablePagination/index.d.ts +0 -2
- package/dist/components/core/Table/components/TableSelectionHeader/TableSelectionHeader.d.ts +0 -15
- package/dist/components/core/Table/components/TableSelectionHeader/index.d.ts +0 -3
- package/dist/components/core/Table/components/core/TableRow.d.ts +0 -3
- package/dist/components/core/Table/components/core/TableRow.js +0 -44
- package/dist/components/core/Table/components/core/index.d.ts +0 -4
- package/dist/components/forms/OptimisticForm/OptimisticForm.d.ts +0 -33
- package/dist/components/forms/OptimisticForm/OptimisticForm.js +0 -87
- package/dist/components/forms/OptimisticForm/OptimisticForm.theme.d.ts +0 -2
- package/dist/components/forms/OptimisticForm/OptimisticForm.theme.js +0 -8
- package/dist/components/forms/OptimisticForm/OptimisticForm.types.d.ts +0 -74
- package/dist/components/forms/OptimisticForm/index.d.ts +0 -3
- package/dist/hooks/useOptimisticMutation.d.ts +0 -109
- package/dist/hooks/useOptimisticMutation.js +0 -171
- package/dist/hooks/usePresence.d.ts +0 -88
- package/dist/utils/presenceUtils.d.ts +0 -66
- package/dist/utils/presenceUtils.js +0 -107
|
@@ -1,24 +1,20 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import { PillProps } from
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { PillProps } from "./Pill.types";
|
|
3
3
|
/**
|
|
4
4
|
* Pill component - Simplified selectable chip for filters and tags
|
|
5
5
|
*
|
|
6
|
-
* A focused
|
|
7
|
-
*
|
|
6
|
+
* A focused component with single outline style. For colorful semantic
|
|
7
|
+
* variations, use Badge instead.
|
|
8
8
|
*
|
|
9
9
|
* @example Basic usage
|
|
10
10
|
* ```tsx
|
|
11
|
-
* <Pill
|
|
11
|
+
* <Pill>Design</Pill>
|
|
12
12
|
* ```
|
|
13
13
|
*
|
|
14
14
|
* @example Selectable filter
|
|
15
15
|
* ```tsx
|
|
16
16
|
* const [selected, setSelected] = useState(false);
|
|
17
|
-
* <Pill
|
|
18
|
-
* variant="primary"
|
|
19
|
-
* selected={selected}
|
|
20
|
-
* onSelect={setSelected}
|
|
21
|
-
* >
|
|
17
|
+
* <Pill selected={selected} onSelect={setSelected}>
|
|
22
18
|
* Frontend
|
|
23
19
|
* </Pill>
|
|
24
20
|
* ```
|
|
@@ -27,7 +23,6 @@ import { PillProps } from './Pill.types';
|
|
|
27
23
|
* ```tsx
|
|
28
24
|
* const [filters, setFilters] = useState(['design']);
|
|
29
25
|
* <Pill
|
|
30
|
-
* variant="primary"
|
|
31
26
|
* selected={filters.includes('design')}
|
|
32
27
|
* onSelect={(selected) => {
|
|
33
28
|
* setFilters(selected
|
|
@@ -2,7 +2,7 @@ import { PillTheme } from "./Pill.types";
|
|
|
2
2
|
/**
|
|
3
3
|
* Default theme for Pill component
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* Simple outline style for filter chips and tags.
|
|
6
|
+
* For colorful semantic variations, use Badge instead.
|
|
7
7
|
*/
|
|
8
8
|
export declare const pillTheme: PillTheme;
|
|
@@ -3,17 +3,16 @@ import React from "react";
|
|
|
3
3
|
* Pill component props
|
|
4
4
|
*
|
|
5
5
|
* A simplified, focused component for filters, tags, and selectable chips.
|
|
6
|
-
*
|
|
6
|
+
* Single outline style - use Badge for colorful semantic variations.
|
|
7
7
|
*
|
|
8
8
|
* @example Basic usage
|
|
9
9
|
* ```tsx
|
|
10
|
-
* <Pill
|
|
10
|
+
* <Pill>Design</Pill>
|
|
11
11
|
* ```
|
|
12
12
|
*
|
|
13
13
|
* @example Selectable filter
|
|
14
14
|
* ```tsx
|
|
15
15
|
* <Pill
|
|
16
|
-
* variant="primary"
|
|
17
16
|
* selected={isSelected}
|
|
18
17
|
* onSelect={setIsSelected}
|
|
19
18
|
* >
|
|
@@ -24,10 +23,6 @@ import React from "react";
|
|
|
24
23
|
export interface PillProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, "onChange" | "onSelect" | "onAnimationStart" | "onDragStart" | "onDragEnd" | "onDrag"> {
|
|
25
24
|
/** Content to display inside the pill */
|
|
26
25
|
children: React.ReactNode;
|
|
27
|
-
/** Visual style variant (filled, outline, soft) */
|
|
28
|
-
variant?: PillVariant;
|
|
29
|
-
/** Semantic color (primary, success, danger, etc.) */
|
|
30
|
-
color?: PillColor;
|
|
31
26
|
/** Size of the pill */
|
|
32
27
|
size?: PillSize;
|
|
33
28
|
/**
|
|
@@ -53,14 +48,6 @@ export interface PillProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, "
|
|
|
53
48
|
/** Theme overrides for component styling */
|
|
54
49
|
theme?: PillThemeOverrides;
|
|
55
50
|
}
|
|
56
|
-
/**
|
|
57
|
-
* Pill visual variants (appearance)
|
|
58
|
-
*/
|
|
59
|
-
export type PillVariant = "filled" | "outline" | "soft";
|
|
60
|
-
/**
|
|
61
|
-
* Pill semantic colors (intent)
|
|
62
|
-
*/
|
|
63
|
-
export type PillColor = "neutral" | "primary" | "success" | "warning" | "danger";
|
|
64
51
|
/**
|
|
65
52
|
* Pill size variants
|
|
66
53
|
*/
|
|
@@ -72,12 +59,12 @@ export type PillSize = "sm" | "md" | "lg";
|
|
|
72
59
|
* the shadcn approach where className prop takes highest priority.
|
|
73
60
|
*/
|
|
74
61
|
export interface PillThemeOverrides {
|
|
75
|
-
/**
|
|
62
|
+
/** Base style - structure and default colors */
|
|
76
63
|
baseStyle?: string;
|
|
77
|
-
/**
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
|
|
64
|
+
/** Hover state - applied when interactive and NOT selected */
|
|
65
|
+
hoverStyle?: string;
|
|
66
|
+
/** Selected state - applied when selected */
|
|
67
|
+
selectedStyle?: string;
|
|
81
68
|
/** Size-specific styles */
|
|
82
69
|
sizes?: Partial<Record<PillSize, string>>;
|
|
83
70
|
/** Icon sizes for iconStart and CheckIcon */
|
|
@@ -88,8 +75,8 @@ export interface PillThemeOverrides {
|
|
|
88
75
|
*/
|
|
89
76
|
export interface PillTheme {
|
|
90
77
|
baseStyle: string;
|
|
91
|
-
|
|
92
|
-
|
|
78
|
+
hoverStyle: string;
|
|
79
|
+
selectedStyle: string;
|
|
93
80
|
sizes: Record<PillSize, string>;
|
|
94
81
|
iconSizes: Record<PillSize, string>;
|
|
95
82
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { PopoverRootProps as PopoverProps } from "./Popover.types";
|
|
3
|
-
export declare const Popover: (({ children, className, isOpen: controlledIsOpen, defaultIsOpen, onOpenChange, placement, offset, triggerType, closeOnClickOutside, closeOnEsc, preventClose, hasBackdrop, theme: themeOverrides, ...props }: PopoverProps) => React.JSX.Element) & {
|
|
3
|
+
export declare const Popover: (({ children, className, isOpen: controlledIsOpen, defaultIsOpen, onOpenChange, placement, offset, triggerType, closeOnClickOutside, closeOnEsc, preventClose, hasBackdrop, theme: themeOverrides, darkMode, ...props }: PopoverProps) => React.JSX.Element) & {
|
|
4
4
|
Trigger: React.ForwardRefExoticComponent<Omit<import("./Popover.types").PopoverTriggerProps, "ref"> & React.RefAttributes<any>>;
|
|
5
5
|
Content: React.ForwardRefExoticComponent<import("./Popover.types").PopoverContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
6
6
|
};
|
|
@@ -21,7 +21,7 @@ import { popoverTheme } from './Popover.theme.js';
|
|
|
21
21
|
* </Popover>
|
|
22
22
|
* ```
|
|
23
23
|
*/
|
|
24
|
-
const PopoverRoot = ({ children, className, isOpen: controlledIsOpen, defaultIsOpen = false, onOpenChange, placement = "bottom", offset = 8, triggerType = "click", closeOnClickOutside = true, closeOnEsc = true, preventClose = false, hasBackdrop = false, theme: themeOverrides, ...props }) => {
|
|
24
|
+
const PopoverRoot = ({ children, className, isOpen: controlledIsOpen, defaultIsOpen = false, onOpenChange, placement = "bottom", offset = 8, triggerType = "click", closeOnClickOutside = true, closeOnEsc = true, preventClose = false, hasBackdrop = false, theme: themeOverrides, darkMode = false, ...props }) => {
|
|
25
25
|
// State for uncontrolled mode
|
|
26
26
|
const [uncontrolledIsOpen, setUncontrolledIsOpen] = useState(defaultIsOpen);
|
|
27
27
|
// Determine if controlled or uncontrolled
|
|
@@ -58,7 +58,7 @@ const PopoverRoot = ({ children, className, isOpen: controlledIsOpen, defaultIsO
|
|
|
58
58
|
theme,
|
|
59
59
|
};
|
|
60
60
|
return (React__default.createElement(PopoverContext.Provider, { value: contextValue },
|
|
61
|
-
React__default.createElement("div", { className: cn("popover", className), "data-state": isOpen ? "open" : "closed", "data-backdrop": hasBackdrop ? "true" : "false", ...props }, children)));
|
|
61
|
+
React__default.createElement("div", { className: cn("popover", darkMode && "dark", className), "data-state": isOpen ? "open" : "closed", "data-backdrop": hasBackdrop ? "true" : "false", ...props }, children)));
|
|
62
62
|
};
|
|
63
63
|
// Export as a unified component
|
|
64
64
|
const Popover = Object.assign(PopoverRoot, {
|
|
@@ -29,6 +29,14 @@ export interface PopoverRootProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
29
29
|
preventClose?: boolean;
|
|
30
30
|
hasBackdrop?: boolean;
|
|
31
31
|
theme?: Partial<PopoverTheme>;
|
|
32
|
+
/**
|
|
33
|
+
* Force dark mode styling for the component. Use when placing the component
|
|
34
|
+
* on a dark background while the page is in light mode. This applies the
|
|
35
|
+
* 'dark' class to the container, making text, borders, and other elements
|
|
36
|
+
* use light colors for visibility.
|
|
37
|
+
* @default false
|
|
38
|
+
*/
|
|
39
|
+
darkMode?: boolean;
|
|
32
40
|
}
|
|
33
41
|
export interface PopoverTriggerProps {
|
|
34
42
|
children: React.ReactElement;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { ProgressProps } from "./Progress.types";
|
|
3
|
+
/**
|
|
4
|
+
* Progress component - Linear progress bar for tracking completion
|
|
5
|
+
*
|
|
6
|
+
* Features:
|
|
7
|
+
* - Determinate mode: Shows specific progress value (0-100)
|
|
8
|
+
* - Indeterminate mode: Animated loading state when value is undefined
|
|
9
|
+
* - Multiple sizes and semantic colors
|
|
10
|
+
* - Flexible label positioning (right, top, bottom, inside)
|
|
11
|
+
* - Respects reduced motion preferences
|
|
12
|
+
* - Full className override support
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* // Determinate progress
|
|
16
|
+
* <Progress value={60} color="primary" />
|
|
17
|
+
*
|
|
18
|
+
* // With label
|
|
19
|
+
* <Progress value={75} showLabel labelPosition="right" />
|
|
20
|
+
*
|
|
21
|
+
* // Indeterminate (loading)
|
|
22
|
+
* <Progress color="primary" />
|
|
23
|
+
*
|
|
24
|
+
* // Custom label format
|
|
25
|
+
* <Progress value={50} showLabel formatLabel={(pct) => `${pct}% complete`} />
|
|
26
|
+
*/
|
|
27
|
+
declare const Progress: React.FC<ProgressProps>;
|
|
28
|
+
export { Progress };
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import React__default, { useMemo } from 'react';
|
|
2
|
+
import { useReducedMotion, motion } from 'motion/react';
|
|
3
|
+
import { progressTheme } from './Progress.theme.js';
|
|
4
|
+
import { cn } from '../../../utils/cn.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Progress component - Linear progress bar for tracking completion
|
|
8
|
+
*
|
|
9
|
+
* Features:
|
|
10
|
+
* - Determinate mode: Shows specific progress value (0-100)
|
|
11
|
+
* - Indeterminate mode: Animated loading state when value is undefined
|
|
12
|
+
* - Multiple sizes and semantic colors
|
|
13
|
+
* - Flexible label positioning (right, top, bottom, inside)
|
|
14
|
+
* - Respects reduced motion preferences
|
|
15
|
+
* - Full className override support
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* // Determinate progress
|
|
19
|
+
* <Progress value={60} color="primary" />
|
|
20
|
+
*
|
|
21
|
+
* // With label
|
|
22
|
+
* <Progress value={75} showLabel labelPosition="right" />
|
|
23
|
+
*
|
|
24
|
+
* // Indeterminate (loading)
|
|
25
|
+
* <Progress color="primary" />
|
|
26
|
+
*
|
|
27
|
+
* // Custom label format
|
|
28
|
+
* <Progress value={50} showLabel formatLabel={(pct) => `${pct}% complete`} />
|
|
29
|
+
*/
|
|
30
|
+
const Progress = ({ value, size = "md", color = "primary", showLabel = false, labelPosition = "right", formatLabel, animated = true, trackClassName, fillClassName, className, theme: customTheme, ...props }) => {
|
|
31
|
+
const shouldReduceMotion = useReducedMotion();
|
|
32
|
+
// Merge custom theme with default theme
|
|
33
|
+
const theme = useMemo(() => {
|
|
34
|
+
if (!customTheme)
|
|
35
|
+
return progressTheme;
|
|
36
|
+
return {
|
|
37
|
+
...progressTheme,
|
|
38
|
+
...customTheme,
|
|
39
|
+
sizes: { ...progressTheme.sizes, ...customTheme.sizes },
|
|
40
|
+
colors: { ...progressTheme.colors, ...customTheme.colors },
|
|
41
|
+
};
|
|
42
|
+
}, [customTheme]);
|
|
43
|
+
// Calculate percentage (clamped to 0-100)
|
|
44
|
+
const percentage = useMemo(() => {
|
|
45
|
+
if (value === undefined || value === null)
|
|
46
|
+
return 0;
|
|
47
|
+
return Math.min(Math.max(Math.round(value), 0), 100);
|
|
48
|
+
}, [value]);
|
|
49
|
+
// Determine if this is indeterminate mode
|
|
50
|
+
const isIndeterminate = value === undefined || value === null;
|
|
51
|
+
// Format the label
|
|
52
|
+
const label = useMemo(() => {
|
|
53
|
+
if (formatLabel)
|
|
54
|
+
return formatLabel(percentage);
|
|
55
|
+
return `${percentage}%`;
|
|
56
|
+
}, [percentage, formatLabel]);
|
|
57
|
+
// Determine if animation should be applied
|
|
58
|
+
const shouldAnimate = animated && !shouldReduceMotion;
|
|
59
|
+
// Get container layout based on label position
|
|
60
|
+
const containerLayoutClass = useMemo(() => {
|
|
61
|
+
if (!showLabel || isIndeterminate)
|
|
62
|
+
return "";
|
|
63
|
+
switch (labelPosition) {
|
|
64
|
+
case "top":
|
|
65
|
+
return "flex flex-col gap-1.5";
|
|
66
|
+
case "bottom":
|
|
67
|
+
return "flex flex-col-reverse gap-1.5";
|
|
68
|
+
case "right":
|
|
69
|
+
return "flex items-center gap-3";
|
|
70
|
+
case "inside":
|
|
71
|
+
return "";
|
|
72
|
+
default:
|
|
73
|
+
return "";
|
|
74
|
+
}
|
|
75
|
+
}, [showLabel, labelPosition, isIndeterminate]);
|
|
76
|
+
// Render label element
|
|
77
|
+
const renderLabel = () => {
|
|
78
|
+
if (!showLabel || isIndeterminate)
|
|
79
|
+
return null;
|
|
80
|
+
if (labelPosition === "inside") {
|
|
81
|
+
// Only show inside label for lg size (enough height)
|
|
82
|
+
if (size !== "lg")
|
|
83
|
+
return null;
|
|
84
|
+
return React__default.createElement("span", { className: theme.insideLabelStyle }, label);
|
|
85
|
+
}
|
|
86
|
+
return (React__default.createElement("span", { className: cn(theme.labelStyle, labelPosition === "top" || labelPosition === "bottom"
|
|
87
|
+
? "text-left"
|
|
88
|
+
: "") }, label));
|
|
89
|
+
};
|
|
90
|
+
// Track element with optional fill
|
|
91
|
+
const renderTrack = () => (React__default.createElement("div", { className: cn(theme.trackStyle, theme.sizes[size], "relative", trackClassName) },
|
|
92
|
+
isIndeterminate ? (
|
|
93
|
+
// Indeterminate animation
|
|
94
|
+
React__default.createElement("div", { className: cn(theme.fillStyle, theme.colors[color], "w-1/3", theme.indeterminateStyle, fillClassName) })) : shouldAnimate ? (
|
|
95
|
+
// Animated determinate progress with spring animation
|
|
96
|
+
React__default.createElement(motion.div, { className: cn(theme.fillStyle, theme.colors[color], fillClassName), initial: { width: 0 }, animate: { width: `${percentage}%` }, transition: {
|
|
97
|
+
type: "spring",
|
|
98
|
+
stiffness: 100,
|
|
99
|
+
damping: 20,
|
|
100
|
+
mass: 0.5,
|
|
101
|
+
} })) : (
|
|
102
|
+
// Static determinate progress
|
|
103
|
+
React__default.createElement("div", { className: cn(theme.fillStyle, theme.colors[color], fillClassName), style: { width: `${percentage}%` } })),
|
|
104
|
+
showLabel && labelPosition === "inside" && size === "lg" && !isIndeterminate && (React__default.createElement("span", { className: theme.insideLabelStyle }, label))));
|
|
105
|
+
return (React__default.createElement("div", { className: cn(theme.containerStyle, containerLayoutClass, className), role: "progressbar", "aria-valuemin": 0, "aria-valuemax": 100, "aria-valuenow": isIndeterminate ? undefined : percentage, "aria-label": isIndeterminate ? "Loading" : `${percentage}% complete`, ...props },
|
|
106
|
+
labelPosition === "top" && renderLabel(),
|
|
107
|
+
labelPosition === "right" ? (React__default.createElement(React__default.Fragment, null,
|
|
108
|
+
React__default.createElement("div", { className: "flex-1" }, renderTrack()),
|
|
109
|
+
renderLabel())) : (renderTrack()),
|
|
110
|
+
labelPosition === "bottom" && renderLabel()));
|
|
111
|
+
};
|
|
112
|
+
Progress.displayName = "Progress";
|
|
113
|
+
|
|
114
|
+
export { Progress };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default theme configuration for Progress component
|
|
3
|
+
*/
|
|
4
|
+
const progressTheme = {
|
|
5
|
+
// Container styles
|
|
6
|
+
containerStyle: "w-full",
|
|
7
|
+
// Track (background) styles
|
|
8
|
+
trackStyle: "relative w-full rounded-full bg-[var(--color-background-tertiary)] overflow-hidden",
|
|
9
|
+
// Fill (progress bar) styles
|
|
10
|
+
fillStyle: "h-full rounded-full",
|
|
11
|
+
// Label text styles
|
|
12
|
+
labelStyle: "text-sm font-medium text-[var(--color-text-secondary)] tabular-nums min-w-[2.5rem] text-right",
|
|
13
|
+
// Inside label styles (when label is positioned inside the bar)
|
|
14
|
+
insideLabelStyle: "absolute inset-0 flex items-center justify-center text-xs font-medium text-white tabular-nums",
|
|
15
|
+
// Size variants for track height
|
|
16
|
+
sizes: {
|
|
17
|
+
sm: "h-1.5",
|
|
18
|
+
md: "h-2.5",
|
|
19
|
+
lg: "h-4",
|
|
20
|
+
},
|
|
21
|
+
// Color variants for the fill
|
|
22
|
+
colors: {
|
|
23
|
+
neutral: "bg-[var(--color-neutral-400)] dark:bg-[var(--color-neutral-500)]",
|
|
24
|
+
primary: "bg-[var(--color-primary)] dark:bg-[var(--color-primary-400)]",
|
|
25
|
+
success: "bg-[var(--color-success)] dark:bg-[var(--color-success-400)]",
|
|
26
|
+
warning: "bg-[var(--color-warning)] dark:bg-[var(--color-warning-400)]",
|
|
27
|
+
danger: "bg-[var(--color-danger)] dark:bg-[var(--color-danger-400)]",
|
|
28
|
+
},
|
|
29
|
+
// Indeterminate animation styles
|
|
30
|
+
indeterminateStyle: "animate-[progress-indeterminate_1.5s_ease-in-out_infinite]",
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export { progressTheme };
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export type ProgressSize = "sm" | "md" | "lg";
|
|
3
|
+
export type ProgressColor = "neutral" | "primary" | "success" | "warning" | "danger";
|
|
4
|
+
export type ProgressLabelPosition = "right" | "top" | "bottom" | "inside";
|
|
5
|
+
/**
|
|
6
|
+
* Theme configuration for Progress component
|
|
7
|
+
*/
|
|
8
|
+
export interface ProgressTheme {
|
|
9
|
+
/** Outer container styles */
|
|
10
|
+
containerStyle: string;
|
|
11
|
+
/** Track (background) styles */
|
|
12
|
+
trackStyle: string;
|
|
13
|
+
/** Fill (progress bar) styles */
|
|
14
|
+
fillStyle: string;
|
|
15
|
+
/** Label text styles */
|
|
16
|
+
labelStyle: string;
|
|
17
|
+
/** Inside label styles (when label is inside the bar) */
|
|
18
|
+
insideLabelStyle: string;
|
|
19
|
+
/** Size variants for the track height */
|
|
20
|
+
sizes: Record<ProgressSize, string>;
|
|
21
|
+
/** Color variants for the fill */
|
|
22
|
+
colors: Record<ProgressColor, string>;
|
|
23
|
+
/** Indeterminate animation styles */
|
|
24
|
+
indeterminateStyle: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Theme overrides for Progress component
|
|
28
|
+
*/
|
|
29
|
+
export interface ProgressThemeOverrides {
|
|
30
|
+
containerStyle?: string;
|
|
31
|
+
trackStyle?: string;
|
|
32
|
+
fillStyle?: string;
|
|
33
|
+
labelStyle?: string;
|
|
34
|
+
insideLabelStyle?: string;
|
|
35
|
+
sizes?: Partial<Record<ProgressSize, string>>;
|
|
36
|
+
colors?: Partial<Record<ProgressColor, string>>;
|
|
37
|
+
indeterminateStyle?: string;
|
|
38
|
+
}
|
|
39
|
+
export interface ProgressProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "children"> {
|
|
40
|
+
/**
|
|
41
|
+
* Progress value from 0 to 100.
|
|
42
|
+
* If undefined, the progress bar will be in indeterminate mode.
|
|
43
|
+
*/
|
|
44
|
+
value?: number;
|
|
45
|
+
/**
|
|
46
|
+
* The size of the progress bar
|
|
47
|
+
* @default 'md'
|
|
48
|
+
*/
|
|
49
|
+
size?: ProgressSize;
|
|
50
|
+
/**
|
|
51
|
+
* The semantic color of the progress bar
|
|
52
|
+
* @default 'primary'
|
|
53
|
+
*/
|
|
54
|
+
color?: ProgressColor;
|
|
55
|
+
/**
|
|
56
|
+
* Whether to show the percentage label
|
|
57
|
+
* @default false
|
|
58
|
+
*/
|
|
59
|
+
showLabel?: boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Position of the label
|
|
62
|
+
* @default 'right'
|
|
63
|
+
*/
|
|
64
|
+
labelPosition?: ProgressLabelPosition;
|
|
65
|
+
/**
|
|
66
|
+
* Custom label formatter function
|
|
67
|
+
* @param percentage - The current percentage value (0-100)
|
|
68
|
+
* @returns The formatted label string
|
|
69
|
+
*/
|
|
70
|
+
formatLabel?: (percentage: number) => string;
|
|
71
|
+
/**
|
|
72
|
+
* Whether to animate value changes
|
|
73
|
+
* @default true
|
|
74
|
+
*/
|
|
75
|
+
animated?: boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Additional class name for the track (background) element
|
|
78
|
+
*/
|
|
79
|
+
trackClassName?: string;
|
|
80
|
+
/**
|
|
81
|
+
* Additional class name for the fill (progress) element
|
|
82
|
+
*/
|
|
83
|
+
fillClassName?: string;
|
|
84
|
+
/**
|
|
85
|
+
* Additional class name for the container
|
|
86
|
+
*/
|
|
87
|
+
className?: string;
|
|
88
|
+
/**
|
|
89
|
+
* Component-level theme overrides
|
|
90
|
+
*/
|
|
91
|
+
theme?: ProgressThemeOverrides;
|
|
92
|
+
}
|
|
@@ -1,21 +1,10 @@
|
|
|
1
1
|
import { Variants } from "motion/react";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Container animation for row expansion (height: 0 -> auto with opacity)
|
|
4
|
+
* Uses the same easing curve pattern as Accordion for consistency
|
|
4
5
|
*/
|
|
5
|
-
export declare const
|
|
6
|
+
export declare const tableExpandAnimations: Variants;
|
|
6
7
|
/**
|
|
7
|
-
*
|
|
8
|
+
* Content slide-in animation for expanded row content (staggered after container)
|
|
8
9
|
*/
|
|
9
|
-
export declare const
|
|
10
|
-
/**
|
|
11
|
-
* Get table column manager slide animation variants
|
|
12
|
-
*/
|
|
13
|
-
export declare const getTableColumnManagerVariants: (shouldReduceMotion: boolean | null) => Variants | undefined;
|
|
14
|
-
/**
|
|
15
|
-
* Get table loading state animation variants
|
|
16
|
-
*/
|
|
17
|
-
export declare const getTableLoadingVariants: (shouldReduceMotion: boolean | null) => Variants | undefined;
|
|
18
|
-
/**
|
|
19
|
-
* Get table sort indicator animation variants
|
|
20
|
-
*/
|
|
21
|
-
export declare const getTableSortVariants: (shouldReduceMotion: boolean | null) => Variants | undefined;
|
|
10
|
+
export declare const tableExpandContentAnimations: Variants;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Container animation for row expansion (height: 0 -> auto with opacity)
|
|
3
|
+
* Uses the same easing curve pattern as Accordion for consistency
|
|
4
|
+
*/
|
|
5
|
+
const tableExpandAnimations = {
|
|
6
|
+
collapsed: {
|
|
7
|
+
height: 0,
|
|
8
|
+
opacity: 0,
|
|
9
|
+
transition: {
|
|
10
|
+
height: { duration: 0.3, ease: [0.04, 0.62, 0.23, 0.98] },
|
|
11
|
+
opacity: { duration: 0.25 },
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
expanded: {
|
|
15
|
+
height: 'auto',
|
|
16
|
+
opacity: 1,
|
|
17
|
+
transition: {
|
|
18
|
+
height: { duration: 0.4, ease: [0.04, 0.62, 0.23, 0.98] },
|
|
19
|
+
opacity: { duration: 0.3, delay: 0.1 },
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Content slide-in animation for expanded row content (staggered after container)
|
|
25
|
+
*/
|
|
26
|
+
const tableExpandContentAnimations = {
|
|
27
|
+
collapsed: {
|
|
28
|
+
opacity: 0,
|
|
29
|
+
y: -10,
|
|
30
|
+
transition: {
|
|
31
|
+
y: { duration: 0.2 },
|
|
32
|
+
opacity: { duration: 0.2 },
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
expanded: {
|
|
36
|
+
opacity: 1,
|
|
37
|
+
y: 0,
|
|
38
|
+
transition: {
|
|
39
|
+
delay: 0.15,
|
|
40
|
+
y: { duration: 0.3 },
|
|
41
|
+
opacity: { duration: 0.3 },
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
export { tableExpandAnimations, tableExpandContentAnimations };
|
|
@@ -17,33 +17,6 @@ declare const TableContext: React.Context<TableContextType>;
|
|
|
17
17
|
* - Pagination support
|
|
18
18
|
* - Full accessibility compliance (WCAG 2.1 AA)
|
|
19
19
|
* - Theme customization with className overrides
|
|
20
|
-
*
|
|
21
|
-
* @example
|
|
22
|
-
* // Data-driven API with stable row keys
|
|
23
|
-
* <Table data={data} columns={columns} rowKey="id" sortable selectable />
|
|
24
|
-
*
|
|
25
|
-
* // Using a function for complex row keys
|
|
26
|
-
* <Table
|
|
27
|
-
* data={data}
|
|
28
|
-
* columns={columns}
|
|
29
|
-
* rowKey={(row, index) => `${row.category}-${row.id}`}
|
|
30
|
-
* sortable
|
|
31
|
-
* selectable
|
|
32
|
-
* />
|
|
33
|
-
*
|
|
34
|
-
* // Declarative API
|
|
35
|
-
* <Table>
|
|
36
|
-
* <Table.Header>
|
|
37
|
-
* <Table.Row>
|
|
38
|
-
* <Table.HeaderCell>Name</Table.HeaderCell>
|
|
39
|
-
* </Table.Row>
|
|
40
|
-
* </Table.Header>
|
|
41
|
-
* <Table.Body>
|
|
42
|
-
* <Table.Row>
|
|
43
|
-
* <Table.Cell>John Doe</Table.Cell>
|
|
44
|
-
* </Table.Row>
|
|
45
|
-
* </Table.Body>
|
|
46
|
-
* </Table>
|
|
47
20
|
*/
|
|
48
21
|
declare function TableComponent<T extends Record<string, any>>(props: TableProps<T>): React.ReactElement;
|
|
49
22
|
declare namespace TableComponent {
|