@react-fabric/core 1.0.0-beta.8 → 1.0.1
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 +72 -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 +72 -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 +29 -21
- package/src/components/actionLabel/ActionLabel.tsx +28 -39
- package/src/components/alert/Alert.tsx +261 -0
- package/src/components/animations/Indicator.tsx +76 -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
|
@@ -1,48 +1,99 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/**
|
|
2
|
+
* React Fabric
|
|
3
|
+
* @version 1.0.0
|
|
4
|
+
* @license MIT
|
|
5
|
+
* @copyright 2024 Adarsh Pastakia
|
|
6
|
+
*
|
|
7
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
8
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
9
|
+
* in the Software without restriction, including without limitation the rights
|
|
10
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
11
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
12
|
+
* furnished to do so, subject to the following conditions:
|
|
13
|
+
*
|
|
14
|
+
* The above copyright notice and this permission notice shall be included in all
|
|
15
|
+
* copies or substantial portions of the Software.
|
|
16
|
+
*
|
|
17
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
18
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
19
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
20
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
21
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
22
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
23
|
+
* SOFTWARE.
|
|
24
|
+
*/
|
|
25
|
+
import type { CssProp, CustomColors, HtmlEvents, RefProp, SizeType, TestProps } from "../../types";
|
|
26
|
+
export interface AvatarProps extends CssProp, TestProps, RefProp, HtmlEvents {
|
|
4
27
|
/**
|
|
5
|
-
*
|
|
28
|
+
* Display name used for generating the fallback avatar (required).
|
|
29
|
+
* When no `avatar` image is provided, this name is used to generate
|
|
30
|
+
* a Boring Avatar pattern or extract text initials as a placeholder.
|
|
6
31
|
*/
|
|
7
32
|
name: string;
|
|
8
33
|
/**
|
|
9
|
-
*
|
|
34
|
+
* SVG path string or CSS class name for a custom fallback icon.
|
|
35
|
+
* Used when no `avatar` image is provided and the variant is not `"text"`.
|
|
10
36
|
*/
|
|
11
37
|
fallbackIcon?: string;
|
|
12
38
|
/**
|
|
13
|
-
* avatar image
|
|
39
|
+
* URL of the avatar image to display.
|
|
40
|
+
* Falls back to a Boring Avatar, text initials, or custom icon when
|
|
41
|
+
* the image fails to load or is not provided.
|
|
14
42
|
*/
|
|
15
43
|
avatar?: string;
|
|
16
44
|
/**
|
|
17
|
-
* avatar
|
|
45
|
+
* Fallback avatar style applied when no `avatar` image is provided.
|
|
46
|
+
* Defaults to `"beam"`. Options: `"text"` (text initials), `"beam"`,
|
|
47
|
+
* `"pixel"`, `"bauhaus"` (Boring Avatar variants).
|
|
18
48
|
*/
|
|
19
49
|
variant?: "text" | "beam" | "pixel" | "bauhaus";
|
|
20
50
|
/**
|
|
21
|
-
*
|
|
51
|
+
* Background color applied to the avatar container.
|
|
52
|
+
* Accepts Tailwind palette tokens or any CSS color.
|
|
22
53
|
*/
|
|
23
|
-
bg?:
|
|
54
|
+
bg?: CustomColors;
|
|
24
55
|
/**
|
|
25
|
-
* icon color
|
|
56
|
+
* Text/icon color applied to the avatar.
|
|
57
|
+
* Accepts Tailwind palette tokens or any CSS color.
|
|
26
58
|
*/
|
|
27
|
-
color?:
|
|
59
|
+
color?: CustomColors;
|
|
28
60
|
/**
|
|
29
|
-
*
|
|
61
|
+
* Avatar size. Accepts predefined tokens `"xs"`–`"xl"` or a custom CSS size value.
|
|
30
62
|
*/
|
|
31
|
-
size?: SizeType | number | string;
|
|
63
|
+
size?: SizeType | number | (string & {});
|
|
32
64
|
/**
|
|
33
|
-
*
|
|
65
|
+
* SVG viewBox attribute for `fallbackIcon` when it is an SVG path.
|
|
66
|
+
* Defaults to `"0 0 24 24"`.
|
|
34
67
|
*/
|
|
35
68
|
viewBox?: string;
|
|
36
69
|
/**
|
|
37
|
-
* rounded
|
|
70
|
+
* When true, applies a fully rounded (circular) shape to the avatar.
|
|
71
|
+
* Otherwise, a standard rounded rectangle is used.
|
|
38
72
|
*/
|
|
39
73
|
rounded?: boolean;
|
|
40
74
|
/**
|
|
41
|
-
* click
|
|
75
|
+
* When true, prevents the default click action on the avatar.
|
|
76
|
+
* Useful when the avatar is nested inside an `<a>` element to avoid
|
|
77
|
+
* navigating away from the page.
|
|
42
78
|
*/
|
|
43
|
-
|
|
79
|
+
preventDefault?: boolean;
|
|
44
80
|
}
|
|
45
81
|
/**
|
|
46
|
-
*
|
|
82
|
+
* User avatar that renders an image with a Boring Avatar fallback.
|
|
83
|
+
*
|
|
84
|
+
* Displays a user image, falling back to a Boring Avatar (or text initials)
|
|
85
|
+
* when no image is provided or the image fails to load. Supports four
|
|
86
|
+
* Boring Avatar variants (beam, text, pixel, bauhaus) and custom SVG/icon fallbacks.
|
|
87
|
+
*
|
|
88
|
+
* @see {@link https://boringavatars.com/}
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```tsx
|
|
92
|
+
* import { Avatar } from "@react-fabric/core";
|
|
93
|
+
*
|
|
94
|
+
* <Avatar name="Ada Lovelace" avatar="/ada.jpg" />
|
|
95
|
+
* <Avatar name="John Doe" variant="pixel" size="lg" />
|
|
96
|
+
* <Avatar name="Jane" fallbackIcon="icon-[mdi--user]" variant="text" />
|
|
97
|
+
* ```
|
|
47
98
|
*/
|
|
48
|
-
export declare
|
|
99
|
+
export declare function Avatar({ ref, name, avatar, fallbackIcon, bg, color, size, rounded, variant, className, viewBox, preventDefault, onClick, ...props }: AvatarProps): import("react").JSX.Element;
|
|
@@ -1,24 +1,61 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
/**
|
|
2
|
+
* React Fabric
|
|
3
|
+
* @version 1.0.0
|
|
4
|
+
* @license MIT
|
|
5
|
+
* @copyright 2024 Adarsh Pastakia
|
|
6
|
+
*
|
|
7
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
8
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
9
|
+
* in the Software without restriction, including without limitation the rights
|
|
10
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
11
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
12
|
+
* furnished to do so, subject to the following conditions:
|
|
13
|
+
*
|
|
14
|
+
* The above copyright notice and this permission notice shall be included in all
|
|
15
|
+
* copies or substantial portions of the Software.
|
|
16
|
+
*
|
|
17
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
18
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
19
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
20
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
21
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
22
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
23
|
+
* SOFTWARE.
|
|
24
|
+
*/
|
|
25
|
+
import type { ChildrenProp, CssProp, RefProp, SizeType } from "../../types";
|
|
26
|
+
import type { AvatarProps } from "./Avatar";
|
|
27
|
+
export interface AvatarGroupProps extends CssProp, RefProp<HTMLDivElement>, ChildrenProp<Omit<AvatarProps, "size" | "rounded">> {
|
|
7
28
|
/**
|
|
8
|
-
* rounded
|
|
29
|
+
* Whether to apply a fully rounded shape to all avatars and the group container.
|
|
9
30
|
*/
|
|
10
31
|
rounded?: boolean;
|
|
11
32
|
/**
|
|
12
|
-
*
|
|
33
|
+
* Avatar size. Accepts `"xs"`–`"xl"` tokens or a custom CSS size value.
|
|
13
34
|
*/
|
|
14
|
-
size?: SizeType | number | string;
|
|
35
|
+
size?: SizeType | number | (string & {});
|
|
15
36
|
/**
|
|
16
|
-
*
|
|
37
|
+
* Maximum number of avatars to display before showing a "+N" overflow badge.
|
|
17
38
|
*/
|
|
18
|
-
|
|
39
|
+
max?: number;
|
|
19
40
|
}
|
|
20
41
|
/**
|
|
21
|
-
*
|
|
42
|
+
* Horizontal group of avatars with an overflow count badge.
|
|
43
|
+
*
|
|
44
|
+
* Renders its avatar children in a flex row, truncating to `max` visible
|
|
45
|
+
* avatars and appending a "+N" badge for the remainder. Each avatar is
|
|
46
|
+
* sized according to the `size` prop.
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```tsx
|
|
50
|
+
* import { Avatar, AvatarGroup } from "@react-fabric/core";
|
|
51
|
+
*
|
|
52
|
+
* <AvatarGroup max={3} size="md">
|
|
53
|
+
* <Avatar name="John Doe" avatar="/john.jpg" />
|
|
54
|
+
* <Avatar name="Jane Smith" avatar="/jane.jpg" />
|
|
55
|
+
* <Avatar name="Alice Johnson" avatar="/alice.jpg" />
|
|
56
|
+
* <Avatar name="Bob Brown" avatar="/bob.jpg" />
|
|
57
|
+
* </AvatarGroup>
|
|
58
|
+
* // Renders 3 avatars + a "+1" badge
|
|
59
|
+
* ```
|
|
22
60
|
*/
|
|
23
|
-
export declare
|
|
24
|
-
export {};
|
|
61
|
+
export declare function AvatarGroup({ ref, children, className, max, rounded, size, ...props }: AvatarGroupProps): import("react").JSX.Element;
|
|
@@ -1,25 +1,75 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import type { ChildProp, CssProp, TestProps } from "../../types";
|
|
2
|
+
import type { CustomColors } from "../../types/colors";
|
|
3
|
+
export interface BadgeType {
|
|
3
4
|
/**
|
|
4
|
-
*
|
|
5
|
+
* Numeric or text value displayed inside the badge (e.g., a count like "42").
|
|
6
|
+
* Mutually exclusive with `icon` and `ping`.
|
|
5
7
|
*/
|
|
6
|
-
|
|
8
|
+
value?: string | number;
|
|
7
9
|
/**
|
|
8
|
-
* badge value
|
|
10
|
+
* Icon path or props rendered inside the badge instead of a value.
|
|
11
|
+
* Mutually exclusive with `value` and `ping`.
|
|
9
12
|
*/
|
|
10
|
-
|
|
13
|
+
icon?: string;
|
|
11
14
|
/**
|
|
12
|
-
*
|
|
15
|
+
* When true, renders a pulsing dot indicator (used for "unread" or "live" states).
|
|
16
|
+
* Mutually exclusive with `value` and `icon`.
|
|
13
17
|
*/
|
|
14
|
-
|
|
18
|
+
ping?: boolean;
|
|
15
19
|
/**
|
|
16
|
-
*
|
|
20
|
+
* When true, the badge is positioned inline with its content rather than absolutely positioned.
|
|
17
21
|
*/
|
|
18
|
-
|
|
22
|
+
inline?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Placement of the badge relative to its child when `inline` is false.
|
|
25
|
+
* Defaults to `"top-end"`.
|
|
26
|
+
*/
|
|
27
|
+
placement?: "top" | "top-start" | "top-end" | "bottom" | "bottom-start" | "bottom-end" | "end" | "start";
|
|
19
28
|
/**
|
|
20
|
-
* badge
|
|
29
|
+
* Background color applied to the badge. Accepts Tailwind palette tokens or any CSS color.
|
|
21
30
|
*/
|
|
22
|
-
|
|
31
|
+
bg?: CustomColors;
|
|
32
|
+
/**
|
|
33
|
+
* Text/icon color applied to the badge. Accepts Tailwind palette tokens or any CSS color.
|
|
34
|
+
*/
|
|
35
|
+
color?: CustomColors;
|
|
23
36
|
}
|
|
24
|
-
export
|
|
25
|
-
|
|
37
|
+
export type BadgeProps = BadgeType & CssProp & TestProps & Partial<ChildProp> & ({
|
|
38
|
+
value: string | number;
|
|
39
|
+
icon?: never;
|
|
40
|
+
ping?: never;
|
|
41
|
+
} | {
|
|
42
|
+
icon: string;
|
|
43
|
+
value?: never;
|
|
44
|
+
ping?: never;
|
|
45
|
+
} | {
|
|
46
|
+
ping?: boolean;
|
|
47
|
+
value?: never;
|
|
48
|
+
icon?: never;
|
|
49
|
+
});
|
|
50
|
+
/**
|
|
51
|
+
* A small overlay component used to display a numeric value, icon, or pulsing
|
|
52
|
+
* indicator positioned relative to a child element.
|
|
53
|
+
*
|
|
54
|
+
* Commonly used for notification counts, unread indicators, or status badges
|
|
55
|
+
* on avatars, buttons, or list items.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```tsx
|
|
59
|
+
* import { Badge } from "@react-fabric/core";
|
|
60
|
+
*
|
|
61
|
+
* // Numeric badge
|
|
62
|
+
* <Badge value="42">
|
|
63
|
+
* <Avatar name="John" />
|
|
64
|
+
* </Badge>
|
|
65
|
+
*
|
|
66
|
+
* // Icon badge
|
|
67
|
+
* <Badge icon="icon-[mdi--bell]" />
|
|
68
|
+
*
|
|
69
|
+
* // Pulsing indicator
|
|
70
|
+
* <Badge ping>
|
|
71
|
+
* <Icon icon="icon-[mdi--email]" />
|
|
72
|
+
* </Badge>
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
export declare function Badge({ className, bg, color, icon, inline, ping, value, children, placement, ...props }: BadgeProps): import("react").JSX.Element;
|
|
@@ -1,95 +1,112 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
1
|
+
import type { Hotkey } from "@tanstack/react-hotkeys";
|
|
2
|
+
import type { ChildProp, CssPropWithMap, CSSSizeType, HtmlEvents, PolymorphicProps, RefProp, SizeType, TestProps } from "../../types";
|
|
3
|
+
import type { IconProps } from "../icon/Icon";
|
|
4
|
+
export interface SharedButtonProps extends HtmlEvents {
|
|
4
5
|
/**
|
|
5
|
-
*
|
|
6
|
+
* Visual style variant of the button. Defaults to `"default"`.
|
|
6
7
|
*/
|
|
7
|
-
|
|
8
|
+
variant?: "default" | "soft" | "outlined" | "dashed" | "solid" | "link";
|
|
8
9
|
/**
|
|
9
|
-
*
|
|
10
|
+
* Color scheme for the button. Defaults to `"default"`.
|
|
10
11
|
*/
|
|
11
|
-
|
|
12
|
+
color?: "default" | "muted" | "primary" | "secondary" | "info" | "danger" | "success" | "warning";
|
|
12
13
|
/**
|
|
13
|
-
* button
|
|
14
|
+
* When true, applies fully rounded (pill) corners to the button.
|
|
14
15
|
*/
|
|
15
|
-
|
|
16
|
+
rounded?: boolean;
|
|
16
17
|
/**
|
|
17
|
-
*
|
|
18
|
+
* Button size. Accepts `"xs"`, `"sm"`, `"md"`, `"lg"`, or `"xl"`.
|
|
18
19
|
*/
|
|
19
|
-
|
|
20
|
+
size?: SizeType;
|
|
21
|
+
}
|
|
22
|
+
interface BaseButtonProps extends CssPropWithMap<{
|
|
23
|
+
root: string;
|
|
24
|
+
button: string;
|
|
25
|
+
label: string;
|
|
26
|
+
icon: string;
|
|
27
|
+
}>, RefProp<HTMLButtonElement>, TestProps, SharedButtonProps {
|
|
28
|
+
"aria-label"?: string;
|
|
20
29
|
/**
|
|
21
|
-
* button
|
|
30
|
+
* Keyboard shortcut combo that triggers the button's `onClick` handler.
|
|
22
31
|
*/
|
|
23
|
-
|
|
32
|
+
hotKey?: Hotkey | Hotkey[];
|
|
24
33
|
/**
|
|
25
|
-
* button
|
|
34
|
+
* When true, hides the visual hotkey label displayed inside the button.
|
|
26
35
|
*/
|
|
27
|
-
|
|
36
|
+
hideHotKeyLabel?: boolean;
|
|
28
37
|
/**
|
|
29
|
-
*
|
|
38
|
+
* Icon path or props rendered inside the button.
|
|
30
39
|
*/
|
|
31
|
-
|
|
40
|
+
icon?: IconProps;
|
|
32
41
|
/**
|
|
33
|
-
*
|
|
42
|
+
* Alternative icon rendered for dropdown carets or state indicators.
|
|
34
43
|
*/
|
|
35
|
-
|
|
44
|
+
altIcon?: IconProps;
|
|
36
45
|
/**
|
|
37
|
-
*
|
|
46
|
+
* When true, marks the button as in an active/selected state.
|
|
38
47
|
*/
|
|
39
|
-
|
|
48
|
+
active?: boolean;
|
|
40
49
|
/**
|
|
41
|
-
*
|
|
50
|
+
* When true, shows a loading spinner and disables clicks to prevent duplicate submissions.
|
|
42
51
|
*/
|
|
43
|
-
|
|
52
|
+
loading?: boolean;
|
|
44
53
|
/**
|
|
45
|
-
*
|
|
54
|
+
* When true, disables the button and prevents user interaction.
|
|
46
55
|
*/
|
|
47
56
|
disabled?: boolean;
|
|
48
57
|
/**
|
|
49
|
-
*
|
|
58
|
+
* When true, allows the button to be clicked even when `active` is true.
|
|
50
59
|
*/
|
|
51
|
-
|
|
60
|
+
activeClickable?: boolean;
|
|
61
|
+
type?: "button" | "submit" | "reset";
|
|
52
62
|
/**
|
|
53
|
-
*
|
|
54
|
-
* To hide completed message onClick/Promise return should be false
|
|
63
|
+
* Explicit width of the button (CSS size value).
|
|
55
64
|
*/
|
|
56
|
-
|
|
65
|
+
width?: CSSSizeType;
|
|
57
66
|
/**
|
|
58
|
-
* manually
|
|
67
|
+
* When true, manually shows the action-completed checkmark overlay.
|
|
59
68
|
*/
|
|
60
69
|
showActionDone?: boolean;
|
|
61
70
|
/**
|
|
62
|
-
*
|
|
71
|
+
* Controls when the action-completed checkmark appears: `"click"` shows it after onClick,
|
|
72
|
+
* `"manual"` requires setting `showActionDone` to true.
|
|
63
73
|
*/
|
|
64
74
|
showActionDoneEvent?: "click" | "manual";
|
|
65
|
-
/**
|
|
66
|
-
* click handler, return Promise to autoset loading state
|
|
67
|
-
*/
|
|
68
|
-
onClick?: (e?: React.MouseEvent) => CallbackReturn;
|
|
69
|
-
/**
|
|
70
|
-
* badges
|
|
71
|
-
*/
|
|
72
|
-
badge?: string | number | BadgeType;
|
|
73
|
-
/**
|
|
74
|
-
* keyboard shortcut
|
|
75
|
-
*/
|
|
76
|
-
hotKey?: string;
|
|
77
|
-
stopPropagation?: boolean;
|
|
78
|
-
onMouseOut?: MouseEventHandler;
|
|
79
|
-
onMouseOver?: MouseEventHandler;
|
|
80
|
-
onMouseMove?: MouseEventHandler;
|
|
81
|
-
onMouseEnter?: MouseEventHandler;
|
|
82
|
-
onMouseLeave?: MouseEventHandler;
|
|
83
|
-
onWheel?: WheelEventHandler;
|
|
84
75
|
}
|
|
85
|
-
|
|
86
|
-
children:
|
|
87
|
-
"aria-label"?: string;
|
|
76
|
+
type ButtonTypeProps = {
|
|
77
|
+
children: ChildProp["children"];
|
|
88
78
|
} | {
|
|
89
79
|
children?: never;
|
|
90
80
|
"aria-label": string;
|
|
91
81
|
};
|
|
82
|
+
export type ButtonProps<Tag extends React.ElementType = "button"> = BaseButtonProps & ButtonTypeProps & PolymorphicProps<Tag>;
|
|
92
83
|
/**
|
|
93
|
-
*
|
|
84
|
+
* A versatile button component that supports multiple variants, colors, sizes, and states.
|
|
85
|
+
* It can display icons, handle loading/action states, show keyboard shortcuts, and be
|
|
86
|
+
* polymorphic to render as different HTML elements or custom components.
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```tsx
|
|
90
|
+
* // Basic button
|
|
91
|
+
* <Button variant="solid" color="primary" onClick={handleClick}>
|
|
92
|
+
* Click me
|
|
93
|
+
* </Button>
|
|
94
|
+
*
|
|
95
|
+
* // Icon button with loading state
|
|
96
|
+
* <Button icon="icon-[mdi--floppy]" loading={saving}>
|
|
97
|
+
* Save
|
|
98
|
+
* </Button>
|
|
99
|
+
*
|
|
100
|
+
* // Polymorphic: renders as a link
|
|
101
|
+
* <Button as="a" href="/dashboard" variant="soft">
|
|
102
|
+
* Dashboard
|
|
103
|
+
* </Button>
|
|
104
|
+
*
|
|
105
|
+
* // Button with keyboard shortcut
|
|
106
|
+
* <Button hotKey="Ctrl+S" variant="dashed">
|
|
107
|
+
* Save (Ctrl+S)
|
|
108
|
+
* </Button>
|
|
109
|
+
* ```
|
|
94
110
|
*/
|
|
95
|
-
export declare
|
|
111
|
+
export declare function Button<Tag extends React.ElementType = "button">({ active, altIcon, as, children, className, classNames, color, disabled, icon, loading, onBlur, onClick, onFocus, onMouseDown, onMouseEnter, onMouseLeave, onMouseMove, onMouseOver, onMouseUp, activeClickable, showActionDone, showActionDoneEvent, type, ref, rounded, size, variant, width, hotKey, hideHotKeyLabel, ...props }: ButtonProps<Tag>): import("react").JSX.Element;
|
|
112
|
+
export {};
|
|
@@ -1,34 +1,96 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
/**
|
|
2
|
+
* React Fabric
|
|
3
|
+
* @version 1.0.0
|
|
4
|
+
* @license MIT
|
|
5
|
+
* @copyright 2024 Adarsh Pastakia
|
|
6
|
+
*
|
|
7
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
8
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
9
|
+
* in the Software without restriction, including without limitation the rights
|
|
10
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
11
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
12
|
+
* furnished to do so, subject to the following conditions:
|
|
13
|
+
*
|
|
14
|
+
* The above copyright notice and this permission notice shall be included in all
|
|
15
|
+
* copies or substantial portions of the Software.
|
|
16
|
+
*
|
|
17
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
18
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
19
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
20
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
21
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
22
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
23
|
+
* SOFTWARE.
|
|
24
|
+
*/
|
|
25
|
+
import type { ChildrenProp, CssProp, RefProp, TestProps } from "../../types";
|
|
26
|
+
import type { ButtonProps, SharedButtonProps } from "./Button";
|
|
27
|
+
interface BaseProps extends CssProp, TestProps, SharedButtonProps {
|
|
5
28
|
/**
|
|
6
|
-
*
|
|
29
|
+
* When true, arranges buttons vertically (top-to-bottom) instead of horizontally.
|
|
7
30
|
*/
|
|
8
31
|
vertical?: boolean;
|
|
9
32
|
/**
|
|
10
|
-
*
|
|
11
|
-
*/
|
|
12
|
-
variant?: "outline" | "solid" | "link";
|
|
13
|
-
/**
|
|
14
|
-
* button size
|
|
15
|
-
*/
|
|
16
|
-
size?: SizeType;
|
|
17
|
-
/**
|
|
18
|
-
* button color
|
|
19
|
-
*/
|
|
20
|
-
color?: ColorType;
|
|
21
|
-
/**
|
|
22
|
-
* full rounded edges
|
|
23
|
-
*/
|
|
24
|
-
rounded?: boolean;
|
|
25
|
-
/**
|
|
26
|
-
* disabled state
|
|
33
|
+
* When true, disables all child buttons and prevents user interaction.
|
|
27
34
|
*/
|
|
28
35
|
disabled?: boolean;
|
|
29
36
|
/**
|
|
30
|
-
*
|
|
37
|
+
* When true, stretches the group to full available width (uses `flex` instead of `inline-flex`).
|
|
31
38
|
*/
|
|
32
39
|
fullWidth?: boolean;
|
|
33
40
|
}
|
|
34
|
-
export
|
|
41
|
+
export type ButtonGroupProps<T> = BaseProps & RefProp<HTMLDivElement> & ChildrenProp<ButtonProps & {
|
|
42
|
+
value: T;
|
|
43
|
+
}> & {
|
|
44
|
+
onClick?: (value: T | null, e?: React.MouseEvent) => void;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* A container component that renders a group of related buttons with shared styling and behavior.
|
|
48
|
+
*
|
|
49
|
+
* ButtonGroup propagates common button properties (variant, color, size, rounded, disabled)
|
|
50
|
+
* to all direct child `<Button>` elements, ensuring visual consistency across the group.
|
|
51
|
+
* It also coordinates click handling by intercepting each child's `onClick` and invoking
|
|
52
|
+
* the group-level `onClick` callback with the clicked button's `value` prop — making it
|
|
53
|
+
* ideal for toggle groups, radio-style selections, and multi-select toolbars.
|
|
54
|
+
*
|
|
55
|
+
* @template T - The type of the `value` prop expected by child buttons (defaults to `string`).
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```tsx
|
|
59
|
+
* // Single-select toggle group
|
|
60
|
+
* const [mode, setMode] = useState<"day" | "week" | "month">("day");
|
|
61
|
+
*
|
|
62
|
+
* <ButtonGroup
|
|
63
|
+
* value={mode}
|
|
64
|
+
* onClick={(v) => setMode(v ?? "day")}
|
|
65
|
+
* variant="outlined"
|
|
66
|
+
* color="primary"
|
|
67
|
+
* size="sm"
|
|
68
|
+
* >
|
|
69
|
+
* <Button value="day">Day</Button>
|
|
70
|
+
* <Button value="week">Week</Button>
|
|
71
|
+
* <Button value="month">Month</Button>
|
|
72
|
+
* </ButtonGroup>
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```tsx
|
|
76
|
+
* // Multi-select with vertical layout
|
|
77
|
+
* const [tags, setTags] = useState<string[]>([]);
|
|
78
|
+
*
|
|
79
|
+
* <ButtonGroup
|
|
80
|
+
* vertical
|
|
81
|
+
* variant="soft"
|
|
82
|
+
* color="info"
|
|
83
|
+
* onClick={(tag) =>
|
|
84
|
+
* setTags((prev) =>
|
|
85
|
+
* prev.includes(tag!) ? prev.filter((t) => t !== tag) : [...prev, tag!]
|
|
86
|
+
* )
|
|
87
|
+
* }
|
|
88
|
+
* >
|
|
89
|
+
* <Button value="react">React</Button>
|
|
90
|
+
* <Button value="typescript">TypeScript</Button>
|
|
91
|
+
* <Button value="tailwind">Tailwind</Button>
|
|
92
|
+
* </ButtonGroup>
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
export declare function ButtonGroup<T extends AnyObject = string>({ ref, vertical, className, children, variant, rounded, disabled, fullWidth, color, size, onClick, ...props }: ButtonGroupProps<T>): import("react").JSX.Element;
|
|
96
|
+
export {};
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import { type Placement } from "@floating-ui/react";
|
|
3
|
-
import { type CallbackReturn
|
|
4
|
-
import { type
|
|
5
|
-
interface ExtendedProps
|
|
2
|
+
import { type CallbackReturn } from "../../types";
|
|
3
|
+
import { type ButtonProps } from "./Button";
|
|
4
|
+
interface ExtendedProps {
|
|
6
5
|
/**
|
|
7
6
|
* confirm message
|
|
8
7
|
*/
|
|
@@ -24,9 +23,24 @@ interface ExtendedProps extends Omit<BaseProps, "onClick">, RefProp {
|
|
|
24
23
|
*/
|
|
25
24
|
onClick?: (e: boolean) => CallbackReturn;
|
|
26
25
|
}
|
|
27
|
-
export type ConfirmButtonProps = ExtendedProps & ButtonProps;
|
|
28
26
|
/**
|
|
29
|
-
*
|
|
27
|
+
* A button that shows a confirmation dialog when clicked, allowing the user to confirm or cancel an action.
|
|
28
|
+
* It supports custom messages, labels, and loading states.
|
|
29
|
+
* This component is useful for actions that require user confirmation, such as deleting items or submitting forms.
|
|
30
|
+
* It uses the Floating UI library to manage the positioning of the confirmation dialog, ensuring it appears correctly relative to the button.
|
|
31
|
+
* It also supports custom placement of the dialog, and can display an action message when the action is completed.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```jsx
|
|
35
|
+
* <ConfirmButton
|
|
36
|
+
* message="Are you sure you want to delete this item?"
|
|
37
|
+
* onClick={(confirmed) => {
|
|
38
|
+
* if (confirmed) {
|
|
39
|
+
* // Perform action
|
|
40
|
+
* }
|
|
41
|
+
* }}
|
|
42
|
+
* />
|
|
43
|
+
* ```
|
|
30
44
|
*/
|
|
31
|
-
export declare const ConfirmButton: <Tag extends
|
|
45
|
+
export declare const ConfirmButton: <Tag extends React.ElementType = "button">(props: ExtendedProps & ButtonProps<Tag>) => import("react").JSX.Element;
|
|
32
46
|
export {};
|