@react-fabric/core 1.0.0-beta.6 → 1.0.0-beta.61
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} +52 -47
- package/{src/components/button/Button.module.css → css/components/_button.css} +86 -84
- package/{src/components/card/Card.module.css → css/components/_card.css} +54 -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} +12 -9
- package/{src/components/media/Media.module.css → css/components/_media.css} +17 -17
- package/{src/components/menu/Menu.module.css → css/components/_menu.css} +21 -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/css/components/_stepper.css +86 -0
- package/{src/components/tabpanel/TabPanel.module.css → css/components/_tabPanel.css} +130 -85
- 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} +26 -18
- package/{src/core/aside/Aside.module.css → css/core/_aside.css} +60 -48
- 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 +56 -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 +9 -6
- package/css/theme/_colors.css +320 -0
- package/css/theme/_utilities.css +541 -0
- package/css/theme/index.css +45 -0
- package/dist/cjs/components/actionLabel/ActionLabel.js +26 -8
- package/dist/cjs/components/animations/Animations.js +137 -45
- package/dist/cjs/components/avatar/Avatar.js +46 -13
- package/dist/cjs/components/avatar/AvatarGroup.js +22 -4
- package/dist/cjs/components/badge/Badge.js +36 -15
- package/dist/cjs/components/breadcrumbs/Breadcrumbs.js +40 -9
- package/dist/cjs/components/button/Button.js +51 -29
- package/dist/cjs/components/button/ButtonGroup.js +30 -3
- package/dist/cjs/components/button/ConfirmButton.js +28 -2
- package/dist/cjs/components/button/ToggleButtonGroup.js +41 -15
- package/dist/cjs/components/callout/Callout.js +47 -7
- package/dist/cjs/components/card/Card.js +60 -18
- 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 +40 -20
- package/dist/cjs/components/collapsable/Collapsable.js +32 -8
- 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 +2 -3
- package/dist/cjs/components/empty/EmptyContent.js +37 -7
- package/dist/cjs/components/icon/Icon.js +76 -13
- package/dist/cjs/components/media/Media.js +174 -76
- package/dist/cjs/components/menu/ContextMenu.js +19 -0
- package/dist/cjs/components/menu/Menu.js +77 -23
- package/dist/cjs/components/menu/MenuItem.js +54 -27
- package/dist/cjs/components/meter/Meter.js +26 -3
- package/dist/cjs/components/navigator/Navigator.js +50 -18
- package/dist/cjs/components/panel/Panel.js +59 -28
- package/dist/cjs/components/panel/PanelGroup.js +25 -2
- package/dist/cjs/components/panel/PanelStack.js +31 -2
- 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 +39 -16
- package/dist/cjs/components/tabpanel/TabPanel.js +56 -16
- package/dist/cjs/context/Global.js +28 -1
- package/dist/cjs/context/NotificationCenter.js +3 -3
- package/dist/cjs/core/aside/Aside.js +50 -25
- package/dist/cjs/core/boundary/ErrorBoundary.js +25 -8
- package/dist/cjs/core/boundary/ErrorIcon.js +1 -2
- package/dist/cjs/core/content/Content.js +7 -3
- package/dist/cjs/core/headfoot/HeadFoot.js +48 -22
- package/dist/cjs/core/page/Page.js +41 -40
- package/dist/cjs/core/responsive/Responsive.js +59 -6
- package/dist/cjs/core/section/Section.js +12 -29
- 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/useStepper.js +74 -0
- 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 +14 -10
- package/dist/cjs/overlays/alert/Alert.js +24 -17
- package/dist/cjs/overlays/flyout/Flyout.js +48 -65
- package/dist/cjs/overlays/message/Message.js +8 -3
- package/dist/cjs/overlays/modal/Modal.js +19 -23
- package/dist/cjs/overlays/toast/Toast.js +22 -13
- package/dist/cjs/overlays/tooltip/Tooltip.js +25 -13
- package/dist/cjs/typography/Abbr.js +35 -7
- package/dist/cjs/typography/{Link.js → Anchor.js} +23 -5
- package/dist/cjs/typography/Copy.js +1 -2
- package/dist/cjs/typography/Mark.js +25 -5
- 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 +135 -44
- package/dist/esm/components/avatar/Avatar.js +46 -13
- package/dist/esm/components/avatar/AvatarGroup.js +22 -4
- package/dist/esm/components/badge/Badge.js +38 -17
- package/dist/esm/components/breadcrumbs/Breadcrumbs.js +40 -9
- package/dist/esm/components/button/Button.js +53 -31
- package/dist/esm/components/button/ButtonGroup.js +31 -4
- package/dist/esm/components/button/ConfirmButton.js +28 -2
- package/dist/esm/components/button/ToggleButtonGroup.js +42 -16
- package/dist/esm/components/callout/Callout.js +47 -7
- package/dist/esm/components/card/Card.js +61 -19
- 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 +42 -22
- package/dist/esm/components/collapsable/Collapsable.js +32 -8
- 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 +2 -3
- package/dist/esm/components/empty/EmptyContent.js +37 -7
- package/dist/esm/components/icon/Icon.js +78 -16
- package/dist/esm/components/media/Media.js +175 -77
- package/dist/esm/components/menu/ContextMenu.js +19 -0
- package/dist/esm/components/menu/Menu.js +79 -25
- package/dist/esm/components/menu/MenuItem.js +49 -22
- package/dist/esm/components/meter/Meter.js +26 -3
- package/dist/esm/components/navigator/Navigator.js +50 -18
- package/dist/esm/components/panel/Panel.js +61 -30
- package/dist/esm/components/panel/PanelGroup.js +25 -2
- package/dist/esm/components/panel/PanelStack.js +31 -2
- 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 +40 -17
- package/dist/esm/components/tabpanel/TabPanel.js +56 -16
- package/dist/esm/context/Global.js +28 -1
- package/dist/esm/context/NotificationCenter.js +3 -3
- package/dist/esm/core/aside/Aside.js +52 -27
- package/dist/esm/core/boundary/ErrorBoundary.js +25 -8
- package/dist/esm/core/boundary/ErrorIcon.js +1 -2
- package/dist/esm/core/content/Content.js +7 -3
- package/dist/esm/core/headfoot/HeadFoot.js +48 -22
- package/dist/esm/core/page/Page.js +43 -42
- package/dist/esm/core/responsive/Responsive.js +59 -6
- package/dist/esm/core/section/Section.js +12 -29
- 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/useStepper.js +74 -0
- 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 +7 -4
- package/dist/esm/overlays/alert/Alert.js +25 -18
- package/dist/esm/overlays/flyout/Flyout.js +53 -70
- package/dist/esm/overlays/message/Message.js +9 -4
- package/dist/esm/overlays/modal/Modal.js +22 -26
- package/dist/esm/overlays/toast/Toast.js +23 -14
- package/dist/esm/overlays/tooltip/Tooltip.js +25 -13
- package/dist/esm/typography/Abbr.js +35 -7
- package/dist/esm/typography/{Link.js → Anchor.js} +24 -6
- package/dist/esm/typography/Copy.js +1 -2
- package/dist/esm/typography/Mark.js +25 -5
- 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 +21 -2
- package/dist/types/components/animations/Animations.d.ts +105 -7
- package/dist/types/components/avatar/Avatar.d.ts +34 -6
- package/dist/types/components/avatar/AvatarGroup.d.ts +19 -1
- package/dist/types/components/badge/Badge.d.ts +37 -3
- package/dist/types/components/breadcrumbs/Breadcrumbs.d.ts +31 -2
- package/dist/types/components/button/Button.d.ts +39 -7
- package/dist/types/components/button/ButtonGroup.d.ts +28 -3
- package/dist/types/components/button/ConfirmButton.d.ts +23 -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 +44 -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 +34 -5
- package/dist/types/components/collapsable/Collapsable.d.ts +28 -2
- 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 +25 -0
- package/dist/types/components/empty/EmptyContent.d.ts +32 -3
- package/dist/types/components/icon/Icon.d.ts +40 -8
- package/dist/types/components/index.d.ts +3 -2
- package/dist/types/components/media/Media.d.ts +54 -0
- package/dist/types/components/menu/ContextMenu.d.ts +19 -1
- 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 +9 -3
- 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 +43 -4
- 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 +38 -4
- package/dist/types/components/tabpanel/TabPanel.d.ts +51 -2
- package/dist/types/context/Global.d.ts +24 -1
- package/dist/types/core/aside/Aside.d.ts +45 -6
- package/dist/types/core/boundary/ErrorBoundary.d.ts +18 -2
- package/dist/types/core/content/Content.d.ts +6 -1
- package/dist/types/core/headfoot/HeadFoot.d.ts +41 -9
- package/dist/types/core/page/Page.d.ts +32 -4
- package/dist/types/core/responsive/Responsive.d.ts +58 -3
- package/dist/types/core/section/Section.d.ts +18 -3
- 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/useStepper.d.ts +14 -0
- package/dist/types/hooks/useStorage.d.ts +38 -0
- package/dist/types/index.d.ts +4 -1
- package/dist/types/overlays/alert/Alert.d.ts +16 -5
- package/dist/types/overlays/flyout/Flyout.d.ts +9 -4
- package/dist/types/overlays/message/Message.d.ts +16 -5
- package/dist/types/overlays/modal/Modal.d.ts +13 -4
- package/dist/types/overlays/toast/Toast.d.ts +16 -5
- package/dist/types/overlays/tooltip/Tooltip.d.ts +2 -2
- package/dist/types/types/index.d.ts +28 -24
- 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 +1 -0
- package/dist/types/utils/getColor.d.ts +1 -4
- package/dist/types/utils/index.d.ts +1 -0
- package/package.json +17 -16
- package/src/components/actionLabel/ActionLabel.tsx +26 -8
- package/src/components/animations/Animations.tsx +139 -52
- package/src/components/avatar/Avatar.tsx +51 -15
- package/src/components/avatar/AvatarGroup.tsx +23 -5
- package/src/components/badge/Badge.tsx +50 -22
- package/src/components/breadcrumbs/Breadcrumbs.tsx +43 -10
- package/src/components/button/Button.tsx +75 -43
- package/src/components/button/ButtonGroup.tsx +33 -7
- package/src/components/button/ConfirmButton.tsx +31 -3
- package/src/components/button/ToggleButtonGroup.tsx +74 -47
- package/src/components/callout/Callout.tsx +58 -16
- package/src/components/card/Card.tsx +84 -25
- package/src/components/card/CardCover.tsx +36 -6
- package/src/components/card/FlipContent.tsx +90 -0
- package/src/components/chip/Chip.tsx +53 -25
- package/src/components/collapsable/Collapsable.tsx +35 -11
- package/src/components/divider/Divider.tsx +42 -16
- package/src/components/dropdown/Dropdown.tsx +47 -12
- package/src/components/dropdown/DropdownTool.tsx +28 -4
- package/src/components/empty/EmptyContent.tsx +49 -8
- package/src/components/icon/Icon.tsx +96 -18
- package/src/components/index.ts +5 -4
- package/src/components/media/Media.tsx +193 -105
- package/src/components/menu/ContextMenu.tsx +19 -0
- package/src/components/menu/Menu.tsx +88 -32
- package/src/components/menu/MenuItem.tsx +44 -19
- package/src/components/menu/types.ts +9 -8
- package/src/components/meter/Meter.tsx +27 -4
- package/src/components/navigator/Navigator.tsx +60 -12
- package/src/components/panel/Panel.tsx +66 -28
- package/src/components/panel/PanelGroup.tsx +25 -2
- package/src/components/panel/PanelStack.tsx +33 -2
- package/src/components/progress/ProgressBar.tsx +33 -14
- package/src/components/progress/ProgressCircle.tsx +29 -13
- package/src/components/tabpanel/Tab.tsx +47 -24
- package/src/components/tabpanel/TabPanel.tsx +79 -13
- package/src/context/Global.tsx +28 -1
- package/src/context/NotificationCenter.tsx +3 -3
- package/src/core/aside/Aside.tsx +59 -38
- package/src/core/boundary/ErrorBoundary.tsx +26 -8
- package/src/core/boundary/ErrorIcon.tsx +1 -2
- package/src/core/content/Content.tsx +7 -3
- package/src/core/headfoot/HeadFoot.tsx +44 -37
- package/src/core/page/Page.tsx +44 -22
- package/src/core/responsive/Responsive.tsx +66 -8
- package/src/core/section/Section.tsx +26 -4
- 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 +33 -8
- package/src/hooks/usePropToggle.ts +16 -5
- package/src/hooks/useResize.ts +19 -1
- package/src/hooks/useResizeObserver.ts +32 -9
- package/src/hooks/useStepper.tsx +68 -0
- 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 +5 -1
- package/src/overlays/alert/Alert.tsx +51 -36
- package/src/overlays/flyout/Flyout.tsx +74 -99
- package/src/overlays/message/Message.tsx +28 -9
- package/src/overlays/modal/Modal.tsx +39 -34
- package/src/overlays/toast/Toast.tsx +44 -33
- package/src/overlays/tooltip/Tooltip.tsx +44 -20
- package/src/types/global.d.ts +8 -0
- package/src/types/index.ts +293 -47
- package/src/typography/Abbr.tsx +45 -11
- package/src/typography/{Link.tsx → Anchor.tsx} +26 -14
- package/src/typography/Copy.tsx +16 -2
- package/src/typography/Mark.tsx +25 -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/flags.rect.css +0 -1607
- package/css/flags.wavy.css +0 -1606
- 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/types/icons.js +0 -199
- 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/types/icons.js +0 -201
- package/dist/esm/typography/Typography.module.css +0 -1
- package/dist/types/types/icons.d.ts +0 -196
- package/dist/types/typography/Link.d.ts +0 -25
- package/src/types/icons.ts +0 -425
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-fabric/core",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.61",
|
|
4
4
|
"description": "RUF: Core package",
|
|
5
5
|
"author": "Adarsh Pastakia <adarshpastakia@outlook.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -35,26 +35,27 @@
|
|
|
35
35
|
"watch": "npm-run-all -p watch:rollup watch:dts"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@floating-ui/react": "
|
|
39
|
-
"@
|
|
40
|
-
"@
|
|
41
|
-
"@
|
|
42
|
-
"@
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"
|
|
38
|
+
"@floating-ui/react": "~0.27.16",
|
|
39
|
+
"@iconify-json/mdi": "~1.2.3",
|
|
40
|
+
"@iconify-json/svg-spinners": "~1.2.4",
|
|
41
|
+
"@iconify/tailwind4": "~1.2.1",
|
|
42
|
+
"@react-fabric/utilities": "^1.0.0-beta.61",
|
|
43
|
+
"@tailwindcss/postcss": "~4.1.16",
|
|
44
|
+
"boring-avatars": "~1.11.2",
|
|
45
|
+
"classnames": "~2.5.1",
|
|
46
|
+
"color": "~5.0.2",
|
|
47
|
+
"resize-observer-polyfill": "~1.5.1",
|
|
48
|
+
"tailwindcss": "~4.1.16"
|
|
48
49
|
},
|
|
49
50
|
"peerDependencies": {
|
|
50
|
-
"i18next": "
|
|
51
|
-
"react": "
|
|
52
|
-
"react-dom": "
|
|
53
|
-
"react-i18next": "
|
|
51
|
+
"i18next": "~25.6.0",
|
|
52
|
+
"react": "~19.2.0",
|
|
53
|
+
"react-dom": "~19.2.0",
|
|
54
|
+
"react-i18next": "~16.2.1"
|
|
54
55
|
},
|
|
55
56
|
"engines": {
|
|
56
57
|
"node": ">=18.12.0",
|
|
57
58
|
"npm": ">=8.19.0"
|
|
58
59
|
},
|
|
59
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "a0b0c571bf9c189fa3355bbc3b896ecc4b9d6a04"
|
|
60
61
|
}
|
|
@@ -30,7 +30,6 @@ import {
|
|
|
30
30
|
type TestProps,
|
|
31
31
|
} from "../../types";
|
|
32
32
|
import { ButtonGroup } from "../button/ButtonGroup";
|
|
33
|
-
import classes from "./ActionLabel.module.css";
|
|
34
33
|
|
|
35
34
|
export interface ActionLabelProps
|
|
36
35
|
extends AriaProps,
|
|
@@ -52,8 +51,27 @@ export interface ActionLabelProps
|
|
|
52
51
|
}
|
|
53
52
|
|
|
54
53
|
/**
|
|
55
|
-
* A
|
|
56
|
-
* useful
|
|
54
|
+
* A label with action buttons that can be aligned to the start or end.
|
|
55
|
+
* This component is useful for displaying a label with associated actions, such as buttons, that can be aligned based on the design requirements.
|
|
56
|
+
* It automatically calculates the width of the action buttons to ensure that the label text does not overflow the container.
|
|
57
|
+
* It uses CSS variables to manage the width of the label text dynamically based on the action buttons' width.
|
|
58
|
+
* This component is designed to be flexible and can be used in various contexts where a label with actions is needed.
|
|
59
|
+
* It supports custom alignment, disabled states, and can be easily styled with additional CSS classes.
|
|
60
|
+
*
|
|
61
|
+
* @param {ActionLabelProps} props - The properties for the ActionLabel component.
|
|
62
|
+
* @returns {JSX.Element} The rendered ActionLabel component.
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```jsx
|
|
66
|
+
* <ActionLabel
|
|
67
|
+
* actions={[<Button>Action 1</Button>, <Button>Action 2</Button>]}
|
|
68
|
+
* align="end"
|
|
69
|
+
* >
|
|
70
|
+
* Label Text
|
|
71
|
+
* </ActionLabel>
|
|
72
|
+
* ```
|
|
73
|
+
*
|
|
74
|
+
* @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-action-label--docs} for more details.
|
|
57
75
|
*/
|
|
58
76
|
export const ActionLabel = ({
|
|
59
77
|
children,
|
|
@@ -63,9 +81,8 @@ export const ActionLabel = ({
|
|
|
63
81
|
disabled,
|
|
64
82
|
...rest
|
|
65
83
|
}: ActionLabelProps) => {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
*/
|
|
84
|
+
// Calculate the width of the action buttons to set a CSS variable
|
|
85
|
+
// This is used to ensure the label text does not overflow the container
|
|
69
86
|
const calculateBasis = useCallback((el: HTMLElement | null) => {
|
|
70
87
|
if (el) {
|
|
71
88
|
const clone = el.cloneNode(true) as HTMLElement;
|
|
@@ -84,7 +101,7 @@ export const ActionLabel = ({
|
|
|
84
101
|
<div
|
|
85
102
|
className={classNames(
|
|
86
103
|
className,
|
|
87
|
-
|
|
104
|
+
"fabric-actionLabel",
|
|
88
105
|
"flex overflow-hidden gap-1 items-center cursor-default select-none",
|
|
89
106
|
)}
|
|
90
107
|
data-disabled={disabled}
|
|
@@ -92,8 +109,9 @@ export const ActionLabel = ({
|
|
|
92
109
|
>
|
|
93
110
|
<ButtonGroup
|
|
94
111
|
ref={calculateBasis}
|
|
112
|
+
data-inner-clickable
|
|
95
113
|
className={classNames(
|
|
96
|
-
|
|
114
|
+
"fabric-actions",
|
|
97
115
|
"overflow-hidden flex-content",
|
|
98
116
|
align === "end" && "order-2",
|
|
99
117
|
)}
|
|
@@ -30,21 +30,42 @@ import {
|
|
|
30
30
|
type CssProp,
|
|
31
31
|
type PaletteType,
|
|
32
32
|
} from "../../types";
|
|
33
|
-
import { getColor
|
|
34
|
-
import classes from "./Animations.module.css";
|
|
33
|
+
import { getColor } from "../../utils";
|
|
35
34
|
|
|
36
35
|
export interface AnimationProps extends CssProp, AriaProps {
|
|
37
36
|
type?: "info" | "check" | "cross" | "question" | "exclaim";
|
|
38
37
|
/**
|
|
39
38
|
* icon color
|
|
40
39
|
*/
|
|
41
|
-
color?: ColorType | PaletteType;
|
|
40
|
+
color?: ColorType | PaletteType | string;
|
|
42
41
|
/**
|
|
43
42
|
* icon mark color
|
|
44
43
|
*/
|
|
45
|
-
strokeColor?: ColorType | PaletteType;
|
|
44
|
+
strokeColor?: ColorType | PaletteType | string;
|
|
46
45
|
}
|
|
47
46
|
|
|
47
|
+
/**
|
|
48
|
+
* A component that displays an animated indicator with a customizable icon type and colors.
|
|
49
|
+
* It can be used to indicate various states such as success, error, or information.
|
|
50
|
+
* The component supports different icon types like check, cross, question, and exclamation.
|
|
51
|
+
* It also allows customization of the icon color and stroke color.
|
|
52
|
+
*
|
|
53
|
+
* @param {AnimationProps} props - The properties for the AnimationIndicator component.
|
|
54
|
+
* @returns {JSX.Element} The rendered AnimationIndicator component.
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```jsx
|
|
58
|
+
* <AnimationIndicator
|
|
59
|
+
* type="check"
|
|
60
|
+
* color="primary-500"
|
|
61
|
+
* strokeColor="primary-700"
|
|
62
|
+
* className="my-custom-class"
|
|
63
|
+
* aria-label="Loading"
|
|
64
|
+
* />
|
|
65
|
+
* ```
|
|
66
|
+
*
|
|
67
|
+
* @see {@link https://adarshpastakia.github.io/react-fabric/?path=/story/core-components-animations--docs} for more details.
|
|
68
|
+
*/
|
|
48
69
|
export const AnimationIndicator = ({
|
|
49
70
|
className,
|
|
50
71
|
color,
|
|
@@ -80,10 +101,9 @@ export const AnimationIndicator = ({
|
|
|
80
101
|
<svg
|
|
81
102
|
data-ref="animated-indicator"
|
|
82
103
|
className={classNames(
|
|
83
|
-
|
|
104
|
+
"fabric-checkAnimation",
|
|
84
105
|
className,
|
|
85
106
|
"inline-block rounded-full",
|
|
86
|
-
color && getColorClass(color),
|
|
87
107
|
)}
|
|
88
108
|
style={styles}
|
|
89
109
|
xmlns="http://www.w3.org/2000/svg"
|
|
@@ -91,92 +111,139 @@ export const AnimationIndicator = ({
|
|
|
91
111
|
aria-hidden="true"
|
|
92
112
|
{...aria}
|
|
93
113
|
>
|
|
94
|
-
<circle className={
|
|
114
|
+
<circle className={"fabric-circlePart"} cx="26" cy="26" r="25" />
|
|
95
115
|
<path
|
|
96
|
-
className={classNames(
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
116
|
+
className={classNames("fabric-iconPart")}
|
|
117
|
+
style={{
|
|
118
|
+
color: strokeColor
|
|
119
|
+
? getColor(strokeColor)
|
|
120
|
+
: "var(--text-color-invert)",
|
|
121
|
+
}}
|
|
100
122
|
d={path}
|
|
101
123
|
/>
|
|
102
124
|
</svg>
|
|
103
125
|
);
|
|
104
126
|
};
|
|
105
127
|
|
|
106
|
-
|
|
107
|
-
|
|
128
|
+
/**
|
|
129
|
+
* A component that displays a loading animation with a customizable icon, color, size, and mask blur.
|
|
130
|
+
* It is typically used to indicate loading states in the UI.
|
|
131
|
+
*
|
|
132
|
+
* @param {Object} props - The properties for the AnimationLoader component.
|
|
133
|
+
* @param {ColorType | PaletteType | string} [props.color="tint-500"] - The color of the loader icon.
|
|
134
|
+
* @param {number | string} [props.size="2rem"] - The size of the loader icon.
|
|
135
|
+
* @param {string} props.icon - The icon to be displayed as the loader.
|
|
136
|
+
* @param {"sm" | "md" | "lg"} [props.maskBlur] - The blur effect for the background mask.
|
|
137
|
+
* @returns {JSX.Element} The rendered AnimationLoader component.
|
|
138
|
+
*/
|
|
139
|
+
export const AnimationLoader = ({
|
|
140
|
+
color = "tint-500",
|
|
108
141
|
size = "2rem",
|
|
142
|
+
icon,
|
|
143
|
+
maskBlur,
|
|
109
144
|
}: {
|
|
110
|
-
|
|
145
|
+
icon: string;
|
|
146
|
+
maskBlur?: "sm" | "md" | "lg";
|
|
147
|
+
color?: ColorType | PaletteType | string;
|
|
111
148
|
size?: number | string;
|
|
112
149
|
}) => {
|
|
113
150
|
return (
|
|
114
151
|
<div
|
|
115
152
|
className={classNames(
|
|
116
153
|
"absolute inset-0 z-10 flex justify-center items-center cursor-wait",
|
|
154
|
+
maskBlur === "sm" && "backdrop-blur-sm",
|
|
155
|
+
maskBlur === "md" && "backdrop-blur-md",
|
|
156
|
+
maskBlur === "lg" && "backdrop-blur-lg",
|
|
117
157
|
)}
|
|
118
158
|
>
|
|
119
159
|
<div
|
|
120
160
|
className={classNames(
|
|
121
|
-
"outline outline-tint-500/20 p-4 bg-
|
|
161
|
+
"outline outline-tint-500/20 p-4 bg-tint-50/50 backdrop-blur-sm leading-0 rounded",
|
|
122
162
|
)}
|
|
123
163
|
>
|
|
124
164
|
<div
|
|
125
|
-
className={classNames(
|
|
126
|
-
style={{
|
|
165
|
+
className={classNames("aspect-square", icon)}
|
|
166
|
+
style={{ fontSize: size, color: getColor(color) }}
|
|
127
167
|
/>
|
|
128
168
|
</div>
|
|
129
169
|
</div>
|
|
130
170
|
);
|
|
131
171
|
};
|
|
132
172
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
173
|
+
/**
|
|
174
|
+
* A component that displays an animated bars loader.
|
|
175
|
+
* It can be customized with color and size properties.
|
|
176
|
+
* This component is typically used to indicate loading states in the UI.
|
|
177
|
+
*
|
|
178
|
+
* @param {Object} props - The properties for the LoadingBars component.
|
|
179
|
+
* @param {ColorType | PaletteType | string} [props.color="tint-500"] - The color of the bars.
|
|
180
|
+
* @param {number | string} [props.size="2rem"] - The size of the bars.
|
|
181
|
+
* @returns {JSX.Element} The rendered LoadingBars component.
|
|
182
|
+
*
|
|
183
|
+
* @example
|
|
184
|
+
* ```jsx
|
|
185
|
+
* <LoadingBars color="primary-500" size="3rem" />
|
|
186
|
+
* ```
|
|
187
|
+
*
|
|
188
|
+
* @see {@link https://adarshpastakia.github.io/react-fabric/?path=/story/core-components-animations--docs} for more details.
|
|
189
|
+
*/
|
|
190
|
+
export const LoadingBars = (props: {
|
|
191
|
+
color?: ColorType | PaletteType | string;
|
|
138
192
|
size?: number | string;
|
|
193
|
+
maskBlur?: "sm" | "md" | "lg";
|
|
139
194
|
}) => {
|
|
140
195
|
return (
|
|
141
|
-
<
|
|
142
|
-
className={classNames(
|
|
143
|
-
"absolute inset-0 z-10 flex justify-center items-center cursor-wait",
|
|
144
|
-
)}
|
|
145
|
-
data-testid="spinner"
|
|
146
|
-
>
|
|
147
|
-
<div
|
|
148
|
-
className={classNames(
|
|
149
|
-
"outline outline-tint-500/20 p-4 bg-base/50 backdrop-blur-sm rounded",
|
|
150
|
-
)}
|
|
151
|
-
>
|
|
152
|
-
<div
|
|
153
|
-
className={classNames(classes.spinner, getColorClass(color))}
|
|
154
|
-
style={{ width: size }}
|
|
155
|
-
/>
|
|
156
|
-
</div>
|
|
157
|
-
</div>
|
|
196
|
+
<AnimationLoader icon="icon-[svg-spinners--bars-scale-fade]" {...props} />
|
|
158
197
|
);
|
|
159
198
|
};
|
|
160
199
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
200
|
+
/**
|
|
201
|
+
* A component that displays a spinner animation.
|
|
202
|
+
* It can be customized with color and size properties.
|
|
203
|
+
* This component is typically used to indicate loading states in the UI.
|
|
204
|
+
*
|
|
205
|
+
* @param {Object} props - The properties for the LoadingSpinner component.
|
|
206
|
+
* @param {ColorType | PaletteType | string} [props.color="tint-700"] - The color of the spinner.
|
|
207
|
+
* @param {number | string} [props.size="2rem"] - The size of the spinner.
|
|
208
|
+
* @returns {JSX.Element} The rendered LoadingSpinner component.
|
|
209
|
+
*
|
|
210
|
+
* @example
|
|
211
|
+
* ```jsx
|
|
212
|
+
* <LoadingSpinner color="primary-500" size="3rem" />
|
|
213
|
+
* ```
|
|
214
|
+
*
|
|
215
|
+
* @see {@link https://adarshpastakia.github.io/react-fabric/?path=/story/core-components-animations--docs} for more details.
|
|
216
|
+
*/
|
|
217
|
+
export const LoadingSpinner = (props: {
|
|
218
|
+
color?: ColorType | PaletteType | string;
|
|
219
|
+
size?: number | string;
|
|
220
|
+
maskBlur?: "sm" | "md" | "lg";
|
|
221
|
+
}) => {
|
|
222
|
+
return <AnimationLoader icon="icon-[svg-spinners--eclipse]" {...props} />;
|
|
173
223
|
};
|
|
174
224
|
|
|
225
|
+
/**
|
|
226
|
+
* A component that displays a skeleton loader with a placeholder for content.
|
|
227
|
+
* It can be customized with color and size properties.
|
|
228
|
+
* This component is typically used to indicate loading states in the cards, panels and virtual lists,
|
|
229
|
+
* providing a visual placeholder for content that is being loaded.
|
|
230
|
+
*
|
|
231
|
+
* @param {CssProp} props - The properties for the Skeleton component.
|
|
232
|
+
* @returns {JSX.Element} The rendered Skeleton component.
|
|
233
|
+
*
|
|
234
|
+
* @example
|
|
235
|
+
* ```jsx
|
|
236
|
+
* <Skeleton className="my-skeleton" />
|
|
237
|
+
* * // Renders a skeleton loader with a placeholder for content.
|
|
238
|
+
* ```
|
|
239
|
+
*
|
|
240
|
+
* @see {@link https://adarshpastakia.github.io/react-fabric/?path=/story/core-components-animations--docs} for more details.
|
|
241
|
+
*/
|
|
175
242
|
export const Skeleton = ({ className, ...rest }: CssProp) => {
|
|
176
243
|
return (
|
|
177
244
|
<div
|
|
178
245
|
className={classNames(className, "p-2 animate-pulse flex gap-2 max-w-lg")}
|
|
179
|
-
data-
|
|
246
|
+
data-ref="skeleton"
|
|
180
247
|
{...rest}
|
|
181
248
|
>
|
|
182
249
|
<div className="bg-tint-100 rounded aspect-square h-12" />
|
|
@@ -194,3 +261,23 @@ export const Skeleton = ({ className, ...rest }: CssProp) => {
|
|
|
194
261
|
</div>
|
|
195
262
|
);
|
|
196
263
|
};
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* A component that displays a loading animation with a top border.
|
|
267
|
+
* It is typically used to indicate that content is being loaded in pages and page sections.
|
|
268
|
+
*
|
|
269
|
+
* @returns {JSX.Element} The rendered Loading component.
|
|
270
|
+
*/
|
|
271
|
+
export const LoadingLine = () => {
|
|
272
|
+
return (
|
|
273
|
+
<div
|
|
274
|
+
className={classNames(
|
|
275
|
+
"fabric-loader",
|
|
276
|
+
"area-[loader] relative overflow-x-clip",
|
|
277
|
+
)}
|
|
278
|
+
data-ref="loading"
|
|
279
|
+
>
|
|
280
|
+
<div className="absolute z-10 py-px inset-x-0 top-0 after:h-0.5 after:block after:bg-primary-500" />
|
|
281
|
+
</div>
|
|
282
|
+
);
|
|
283
|
+
};
|
|
@@ -26,6 +26,7 @@ import BoringAvatar from "boring-avatars";
|
|
|
26
26
|
import classNames from "classnames";
|
|
27
27
|
import { useMemo, useState } from "react";
|
|
28
28
|
import {
|
|
29
|
+
type PaletteType,
|
|
29
30
|
type AriaProps,
|
|
30
31
|
type ColorType,
|
|
31
32
|
type CssProp,
|
|
@@ -33,8 +34,7 @@ import {
|
|
|
33
34
|
type SizeType,
|
|
34
35
|
type TestProps,
|
|
35
36
|
} from "../../types";
|
|
36
|
-
import {
|
|
37
|
-
import classes from "./Avatar.module.css";
|
|
37
|
+
import { getColor } from "../../utils";
|
|
38
38
|
|
|
39
39
|
export interface AvatarProps extends CssProp, AriaProps, TestProps, RefProp {
|
|
40
40
|
/**
|
|
@@ -56,11 +56,11 @@ export interface AvatarProps extends CssProp, AriaProps, TestProps, RefProp {
|
|
|
56
56
|
/**
|
|
57
57
|
* background color (CSS color / tailwind color)
|
|
58
58
|
*/
|
|
59
|
-
bg?: ColorType | string;
|
|
59
|
+
bg?: ColorType | PaletteType | string;
|
|
60
60
|
/**
|
|
61
61
|
* icon color (CSS color / tailwind color)
|
|
62
62
|
*/
|
|
63
|
-
color?: ColorType | string;
|
|
63
|
+
color?: ColorType | PaletteType | string;
|
|
64
64
|
/**
|
|
65
65
|
* icon size
|
|
66
66
|
*/
|
|
@@ -73,6 +73,10 @@ export interface AvatarProps extends CssProp, AriaProps, TestProps, RefProp {
|
|
|
73
73
|
* rounded icon
|
|
74
74
|
*/
|
|
75
75
|
rounded?: boolean;
|
|
76
|
+
/**
|
|
77
|
+
* prevent click default, useful when component is within a `a` link
|
|
78
|
+
*/
|
|
79
|
+
preventDefault?: boolean;
|
|
76
80
|
/**
|
|
77
81
|
* click handler
|
|
78
82
|
*/
|
|
@@ -88,7 +92,32 @@ const SizeMap: KeyValue<string> = {
|
|
|
88
92
|
};
|
|
89
93
|
|
|
90
94
|
/**
|
|
91
|
-
*
|
|
95
|
+
* A component that displays an avatar image or a fallback icon with customizable styles and properties.
|
|
96
|
+
* It supports various avatar types, including text-based avatars, and allows for customization of background color, icon color, size, and rounded corners.
|
|
97
|
+
* This component is useful for displaying user avatars in applications, providing a visual representation of users or entities.
|
|
98
|
+
* It can also handle cases where the avatar image fails to load by displaying a fallback icon or text.
|
|
99
|
+
* It uses the Boring Avatars library for generating fallback avatars based on the user's name.
|
|
100
|
+
*
|
|
101
|
+
* @param {AvatarProps} props - The properties for the Avatar component.
|
|
102
|
+
* @returns {JSX.Element} The rendered Avatar component.
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```jsx
|
|
106
|
+
* <Avatar
|
|
107
|
+
* name="John Doe"
|
|
108
|
+
* avatar="https://example.com/avatar.jpg"
|
|
109
|
+
* fallbackIcon="fas fa-user"
|
|
110
|
+
* bg="bg-blue-500"
|
|
111
|
+
* color="text-white"
|
|
112
|
+
* size="md"
|
|
113
|
+
* rounded
|
|
114
|
+
* variant="beam"
|
|
115
|
+
* onClick={() => console.log("Avatar clicked")}
|
|
116
|
+
* />
|
|
117
|
+
* ```
|
|
118
|
+
*
|
|
119
|
+
* @see {@link https://adarshpastakia.github.io/react-fabric/?path=/story/core-components-avatar--docs} for more details.
|
|
120
|
+
* @see {@link https://boringavatars.com/} for more information on Boring Avatars.
|
|
92
121
|
*/
|
|
93
122
|
export const Avatar = ({
|
|
94
123
|
ref,
|
|
@@ -102,12 +131,14 @@ export const Avatar = ({
|
|
|
102
131
|
variant = "beam",
|
|
103
132
|
className,
|
|
104
133
|
viewBox = "0 0 24 24",
|
|
134
|
+
preventDefault,
|
|
105
135
|
onClick,
|
|
106
136
|
...aria
|
|
107
137
|
}: AvatarProps) => {
|
|
108
138
|
const [fallback, setFallback] = useState(true);
|
|
109
139
|
|
|
110
|
-
|
|
140
|
+
// Memoize styles to avoid unnecessary recalculations
|
|
141
|
+
// and to ensure styles are only recalculated when dependencies change
|
|
111
142
|
const styles = useMemo(() => {
|
|
112
143
|
const s: KeyValue = {};
|
|
113
144
|
if (bg) {
|
|
@@ -125,7 +156,8 @@ export const Avatar = ({
|
|
|
125
156
|
return s;
|
|
126
157
|
}, [bg, color, size]);
|
|
127
158
|
|
|
128
|
-
|
|
159
|
+
// avatar image
|
|
160
|
+
// if avatar is not provided, fallback to icon or text
|
|
129
161
|
const avatarImage = useMemo(() => {
|
|
130
162
|
setFallback(!avatar);
|
|
131
163
|
return (
|
|
@@ -133,7 +165,7 @@ export const Avatar = ({
|
|
|
133
165
|
<div className="contents">
|
|
134
166
|
<div
|
|
135
167
|
className={classNames(
|
|
136
|
-
|
|
168
|
+
"fabric-imgPlaceholder",
|
|
137
169
|
"absolute inset-0 bg-gray animate-pulse",
|
|
138
170
|
)}
|
|
139
171
|
/>
|
|
@@ -149,10 +181,11 @@ export const Avatar = ({
|
|
|
149
181
|
);
|
|
150
182
|
}, [avatar]);
|
|
151
183
|
|
|
184
|
+
// render fallback icon or text
|
|
152
185
|
const fallbackAvatar = useMemo(() => {
|
|
153
186
|
if (fallbackIcon) {
|
|
154
187
|
return isSvgPath(fallbackIcon) ? (
|
|
155
|
-
<svg viewBox={viewBox}>
|
|
188
|
+
<svg viewBox={viewBox} className="p-[0.125em]">
|
|
156
189
|
<path fill="currentColor" d={fallbackIcon.toString()} />
|
|
157
190
|
</svg>
|
|
158
191
|
) : (
|
|
@@ -160,8 +193,9 @@ export const Avatar = ({
|
|
|
160
193
|
);
|
|
161
194
|
}
|
|
162
195
|
if (variant === "text") {
|
|
163
|
-
const [, first, second, group] =
|
|
164
|
-
|
|
196
|
+
const [, first, second, group] = name.match(
|
|
197
|
+
/(?=(\w).* (\w).*)|(?=(\w\w).*)/,
|
|
198
|
+
) as string[];
|
|
165
199
|
return (
|
|
166
200
|
<svg role="img">
|
|
167
201
|
<text
|
|
@@ -177,6 +211,7 @@ export const Avatar = ({
|
|
|
177
211
|
</svg>
|
|
178
212
|
);
|
|
179
213
|
}
|
|
214
|
+
// Fallback to BoringAvatar
|
|
180
215
|
return <BoringAvatar square size={64} variant={variant} name={name} />;
|
|
181
216
|
}, [name, variant, fallbackIcon]);
|
|
182
217
|
|
|
@@ -184,15 +219,16 @@ export const Avatar = ({
|
|
|
184
219
|
<dfn
|
|
185
220
|
role="presentation"
|
|
186
221
|
className={classNames(
|
|
187
|
-
|
|
222
|
+
"fabric-avatar",
|
|
188
223
|
className,
|
|
189
224
|
"select-none relative overflow-hidden inline-block box-content leading-none not-italic text-center",
|
|
190
|
-
bg && getBgClass(bg),
|
|
191
|
-
color && getColorClass(color),
|
|
192
225
|
!rounded && "rounded",
|
|
193
226
|
rounded && "rounded-full",
|
|
194
227
|
)}
|
|
195
|
-
onClick={
|
|
228
|
+
onClick={(e) => {
|
|
229
|
+
preventDefault && e.preventDefault();
|
|
230
|
+
onClick?.(e);
|
|
231
|
+
}}
|
|
196
232
|
style={styles}
|
|
197
233
|
data-clickable={!!onClick}
|
|
198
234
|
ref={ref}
|
|
@@ -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>
|