@timmbr/ui 1.4.2 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -10
- package/dist/components/Accordion/Accordion.js +1 -1
- package/dist/components/Accordion/Accordion.styles.d.ts.map +1 -1
- package/dist/components/Accordion/Accordion.styles.js +3 -3
- package/dist/components/Alert/Alert.js +2 -2
- package/dist/components/Alert/Alert.styles.d.ts +2 -2
- package/dist/components/Alert/Alert.styles.js +4 -4
- package/dist/components/AlertDialog/AlertDialog.d.ts +5 -3
- package/dist/components/AlertDialog/AlertDialog.d.ts.map +1 -1
- package/dist/components/AlertDialog/AlertDialog.js +21 -8
- package/dist/components/AlertDialog/AlertDialog.styles.d.ts +7 -1
- package/dist/components/AlertDialog/AlertDialog.styles.d.ts.map +1 -1
- package/dist/components/AlertDialog/AlertDialog.styles.js +29 -6
- package/dist/components/AlertDialog/AlertDialog.types.d.ts +19 -2
- package/dist/components/AlertDialog/AlertDialog.types.d.ts.map +1 -1
- package/dist/components/AuthModal/AuthModal.d.ts +4 -0
- package/dist/components/AuthModal/AuthModal.d.ts.map +1 -0
- package/dist/components/AuthModal/AuthModal.js +89 -0
- package/dist/components/AuthModal/AuthModal.labels.d.ts +6 -0
- package/dist/components/AuthModal/AuthModal.labels.d.ts.map +1 -0
- package/dist/components/AuthModal/AuthModal.labels.js +52 -0
- package/dist/components/AuthModal/AuthModal.styles.d.ts +12 -0
- package/dist/components/AuthModal/AuthModal.styles.d.ts.map +1 -0
- package/dist/components/AuthModal/AuthModal.styles.js +38 -0
- package/dist/components/AuthModal/AuthModal.types.d.ts +158 -0
- package/dist/components/AuthModal/AuthModal.types.d.ts.map +1 -0
- package/dist/components/AuthModal/index.d.ts +6 -0
- package/dist/components/AuthModal/index.d.ts.map +1 -0
- package/dist/components/AuthModal/subcomponents/AuthModalBanner.d.ts +11 -0
- package/dist/components/AuthModal/subcomponents/AuthModalBanner.d.ts.map +1 -0
- package/dist/components/AuthModal/subcomponents/AuthModalBanner.js +58 -0
- package/dist/components/AuthModal/subcomponents/AuthModalIdentifierForm.d.ts +11 -0
- package/dist/components/AuthModal/subcomponents/AuthModalIdentifierForm.d.ts.map +1 -0
- package/dist/components/AuthModal/subcomponents/AuthModalIdentifierForm.js +62 -0
- package/dist/components/AuthModal/subcomponents/AuthModalOAuth.d.ts +11 -0
- package/dist/components/AuthModal/subcomponents/AuthModalOAuth.d.ts.map +1 -0
- package/dist/components/AuthModal/subcomponents/AuthModalOAuth.js +19 -0
- package/dist/components/AuthModal/subcomponents/AuthModalOtpForm.d.ts +10 -0
- package/dist/components/AuthModal/subcomponents/AuthModalOtpForm.d.ts.map +1 -0
- package/dist/components/AuthModal/subcomponents/AuthModalOtpForm.js +62 -0
- package/dist/components/AuthModal/subcomponents/AuthModalParts.d.ts +44 -0
- package/dist/components/AuthModal/subcomponents/AuthModalParts.d.ts.map +1 -0
- package/dist/components/AuthModal/subcomponents/AuthModalParts.js +134 -0
- package/dist/components/AuthModal/subcomponents/AuthModalPasswordForm.d.ts +10 -0
- package/dist/components/AuthModal/subcomponents/AuthModalPasswordForm.d.ts.map +1 -0
- package/dist/components/AuthModal/subcomponents/AuthModalPasswordForm.js +54 -0
- package/dist/components/AuthModal/subcomponents/AuthModalSetPasswordForm.d.ts +10 -0
- package/dist/components/AuthModal/subcomponents/AuthModalSetPasswordForm.d.ts.map +1 -0
- package/dist/components/AuthModal/subcomponents/AuthModalSetPasswordForm.js +79 -0
- package/dist/components/AuthModal/subcomponents/AuthModalSuccess.d.ts +10 -0
- package/dist/components/AuthModal/subcomponents/AuthModalSuccess.d.ts.map +1 -0
- package/dist/components/AuthModal/subcomponents/AuthModalSuccess.js +26 -0
- package/dist/components/AuthModal/subcomponents/OAuthButton.d.ts +12 -0
- package/dist/components/AuthModal/subcomponents/OAuthButton.d.ts.map +1 -0
- package/dist/components/AuthModal/subcomponents/OAuthButton.js +38 -0
- package/dist/components/AuthModal/subcomponents/index.d.ts +9 -0
- package/dist/components/AuthModal/subcomponents/index.d.ts.map +1 -0
- package/dist/components/Avatar/Avatar.styles.d.ts +2 -2
- package/dist/components/Avatar/Avatar.styles.js +11 -11
- package/dist/components/Badge/Badge.styles.d.ts +2 -2
- package/dist/components/Badge/Badge.styles.d.ts.map +1 -1
- package/dist/components/Badge/Badge.styles.js +10 -8
- package/dist/components/Button/Button.d.ts.map +1 -1
- package/dist/components/Button/Button.js +6 -0
- package/dist/components/Button/Button.styles.d.ts +4 -2
- package/dist/components/Button/Button.styles.d.ts.map +1 -1
- package/dist/components/Button/Button.styles.js +29 -10
- package/dist/components/Card/Card.d.ts.map +1 -1
- package/dist/components/Card/Card.js +51 -32
- package/dist/components/Card/Card.styles.d.ts +32 -5
- package/dist/components/Card/Card.styles.d.ts.map +1 -1
- package/dist/components/Card/Card.styles.js +70 -11
- package/dist/components/Card/Card.types.d.ts +14 -3
- package/dist/components/Card/Card.types.d.ts.map +1 -1
- package/dist/components/Checkbox/Checkbox.js +4 -4
- package/dist/components/Checkbox/Checkbox.styles.d.ts +2 -2
- package/dist/components/Checkbox/Checkbox.styles.js +1 -1
- package/dist/components/Chip/Chip.js +1 -1
- package/dist/components/Chip/Chip.styles.d.ts +1 -1
- package/dist/components/Chip/Chip.styles.js +5 -5
- package/dist/components/ConfirmDialog/ConfirmDialog.d.ts +30 -0
- package/dist/components/ConfirmDialog/ConfirmDialog.d.ts.map +1 -0
- package/dist/components/ConfirmDialog/ConfirmDialog.js +57 -0
- package/dist/components/ConfirmDialog/index.d.ts +2 -0
- package/dist/components/ConfirmDialog/index.d.ts.map +1 -0
- package/dist/components/Container/Container.styles.d.ts +1 -1
- package/dist/components/DataList/DataList.d.ts +3 -1
- package/dist/components/DataList/DataList.d.ts.map +1 -1
- package/dist/components/DataList/DataList.js +53 -15
- package/dist/components/DataList/DataList.styles.d.ts +17 -4
- package/dist/components/DataList/DataList.styles.d.ts.map +1 -1
- package/dist/components/DataList/DataList.styles.js +56 -13
- package/dist/components/DataList/DataList.types.d.ts +19 -2
- package/dist/components/DataList/DataList.types.d.ts.map +1 -1
- package/dist/components/Dialog/Dialog.styles.js +6 -6
- package/dist/components/Divider/Divider.js +1 -1
- package/dist/components/Drawer/Drawer.d.ts +4 -3
- package/dist/components/Drawer/Drawer.d.ts.map +1 -1
- package/dist/components/Drawer/Drawer.js +33 -6
- package/dist/components/Drawer/Drawer.styles.d.ts +4 -0
- package/dist/components/Drawer/Drawer.styles.d.ts.map +1 -1
- package/dist/components/Drawer/Drawer.styles.js +9 -6
- package/dist/components/Drawer/Drawer.types.d.ts +1 -0
- package/dist/components/Drawer/Drawer.types.d.ts.map +1 -1
- package/dist/components/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/components/Dropdown/Dropdown.js +25 -12
- package/dist/components/Dropdown/Dropdown.styles.d.ts +5 -1
- package/dist/components/Dropdown/Dropdown.styles.d.ts.map +1 -1
- package/dist/components/Dropdown/Dropdown.styles.js +13 -3
- package/dist/components/Dropdown/Dropdown.types.d.ts +4 -0
- package/dist/components/Dropdown/Dropdown.types.d.ts.map +1 -1
- package/dist/components/EmptyState/EmptyState.d.ts.map +1 -1
- package/dist/components/EmptyState/EmptyState.js +4 -3
- package/dist/components/EmptyState/EmptyState.styles.d.ts +3 -2
- package/dist/components/EmptyState/EmptyState.styles.d.ts.map +1 -1
- package/dist/components/EmptyState/EmptyState.styles.js +8 -3
- package/dist/components/Fieldset/Fieldset.d.ts +14 -0
- package/dist/components/Fieldset/Fieldset.d.ts.map +1 -0
- package/dist/components/Fieldset/Fieldset.js +24 -0
- package/dist/components/Fieldset/index.d.ts +2 -0
- package/dist/components/Fieldset/index.d.ts.map +1 -0
- package/dist/components/FormActions/FormActions.d.ts +13 -0
- package/dist/components/FormActions/FormActions.d.ts.map +1 -0
- package/dist/components/FormActions/FormActions.js +24 -0
- package/dist/components/FormActions/index.d.ts +2 -0
- package/dist/components/FormActions/index.d.ts.map +1 -0
- package/dist/components/FormField/FormField.js +1 -1
- package/dist/components/Grid/Grid.d.ts +3 -1
- package/dist/components/Grid/Grid.d.ts.map +1 -1
- package/dist/components/Grid/Grid.js +31 -5
- package/dist/components/Grid/Grid.styles.d.ts +86 -0
- package/dist/components/Grid/Grid.styles.d.ts.map +1 -1
- package/dist/components/Grid/Grid.styles.js +85 -1
- package/dist/components/Grid/Grid.types.d.ts +31 -3
- package/dist/components/Grid/Grid.types.d.ts.map +1 -1
- package/dist/components/Heading/Heading.styles.d.ts +2 -2
- package/dist/components/Heading/Heading.styles.d.ts.map +1 -1
- package/dist/components/Heading/Heading.styles.js +15 -11
- package/dist/components/Heading/Heading.types.d.ts +1 -1
- package/dist/components/Heading/Heading.types.d.ts.map +1 -1
- package/dist/components/Icon/Icon.styles.d.ts +2 -2
- package/dist/components/Icon/Icon.styles.d.ts.map +1 -1
- package/dist/components/Icon/Icon.styles.js +12 -8
- package/dist/components/IconTile/IconTile.d.ts +8 -0
- package/dist/components/IconTile/IconTile.d.ts.map +1 -0
- package/dist/components/IconTile/IconTile.js +23 -0
- package/dist/components/IconTile/IconTile.styles.d.ts +7 -0
- package/dist/components/IconTile/IconTile.styles.d.ts.map +1 -0
- package/dist/components/IconTile/IconTile.styles.js +24 -0
- package/dist/components/IconTile/IconTile.types.d.ts +12 -0
- package/dist/components/IconTile/IconTile.types.d.ts.map +1 -0
- package/dist/components/IconTile/index.d.ts +4 -0
- package/dist/components/IconTile/index.d.ts.map +1 -0
- package/dist/components/ImageUpload/ImageUpload.js +6 -6
- package/dist/components/ImageUpload/subcomponents/ImageUploadDropzone.js +10 -10
- package/dist/components/ImageUpload/subcomponents/ImageUploadModal.js +8 -8
- package/dist/components/ImageUpload/subcomponents/ImageUploadSinglePreview.js +7 -7
- package/dist/components/ImageUpload/subcomponents/ImageUploadThumbnailCard.js +10 -10
- package/dist/components/Inline/Inline.d.ts.map +1 -1
- package/dist/components/Inline/Inline.js +10 -2
- package/dist/components/Inline/Inline.types.d.ts +6 -1
- package/dist/components/Inline/Inline.types.d.ts.map +1 -1
- package/dist/components/Input/Input.js +4 -4
- package/dist/components/Input/Input.styles.d.ts +1 -1
- package/dist/components/Input/Input.styles.js +6 -6
- package/dist/components/Label/Label.styles.d.ts +1 -1
- package/dist/components/Label/Label.styles.js +4 -4
- package/dist/components/LinkButton/LinkButton.d.ts.map +1 -1
- package/dist/components/LinkButton/LinkButton.js +2 -0
- package/dist/components/LinkButton/LinkButton.styles.d.ts +3 -2
- package/dist/components/LinkButton/LinkButton.styles.d.ts.map +1 -1
- package/dist/components/LinkButton/LinkButton.styles.js +12 -6
- package/dist/components/List/List.d.ts.map +1 -1
- package/dist/components/List/List.js +19 -6
- package/dist/components/List/List.styles.d.ts +3 -1
- package/dist/components/List/List.styles.d.ts.map +1 -1
- package/dist/components/List/List.styles.js +7 -6
- package/dist/components/List/List.types.d.ts +7 -0
- package/dist/components/List/List.types.d.ts.map +1 -1
- package/dist/components/MediaCard/MediaCard.d.ts +13 -0
- package/dist/components/MediaCard/MediaCard.d.ts.map +1 -0
- package/dist/components/MediaCard/MediaCard.js +123 -0
- package/dist/components/MediaCard/MediaCard.styles.d.ts +17 -0
- package/dist/components/MediaCard/MediaCard.styles.d.ts.map +1 -0
- package/dist/components/MediaCard/MediaCard.styles.js +57 -0
- package/dist/components/MediaCard/MediaCard.types.d.ts +73 -0
- package/dist/components/MediaCard/MediaCard.types.d.ts.map +1 -0
- package/dist/components/MediaCard/index.d.ts +4 -0
- package/dist/components/MediaCard/index.d.ts.map +1 -0
- package/dist/components/NavFooter/NavFooter.styles.d.ts +1 -1
- package/dist/components/NavFooter/NavFooter.styles.js +9 -9
- package/dist/components/NavFooter/subcomponents/FooterBrand.js +3 -3
- package/dist/components/NavFooter/subcomponents/FooterLegalBar.js +1 -1
- package/dist/components/NavFooter/subcomponents/FooterNavSection.js +4 -4
- package/dist/components/NavFooter/subcomponents/FooterNewsletter.js +7 -7
- package/dist/components/NavFooter/subcomponents/FooterOffice.js +5 -5
- package/dist/components/NavFooter/subcomponents/FooterSocial.js +3 -3
- package/dist/components/NavHeader/NavHeader.d.ts.map +1 -1
- package/dist/components/NavHeader/NavHeader.js +13 -4
- package/dist/components/NavHeader/NavHeader.styles.d.ts +1 -1
- package/dist/components/NavHeader/NavHeader.styles.js +16 -16
- package/dist/components/NavHeader/NavHeader.types.d.ts +41 -0
- package/dist/components/NavHeader/NavHeader.types.d.ts.map +1 -1
- package/dist/components/NavHeader/index.d.ts +1 -1
- package/dist/components/NavHeader/index.d.ts.map +1 -1
- package/dist/components/NavHeader/subcomponents/NavActionLabelSkeleton.d.ts +4 -0
- package/dist/components/NavHeader/subcomponents/NavActionLabelSkeleton.d.ts.map +1 -0
- package/dist/components/NavHeader/subcomponents/NavActionLabelSkeleton.js +16 -0
- package/dist/components/NavHeader/subcomponents/NavActionOverflow.d.ts.map +1 -1
- package/dist/components/NavHeader/subcomponents/NavActionOverflow.js +6 -5
- package/dist/components/NavHeader/subcomponents/NavActions.d.ts +14 -0
- package/dist/components/NavHeader/subcomponents/NavActions.d.ts.map +1 -1
- package/dist/components/NavHeader/subcomponents/NavActions.js +82 -16
- package/dist/components/NavHeader/subcomponents/NavBrand.d.ts.map +1 -1
- package/dist/components/NavHeader/subcomponents/NavBrand.js +14 -15
- package/dist/components/NavHeader/subcomponents/NavItems.js +3 -3
- package/dist/components/NavHeader/subcomponents/NavItemsOverflow.js +7 -7
- package/dist/components/NavHeader/subcomponents/NavMobileSearchDrawer.js +5 -5
- package/dist/components/NavHeader/subcomponents/NavMobileTabSlider.js +2 -2
- package/dist/components/NavHeader/subcomponents/NavSearch.js +5 -5
- package/dist/components/NavHeader/subcomponents/OfferBanner.js +1 -1
- package/dist/components/OtpInput/OtpInput.d.ts +4 -0
- package/dist/components/OtpInput/OtpInput.d.ts.map +1 -0
- package/dist/components/OtpInput/OtpInput.js +114 -0
- package/dist/components/OtpInput/OtpInput.styles.d.ts +10 -0
- package/dist/components/OtpInput/OtpInput.styles.d.ts.map +1 -0
- package/dist/components/OtpInput/OtpInput.styles.js +49 -0
- package/dist/components/OtpInput/OtpInput.types.d.ts +40 -0
- package/dist/components/OtpInput/OtpInput.types.d.ts.map +1 -0
- package/dist/components/OtpInput/index.d.ts +4 -0
- package/dist/components/OtpInput/index.d.ts.map +1 -0
- package/dist/components/PageHeader/PageHeader.d.ts +8 -0
- package/dist/components/PageHeader/PageHeader.d.ts.map +1 -0
- package/dist/components/PageHeader/PageHeader.js +55 -0
- package/dist/components/PageHeader/PageHeader.styles.d.ts +10 -0
- package/dist/components/PageHeader/PageHeader.styles.d.ts.map +1 -0
- package/dist/components/PageHeader/PageHeader.styles.js +23 -0
- package/dist/components/PageHeader/PageHeader.types.d.ts +24 -0
- package/dist/components/PageHeader/PageHeader.types.d.ts.map +1 -0
- package/dist/components/PageHeader/index.d.ts +4 -0
- package/dist/components/PageHeader/index.d.ts.map +1 -0
- package/dist/components/Pagination/Pagination.d.ts +9 -3
- package/dist/components/Pagination/Pagination.d.ts.map +1 -1
- package/dist/components/Pagination/Pagination.js +60 -39
- package/dist/components/Pagination/Pagination.styles.d.ts +1 -1
- package/dist/components/Pagination/Pagination.styles.js +3 -3
- package/dist/components/Pagination/Pagination.types.d.ts +23 -14
- package/dist/components/Pagination/Pagination.types.d.ts.map +1 -1
- package/dist/components/Popover/Popover.styles.js +1 -1
- package/dist/components/Price/Price.d.ts +10 -0
- package/dist/components/Price/Price.d.ts.map +1 -0
- package/dist/components/Price/Price.js +49 -0
- package/dist/components/Price/Price.styles.d.ts +15 -0
- package/dist/components/Price/Price.styles.d.ts.map +1 -0
- package/dist/components/Price/Price.styles.js +44 -0
- package/dist/components/Price/Price.types.d.ts +22 -0
- package/dist/components/Price/Price.types.d.ts.map +1 -0
- package/dist/components/Price/index.d.ts +4 -0
- package/dist/components/Price/index.d.ts.map +1 -0
- package/dist/components/Progress/Progress.js +2 -2
- package/dist/components/Progress/Progress.styles.d.ts +1 -1
- package/dist/components/Radio/Radio.js +4 -4
- package/dist/components/Radio/Radio.styles.d.ts +2 -2
- package/dist/components/Radio/Radio.styles.js +1 -1
- package/dist/components/RangeSlider/RangeSlider.js +3 -3
- package/dist/components/RangeSlider/RangeSlider.styles.js +1 -1
- package/dist/components/Rating/Rating.d.ts +5 -0
- package/dist/components/Rating/Rating.d.ts.map +1 -0
- package/dist/components/Rating/Rating.js +38 -0
- package/dist/components/Rating/Rating.styles.d.ts +6 -0
- package/dist/components/Rating/Rating.styles.d.ts.map +1 -0
- package/dist/components/Rating/Rating.styles.js +13 -0
- package/dist/components/Rating/Rating.types.d.ts +18 -0
- package/dist/components/Rating/Rating.types.d.ts.map +1 -0
- package/dist/components/Rating/index.d.ts +4 -0
- package/dist/components/Rating/index.d.ts.map +1 -0
- package/dist/components/ResponsiveDialog/ResponsiveDialog.d.ts +29 -0
- package/dist/components/ResponsiveDialog/ResponsiveDialog.d.ts.map +1 -0
- package/dist/components/ResponsiveDialog/ResponsiveDialog.js +74 -0
- package/dist/components/ResponsiveDialog/ResponsiveDialog.types.d.ts +27 -0
- package/dist/components/ResponsiveDialog/ResponsiveDialog.types.d.ts.map +1 -0
- package/dist/components/ResponsiveDialog/index.d.ts +3 -0
- package/dist/components/ResponsiveDialog/index.d.ts.map +1 -0
- package/dist/components/SectionNav/SectionNav.d.ts +12 -0
- package/dist/components/SectionNav/SectionNav.d.ts.map +1 -0
- package/dist/components/SectionNav/SectionNav.js +67 -0
- package/dist/components/SectionNav/SectionNav.styles.d.ts +11 -0
- package/dist/components/SectionNav/SectionNav.styles.d.ts.map +1 -0
- package/dist/components/SectionNav/SectionNav.styles.js +28 -0
- package/dist/components/SectionNav/SectionNav.types.d.ts +37 -0
- package/dist/components/SectionNav/SectionNav.types.d.ts.map +1 -0
- package/dist/components/SectionNav/index.d.ts +4 -0
- package/dist/components/SectionNav/index.d.ts.map +1 -0
- package/dist/components/Select/Select.js +2 -2
- package/dist/components/Select/Select.styles.d.ts +1 -1
- package/dist/components/Select/Select.styles.js +8 -8
- package/dist/components/SideBarNavigation/SideBarNavigation.styles.js +8 -8
- package/dist/components/SideBarNavigation/subcomponents/SidebarBranding.js +3 -3
- package/dist/components/SideBarNavigation/subcomponents/SidebarFooter.js +1 -1
- package/dist/components/SideBarNavigation/subcomponents/SidebarPopoverMenu.js +4 -4
- package/dist/components/SideBarNavigation/subcomponents/SidebarProfile.js +9 -9
- package/dist/components/SideBarNavigation/subcomponents/SidebarSubItem.js +2 -2
- package/dist/components/Skeleton/Skeleton.styles.js +1 -1
- package/dist/components/Spinner/Spinner.d.ts.map +1 -1
- package/dist/components/Spinner/Spinner.js +9 -7
- package/dist/components/Spinner/Spinner.styles.d.ts +8 -2
- package/dist/components/Spinner/Spinner.styles.d.ts.map +1 -1
- package/dist/components/Spinner/Spinner.styles.js +27 -24
- package/dist/components/Spinner/Spinner.types.d.ts +9 -0
- package/dist/components/Spinner/Spinner.types.d.ts.map +1 -1
- package/dist/components/Stack/Stack.d.ts.map +1 -1
- package/dist/components/Stack/Stack.js +16 -1
- package/dist/components/Stack/Stack.types.d.ts +14 -1
- package/dist/components/Stack/Stack.types.d.ts.map +1 -1
- package/dist/components/Stat/Stat.styles.js +4 -4
- package/dist/components/Stepper/Stepper.d.ts +9 -0
- package/dist/components/Stepper/Stepper.d.ts.map +1 -0
- package/dist/components/Stepper/Stepper.js +81 -0
- package/dist/components/Stepper/Stepper.styles.d.ts +14 -0
- package/dist/components/Stepper/Stepper.styles.d.ts.map +1 -0
- package/dist/components/Stepper/Stepper.styles.js +40 -0
- package/dist/components/Stepper/Stepper.types.d.ts +17 -0
- package/dist/components/Stepper/Stepper.types.d.ts.map +1 -0
- package/dist/components/Stepper/index.d.ts +4 -0
- package/dist/components/Stepper/index.d.ts.map +1 -0
- package/dist/components/Steps/Steps.d.ts +9 -0
- package/dist/components/Steps/Steps.d.ts.map +1 -0
- package/dist/components/Steps/Steps.js +81 -0
- package/dist/components/Steps/Steps.styles.d.ts +14 -0
- package/dist/components/Steps/Steps.styles.d.ts.map +1 -0
- package/dist/components/Steps/Steps.styles.js +40 -0
- package/dist/components/Steps/Steps.types.d.ts +17 -0
- package/dist/components/Steps/Steps.types.d.ts.map +1 -0
- package/dist/components/Steps/index.d.ts +4 -0
- package/dist/components/Steps/index.d.ts.map +1 -0
- package/dist/components/SubNav/SubNav.d.ts +17 -0
- package/dist/components/SubNav/SubNav.d.ts.map +1 -0
- package/dist/components/SubNav/SubNav.js +87 -0
- package/dist/components/SubNav/SubNav.styles.d.ts +18 -0
- package/dist/components/SubNav/SubNav.styles.d.ts.map +1 -0
- package/dist/components/SubNav/SubNav.styles.js +33 -0
- package/dist/components/SubNav/SubNav.types.d.ts +45 -0
- package/dist/components/SubNav/SubNav.types.d.ts.map +1 -0
- package/dist/components/SubNav/index.d.ts +4 -0
- package/dist/components/SubNav/index.d.ts.map +1 -0
- package/dist/components/Switch/Switch.js +2 -2
- package/dist/components/Switch/Switch.styles.d.ts +2 -2
- package/dist/components/Switch/Switch.styles.js +1 -1
- package/dist/components/Table/Table.js +1 -1
- package/dist/components/Table/Table.styles.d.ts +1 -1
- package/dist/components/Table/Table.styles.js +5 -5
- package/dist/components/Table/TablePagination.js +4 -4
- package/dist/components/Tabs/Tabs.d.ts.map +1 -1
- package/dist/components/Tabs/Tabs.js +75 -8
- package/dist/components/Tabs/Tabs.styles.d.ts +10 -2
- package/dist/components/Tabs/Tabs.styles.d.ts.map +1 -1
- package/dist/components/Tabs/Tabs.styles.js +25 -10
- package/dist/components/Tabs/Tabs.types.d.ts +13 -0
- package/dist/components/Tabs/Tabs.types.d.ts.map +1 -1
- package/dist/components/Text/Text.d.ts.map +1 -1
- package/dist/components/Text/Text.js +4 -0
- package/dist/components/Text/Text.styles.d.ts +4 -2
- package/dist/components/Text/Text.styles.d.ts.map +1 -1
- package/dist/components/Text/Text.styles.js +32 -16
- package/dist/components/Text/Text.types.d.ts +1 -1
- package/dist/components/Text/Text.types.d.ts.map +1 -1
- package/dist/components/Textarea/Textarea.js +4 -4
- package/dist/components/Textarea/Textarea.styles.d.ts +1 -1
- package/dist/components/Textarea/Textarea.styles.js +6 -6
- package/dist/components/Toast/Toast.js +3 -3
- package/dist/components/Toast/Toast.styles.js +5 -5
- package/dist/components/Toast/ToastContainer.js +1 -1
- package/dist/components/Tooltip/Tooltip.styles.js +1 -1
- package/dist/components/VisuallyHidden/VisuallyHidden.d.ts +8 -0
- package/dist/components/VisuallyHidden/VisuallyHidden.d.ts.map +1 -0
- package/dist/components/VisuallyHidden/VisuallyHidden.js +14 -0
- package/dist/components/VisuallyHidden/index.d.ts +2 -0
- package/dist/components/VisuallyHidden/index.d.ts.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +46 -14
- package/dist/utils/gap.d.ts +21 -1
- package/dist/utils/gap.d.ts.map +1 -1
- package/dist/utils/gap.js +306 -46
- package/package.json +7 -6
- package/dist/components/CrossZoneLink/CrossZoneLink.d.ts +0 -10
- package/dist/components/CrossZoneLink/CrossZoneLink.d.ts.map +0 -1
- package/dist/components/CrossZoneLink/CrossZoneLink.js +0 -111
- package/dist/components/CrossZoneLink/CrossZoneLink.styles.d.ts +0 -8
- package/dist/components/CrossZoneLink/CrossZoneLink.styles.d.ts.map +0 -1
- package/dist/components/CrossZoneLink/CrossZoneLink.styles.js +0 -33
- package/dist/components/CrossZoneLink/CrossZoneLink.types.d.ts +0 -31
- package/dist/components/CrossZoneLink/CrossZoneLink.types.d.ts.map +0 -1
- package/dist/components/CrossZoneLink/index.d.ts +0 -4
- package/dist/components/CrossZoneLink/index.d.ts.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Rating/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { ResponsiveDialogContentProps, ResponsiveDialogMode, ResponsiveDialogProps, ResponsiveDialogSectionProps, ResponsiveDialogFormProps } from './ResponsiveDialog.types';
|
|
3
|
+
export declare const RESPONSIVE_DIALOG_BREAKPOINT = "(min-width: 640px)";
|
|
4
|
+
/** Whether the surrounding ResponsiveDialog renders as a `dialog` or a bottom `drawer`. */
|
|
5
|
+
export declare const useResponsiveDialogMode: () => ResponsiveDialogMode;
|
|
6
|
+
/**
|
|
7
|
+
* A centred Dialog on larger screens and a bottom sheet (Drawer) on phones,
|
|
8
|
+
* with one API. Use it for forms and pickers; keep short confirmations in
|
|
9
|
+
* AlertDialog. Before hydration it renders as a dialog.
|
|
10
|
+
*/
|
|
11
|
+
export declare function ResponsiveDialog({ breakpoint, children, ...props }: ResponsiveDialogProps): React.JSX.Element;
|
|
12
|
+
export declare namespace ResponsiveDialog {
|
|
13
|
+
var displayName: string;
|
|
14
|
+
}
|
|
15
|
+
export declare const ResponsiveDialogContent: React.ForwardRefExoticComponent<ResponsiveDialogContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
16
|
+
export declare const ResponsiveDialogHeader: React.FC<ResponsiveDialogSectionProps>;
|
|
17
|
+
export declare const ResponsiveDialogBody: React.FC<ResponsiveDialogSectionProps>;
|
|
18
|
+
/** Actions; pinned to the bottom of the sheet on phones (above the keyboard and home bar). */
|
|
19
|
+
export declare const ResponsiveDialogFooter: React.FC<ResponsiveDialogSectionProps>;
|
|
20
|
+
export declare const ResponsiveDialogTitle: React.ForwardRefExoticComponent<Omit<Omit<import("@radix-ui/react-dialog").DialogTitleProps & React.RefAttributes<HTMLHeadingElement>, "ref"> & React.RefAttributes<HTMLHeadingElement>, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
|
|
21
|
+
export declare const ResponsiveDialogDescription: React.ForwardRefExoticComponent<Omit<Omit<import("@radix-ui/react-dialog").DialogDescriptionProps & React.RefAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
|
|
22
|
+
/**
|
|
23
|
+
* A form that wraps ResponsiveDialogBody + ResponsiveDialogFooter, so the
|
|
24
|
+
* submit button can live in the (pinned) footer and the fields still scroll.
|
|
25
|
+
*/
|
|
26
|
+
export declare const ResponsiveDialogForm: React.ForwardRefExoticComponent<ResponsiveDialogFormProps & React.RefAttributes<HTMLFormElement>>;
|
|
27
|
+
/** Same Radix close in both modes. */
|
|
28
|
+
export declare const ResponsiveDialogClose: React.ForwardRefExoticComponent<import("@radix-ui/react-dialog").DialogCloseProps & React.RefAttributes<HTMLButtonElement>>;
|
|
29
|
+
//# sourceMappingURL=ResponsiveDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResponsiveDialog.d.ts","sourceRoot":"","sources":["../../../src/components/ResponsiveDialog/ResponsiveDialog.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAqB/B,OAAO,KAAK,EACV,4BAA4B,EAC5B,oBAAoB,EACpB,qBAAqB,EACrB,4BAA4B,EAC5B,yBAAyB,EAC1B,MAAM,0BAA0B,CAAC;AAIlC,eAAO,MAAM,4BAA4B,uBAAuB,CAAC;AAIjE,2FAA2F;AAC3F,eAAO,MAAM,uBAAuB,4BAAsC,CAAC;AAE3E;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,UAAyC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,qBAAqB,qBAUxH;yBAVe,gBAAgB;;;AAahC,eAAO,MAAM,uBAAuB,qGAoBnC,CAAC;AAGF,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,CAC0B,CAAC;AAGrG,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,CACwB,CAAC;AAGjG,8FAA8F;AAC9F,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,CAKvE,CAAC;AAGJ,eAAO,MAAM,qBAAqB,4OAKjC,CAAC;AAGF,eAAO,MAAM,2BAA2B,wPASvC,CAAC;AAGF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,mGAYhC,CAAC;AAGF,sCAAsC;AACtC,eAAO,MAAM,qBAAqB,6HAAc,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { useMediaQuery } from '@timmbr/hooks';
|
|
5
|
+
import { cn } from '@timmbr/utils';
|
|
6
|
+
import { DialogClose, Dialog, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from '../Dialog/Dialog.js';
|
|
7
|
+
import { DrawerBody, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle } from '../Drawer/Drawer.js';
|
|
8
|
+
|
|
9
|
+
const DIALOG_SIZE = { sm: "max-w-md", md: "max-w-lg", lg: "max-w-2xl" };
|
|
10
|
+
const RESPONSIVE_DIALOG_BREAKPOINT = "(min-width: 640px)";
|
|
11
|
+
const ModeContext = React.createContext("dialog");
|
|
12
|
+
const useResponsiveDialogMode = () => React.useContext(ModeContext);
|
|
13
|
+
function ResponsiveDialog({ breakpoint = RESPONSIVE_DIALOG_BREAKPOINT, children, ...props }) {
|
|
14
|
+
const isSmall = useMediaQuery(`not all and ${breakpoint}`);
|
|
15
|
+
const mode = isSmall ? "drawer" : "dialog";
|
|
16
|
+
return /* @__PURE__ */ jsx(ModeContext.Provider, { value: mode, children: /* @__PURE__ */ jsx(Dialog, { ...props, children }) });
|
|
17
|
+
}
|
|
18
|
+
ResponsiveDialog.displayName = "ResponsiveDialog";
|
|
19
|
+
const ResponsiveDialogContent = React.forwardRef(
|
|
20
|
+
({ className, dialogClassName, drawerClassName, size = "md", ...props }, ref) => {
|
|
21
|
+
const mode = useResponsiveDialogMode();
|
|
22
|
+
return mode === "drawer" ? /* @__PURE__ */ jsx(
|
|
23
|
+
DrawerContent,
|
|
24
|
+
{
|
|
25
|
+
ref,
|
|
26
|
+
side: "bottom",
|
|
27
|
+
"data-mode": "drawer",
|
|
28
|
+
className: cn(className, drawerClassName),
|
|
29
|
+
...props
|
|
30
|
+
}
|
|
31
|
+
) : /* @__PURE__ */ jsx(
|
|
32
|
+
DialogContent,
|
|
33
|
+
{
|
|
34
|
+
ref,
|
|
35
|
+
"data-mode": "dialog",
|
|
36
|
+
className: cn(DIALOG_SIZE[size], className, dialogClassName),
|
|
37
|
+
...props
|
|
38
|
+
}
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
);
|
|
42
|
+
ResponsiveDialogContent.displayName = "ResponsiveDialogContent";
|
|
43
|
+
const ResponsiveDialogHeader = (props) => useResponsiveDialogMode() === "drawer" ? /* @__PURE__ */ jsx(DrawerHeader, { ...props }) : /* @__PURE__ */ jsx(DialogHeader, { ...props });
|
|
44
|
+
ResponsiveDialogHeader.displayName = "ResponsiveDialogHeader";
|
|
45
|
+
const ResponsiveDialogBody = (props) => useResponsiveDialogMode() === "drawer" ? /* @__PURE__ */ jsx(DrawerBody, { ...props }) : /* @__PURE__ */ jsx(DialogBody, { ...props });
|
|
46
|
+
ResponsiveDialogBody.displayName = "ResponsiveDialogBody";
|
|
47
|
+
const ResponsiveDialogFooter = ({ className, ...props }) => useResponsiveDialogMode() === "drawer" ? /* @__PURE__ */ jsx(DrawerFooter, { className: cn("-mx-6 border-t border-border px-6", className), ...props }) : /* @__PURE__ */ jsx(DialogFooter, { className, ...props });
|
|
48
|
+
ResponsiveDialogFooter.displayName = "ResponsiveDialogFooter";
|
|
49
|
+
const ResponsiveDialogTitle = React.forwardRef(
|
|
50
|
+
(props, ref) => useResponsiveDialogMode() === "drawer" ? /* @__PURE__ */ jsx(DrawerTitle, { ref, ...props }) : /* @__PURE__ */ jsx(DialogTitle, { ref, ...props })
|
|
51
|
+
);
|
|
52
|
+
ResponsiveDialogTitle.displayName = "ResponsiveDialogTitle";
|
|
53
|
+
const ResponsiveDialogDescription = React.forwardRef(
|
|
54
|
+
(props, ref) => useResponsiveDialogMode() === "drawer" ? /* @__PURE__ */ jsx(DrawerDescription, { ref, ...props }) : /* @__PURE__ */ jsx(DialogDescription, { ref, ...props })
|
|
55
|
+
);
|
|
56
|
+
ResponsiveDialogDescription.displayName = "ResponsiveDialogDescription";
|
|
57
|
+
const ResponsiveDialogForm = React.forwardRef(
|
|
58
|
+
({ className, ...props }, ref) => {
|
|
59
|
+
const mode = useResponsiveDialogMode();
|
|
60
|
+
return /* @__PURE__ */ jsx(
|
|
61
|
+
"form",
|
|
62
|
+
{
|
|
63
|
+
ref,
|
|
64
|
+
"data-slot": "responsive-dialog-form",
|
|
65
|
+
className: cn("flex min-h-0 flex-1 flex-col", mode === "drawer" && "gap-4", className),
|
|
66
|
+
...props
|
|
67
|
+
}
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
);
|
|
71
|
+
ResponsiveDialogForm.displayName = "ResponsiveDialogForm";
|
|
72
|
+
const ResponsiveDialogClose = DialogClose;
|
|
73
|
+
|
|
74
|
+
export { RESPONSIVE_DIALOG_BREAKPOINT, ResponsiveDialog, ResponsiveDialogBody, ResponsiveDialogClose, ResponsiveDialogContent, ResponsiveDialogDescription, ResponsiveDialogFooter, ResponsiveDialogForm, ResponsiveDialogHeader, ResponsiveDialogTitle, useResponsiveDialogMode };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type * as React from 'react';
|
|
2
|
+
import type { DialogProps } from '../Dialog/Dialog.types';
|
|
3
|
+
import type { MotionProp } from '../../types/motion';
|
|
4
|
+
export type ResponsiveDialogMode = 'dialog' | 'drawer';
|
|
5
|
+
export interface ResponsiveDialogProps extends DialogProps {
|
|
6
|
+
/**
|
|
7
|
+
* Media query from which the centred dialog is used; below it the content
|
|
8
|
+
* opens as a bottom sheet. Default `(min-width: 640px)` (Tailwind `sm`).
|
|
9
|
+
*/
|
|
10
|
+
breakpoint?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface ResponsiveDialogContentProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
13
|
+
/** Dialog width on larger screens: sm (28rem), md (32rem, default), lg (42rem). */
|
|
14
|
+
size?: 'sm' | 'md' | 'lg';
|
|
15
|
+
/** Extra classes in dialog mode only (e.g. `max-w-2xl`). */
|
|
16
|
+
dialogClassName?: string;
|
|
17
|
+
/** Extra classes in bottom-sheet mode only. */
|
|
18
|
+
drawerClassName?: string;
|
|
19
|
+
motion?: MotionProp;
|
|
20
|
+
onOpenAutoFocus?: (event: Event) => void;
|
|
21
|
+
onCloseAutoFocus?: (event: Event) => void;
|
|
22
|
+
onEscapeKeyDown?: (event: KeyboardEvent) => void;
|
|
23
|
+
onInteractOutside?: (event: Event) => void;
|
|
24
|
+
}
|
|
25
|
+
export type ResponsiveDialogSectionProps = React.HTMLAttributes<HTMLDivElement>;
|
|
26
|
+
export type ResponsiveDialogFormProps = React.FormHTMLAttributes<HTMLFormElement>;
|
|
27
|
+
//# sourceMappingURL=ResponsiveDialog.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResponsiveDialog.types.d.ts","sourceRoot":"","sources":["../../../src/components/ResponsiveDialog/ResponsiveDialog.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEvD,MAAM,WAAW,qBAAsB,SAAQ,WAAW;IACxD;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,4BAA6B,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACxF,mFAAmF;IACnF,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,4DAA4D;IAC5D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+CAA+C;IAC/C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACzC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC1C,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACjD,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAC5C;AAED,MAAM,MAAM,4BAA4B,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;AAEhF,MAAM,MAAM,yBAAyB,GAAG,KAAK,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ResponsiveDialog/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { SectionNavProps } from './SectionNav.types';
|
|
3
|
+
/** Exact match, or nested under the item (`/orders/1` → `/orders`). */
|
|
4
|
+
export declare function isSectionNavItemActive(href: string, activeHref?: string): boolean;
|
|
5
|
+
/**
|
|
6
|
+
* In-page section navigation (account, settings, help centre…): a vertical
|
|
7
|
+
* list on desktop and a horizontally scrolling row on small screens.
|
|
8
|
+
* Unlike `SideBarNavigation` it's not an app shell: no branding, collapse or
|
|
9
|
+
* full-height frame.
|
|
10
|
+
*/
|
|
11
|
+
export declare const SectionNav: React.ForwardRefExoticComponent<SectionNavProps & React.RefAttributes<HTMLElement>>;
|
|
12
|
+
//# sourceMappingURL=SectionNav.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SectionNav.d.ts","sourceRoot":"","sources":["../../../src/components/SectionNav/SectionNav.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,KAAK,EAAuB,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAU/E,uEAAuE;AACvE,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAKjF;AAED;;;;;GAKG;AACH,eAAO,MAAM,UAAU,qFAgEtB,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { cn } from '@timmbr/utils';
|
|
5
|
+
import { sectionNavItemVariants, sectionNavListVariants, sectionNavFooterVariants } from './SectionNav.styles.js';
|
|
6
|
+
|
|
7
|
+
const DefaultLink = ({ href, className, children, ...rest }) => /* @__PURE__ */ jsx("a", { href, className, ...rest, children });
|
|
8
|
+
const trimSlash = (path) => path.length > 1 ? path.replace(/\/+$/, "") : path;
|
|
9
|
+
function isSectionNavItemActive(href, activeHref) {
|
|
10
|
+
if (!activeHref) return false;
|
|
11
|
+
const item = trimSlash(href);
|
|
12
|
+
const current = trimSlash(activeHref.split(/[?#]/)[0] ?? "");
|
|
13
|
+
return current === item || current.startsWith(`${item}/`);
|
|
14
|
+
}
|
|
15
|
+
const SectionNav = React.forwardRef(
|
|
16
|
+
({
|
|
17
|
+
items,
|
|
18
|
+
activeHref,
|
|
19
|
+
linkComponent: Link = DefaultLink,
|
|
20
|
+
footer,
|
|
21
|
+
mobileLayout = "scroll",
|
|
22
|
+
className,
|
|
23
|
+
"aria-label": ariaLabel = "Section navigation",
|
|
24
|
+
...props
|
|
25
|
+
}, ref) => {
|
|
26
|
+
const activeId = React.useMemo(() => {
|
|
27
|
+
const matches = items.filter((item) => isSectionNavItemActive(item.href, activeHref));
|
|
28
|
+
return matches.sort((a, b) => b.href.length - a.href.length)[0]?.id;
|
|
29
|
+
}, [items, activeHref]);
|
|
30
|
+
return /* @__PURE__ */ jsxs(
|
|
31
|
+
"nav",
|
|
32
|
+
{
|
|
33
|
+
ref,
|
|
34
|
+
"aria-label": ariaLabel,
|
|
35
|
+
"data-slot": "section-nav",
|
|
36
|
+
className: cn(
|
|
37
|
+
"flex gap-2 lg:flex-col lg:items-stretch lg:gap-0",
|
|
38
|
+
mobileLayout === "wrap" ? "flex-col items-stretch" : "items-center",
|
|
39
|
+
className
|
|
40
|
+
),
|
|
41
|
+
...props,
|
|
42
|
+
children: [
|
|
43
|
+
/* @__PURE__ */ jsx("ul", { className: cn(sectionNavListVariants({ mobileLayout }), "min-w-0 flex-1"), role: "list", children: items.map((item) => {
|
|
44
|
+
const active = item.id === activeId;
|
|
45
|
+
return /* @__PURE__ */ jsx("li", { className: "shrink-0", children: /* @__PURE__ */ jsxs(
|
|
46
|
+
Link,
|
|
47
|
+
{
|
|
48
|
+
href: item.href,
|
|
49
|
+
"aria-current": active ? "page" : void 0,
|
|
50
|
+
className: sectionNavItemVariants({ active }),
|
|
51
|
+
children: [
|
|
52
|
+
item.icon && /* @__PURE__ */ jsx("span", { className: "flex size-5 shrink-0 items-center justify-center", "aria-hidden": "true", children: item.icon }),
|
|
53
|
+
/* @__PURE__ */ jsx("span", { className: "flex-1", children: item.label }),
|
|
54
|
+
item.badge !== void 0 && item.badge !== null && /* @__PURE__ */ jsx("span", { className: "text-caption-lg text-muted-foreground", children: item.badge })
|
|
55
|
+
]
|
|
56
|
+
}
|
|
57
|
+
) }, item.id);
|
|
58
|
+
}) }),
|
|
59
|
+
footer && /* @__PURE__ */ jsx("div", { className: sectionNavFooterVariants(), "data-slot": "section-nav-footer", children: footer })
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
);
|
|
65
|
+
SectionNav.displayName = "SectionNav";
|
|
66
|
+
|
|
67
|
+
export { SectionNav, isSectionNavItemActive };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
2
|
+
/** Desktop (lg): a vertical list. Small screens: a scrolling row or wrapped lines. */
|
|
3
|
+
export declare const sectionNavListVariants: (props?: ({
|
|
4
|
+
mobileLayout?: "scroll" | "wrap" | null | undefined;
|
|
5
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
6
|
+
export declare const sectionNavItemVariants: (props?: ({
|
|
7
|
+
active?: boolean | null | undefined;
|
|
8
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
9
|
+
export declare const sectionNavFooterVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
|
|
10
|
+
export type SectionNavItemVariants = VariantProps<typeof sectionNavItemVariants>;
|
|
11
|
+
//# sourceMappingURL=SectionNav.styles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SectionNav.styles.d.ts","sourceRoot":"","sources":["../../../src/components/SectionNav/SectionNav.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAElE,sFAAsF;AACtF,eAAO,MAAM,sBAAsB;;8EAQjC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;8EAWlC,CAAC;AAEF,eAAO,MAAM,wBAAwB,oFAEpC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,YAAY,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { cva } from 'class-variance-authority';
|
|
2
|
+
|
|
3
|
+
const sectionNavListVariants = cva("flex gap-1 lg:flex-col lg:flex-nowrap lg:overflow-visible", {
|
|
4
|
+
variants: {
|
|
5
|
+
mobileLayout: {
|
|
6
|
+
scroll: "overflow-x-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",
|
|
7
|
+
wrap: "flex-wrap"
|
|
8
|
+
}
|
|
9
|
+
},
|
|
10
|
+
defaultVariants: { mobileLayout: "scroll" }
|
|
11
|
+
});
|
|
12
|
+
const sectionNavItemVariants = cva(
|
|
13
|
+
"flex items-center gap-3 whitespace-nowrap rounded-md px-3 py-2 lg:py-2.5 font-sans text-body-2 font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
14
|
+
{
|
|
15
|
+
variants: {
|
|
16
|
+
active: {
|
|
17
|
+
true: "bg-primary-50 text-primary-700 dark:bg-primary-900 dark:text-primary-100",
|
|
18
|
+
false: "text-grey-700 hover:bg-grey-100 hover:text-foreground dark:text-grey-300 dark:hover:bg-grey-800"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
defaultVariants: { active: false }
|
|
22
|
+
}
|
|
23
|
+
);
|
|
24
|
+
const sectionNavFooterVariants = cva(
|
|
25
|
+
"flex shrink-0 items-center lg:mt-2 lg:border-t lg:border-border lg:pt-2"
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
export { sectionNavFooterVariants, sectionNavItemVariants, sectionNavListVariants };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type * as React from 'react';
|
|
2
|
+
export interface SectionNavItem {
|
|
3
|
+
id: string;
|
|
4
|
+
label: React.ReactNode;
|
|
5
|
+
href: string;
|
|
6
|
+
/** Leading icon (decorative; hidden from screen readers). */
|
|
7
|
+
icon?: React.ReactNode;
|
|
8
|
+
/** Trailing count or tag, e.g. a number of items. */
|
|
9
|
+
badge?: React.ReactNode;
|
|
10
|
+
}
|
|
11
|
+
export interface SectionNavLinkProps {
|
|
12
|
+
href: string;
|
|
13
|
+
className?: string;
|
|
14
|
+
children: React.ReactNode;
|
|
15
|
+
'aria-current'?: 'page';
|
|
16
|
+
}
|
|
17
|
+
export interface SectionNavProps extends Omit<React.HTMLAttributes<HTMLElement>, 'children'> {
|
|
18
|
+
items: SectionNavItem[];
|
|
19
|
+
/**
|
|
20
|
+
* Current path. An item is active when it equals its `href` or is nested
|
|
21
|
+
* under it (`/account/orders/123` activates `/account/orders`).
|
|
22
|
+
*/
|
|
23
|
+
activeHref?: string;
|
|
24
|
+
/** Link to render items with (e.g. `next/link`). Defaults to `<a>`. */
|
|
25
|
+
linkComponent?: React.ComponentType<SectionNavLinkProps>;
|
|
26
|
+
/**
|
|
27
|
+
* Small screens: `scroll` keeps one horizontally scrolling row (good for many
|
|
28
|
+
* short items); `wrap` wraps the items onto several lines so every one stays
|
|
29
|
+
* visible (good for a handful of longer labels).
|
|
30
|
+
*/
|
|
31
|
+
mobileLayout?: 'scroll' | 'wrap';
|
|
32
|
+
/** Extra content after the items, e.g. a "Log out" button. */
|
|
33
|
+
footer?: React.ReactNode;
|
|
34
|
+
/** Accessible name of the navigation landmark. */
|
|
35
|
+
'aria-label'?: string;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=SectionNav.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SectionNav.types.d.ts","sourceRoot":"","sources":["../../../src/components/SectionNav/SectionNav.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAEpC,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,qDAAqD;IACrD,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC;IAC1F,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;IACzD;;;;OAIG;IACH,YAAY,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IACjC,8DAA8D;IAC9D,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/SectionNav/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC"}
|
|
@@ -38,7 +38,7 @@ const Select = React.forwardRef(
|
|
|
38
38
|
className: cn("flex flex-col gap-1.5 w-full font-sans", containerClassName),
|
|
39
39
|
style,
|
|
40
40
|
children: [
|
|
41
|
-
label && /* @__PURE__ */ jsx("label", { className: "text-
|
|
41
|
+
label && /* @__PURE__ */ jsx("label", { className: "text-body-3 font-semibold text-foreground tracking-wide select-none", children: label }),
|
|
42
42
|
/* @__PURE__ */ jsxs(
|
|
43
43
|
SelectPrimitive.Root,
|
|
44
44
|
{
|
|
@@ -101,7 +101,7 @@ const Select = React.forwardRef(
|
|
|
101
101
|
"p",
|
|
102
102
|
{
|
|
103
103
|
className: cn(
|
|
104
|
-
"text-
|
|
104
|
+
"text-body-3 mt-1 flex items-center gap-1.5",
|
|
105
105
|
isError ? "text-destructive font-medium" : "text-muted"
|
|
106
106
|
),
|
|
107
107
|
children: [
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type VariantProps } from 'class-variance-authority';
|
|
2
2
|
export declare const selectTriggerVariants: (props?: ({
|
|
3
3
|
variant?: "filled" | "outline" | null | undefined;
|
|
4
|
-
size?: "
|
|
4
|
+
size?: "sm" | "md" | "lg" | "default" | null | undefined;
|
|
5
5
|
isError?: boolean | null | undefined;
|
|
6
6
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
7
|
export declare const selectContentVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
|
|
@@ -5,14 +5,14 @@ const selectTriggerVariants = cva(
|
|
|
5
5
|
{
|
|
6
6
|
variants: {
|
|
7
7
|
variant: {
|
|
8
|
-
outline: "border-grey-300 dark:border-grey-700 bg-
|
|
9
|
-
filled: "border-transparent bg-grey-100 dark:bg-grey-800 focus:bg-
|
|
8
|
+
outline: "border-grey-300 dark:border-grey-700 bg-grey-50 dark:bg-grey-900 focus:border-primary focus:ring-primary/20",
|
|
9
|
+
filled: "border-transparent bg-grey-100 dark:bg-grey-800 focus:bg-grey-50 dark:focus:bg-grey-900 focus:border-primary focus:ring-primary/20"
|
|
10
10
|
},
|
|
11
11
|
size: {
|
|
12
|
-
sm: "h-9 px-3 text-
|
|
13
|
-
default: "h-11 px-3.5 text-
|
|
14
|
-
md: "h-11 px-3.5 text-
|
|
15
|
-
lg: "h-[52px] px-4 text-
|
|
12
|
+
sm: "h-9 px-3 text-body-3",
|
|
13
|
+
default: "h-11 px-3.5 text-body-2",
|
|
14
|
+
md: "h-11 px-3.5 text-body-2",
|
|
15
|
+
lg: "h-[52px] px-4 text-body-1"
|
|
16
16
|
},
|
|
17
17
|
isError: {
|
|
18
18
|
true: "border-destructive focus:border-destructive focus:ring-destructive/20 text-destructive",
|
|
@@ -27,10 +27,10 @@ const selectTriggerVariants = cva(
|
|
|
27
27
|
}
|
|
28
28
|
);
|
|
29
29
|
const selectContentVariants = cva(
|
|
30
|
-
"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border border-grey-200 dark:border-grey-700 bg-
|
|
30
|
+
"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border border-grey-200 dark:border-grey-700 bg-grey-50 dark:bg-grey-900 text-foreground shadow-md transition-all font-sans p-1"
|
|
31
31
|
);
|
|
32
32
|
const selectItemVariants = cva(
|
|
33
|
-
"relative flex w-full cursor-pointer select-none items-center rounded-sm py-2 pl-8 pr-2 text-
|
|
33
|
+
"relative flex w-full cursor-pointer select-none items-center rounded-sm py-2 pl-8 pr-2 text-body-2 outline-none transition-colors hover:bg-grey-100 dark:hover:bg-grey-800 focus:bg-grey-100 dark:focus:bg-grey-800 focus:text-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50"
|
|
34
34
|
);
|
|
35
35
|
|
|
36
36
|
export { selectContentVariants, selectItemVariants, selectTriggerVariants };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { cva } from 'class-variance-authority';
|
|
2
2
|
|
|
3
3
|
const sidebarContainerVariants = cva(
|
|
4
|
-
"relative flex flex-col h-screen max-h-screen bg-
|
|
4
|
+
"relative flex flex-col h-screen max-h-screen bg-grey-50 border-r border-grey-200 select-none",
|
|
5
5
|
{
|
|
6
6
|
variants: {
|
|
7
7
|
collapsed: {
|
|
@@ -25,14 +25,14 @@ const sidebarContainerVariants = cva(
|
|
|
25
25
|
}
|
|
26
26
|
);
|
|
27
27
|
const sidebarToggleVariants = cva(
|
|
28
|
-
"absolute -right-3.5 top-6 z-30 flex size-7 items-center justify-center rounded-full bg-
|
|
28
|
+
"absolute -right-3.5 top-6 z-30 flex size-7 items-center justify-center rounded-full bg-grey-50 border border-grey-200 text-grey-600 shadow-xs hover:bg-grey-50 hover:text-grey-900 hover:shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary cursor-pointer transition-all duration-150"
|
|
29
29
|
);
|
|
30
30
|
const navItemVariants = cva(
|
|
31
|
-
"group relative flex items-center gap-3 rounded-lg text-
|
|
31
|
+
"group relative flex items-center gap-3 rounded-lg text-body-2 transition-all duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary cursor-pointer select-none",
|
|
32
32
|
{
|
|
33
33
|
variants: {
|
|
34
34
|
active: {
|
|
35
|
-
true: "bg-primary text-
|
|
35
|
+
true: "bg-primary text-grey-50 shadow-xs font-medium",
|
|
36
36
|
false: "text-grey-700 hover:bg-grey-100 hover:text-grey-900"
|
|
37
37
|
},
|
|
38
38
|
collapsed: {
|
|
@@ -47,17 +47,17 @@ const navItemVariants = cva(
|
|
|
47
47
|
}
|
|
48
48
|
);
|
|
49
49
|
const navBadgeVariants = cva(
|
|
50
|
-
"inline-flex items-center justify-center rounded-full text-
|
|
50
|
+
"inline-flex items-center justify-center rounded-full text-body-3 font-semibold shrink-0 transition-colors",
|
|
51
51
|
{
|
|
52
52
|
variants: {
|
|
53
53
|
variant: {
|
|
54
|
-
destructive: "bg-
|
|
54
|
+
destructive: "bg-destructive text-grey-50 px-2 py-0.5",
|
|
55
55
|
primary: "bg-primary-100 text-primary-800 px-2 py-0.5",
|
|
56
56
|
secondary: "bg-grey-100 text-grey-700 px-2 py-0.5",
|
|
57
57
|
outline: "border border-grey-200 text-grey-700 px-1.5 py-0.5"
|
|
58
58
|
},
|
|
59
59
|
collapsed: {
|
|
60
|
-
true: "absolute -top-1 -right-1 size-4 p-0 text-
|
|
60
|
+
true: "absolute -top-1 -right-1 size-4 p-0 text-caption leading-none",
|
|
61
61
|
false: "ml-auto"
|
|
62
62
|
}
|
|
63
63
|
},
|
|
@@ -68,7 +68,7 @@ const navBadgeVariants = cva(
|
|
|
68
68
|
}
|
|
69
69
|
);
|
|
70
70
|
const subItemVariants = cva(
|
|
71
|
-
"flex items-center gap-2.5 w-full rounded-md px-3 py-2 text-
|
|
71
|
+
"flex items-center gap-2.5 w-full rounded-md px-3 py-2 text-body-3 transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary cursor-pointer",
|
|
72
72
|
{
|
|
73
73
|
variants: {
|
|
74
74
|
active: {
|
|
@@ -14,7 +14,7 @@ const SidebarBranding = ({
|
|
|
14
14
|
"div",
|
|
15
15
|
{
|
|
16
16
|
"data-testid": "sidebar-logo-placeholder",
|
|
17
|
-
className: "size-8 rounded-lg border border-grey-300 bg-grey-100 flex items-center justify-center shrink-0 text-grey-400 text-
|
|
17
|
+
className: "size-8 rounded-lg border border-grey-300 bg-grey-100 flex items-center justify-center shrink-0 text-grey-400 text-body-3 font-semibold",
|
|
18
18
|
children: /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Logo" })
|
|
19
19
|
}
|
|
20
20
|
);
|
|
@@ -37,8 +37,8 @@ const SidebarBranding = ({
|
|
|
37
37
|
variants: shouldAnimate ? sidebarContentFadeVariants : void 0,
|
|
38
38
|
className: "flex flex-col min-w-0 overflow-hidden whitespace-nowrap",
|
|
39
39
|
children: [
|
|
40
|
-
/* @__PURE__ */ jsx("span", { className: "font-
|
|
41
|
-
branding?.subtitle && /* @__PURE__ */ jsx("span", { className: "
|
|
40
|
+
/* @__PURE__ */ jsx("span", { className: "font-bold text-body-1 text-grey-900 truncate tracking-tight", children: branding?.title || "Timmbr Console" }),
|
|
41
|
+
branding?.subtitle && /* @__PURE__ */ jsx("span", { className: "text-body-3 text-grey-500 truncate", children: branding.subtitle })
|
|
42
42
|
]
|
|
43
43
|
},
|
|
44
44
|
"sidebar-branding-text"
|
|
@@ -15,7 +15,7 @@ const SidebarFooter = ({
|
|
|
15
15
|
{
|
|
16
16
|
"data-testid": "sidebar-footer",
|
|
17
17
|
className: cn(
|
|
18
|
-
"mt-auto border-t border-grey-100 bg-
|
|
18
|
+
"mt-auto border-t border-grey-100 bg-grey-50 shrink-0 overflow-hidden",
|
|
19
19
|
collapsed ? "p-2 flex flex-col items-center gap-1" : "p-3",
|
|
20
20
|
className
|
|
21
21
|
),
|
|
@@ -69,18 +69,18 @@ const SidebarPopoverMenu = ({
|
|
|
69
69
|
onMouseEnter: handleMouseEnter,
|
|
70
70
|
onMouseLeave: handleMouseLeave,
|
|
71
71
|
className: cn(
|
|
72
|
-
"z-50 min-w-48 rounded-lg bg-
|
|
72
|
+
"z-50 min-w-48 rounded-lg bg-grey-50 p-2 text-grey-900 shadow-md border border-grey-200 outline-none animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
|
|
73
73
|
!shouldAnimate && "animate-none transition-none"
|
|
74
74
|
),
|
|
75
75
|
children: [
|
|
76
76
|
/* @__PURE__ */ jsxs("div", { className: "px-3 py-1.5 border-b border-grey-100 mb-1 flex items-center justify-between", children: [
|
|
77
|
-
/* @__PURE__ */ jsx("span", { className: "font-semibold text-
|
|
77
|
+
/* @__PURE__ */ jsx("span", { className: "font-semibold text-body-3 text-grey-900 tracking-tight", children: item.label }),
|
|
78
78
|
item.badge !== void 0 && /* @__PURE__ */ jsx(
|
|
79
79
|
"span",
|
|
80
80
|
{
|
|
81
81
|
className: cn(
|
|
82
|
-
"inline-flex items-center justify-center rounded-full px-1.5 py-0.2 text-
|
|
83
|
-
item.badgeVariant === "destructive" ? "bg-
|
|
82
|
+
"inline-flex items-center justify-center rounded-full px-1.5 py-0.2 text-caption font-semibold",
|
|
83
|
+
item.badgeVariant === "destructive" ? "bg-destructive text-grey-50" : "bg-grey-100 text-grey-800"
|
|
84
84
|
),
|
|
85
85
|
children: item.badge
|
|
86
86
|
}
|
|
@@ -15,7 +15,7 @@ const SidebarProfile = ({
|
|
|
15
15
|
const { shouldAnimate } = useSidebarContext();
|
|
16
16
|
if (!profile) return null;
|
|
17
17
|
const fallbackInitials = profile.fallback || profile.name.split(" ").map((part) => part[0]).join("").slice(0, 2).toUpperCase();
|
|
18
|
-
const avatarElement = profile.avatar ? /* @__PURE__ */ jsx("div", { className: "size-8 rounded-full overflow-hidden shrink-0 flex items-center justify-center", children: profile.avatar }) : /* @__PURE__ */ jsx("div", { className: "size-8 rounded-full bg-grey-200 border border-grey-300 flex items-center justify-center shrink-0 font-medium text-
|
|
18
|
+
const avatarElement = profile.avatar ? /* @__PURE__ */ jsx("div", { className: "size-8 rounded-full overflow-hidden shrink-0 flex items-center justify-center", children: profile.avatar }) : /* @__PURE__ */ jsx("div", { className: "size-8 rounded-full bg-grey-200 border border-grey-300 flex items-center justify-center shrink-0 font-medium text-body-3 text-grey-700", children: fallbackInitials });
|
|
19
19
|
const hasItems = Boolean(profile.items && profile.items.length > 0);
|
|
20
20
|
const menuContent = hasItems && /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsxs(
|
|
21
21
|
DropdownMenuPrimitive.Content,
|
|
@@ -24,13 +24,13 @@ const SidebarProfile = ({
|
|
|
24
24
|
align: collapsed ? "end" : "center",
|
|
25
25
|
sideOffset: collapsed ? 12 : 8,
|
|
26
26
|
className: cn(
|
|
27
|
-
"z-50 min-w-56 rounded-lg bg-
|
|
27
|
+
"z-50 min-w-56 rounded-lg bg-grey-50 p-1.5 text-grey-900 shadow-md border border-grey-200 outline-none animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
|
|
28
28
|
!shouldAnimate && "animate-none transition-none"
|
|
29
29
|
),
|
|
30
30
|
children: [
|
|
31
31
|
/* @__PURE__ */ jsxs("div", { className: "px-2.5 py-2 border-b border-grey-100 mb-1", children: [
|
|
32
|
-
/* @__PURE__ */ jsx("p", { className: "font-semibold text-
|
|
33
|
-
profile.email && /* @__PURE__ */ jsx("p", { className: "text-
|
|
32
|
+
/* @__PURE__ */ jsx("p", { className: "font-semibold text-body-3 text-grey-900 truncate", children: profile.name }),
|
|
33
|
+
profile.email && /* @__PURE__ */ jsx("p", { className: "text-caption-lg text-grey-500 truncate mt-0.5", children: profile.email })
|
|
34
34
|
] }),
|
|
35
35
|
/* @__PURE__ */ jsx("div", { className: "space-y-0.5", children: profile.items?.map((item) => {
|
|
36
36
|
const itemContent = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
@@ -38,8 +38,8 @@ const SidebarProfile = ({
|
|
|
38
38
|
/* @__PURE__ */ jsx("span", { className: "truncate", children: item.label })
|
|
39
39
|
] });
|
|
40
40
|
const itemClass = cn(
|
|
41
|
-
"flex items-center gap-2.5 w-full rounded-md px-2.5 py-1.5 text-
|
|
42
|
-
item.destructive ? "text-
|
|
41
|
+
"flex items-center gap-2.5 w-full rounded-md px-2.5 py-1.5 text-body-3 transition-colors duration-150 select-none cursor-pointer outline-none focus-visible:bg-grey-100",
|
|
42
|
+
item.destructive ? "text-destructive hover:bg-destructive/10 hover:text-destructive/80" : "text-grey-700 hover:bg-grey-100 hover:text-grey-900",
|
|
43
43
|
item.disabled && "opacity-50 pointer-events-none"
|
|
44
44
|
);
|
|
45
45
|
if (item.href) {
|
|
@@ -98,8 +98,8 @@ const SidebarProfile = ({
|
|
|
98
98
|
className: "flex items-center min-w-0 flex-1 overflow-hidden",
|
|
99
99
|
children: [
|
|
100
100
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-col min-w-0 flex-1 overflow-hidden", children: [
|
|
101
|
-
/* @__PURE__ */ jsx("span", { className: "font-semibold text-
|
|
102
|
-
profile.email && /* @__PURE__ */ jsx("span", { className: "text-
|
|
101
|
+
/* @__PURE__ */ jsx("span", { className: "font-semibold text-body-3 text-grey-900 truncate", children: profile.name }),
|
|
102
|
+
profile.email && /* @__PURE__ */ jsx("span", { className: "text-caption-lg text-grey-500 truncate block", children: profile.email })
|
|
103
103
|
] }),
|
|
104
104
|
hasItems && /* @__PURE__ */ jsx(ChevronsUpDown, { className: "size-4 text-grey-400 shrink-0 ml-auto" })
|
|
105
105
|
]
|
|
@@ -109,7 +109,7 @@ const SidebarProfile = ({
|
|
|
109
109
|
]
|
|
110
110
|
}
|
|
111
111
|
);
|
|
112
|
-
return /* @__PURE__ */ jsx("div", { className: "p-3 border-t border-grey-200 bg-
|
|
112
|
+
return /* @__PURE__ */ jsx("div", { className: "p-3 border-t border-grey-200 bg-grey-50 shrink-0 overflow-hidden", children: hasItems ? /* @__PURE__ */ jsxs(DropdownMenuPrimitive.Root, { children: [
|
|
113
113
|
/* @__PURE__ */ jsx(DropdownMenuPrimitive.Trigger, { asChild: true, children: expandedTrigger }),
|
|
114
114
|
menuContent
|
|
115
115
|
] }) : expandedTrigger });
|
|
@@ -17,8 +17,8 @@ const SidebarSubItem = ({
|
|
|
17
17
|
"span",
|
|
18
18
|
{
|
|
19
19
|
className: cn(
|
|
20
|
-
"ml-auto inline-flex items-center justify-center rounded-full px-1.5 py-0.2 text-
|
|
21
|
-
item.badgeVariant === "destructive" ? "bg-
|
|
20
|
+
"ml-auto inline-flex items-center justify-center rounded-full px-1.5 py-0.2 text-caption font-semibold",
|
|
21
|
+
item.badgeVariant === "destructive" ? "bg-destructive text-grey-50" : "bg-grey-200 text-grey-800"
|
|
22
22
|
),
|
|
23
23
|
children: item.badge
|
|
24
24
|
}
|
|
@@ -12,7 +12,7 @@ const skeletonVariants = cva(
|
|
|
12
12
|
},
|
|
13
13
|
animation: {
|
|
14
14
|
pulse: "animate-pulse",
|
|
15
|
-
wave: "relative overflow-hidden before:absolute before:inset-0 before:content-[''] before:animate-shimmer before:bg-gradient-to-r before:from-transparent before:via-
|
|
15
|
+
wave: "relative overflow-hidden before:absolute before:inset-0 before:content-[''] before:animate-shimmer before:bg-gradient-to-r before:from-transparent before:via-grey-50/60 dark:before:via-grey-50/15 before:to-transparent",
|
|
16
16
|
none: ""
|
|
17
17
|
}
|
|
18
18
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Spinner.d.ts","sourceRoot":"","sources":["../../../src/components/Spinner/Spinner.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"Spinner.d.ts","sourceRoot":"","sources":["../../../src/components/Spinner/Spinner.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,eAAO,MAAM,OAAO,sFAqCnB,CAAC"}
|