@react-fabric/core 1.0.0-beta.5 → 1.0.0-beta.52
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/{src/components/actionLabel/ActionLabel.module.css → css/components/_actionLabel.css} +4 -4
- package/{src/overlays/alert/Alert.module.css → css/components/_alert.css} +3 -3
- package/{src/components/animations/Animations.module.css → css/components/_animations.css} +9 -9
- package/{src/components/avatar/Avatar.module.css → css/components/_avatar.css} +11 -11
- package/{src/components/badge/Badge.module.css → css/components/_badge.css} +19 -17
- package/{src/components/breadcrumbs/Breadcrumbs.module.css → css/components/_breadcrumbs.css} +49 -44
- package/{src/components/button/Button.module.css → css/components/_button.css} +69 -79
- package/{src/components/card/Card.module.css → css/components/_card.css} +50 -28
- package/{src/components/chip/Chip.module.css → css/components/_chip.css} +14 -10
- package/{src/components/collapsable/Collapsable.module.css → css/components/_collapsable.css} +3 -3
- package/css/components/_divider.css +38 -0
- package/{src/components/dropdown/Dropdown.module.css → css/components/_dropdown.css} +2 -2
- package/{src/overlays/flyout/Flyout.module.css → css/components/_flyout.css} +6 -6
- package/{src/components/icon/Icon.module.css → css/components/_icon.css} +8 -5
- package/{src/components/media/Media.module.css → css/components/_media.css} +17 -17
- package/{src/components/menu/Menu.module.css → css/components/_menu.css} +19 -20
- package/{src/overlays/message/Message.module.css → css/components/_message.css} +2 -2
- package/{src/components/meter/Meter.module.css → css/components/_meter.css} +10 -10
- package/{src/overlays/modal/Modal.module.css → css/components/_modal.css} +8 -8
- package/{src/components/panel/Panel.module.css → css/components/_panel.css} +17 -17
- package/{src/components/progress/Progress.module.css → css/components/_progress.css} +7 -10
- package/{src/components/tabpanel/TabPanel.module.css → css/components/_tabPanel.css} +73 -84
- package/{src/overlays/toast/Toast.module.css → css/components/_toast.css} +2 -2
- package/css/components/_tooltip.css +29 -0
- package/{src/core/content/Content.module.css → css/components/index.css} +25 -18
- package/{src/core/aside/Aside.module.css → css/core/_aside.css} +56 -42
- package/{src/core/section/Section.module.css → css/core/_content.css} +5 -3
- package/{src/core/boundary/ErrorBoundary.module.css → css/core/_errorboundary.css} +9 -9
- package/{src/core/headfoot/HeadFoot.module.css → css/core/_headfoot.css} +4 -10
- package/{src/core/page/Page.module.css → css/core/_page.css} +10 -14
- package/{src/core/responsive/Responsive.module.css → css/core/_responsive.css} +10 -10
- package/css/core/_section.css +28 -0
- package/{src/core/theme/Theme.module.css → css/core/_theme.css} +3 -3
- package/{src/typography/Typography.module.css → css/core/_typography.css} +14 -12
- package/{src/core/viewport/Viewport.module.css → css/core/_viewport.css} +7 -3
- package/css/core/index.css +33 -0
- package/css/reset/_gradients.css +8 -8
- package/css/reset/_reset.css +42 -224
- package/css/reset/_text.css +14 -29
- package/css/reset/_theme.css +331 -52
- package/css/reset/index.css +4 -4
- package/css/styles.css +7 -6
- package/css/theme/_colors.css +320 -0
- package/css/theme/_utilities.css +530 -0
- package/css/theme/index.css +45 -0
- package/dist/cjs/components/actionLabel/ActionLabel.js +26 -8
- package/dist/cjs/components/animations/Animations.js +118 -24
- package/dist/cjs/components/avatar/Avatar.js +43 -16
- package/dist/cjs/components/avatar/AvatarGroup.js +22 -4
- package/dist/cjs/components/badge/Badge.js +35 -6
- package/dist/cjs/components/breadcrumbs/Breadcrumbs.js +39 -8
- package/dist/cjs/components/button/Button.js +42 -15
- package/dist/cjs/components/button/ButtonGroup.js +30 -3
- package/dist/cjs/components/button/ConfirmButton.js +32 -4
- package/dist/cjs/components/button/ToggleButtonGroup.js +41 -15
- package/dist/cjs/components/callout/Callout.js +44 -4
- package/dist/cjs/components/card/Card.js +48 -10
- package/dist/cjs/components/card/CardCover.js +36 -5
- package/dist/cjs/components/card/FlipContent.js +56 -0
- package/dist/cjs/components/chip/Chip.js +32 -7
- package/dist/cjs/components/collapsable/Collapsable.js +32 -6
- package/dist/cjs/components/divider/Divider.js +30 -7
- package/dist/cjs/components/dropdown/Dropdown.js +48 -9
- package/dist/cjs/components/dropdown/DropdownTool.js +4 -3
- package/dist/cjs/components/empty/EmptyContent.js +35 -5
- package/dist/cjs/components/icon/Icon.js +44 -16
- package/dist/cjs/components/media/Media.js +172 -75
- package/dist/cjs/components/menu/ContextMenu.js +49 -10
- package/dist/cjs/components/menu/Menu.js +74 -21
- package/dist/cjs/components/menu/MenuItem.js +51 -16
- package/dist/cjs/components/meter/Meter.js +26 -3
- package/dist/cjs/components/navigator/Navigator.js +48 -13
- package/dist/cjs/components/panel/Panel.js +47 -9
- package/dist/cjs/components/panel/PanelGroup.js +25 -2
- package/dist/cjs/components/panel/PanelStack.js +31 -0
- package/dist/cjs/components/progress/ProgressBar.js +31 -9
- package/dist/cjs/components/progress/ProgressCircle.js +29 -7
- package/dist/cjs/components/tabpanel/Tab.js +89 -38
- package/dist/cjs/components/tabpanel/TabPanel.js +53 -16
- package/dist/cjs/context/Global.js +28 -1
- package/dist/cjs/context/NotificationCenter.js +3 -3
- package/dist/cjs/core/aside/Aside.js +49 -11
- package/dist/cjs/core/boundary/ErrorBoundary.js +23 -8
- package/dist/cjs/core/boundary/ErrorIcon.js +1 -2
- package/dist/cjs/core/content/Content.js +15 -8
- package/dist/cjs/core/headfoot/HeadFoot.js +44 -20
- package/dist/cjs/core/page/Page.js +40 -29
- package/dist/cjs/core/responsive/Responsive.js +59 -6
- package/dist/cjs/core/section/Section.js +1 -2
- package/dist/cjs/core/theme/ThemeProvider.js +32 -10
- package/dist/cjs/core/viewport/Viewport.js +18 -2
- package/dist/cjs/hooks/useControlledValue.js +12 -0
- package/dist/cjs/hooks/useDebounce.js +14 -1
- package/dist/cjs/hooks/useEffectDebugger.js +54 -2
- package/dist/cjs/hooks/useIsDark.js +8 -0
- package/dist/cjs/hooks/useIsRtl.js +12 -0
- package/dist/cjs/hooks/useNavigator.js +6 -4
- package/dist/cjs/hooks/useOverlayService.js +24 -0
- package/dist/cjs/hooks/usePropToggle.js +16 -5
- package/dist/cjs/hooks/useResize.js +18 -0
- package/dist/cjs/hooks/useResizeObserver.js +20 -1
- package/dist/cjs/hooks/useStorage.js +39 -0
- package/dist/cjs/hotkeys/HotKeyLabel.js +1 -1
- package/dist/cjs/hotkeys/HotKeyWrapper.js +3 -1
- package/dist/cjs/index.js +8 -2
- package/dist/cjs/overlays/alert/Alert.js +20 -14
- package/dist/cjs/overlays/flyout/Flyout.js +49 -60
- package/dist/cjs/overlays/message/Message.js +6 -3
- package/dist/cjs/overlays/modal/Modal.js +16 -12
- package/dist/cjs/overlays/toast/Toast.js +17 -9
- package/dist/cjs/overlays/tooltip/Tooltip.js +24 -11
- package/dist/cjs/types/icons.js +10 -1
- package/dist/cjs/typography/Abbr.js +32 -6
- package/dist/cjs/typography/{Link.js → Anchor.js} +23 -5
- package/dist/cjs/typography/Mark.js +22 -4
- package/dist/cjs/typography/Text.js +30 -5
- package/dist/cjs/typography/Title.js +19 -4
- package/dist/cjs/utils/cloneElement.js +47 -0
- package/dist/cjs/utils/getColor.js +1 -18
- package/dist/esm/components/actionLabel/ActionLabel.js +26 -8
- package/dist/esm/components/animations/Animations.js +119 -25
- package/dist/esm/components/avatar/Avatar.js +44 -17
- package/dist/esm/components/avatar/AvatarGroup.js +22 -4
- package/dist/esm/components/badge/Badge.js +36 -7
- package/dist/esm/components/breadcrumbs/Breadcrumbs.js +39 -8
- package/dist/esm/components/button/Button.js +42 -15
- package/dist/esm/components/button/ButtonGroup.js +31 -4
- package/dist/esm/components/button/ConfirmButton.js +32 -4
- package/dist/esm/components/button/ToggleButtonGroup.js +42 -16
- package/dist/esm/components/callout/Callout.js +44 -4
- package/dist/esm/components/card/Card.js +49 -11
- package/dist/esm/components/card/CardCover.js +36 -5
- package/dist/esm/components/card/FlipContent.js +56 -0
- package/dist/esm/components/chip/Chip.js +33 -8
- package/dist/esm/components/collapsable/Collapsable.js +32 -6
- package/dist/esm/components/divider/Divider.js +31 -8
- package/dist/esm/components/dropdown/Dropdown.js +48 -9
- package/dist/esm/components/dropdown/DropdownTool.js +4 -3
- package/dist/esm/components/empty/EmptyContent.js +35 -5
- package/dist/esm/components/icon/Icon.js +44 -16
- package/dist/esm/components/media/Media.js +173 -76
- package/dist/esm/components/menu/ContextMenu.js +51 -12
- package/dist/esm/components/menu/Menu.js +76 -23
- package/dist/esm/components/menu/MenuItem.js +45 -10
- package/dist/esm/components/meter/Meter.js +26 -3
- package/dist/esm/components/navigator/Navigator.js +48 -13
- package/dist/esm/components/panel/Panel.js +47 -9
- package/dist/esm/components/panel/PanelGroup.js +25 -2
- package/dist/esm/components/panel/PanelStack.js +31 -0
- package/dist/esm/components/progress/ProgressBar.js +31 -9
- package/dist/esm/components/progress/ProgressCircle.js +29 -7
- package/dist/esm/components/tabpanel/Tab.js +90 -39
- package/dist/esm/components/tabpanel/TabPanel.js +53 -16
- package/dist/esm/context/Global.js +28 -1
- package/dist/esm/context/NotificationCenter.js +3 -3
- package/dist/esm/core/aside/Aside.js +49 -11
- package/dist/esm/core/boundary/ErrorBoundary.js +23 -8
- package/dist/esm/core/boundary/ErrorIcon.js +1 -2
- package/dist/esm/core/content/Content.js +15 -8
- package/dist/esm/core/headfoot/HeadFoot.js +44 -20
- package/dist/esm/core/page/Page.js +40 -29
- package/dist/esm/core/responsive/Responsive.js +59 -6
- package/dist/esm/core/section/Section.js +1 -2
- package/dist/esm/core/theme/ThemeProvider.js +32 -10
- package/dist/esm/core/viewport/Viewport.js +18 -2
- package/dist/esm/hooks/useControlledValue.js +12 -0
- package/dist/esm/hooks/useDebounce.js +14 -1
- package/dist/esm/hooks/useEffectDebugger.js +54 -2
- package/dist/esm/hooks/useIsDark.js +8 -0
- package/dist/esm/hooks/useIsRtl.js +12 -0
- package/dist/esm/hooks/useNavigator.js +7 -5
- package/dist/esm/hooks/useOverlayService.js +24 -0
- package/dist/esm/hooks/usePropToggle.js +16 -5
- package/dist/esm/hooks/useResize.js +18 -0
- package/dist/esm/hooks/useResizeObserver.js +20 -1
- package/dist/esm/hooks/useStorage.js +39 -0
- package/dist/esm/hotkeys/HotKeyLabel.js +1 -1
- package/dist/esm/hotkeys/HotKeyWrapper.js +3 -1
- package/dist/esm/index.js +4 -1
- package/dist/esm/overlays/alert/Alert.js +21 -15
- package/dist/esm/overlays/flyout/Flyout.js +52 -63
- package/dist/esm/overlays/message/Message.js +7 -4
- package/dist/esm/overlays/modal/Modal.js +17 -13
- package/dist/esm/overlays/toast/Toast.js +18 -10
- package/dist/esm/overlays/tooltip/Tooltip.js +24 -11
- package/dist/esm/types/icons.js +10 -1
- package/dist/esm/typography/Abbr.js +32 -6
- package/dist/esm/typography/{Link.js → Anchor.js} +24 -6
- package/dist/esm/typography/Mark.js +22 -4
- package/dist/esm/typography/Text.js +31 -6
- package/dist/esm/typography/Title.js +20 -5
- package/dist/esm/utils/cloneElement.js +47 -0
- package/dist/esm/utils/getColor.js +2 -16
- package/dist/types/components/actionLabel/ActionLabel.d.ts +23 -4
- package/dist/types/components/animations/Animations.d.ts +84 -5
- package/dist/types/components/avatar/Avatar.d.ts +29 -5
- package/dist/types/components/avatar/AvatarGroup.d.ts +19 -1
- package/dist/types/components/badge/Badge.d.ts +30 -1
- package/dist/types/components/breadcrumbs/Breadcrumbs.d.ts +31 -2
- package/dist/types/components/button/Button.d.ts +29 -6
- package/dist/types/components/button/ButtonGroup.d.ts +28 -3
- package/dist/types/components/button/ConfirmButton.d.ts +28 -3
- package/dist/types/components/button/ToggleButtonGroup.d.ts +39 -11
- package/dist/types/components/callout/Callout.d.ts +29 -3
- package/dist/types/components/card/Card.d.ts +42 -4
- package/dist/types/components/card/CardCover.d.ts +25 -0
- package/dist/types/components/card/FlipContent.d.ts +28 -0
- package/dist/types/components/chip/Chip.d.ts +24 -4
- package/dist/types/components/collapsable/Collapsable.d.ts +33 -3
- package/dist/types/components/divider/Divider.d.ts +30 -7
- package/dist/types/components/dropdown/Dropdown.d.ts +40 -1
- package/dist/types/components/dropdown/DropdownTool.d.ts +27 -1
- package/dist/types/components/empty/EmptyContent.d.ts +32 -3
- package/dist/types/components/icon/Icon.d.ts +32 -6
- package/dist/types/components/index.d.ts +2 -1
- package/dist/types/components/media/Media.d.ts +56 -2
- package/dist/types/components/menu/ContextMenu.d.ts +21 -2
- package/dist/types/components/menu/Menu.d.ts +29 -0
- package/dist/types/components/menu/MenuItem.d.ts +22 -2
- package/dist/types/components/menu/types.d.ts +3 -2
- package/dist/types/components/meter/Meter.d.ts +24 -0
- package/dist/types/components/navigator/Navigator.d.ts +29 -4
- package/dist/types/components/panel/Panel.d.ts +37 -1
- package/dist/types/components/panel/PanelGroup.d.ts +24 -0
- package/dist/types/components/panel/PanelStack.d.ts +31 -0
- package/dist/types/components/progress/ProgressBar.d.ts +23 -3
- package/dist/types/components/progress/ProgressCircle.d.ts +22 -3
- package/dist/types/components/tabpanel/Tab.d.ts +36 -5
- package/dist/types/components/tabpanel/TabPanel.d.ts +43 -1
- package/dist/types/context/Global.d.ts +24 -1
- package/dist/types/core/aside/Aside.d.ts +38 -1
- package/dist/types/core/boundary/ErrorBoundary.d.ts +18 -2
- package/dist/types/core/content/Content.d.ts +9 -3
- package/dist/types/core/headfoot/HeadFoot.d.ts +41 -9
- package/dist/types/core/page/Page.d.ts +29 -4
- package/dist/types/core/responsive/Responsive.d.ts +58 -3
- package/dist/types/core/section/Section.d.ts +16 -1
- package/dist/types/core/theme/ThemeProvider.d.ts +25 -5
- package/dist/types/core/viewport/Viewport.d.ts +15 -1
- package/dist/types/hooks/useControlledValue.d.ts +13 -2
- package/dist/types/hooks/useDebounce.d.ts +12 -0
- package/dist/types/hooks/useEffectDebugger.d.ts +49 -0
- package/dist/types/hooks/useIsDark.d.ts +8 -0
- package/dist/types/hooks/useIsRtl.d.ts +12 -0
- package/dist/types/hooks/useNavigator.d.ts +18 -1
- package/dist/types/hooks/useOverlayService.d.ts +28 -9
- package/dist/types/hooks/usePropToggle.d.ts +16 -5
- package/dist/types/hooks/useResize.d.ts +19 -1
- package/dist/types/hooks/useResizeObserver.d.ts +20 -1
- package/dist/types/hooks/useStorage.d.ts +38 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/overlays/alert/Alert.d.ts +2 -3
- package/dist/types/overlays/flyout/Flyout.d.ts +3 -2
- package/dist/types/overlays/message/Message.d.ts +2 -3
- package/dist/types/overlays/modal/Modal.d.ts +12 -3
- package/dist/types/overlays/toast/Toast.d.ts +2 -3
- package/dist/types/overlays/tooltip/Tooltip.d.ts +2 -2
- package/dist/types/types/icons.d.ts +10 -1
- package/dist/types/types/index.d.ts +26 -6
- package/dist/types/typography/Abbr.d.ts +34 -4
- package/dist/types/typography/Anchor.d.ts +42 -0
- package/dist/types/typography/Copy.d.ts +15 -0
- package/dist/types/typography/Mark.d.ts +22 -4
- package/dist/types/typography/Text.d.ts +27 -1
- package/dist/types/typography/Title.d.ts +16 -1
- package/dist/types/typography/index.d.ts +1 -1
- package/dist/types/utils/cloneElement.d.ts +2 -0
- package/dist/types/utils/getColor.d.ts +1 -4
- package/dist/types/utils/index.d.ts +1 -0
- package/package.json +11 -13
- package/src/components/actionLabel/ActionLabel.tsx +38 -11
- package/src/components/animations/Animations.tsx +118 -33
- package/src/components/avatar/Avatar.tsx +106 -91
- package/src/components/avatar/AvatarGroup.tsx +23 -5
- package/src/components/badge/Badge.tsx +41 -9
- package/src/components/breadcrumbs/Breadcrumbs.tsx +42 -9
- package/src/components/button/Button.tsx +50 -23
- package/src/components/button/ButtonGroup.tsx +33 -7
- package/src/components/button/ConfirmButton.tsx +41 -7
- package/src/components/button/ToggleButtonGroup.tsx +74 -47
- package/src/components/callout/Callout.tsx +55 -12
- package/src/components/card/Card.tsx +64 -15
- package/src/components/card/CardCover.tsx +36 -6
- package/src/components/card/FlipContent.tsx +90 -0
- package/src/components/chip/Chip.tsx +39 -13
- package/src/components/collapsable/Collapsable.tsx +38 -7
- package/src/components/divider/Divider.tsx +42 -16
- package/src/components/dropdown/Dropdown.tsx +46 -11
- package/src/components/dropdown/DropdownTool.tsx +30 -3
- package/src/components/empty/EmptyContent.tsx +47 -6
- package/src/components/icon/Icon.tsx +85 -68
- package/src/components/index.ts +2 -1
- package/src/components/media/Media.tsx +195 -106
- package/src/components/menu/ContextMenu.tsx +55 -11
- package/src/components/menu/Menu.tsx +85 -30
- package/src/components/menu/MenuItem.tsx +40 -9
- package/src/components/menu/types.ts +3 -2
- package/src/components/meter/Meter.tsx +26 -3
- package/src/components/navigator/Navigator.tsx +58 -7
- package/src/components/panel/Panel.tsx +47 -9
- package/src/components/panel/PanelGroup.tsx +25 -2
- package/src/components/panel/PanelStack.tsx +31 -0
- package/src/components/progress/ProgressBar.tsx +33 -14
- package/src/components/progress/ProgressCircle.tsx +29 -13
- package/src/components/tabpanel/Tab.tsx +112 -64
- package/src/components/tabpanel/TabPanel.tsx +67 -12
- package/src/context/Global.tsx +28 -1
- package/src/context/NotificationCenter.tsx +3 -3
- package/src/core/aside/Aside.tsx +50 -12
- package/src/core/boundary/ErrorBoundary.tsx +25 -8
- package/src/core/boundary/ErrorIcon.tsx +1 -2
- package/src/core/content/Content.tsx +23 -13
- package/src/core/headfoot/HeadFoot.tsx +42 -35
- package/src/core/page/Page.tsx +44 -6
- package/src/core/responsive/Responsive.tsx +66 -8
- package/src/core/section/Section.tsx +17 -3
- package/src/core/theme/ThemeProvider.tsx +35 -14
- package/src/core/viewport/Viewport.tsx +16 -3
- package/src/hooks/useControlledValue.tsx +12 -0
- package/src/hooks/useDebounce.ts +13 -1
- package/src/hooks/useEffectDebugger.ts +50 -2
- package/src/hooks/useIsDark.ts +8 -0
- package/src/hooks/useIsRtl.ts +12 -0
- package/src/hooks/useNavigator.tsx +28 -5
- package/src/hooks/useOverlayService.tsx +36 -6
- package/src/hooks/usePropToggle.ts +16 -5
- package/src/hooks/useResize.ts +19 -1
- package/src/hooks/useResizeObserver.ts +32 -9
- package/src/hooks/useStorage.ts +38 -0
- package/src/hotkeys/HotKeyLabel.tsx +1 -1
- package/src/hotkeys/HotKeyWrapper.tsx +3 -1
- package/src/index.ts +4 -0
- package/src/overlays/alert/Alert.tsx +28 -32
- package/src/overlays/flyout/Flyout.tsx +71 -84
- package/src/overlays/message/Message.tsx +10 -7
- package/src/overlays/modal/Modal.tsx +37 -15
- package/src/overlays/toast/Toast.tsx +18 -27
- package/src/overlays/tooltip/Tooltip.tsx +43 -18
- package/src/types/icons.ts +18 -3
- package/src/types/index.ts +268 -27
- package/src/typography/Abbr.tsx +44 -11
- package/src/typography/{Link.tsx → Anchor.tsx} +26 -14
- package/src/typography/Copy.tsx +15 -0
- package/src/typography/Mark.tsx +24 -10
- package/src/typography/Text.tsx +31 -13
- package/src/typography/Title.tsx +18 -7
- package/src/typography/index.ts +1 -1
- package/src/{overlays/tooltip/Tooltip.module.css → utils/cloneElement.ts} +21 -27
- package/src/utils/getColor.ts +1 -17
- package/src/utils/index.ts +1 -0
- package/css/index.js +0 -250
- package/css/tailwind/colors.ts +0 -158
- package/dist/cjs/components/actionLabel/ActionLabel.module.css +0 -1
- package/dist/cjs/components/animations/Animations.module.css +0 -1
- package/dist/cjs/components/avatar/Avatar.module.css +0 -1
- package/dist/cjs/components/badge/Badge.module.css +0 -1
- package/dist/cjs/components/breadcrumbs/Breadcrumbs.module.css +0 -1
- package/dist/cjs/components/button/Button.module.css +0 -1
- package/dist/cjs/components/card/Card.module.css +0 -1
- package/dist/cjs/components/chip/Chip.module.css +0 -1
- package/dist/cjs/components/collapsable/Collapsable.module.css +0 -1
- package/dist/cjs/components/dropdown/Dropdown.module.css +0 -1
- package/dist/cjs/components/icon/Icon.module.css +0 -1
- package/dist/cjs/components/media/Media.module.css +0 -1
- package/dist/cjs/components/menu/Menu.module.css +0 -1
- package/dist/cjs/components/meter/Meter.module.css +0 -1
- package/dist/cjs/components/panel/Panel.module.css +0 -1
- package/dist/cjs/components/progress/Progress.module.css +0 -1
- package/dist/cjs/components/tabpanel/TabPanel.module.css +0 -1
- package/dist/cjs/core/aside/Aside.module.css +0 -1
- package/dist/cjs/core/boundary/ErrorBoundary.module.css +0 -1
- package/dist/cjs/core/content/Content.module.css +0 -1
- package/dist/cjs/core/headfoot/HeadFoot.module.css +0 -1
- package/dist/cjs/core/page/Page.module.css +0 -1
- package/dist/cjs/core/responsive/Responsive.module.css +0 -1
- package/dist/cjs/core/section/Section.module.css +0 -1
- package/dist/cjs/core/theme/Theme.module.css +0 -1
- package/dist/cjs/core/viewport/Viewport.module.css +0 -1
- package/dist/cjs/overlays/alert/Alert.module.css +0 -1
- package/dist/cjs/overlays/flyout/Flyout.module.css +0 -1
- package/dist/cjs/overlays/message/Message.module.css +0 -1
- package/dist/cjs/overlays/modal/Modal.module.css +0 -1
- package/dist/cjs/overlays/toast/Toast.module.css +0 -1
- package/dist/cjs/overlays/tooltip/Tooltip.module.css +0 -1
- package/dist/cjs/typography/Typography.module.css +0 -1
- package/dist/esm/components/actionLabel/ActionLabel.module.css +0 -1
- package/dist/esm/components/animations/Animations.module.css +0 -1
- package/dist/esm/components/avatar/Avatar.module.css +0 -1
- package/dist/esm/components/badge/Badge.module.css +0 -1
- package/dist/esm/components/breadcrumbs/Breadcrumbs.module.css +0 -1
- package/dist/esm/components/button/Button.module.css +0 -1
- package/dist/esm/components/card/Card.module.css +0 -1
- package/dist/esm/components/chip/Chip.module.css +0 -1
- package/dist/esm/components/collapsable/Collapsable.module.css +0 -1
- package/dist/esm/components/dropdown/Dropdown.module.css +0 -1
- package/dist/esm/components/icon/Icon.module.css +0 -1
- package/dist/esm/components/media/Media.module.css +0 -1
- package/dist/esm/components/menu/Menu.module.css +0 -1
- package/dist/esm/components/meter/Meter.module.css +0 -1
- package/dist/esm/components/panel/Panel.module.css +0 -1
- package/dist/esm/components/progress/Progress.module.css +0 -1
- package/dist/esm/components/tabpanel/TabPanel.module.css +0 -1
- package/dist/esm/core/aside/Aside.module.css +0 -1
- package/dist/esm/core/boundary/ErrorBoundary.module.css +0 -1
- package/dist/esm/core/content/Content.module.css +0 -1
- package/dist/esm/core/headfoot/HeadFoot.module.css +0 -1
- package/dist/esm/core/page/Page.module.css +0 -1
- package/dist/esm/core/responsive/Responsive.module.css +0 -1
- package/dist/esm/core/section/Section.module.css +0 -1
- package/dist/esm/core/theme/Theme.module.css +0 -1
- package/dist/esm/core/viewport/Viewport.module.css +0 -1
- package/dist/esm/overlays/alert/Alert.module.css +0 -1
- package/dist/esm/overlays/flyout/Flyout.module.css +0 -1
- package/dist/esm/overlays/message/Message.module.css +0 -1
- package/dist/esm/overlays/modal/Modal.module.css +0 -1
- package/dist/esm/overlays/toast/Toast.module.css +0 -1
- package/dist/esm/overlays/tooltip/Tooltip.module.css +0 -1
- package/dist/esm/typography/Typography.module.css +0 -1
- package/dist/types/typography/Link.d.ts +0 -25
|
@@ -24,9 +24,9 @@
|
|
|
24
24
|
import { isSvgPath } from "@react-fabric/utilities";
|
|
25
25
|
import BoringAvatar from "boring-avatars";
|
|
26
26
|
import classNames from "classnames";
|
|
27
|
-
import { useState } from "react";
|
|
28
|
-
import { useMemoDebugger } from "../../hooks/useEffectDebugger";
|
|
27
|
+
import { useMemo, useState } from "react";
|
|
29
28
|
import {
|
|
29
|
+
type PaletteType,
|
|
30
30
|
type AriaProps,
|
|
31
31
|
type ColorType,
|
|
32
32
|
type CssProp,
|
|
@@ -34,8 +34,7 @@ import {
|
|
|
34
34
|
type SizeType,
|
|
35
35
|
type TestProps,
|
|
36
36
|
} from "../../types";
|
|
37
|
-
import {
|
|
38
|
-
import classes from "./Avatar.module.css";
|
|
37
|
+
import { getColor } from "../../utils";
|
|
39
38
|
|
|
40
39
|
export interface AvatarProps extends CssProp, AriaProps, TestProps, RefProp {
|
|
41
40
|
/**
|
|
@@ -57,11 +56,11 @@ export interface AvatarProps extends CssProp, AriaProps, TestProps, RefProp {
|
|
|
57
56
|
/**
|
|
58
57
|
* background color (CSS color / tailwind color)
|
|
59
58
|
*/
|
|
60
|
-
bg?: ColorType | string;
|
|
59
|
+
bg?: ColorType | PaletteType | string;
|
|
61
60
|
/**
|
|
62
61
|
* icon color (CSS color / tailwind color)
|
|
63
62
|
*/
|
|
64
|
-
color?: ColorType | string;
|
|
63
|
+
color?: ColorType | PaletteType | string;
|
|
65
64
|
/**
|
|
66
65
|
* icon size
|
|
67
66
|
*/
|
|
@@ -89,7 +88,32 @@ const SizeMap: KeyValue<string> = {
|
|
|
89
88
|
};
|
|
90
89
|
|
|
91
90
|
/**
|
|
92
|
-
*
|
|
91
|
+
* A component that displays an avatar image or a fallback icon with customizable styles and properties.
|
|
92
|
+
* It supports various avatar types, including text-based avatars, and allows for customization of background color, icon color, size, and rounded corners.
|
|
93
|
+
* This component is useful for displaying user avatars in applications, providing a visual representation of users or entities.
|
|
94
|
+
* It can also handle cases where the avatar image fails to load by displaying a fallback icon or text.
|
|
95
|
+
* It uses the Boring Avatars library for generating fallback avatars based on the user's name.
|
|
96
|
+
*
|
|
97
|
+
* @param {AvatarProps} props - The properties for the Avatar component.
|
|
98
|
+
* @returns {JSX.Element} The rendered Avatar component.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```jsx
|
|
102
|
+
* <Avatar
|
|
103
|
+
* name="John Doe"
|
|
104
|
+
* avatar="https://example.com/avatar.jpg"
|
|
105
|
+
* fallbackIcon="fas fa-user"
|
|
106
|
+
* bg="bg-blue-500"
|
|
107
|
+
* color="text-white"
|
|
108
|
+
* size="md"
|
|
109
|
+
* rounded
|
|
110
|
+
* variant="beam"
|
|
111
|
+
* onClick={() => console.log("Avatar clicked")}
|
|
112
|
+
* />
|
|
113
|
+
* ```
|
|
114
|
+
*
|
|
115
|
+
* @see {@link https://adarshpastakia.github.io/react-fabric/?path=/story/core-components-avatar--docs} for more details.
|
|
116
|
+
* @see {@link https://boringavatars.com/} for more information on Boring Avatars.
|
|
93
117
|
*/
|
|
94
118
|
export const Avatar = ({
|
|
95
119
|
ref,
|
|
@@ -108,100 +132,91 @@ export const Avatar = ({
|
|
|
108
132
|
}: AvatarProps) => {
|
|
109
133
|
const [fallback, setFallback] = useState(true);
|
|
110
134
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
135
|
+
// Memoize styles to avoid unnecessary recalculations
|
|
136
|
+
// and to ensure styles are only recalculated when dependencies change
|
|
137
|
+
const styles = useMemo(() => {
|
|
138
|
+
const s: KeyValue = {};
|
|
139
|
+
if (bg) {
|
|
140
|
+
s.backgroundColor = getColor(bg);
|
|
141
|
+
}
|
|
142
|
+
if (color) {
|
|
143
|
+
s.color = getColor(color);
|
|
144
|
+
}
|
|
145
|
+
if (size && !(size in SizeMap)) {
|
|
146
|
+
s.fontSize = size;
|
|
147
|
+
}
|
|
148
|
+
if (size && size in SizeMap) {
|
|
149
|
+
s.fontSize = SizeMap[size];
|
|
150
|
+
}
|
|
151
|
+
return s;
|
|
152
|
+
}, [bg, color, size]);
|
|
153
|
+
|
|
154
|
+
// avatar image
|
|
155
|
+
// if avatar is not provided, fallback to icon or text
|
|
156
|
+
const avatarImage = useMemo(() => {
|
|
157
|
+
setFallback(!avatar);
|
|
158
|
+
return (
|
|
159
|
+
avatar && (
|
|
160
|
+
<div className="contents">
|
|
161
|
+
<div
|
|
162
|
+
className={classNames(
|
|
163
|
+
"fabric-imgPlaceholder",
|
|
164
|
+
"absolute inset-0 bg-gray animate-pulse",
|
|
165
|
+
)}
|
|
166
|
+
/>
|
|
167
|
+
<img
|
|
168
|
+
src={avatar}
|
|
169
|
+
alt={avatar}
|
|
170
|
+
className="align-baseline"
|
|
171
|
+
onError={() => setFallback(true)}
|
|
172
|
+
onLoad={(e) => e.currentTarget.previousElementSibling?.remove()}
|
|
173
|
+
/>
|
|
174
|
+
</div>
|
|
175
|
+
)
|
|
176
|
+
);
|
|
177
|
+
}, [avatar]);
|
|
132
178
|
|
|
133
|
-
|
|
134
|
-
const
|
|
135
|
-
()
|
|
136
|
-
|
|
179
|
+
// render fallback icon or text
|
|
180
|
+
const fallbackAvatar = useMemo(() => {
|
|
181
|
+
if (fallbackIcon) {
|
|
182
|
+
return isSvgPath(fallbackIcon) ? (
|
|
183
|
+
<svg viewBox={viewBox}>
|
|
184
|
+
<path fill="currentColor" d={fallbackIcon.toString()} />
|
|
185
|
+
</svg>
|
|
186
|
+
) : (
|
|
187
|
+
<i className={fallbackIcon} />
|
|
188
|
+
);
|
|
189
|
+
}
|
|
190
|
+
if (variant === "text") {
|
|
191
|
+
const [, first, second, group] = name.match(
|
|
192
|
+
/(?=(\w).* (\w).*)|(?=(\w\w).*)/,
|
|
193
|
+
) as string[];
|
|
137
194
|
return (
|
|
138
|
-
|
|
139
|
-
<
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
onError={() => setFallback(true)}
|
|
151
|
-
onLoad={(e) => e.currentTarget.previousElementSibling?.remove()}
|
|
152
|
-
/>
|
|
153
|
-
</div>
|
|
154
|
-
)
|
|
195
|
+
<svg role="img">
|
|
196
|
+
<text
|
|
197
|
+
x="50%"
|
|
198
|
+
y="50%"
|
|
199
|
+
dy=".1em"
|
|
200
|
+
dominantBaseline="middle"
|
|
201
|
+
textAnchor="middle"
|
|
202
|
+
style={{ fontSize: ".5em", fontWeight: 500 }}
|
|
203
|
+
>
|
|
204
|
+
{group ?? `${first}${second}`}
|
|
205
|
+
</text>
|
|
206
|
+
</svg>
|
|
155
207
|
);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
);
|
|
160
|
-
|
|
161
|
-
const fallbackAvatar = useMemoDebugger(
|
|
162
|
-
() => {
|
|
163
|
-
if (fallbackIcon) {
|
|
164
|
-
return isSvgPath(fallbackIcon) ? (
|
|
165
|
-
<svg viewBox={viewBox}>
|
|
166
|
-
<path fill="currentColor" d={fallbackIcon.toString()} />
|
|
167
|
-
</svg>
|
|
168
|
-
) : (
|
|
169
|
-
<i className={fallbackIcon} />
|
|
170
|
-
);
|
|
171
|
-
}
|
|
172
|
-
if (variant === "text") {
|
|
173
|
-
const [, first, second, group] =
|
|
174
|
-
name.match(/(?=(\w).* (\w).*)|(?=(\w\w).*)/) ?? [];
|
|
175
|
-
return (
|
|
176
|
-
<svg role="img">
|
|
177
|
-
<text
|
|
178
|
-
x="50%"
|
|
179
|
-
y="50%"
|
|
180
|
-
dy=".1em"
|
|
181
|
-
dominantBaseline="middle"
|
|
182
|
-
textAnchor="middle"
|
|
183
|
-
style={{ fontSize: ".5em", fontWeight: 500 }}
|
|
184
|
-
>
|
|
185
|
-
{group ?? `${first}${second}`}
|
|
186
|
-
</text>
|
|
187
|
-
</svg>
|
|
188
|
-
);
|
|
189
|
-
}
|
|
190
|
-
return <BoringAvatar square size={64} variant={variant} name={name} />;
|
|
191
|
-
},
|
|
192
|
-
[name, variant, fallbackIcon],
|
|
193
|
-
"Avatar fallback",
|
|
194
|
-
);
|
|
208
|
+
}
|
|
209
|
+
// Fallback to BoringAvatar
|
|
210
|
+
return <BoringAvatar square size={64} variant={variant} name={name} />;
|
|
211
|
+
}, [name, variant, fallbackIcon]);
|
|
195
212
|
|
|
196
213
|
return (
|
|
197
214
|
<dfn
|
|
198
215
|
role="presentation"
|
|
199
216
|
className={classNames(
|
|
200
|
-
|
|
217
|
+
"fabric-avatar",
|
|
201
218
|
className,
|
|
202
219
|
"select-none relative overflow-hidden inline-block box-content leading-none not-italic text-center",
|
|
203
|
-
bg && getBgClass(bg),
|
|
204
|
-
color && getColorClass(color),
|
|
205
220
|
!rounded && "rounded",
|
|
206
221
|
rounded && "rounded-full",
|
|
207
222
|
)}
|
|
@@ -31,7 +31,6 @@ import {
|
|
|
31
31
|
type SizeType,
|
|
32
32
|
} from "../../types";
|
|
33
33
|
import { type AvatarProps } from "./Avatar";
|
|
34
|
-
import classes from "./Avatar.module.css";
|
|
35
34
|
|
|
36
35
|
type AvatarChild =
|
|
37
36
|
| ReactElement<Omit<AvatarProps, "size" | "rounded">>
|
|
@@ -63,7 +62,25 @@ const SizeMap: KeyValue<string> = {
|
|
|
63
62
|
};
|
|
64
63
|
|
|
65
64
|
/**
|
|
66
|
-
*
|
|
65
|
+
* A component that groups multiple avatars together, displaying a count of additional avatars if the total exceeds the visible ones.
|
|
66
|
+
* It allows customization of size, rounding, and additional aria attributes.
|
|
67
|
+
* This component is useful for displaying a collection of user avatars in a compact format, such as in a chat application or user list.
|
|
68
|
+
* It automatically calculates the number of additional avatars based on the `totalCount` prop and the number of children provided.
|
|
69
|
+
*
|
|
70
|
+
* @param {AvatarGroupProps} props - The properties for the AvatarGroup component.
|
|
71
|
+
* @returns {JSX.Element} The rendered AvatarGroup component.
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```jsx
|
|
75
|
+
* <AvatarGroup totalCount={5} size="md" className="my-avatar-group">
|
|
76
|
+
* <Avatar name="John Doe" avatar="https://example.com/avatar1.jpg" />
|
|
77
|
+
* <Avatar name="Jane Smith" avatar="https://example.com/avatar2.jpg" />
|
|
78
|
+
* <Avatar name="Alice Johnson" avatar="https://example.com/avatar3.jpg" />
|
|
79
|
+
* <Avatar name="Bob Brown" avatar="https://example.com/avatar4.jpg" />
|
|
80
|
+
* </AvatarGroup>
|
|
81
|
+
* ```
|
|
82
|
+
*
|
|
83
|
+
* @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-avatar--docs} for more details.
|
|
67
84
|
*/
|
|
68
85
|
export const AvatarGroup = ({
|
|
69
86
|
ref,
|
|
@@ -104,7 +121,7 @@ export const AvatarGroup = ({
|
|
|
104
121
|
{...aria}
|
|
105
122
|
ref={ref as AnyObject}
|
|
106
123
|
className={classNames(
|
|
107
|
-
|
|
124
|
+
"fabric-avatarGroup",
|
|
108
125
|
className,
|
|
109
126
|
"inline-flex flex-nowrap",
|
|
110
127
|
!rounded && "rounded",
|
|
@@ -115,10 +132,11 @@ export const AvatarGroup = ({
|
|
|
115
132
|
{avatars}
|
|
116
133
|
{!!diff && (
|
|
117
134
|
<dfn
|
|
135
|
+
data-ref="avatarCount"
|
|
118
136
|
className={classNames(
|
|
119
|
-
|
|
137
|
+
"fabric-avatar",
|
|
120
138
|
"select-none relative overflow-hidden inline-block box-content leading-none not-italic text-center",
|
|
121
|
-
|
|
139
|
+
"fabric-avatarGroup--extra",
|
|
122
140
|
)}
|
|
123
141
|
>
|
|
124
142
|
<svg>
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
|
|
24
24
|
import { isNil, isNumber, isObject, mergeRefs } from "@react-fabric/utilities";
|
|
25
25
|
import classNames from "classnames";
|
|
26
|
-
import { cloneElement, useMemo } from "react";
|
|
26
|
+
import { cloneElement, isValidElement, useMemo } from "react";
|
|
27
27
|
import {
|
|
28
28
|
type BadgeType,
|
|
29
29
|
type ChildProp,
|
|
@@ -32,7 +32,6 @@ import {
|
|
|
32
32
|
type RefProp,
|
|
33
33
|
} from "../../types";
|
|
34
34
|
import { Icon } from "../icon/Icon";
|
|
35
|
-
import classes from "./Badge.module.css";
|
|
36
35
|
|
|
37
36
|
export interface BadgeProps
|
|
38
37
|
extends CssProp,
|
|
@@ -43,6 +42,10 @@ export interface BadgeProps
|
|
|
43
42
|
* make wrapper a block element
|
|
44
43
|
*/
|
|
45
44
|
block?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* inline badge
|
|
47
|
+
*/
|
|
48
|
+
inline?: boolean;
|
|
46
49
|
/**
|
|
47
50
|
* badge value
|
|
48
51
|
*/
|
|
@@ -69,10 +72,17 @@ export interface BadgeProps
|
|
|
69
72
|
| "end";
|
|
70
73
|
}
|
|
71
74
|
|
|
75
|
+
/**
|
|
76
|
+
* Utility function to get badge properties from a badge value or object.
|
|
77
|
+
* It checks if the badge is an object and returns its properties,
|
|
78
|
+
*
|
|
79
|
+
* @param {string | number | BadgeType} badge - The badge value or object.
|
|
80
|
+
* @returns {AnyObject} An object containing badge properties.
|
|
81
|
+
*/
|
|
72
82
|
export const getBadgeProps = (
|
|
73
83
|
badge?: string | number | BadgeType,
|
|
74
84
|
): AnyObject => {
|
|
75
|
-
if (isObject(badge)) {
|
|
85
|
+
if (isObject(badge) && !isValidElement(badge)) {
|
|
76
86
|
return Object.assign({ forButton: true, placement: "" }, badge);
|
|
77
87
|
} else {
|
|
78
88
|
return {
|
|
@@ -83,6 +93,24 @@ export const getBadgeProps = (
|
|
|
83
93
|
}
|
|
84
94
|
};
|
|
85
95
|
|
|
96
|
+
/**
|
|
97
|
+
* A component that displays a badge with a value, icon, and optional ping animation.
|
|
98
|
+
* It can be used to indicate notifications, messages, or other important information.
|
|
99
|
+
* It supports various placements, inline or block display, and custom styling.
|
|
100
|
+
* It can also wrap children elements, allowing for flexible usage in buttons or other components.
|
|
101
|
+
*
|
|
102
|
+
* @param {BadgeProps} props - The properties for the Badge component.
|
|
103
|
+
* @returns {JSX.Element} The rendered Badge component.
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```jsx
|
|
107
|
+
* <Badge value={5} max={10} ping>
|
|
108
|
+
* <button>Notifications</button>
|
|
109
|
+
* </Badge>
|
|
110
|
+
* ```
|
|
111
|
+
*
|
|
112
|
+
* @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-badge--docs} for more details.
|
|
113
|
+
*/
|
|
86
114
|
export const Badge = ({
|
|
87
115
|
ref,
|
|
88
116
|
className,
|
|
@@ -90,6 +118,7 @@ export const Badge = ({
|
|
|
90
118
|
max,
|
|
91
119
|
ping,
|
|
92
120
|
block,
|
|
121
|
+
inline,
|
|
93
122
|
placement = "top-end",
|
|
94
123
|
children,
|
|
95
124
|
// @ts-expect-error ignore
|
|
@@ -101,6 +130,9 @@ export const Badge = ({
|
|
|
101
130
|
...rest
|
|
102
131
|
}: BadgeProps) => {
|
|
103
132
|
const label = useMemo(() => {
|
|
133
|
+
if (isValidElement(value)) {
|
|
134
|
+
return value;
|
|
135
|
+
}
|
|
104
136
|
if (!isNil(value)) {
|
|
105
137
|
if (isNumber(value) && max && value > max) {
|
|
106
138
|
return `${max}+`;
|
|
@@ -120,8 +152,8 @@ export const Badge = ({
|
|
|
120
152
|
return (
|
|
121
153
|
<div
|
|
122
154
|
className={classNames(
|
|
123
|
-
forButton ? "contents" : "
|
|
124
|
-
|
|
155
|
+
forButton || inline ? "contents" : block ? "block" : "inline-block",
|
|
156
|
+
forButton || inline ? "" : "relative",
|
|
125
157
|
)}
|
|
126
158
|
>
|
|
127
159
|
{children &&
|
|
@@ -129,16 +161,16 @@ export const Badge = ({
|
|
|
129
161
|
...rest,
|
|
130
162
|
ref: innerRef,
|
|
131
163
|
})}
|
|
132
|
-
{(!!ping || label) && (
|
|
164
|
+
{(!!ping || (label ?? icon)) && (
|
|
133
165
|
<div
|
|
134
166
|
data-ref="badge"
|
|
135
167
|
data-ping={ping}
|
|
136
168
|
data-placement={placement}
|
|
137
169
|
className={classNames(
|
|
138
|
-
|
|
170
|
+
"fabric-badge",
|
|
139
171
|
className,
|
|
140
|
-
"inline-block p-px min-w-2 min-h-2 text-center select-none rounded-full leading-none z-
|
|
141
|
-
forButton && !placement ? "relative" : "absolute",
|
|
172
|
+
"inline-block p-px min-w-2 min-h-2 text-center select-none rounded-full leading-none z-2 pointer-events-none",
|
|
173
|
+
(forButton && !placement) || inline ? "relative" : "absolute",
|
|
142
174
|
)}
|
|
143
175
|
>
|
|
144
176
|
{label && <span className="p-1">{label}</span>}
|
|
@@ -24,14 +24,13 @@
|
|
|
24
24
|
import classNames from "classnames";
|
|
25
25
|
import { Children, useMemo } from "react";
|
|
26
26
|
import { type AriaProps, type ChildrenProp, type CssProp } from "../../types";
|
|
27
|
-
import {
|
|
27
|
+
import { Anchor } from "../../typography/Anchor";
|
|
28
28
|
import { Dropdown } from "../dropdown/Dropdown";
|
|
29
|
-
import classes from "./Breadcrumbs.module.css";
|
|
30
29
|
|
|
31
30
|
export interface BreadcrumbProps
|
|
32
31
|
extends CssProp,
|
|
33
32
|
AriaProps,
|
|
34
|
-
ChildrenProp<typeof
|
|
33
|
+
ChildrenProp<typeof Anchor> {
|
|
35
34
|
/**
|
|
36
35
|
* breadcrumb styling
|
|
37
36
|
*/
|
|
@@ -46,6 +45,35 @@ export interface BreadcrumbProps
|
|
|
46
45
|
color?: "primary" | "accent";
|
|
47
46
|
}
|
|
48
47
|
|
|
48
|
+
/**
|
|
49
|
+
* A navigation component that displays the current page's location within a hierarchy and allows users to navigate back to previous pages.
|
|
50
|
+
* It supports different styles, separators, and colors, and can handle a variable number of breadcrumb links.
|
|
51
|
+
* This component is useful for enhancing user navigation experience in applications with multiple levels of content hierarchy.
|
|
52
|
+
* It automatically manages the display of overflow items when there are too many links to fit in the available space, providing a dropdown for additional links.
|
|
53
|
+
*
|
|
54
|
+
* @param {BreadcrumbProps} props - The properties for the Breadcrumbs component.
|
|
55
|
+
* @returns {JSX.Element} The rendered Breadcrumbs component.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```jsx
|
|
59
|
+
* <Breadcrumbs
|
|
60
|
+
* variant="classic"
|
|
61
|
+
* separator=">"
|
|
62
|
+
* color="primary"
|
|
63
|
+
* className="my-custom-class"
|
|
64
|
+
* aria-label="Breadcrumbs"
|
|
65
|
+
* >
|
|
66
|
+
* <Anchor href="/">Home</Anchor>
|
|
67
|
+
* <Anchor href="/products">Products</Anchor>
|
|
68
|
+
* <Anchor href="/products/shoes">Shoes</Anchor>
|
|
69
|
+
* <Anchor href="/products/shoes/sneakers">Sneakers</Anchor>
|
|
70
|
+
* <Anchor href="/products/shoes/sneakers/nike">Nike</Anchor>
|
|
71
|
+
* <Anchor href="/products/shoes/sneakers/nike/airmax">Air Max</Anchor>
|
|
72
|
+
* </Breadcrumbs>
|
|
73
|
+
* ```
|
|
74
|
+
*
|
|
75
|
+
* @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-breadcrumbs--docs} for more details.
|
|
76
|
+
*/
|
|
49
77
|
export const Breadcrumbs = ({
|
|
50
78
|
variant = "classic",
|
|
51
79
|
className,
|
|
@@ -64,10 +92,11 @@ export const Breadcrumbs = ({
|
|
|
64
92
|
|
|
65
93
|
return (
|
|
66
94
|
<nav
|
|
95
|
+
data-ref="breadcrumbs"
|
|
67
96
|
data-color={color}
|
|
68
97
|
data-variant={variant}
|
|
69
98
|
className={classNames(
|
|
70
|
-
|
|
99
|
+
"fabric-breadcrumbs",
|
|
71
100
|
className,
|
|
72
101
|
"flex flex-nowrap items-center",
|
|
73
102
|
)}
|
|
@@ -76,7 +105,7 @@ export const Breadcrumbs = ({
|
|
|
76
105
|
{start.map((link, idx) => (
|
|
77
106
|
<li
|
|
78
107
|
key={idx}
|
|
79
|
-
className={
|
|
108
|
+
className={"fabric-breadcrumbLink"}
|
|
80
109
|
data-separator={separator}
|
|
81
110
|
>
|
|
82
111
|
{link}
|
|
@@ -84,12 +113,16 @@ export const Breadcrumbs = ({
|
|
|
84
113
|
))}
|
|
85
114
|
{overflow && (
|
|
86
115
|
<Dropdown closeOnClick showArrow>
|
|
87
|
-
<li
|
|
88
|
-
|
|
116
|
+
<li
|
|
117
|
+
className={"fabric-breadcrumbLink"}
|
|
118
|
+
data-separator={separator}
|
|
119
|
+
data-ref="breadcrumbOverflow"
|
|
120
|
+
>
|
|
121
|
+
<Anchor data->...</Anchor>
|
|
89
122
|
</li>
|
|
90
123
|
<div
|
|
91
124
|
data-color={color}
|
|
92
|
-
className={classNames(
|
|
125
|
+
className={classNames("fabric-breadcrumbOverflow", "flex flex-col")}
|
|
93
126
|
>
|
|
94
127
|
{overflow}
|
|
95
128
|
</div>
|
|
@@ -98,7 +131,7 @@ export const Breadcrumbs = ({
|
|
|
98
131
|
{end?.map((link, idx) => (
|
|
99
132
|
<li
|
|
100
133
|
key={idx}
|
|
101
|
-
className={
|
|
134
|
+
className={"fabric-breadcrumbLink"}
|
|
102
135
|
data-separator={separator}
|
|
103
136
|
>
|
|
104
137
|
{link}
|