@react-fabric/core 1.0.0-beta.9 → 1.0.2
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/css/components/_animations.css +52 -0
- package/css/components/_avatar.css +89 -0
- package/css/components/_button.css +218 -0
- package/css/components/_buttonGroup.css +62 -0
- package/css/components/_callout.css +32 -0
- package/css/components/_card.css +167 -0
- package/css/components/_chip.css +125 -0
- package/css/components/_collapsable.css +32 -0
- package/{src/overlays/message/Message.module.css → css/components/_divider.css} +11 -10
- package/{src/components/dropdown/Dropdown.module.css → css/components/_dropdown.css} +3 -2
- package/{src/overlays/flyout/Flyout.module.css → css/components/_flyout.css} +15 -9
- package/css/components/_media.css +102 -0
- package/{src/components/menu/Menu.module.css → css/components/_menu.css} +21 -20
- package/{src/components/meter/Meter.module.css → css/components/_meter.css} +15 -20
- package/{src/overlays/modal/Modal.module.css → css/components/_modal.css} +9 -9
- package/{src/components/panel/Panel.module.css → css/components/_panel.css} +19 -19
- package/{src/components/progress/Progress.module.css → css/components/_progress.css} +7 -10
- package/css/components/_sonner.css +431 -0
- package/{src/components/tabpanel/TabPanel.module.css → css/components/_tabPanel.css} +125 -85
- package/css/components/_titlebar.css +48 -0
- package/css/components/index.css +47 -0
- package/css/core/_aside.css +176 -0
- package/css/core/_content.css +31 -0
- package/css/core/_errorboundary.css +55 -0
- package/css/core/_responsive.css +45 -0
- package/css/core/_typography.css +69 -0
- package/css/core/_viewport.css +33 -0
- package/{src/hooks/useClientService.tsx → css/core/index.css} +7 -7
- package/css/reset/_gradients.css +36 -33
- package/css/reset/_reset.css +206 -300
- package/css/reset/_text.css +31 -61
- package/css/reset/_theme.css +467 -81
- package/css/reset/index.css +23 -21
- package/css/styles.css +30 -23
- package/css/theme/_colors.css +445 -0
- package/css/theme/_utilities.css +528 -0
- package/css/theme/_variants.css +128 -0
- package/css/theme/index.css +55 -0
- package/dist/cjs/components/actionLabel/ActionLabel.js +25 -12
- package/dist/cjs/{overlays → components}/alert/Alert.js +76 -53
- package/dist/cjs/components/animations/Indicator.js +66 -0
- package/dist/cjs/components/animations/Loader.js +77 -0
- package/dist/cjs/components/animations/LoadingBars.js +37 -0
- package/dist/cjs/components/animations/LoadingLine.js +59 -0
- package/dist/cjs/components/animations/LoadingSpinner.js +37 -0
- package/dist/cjs/components/animations/Skeleton.js +88 -0
- package/dist/cjs/components/avatar/Avatar.js +41 -20
- package/dist/cjs/components/avatar/AvatarGroup.js +37 -16
- package/dist/cjs/components/badge/Badge.js +90 -68
- package/dist/cjs/components/button/Button.js +198 -136
- package/dist/cjs/components/button/ButtonGroup.js +86 -21
- package/dist/cjs/components/button/ConfirmButton.js +55 -41
- package/dist/cjs/components/button/ToggleButtonGroup.js +84 -32
- package/dist/cjs/components/callout/Callout.js +56 -25
- package/dist/cjs/components/card/Card.js +90 -42
- package/dist/cjs/components/card/CardCover.js +38 -27
- package/dist/cjs/components/card/FlipContent.js +47 -0
- package/dist/cjs/components/chip/Chip.js +80 -37
- package/dist/cjs/components/collapsable/Collapsable.js +62 -31
- package/dist/cjs/components/divider/Divider.js +58 -24
- package/dist/cjs/components/dropdown/Dropdown.js +92 -45
- package/dist/cjs/components/dropdown/DropdownTool.js +6 -7
- package/dist/cjs/components/effect/GlassEffect.js +259 -0
- package/dist/cjs/components/effect/MatteEffect.js +127 -0
- package/dist/cjs/components/effect/StyleEffect.js +43 -0
- package/dist/cjs/components/empty/EmptyContent.js +37 -49
- package/dist/cjs/components/flyout/Flyout.js +170 -0
- package/dist/cjs/components/hotkey/HotKey.js +42 -0
- package/dist/cjs/components/icon/Icon.js +81 -80
- package/dist/cjs/components/media/Media.js +154 -77
- package/dist/cjs/components/menu/ContextMenu.js +45 -20
- package/dist/cjs/components/menu/Menu.js +98 -38
- package/dist/cjs/components/menu/MenuItem.js +102 -74
- package/dist/cjs/components/meter/Meter.js +35 -12
- package/dist/cjs/components/modal/Modal.js +152 -0
- package/dist/cjs/components/navigator/Navigator.js +81 -36
- package/dist/cjs/components/panel/Panel.js +115 -60
- package/dist/cjs/components/panel/PanelGroup.js +42 -16
- package/dist/cjs/components/panel/PanelStack.js +47 -16
- package/dist/cjs/components/pillbox/Pillbox.js +118 -0
- package/dist/cjs/components/progress/ProgressBar.js +30 -14
- package/dist/cjs/components/progress/ProgressCircle.js +27 -11
- package/dist/cjs/components/tabpanel/Tab.js +53 -37
- package/dist/cjs/components/tabpanel/TabPanel.js +74 -28
- package/dist/cjs/components/titlebar/Titlebar.js +52 -0
- package/dist/cjs/components/tooltip/Tooltip.js +180 -0
- package/dist/cjs/context/Global.js +159 -80
- package/dist/cjs/context/ModalManager.js +60 -0
- package/dist/cjs/context/context.js +43 -0
- package/dist/cjs/core/areaToggle/AreaToggle.js +41 -0
- package/dist/cjs/core/aside/Aside.js +178 -83
- package/dist/cjs/core/boundary/ErrorBoundary.js +37 -34
- package/dist/cjs/core/boundary/ErrorIcon.js +32 -19
- package/dist/cjs/core/content/Content.js +26 -37
- package/dist/cjs/core/headfoot/HeadFoot.js +133 -35
- package/dist/cjs/core/layout/Layout.js +28 -0
- package/dist/cjs/core/responsive/Responsive.js +62 -26
- package/dist/cjs/core/theme/ThemeProvider.js +35 -41
- package/dist/cjs/core/viewport/Viewport.js +26 -22
- package/dist/cjs/hooks/useClientService.js +39 -18
- package/dist/cjs/hooks/useContextMenu.js +103 -0
- package/dist/cjs/hooks/useControlledValue.js +13 -7
- package/dist/cjs/hooks/useDebounce.js +37 -21
- package/dist/cjs/hooks/useEffectDebugger.js +79 -60
- package/dist/cjs/hooks/useIsDark.js +34 -26
- package/dist/cjs/hooks/useIsRtl.js +13 -3
- package/dist/cjs/hooks/useNavigator.js +12 -9
- package/dist/cjs/hooks/useNotificationService.js +199 -0
- package/dist/cjs/hooks/useOverlayService.js +82 -41
- package/dist/cjs/hooks/usePropState.js +41 -0
- package/dist/cjs/hooks/usePropToggle.js +32 -26
- package/dist/cjs/hooks/useResize.js +47 -38
- package/dist/cjs/hooks/useResizeObserver.js +26 -7
- package/dist/cjs/hooks/useStorage.js +29 -16
- package/dist/cjs/i18n/index.js +25 -23
- package/dist/cjs/index.js +142 -94
- package/dist/cjs/typography/Abbr.js +43 -20
- package/dist/cjs/typography/Anchor.js +39 -0
- package/dist/cjs/typography/Copy.js +28 -28
- package/dist/cjs/typography/Kbd.js +43 -0
- package/dist/cjs/typography/Mark.js +34 -17
- package/dist/cjs/typography/Text.js +36 -54
- package/dist/cjs/typography/Title.js +17 -40
- package/dist/cjs/utils/calculateDimensions.js +38 -23
- package/dist/cjs/utils/cloneElement.js +64 -0
- package/dist/cjs/{core/section/Section.js → utils/getBadgeProps.js} +25 -21
- package/dist/cjs/utils/getColor.js +42 -36
- package/dist/cjs/utils/getIconProps.js +63 -0
- package/dist/cjs/utils/getTooltipProps.js +66 -0
- package/dist/cjs/utils/nodeCheck.js +4 -4
- package/dist/esm/components/actionLabel/ActionLabel.js +25 -12
- package/dist/esm/{overlays → components}/alert/Alert.js +73 -50
- package/dist/esm/components/animations/Indicator.js +66 -0
- package/dist/esm/components/animations/Loader.js +77 -0
- package/dist/esm/components/animations/LoadingBars.js +37 -0
- package/dist/esm/components/animations/LoadingLine.js +59 -0
- package/dist/esm/components/animations/LoadingSpinner.js +37 -0
- package/dist/esm/components/animations/Skeleton.js +88 -0
- package/dist/esm/components/avatar/Avatar.js +42 -21
- package/dist/esm/components/avatar/AvatarGroup.js +37 -16
- package/dist/esm/components/badge/Badge.js +93 -70
- package/dist/esm/components/button/Button.js +199 -137
- package/dist/esm/components/button/ButtonGroup.js +87 -22
- package/dist/esm/components/button/ConfirmButton.js +58 -44
- package/dist/esm/components/button/ToggleButtonGroup.js +86 -34
- package/dist/esm/components/callout/Callout.js +56 -25
- package/dist/esm/components/card/Card.js +92 -44
- package/dist/esm/components/card/CardCover.js +38 -27
- package/dist/esm/components/card/FlipContent.js +47 -0
- package/dist/esm/components/chip/Chip.js +81 -38
- package/dist/esm/components/collapsable/Collapsable.js +63 -32
- package/dist/esm/components/divider/Divider.js +59 -25
- package/dist/esm/components/dropdown/Dropdown.js +95 -48
- package/dist/esm/components/dropdown/DropdownTool.js +6 -7
- package/dist/esm/components/effect/GlassEffect.js +259 -0
- package/dist/esm/components/effect/MatteEffect.js +127 -0
- package/dist/esm/components/effect/StyleEffect.js +43 -0
- package/dist/esm/components/empty/EmptyContent.js +38 -50
- package/dist/esm/components/flyout/Flyout.js +170 -0
- package/dist/esm/components/hotkey/HotKey.js +42 -0
- package/dist/esm/components/icon/Icon.js +83 -82
- package/dist/esm/components/media/Media.js +156 -79
- package/dist/esm/components/menu/ContextMenu.js +46 -21
- package/dist/esm/components/menu/Menu.js +101 -41
- package/dist/esm/components/menu/MenuItem.js +98 -70
- package/dist/esm/components/meter/Meter.js +36 -13
- package/dist/esm/components/modal/Modal.js +152 -0
- package/dist/esm/components/navigator/Navigator.js +81 -36
- package/dist/esm/components/panel/Panel.js +117 -62
- package/dist/esm/components/panel/PanelGroup.js +43 -17
- package/dist/esm/components/panel/PanelStack.js +48 -17
- package/dist/esm/components/pillbox/Pillbox.js +118 -0
- package/dist/esm/components/progress/ProgressBar.js +31 -15
- package/dist/esm/components/progress/ProgressCircle.js +28 -12
- package/dist/esm/components/tabpanel/Tab.js +54 -38
- package/dist/esm/components/tabpanel/TabPanel.js +75 -29
- package/dist/esm/components/titlebar/Titlebar.js +52 -0
- package/dist/esm/components/tooltip/Tooltip.js +180 -0
- package/dist/esm/context/Global.js +161 -78
- package/dist/esm/context/ModalManager.js +60 -0
- package/dist/esm/context/context.js +40 -0
- package/dist/esm/core/areaToggle/AreaToggle.js +41 -0
- package/dist/esm/core/aside/Aside.js +179 -84
- package/dist/esm/core/boundary/ErrorBoundary.js +38 -35
- package/dist/esm/core/boundary/ErrorIcon.js +32 -19
- package/dist/esm/core/content/Content.js +26 -37
- package/dist/esm/core/headfoot/HeadFoot.js +134 -36
- package/dist/esm/core/layout/Layout.js +28 -0
- package/dist/esm/core/responsive/Responsive.js +62 -26
- package/dist/esm/core/theme/ThemeProvider.js +36 -42
- package/dist/esm/core/viewport/Viewport.js +26 -22
- package/dist/esm/hooks/useClientService.js +39 -18
- package/dist/esm/hooks/useContextMenu.js +103 -0
- package/dist/esm/hooks/useControlledValue.js +14 -8
- package/dist/esm/hooks/useDebounce.js +37 -21
- package/dist/esm/hooks/useEffectDebugger.js +81 -62
- package/dist/esm/hooks/useIsDark.js +34 -26
- package/dist/esm/hooks/useIsRtl.js +13 -3
- package/dist/esm/hooks/useNavigator.js +13 -10
- package/dist/esm/hooks/useNotificationService.js +199 -0
- package/dist/esm/hooks/useOverlayService.js +83 -42
- package/dist/esm/hooks/usePropState.js +40 -0
- package/dist/esm/hooks/usePropToggle.js +33 -27
- package/dist/esm/hooks/useResize.js +48 -39
- package/dist/esm/hooks/useResizeObserver.js +27 -8
- package/dist/esm/hooks/useStorage.js +30 -17
- package/dist/esm/i18n/index.js +23 -21
- package/dist/esm/index.js +87 -44
- package/dist/esm/typography/Abbr.js +45 -22
- package/dist/esm/typography/Anchor.js +39 -0
- package/dist/esm/typography/Copy.js +28 -28
- package/dist/esm/typography/Kbd.js +43 -0
- package/dist/esm/typography/Mark.js +35 -18
- package/dist/esm/typography/Text.js +39 -57
- package/dist/esm/typography/Title.js +17 -40
- package/dist/esm/utils/calculateDimensions.js +38 -23
- package/dist/esm/utils/cloneElement.js +64 -0
- package/dist/esm/{core/section/Section.js → utils/getBadgeProps.js} +25 -21
- package/dist/esm/utils/getColor.js +43 -34
- package/dist/esm/utils/getIconProps.js +63 -0
- package/dist/esm/utils/getTooltipProps.js +66 -0
- package/dist/esm/utils/nodeCheck.js +4 -4
- package/dist/types/components/actionLabel/ActionLabel.d.ts +20 -7
- package/dist/types/components/alert/Alert.d.ts +74 -0
- package/dist/types/components/animations/Indicator.d.ts +57 -0
- package/dist/types/components/animations/Loader.d.ts +65 -0
- package/dist/types/components/animations/LoadingBars.d.ts +61 -0
- package/dist/types/components/animations/LoadingLine.d.ts +43 -0
- package/dist/types/components/animations/LoadingSpinner.d.ts +61 -0
- package/dist/types/components/animations/Skeleton.d.ts +61 -0
- package/dist/types/components/avatar/Avatar.d.ts +70 -19
- package/dist/types/components/avatar/AvatarGroup.d.ts +51 -14
- package/dist/types/components/badge/Badge.d.ts +64 -14
- package/dist/types/components/button/Button.d.ts +72 -55
- package/dist/types/components/button/ButtonGroup.d.ts +86 -24
- package/dist/types/components/button/ConfirmButton.d.ts +21 -7
- package/dist/types/components/button/ToggleButtonGroup.d.ts +88 -44
- package/dist/types/components/callout/Callout.d.ts +58 -7
- package/dist/types/components/card/Card.d.ts +66 -25
- package/dist/types/components/card/CardCover.d.ts +52 -7
- package/dist/types/components/card/FlipContent.d.ts +50 -0
- package/dist/types/components/chip/Chip.d.ts +72 -20
- package/dist/types/components/collapsable/Collapsable.d.ts +55 -15
- package/dist/types/components/divider/Divider.d.ts +25 -8
- package/dist/types/components/dropdown/Dropdown.d.ts +42 -9
- package/dist/types/components/dropdown/DropdownTool.d.ts +22 -4
- package/dist/types/components/effect/GlassEffect.d.ts +5 -0
- package/dist/types/components/effect/MatteEffect.d.ts +40 -0
- package/dist/types/components/effect/StyleEffect.d.ts +27 -0
- package/dist/types/components/empty/EmptyContent.d.ts +53 -9
- package/dist/types/components/flyout/Flyout.d.ts +60 -0
- package/dist/types/components/hotkey/HotKey.d.ts +41 -0
- package/dist/types/components/icon/Icon.d.ts +74 -24
- package/dist/types/components/media/Media.d.ts +72 -4
- package/dist/types/components/menu/ContextMenu.d.ts +22 -5
- package/dist/types/components/menu/Menu.d.ts +26 -2
- package/dist/types/components/menu/MenuItem.d.ts +19 -4
- package/dist/types/components/menu/types.d.ts +23 -14
- package/dist/types/components/meter/Meter.d.ts +23 -3
- package/dist/types/components/modal/Modal.d.ts +52 -0
- package/dist/types/components/navigator/Navigator.d.ts +30 -4
- package/dist/types/components/panel/Panel.d.ts +43 -23
- package/dist/types/components/panel/PanelGroup.d.ts +22 -3
- package/dist/types/components/panel/PanelStack.d.ts +28 -2
- package/dist/types/components/pillbox/Pillbox.d.ts +95 -0
- package/dist/types/components/progress/ProgressBar.d.ts +19 -4
- package/dist/types/components/progress/ProgressCircle.d.ts +18 -4
- package/dist/types/components/tabpanel/Tab.d.ts +42 -10
- package/dist/types/components/tabpanel/TabPanel.d.ts +47 -7
- package/dist/types/components/titlebar/Titlebar.d.ts +54 -0
- package/dist/types/components/tooltip/Tooltip.d.ts +76 -0
- package/dist/types/context/Global.d.ts +39 -69
- package/dist/types/context/ModalManager.d.ts +30 -0
- package/dist/types/context/context.d.ts +107 -0
- package/dist/types/core/areaToggle/AreaToggle.d.ts +33 -0
- package/dist/types/core/aside/Aside.d.ts +75 -20
- package/dist/types/core/boundary/ErrorBoundary.d.ts +43 -4
- package/dist/types/core/boundary/ErrorIcon.d.ts +38 -1
- package/dist/types/core/content/Content.d.ts +38 -6
- package/dist/types/core/headfoot/HeadFoot.d.ts +48 -14
- package/dist/types/core/layout/Layout.d.ts +38 -0
- package/dist/types/core/responsive/Responsive.d.ts +45 -15
- package/dist/types/core/theme/ThemeProvider.d.ts +35 -11
- package/dist/types/core/viewport/Viewport.d.ts +27 -3
- package/dist/types/hooks/useClientService.d.ts +43 -1
- package/dist/types/hooks/useContextMenu.d.ts +10 -0
- package/dist/types/hooks/useControlledValue.d.ts +28 -4
- package/dist/types/hooks/useDebounce.d.ts +38 -2
- package/dist/types/hooks/useEffectDebugger.d.ts +73 -4
- package/dist/types/hooks/useIsDark.d.ts +6 -0
- package/dist/types/hooks/useIsRtl.d.ts +35 -1
- package/dist/types/hooks/useNavigator.d.ts +37 -2
- package/dist/types/hooks/useNotificationService.d.ts +60 -0
- package/dist/types/hooks/useOverlayService.d.ts +28 -8
- package/dist/types/hooks/usePropState.d.ts +26 -0
- package/dist/types/hooks/usePropToggle.d.ts +41 -7
- package/dist/types/hooks/useResize.d.ts +46 -4
- package/dist/types/hooks/useResizeObserver.d.ts +45 -3
- package/dist/types/hooks/useStorage.d.ts +32 -2
- package/dist/types/i18n/index.d.ts +27 -3
- package/dist/types/index.d.ts +106 -18
- package/dist/types/types/colors.d.ts +29 -0
- package/dist/types/types/index.d.ts +216 -76
- package/dist/types/typography/Abbr.d.ts +51 -6
- package/dist/types/typography/Anchor.d.ts +41 -0
- package/dist/types/typography/Copy.d.ts +36 -2
- package/dist/types/typography/Kbd.d.ts +40 -0
- package/dist/types/typography/Mark.d.ts +44 -7
- package/dist/types/typography/Text.d.ts +40 -24
- package/dist/types/typography/Title.d.ts +37 -26
- package/dist/types/typography/types.d.ts +32 -0
- package/dist/types/utils/calculateDimensions.d.ts +50 -6
- package/dist/types/utils/cloneElement.d.ts +41 -0
- package/dist/types/utils/getBadgeProps.d.ts +16 -0
- package/dist/types/utils/getColor.d.ts +43 -4
- package/dist/types/utils/getIconProps.d.ts +45 -0
- package/dist/types/utils/getTooltipProps.d.ts +47 -0
- package/dist/types/utils/index.d.ts +28 -0
- package/dist/types/utils/nodeCheck.d.ts +1 -2
- package/package.json +30 -21
- package/src/components/actionLabel/ActionLabel.tsx +28 -39
- package/src/components/alert/Alert.tsx +261 -0
- package/src/components/animations/Indicator.tsx +75 -0
- package/src/components/animations/Loader.tsx +89 -0
- package/src/components/animations/LoadingBars.tsx +70 -0
- package/src/components/animations/LoadingLine.tsx +51 -0
- package/src/components/animations/LoadingSpinner.tsx +70 -0
- package/src/components/animations/Skeleton.tsx +100 -0
- package/src/components/avatar/Avatar.tsx +89 -70
- package/src/components/avatar/AvatarGroup.tsx +65 -74
- package/src/components/badge/Badge.tsx +141 -108
- package/src/components/button/Button.tsx +223 -238
- package/src/components/button/ButtonGroup.tsx +117 -77
- package/src/components/button/ConfirmButton.tsx +60 -90
- package/src/components/button/ToggleButtonGroup.tsx +134 -120
- package/src/components/callout/Callout.tsx +81 -59
- package/src/components/card/Card.tsx +131 -113
- package/src/components/card/CardCover.tsx +61 -61
- package/src/components/card/FlipContent.tsx +78 -0
- package/src/components/chip/Chip.tsx +139 -99
- package/src/components/collapsable/Collapsable.tsx +79 -77
- package/src/components/divider/Divider.tsx +74 -53
- package/src/components/dropdown/Dropdown.tsx +109 -106
- package/src/components/dropdown/DropdownTool.tsx +29 -12
- package/src/components/effect/GlassEffect.tsx +221 -0
- package/src/components/effect/MatteEffect.tsx +99 -0
- package/src/components/effect/StyleEffect.tsx +36 -0
- package/src/components/empty/EmptyContent.tsx +60 -99
- package/src/components/flyout/Flyout.tsx +257 -0
- package/src/components/hotkey/HotKey.tsx +57 -0
- package/src/components/icon/Icon.tsx +131 -130
- package/src/components/media/Media.tsx +184 -154
- package/src/components/menu/ContextMenu.tsx +56 -39
- package/src/components/menu/Menu.tsx +121 -84
- package/src/components/menu/MenuItem.tsx +87 -69
- package/src/components/menu/types.ts +23 -28
- package/src/components/meter/Meter.tsx +34 -17
- package/src/components/modal/Modal.tsx +226 -0
- package/src/components/navigator/Navigator.tsx +93 -38
- package/src/components/panel/Panel.tsx +123 -131
- package/src/components/panel/PanelGroup.tsx +49 -43
- package/src/components/panel/PanelStack.tsx +63 -62
- package/src/components/pillbox/Pillbox.tsx +208 -0
- package/src/components/progress/ProgressBar.tsx +33 -33
- package/src/components/progress/ProgressCircle.tsx +29 -37
- package/src/components/tabpanel/Tab.tsx +84 -73
- package/src/components/tabpanel/TabPanel.tsx +102 -51
- package/src/components/titlebar/Titlebar.tsx +115 -0
- package/src/components/tooltip/Tooltip.tsx +255 -0
- package/src/context/Global.tsx +148 -148
- package/src/context/ModalManager.tsx +68 -0
- package/src/context/context.ts +111 -0
- package/src/core/areaToggle/AreaToggle.tsx +45 -0
- package/src/core/aside/Aside.tsx +200 -155
- package/src/core/boundary/ErrorBoundary.tsx +50 -68
- package/src/core/boundary/ErrorIcon.tsx +34 -32
- package/src/core/content/Content.tsx +41 -50
- package/src/core/headfoot/HeadFoot.tsx +162 -81
- package/src/core/layout/Layout.tsx +54 -0
- package/src/core/responsive/Responsive.tsx +91 -98
- package/src/core/theme/ThemeProvider.tsx +45 -56
- package/src/core/viewport/Viewport.tsx +25 -27
- package/src/hooks/useClientService.ts +47 -0
- package/src/hooks/useContextMenu.tsx +131 -0
- package/src/hooks/useControlledValue.ts +47 -0
- package/src/hooks/useDebounce.ts +41 -24
- package/src/hooks/useEffectDebugger.ts +105 -94
- package/src/hooks/useIsDark.ts +10 -24
- package/src/hooks/useIsRtl.ts +32 -20
- package/src/hooks/useNavigator.tsx +41 -26
- package/src/hooks/useNotificationService.tsx +239 -0
- package/src/hooks/useOverlayService.tsx +67 -20
- package/src/hooks/usePropState.ts +52 -0
- package/src/hooks/usePropToggle.ts +54 -47
- package/src/hooks/useResize.ts +69 -45
- package/src/hooks/useResizeObserver.ts +59 -34
- package/src/hooks/useStorage.ts +40 -48
- package/src/i18n/index.ts +24 -25
- package/src/index.ts +115 -44
- package/src/types/colors.ts +49 -0
- package/src/types/global.d.ts +40 -17
- package/src/types/index.ts +243 -155
- package/src/typography/Abbr.tsx +62 -59
- package/src/typography/Anchor.tsx +63 -0
- package/src/typography/Copy.tsx +39 -29
- package/src/typography/Kbd.tsx +50 -0
- package/src/typography/Mark.tsx +56 -51
- package/src/typography/Text.tsx +57 -128
- package/src/typography/Title.tsx +36 -108
- package/src/typography/types.ts +27 -17
- package/src/utils/calculateDimensions.ts +50 -40
- package/src/utils/cloneElement.ts +61 -0
- package/src/{core/content/Content.module.css → utils/getBadgeProps.ts} +20 -15
- package/src/utils/getColor.ts +42 -36
- package/src/utils/getIconProps.ts +58 -0
- package/src/utils/getTooltipProps.ts +59 -0
- package/src/utils/index.ts +23 -17
- package/src/utils/nodeCheck.ts +4 -8
- 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.js +0 -142
- 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.js +0 -71
- 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/context/NotificationCenter.js +0 -254
- 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.js +0 -66
- 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/hotkeys/HotKey.js +0 -47
- package/dist/cjs/hotkeys/HotKeyLabel.js +0 -52
- package/dist/cjs/hotkeys/HotKeyWrapper.js +0 -98
- package/dist/cjs/hotkeys/commons.js +0 -56
- package/dist/cjs/overlays/alert/Alert.module.css +0 -1
- package/dist/cjs/overlays/flyout/Flyout.js +0 -152
- package/dist/cjs/overlays/flyout/Flyout.module.css +0 -1
- package/dist/cjs/overlays/message/Message.js +0 -84
- package/dist/cjs/overlays/message/Message.module.css +0 -1
- package/dist/cjs/overlays/modal/Modal.js +0 -132
- package/dist/cjs/overlays/modal/Modal.module.css +0 -1
- package/dist/cjs/overlays/toast/Toast.js +0 -166
- package/dist/cjs/overlays/toast/Toast.module.css +0 -1
- package/dist/cjs/overlays/tooltip/Tooltip.js +0 -133
- package/dist/cjs/overlays/tooltip/Tooltip.module.css +0 -1
- package/dist/cjs/types/icons.js +0 -200
- package/dist/cjs/typography/Link.js +0 -55
- package/dist/cjs/typography/Typography.module.css +0 -1
- package/dist/cjs/typography/types.js +0 -42
- package/dist/esm/components/actionLabel/ActionLabel.module.css +0 -1
- package/dist/esm/components/animations/Animations.js +0 -138
- 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.js +0 -71
- 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/context/NotificationCenter.js +0 -254
- 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.js +0 -66
- 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/hotkeys/HotKey.js +0 -47
- package/dist/esm/hotkeys/HotKeyLabel.js +0 -52
- package/dist/esm/hotkeys/HotKeyWrapper.js +0 -96
- package/dist/esm/hotkeys/commons.js +0 -56
- package/dist/esm/overlays/alert/Alert.module.css +0 -1
- package/dist/esm/overlays/flyout/Flyout.js +0 -152
- package/dist/esm/overlays/flyout/Flyout.module.css +0 -1
- package/dist/esm/overlays/message/Message.js +0 -84
- package/dist/esm/overlays/message/Message.module.css +0 -1
- package/dist/esm/overlays/modal/Modal.js +0 -132
- package/dist/esm/overlays/modal/Modal.module.css +0 -1
- package/dist/esm/overlays/toast/Toast.js +0 -166
- package/dist/esm/overlays/toast/Toast.module.css +0 -1
- package/dist/esm/overlays/tooltip/Tooltip.js +0 -132
- package/dist/esm/overlays/tooltip/Tooltip.module.css +0 -1
- package/dist/esm/types/icons.js +0 -202
- package/dist/esm/typography/Link.js +0 -55
- package/dist/esm/typography/Typography.module.css +0 -1
- package/dist/esm/typography/types.js +0 -41
- package/dist/types/components/animations/Animations.d.ts +0 -23
- package/dist/types/components/breadcrumbs/Breadcrumbs.d.ts +0 -17
- package/dist/types/components/index.d.ts +0 -33
- package/dist/types/context/NotificationCenter.d.ts +0 -11
- package/dist/types/core/index.d.ts +0 -9
- package/dist/types/core/page/Page.d.ts +0 -23
- package/dist/types/core/section/Section.d.ts +0 -7
- package/dist/types/hotkeys/HotKey.d.ts +0 -2
- package/dist/types/hotkeys/HotKeyLabel.d.ts +0 -2
- package/dist/types/hotkeys/HotKeyWrapper.d.ts +0 -11
- package/dist/types/hotkeys/commons.d.ts +0 -28
- package/dist/types/overlays/alert/Alert.d.ts +0 -41
- package/dist/types/overlays/flyout/Flyout.d.ts +0 -57
- package/dist/types/overlays/index.d.ts +0 -6
- package/dist/types/overlays/message/Message.d.ts +0 -21
- package/dist/types/overlays/modal/Modal.d.ts +0 -53
- package/dist/types/overlays/toast/Toast.d.ts +0 -33
- package/dist/types/overlays/tooltip/Tooltip.d.ts +0 -18
- package/dist/types/types/icons.d.ts +0 -197
- package/dist/types/typography/Link.d.ts +0 -25
- package/dist/types/typography/index.d.ts +0 -6
- package/src/components/animations/Animations.module.css +0 -253
- package/src/components/animations/Animations.tsx +0 -196
- package/src/components/avatar/Avatar.module.css +0 -90
- package/src/components/badge/Badge.module.css +0 -165
- package/src/components/breadcrumbs/Breadcrumbs.module.css +0 -189
- package/src/components/breadcrumbs/Breadcrumbs.tsx +0 -109
- package/src/components/button/Button.module.css +0 -375
- package/src/components/card/Card.module.css +0 -152
- package/src/components/chip/Chip.module.css +0 -118
- package/src/components/collapsable/Collapsable.module.css +0 -30
- package/src/components/icon/Icon.module.css +0 -71
- package/src/components/index.ts +0 -62
- package/src/components/media/Media.module.css +0 -112
- package/src/context/NotificationCenter.tsx +0 -223
- package/src/core/aside/Aside.module.css +0 -231
- package/src/core/boundary/ErrorBoundary.module.css +0 -65
- package/src/core/headfoot/HeadFoot.module.css +0 -38
- package/src/core/index.ts +0 -32
- package/src/core/page/Page.module.css +0 -46
- package/src/core/page/Page.tsx +0 -101
- package/src/core/responsive/Responsive.module.css +0 -85
- package/src/core/section/Section.module.css +0 -28
- package/src/core/section/Section.tsx +0 -54
- package/src/core/theme/Theme.module.css +0 -30
- package/src/core/viewport/Viewport.module.css +0 -32
- package/src/hooks/useControlledValue.tsx +0 -43
- package/src/hotkeys/HotKey.tsx +0 -39
- package/src/hotkeys/HotKeyLabel.tsx +0 -61
- package/src/hotkeys/HotKeyWrapper.tsx +0 -137
- package/src/hotkeys/commons.ts +0 -74
- package/src/overlays/alert/Alert.tsx +0 -252
- package/src/overlays/flyout/Flyout.tsx +0 -283
- package/src/overlays/index.ts +0 -29
- package/src/overlays/message/Message.tsx +0 -107
- package/src/overlays/modal/Modal.tsx +0 -244
- package/src/overlays/toast/Toast.module.css +0 -37
- package/src/overlays/toast/Toast.tsx +0 -216
- package/src/overlays/tooltip/Tooltip.module.css +0 -53
- package/src/overlays/tooltip/Tooltip.tsx +0 -200
- package/src/types/icons.ts +0 -426
- package/src/typography/Link.tsx +0 -113
- package/src/typography/Typography.module.css +0 -68
- package/src/typography/index.ts +0 -29
- /package/dist/cjs/i18n/{ar.json.js → ar/core.json.js} +0 -0
- /package/dist/cjs/i18n/{en.json.js → en/core.json.js} +0 -0
- /package/dist/esm/i18n/{ar.json.js → ar/core.json.js} +0 -0
- /package/dist/esm/i18n/{en.json.js → en/core.json.js} +0 -0
- /package/src/i18n/{ar.json → ar/core.json} +0 -0
- /package/src/i18n/{en.json → en/core.json} +0 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
4
|
+
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
5
|
+
import { Icon as Icon$1 } from '@iconify-icon/react';
|
|
6
|
+
import { shortHash } from '@react-fabric/utilities';
|
|
7
|
+
import { Icon } from '../icon/Icon.js';
|
|
8
|
+
import { jsx } from 'react/jsx-runtime';
|
|
9
|
+
|
|
10
|
+
var _excluded = ["type"];
|
|
11
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
12
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
13
|
+
var ANIMATION_ICONS = {
|
|
14
|
+
info: /*#__PURE__*/jsx(Icon$1, {
|
|
15
|
+
icon: "line-md:alert-circle",
|
|
16
|
+
className: "rotate-180"
|
|
17
|
+
}),
|
|
18
|
+
// <AlertCircleIcon height="1.25em" width="1.25em" className="rotate-180" />,
|
|
19
|
+
check: /*#__PURE__*/jsx(Icon$1, {
|
|
20
|
+
icon: "line-md:confirm-circle"
|
|
21
|
+
}),
|
|
22
|
+
cross: /*#__PURE__*/jsx(Icon$1, {
|
|
23
|
+
icon: "line-md:close-circle"
|
|
24
|
+
}),
|
|
25
|
+
question: /*#__PURE__*/jsx(Icon$1, {
|
|
26
|
+
icon: "line-md:question-circle"
|
|
27
|
+
}),
|
|
28
|
+
exclaim: /*#__PURE__*/jsx(Icon$1, {
|
|
29
|
+
icon: "line-md:alert-circle"
|
|
30
|
+
})
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Animated status indicator that renders a themed icon with animation.
|
|
35
|
+
*
|
|
36
|
+
* Renders one of five predefined icon types (check, cross, question, exclaim, info)
|
|
37
|
+
* using the `Icon` component. Useful for displaying success, error, help, alert,
|
|
38
|
+
* or info states in forms, notifications, and feedback UI.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```tsx
|
|
42
|
+
* import { AnimationIndicator } from "@react-fabric/core";
|
|
43
|
+
*
|
|
44
|
+
* // Success indicator
|
|
45
|
+
* <AnimationIndicator type="check" color="success-500" />
|
|
46
|
+
*
|
|
47
|
+
* // Error indicator
|
|
48
|
+
* <AnimationIndicator type="cross" color="error-500" />
|
|
49
|
+
*
|
|
50
|
+
* // Warning indicator
|
|
51
|
+
* <AnimationIndicator type="exclaim" color="warning-500" />
|
|
52
|
+
*
|
|
53
|
+
* // Help indicator
|
|
54
|
+
* <AnimationIndicator type="question" />
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
function AnimationIndicator(_ref) {
|
|
58
|
+
var type = _ref.type,
|
|
59
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
60
|
+
// Map the type to its corresponding icon and delegate rendering to the Icon component
|
|
61
|
+
return /*#__PURE__*/jsx(Icon, _objectSpread(_objectSpread({}, props), {}, {
|
|
62
|
+
icon: ANIMATION_ICONS[type || "info"]
|
|
63
|
+
}), shortHash());
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export { AnimationIndicator };
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { cn } from '@react-fabric/utilities';
|
|
4
|
+
import 'react';
|
|
5
|
+
import { jsx } from 'react/jsx-runtime';
|
|
6
|
+
import { getColor } from '../../utils/getColor.js';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* React Fabric
|
|
10
|
+
* @version 1.0.0
|
|
11
|
+
* @license MIT
|
|
12
|
+
* @copyright 2024 Adarsh Pastakia
|
|
13
|
+
*
|
|
14
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
15
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
16
|
+
* in the Software without restriction, including without limitation the rights
|
|
17
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
18
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
19
|
+
* furnished to do so, subject to the following conditions:
|
|
20
|
+
*
|
|
21
|
+
* The above copyright notice and this permission notice shall be included in all
|
|
22
|
+
* copies or substantial portions of the Software.
|
|
23
|
+
*
|
|
24
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
25
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
26
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
27
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
28
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
29
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
30
|
+
* SOFTWARE.
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Loading overlay that renders an animated icon over a blurred backdrop.
|
|
35
|
+
*
|
|
36
|
+
* Renders a centered icon inside a frosted-glass mask, typically used to
|
|
37
|
+
* indicate loading or disabled states. The mask covers its parent element
|
|
38
|
+
* and prevents user interaction while visible.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```tsx
|
|
42
|
+
* import { AnimationLoader } from "@react-fabric/core";
|
|
43
|
+
*
|
|
44
|
+
* // Loading overlay with medium blur
|
|
45
|
+
* <div style={{ position: "relative" }}>
|
|
46
|
+
* <p>Page content</p>
|
|
47
|
+
* <AnimationLoader icon="icon-[mdi--loading]" maskBlur="md" />
|
|
48
|
+
* </div>
|
|
49
|
+
*
|
|
50
|
+
* // Custom color and size
|
|
51
|
+
* <AnimationLoader icon="icon-[mdi--loading]" color="primary-500" size="3rem" />
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
function AnimationLoader(_ref) {
|
|
55
|
+
var _ref$color = _ref.color,
|
|
56
|
+
color = _ref$color === void 0 ? "tint-500" : _ref$color,
|
|
57
|
+
_ref$size = _ref.size,
|
|
58
|
+
size = _ref$size === void 0 ? "2rem" : _ref$size,
|
|
59
|
+
icon = _ref.icon,
|
|
60
|
+
maskBlur = _ref.maskBlur;
|
|
61
|
+
return /*#__PURE__*/jsx("div", {
|
|
62
|
+
className: cn("fabric-loader-mask", "absolute inset-0 z-10 flex justify-center items-center cursor-wait", maskBlur === "sm" && "backdrop-blur-sm", maskBlur === "md" && "backdrop-blur-md", maskBlur === "lg" && "backdrop-blur-lg"),
|
|
63
|
+
children: /*#__PURE__*/jsx("div", {
|
|
64
|
+
"data-ref": "loader",
|
|
65
|
+
className: "outline outline-tint-300/50 p-4 bg-white/50 dark:bg-black/50 backdrop-blur-xs leading-0 rounded",
|
|
66
|
+
children: /*#__PURE__*/jsx("div", {
|
|
67
|
+
className: cn(icon, "aspect-square"),
|
|
68
|
+
style: {
|
|
69
|
+
fontSize: size,
|
|
70
|
+
color: getColor(color)
|
|
71
|
+
}
|
|
72
|
+
})
|
|
73
|
+
})
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export { AnimationLoader };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
4
|
+
import { AnimationLoader } from './Loader.js';
|
|
5
|
+
import { jsx } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
8
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
9
|
+
/**
|
|
10
|
+
* Animated loading indicator that renders a "bars scale fade" spinner.
|
|
11
|
+
*
|
|
12
|
+
* A thin wrapper around `AnimationLoader` that provides a pre-configured
|
|
13
|
+
* bars-style loading animation. Useful for inline loading indicators in
|
|
14
|
+
* forms, tables, or content areas.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```tsx
|
|
18
|
+
* import { LoadingBars } from "@react-fabric/core";
|
|
19
|
+
*
|
|
20
|
+
* // Basic bars spinner
|
|
21
|
+
* <LoadingBars />
|
|
22
|
+
*
|
|
23
|
+
* // Custom color and size
|
|
24
|
+
* <LoadingBars color="primary-500" size="2rem" />
|
|
25
|
+
*
|
|
26
|
+
* // With backdrop blur
|
|
27
|
+
* <LoadingBars maskBlur="sm" />
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
function LoadingBars(props) {
|
|
31
|
+
// Delegate to AnimationLoader with a pre-configured bars-scale-fade icon
|
|
32
|
+
return /*#__PURE__*/jsx(AnimationLoader, _objectSpread({
|
|
33
|
+
icon: "icon-[svg-spinners--bars-scale-fade]"
|
|
34
|
+
}, props));
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export { LoadingBars };
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { jsx } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* React Fabric
|
|
7
|
+
* @version 1.0.0
|
|
8
|
+
* @license MIT
|
|
9
|
+
* @copyright 2024 Adarsh Pastakia
|
|
10
|
+
*
|
|
11
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
12
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
13
|
+
* in the Software without restriction, including without limitation the rights
|
|
14
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
15
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
16
|
+
* furnished to do so, subject to the following conditions:
|
|
17
|
+
*
|
|
18
|
+
* The above copyright notice and this permission notice shall be included in all
|
|
19
|
+
* copies or substantial portions of the Software.
|
|
20
|
+
*
|
|
21
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
22
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
23
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
24
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
25
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
26
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
27
|
+
* SOFTWARE.
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Inline loading indicator that renders a top-border shimmer animation.
|
|
32
|
+
*
|
|
33
|
+
* A lightweight loading bar displayed as a thin horizontal line at the top
|
|
34
|
+
* of its container. Useful for page-level or section-level loading states
|
|
35
|
+
* where a full overlay would be too intrusive.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```tsx
|
|
39
|
+
* import { LoadingLine } from "@react-fabric/core";
|
|
40
|
+
*
|
|
41
|
+
* // Page-level loading indicator
|
|
42
|
+
* <div>
|
|
43
|
+
* <LoadingLine />
|
|
44
|
+
* <p>Content loads below...</p>
|
|
45
|
+
* </div>
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
function LoadingLine() {
|
|
49
|
+
// Renders a thin shimmer bar at the top of the container using CSS animations
|
|
50
|
+
return /*#__PURE__*/jsx("div", {
|
|
51
|
+
className: "fabric-loader area-loader relative overflow-x-clip h-0",
|
|
52
|
+
"data-ref": "loading",
|
|
53
|
+
children: /*#__PURE__*/jsx("div", {
|
|
54
|
+
className: "absolute inset-x-0 top-0 z-10 py-px overflow-hidden after:absolute after:block after:inset-0"
|
|
55
|
+
})
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export { LoadingLine };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
4
|
+
import { AnimationLoader } from './Loader.js';
|
|
5
|
+
import { jsx } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
8
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
9
|
+
/**
|
|
10
|
+
* Animated loading indicator that renders an "eclipse" spinner.
|
|
11
|
+
*
|
|
12
|
+
* A thin wrapper around `AnimationLoader` that provides a pre-configured
|
|
13
|
+
* circular loading animation. Useful for inline loading indicators in
|
|
14
|
+
* images, charts, and data cards.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```tsx
|
|
18
|
+
* import { LoadingSpinner } from "@react-fabric/core";
|
|
19
|
+
*
|
|
20
|
+
* // Basic spinner
|
|
21
|
+
* <LoadingSpinner />
|
|
22
|
+
*
|
|
23
|
+
* // Custom color and size
|
|
24
|
+
* <LoadingSpinner color="primary-500" size="2rem" />
|
|
25
|
+
*
|
|
26
|
+
* // With backdrop blur
|
|
27
|
+
* <LoadingSpinner maskBlur="sm" />
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
function LoadingSpinner(props) {
|
|
31
|
+
// Delegate to AnimationLoader with a pre-configured eclipse spinner icon
|
|
32
|
+
return /*#__PURE__*/jsx(AnimationLoader, _objectSpread({
|
|
33
|
+
icon: "icon-[svg-spinners--eclipse]"
|
|
34
|
+
}, props));
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export { LoadingSpinner };
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
4
|
+
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
5
|
+
import { cn } from '@react-fabric/utilities';
|
|
6
|
+
import 'react';
|
|
7
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
8
|
+
import { getColor } from '../../utils/getColor.js';
|
|
9
|
+
|
|
10
|
+
var _excluded = ["className", "classNames", "color"];
|
|
11
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
12
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
13
|
+
/**
|
|
14
|
+
* Content placeholder that renders a grayed-out card mockup with icon, title, and line slots.
|
|
15
|
+
*
|
|
16
|
+
* Displays a pre-styled skeleton card layout (icon area + title + two rows of text lines)
|
|
17
|
+
* to occupy space while real content loads. Useful for list items, cards, panels, and
|
|
18
|
+
* virtualized lists.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```tsx
|
|
22
|
+
* import { Skeleton } from "@react-fabric/core";
|
|
23
|
+
*
|
|
24
|
+
* // Basic skeleton placeholder
|
|
25
|
+
* <Skeleton />
|
|
26
|
+
*
|
|
27
|
+
* // Custom color
|
|
28
|
+
* <Skeleton color="primary-100" />
|
|
29
|
+
*
|
|
30
|
+
* // Custom slot styling
|
|
31
|
+
* <Skeleton classNames={{ titlePlaceholder: "w-2/3" }} />
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
function Skeleton(_ref) {
|
|
35
|
+
var className = _ref.className,
|
|
36
|
+
classNames = _ref.classNames,
|
|
37
|
+
_ref$color = _ref.color,
|
|
38
|
+
color = _ref$color === void 0 ? "tint-200" : _ref$color,
|
|
39
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
40
|
+
var bgColor = getColor(color);
|
|
41
|
+
return /*#__PURE__*/jsxs("div", _objectSpread(_objectSpread({
|
|
42
|
+
className: cn("fabric-skeleton", "p-2 animate-fade flex gap-2 max-w-lg", className, classNames === null || classNames === void 0 ? void 0 : classNames.root),
|
|
43
|
+
"data-ref": "skeleton"
|
|
44
|
+
}, rest), {}, {
|
|
45
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
46
|
+
className: cn("rounded aspect-square h-12", classNames === null || classNames === void 0 ? void 0 : classNames.iconPlaceholder),
|
|
47
|
+
style: {
|
|
48
|
+
backgroundColor: bgColor
|
|
49
|
+
}
|
|
50
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
51
|
+
className: "flex-1 flex flex-col gap-2",
|
|
52
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
53
|
+
className: cn("h-3 rounded-full", classNames === null || classNames === void 0 ? void 0 : classNames.titlePlaceholder),
|
|
54
|
+
style: {
|
|
55
|
+
backgroundColor: bgColor
|
|
56
|
+
}
|
|
57
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
58
|
+
className: "flex gap-2",
|
|
59
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
60
|
+
className: cn("h-2 rounded-full basis-[30%]", classNames === null || classNames === void 0 ? void 0 : classNames.linePlaceholder),
|
|
61
|
+
style: {
|
|
62
|
+
backgroundColor: bgColor
|
|
63
|
+
}
|
|
64
|
+
}), /*#__PURE__*/jsx("div", {
|
|
65
|
+
className: cn("h-2 rounded-full basis-[60%]", classNames === null || classNames === void 0 ? void 0 : classNames.linePlaceholder),
|
|
66
|
+
style: {
|
|
67
|
+
backgroundColor: bgColor
|
|
68
|
+
}
|
|
69
|
+
})]
|
|
70
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
71
|
+
className: "flex gap-2",
|
|
72
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
73
|
+
className: cn("h-2 rounded-full basis-[30%]", classNames === null || classNames === void 0 ? void 0 : classNames.linePlaceholder),
|
|
74
|
+
style: {
|
|
75
|
+
backgroundColor: bgColor
|
|
76
|
+
}
|
|
77
|
+
}), /*#__PURE__*/jsx("div", {
|
|
78
|
+
className: cn("h-2 rounded-full basis-[60%]", classNames === null || classNames === void 0 ? void 0 : classNames.linePlaceholder),
|
|
79
|
+
style: {
|
|
80
|
+
backgroundColor: bgColor
|
|
81
|
+
}
|
|
82
|
+
})]
|
|
83
|
+
})]
|
|
84
|
+
})]
|
|
85
|
+
}));
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export { Skeleton };
|
|
@@ -3,17 +3,15 @@
|
|
|
3
3
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
4
4
|
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
5
5
|
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
6
|
-
import { isSvgPath } from '@react-fabric/utilities';
|
|
6
|
+
import { isSvgPath, cn } from '@react-fabric/utilities';
|
|
7
7
|
import BoringAvatar from 'boring-avatars';
|
|
8
|
-
import classNames from 'classnames';
|
|
9
8
|
import { useState, useMemo } from 'react';
|
|
10
|
-
import { getColor, getBgClass, getColorClass } from '../../utils/getColor.js';
|
|
11
|
-
import classes from './Avatar.module.css';
|
|
12
9
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
10
|
+
import { getColor } from '../../utils/getColor.js';
|
|
13
11
|
|
|
14
|
-
var _excluded = ["ref", "name", "avatar", "fallbackIcon", "bg", "color", "size", "rounded", "variant", "className", "viewBox", "onClick"];
|
|
12
|
+
var _excluded = ["ref", "name", "avatar", "fallbackIcon", "bg", "color", "size", "rounded", "variant", "className", "viewBox", "preventDefault", "onClick"];
|
|
15
13
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
16
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t),
|
|
14
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
17
15
|
var SizeMap = {
|
|
18
16
|
xs: "0.875rem",
|
|
19
17
|
sm: "1.125rem",
|
|
@@ -23,9 +21,24 @@ var SizeMap = {
|
|
|
23
21
|
};
|
|
24
22
|
|
|
25
23
|
/**
|
|
26
|
-
*
|
|
24
|
+
* User avatar that renders an image with a Boring Avatar fallback.
|
|
25
|
+
*
|
|
26
|
+
* Displays a user image, falling back to a Boring Avatar (or text initials)
|
|
27
|
+
* when no image is provided or the image fails to load. Supports four
|
|
28
|
+
* Boring Avatar variants (beam, text, pixel, bauhaus) and custom SVG/icon fallbacks.
|
|
29
|
+
*
|
|
30
|
+
* @see {@link https://boringavatars.com/}
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```tsx
|
|
34
|
+
* import { Avatar } from "@react-fabric/core";
|
|
35
|
+
*
|
|
36
|
+
* <Avatar name="Ada Lovelace" avatar="/ada.jpg" />
|
|
37
|
+
* <Avatar name="John Doe" variant="pixel" size="lg" />
|
|
38
|
+
* <Avatar name="Jane" fallbackIcon="icon-[mdi--user]" variant="text" />
|
|
39
|
+
* ```
|
|
27
40
|
*/
|
|
28
|
-
|
|
41
|
+
function Avatar(_ref) {
|
|
29
42
|
var ref = _ref.ref,
|
|
30
43
|
name = _ref.name,
|
|
31
44
|
avatar = _ref.avatar,
|
|
@@ -40,14 +53,15 @@ var Avatar = function Avatar(_ref) {
|
|
|
40
53
|
className = _ref.className,
|
|
41
54
|
_ref$viewBox = _ref.viewBox,
|
|
42
55
|
viewBox = _ref$viewBox === void 0 ? "0 0 24 24" : _ref$viewBox,
|
|
43
|
-
|
|
44
|
-
|
|
56
|
+
preventDefault = _ref.preventDefault,
|
|
57
|
+
_onClick = _ref.onClick,
|
|
58
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
45
59
|
var _useState = useState(true),
|
|
46
60
|
_useState2 = _slicedToArray(_useState, 2),
|
|
47
61
|
fallback = _useState2[0],
|
|
48
62
|
setFallback = _useState2[1];
|
|
49
63
|
|
|
50
|
-
|
|
64
|
+
// Compute inline styles from props (memoized to prevent re-renders)
|
|
51
65
|
var styles = useMemo(function () {
|
|
52
66
|
var s = {};
|
|
53
67
|
if (bg) {
|
|
@@ -65,13 +79,13 @@ var Avatar = function Avatar(_ref) {
|
|
|
65
79
|
return s;
|
|
66
80
|
}, [bg, color, size]);
|
|
67
81
|
|
|
68
|
-
|
|
82
|
+
// Render avatar image with a fade-in placeholder behind it
|
|
69
83
|
var avatarImage = useMemo(function () {
|
|
70
84
|
setFallback(!avatar);
|
|
71
85
|
return avatar && /*#__PURE__*/jsxs("div", {
|
|
72
86
|
className: "contents",
|
|
73
87
|
children: [/*#__PURE__*/jsx("div", {
|
|
74
|
-
className:
|
|
88
|
+
className: "fabric-imgPlaceholder absolute inset-0 bg-gray animate-fade -z-1"
|
|
75
89
|
}), /*#__PURE__*/jsx("img", {
|
|
76
90
|
src: avatar,
|
|
77
91
|
alt: avatar,
|
|
@@ -86,10 +100,13 @@ var Avatar = function Avatar(_ref) {
|
|
|
86
100
|
})]
|
|
87
101
|
});
|
|
88
102
|
}, [avatar]);
|
|
103
|
+
|
|
104
|
+
// Render fallback: custom icon, text initials, or Boring Avatar
|
|
89
105
|
var fallbackAvatar = useMemo(function () {
|
|
90
106
|
if (fallbackIcon) {
|
|
91
107
|
return isSvgPath(fallbackIcon) ? /*#__PURE__*/jsx("svg", {
|
|
92
108
|
viewBox: viewBox,
|
|
109
|
+
className: "p-[0.125em]",
|
|
93
110
|
children: /*#__PURE__*/jsx("path", {
|
|
94
111
|
fill: "currentColor",
|
|
95
112
|
d: fallbackIcon.toString()
|
|
@@ -99,8 +116,8 @@ var Avatar = function Avatar(_ref) {
|
|
|
99
116
|
});
|
|
100
117
|
}
|
|
101
118
|
if (variant === "text") {
|
|
102
|
-
|
|
103
|
-
var _ref2 =
|
|
119
|
+
// Extract initials: "John Doe" -> "JD", "Jane" -> "JA"
|
|
120
|
+
var _ref2 = name.match(/(?=(\w).* (\w).*)|(?=(\w\w).*)/),
|
|
104
121
|
_ref3 = _slicedToArray(_ref2, 4),
|
|
105
122
|
first = _ref3[1],
|
|
106
123
|
second = _ref3[2],
|
|
@@ -121,23 +138,27 @@ var Avatar = function Avatar(_ref) {
|
|
|
121
138
|
})
|
|
122
139
|
});
|
|
123
140
|
}
|
|
141
|
+
// Default: generate a Boring Avatar from the name
|
|
124
142
|
return /*#__PURE__*/jsx(BoringAvatar, {
|
|
125
143
|
square: true,
|
|
126
144
|
size: 64,
|
|
127
145
|
variant: variant,
|
|
128
146
|
name: name
|
|
129
147
|
});
|
|
130
|
-
}, [
|
|
148
|
+
}, [fallbackIcon, variant, name, viewBox]);
|
|
131
149
|
return /*#__PURE__*/jsxs("dfn", _objectSpread(_objectSpread({
|
|
132
150
|
role: "presentation",
|
|
133
|
-
className:
|
|
134
|
-
onClick: onClick
|
|
151
|
+
className: cn("fabric-avatar", rounded ? "rounded-full" : "rounded", "select-none relative overflow-hidden inline-block box-content leading-none not-italic text-center is-clickable:cursor-pointer", className),
|
|
152
|
+
onClick: function onClick(e) {
|
|
153
|
+
if (preventDefault) e.preventDefault();
|
|
154
|
+
_onClick === null || _onClick === void 0 || _onClick(e);
|
|
155
|
+
},
|
|
135
156
|
style: styles,
|
|
136
|
-
"data-clickable": !!
|
|
157
|
+
"data-clickable": !!_onClick,
|
|
137
158
|
ref: ref
|
|
138
|
-
},
|
|
159
|
+
}, props), {}, {
|
|
139
160
|
children: [!fallback && avatarImage, fallback && fallbackAvatar]
|
|
140
161
|
}));
|
|
141
|
-
}
|
|
162
|
+
}
|
|
142
163
|
|
|
143
164
|
export { Avatar };
|
|
@@ -2,15 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
4
4
|
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
5
|
-
import
|
|
5
|
+
import { cn } from '@react-fabric/utilities';
|
|
6
6
|
import { useMemo, Children } from 'react';
|
|
7
7
|
import { useMemoDebugger } from '../../hooks/useEffectDebugger.js';
|
|
8
|
-
import classes from './Avatar.module.css';
|
|
9
8
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
10
9
|
|
|
11
|
-
var _excluded = ["ref", "children", "className", "
|
|
10
|
+
var _excluded = ["ref", "children", "className", "max", "rounded", "size"];
|
|
12
11
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
13
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t),
|
|
12
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
14
13
|
var SizeMap = {
|
|
15
14
|
xs: "0.875rem",
|
|
16
15
|
sm: "1.125rem",
|
|
@@ -20,17 +19,34 @@ var SizeMap = {
|
|
|
20
19
|
};
|
|
21
20
|
|
|
22
21
|
/**
|
|
23
|
-
*
|
|
22
|
+
* Horizontal group of avatars with an overflow count badge.
|
|
23
|
+
*
|
|
24
|
+
* Renders its avatar children in a flex row, truncating to `max` visible
|
|
25
|
+
* avatars and appending a "+N" badge for the remainder. Each avatar is
|
|
26
|
+
* sized according to the `size` prop.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```tsx
|
|
30
|
+
* import { Avatar, AvatarGroup } from "@react-fabric/core";
|
|
31
|
+
*
|
|
32
|
+
* <AvatarGroup max={3} size="md">
|
|
33
|
+
* <Avatar name="John Doe" avatar="/john.jpg" />
|
|
34
|
+
* <Avatar name="Jane Smith" avatar="/jane.jpg" />
|
|
35
|
+
* <Avatar name="Alice Johnson" avatar="/alice.jpg" />
|
|
36
|
+
* <Avatar name="Bob Brown" avatar="/bob.jpg" />
|
|
37
|
+
* </AvatarGroup>
|
|
38
|
+
* // Renders 3 avatars + a "+1" badge
|
|
39
|
+
* ```
|
|
24
40
|
*/
|
|
25
|
-
|
|
41
|
+
function AvatarGroup(_ref) {
|
|
26
42
|
var ref = _ref.ref,
|
|
27
43
|
children = _ref.children,
|
|
28
44
|
className = _ref.className,
|
|
29
|
-
|
|
45
|
+
max = _ref.max,
|
|
30
46
|
rounded = _ref.rounded,
|
|
31
47
|
size = _ref.size,
|
|
32
|
-
|
|
33
|
-
|
|
48
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
49
|
+
// Compute inline styles from size prop (memoized to prevent re-renders)
|
|
34
50
|
var styles = useMemoDebugger(function () {
|
|
35
51
|
var s = {};
|
|
36
52
|
if (size && !(size in SizeMap)) {
|
|
@@ -41,18 +57,23 @@ var AvatarGroup = function AvatarGroup(_ref) {
|
|
|
41
57
|
}
|
|
42
58
|
return s;
|
|
43
59
|
}, [size], "Icon styles");
|
|
60
|
+
|
|
61
|
+
// Normalize children to an array, filtering out falsy values
|
|
62
|
+
// eslint-disable-next-line @eslint-react/no-children-to-array
|
|
44
63
|
var avatars = useMemo(function () {
|
|
45
64
|
return Children.toArray(children).filter(Boolean);
|
|
46
65
|
}, [children]);
|
|
66
|
+
// Calculate how many avatars exceed the max (0 if none)
|
|
47
67
|
var diff = useMemo(function () {
|
|
48
|
-
return
|
|
49
|
-
}, [avatars,
|
|
50
|
-
return /*#__PURE__*/jsxs("div", _objectSpread(_objectSpread({},
|
|
68
|
+
return max && avatars.length > max && avatars.length - max;
|
|
69
|
+
}, [avatars, max]);
|
|
70
|
+
return /*#__PURE__*/jsxs("div", _objectSpread(_objectSpread({}, props), {}, {
|
|
51
71
|
ref: ref,
|
|
52
|
-
className:
|
|
72
|
+
className: cn("fabric-avatarGroup", "inline-flex flex-nowrap", className, rounded ? "rounded-full" : "rounded"),
|
|
53
73
|
style: styles,
|
|
54
|
-
children: [avatars, !!diff && /*#__PURE__*/jsx("dfn", {
|
|
55
|
-
|
|
74
|
+
children: [avatars.slice(0, max), !!diff && /*#__PURE__*/jsx("dfn", {
|
|
75
|
+
"data-ref": "avatarCount",
|
|
76
|
+
className: cn("fabric-avatar", "fabric-avatarGroup--extra", "select-none relative overflow-hidden inline-block box-content bg-muted leading-none not-italic text-center"),
|
|
56
77
|
children: /*#__PURE__*/jsx("svg", {
|
|
57
78
|
children: /*#__PURE__*/jsx("text", {
|
|
58
79
|
x: "50%",
|
|
@@ -69,6 +90,6 @@ var AvatarGroup = function AvatarGroup(_ref) {
|
|
|
69
90
|
})
|
|
70
91
|
})]
|
|
71
92
|
}));
|
|
72
|
-
}
|
|
93
|
+
}
|
|
73
94
|
|
|
74
95
|
export { AvatarGroup };
|