@heymantle/litho 0.0.14 → 0.0.16
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/AI_COMPONENTS_GUIDE.md +28 -15
- package/AI_INTEGRATION_GUIDE.md +3 -3
- package/AI_PATTERNS_GUIDE.md +59 -25
- package/COMPONENT_QUICK_REFERENCE.md +3 -3
- package/README.md +52 -0
- package/dist/cjs/components/ActionList.js +33 -25
- package/dist/cjs/components/AnnouncementBar.js +115 -18
- package/dist/cjs/components/AnnouncementCard.js +269 -0
- package/dist/cjs/components/AppProvider.js +15 -2
- package/dist/cjs/components/Autocomplete.js +58 -36
- package/dist/cjs/components/Badge.js +28 -14
- package/dist/cjs/components/Banner.js +37 -27
- package/dist/cjs/components/Box.js +50 -38
- package/dist/cjs/components/Button.js +338 -109
- package/dist/cjs/components/ButtonGroup.js +27 -14
- package/dist/cjs/components/Card.js +311 -143
- package/dist/cjs/components/Checkbox.js +55 -47
- package/dist/cjs/components/CheckboxCard.js +222 -0
- package/dist/cjs/components/CheckboxCardGroup.js +384 -0
- package/dist/cjs/components/ChoiceList.js +21 -11
- package/dist/cjs/components/Code.js +22 -8
- package/dist/cjs/components/Collapsible.js +24 -11
- package/dist/cjs/components/ColorField.js +163 -38
- package/dist/cjs/components/ContextualSaveBar.js +13 -6
- package/dist/cjs/components/DatePicker.js +48 -37
- package/dist/cjs/components/Disclosure.js +57 -13
- package/dist/cjs/components/Divider.js +82 -18
- package/dist/cjs/components/DropZone.js +194 -68
- package/dist/cjs/components/EmptyState.js +18 -6
- package/dist/cjs/components/Filters.js +84 -36
- package/dist/cjs/components/FooterHelp.js +14 -4
- package/dist/cjs/components/Form.js +13 -2
- package/dist/cjs/components/Frame.js +57 -22
- package/dist/cjs/components/FrameSaveBar.js +37 -6
- package/dist/cjs/components/Grid.js +31 -15
- package/dist/cjs/components/HorizontalStack.js +38 -25
- package/dist/cjs/components/Icon.js +683 -61
- package/dist/cjs/components/Image.js +35 -22
- package/dist/cjs/components/InlineError.js +19 -10
- package/dist/cjs/components/Label.js +21 -12
- package/dist/cjs/components/Layout.js +37 -26
- package/dist/cjs/components/LayoutSection.js +84 -22
- package/dist/cjs/components/Link.js +35 -22
- package/dist/cjs/components/List.js +28 -12
- package/dist/cjs/components/Listbox.js +53 -31
- package/dist/cjs/components/Loading.js +14 -2
- package/dist/cjs/components/Modal.js +32 -39
- package/dist/cjs/components/Navigation.js +107 -36
- package/dist/cjs/components/Page.js +44 -31
- package/dist/cjs/components/Pagination.js +20 -5
- package/dist/cjs/components/Pane.js +67 -4
- package/dist/cjs/components/Popover.js +63 -30
- package/dist/cjs/components/PopoverManager.js +14 -1
- package/dist/cjs/components/ProgressBar.js +28 -15
- package/dist/cjs/components/RadioButton.js +32 -24
- package/dist/cjs/components/RadioButtonCard.js +92 -67
- package/dist/cjs/components/RadioButtonCardGroup.js +379 -0
- package/dist/cjs/components/RangeSlider.js +34 -26
- package/dist/cjs/components/ResourceList.js +28 -14
- package/dist/cjs/components/Select.js +38 -26
- package/dist/cjs/components/SkeletonText.js +33 -18
- package/dist/cjs/components/Spinner.js +24 -12
- package/dist/cjs/components/Stack.js +131 -71
- package/dist/cjs/components/TabNavigation.js +27 -1
- package/dist/cjs/components/Table.js +85 -29
- package/dist/cjs/components/Tabs.js +84 -24
- package/dist/cjs/components/Tag.js +37 -16
- package/dist/cjs/components/Text.js +32 -18
- package/dist/cjs/components/TextField.js +119 -69
- package/dist/cjs/components/Thumbnail.js +25 -11
- package/dist/cjs/components/TimePicker.js +22 -1
- package/dist/cjs/components/Tip.js +140 -25
- package/dist/cjs/components/ToastNotification.js +107 -34
- package/dist/cjs/components/ToastProvider.js +13 -3
- package/dist/cjs/components/Tooltip.js +50 -41
- package/dist/cjs/components/TopBar.js +83 -9
- package/dist/cjs/components/VerticalStack.js +31 -16
- package/dist/cjs/index.js +24 -0
- package/dist/cjs/playwright.config.js +114 -0
- package/dist/cjs/stories/Autocomplete.stories.js +10 -10
- package/dist/cjs/stories/Checkbox.stories.js +6 -8
- package/dist/cjs/stories/CheckboxCardGroup.stories.js +459 -0
- package/dist/cjs/stories/Collapsible.stories.js +11 -11
- package/dist/cjs/stories/ColorField.stories.js +2 -3
- package/dist/cjs/stories/ComplexExamples.stories.js +48 -77
- package/dist/cjs/stories/ContextualSaveBar.stories.js +1 -1
- package/dist/cjs/stories/Divider.stories.js +15 -16
- package/dist/cjs/stories/DropZone.stories.js +3 -3
- package/dist/cjs/stories/FooterHelp.stories.js +3 -4
- package/dist/cjs/stories/Form.stories.js +2 -4
- package/dist/cjs/stories/Grid.stories.js +24 -33
- package/dist/cjs/stories/Icon.stories.js +22 -23
- package/dist/cjs/stories/Image.stories.js +12 -15
- package/dist/cjs/stories/InlineError.stories.js +0 -1
- package/dist/cjs/stories/Layout.stories.js +96 -2
- package/dist/cjs/stories/LayoutSection.stories.js +13 -18
- package/dist/cjs/stories/List.stories.js +24 -28
- package/dist/cjs/stories/Listbox.stories.js +2 -2
- package/dist/cjs/stories/Loading.stories.js +21 -25
- package/dist/cjs/stories/Modal.stories.js +0 -1
- package/dist/cjs/stories/Pagination.stories.js +4 -4
- package/dist/cjs/stories/Pane.stories.js +10 -18
- package/dist/cjs/stories/Popover.stories.js +7 -7
- package/dist/cjs/stories/PopoverManager.stories.js +9 -9
- package/dist/cjs/stories/ProgressBar.stories.js +8 -8
- package/dist/cjs/stories/RadioButton.stories.js +2 -2
- package/dist/cjs/stories/RadioButtonCard.stories.js +2 -2
- package/dist/cjs/stories/RadioButtonCardGroup.stories.js +502 -0
- package/dist/cjs/stories/RangeSlider.stories.js +1 -3
- package/dist/cjs/stories/ResourceList.stories.js +13 -13
- package/dist/cjs/stories/Spinner.stories.js +9 -9
- package/dist/cjs/stories/Stack.stories.js +233 -51
- package/dist/cjs/stories/Tabs.stories.js +2 -2
- package/dist/cjs/stories/Tag.stories.js +1 -1
- package/dist/cjs/stories/Thumbnail.stories.js +17 -18
- package/dist/cjs/stories/TimePicker.stories.js +0 -5
- package/dist/cjs/stories/Tip.stories.js +1 -1
- package/dist/cjs/styles/Table.js +2 -7
- package/dist/cjs/tests/visual/stories.spec.js +637 -0
- package/dist/cjs/utilities/dates.js +7 -7
- package/dist/esm/components/ActionList.js +33 -25
- package/dist/esm/components/AnnouncementBar.js +115 -18
- package/dist/esm/components/AnnouncementCard.js +254 -0
- package/dist/esm/components/AppProvider.js +15 -2
- package/dist/esm/components/Autocomplete.js +58 -36
- package/dist/esm/components/Badge.js +28 -14
- package/dist/esm/components/Banner.js +37 -27
- package/dist/esm/components/Box.js +50 -38
- package/dist/esm/components/Button.js +338 -109
- package/dist/esm/components/ButtonGroup.js +27 -14
- package/dist/esm/components/Card.js +300 -140
- package/dist/esm/components/Checkbox.js +55 -47
- package/dist/esm/components/CheckboxCard.js +207 -0
- package/dist/esm/components/CheckboxCardGroup.js +370 -0
- package/dist/esm/components/ChoiceList.js +21 -11
- package/dist/esm/components/Code.js +22 -8
- package/dist/esm/components/Collapsible.js +24 -11
- package/dist/esm/components/ColorField.js +165 -40
- package/dist/esm/components/ContextualSaveBar.js +13 -6
- package/dist/esm/components/DatePicker.js +48 -37
- package/dist/esm/components/Disclosure.js +50 -6
- package/dist/esm/components/Divider.js +78 -20
- package/dist/esm/components/DropZone.js +194 -68
- package/dist/esm/components/EmptyState.js +18 -6
- package/dist/esm/components/Filters.js +84 -36
- package/dist/esm/components/FooterHelp.js +14 -4
- package/dist/esm/components/Form.js +13 -2
- package/dist/esm/components/Frame.js +57 -22
- package/dist/esm/components/FrameSaveBar.js +37 -6
- package/dist/esm/components/Grid.js +31 -15
- package/dist/esm/components/HorizontalStack.js +38 -25
- package/dist/esm/components/Icon.js +681 -62
- package/dist/esm/components/Image.js +35 -22
- package/dist/esm/components/InlineError.js +19 -10
- package/dist/esm/components/Label.js +21 -12
- package/dist/esm/components/Layout.js +62 -27
- package/dist/esm/components/LayoutSection.js +84 -22
- package/dist/esm/components/Link.js +35 -22
- package/dist/esm/components/List.js +28 -12
- package/dist/esm/components/Listbox.js +53 -31
- package/dist/esm/components/Loading.js +14 -2
- package/dist/esm/components/Modal.js +79 -40
- package/dist/esm/components/Navigation.js +107 -36
- package/dist/esm/components/Page.js +44 -31
- package/dist/esm/components/Pagination.js +20 -5
- package/dist/esm/components/Pane.js +67 -4
- package/dist/esm/components/Popover.js +63 -30
- package/dist/esm/components/PopoverManager.js +14 -1
- package/dist/esm/components/ProgressBar.js +28 -15
- package/dist/esm/components/RadioButton.js +32 -24
- package/dist/esm/components/RadioButtonCard.js +92 -67
- package/dist/esm/components/RadioButtonCardGroup.js +364 -0
- package/dist/esm/components/RangeSlider.js +34 -26
- package/dist/esm/components/ResourceList.js +28 -14
- package/dist/esm/components/Select.js +38 -26
- package/dist/esm/components/SkeletonText.js +33 -18
- package/dist/esm/components/Spinner.js +24 -12
- package/dist/esm/components/Stack.js +131 -71
- package/dist/esm/components/TabNavigation.js +27 -1
- package/dist/esm/components/Table.js +85 -29
- package/dist/esm/components/Tabs.js +84 -24
- package/dist/esm/components/Tag.js +37 -16
- package/dist/esm/components/Text.js +32 -18
- package/dist/esm/components/TextField.js +119 -69
- package/dist/esm/components/Thumbnail.js +25 -11
- package/dist/esm/components/TimePicker.js +22 -1
- package/dist/esm/components/Tip.js +140 -25
- package/dist/esm/components/ToastNotification.js +107 -34
- package/dist/esm/components/ToastProvider.js +13 -3
- package/dist/esm/components/Tooltip.js +50 -41
- package/dist/esm/components/TopBar.js +83 -9
- package/dist/esm/components/VerticalStack.js +31 -16
- package/dist/esm/index.js +6 -0
- package/dist/esm/playwright.config.js +104 -0
- package/dist/esm/stories/Autocomplete.stories.js +10 -10
- package/dist/esm/stories/Checkbox.stories.js +6 -8
- package/dist/esm/stories/CheckboxCardGroup.stories.js +421 -0
- package/dist/esm/stories/Collapsible.stories.js +11 -11
- package/dist/esm/stories/ColorField.stories.js +2 -3
- package/dist/esm/stories/ComplexExamples.stories.js +48 -77
- package/dist/esm/stories/ContextualSaveBar.stories.js +1 -1
- package/dist/esm/stories/Divider.stories.js +15 -16
- package/dist/esm/stories/DropZone.stories.js +3 -3
- package/dist/esm/stories/FooterHelp.stories.js +3 -4
- package/dist/esm/stories/Form.stories.js +2 -4
- package/dist/esm/stories/Grid.stories.js +24 -33
- package/dist/esm/stories/Icon.stories.js +22 -23
- package/dist/esm/stories/Image.stories.js +12 -15
- package/dist/esm/stories/InlineError.stories.js +0 -1
- package/dist/esm/stories/Layout.stories.js +93 -2
- package/dist/esm/stories/LayoutSection.stories.js +13 -18
- package/dist/esm/stories/List.stories.js +24 -28
- package/dist/esm/stories/Listbox.stories.js +2 -2
- package/dist/esm/stories/Loading.stories.js +21 -25
- package/dist/esm/stories/Modal.stories.js +0 -1
- package/dist/esm/stories/Pagination.stories.js +4 -4
- package/dist/esm/stories/Pane.stories.js +10 -18
- package/dist/esm/stories/Popover.stories.js +7 -7
- package/dist/esm/stories/PopoverManager.stories.js +9 -9
- package/dist/esm/stories/ProgressBar.stories.js +8 -8
- package/dist/esm/stories/RadioButton.stories.js +2 -2
- package/dist/esm/stories/RadioButtonCard.stories.js +2 -2
- package/dist/esm/stories/RadioButtonCardGroup.stories.js +461 -0
- package/dist/esm/stories/RangeSlider.stories.js +1 -3
- package/dist/esm/stories/ResourceList.stories.js +13 -13
- package/dist/esm/stories/Spinner.stories.js +9 -9
- package/dist/esm/stories/Stack.stories.js +224 -51
- package/dist/esm/stories/Tabs.stories.js +2 -2
- package/dist/esm/stories/Tag.stories.js +1 -1
- package/dist/esm/stories/Thumbnail.stories.js +17 -18
- package/dist/esm/stories/TimePicker.stories.js +0 -5
- package/dist/esm/stories/Tip.stories.js +1 -1
- package/dist/esm/styles/Table.js +2 -7
- package/dist/esm/tests/visual/stories.spec.js +633 -0
- package/dist/esm/utilities/dates.js +7 -7
- package/dist/types/components/ActionList.d.ts +1 -31
- package/dist/types/components/ActionList.d.ts.map +1 -1
- package/dist/types/components/AnnouncementBar.d.ts +1 -19
- package/dist/types/components/AnnouncementBar.d.ts.map +1 -1
- package/dist/types/components/AnnouncementCard.d.ts +3 -0
- package/dist/types/components/AnnouncementCard.d.ts.map +1 -0
- package/dist/types/components/AppProvider.d.ts +14 -1
- package/dist/types/components/AppProvider.d.ts.map +1 -1
- package/dist/types/components/Autocomplete.d.ts +1 -71
- package/dist/types/components/Autocomplete.d.ts.map +1 -1
- package/dist/types/components/Badge.d.ts +1 -19
- package/dist/types/components/Badge.d.ts.map +1 -1
- package/dist/types/components/Banner.d.ts +1 -37
- package/dist/types/components/Banner.d.ts.map +1 -1
- package/dist/types/components/Box.d.ts +1 -68
- package/dist/types/components/Box.d.ts.map +1 -1
- package/dist/types/components/Button.d.ts +1 -131
- package/dist/types/components/Button.d.ts.map +1 -1
- package/dist/types/components/ButtonGroup.d.ts +1 -22
- package/dist/types/components/ButtonGroup.d.ts.map +1 -1
- package/dist/types/components/Card.d.ts +54 -59
- package/dist/types/components/Card.d.ts.map +1 -1
- package/dist/types/components/Checkbox.d.ts +1 -63
- package/dist/types/components/Checkbox.d.ts.map +1 -1
- package/dist/types/components/CheckboxCard.d.ts +3 -0
- package/dist/types/components/CheckboxCard.d.ts.map +1 -0
- package/dist/types/components/CheckboxCardGroup.d.ts +3 -0
- package/dist/types/components/CheckboxCardGroup.d.ts.map +1 -0
- package/dist/types/components/ChoiceList.d.ts +1 -42
- package/dist/types/components/ChoiceList.d.ts.map +1 -1
- package/dist/types/components/Code.d.ts +1 -26
- package/dist/types/components/Code.d.ts.map +1 -1
- package/dist/types/components/Collapsible.d.ts +1 -15
- package/dist/types/components/Collapsible.d.ts.map +1 -1
- package/dist/types/components/ColorField.d.ts +13 -34
- package/dist/types/components/ColorField.d.ts.map +1 -1
- package/dist/types/components/ContextualSaveBar.d.ts +13 -6
- package/dist/types/components/ContextualSaveBar.d.ts.map +1 -1
- package/dist/types/components/DatePicker.d.ts +1 -64
- package/dist/types/components/DatePicker.d.ts.map +1 -1
- package/dist/types/components/Disclosure.d.ts +1 -25
- package/dist/types/components/Disclosure.d.ts.map +1 -1
- package/dist/types/components/Divider.d.ts +1 -19
- package/dist/types/components/Divider.d.ts.map +1 -1
- package/dist/types/components/DropZone.d.ts +3 -62
- package/dist/types/components/DropZone.d.ts.map +1 -1
- package/dist/types/components/EmptyState.d.ts +1 -50
- package/dist/types/components/EmptyState.d.ts.map +1 -1
- package/dist/types/components/Filters.d.ts +13 -68
- package/dist/types/components/Filters.d.ts.map +1 -1
- package/dist/types/components/FooterHelp.d.ts +14 -4
- package/dist/types/components/FooterHelp.d.ts.map +1 -1
- package/dist/types/components/Form.d.ts +13 -2
- package/dist/types/components/Form.d.ts.map +1 -1
- package/dist/types/components/Frame.d.ts +15 -36
- package/dist/types/components/Frame.d.ts.map +1 -1
- package/dist/types/components/FrameSaveBar.d.ts +3 -6
- package/dist/types/components/FrameSaveBar.d.ts.map +1 -1
- package/dist/types/components/Grid.d.ts +5 -21
- package/dist/types/components/Grid.d.ts.map +1 -1
- package/dist/types/components/HorizontalStack.d.ts +1 -34
- package/dist/types/components/HorizontalStack.d.ts.map +1 -1
- package/dist/types/components/Icon.d.ts +1 -41
- package/dist/types/components/Icon.d.ts.map +1 -1
- package/dist/types/components/Image.d.ts +1 -43
- package/dist/types/components/Image.d.ts.map +1 -1
- package/dist/types/components/InlineError.d.ts +1 -20
- package/dist/types/components/InlineError.d.ts.map +1 -1
- package/dist/types/components/Label.d.ts +1 -26
- package/dist/types/components/Label.d.ts.map +1 -1
- package/dist/types/components/Layout.d.ts +24 -15
- package/dist/types/components/Layout.d.ts.map +1 -1
- package/dist/types/components/LayoutSection.d.ts +1 -19
- package/dist/types/components/LayoutSection.d.ts.map +1 -1
- package/dist/types/components/Link.d.ts +1 -37
- package/dist/types/components/Link.d.ts.map +1 -1
- package/dist/types/components/List.d.ts +5 -17
- package/dist/types/components/List.d.ts.map +1 -1
- package/dist/types/components/Listbox.d.ts +1 -32
- package/dist/types/components/Listbox.d.ts.map +1 -1
- package/dist/types/components/Loading.d.ts +14 -2
- package/dist/types/components/Loading.d.ts.map +1 -1
- package/dist/types/components/Modal.d.ts +26 -35
- package/dist/types/components/Modal.d.ts.map +1 -1
- package/dist/types/components/Navigation.d.ts +1 -25
- package/dist/types/components/Navigation.d.ts.map +1 -1
- package/dist/types/components/Page.d.ts +1 -57
- package/dist/types/components/Page.d.ts.map +1 -1
- package/dist/types/components/Pagination.d.ts +13 -3
- package/dist/types/components/Pagination.d.ts.map +1 -1
- package/dist/types/components/Pane.d.ts +55 -3
- package/dist/types/components/Pane.d.ts.map +1 -1
- package/dist/types/components/Popover.d.ts +5 -35
- package/dist/types/components/Popover.d.ts.map +1 -1
- package/dist/types/components/PopoverManager.d.ts.map +1 -1
- package/dist/types/components/ProgressBar.d.ts +1 -22
- package/dist/types/components/ProgressBar.d.ts.map +1 -1
- package/dist/types/components/RadioButton.d.ts +1 -37
- package/dist/types/components/RadioButton.d.ts.map +1 -1
- package/dist/types/components/RadioButtonCard.d.ts +1 -39
- package/dist/types/components/RadioButtonCard.d.ts.map +1 -1
- package/dist/types/components/RadioButtonCardGroup.d.ts +3 -0
- package/dist/types/components/RadioButtonCardGroup.d.ts.map +1 -0
- package/dist/types/components/RangeSlider.d.ts +1 -42
- package/dist/types/components/RangeSlider.d.ts.map +1 -1
- package/dist/types/components/ResourceList.d.ts +5 -30
- package/dist/types/components/ResourceList.d.ts.map +1 -1
- package/dist/types/components/Select.d.ts +1 -46
- package/dist/types/components/Select.d.ts.map +1 -1
- package/dist/types/components/SkeletonText.d.ts +1 -26
- package/dist/types/components/SkeletonText.d.ts.map +1 -1
- package/dist/types/components/Spinner.d.ts +1 -16
- package/dist/types/components/Spinner.d.ts.map +1 -1
- package/dist/types/components/Stack.d.ts +1 -47
- package/dist/types/components/Stack.d.ts.map +1 -1
- package/dist/types/components/TabNavigation.d.ts.map +1 -1
- package/dist/types/components/Table.d.ts +13 -58
- package/dist/types/components/Table.d.ts.map +1 -1
- package/dist/types/components/Tabs.d.ts +40 -34
- package/dist/types/components/Tabs.d.ts.map +1 -1
- package/dist/types/components/Tag.d.ts +1 -24
- package/dist/types/components/Tag.d.ts.map +1 -1
- package/dist/types/components/Text.d.ts +1 -30
- package/dist/types/components/Text.d.ts.map +1 -1
- package/dist/types/components/TextField.d.ts +1 -109
- package/dist/types/components/TextField.d.ts.map +1 -1
- package/dist/types/components/Thumbnail.d.ts +1 -16
- package/dist/types/components/Thumbnail.d.ts.map +1 -1
- package/dist/types/components/TimePicker.d.ts +28 -1
- package/dist/types/components/TimePicker.d.ts.map +1 -1
- package/dist/types/components/Tip.d.ts +1 -21
- package/dist/types/components/Tip.d.ts.map +1 -1
- package/dist/types/components/ToastNotification.d.ts +1 -34
- package/dist/types/components/ToastNotification.d.ts.map +1 -1
- package/dist/types/components/ToastProvider.d.ts +13 -3
- package/dist/types/components/ToastProvider.d.ts.map +1 -1
- package/dist/types/components/Tooltip.d.ts +1 -54
- package/dist/types/components/Tooltip.d.ts.map +1 -1
- package/dist/types/components/TopBar.d.ts +1 -19
- package/dist/types/components/TopBar.d.ts.map +1 -1
- package/dist/types/components/VerticalStack.d.ts +1 -25
- package/dist/types/components/VerticalStack.d.ts.map +1 -1
- package/dist/types/index.d.ts +6 -0
- package/dist/types/styles/Table.d.ts.map +1 -1
- package/index.css +76 -14
- package/package.json +15 -5
|
@@ -160,21 +160,24 @@ import Text from "./Text.js";
|
|
|
160
160
|
import Tooltip from "./Tooltip.js";
|
|
161
161
|
import { styles } from "../styles/Table.js";
|
|
162
162
|
import { SelectionType } from "../utilities/useIndexResourceState.js";
|
|
163
|
+
import { useMobile } from "../utilities/useMobile.js";
|
|
163
164
|
import { useMounted } from "../utilities/useMounted.js";
|
|
164
165
|
import useTableScrollState from "../utilities/useTableScrollState.js";
|
|
165
|
-
var TableContext = /*#__PURE__*/ createContext({});
|
|
166
|
-
var TableWrapperContext = /*#__PURE__*/ createContext({});
|
|
167
166
|
/**
|
|
168
|
-
* @
|
|
169
|
-
*
|
|
170
|
-
* @
|
|
171
|
-
*
|
|
172
|
-
* @
|
|
173
|
-
*
|
|
174
|
-
*
|
|
175
|
-
*
|
|
176
|
-
|
|
177
|
-
*
|
|
167
|
+
* @component Table
|
|
168
|
+
*
|
|
169
|
+
* @description A data table component with sortable columns, selectable rows, sticky headers, and pagination support.
|
|
170
|
+
*
|
|
171
|
+
* @usage
|
|
172
|
+
* - DO: Display structured tabular data with columns, sorting, and optional row selection.
|
|
173
|
+
* - DON'T: Use for layout purposes (use Grid).
|
|
174
|
+
*
|
|
175
|
+
* @accessibility
|
|
176
|
+
* - Renders a semantic `<table>` with proper `<thead>` and `<tbody>`; ensure column headers describe data clearly.
|
|
177
|
+
*
|
|
178
|
+
* @alternative
|
|
179
|
+
* - If you need a simple list without columns, use `ResourceList`.
|
|
180
|
+
* - If you need a layout grid, use `Grid`.
|
|
178
181
|
*
|
|
179
182
|
* @param {Object} props - Component props.
|
|
180
183
|
* @param {Array<TableHeading|string|React.ReactNode>} [props.headings=[]] - Column headings. Can be strings, React nodes, or configuration objects.
|
|
@@ -201,6 +204,17 @@ var TableWrapperContext = /*#__PURE__*/ createContext({});
|
|
|
201
204
|
* @param {Function} [props.onSelectionChange] - Callback for handling selection changes.
|
|
202
205
|
* @param {boolean} [props.loading=false] - Whether the table is loading.
|
|
203
206
|
* @returns {React.ReactElement} The rendered Table component.
|
|
207
|
+
*/ var TableContext = /*#__PURE__*/ createContext({});
|
|
208
|
+
var TableWrapperContext = /*#__PURE__*/ createContext({});
|
|
209
|
+
/**
|
|
210
|
+
* @typedef {Object} TableHeading
|
|
211
|
+
* @property {string|React.ReactNode} title - The title content of the heading.
|
|
212
|
+
* @property {boolean} [sortable=false] - Whether the column is sortable.
|
|
213
|
+
* @property {"start" | "end" | "left" | "right" | "center"} [alignment="start"] - Alignment of the heading content.
|
|
214
|
+
* @property {boolean} [hidden=false] - Whether the heading is hidden.
|
|
215
|
+
* @property {string|React.ReactNode} [tooltip] - Tooltip content for the heading.
|
|
216
|
+
* @property {string|React.ReactNode} [tooltipContent] - Alternative tooltip content for the heading.
|
|
217
|
+
* @property {Function} [onAction] - Callback function when the heading is clicked.
|
|
204
218
|
*/ function Table() {
|
|
205
219
|
var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
|
206
220
|
var tmp = props.headings, _headings = tmp === void 0 ? [] : tmp, _props_headingStyle = props.headingStyle, headingStyle = _props_headingStyle === void 0 ? "default" : _props_headingStyle, _props_stickyHeader = props.stickyHeader, stickyHeader = _props_stickyHeader === void 0 ? true : _props_stickyHeader, _props_rows = props.rows, rows = _props_rows === void 0 ? [] : _props_rows, tmp1 = props.footers, _footers = tmp1 === void 0 ? [] : tmp1, _props_verticalAlign = props.verticalAlign, verticalAlign = _props_verticalAlign === void 0 ? "middle" : _props_verticalAlign, tmp2 = props.fixedFirstColumns, _fixedFirstColumns = tmp2 === void 0 ? 0 : tmp2, _props_fixedLastColumns = props.fixedLastColumns, fixedLastColumns = _props_fixedLastColumns === void 0 ? 0 : _props_fixedLastColumns, initialSortColumnIndex = props.initialSortColumnIndex, _props_defaultSortDirection = props.defaultSortDirection, defaultSortDirection = _props_defaultSortDirection === void 0 ? "ascending" : _props_defaultSortDirection, onSort = props.onSort, _props_increasedTableDensity = props.increasedTableDensity, increasedTableDensity = _props_increasedTableDensity === void 0 ? false : _props_increasedTableDensity, firstColumnMinWidth = props.firstColumnMinWidth, _props_bordered = props.bordered, bordered = _props_bordered === void 0 ? false : _props_bordered, _props_topBorder = props.topBorder, topBorder = _props_topBorder === void 0 ? true : _props_topBorder, _props_bulkActions = props.bulkActions, bulkActions = _props_bulkActions === void 0 ? [] : _props_bulkActions, _props_promotedBulkActions = props.promotedBulkActions, promotedBulkActions = _props_promotedBulkActions === void 0 ? [] : _props_promotedBulkActions, emptyState = props.emptyState, _children = props.children, paginatedSelectAllActionText = props.paginatedSelectAllActionText, _props_resourceName = props.resourceName, resourceName = _props_resourceName === void 0 ? {
|
|
@@ -447,6 +461,8 @@ var TableWrapperContext = /*#__PURE__*/ createContext({});
|
|
|
447
461
|
var alignment = cellAlignment[indexAdjusted];
|
|
448
462
|
var isSortable = sortable && sortable.length > 0 && sortable[indexAdjusted];
|
|
449
463
|
var sortIndex = selectable ? indexAdjusted - 1 : indexAdjusted;
|
|
464
|
+
// Check if this cell is covered by a fixed overlay
|
|
465
|
+
var isCovered = !fixed && !reverseColumns && (fixedFirstColumns > 0 && indexAdjusted < fixedFirstColumns || fixedLastColumns > 0 && indexAdjusted >= headings.length - fixedLastColumns);
|
|
450
466
|
var sortContent = isSortable ? /*#__PURE__*/ _jsx("div", {
|
|
451
467
|
className: "min-h-5 ".concat(sort.index === sortIndex ? "opacity-100" : "opacity-0 group-hover:opacity-100"),
|
|
452
468
|
children: /*#__PURE__*/ _jsx(Icon, {
|
|
@@ -459,13 +475,23 @@ var TableWrapperContext = /*#__PURE__*/ createContext({});
|
|
|
459
475
|
if (isSortable) handleSort(sortIndex);
|
|
460
476
|
else if (heading.onAction) heading.onAction();
|
|
461
477
|
};
|
|
462
|
-
var labelContent = /*#__PURE__*/ _jsxs("div", {
|
|
478
|
+
var labelContent = /*#__PURE__*/ _jsxs("div", _object_spread_props(_object_spread({
|
|
463
479
|
className: styles.headingLabelStyles({
|
|
464
480
|
alignment: alignment,
|
|
465
481
|
sortable: !!isSortable,
|
|
466
482
|
interactive: !!isInteractive
|
|
467
483
|
}),
|
|
468
|
-
onClick: isInteractive ? handleClick : undefined
|
|
484
|
+
onClick: isInteractive ? handleClick : undefined
|
|
485
|
+
}, isInteractive ? {
|
|
486
|
+
role: "button",
|
|
487
|
+
tabIndex: 0,
|
|
488
|
+
onKeyDown: function(e) {
|
|
489
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
490
|
+
e.preventDefault();
|
|
491
|
+
handleClick();
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
} : {}), {
|
|
469
495
|
children: [
|
|
470
496
|
[
|
|
471
497
|
"right",
|
|
@@ -480,7 +506,8 @@ var TableWrapperContext = /*#__PURE__*/ createContext({});
|
|
|
480
506
|
"center"
|
|
481
507
|
].includes(alignment) && sortContent
|
|
482
508
|
]
|
|
483
|
-
});
|
|
509
|
+
}));
|
|
510
|
+
var hasTooltip = (heading.tooltip || heading.tooltipContent) && !isCovered;
|
|
484
511
|
return /*#__PURE__*/ _jsx(HeadingCell, {
|
|
485
512
|
className: styles.headingStyles({
|
|
486
513
|
hidden: hideCell,
|
|
@@ -498,7 +525,7 @@ var TableWrapperContext = /*#__PURE__*/ createContext({});
|
|
|
498
525
|
className: styles.headingLabelContainerStyles({
|
|
499
526
|
alignment: alignment
|
|
500
527
|
}),
|
|
501
|
-
children: heading.hidden ? null :
|
|
528
|
+
children: heading.hidden ? null : hasTooltip ? /*#__PURE__*/ _jsx(Tooltip, {
|
|
502
529
|
content: heading.tooltip || heading.tooltipContent,
|
|
503
530
|
preferredPosition: "above",
|
|
504
531
|
children: labelContent
|
|
@@ -614,12 +641,16 @@ var TableWrapperContext = /*#__PURE__*/ createContext({});
|
|
|
614
641
|
value: {
|
|
615
642
|
columnsToRender: columnsToRender,
|
|
616
643
|
reverseColumns: reverseColumns,
|
|
617
|
-
hideCellsOnMobile: hideCellsOnMobile
|
|
644
|
+
hideCellsOnMobile: hideCellsOnMobile,
|
|
645
|
+
isFixedOverlay: fixed,
|
|
646
|
+
fixedFirstColumns: fixedFirstColumns,
|
|
647
|
+
fixedLastColumns: fixedLastColumns
|
|
618
648
|
},
|
|
619
649
|
children: /*#__PURE__*/ _jsxs("table", {
|
|
620
650
|
className: styles.tableStyles(),
|
|
621
651
|
children: [
|
|
622
652
|
hasHeadings && renderHeadings({
|
|
653
|
+
fixed: fixed,
|
|
623
654
|
hidden: true,
|
|
624
655
|
columnsToRender: columnsToRender,
|
|
625
656
|
reverseColumns: reverseColumns,
|
|
@@ -670,6 +701,14 @@ var TableWrapperContext = /*#__PURE__*/ createContext({});
|
|
|
670
701
|
return handleSelectionChange(isAllSelected ? SelectionType.Page : SelectionType.All, true);
|
|
671
702
|
},
|
|
672
703
|
className: "rounded-md block text-sm font-medium cursor-pointer px-2 py-1 hover",
|
|
704
|
+
role: "button",
|
|
705
|
+
tabIndex: 0,
|
|
706
|
+
onKeyDown: function(e) {
|
|
707
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
708
|
+
e.preventDefault();
|
|
709
|
+
handleSelectionChange(isAllSelected ? SelectionType.Page : SelectionType.All, true);
|
|
710
|
+
}
|
|
711
|
+
},
|
|
673
712
|
children: isAllSelected ? "Undo" : paginatedSelectAllActionText || "Select all"
|
|
674
713
|
})
|
|
675
714
|
]
|
|
@@ -752,7 +791,8 @@ var TableWrapperContext = /*#__PURE__*/ createContext({});
|
|
|
752
791
|
increasedTableDensity: increasedTableDensity,
|
|
753
792
|
tableContainerRef: tableContainerRef,
|
|
754
793
|
cellAlignment: cellAlignment,
|
|
755
|
-
noBodyCellPadding: noBodyCellPadding
|
|
794
|
+
noBodyCellPadding: noBodyCellPadding,
|
|
795
|
+
columnWidths: columnWidths
|
|
756
796
|
},
|
|
757
797
|
children: /*#__PURE__*/ _jsxs("div", {
|
|
758
798
|
"data-id": idRef.current,
|
|
@@ -803,8 +843,7 @@ var TableWrapperContext = /*#__PURE__*/ createContext({});
|
|
|
803
843
|
children: renderTable({
|
|
804
844
|
classes: "relative overflow-hidden",
|
|
805
845
|
fixed: true,
|
|
806
|
-
columnsToRender: fixedFirstColumns
|
|
807
|
-
hideCellsOnMobile: true
|
|
846
|
+
columnsToRender: fixedFirstColumns
|
|
808
847
|
})
|
|
809
848
|
}) : /*#__PURE__*/ _jsx("div", {
|
|
810
849
|
className: styles.overflowShadowStyles({
|
|
@@ -822,8 +861,7 @@ var TableWrapperContext = /*#__PURE__*/ createContext({});
|
|
|
822
861
|
classes: "relative overflow-hidden",
|
|
823
862
|
fixed: true,
|
|
824
863
|
columnsToRender: fixedLastColumns,
|
|
825
|
-
reverseColumns: true
|
|
826
|
-
hideCellsOnMobile: true
|
|
864
|
+
reverseColumns: true
|
|
827
865
|
})
|
|
828
866
|
}) : /*#__PURE__*/ _jsx("div", {
|
|
829
867
|
className: styles.overflowShadowStyles({
|
|
@@ -959,7 +997,14 @@ Table.displayName = "Table";
|
|
|
959
997
|
Table.Row = Row;
|
|
960
998
|
Table.Row.displayName = "Table.Row";
|
|
961
999
|
/**
|
|
962
|
-
*
|
|
1000
|
+
* @component Table.Cell
|
|
1001
|
+
*
|
|
1002
|
+
* @usage
|
|
1003
|
+
* - DO: Use for custom cell content within table rows.
|
|
1004
|
+
*
|
|
1005
|
+
* @accessibility
|
|
1006
|
+
* - Renders as `<td>`.
|
|
1007
|
+
*
|
|
963
1008
|
* @param {Object} props - Cell properties.
|
|
964
1009
|
* @param {string} [props.alignment="start"] - Text alignment.
|
|
965
1010
|
* @param {boolean} [props.selectionCell=false] - Whether this is a selection cell.
|
|
@@ -968,8 +1013,11 @@ Table.Row.displayName = "Table.Row";
|
|
|
968
1013
|
*/ function Cell(param) {
|
|
969
1014
|
var tmp = param.alignment, _alignment = tmp === void 0 ? "start" : tmp, children = param.children, _param_selectionCell = param.selectionCell, selectionCell = _param_selectionCell === void 0 ? false : _param_selectionCell;
|
|
970
1015
|
var _useContext = useContext(TableContext), cellAlignment = _useContext.cellAlignment, increasedTableDensity = _useContext.increasedTableDensity, selectable = _useContext.selectable, noBodyCellPadding = _useContext.noBodyCellPadding;
|
|
971
|
-
var _useContext1 = useContext(TableWrapperContext), hideCellsOnMobile = _useContext1.hideCellsOnMobile, reverseColumns = _useContext1.reverseColumns, columnsToRender = _useContext1.columnsToRender;
|
|
1016
|
+
var _useContext1 = useContext(TableWrapperContext), hideCellsOnMobile = _useContext1.hideCellsOnMobile, reverseColumns = _useContext1.reverseColumns, columnsToRender = _useContext1.columnsToRender, isFixedOverlay = _useContext1.isFixedOverlay, fixedFirstColumns = _useContext1.fixedFirstColumns, fixedLastColumns = _useContext1.fixedLastColumns;
|
|
1017
|
+
var isMobile = useMobile();
|
|
972
1018
|
var columnCount = (cellAlignment === null || cellAlignment === void 0 ? void 0 : cellAlignment.length) || 0;
|
|
1019
|
+
// Use state instead of ref so changes trigger re-render
|
|
1020
|
+
var _useState = _sliced_to_array(useState(-1), 2), cellIndex = _useState[0], setCellIndex = _useState[1];
|
|
973
1021
|
var cellIndexRef = useRef(null);
|
|
974
1022
|
var setCellRef = useCallback(function(node) {
|
|
975
1023
|
if (!node || cellIndexRef.current !== null) return;
|
|
@@ -977,16 +1025,21 @@ Table.Row.displayName = "Table.Row";
|
|
|
977
1025
|
if ((parentRow === null || parentRow === void 0 ? void 0 : parentRow.tagName) === "TR") {
|
|
978
1026
|
var totalCells = parentRow.children.length;
|
|
979
1027
|
var index = node.cellIndex;
|
|
980
|
-
|
|
1028
|
+
var calculatedIndex = reverseColumns ? totalCells - columnsToRender + index - (totalCells - columnCount) : index;
|
|
1029
|
+
cellIndexRef.current = calculatedIndex;
|
|
1030
|
+
setCellIndex(calculatedIndex);
|
|
981
1031
|
}
|
|
982
1032
|
}, [
|
|
983
1033
|
reverseColumns,
|
|
984
1034
|
columnsToRender,
|
|
985
1035
|
columnCount
|
|
986
1036
|
]);
|
|
987
|
-
var _cellIndexRef_current;
|
|
988
|
-
var cellIndex = (_cellIndexRef_current = cellIndexRef.current) !== null && _cellIndexRef_current !== void 0 ? _cellIndexRef_current : -1;
|
|
989
1037
|
var alignment = (cellAlignment === null || cellAlignment === void 0 ? void 0 : cellAlignment[cellIndex]) || _alignment;
|
|
1038
|
+
// Check if this cell is covered by a fixed overlay
|
|
1039
|
+
// When cellIndex is unknown (-1), conservatively assume the cell might be covered
|
|
1040
|
+
// if there are any fixed columns. This prevents duplicate popovers during the
|
|
1041
|
+
// brief window between initial render and when cellIndex is calculated.
|
|
1042
|
+
var isCoveredByFixedOverlay = !isFixedOverlay && !reverseColumns && (cellIndex === -1 ? fixedFirstColumns > 0 || fixedLastColumns > 0 : fixedFirstColumns > 0 && cellIndex < fixedFirstColumns || fixedLastColumns > 0 && cellIndex >= columnCount - fixedLastColumns);
|
|
990
1043
|
return /*#__PURE__*/ _jsx("td", {
|
|
991
1044
|
ref: setCellRef,
|
|
992
1045
|
className: styles.cellStyles({
|
|
@@ -997,6 +1050,7 @@ Table.Row.displayName = "Table.Row";
|
|
|
997
1050
|
tableIsSelectable: selectable,
|
|
998
1051
|
noBodyCellPadding: noBodyCellPadding
|
|
999
1052
|
}),
|
|
1053
|
+
inert: !isMobile && isCoveredByFixedOverlay || undefined,
|
|
1000
1054
|
children: /*#__PURE__*/ _jsx("div", {
|
|
1001
1055
|
className: styles.cellContentStyles({
|
|
1002
1056
|
alignment: alignment
|
|
@@ -1008,8 +1062,10 @@ Table.Row.displayName = "Table.Row";
|
|
|
1008
1062
|
Table.Cell = Cell;
|
|
1009
1063
|
Table.Cell.displayName = "Table.Cell";
|
|
1010
1064
|
/**
|
|
1011
|
-
*
|
|
1012
|
-
*
|
|
1065
|
+
* @component Table.Footer
|
|
1066
|
+
*
|
|
1067
|
+
* @usage
|
|
1068
|
+
* - DO: Use for summary or pagination content below the table.
|
|
1013
1069
|
*
|
|
1014
1070
|
* @param {Object} props - The component props.
|
|
1015
1071
|
* @param {boolean} props.hasNextPage - Whether there is a next page.
|
|
@@ -106,30 +106,28 @@ import Icon from "./Icon.js";
|
|
|
106
106
|
import Popover from "./Popover.js";
|
|
107
107
|
import { CaretDownMinor, CaretUpMinor } from "@shopify/polaris-icons";
|
|
108
108
|
import * as PolarisIcons from "@shopify/polaris-icons";
|
|
109
|
-
|
|
110
|
-
base: "Litho-Tabs flex overflow-x-hidden whitespace-nowrap",
|
|
111
|
-
variants: {
|
|
112
|
-
borderBottom: {
|
|
113
|
-
true: "border-b",
|
|
114
|
-
false: ""
|
|
115
|
-
},
|
|
116
|
-
padded: {
|
|
117
|
-
true: "p-2",
|
|
118
|
-
false: ""
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
|
-
var containerStyles = tv({
|
|
123
|
-
base: "Litho-Tabs__TabContainer flex flex-1 overflow-x-hidden whitespace-nowrap space-x-1"
|
|
124
|
-
});
|
|
109
|
+
import Badge from "./Badge.js";
|
|
125
110
|
/**
|
|
126
|
-
*
|
|
111
|
+
* @component Tabs
|
|
112
|
+
*
|
|
113
|
+
* @description An in-page tab switcher that renders a horizontal tab bar for toggling between content panels without URL changes.
|
|
114
|
+
*
|
|
115
|
+
* @usage
|
|
116
|
+
* - DO: Switch between related content views within the same page.
|
|
117
|
+
* - DON'T: Use for URL-based routing (use TabNavigation).
|
|
118
|
+
*
|
|
119
|
+
* @accessibility
|
|
120
|
+
* - Implements tablist/tab/tabpanel ARIA roles; supports keyboard arrow navigation between tabs.
|
|
121
|
+
*
|
|
122
|
+
* @alternative
|
|
123
|
+
* - If you need URL-based tab navigation, use `TabNavigation`. If you need collapsible sections, use `Collapsible`.
|
|
127
124
|
*
|
|
128
125
|
* @param {Object} props - Component props.
|
|
129
126
|
* @param {Object[]} props.tabs - List of tabs to display.
|
|
130
127
|
* @param {string} props.tabs[].id - Unique identifier for the tab.
|
|
131
128
|
* @param {string} props.tabs[].content - Content or label to display for the tab.
|
|
132
129
|
* @param {string} [props.tabs[].icon] - Optional icon to display for the tab.
|
|
130
|
+
* @param {boolean} [props.tabs[].showIconOnMobile=true] - When false, the tab icon is hidden on mobile and only shown at md (≥800px) breakpoint.
|
|
133
131
|
* @param {boolean} [props.tabs[].disclosure=false] - Whether the tab is part of a "More" disclosure group.
|
|
134
132
|
* @param {number} props.selected - Index of the currently selected tab.
|
|
135
133
|
* @param {Function} props.onSelect - Callback fired when a tab is selected, receives the tab's index.
|
|
@@ -140,8 +138,26 @@ var containerStyles = tv({
|
|
|
140
138
|
* @param {boolean} [props.padded=true] - If true, applies padding to the Tabs container.
|
|
141
139
|
* @param {boolean} [props.borderBottom=true] - If true, applies a bottom border to the Tabs container.
|
|
142
140
|
* @param {boolean} [props.simpleTabs=false] - If true, simplifies the styling for the selected tab.
|
|
141
|
+
* @param {number} [props.badgeCount] - The number of badges to display for the tab.
|
|
142
|
+
* @param {string} [props.badgeStatus="default"] - The status of the badge.
|
|
143
143
|
* @returns {JSX.Element} The Tabs component.
|
|
144
|
-
*/
|
|
144
|
+
*/ var styles = tv({
|
|
145
|
+
base: "Litho-Tabs flex overflow-x-hidden whitespace-nowrap",
|
|
146
|
+
variants: {
|
|
147
|
+
borderBottom: {
|
|
148
|
+
true: "border-b",
|
|
149
|
+
false: ""
|
|
150
|
+
},
|
|
151
|
+
padded: {
|
|
152
|
+
true: "p-2",
|
|
153
|
+
false: ""
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
var containerStyles = tv({
|
|
158
|
+
base: "Litho-Tabs__TabContainer flex flex-1 overflow-x-hidden whitespace-nowrap space-x-1"
|
|
159
|
+
});
|
|
160
|
+
function Tabs() {
|
|
145
161
|
var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
|
146
162
|
var tmp = props.tabs, _tabs = tmp === void 0 ? [] : tmp, _selectedIndex = props.selected, onSelect = props.onSelect, fullWidth = props.fullWidth, _props_disclosureText = props.disclosureText, disclosureText = _props_disclosureText === void 0 ? "More" : _props_disclosureText, _props_disclosure = props.disclosure, disclosure = _props_disclosure === void 0 ? false : _props_disclosure, _props_activeDisclosure = props.activeDisclosure, activeDisclosure = _props_activeDisclosure === void 0 ? false : _props_activeDisclosure, _props_padded = props.padded, padded = _props_padded === void 0 ? true : _props_padded, _props_borderBottom = props.borderBottom, borderBottom = _props_borderBottom === void 0 ? true : _props_borderBottom, _props_simpleTabs = props.simpleTabs, simpleTabs = _props_simpleTabs === void 0 ? false : _props_simpleTabs;
|
|
147
163
|
var selectedIndex = parseInt(_selectedIndex);
|
|
@@ -250,9 +266,12 @@ var containerStyles = tv({
|
|
|
250
266
|
},
|
|
251
267
|
disclosure: disclosure && tab.disclosure,
|
|
252
268
|
icon: tab.icon,
|
|
269
|
+
showIconOnMobile: tab.showIconOnMobile,
|
|
253
270
|
fullWidth: fullWidth,
|
|
254
271
|
hidden: tab.hidden,
|
|
255
272
|
simple: simpleTabs,
|
|
273
|
+
badgeCount: tab.badgeCount,
|
|
274
|
+
badgeStatus: tab.badgeStatus,
|
|
256
275
|
children: tab.content
|
|
257
276
|
}, "tab-".concat(tab.originalIndex));
|
|
258
277
|
})
|
|
@@ -345,9 +364,31 @@ var tabStyles = tv({
|
|
|
345
364
|
}
|
|
346
365
|
]
|
|
347
366
|
});
|
|
348
|
-
|
|
367
|
+
/**
|
|
368
|
+
* Individual tab item component used within the Tabs component.
|
|
369
|
+
*
|
|
370
|
+
* @param {Object} props - Component props.
|
|
371
|
+
* @param {string} [props.id] - Unique identifier for the tab, used to generate the DOM element ID.
|
|
372
|
+
* @param {boolean} [props.active] - Whether the tab's disclosure popover is currently active/open.
|
|
373
|
+
* @param {boolean} [props.selected] - Whether this tab is currently selected.
|
|
374
|
+
* @param {number} [props.index] - The index position of this tab in the tabs array.
|
|
375
|
+
* @param {string|React.ReactNode} [props.icon] - Icon to display. Can be a Polaris icon name string or a custom React node.
|
|
376
|
+
* @param {boolean} [props.showIconOnMobile=true] - When false, the tab icon is hidden on mobile and only shown at md (≥800px) breakpoint.
|
|
377
|
+
* @param {Function} [props.onSelect] - Callback fired when the tab is selected, receives the tab's index.
|
|
378
|
+
* @param {Function} [props.onClick] - Custom click handler that overrides the default onSelect behavior.
|
|
379
|
+
* @param {React.ReactNode} [props.children] - The content/label to display inside the tab.
|
|
380
|
+
* @param {boolean} [props.fullWidth] - Whether the tab should expand to fill available space.
|
|
381
|
+
* @param {boolean} [props.hidden] - Whether the tab should be visually hidden (used for overflow handling).
|
|
382
|
+
* @param {boolean} [props.simple] - Whether to use simplified styling (no background, column layout).
|
|
383
|
+
* @param {boolean} [props.disclosure=false] - Whether to show a disclosure caret icon when selected.
|
|
384
|
+
* @param {boolean} [props.alwaysShowDisclosureIcon=false] - Whether to always show the disclosure icon regardless of selection state.
|
|
385
|
+
* @param {boolean} [props.disabled=false] - Whether the tab is disabled.
|
|
386
|
+
* @param {string} [props.badgeStatus="default"] - The status variant of the badge (e.g., "default", "success", "warning").
|
|
387
|
+
* @param {number} [props.badgeCount] - If provided (>= 0), displays a badge with this count.
|
|
388
|
+
* @returns {JSX.Element} The Tab component.
|
|
389
|
+
*/ function Tab() {
|
|
349
390
|
var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
|
350
|
-
var id = props.id, active = props.active, selected = props.selected, index = props.index, icon = props.icon, onSelect = props.onSelect, onClick = props.onClick, children = props.children, fullWidth = props.fullWidth, hidden = props.hidden, simple = props.simple, _props_disclosure = props.disclosure, disclosure = _props_disclosure === void 0 ? false : _props_disclosure, _props_alwaysShowDisclosureIcon = props.alwaysShowDisclosureIcon, alwaysShowDisclosureIcon = _props_alwaysShowDisclosureIcon === void 0 ? false : _props_alwaysShowDisclosureIcon, _props_disabled = props.disabled, disabled = _props_disabled === void 0 ? false : _props_disabled;
|
|
391
|
+
var id = props.id, active = props.active, selected = props.selected, index = props.index, icon = props.icon, _props_showIconOnMobile = props.showIconOnMobile, showIconOnMobile = _props_showIconOnMobile === void 0 ? true : _props_showIconOnMobile, onSelect = props.onSelect, onClick = props.onClick, children = props.children, fullWidth = props.fullWidth, hidden = props.hidden, simple = props.simple, _props_disclosure = props.disclosure, disclosure = _props_disclosure === void 0 ? false : _props_disclosure, _props_alwaysShowDisclosureIcon = props.alwaysShowDisclosureIcon, alwaysShowDisclosureIcon = _props_alwaysShowDisclosureIcon === void 0 ? false : _props_alwaysShowDisclosureIcon, _props_disabled = props.disabled, disabled = _props_disabled === void 0 ? false : _props_disabled, _props_badgeStatus = props.badgeStatus, badgeStatus = _props_badgeStatus === void 0 ? "default" : _props_badgeStatus, badgeCount = props.badgeCount;
|
|
351
392
|
var polarisIcon = typeof icon === "string" ? PolarisIcons[icon] : PolarisIcons[icon === null || icon === void 0 ? void 0 : icon.displayName];
|
|
352
393
|
var showDisclosure = disclosure && (selected || alwaysShowDisclosureIcon);
|
|
353
394
|
var tabClasses = tabStyles({
|
|
@@ -364,18 +405,32 @@ function Tab() {
|
|
|
364
405
|
onClick: onClick ? onClick : onSelect ? function() {
|
|
365
406
|
return onSelect(index);
|
|
366
407
|
} : undefined,
|
|
408
|
+
role: "tab",
|
|
409
|
+
tabIndex: disabled ? -1 : 0,
|
|
410
|
+
"aria-selected": selected,
|
|
411
|
+
onKeyDown: function(e) {
|
|
412
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
413
|
+
e.preventDefault();
|
|
414
|
+
if (onClick) onClick();
|
|
415
|
+
else if (onSelect) onSelect(index);
|
|
416
|
+
}
|
|
417
|
+
},
|
|
367
418
|
children: [
|
|
368
419
|
icon && !!polarisIcon && /*#__PURE__*/ _jsx("span", {
|
|
369
|
-
className: "Litho-Tabs__Tab-Icon mr-1",
|
|
420
|
+
className: "Litho-Tabs__Tab-Icon mr-1 ".concat(showIconOnMobile ? "" : "hidden @md:inline-flex"),
|
|
370
421
|
children: /*#__PURE__*/ _jsx(Icon, {
|
|
371
422
|
source: polarisIcon,
|
|
372
423
|
color: selected && simple ? "default" : selected ? "primary" : "subdued",
|
|
373
424
|
size: simple ? "lg" : undefined
|
|
374
425
|
})
|
|
375
426
|
}),
|
|
376
|
-
icon &&
|
|
377
|
-
className: "Litho-Tabs__Tab-Icon ".concat(simple ? "mr-0" : "mr-1"),
|
|
378
|
-
children:
|
|
427
|
+
icon && !polarisIcon && /*#__PURE__*/ _jsx("span", {
|
|
428
|
+
className: "Litho-Tabs__Tab-Icon ".concat(simple ? "mr-0" : "mr-1", " ").concat(showIconOnMobile ? "" : "hidden @md:inline-flex"),
|
|
429
|
+
children: /*#__PURE__*/ _jsx(Icon, {
|
|
430
|
+
source: icon,
|
|
431
|
+
color: selected && simple ? "default" : selected ? "primary" : "subdued",
|
|
432
|
+
size: simple ? "lg" : undefined
|
|
433
|
+
})
|
|
379
434
|
}),
|
|
380
435
|
/*#__PURE__*/ _jsx("span", {
|
|
381
436
|
className: "Litho-Tabs__Tab-Content block min-h-5 leading-5",
|
|
@@ -388,6 +443,11 @@ function Tab() {
|
|
|
388
443
|
color: selected && simple ? "default" : selected ? "active" : "subdued",
|
|
389
444
|
size: simple ? "lg" : undefined
|
|
390
445
|
})
|
|
446
|
+
}),
|
|
447
|
+
badgeCount >= 0 && /*#__PURE__*/ _jsx(Badge, {
|
|
448
|
+
status: badgeStatus,
|
|
449
|
+
className: "ml-1",
|
|
450
|
+
children: badgeCount
|
|
391
451
|
})
|
|
392
452
|
]
|
|
393
453
|
});
|
|
@@ -2,7 +2,33 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { tv } from "tailwind-variants";
|
|
3
3
|
import Icon from "./Icon.js";
|
|
4
4
|
import { CancelSmallMinor, TickSmallMinor } from "@shopify/polaris-icons";
|
|
5
|
-
|
|
5
|
+
/**
|
|
6
|
+
* @component Tag
|
|
7
|
+
*
|
|
8
|
+
* @description A removable label component used to display active filters, selected categories, or user-applied tags.
|
|
9
|
+
*
|
|
10
|
+
* @usage
|
|
11
|
+
* - DO: Display removable filters, categories, or labels.
|
|
12
|
+
* - DON'T: Use for non-removable status indicators (use Badge).
|
|
13
|
+
*
|
|
14
|
+
* @accessibility
|
|
15
|
+
* - Tag renders a button for removal; ensure the remove action is accessible via keyboard.
|
|
16
|
+
*
|
|
17
|
+
* @alternative
|
|
18
|
+
* - If you need a non-interactive status label, use `Badge`.
|
|
19
|
+
* - If you need a selectable option, use `ChoiceList`.
|
|
20
|
+
*
|
|
21
|
+
* @param {Object} props - The properties for the Tag component.
|
|
22
|
+
* @param {React.ReactNode} props.children - The content to be displayed inside the Tag.
|
|
23
|
+
* @param {boolean} [props.disabled=false] - Whether the tag is disabled.
|
|
24
|
+
* @param {Function} [props.onClick] - The callback function to execute on tag click.
|
|
25
|
+
* @param {Function} [props.onRemove] - The callback function to execute when the remove icon is clicked.
|
|
26
|
+
* @param {string} [props.accessibilityLabel] - The accessibility label for the tag.
|
|
27
|
+
* @param {string} [props.url] - The URL to open when the tag is clicked.
|
|
28
|
+
* @param {string} [props.target="_self"] - Specifies where to open the URL.
|
|
29
|
+
*
|
|
30
|
+
* @returns {JSX.Element} The rendered Tag component.
|
|
31
|
+
*/ var styles = tv({
|
|
6
32
|
base: "Litho-Tag text-xs rounded-md inline-grid pl-1 whitespace-nowrap",
|
|
7
33
|
variants: {
|
|
8
34
|
disabled: {
|
|
@@ -75,21 +101,7 @@ var actionStyles = tv({
|
|
|
75
101
|
}
|
|
76
102
|
}
|
|
77
103
|
});
|
|
78
|
-
|
|
79
|
-
* Renders a Tag component with optional interactive and removable features.
|
|
80
|
-
*
|
|
81
|
-
* @function Tag
|
|
82
|
-
* @param {Object} props - The properties for the Tag component.
|
|
83
|
-
* @param {React.ReactNode} props.children - The content to be displayed inside the Tag.
|
|
84
|
-
* @param {boolean} [props.disabled=false] - Whether the tag is disabled.
|
|
85
|
-
* @param {Function} [props.onClick] - The callback function to execute on tag click.
|
|
86
|
-
* @param {Function} [props.onRemove] - The callback function to execute when the remove icon is clicked.
|
|
87
|
-
* @param {string} [props.accessibilityLabel] - The accessibility label for the tag.
|
|
88
|
-
* @param {string} [props.url] - The URL to open when the tag is clicked.
|
|
89
|
-
* @param {string} [props.target="_self"] - Specifies where to open the URL.
|
|
90
|
-
*
|
|
91
|
-
* @returns {JSX.Element} The rendered Tag component.
|
|
92
|
-
*/ function Tag() {
|
|
104
|
+
function Tag() {
|
|
93
105
|
var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
|
94
106
|
var children = props.children, _props_disabled = props.disabled, disabled = _props_disabled === void 0 ? false : _props_disabled, icon = props.icon, onClick = props.onClick, onRemove = props.onRemove, accessibilityLabel = props.accessibilityLabel, url = props.url, _props_target = props.target, target = _props_target === void 0 ? "_self" : _props_target, className = props.className, _props_selected = props.selected, selected = _props_selected === void 0 ? false : _props_selected;
|
|
95
107
|
var interactive = !!url || !!onClick;
|
|
@@ -136,6 +148,15 @@ var actionStyles = tv({
|
|
|
136
148
|
hasRemoveAction && /*#__PURE__*/ _jsx("div", {
|
|
137
149
|
className: actionClasses,
|
|
138
150
|
onClick: onRemove,
|
|
151
|
+
role: "button",
|
|
152
|
+
tabIndex: disabled ? -1 : 0,
|
|
153
|
+
"aria-label": "Remove",
|
|
154
|
+
onKeyDown: function(e) {
|
|
155
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
156
|
+
e.preventDefault();
|
|
157
|
+
onRemove === null || onRemove === void 0 ? void 0 : onRemove();
|
|
158
|
+
}
|
|
159
|
+
},
|
|
139
160
|
children: /*#__PURE__*/ _jsx(Icon, {
|
|
140
161
|
source: CancelSmallMinor,
|
|
141
162
|
color: disabled ? "disabled" : "default",
|
|
@@ -79,7 +79,37 @@ function _object_without_properties_loose(source, excluded) {
|
|
|
79
79
|
}
|
|
80
80
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
81
81
|
import { tv } from "tailwind-variants";
|
|
82
|
-
|
|
82
|
+
/**
|
|
83
|
+
* @component Text
|
|
84
|
+
*
|
|
85
|
+
* @description A typography component that renders text content with consistent heading and body variants, alignment, weight, and color options.
|
|
86
|
+
*
|
|
87
|
+
* @usage
|
|
88
|
+
* - DO: Use for all text content with consistent typography variants (headings, body, captions).
|
|
89
|
+
* - DON'T: Use raw HTML heading or paragraph tags; always use Text with the appropriate `variant` prop.
|
|
90
|
+
*
|
|
91
|
+
* @accessibility
|
|
92
|
+
* - Use the `as` prop to render semantically correct heading levels (h1-h6) matching the visual hierarchy.
|
|
93
|
+
* - Use `visuallyHidden` to provide screen-reader-only text without hiding content from assistive tech.
|
|
94
|
+
*
|
|
95
|
+
* @alternative
|
|
96
|
+
* - If you need a code block, use `Code` instead.
|
|
97
|
+
* - If you need a clickable text element, use `Link` or `Button` with `link` variant instead.
|
|
98
|
+
*
|
|
99
|
+
* @param {Object} props - Properties to customize the text component.
|
|
100
|
+
* @param {'left' | 'center' | 'right' | 'end' | 'start'} [props.alignment] - Text alignment.
|
|
101
|
+
* @param {'normal' | 'regular' | 'medium' | 'semibold' | 'bold'} [props.fontWeight] - Font weight.
|
|
102
|
+
* @param {'default' | 'subdued' | 'critical' | 'success' | 'warning' | 'alternate' | 'link' | 'disabled'} [props.color] - Text color variant.
|
|
103
|
+
* @param {boolean} [props.truncate] - Whether to truncate text with ellipsis.
|
|
104
|
+
* @param {'headingXl' | 'headingLg' | 'headingMd' | 'headingSm' | 'headingXs' | 'bodyXl' | 'bodyLg' | 'bodyMd' | 'bodySm' | 'bodyXs'} [props.variant] - Text size and style variant.
|
|
105
|
+
* @param {boolean} [props.visuallyHidden] - Visually hides text for accessibility.
|
|
106
|
+
* @param {string} [props.className] - Additional CSS class names.
|
|
107
|
+
* @param {string} [props.as] - Element type (e.g., 'p' or 'span').
|
|
108
|
+
* @param {number} [props.clampLines] - Number of lines to clamp.
|
|
109
|
+
* @param {boolean} [props.strike] - Whether to strike through the text.
|
|
110
|
+
* @param {React.ReactNode} [props.children] - The content to be displayed within the text component. Defaults to an empty string.
|
|
111
|
+
* @returns {JSX.Element} Rendered text component with applied styles.
|
|
112
|
+
*/ var styles = tv({
|
|
83
113
|
base: "Litho-Text block",
|
|
84
114
|
variants: {
|
|
85
115
|
alignment: {
|
|
@@ -218,23 +248,7 @@ var styles = tv({
|
|
|
218
248
|
}
|
|
219
249
|
]
|
|
220
250
|
});
|
|
221
|
-
|
|
222
|
-
* A text component that renders styled text based on provided props.
|
|
223
|
-
*
|
|
224
|
-
* @param {Object} props - Properties to customize the text component.
|
|
225
|
-
* @param {'left' | 'center' | 'right' | 'end' | 'start'} [props.alignment] - Text alignment.
|
|
226
|
-
* @param {'normal' | 'regular' | 'medium' | 'semibold' | 'bold'} [props.fontWeight] - Font weight.
|
|
227
|
-
* @param {'default' | 'subdued' | 'critical' | 'success' | 'warning' | 'alternate' | 'link' | 'disabled'} [props.color] - Text color variant.
|
|
228
|
-
* @param {boolean} [props.truncate] - Whether to truncate text with ellipsis.
|
|
229
|
-
* @param {'headingXl' | 'headingLg' | 'headingMd' | 'headingSm' | 'headingXs' | 'bodyXl' | 'bodyLg' | 'bodyMd' | 'bodySm' | 'bodyXs'} [props.variant] - Text size and style variant.
|
|
230
|
-
* @param {boolean} [props.visuallyHidden] - Visually hides text for accessibility.
|
|
231
|
-
* @param {string} [props.className] - Additional CSS class names.
|
|
232
|
-
* @param {string} [props.as] - Element type (e.g., 'p' or 'span').
|
|
233
|
-
* @param {number} [props.clampLines] - Number of lines to clamp.
|
|
234
|
-
* @param {boolean} [props.strike] - Whether to strike through the text.
|
|
235
|
-
* @param {React.ReactNode} [props.children] - The content to be displayed within the text component. Defaults to an empty string.
|
|
236
|
-
* @returns {JSX.Element} Rendered text component with applied styles.
|
|
237
|
-
*/ function Text() {
|
|
251
|
+
function Text() {
|
|
238
252
|
var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
|
239
253
|
var alignment = props.alignment, as = props.as, className = props.className, color = props.color, fontWeight = props.fontWeight, truncate = props.truncate, variant = props.variant, visuallyHidden = props.visuallyHidden, clampLines = props.clampLines, strike = props.strike, children = props.children, rest = _object_without_properties(props, [
|
|
240
254
|
"alignment",
|