@react-fabric/core 1.0.0-beta.5 → 1.0.0-beta.52
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{src/components/actionLabel/ActionLabel.module.css → css/components/_actionLabel.css} +4 -4
- package/{src/overlays/alert/Alert.module.css → css/components/_alert.css} +3 -3
- package/{src/components/animations/Animations.module.css → css/components/_animations.css} +9 -9
- package/{src/components/avatar/Avatar.module.css → css/components/_avatar.css} +11 -11
- package/{src/components/badge/Badge.module.css → css/components/_badge.css} +19 -17
- package/{src/components/breadcrumbs/Breadcrumbs.module.css → css/components/_breadcrumbs.css} +49 -44
- package/{src/components/button/Button.module.css → css/components/_button.css} +69 -79
- package/{src/components/card/Card.module.css → css/components/_card.css} +50 -28
- package/{src/components/chip/Chip.module.css → css/components/_chip.css} +14 -10
- package/{src/components/collapsable/Collapsable.module.css → css/components/_collapsable.css} +3 -3
- package/css/components/_divider.css +38 -0
- package/{src/components/dropdown/Dropdown.module.css → css/components/_dropdown.css} +2 -2
- package/{src/overlays/flyout/Flyout.module.css → css/components/_flyout.css} +6 -6
- package/{src/components/icon/Icon.module.css → css/components/_icon.css} +8 -5
- package/{src/components/media/Media.module.css → css/components/_media.css} +17 -17
- package/{src/components/menu/Menu.module.css → css/components/_menu.css} +19 -20
- package/{src/overlays/message/Message.module.css → css/components/_message.css} +2 -2
- package/{src/components/meter/Meter.module.css → css/components/_meter.css} +10 -10
- package/{src/overlays/modal/Modal.module.css → css/components/_modal.css} +8 -8
- package/{src/components/panel/Panel.module.css → css/components/_panel.css} +17 -17
- package/{src/components/progress/Progress.module.css → css/components/_progress.css} +7 -10
- package/{src/components/tabpanel/TabPanel.module.css → css/components/_tabPanel.css} +73 -84
- package/{src/overlays/toast/Toast.module.css → css/components/_toast.css} +2 -2
- package/css/components/_tooltip.css +29 -0
- package/{src/core/content/Content.module.css → css/components/index.css} +25 -18
- package/{src/core/aside/Aside.module.css → css/core/_aside.css} +56 -42
- package/{src/core/section/Section.module.css → css/core/_content.css} +5 -3
- package/{src/core/boundary/ErrorBoundary.module.css → css/core/_errorboundary.css} +9 -9
- package/{src/core/headfoot/HeadFoot.module.css → css/core/_headfoot.css} +4 -10
- package/{src/core/page/Page.module.css → css/core/_page.css} +10 -14
- package/{src/core/responsive/Responsive.module.css → css/core/_responsive.css} +10 -10
- package/css/core/_section.css +28 -0
- package/{src/core/theme/Theme.module.css → css/core/_theme.css} +3 -3
- package/{src/typography/Typography.module.css → css/core/_typography.css} +14 -12
- package/{src/core/viewport/Viewport.module.css → css/core/_viewport.css} +7 -3
- package/css/core/index.css +33 -0
- package/css/reset/_gradients.css +8 -8
- package/css/reset/_reset.css +42 -224
- package/css/reset/_text.css +14 -29
- package/css/reset/_theme.css +331 -52
- package/css/reset/index.css +4 -4
- package/css/styles.css +7 -6
- package/css/theme/_colors.css +320 -0
- package/css/theme/_utilities.css +530 -0
- package/css/theme/index.css +45 -0
- package/dist/cjs/components/actionLabel/ActionLabel.js +26 -8
- package/dist/cjs/components/animations/Animations.js +118 -24
- package/dist/cjs/components/avatar/Avatar.js +43 -16
- package/dist/cjs/components/avatar/AvatarGroup.js +22 -4
- package/dist/cjs/components/badge/Badge.js +35 -6
- package/dist/cjs/components/breadcrumbs/Breadcrumbs.js +39 -8
- package/dist/cjs/components/button/Button.js +42 -15
- package/dist/cjs/components/button/ButtonGroup.js +30 -3
- package/dist/cjs/components/button/ConfirmButton.js +32 -4
- package/dist/cjs/components/button/ToggleButtonGroup.js +41 -15
- package/dist/cjs/components/callout/Callout.js +44 -4
- package/dist/cjs/components/card/Card.js +48 -10
- package/dist/cjs/components/card/CardCover.js +36 -5
- package/dist/cjs/components/card/FlipContent.js +56 -0
- package/dist/cjs/components/chip/Chip.js +32 -7
- package/dist/cjs/components/collapsable/Collapsable.js +32 -6
- package/dist/cjs/components/divider/Divider.js +30 -7
- package/dist/cjs/components/dropdown/Dropdown.js +48 -9
- package/dist/cjs/components/dropdown/DropdownTool.js +4 -3
- package/dist/cjs/components/empty/EmptyContent.js +35 -5
- package/dist/cjs/components/icon/Icon.js +44 -16
- package/dist/cjs/components/media/Media.js +172 -75
- package/dist/cjs/components/menu/ContextMenu.js +49 -10
- package/dist/cjs/components/menu/Menu.js +74 -21
- package/dist/cjs/components/menu/MenuItem.js +51 -16
- package/dist/cjs/components/meter/Meter.js +26 -3
- package/dist/cjs/components/navigator/Navigator.js +48 -13
- package/dist/cjs/components/panel/Panel.js +47 -9
- package/dist/cjs/components/panel/PanelGroup.js +25 -2
- package/dist/cjs/components/panel/PanelStack.js +31 -0
- package/dist/cjs/components/progress/ProgressBar.js +31 -9
- package/dist/cjs/components/progress/ProgressCircle.js +29 -7
- package/dist/cjs/components/tabpanel/Tab.js +89 -38
- package/dist/cjs/components/tabpanel/TabPanel.js +53 -16
- package/dist/cjs/context/Global.js +28 -1
- package/dist/cjs/context/NotificationCenter.js +3 -3
- package/dist/cjs/core/aside/Aside.js +49 -11
- package/dist/cjs/core/boundary/ErrorBoundary.js +23 -8
- package/dist/cjs/core/boundary/ErrorIcon.js +1 -2
- package/dist/cjs/core/content/Content.js +15 -8
- package/dist/cjs/core/headfoot/HeadFoot.js +44 -20
- package/dist/cjs/core/page/Page.js +40 -29
- package/dist/cjs/core/responsive/Responsive.js +59 -6
- package/dist/cjs/core/section/Section.js +1 -2
- package/dist/cjs/core/theme/ThemeProvider.js +32 -10
- package/dist/cjs/core/viewport/Viewport.js +18 -2
- package/dist/cjs/hooks/useControlledValue.js +12 -0
- package/dist/cjs/hooks/useDebounce.js +14 -1
- package/dist/cjs/hooks/useEffectDebugger.js +54 -2
- package/dist/cjs/hooks/useIsDark.js +8 -0
- package/dist/cjs/hooks/useIsRtl.js +12 -0
- package/dist/cjs/hooks/useNavigator.js +6 -4
- package/dist/cjs/hooks/useOverlayService.js +24 -0
- package/dist/cjs/hooks/usePropToggle.js +16 -5
- package/dist/cjs/hooks/useResize.js +18 -0
- package/dist/cjs/hooks/useResizeObserver.js +20 -1
- package/dist/cjs/hooks/useStorage.js +39 -0
- package/dist/cjs/hotkeys/HotKeyLabel.js +1 -1
- package/dist/cjs/hotkeys/HotKeyWrapper.js +3 -1
- package/dist/cjs/index.js +8 -2
- package/dist/cjs/overlays/alert/Alert.js +20 -14
- package/dist/cjs/overlays/flyout/Flyout.js +49 -60
- package/dist/cjs/overlays/message/Message.js +6 -3
- package/dist/cjs/overlays/modal/Modal.js +16 -12
- package/dist/cjs/overlays/toast/Toast.js +17 -9
- package/dist/cjs/overlays/tooltip/Tooltip.js +24 -11
- package/dist/cjs/types/icons.js +10 -1
- package/dist/cjs/typography/Abbr.js +32 -6
- package/dist/cjs/typography/{Link.js → Anchor.js} +23 -5
- package/dist/cjs/typography/Mark.js +22 -4
- package/dist/cjs/typography/Text.js +30 -5
- package/dist/cjs/typography/Title.js +19 -4
- package/dist/cjs/utils/cloneElement.js +47 -0
- package/dist/cjs/utils/getColor.js +1 -18
- package/dist/esm/components/actionLabel/ActionLabel.js +26 -8
- package/dist/esm/components/animations/Animations.js +119 -25
- package/dist/esm/components/avatar/Avatar.js +44 -17
- package/dist/esm/components/avatar/AvatarGroup.js +22 -4
- package/dist/esm/components/badge/Badge.js +36 -7
- package/dist/esm/components/breadcrumbs/Breadcrumbs.js +39 -8
- package/dist/esm/components/button/Button.js +42 -15
- package/dist/esm/components/button/ButtonGroup.js +31 -4
- package/dist/esm/components/button/ConfirmButton.js +32 -4
- package/dist/esm/components/button/ToggleButtonGroup.js +42 -16
- package/dist/esm/components/callout/Callout.js +44 -4
- package/dist/esm/components/card/Card.js +49 -11
- package/dist/esm/components/card/CardCover.js +36 -5
- package/dist/esm/components/card/FlipContent.js +56 -0
- package/dist/esm/components/chip/Chip.js +33 -8
- package/dist/esm/components/collapsable/Collapsable.js +32 -6
- package/dist/esm/components/divider/Divider.js +31 -8
- package/dist/esm/components/dropdown/Dropdown.js +48 -9
- package/dist/esm/components/dropdown/DropdownTool.js +4 -3
- package/dist/esm/components/empty/EmptyContent.js +35 -5
- package/dist/esm/components/icon/Icon.js +44 -16
- package/dist/esm/components/media/Media.js +173 -76
- package/dist/esm/components/menu/ContextMenu.js +51 -12
- package/dist/esm/components/menu/Menu.js +76 -23
- package/dist/esm/components/menu/MenuItem.js +45 -10
- package/dist/esm/components/meter/Meter.js +26 -3
- package/dist/esm/components/navigator/Navigator.js +48 -13
- package/dist/esm/components/panel/Panel.js +47 -9
- package/dist/esm/components/panel/PanelGroup.js +25 -2
- package/dist/esm/components/panel/PanelStack.js +31 -0
- package/dist/esm/components/progress/ProgressBar.js +31 -9
- package/dist/esm/components/progress/ProgressCircle.js +29 -7
- package/dist/esm/components/tabpanel/Tab.js +90 -39
- package/dist/esm/components/tabpanel/TabPanel.js +53 -16
- package/dist/esm/context/Global.js +28 -1
- package/dist/esm/context/NotificationCenter.js +3 -3
- package/dist/esm/core/aside/Aside.js +49 -11
- package/dist/esm/core/boundary/ErrorBoundary.js +23 -8
- package/dist/esm/core/boundary/ErrorIcon.js +1 -2
- package/dist/esm/core/content/Content.js +15 -8
- package/dist/esm/core/headfoot/HeadFoot.js +44 -20
- package/dist/esm/core/page/Page.js +40 -29
- package/dist/esm/core/responsive/Responsive.js +59 -6
- package/dist/esm/core/section/Section.js +1 -2
- package/dist/esm/core/theme/ThemeProvider.js +32 -10
- package/dist/esm/core/viewport/Viewport.js +18 -2
- package/dist/esm/hooks/useControlledValue.js +12 -0
- package/dist/esm/hooks/useDebounce.js +14 -1
- package/dist/esm/hooks/useEffectDebugger.js +54 -2
- package/dist/esm/hooks/useIsDark.js +8 -0
- package/dist/esm/hooks/useIsRtl.js +12 -0
- package/dist/esm/hooks/useNavigator.js +7 -5
- package/dist/esm/hooks/useOverlayService.js +24 -0
- package/dist/esm/hooks/usePropToggle.js +16 -5
- package/dist/esm/hooks/useResize.js +18 -0
- package/dist/esm/hooks/useResizeObserver.js +20 -1
- package/dist/esm/hooks/useStorage.js +39 -0
- package/dist/esm/hotkeys/HotKeyLabel.js +1 -1
- package/dist/esm/hotkeys/HotKeyWrapper.js +3 -1
- package/dist/esm/index.js +4 -1
- package/dist/esm/overlays/alert/Alert.js +21 -15
- package/dist/esm/overlays/flyout/Flyout.js +52 -63
- package/dist/esm/overlays/message/Message.js +7 -4
- package/dist/esm/overlays/modal/Modal.js +17 -13
- package/dist/esm/overlays/toast/Toast.js +18 -10
- package/dist/esm/overlays/tooltip/Tooltip.js +24 -11
- package/dist/esm/types/icons.js +10 -1
- package/dist/esm/typography/Abbr.js +32 -6
- package/dist/esm/typography/{Link.js → Anchor.js} +24 -6
- package/dist/esm/typography/Mark.js +22 -4
- package/dist/esm/typography/Text.js +31 -6
- package/dist/esm/typography/Title.js +20 -5
- package/dist/esm/utils/cloneElement.js +47 -0
- package/dist/esm/utils/getColor.js +2 -16
- package/dist/types/components/actionLabel/ActionLabel.d.ts +23 -4
- package/dist/types/components/animations/Animations.d.ts +84 -5
- package/dist/types/components/avatar/Avatar.d.ts +29 -5
- package/dist/types/components/avatar/AvatarGroup.d.ts +19 -1
- package/dist/types/components/badge/Badge.d.ts +30 -1
- package/dist/types/components/breadcrumbs/Breadcrumbs.d.ts +31 -2
- package/dist/types/components/button/Button.d.ts +29 -6
- package/dist/types/components/button/ButtonGroup.d.ts +28 -3
- package/dist/types/components/button/ConfirmButton.d.ts +28 -3
- package/dist/types/components/button/ToggleButtonGroup.d.ts +39 -11
- package/dist/types/components/callout/Callout.d.ts +29 -3
- package/dist/types/components/card/Card.d.ts +42 -4
- package/dist/types/components/card/CardCover.d.ts +25 -0
- package/dist/types/components/card/FlipContent.d.ts +28 -0
- package/dist/types/components/chip/Chip.d.ts +24 -4
- package/dist/types/components/collapsable/Collapsable.d.ts +33 -3
- package/dist/types/components/divider/Divider.d.ts +30 -7
- package/dist/types/components/dropdown/Dropdown.d.ts +40 -1
- package/dist/types/components/dropdown/DropdownTool.d.ts +27 -1
- package/dist/types/components/empty/EmptyContent.d.ts +32 -3
- package/dist/types/components/icon/Icon.d.ts +32 -6
- package/dist/types/components/index.d.ts +2 -1
- package/dist/types/components/media/Media.d.ts +56 -2
- package/dist/types/components/menu/ContextMenu.d.ts +21 -2
- package/dist/types/components/menu/Menu.d.ts +29 -0
- package/dist/types/components/menu/MenuItem.d.ts +22 -2
- package/dist/types/components/menu/types.d.ts +3 -2
- package/dist/types/components/meter/Meter.d.ts +24 -0
- package/dist/types/components/navigator/Navigator.d.ts +29 -4
- package/dist/types/components/panel/Panel.d.ts +37 -1
- package/dist/types/components/panel/PanelGroup.d.ts +24 -0
- package/dist/types/components/panel/PanelStack.d.ts +31 -0
- package/dist/types/components/progress/ProgressBar.d.ts +23 -3
- package/dist/types/components/progress/ProgressCircle.d.ts +22 -3
- package/dist/types/components/tabpanel/Tab.d.ts +36 -5
- package/dist/types/components/tabpanel/TabPanel.d.ts +43 -1
- package/dist/types/context/Global.d.ts +24 -1
- package/dist/types/core/aside/Aside.d.ts +38 -1
- package/dist/types/core/boundary/ErrorBoundary.d.ts +18 -2
- package/dist/types/core/content/Content.d.ts +9 -3
- package/dist/types/core/headfoot/HeadFoot.d.ts +41 -9
- package/dist/types/core/page/Page.d.ts +29 -4
- package/dist/types/core/responsive/Responsive.d.ts +58 -3
- package/dist/types/core/section/Section.d.ts +16 -1
- package/dist/types/core/theme/ThemeProvider.d.ts +25 -5
- package/dist/types/core/viewport/Viewport.d.ts +15 -1
- package/dist/types/hooks/useControlledValue.d.ts +13 -2
- package/dist/types/hooks/useDebounce.d.ts +12 -0
- package/dist/types/hooks/useEffectDebugger.d.ts +49 -0
- package/dist/types/hooks/useIsDark.d.ts +8 -0
- package/dist/types/hooks/useIsRtl.d.ts +12 -0
- package/dist/types/hooks/useNavigator.d.ts +18 -1
- package/dist/types/hooks/useOverlayService.d.ts +28 -9
- package/dist/types/hooks/usePropToggle.d.ts +16 -5
- package/dist/types/hooks/useResize.d.ts +19 -1
- package/dist/types/hooks/useResizeObserver.d.ts +20 -1
- package/dist/types/hooks/useStorage.d.ts +38 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/overlays/alert/Alert.d.ts +2 -3
- package/dist/types/overlays/flyout/Flyout.d.ts +3 -2
- package/dist/types/overlays/message/Message.d.ts +2 -3
- package/dist/types/overlays/modal/Modal.d.ts +12 -3
- package/dist/types/overlays/toast/Toast.d.ts +2 -3
- package/dist/types/overlays/tooltip/Tooltip.d.ts +2 -2
- package/dist/types/types/icons.d.ts +10 -1
- package/dist/types/types/index.d.ts +26 -6
- package/dist/types/typography/Abbr.d.ts +34 -4
- package/dist/types/typography/Anchor.d.ts +42 -0
- package/dist/types/typography/Copy.d.ts +15 -0
- package/dist/types/typography/Mark.d.ts +22 -4
- package/dist/types/typography/Text.d.ts +27 -1
- package/dist/types/typography/Title.d.ts +16 -1
- package/dist/types/typography/index.d.ts +1 -1
- package/dist/types/utils/cloneElement.d.ts +2 -0
- package/dist/types/utils/getColor.d.ts +1 -4
- package/dist/types/utils/index.d.ts +1 -0
- package/package.json +11 -13
- package/src/components/actionLabel/ActionLabel.tsx +38 -11
- package/src/components/animations/Animations.tsx +118 -33
- package/src/components/avatar/Avatar.tsx +106 -91
- package/src/components/avatar/AvatarGroup.tsx +23 -5
- package/src/components/badge/Badge.tsx +41 -9
- package/src/components/breadcrumbs/Breadcrumbs.tsx +42 -9
- package/src/components/button/Button.tsx +50 -23
- package/src/components/button/ButtonGroup.tsx +33 -7
- package/src/components/button/ConfirmButton.tsx +41 -7
- package/src/components/button/ToggleButtonGroup.tsx +74 -47
- package/src/components/callout/Callout.tsx +55 -12
- package/src/components/card/Card.tsx +64 -15
- package/src/components/card/CardCover.tsx +36 -6
- package/src/components/card/FlipContent.tsx +90 -0
- package/src/components/chip/Chip.tsx +39 -13
- package/src/components/collapsable/Collapsable.tsx +38 -7
- package/src/components/divider/Divider.tsx +42 -16
- package/src/components/dropdown/Dropdown.tsx +46 -11
- package/src/components/dropdown/DropdownTool.tsx +30 -3
- package/src/components/empty/EmptyContent.tsx +47 -6
- package/src/components/icon/Icon.tsx +85 -68
- package/src/components/index.ts +2 -1
- package/src/components/media/Media.tsx +195 -106
- package/src/components/menu/ContextMenu.tsx +55 -11
- package/src/components/menu/Menu.tsx +85 -30
- package/src/components/menu/MenuItem.tsx +40 -9
- package/src/components/menu/types.ts +3 -2
- package/src/components/meter/Meter.tsx +26 -3
- package/src/components/navigator/Navigator.tsx +58 -7
- package/src/components/panel/Panel.tsx +47 -9
- package/src/components/panel/PanelGroup.tsx +25 -2
- package/src/components/panel/PanelStack.tsx +31 -0
- package/src/components/progress/ProgressBar.tsx +33 -14
- package/src/components/progress/ProgressCircle.tsx +29 -13
- package/src/components/tabpanel/Tab.tsx +112 -64
- package/src/components/tabpanel/TabPanel.tsx +67 -12
- package/src/context/Global.tsx +28 -1
- package/src/context/NotificationCenter.tsx +3 -3
- package/src/core/aside/Aside.tsx +50 -12
- package/src/core/boundary/ErrorBoundary.tsx +25 -8
- package/src/core/boundary/ErrorIcon.tsx +1 -2
- package/src/core/content/Content.tsx +23 -13
- package/src/core/headfoot/HeadFoot.tsx +42 -35
- package/src/core/page/Page.tsx +44 -6
- package/src/core/responsive/Responsive.tsx +66 -8
- package/src/core/section/Section.tsx +17 -3
- package/src/core/theme/ThemeProvider.tsx +35 -14
- package/src/core/viewport/Viewport.tsx +16 -3
- package/src/hooks/useControlledValue.tsx +12 -0
- package/src/hooks/useDebounce.ts +13 -1
- package/src/hooks/useEffectDebugger.ts +50 -2
- package/src/hooks/useIsDark.ts +8 -0
- package/src/hooks/useIsRtl.ts +12 -0
- package/src/hooks/useNavigator.tsx +28 -5
- package/src/hooks/useOverlayService.tsx +36 -6
- package/src/hooks/usePropToggle.ts +16 -5
- package/src/hooks/useResize.ts +19 -1
- package/src/hooks/useResizeObserver.ts +32 -9
- package/src/hooks/useStorage.ts +38 -0
- package/src/hotkeys/HotKeyLabel.tsx +1 -1
- package/src/hotkeys/HotKeyWrapper.tsx +3 -1
- package/src/index.ts +4 -0
- package/src/overlays/alert/Alert.tsx +28 -32
- package/src/overlays/flyout/Flyout.tsx +71 -84
- package/src/overlays/message/Message.tsx +10 -7
- package/src/overlays/modal/Modal.tsx +37 -15
- package/src/overlays/toast/Toast.tsx +18 -27
- package/src/overlays/tooltip/Tooltip.tsx +43 -18
- package/src/types/icons.ts +18 -3
- package/src/types/index.ts +268 -27
- package/src/typography/Abbr.tsx +44 -11
- package/src/typography/{Link.tsx → Anchor.tsx} +26 -14
- package/src/typography/Copy.tsx +15 -0
- package/src/typography/Mark.tsx +24 -10
- package/src/typography/Text.tsx +31 -13
- package/src/typography/Title.tsx +18 -7
- package/src/typography/index.ts +1 -1
- package/src/{overlays/tooltip/Tooltip.module.css → utils/cloneElement.ts} +21 -27
- package/src/utils/getColor.ts +1 -17
- package/src/utils/index.ts +1 -0
- package/css/index.js +0 -250
- package/css/tailwind/colors.ts +0 -158
- package/dist/cjs/components/actionLabel/ActionLabel.module.css +0 -1
- package/dist/cjs/components/animations/Animations.module.css +0 -1
- package/dist/cjs/components/avatar/Avatar.module.css +0 -1
- package/dist/cjs/components/badge/Badge.module.css +0 -1
- package/dist/cjs/components/breadcrumbs/Breadcrumbs.module.css +0 -1
- package/dist/cjs/components/button/Button.module.css +0 -1
- package/dist/cjs/components/card/Card.module.css +0 -1
- package/dist/cjs/components/chip/Chip.module.css +0 -1
- package/dist/cjs/components/collapsable/Collapsable.module.css +0 -1
- package/dist/cjs/components/dropdown/Dropdown.module.css +0 -1
- package/dist/cjs/components/icon/Icon.module.css +0 -1
- package/dist/cjs/components/media/Media.module.css +0 -1
- package/dist/cjs/components/menu/Menu.module.css +0 -1
- package/dist/cjs/components/meter/Meter.module.css +0 -1
- package/dist/cjs/components/panel/Panel.module.css +0 -1
- package/dist/cjs/components/progress/Progress.module.css +0 -1
- package/dist/cjs/components/tabpanel/TabPanel.module.css +0 -1
- package/dist/cjs/core/aside/Aside.module.css +0 -1
- package/dist/cjs/core/boundary/ErrorBoundary.module.css +0 -1
- package/dist/cjs/core/content/Content.module.css +0 -1
- package/dist/cjs/core/headfoot/HeadFoot.module.css +0 -1
- package/dist/cjs/core/page/Page.module.css +0 -1
- package/dist/cjs/core/responsive/Responsive.module.css +0 -1
- package/dist/cjs/core/section/Section.module.css +0 -1
- package/dist/cjs/core/theme/Theme.module.css +0 -1
- package/dist/cjs/core/viewport/Viewport.module.css +0 -1
- package/dist/cjs/overlays/alert/Alert.module.css +0 -1
- package/dist/cjs/overlays/flyout/Flyout.module.css +0 -1
- package/dist/cjs/overlays/message/Message.module.css +0 -1
- package/dist/cjs/overlays/modal/Modal.module.css +0 -1
- package/dist/cjs/overlays/toast/Toast.module.css +0 -1
- package/dist/cjs/overlays/tooltip/Tooltip.module.css +0 -1
- package/dist/cjs/typography/Typography.module.css +0 -1
- package/dist/esm/components/actionLabel/ActionLabel.module.css +0 -1
- package/dist/esm/components/animations/Animations.module.css +0 -1
- package/dist/esm/components/avatar/Avatar.module.css +0 -1
- package/dist/esm/components/badge/Badge.module.css +0 -1
- package/dist/esm/components/breadcrumbs/Breadcrumbs.module.css +0 -1
- package/dist/esm/components/button/Button.module.css +0 -1
- package/dist/esm/components/card/Card.module.css +0 -1
- package/dist/esm/components/chip/Chip.module.css +0 -1
- package/dist/esm/components/collapsable/Collapsable.module.css +0 -1
- package/dist/esm/components/dropdown/Dropdown.module.css +0 -1
- package/dist/esm/components/icon/Icon.module.css +0 -1
- package/dist/esm/components/media/Media.module.css +0 -1
- package/dist/esm/components/menu/Menu.module.css +0 -1
- package/dist/esm/components/meter/Meter.module.css +0 -1
- package/dist/esm/components/panel/Panel.module.css +0 -1
- package/dist/esm/components/progress/Progress.module.css +0 -1
- package/dist/esm/components/tabpanel/TabPanel.module.css +0 -1
- package/dist/esm/core/aside/Aside.module.css +0 -1
- package/dist/esm/core/boundary/ErrorBoundary.module.css +0 -1
- package/dist/esm/core/content/Content.module.css +0 -1
- package/dist/esm/core/headfoot/HeadFoot.module.css +0 -1
- package/dist/esm/core/page/Page.module.css +0 -1
- package/dist/esm/core/responsive/Responsive.module.css +0 -1
- package/dist/esm/core/section/Section.module.css +0 -1
- package/dist/esm/core/theme/Theme.module.css +0 -1
- package/dist/esm/core/viewport/Viewport.module.css +0 -1
- package/dist/esm/overlays/alert/Alert.module.css +0 -1
- package/dist/esm/overlays/flyout/Flyout.module.css +0 -1
- package/dist/esm/overlays/message/Message.module.css +0 -1
- package/dist/esm/overlays/modal/Modal.module.css +0 -1
- package/dist/esm/overlays/toast/Toast.module.css +0 -1
- package/dist/esm/overlays/tooltip/Tooltip.module.css +0 -1
- package/dist/esm/typography/Typography.module.css +0 -1
- package/dist/types/typography/Link.d.ts +0 -25
|
@@ -24,12 +24,12 @@
|
|
|
24
24
|
import { Format } from "@react-fabric/utilities";
|
|
25
25
|
import classNames from "classnames";
|
|
26
26
|
import { useMemoDebugger } from "../../hooks/useEffectDebugger";
|
|
27
|
-
import { type ColorType } from "../../types";
|
|
28
|
-
import {
|
|
27
|
+
import { type PaletteType, type ColorType } from "../../types";
|
|
28
|
+
import { getColor } from "../../utils";
|
|
29
29
|
|
|
30
30
|
export interface ProgressProps {
|
|
31
31
|
/**
|
|
32
|
-
* progress value (0-
|
|
32
|
+
* progress value (0-1)
|
|
33
33
|
*/
|
|
34
34
|
value: number;
|
|
35
35
|
/**
|
|
@@ -39,7 +39,7 @@ export interface ProgressProps {
|
|
|
39
39
|
/**
|
|
40
40
|
* color
|
|
41
41
|
*/
|
|
42
|
-
color?: ColorType;
|
|
42
|
+
color?: ColorType | PaletteType;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
const SizeMap: KeyValue = {
|
|
@@ -50,14 +50,33 @@ const SizeMap: KeyValue = {
|
|
|
50
50
|
xl: "2rem",
|
|
51
51
|
};
|
|
52
52
|
|
|
53
|
+
/**
|
|
54
|
+
* A circular progress indicator that visually represents a percentage of completion.
|
|
55
|
+
* It displays a circular track with a stroke that fills based on the `value` prop.
|
|
56
|
+
* The component is customizable with size and color props.
|
|
57
|
+
*
|
|
58
|
+
* @param {ProgressProps} props - The properties for the ProgressCircle component.
|
|
59
|
+
* @returns {JSX.Element} - A circular progress indicator.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```jsx
|
|
63
|
+
* <ProgressCircle value={0.75} size="md" color="primary-500" />
|
|
64
|
+
* // Renders a circular progress indicator with 75% completion, medium size, and primary color.
|
|
65
|
+
*
|
|
66
|
+
* <ProgressCircle value={0.5} size="lg" color="secondary-500" />
|
|
67
|
+
* // Renders a circular progress indicator with 50% completion, large size, and secondary color.
|
|
68
|
+
* ```
|
|
69
|
+
*
|
|
70
|
+
* @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-progress--docs} for more details.
|
|
71
|
+
*/
|
|
53
72
|
export const ProgressCircle = ({
|
|
54
73
|
value = 0,
|
|
55
74
|
size = "sm",
|
|
56
|
-
color = "primary",
|
|
75
|
+
color = "primary-500",
|
|
57
76
|
}: ProgressProps) => {
|
|
58
77
|
/** ***************** make sure value is between 0 and 100 *******************/
|
|
59
78
|
const actualValue = useMemoDebugger(
|
|
60
|
-
() => Math.min(Math.max(value, 0),
|
|
79
|
+
() => Math.min(Math.max(value, 0), 1),
|
|
61
80
|
[value],
|
|
62
81
|
"ProgressCirle value",
|
|
63
82
|
);
|
|
@@ -66,7 +85,7 @@ export const ProgressCircle = ({
|
|
|
66
85
|
const strokeDashoffset = useMemoDebugger(
|
|
67
86
|
() => {
|
|
68
87
|
const circumfrence = Math.PI * 2 * 44;
|
|
69
|
-
return circumfrence * (1 - actualValue
|
|
88
|
+
return circumfrence * (1 - actualValue);
|
|
70
89
|
},
|
|
71
90
|
[actualValue],
|
|
72
91
|
"ProgressCirle dashOffset",
|
|
@@ -75,12 +94,9 @@ export const ProgressCircle = ({
|
|
|
75
94
|
/** ***************** component *******************/
|
|
76
95
|
return (
|
|
77
96
|
<div
|
|
78
|
-
className={classNames(
|
|
79
|
-
"inline-block w-[4em] h-[4em] text-lg relative",
|
|
80
|
-
getColorClass(color),
|
|
81
|
-
)}
|
|
97
|
+
className={classNames("inline-block w-[4em] h-[4em] text-lg relative")}
|
|
82
98
|
aria-hidden="true"
|
|
83
|
-
style={{ fontSize: SizeMap[size] }}
|
|
99
|
+
style={{ fontSize: SizeMap[size], color: getColor(color) }}
|
|
84
100
|
>
|
|
85
101
|
<svg
|
|
86
102
|
viewBox="0 0 100 100"
|
|
@@ -111,7 +127,7 @@ export const ProgressCircle = ({
|
|
|
111
127
|
/>
|
|
112
128
|
</svg>
|
|
113
129
|
<span className="flex w-full h-full items-center justify-center select-none font-bold text-[0.625em]">
|
|
114
|
-
{Format.percent(actualValue
|
|
130
|
+
{Format.percent(actualValue)}
|
|
115
131
|
</span>
|
|
116
132
|
</div>
|
|
117
133
|
);
|
|
@@ -21,24 +21,26 @@
|
|
|
21
21
|
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
22
22
|
*/
|
|
23
23
|
|
|
24
|
+
import { isString } from "@react-fabric/utilities";
|
|
24
25
|
import classNames from "classnames";
|
|
25
|
-
import { type ReactElement, useMemo } from "react";
|
|
26
|
+
import { Fragment, type ReactElement, useMemo } from "react";
|
|
27
|
+
import { Tooltip } from "../../overlays";
|
|
26
28
|
import {
|
|
27
29
|
type AriaProps,
|
|
28
30
|
type BadgeType,
|
|
29
31
|
type CallbackReturn,
|
|
30
32
|
type ChildrenProp,
|
|
31
|
-
type
|
|
33
|
+
type ColorState,
|
|
32
34
|
type CssProp,
|
|
33
35
|
type IconProps,
|
|
34
36
|
type PolymorphicProps,
|
|
35
37
|
type RefProp,
|
|
36
38
|
type TestProps,
|
|
39
|
+
type TooltipProp,
|
|
37
40
|
} from "../../types";
|
|
38
41
|
import { Badge, getBadgeProps } from "../badge/Badge";
|
|
39
42
|
import { DropdownTool } from "../dropdown/DropdownTool";
|
|
40
43
|
import { Icon } from "../icon/Icon";
|
|
41
|
-
import classes from "./TabPanel.module.css";
|
|
42
44
|
|
|
43
45
|
export interface TabProps
|
|
44
46
|
extends Partial<ChildrenProp>,
|
|
@@ -46,7 +48,8 @@ export interface TabProps
|
|
|
46
48
|
RefProp,
|
|
47
49
|
AriaProps,
|
|
48
50
|
TestProps,
|
|
49
|
-
IconProps
|
|
51
|
+
IconProps,
|
|
52
|
+
TooltipProp {
|
|
50
53
|
/**
|
|
51
54
|
* tab id
|
|
52
55
|
*/
|
|
@@ -58,11 +61,11 @@ export interface TabProps
|
|
|
58
61
|
/**
|
|
59
62
|
* tab color
|
|
60
63
|
*/
|
|
61
|
-
color?:
|
|
64
|
+
color?: ColorState;
|
|
62
65
|
/**
|
|
63
66
|
* tab badge
|
|
64
67
|
*/
|
|
65
|
-
badge?: BadgeType;
|
|
68
|
+
badge?: string | number | BadgeType;
|
|
66
69
|
/**
|
|
67
70
|
* disabled
|
|
68
71
|
*/
|
|
@@ -89,6 +92,37 @@ export interface TabProps
|
|
|
89
92
|
onClick?: (id: string) => CallbackReturn;
|
|
90
93
|
}
|
|
91
94
|
|
|
95
|
+
/**
|
|
96
|
+
* A component that represents a tab in a tabbed interface. It can display an icon, label, badge, and actions.
|
|
97
|
+
* It supports polymorphic rendering, allowing it to be rendered as different HTML elements.
|
|
98
|
+
* It also supports tooltips, active states, and click handling.
|
|
99
|
+
*
|
|
100
|
+
* @param {TabProps} props - The properties for the Tab component.
|
|
101
|
+
* @returns {JSX.Element} The rendered Tab component.
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```jsx
|
|
105
|
+
* <Tab
|
|
106
|
+
* id="tab1"
|
|
107
|
+
* label="Tab 1"
|
|
108
|
+
* icon="home"
|
|
109
|
+
* iconBg="bg-blue-500"
|
|
110
|
+
* iconColor="text-white"
|
|
111
|
+
* badge="New"
|
|
112
|
+
* onClick={(id) => console.log(`Tab clicked: ${id}`)}
|
|
113
|
+
* onClose={() => console.log("Tab closed")}
|
|
114
|
+
* active={true}
|
|
115
|
+
* actions={<button>Action</button>}
|
|
116
|
+
* color="primary"
|
|
117
|
+
* tooltip="This is a tab"
|
|
118
|
+
* activeClassName="bg-blue-100"
|
|
119
|
+
* />
|
|
120
|
+
* // Renders a tab with label "Tab 1", home icon, blue background, white text, badge "New",
|
|
121
|
+
* // and an action button. The tab is active and has a tooltip.
|
|
122
|
+
* ```
|
|
123
|
+
*
|
|
124
|
+
* @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-tabpanel--docs} for more details.
|
|
125
|
+
*/
|
|
92
126
|
export const Tab = <Tag extends React.ElementType = "button">({
|
|
93
127
|
ref,
|
|
94
128
|
as,
|
|
@@ -104,12 +138,11 @@ export const Tab = <Tag extends React.ElementType = "button">({
|
|
|
104
138
|
onClose,
|
|
105
139
|
// @ts-expect-error ignore
|
|
106
140
|
active,
|
|
107
|
-
// @ts-expect-error ignore
|
|
108
|
-
minimal,
|
|
109
141
|
onClick,
|
|
110
142
|
tabFlex,
|
|
111
143
|
color,
|
|
112
144
|
actions,
|
|
145
|
+
tooltip,
|
|
113
146
|
activeClassName,
|
|
114
147
|
...aria
|
|
115
148
|
}: TabProps & PolymorphicProps<Tag>) => {
|
|
@@ -117,63 +150,78 @@ export const Tab = <Tag extends React.ElementType = "button">({
|
|
|
117
150
|
return getBadgeProps(badge);
|
|
118
151
|
}, [badge]);
|
|
119
152
|
|
|
153
|
+
const minimal = useMemo(() => !label, [label]);
|
|
154
|
+
|
|
155
|
+
const tooltipProps = useMemo(() => {
|
|
156
|
+
if (isString(tooltip)) return { content: tooltip };
|
|
157
|
+
|
|
158
|
+
return tooltip ?? {};
|
|
159
|
+
}, [tooltip]);
|
|
160
|
+
|
|
120
161
|
const E = as ?? "button";
|
|
162
|
+
const W = tooltip ? Tooltip : Fragment;
|
|
121
163
|
return (
|
|
122
|
-
<
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
className
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
164
|
+
<W {...tooltipProps}>
|
|
165
|
+
<E
|
|
166
|
+
data-id={id}
|
|
167
|
+
disabled={disabled}
|
|
168
|
+
data-color={color}
|
|
169
|
+
data-inner-clickable
|
|
170
|
+
className={classNames(
|
|
171
|
+
"fabric-tabButton",
|
|
172
|
+
className,
|
|
173
|
+
active && "active pointer-events-none",
|
|
174
|
+
active && activeClassName,
|
|
175
|
+
disabled && "text-tint-500 pointer-events-none",
|
|
176
|
+
tabFlex ? "flex-1" : "flex-initial max-w-36",
|
|
177
|
+
minimal ? "min-w-6" : "min-w-18",
|
|
178
|
+
"flex items-center justify-center px-1 rounded overflow-hidden cursor-pointer",
|
|
179
|
+
)}
|
|
180
|
+
onClick={() => !active && onClick?.(id)}
|
|
181
|
+
ref={ref as AnyObject}
|
|
182
|
+
{...aria}
|
|
183
|
+
>
|
|
184
|
+
{icon && (
|
|
185
|
+
<Icon
|
|
186
|
+
icon={icon}
|
|
187
|
+
bg={iconBg}
|
|
188
|
+
color={iconColor}
|
|
189
|
+
rtlFlip={rtlFlip}
|
|
190
|
+
className="flex-content p-2"
|
|
191
|
+
/>
|
|
192
|
+
)}
|
|
193
|
+
{!minimal && (
|
|
194
|
+
<label className="flex-initial truncate text-center px-1 py-1">
|
|
195
|
+
{label}
|
|
196
|
+
</label>
|
|
197
|
+
)}
|
|
198
|
+
{badge && (
|
|
199
|
+
<Badge
|
|
200
|
+
{...badgeProps}
|
|
201
|
+
placement={minimal ? "end" : ""}
|
|
202
|
+
className={classNames("me-1", badgeProps.className)}
|
|
203
|
+
/>
|
|
204
|
+
)}
|
|
205
|
+
{actions && active && (
|
|
206
|
+
<DropdownTool className="bg-tint-50/20 me-1 z-5">
|
|
207
|
+
{actions}
|
|
208
|
+
</DropdownTool>
|
|
209
|
+
)}
|
|
210
|
+
{onClose && (
|
|
211
|
+
<span
|
|
212
|
+
role="none"
|
|
213
|
+
className={classNames(
|
|
214
|
+
"cursor-pointer me-1 opacity-65 hover:opacity-90 pointer-events-auto",
|
|
215
|
+
)}
|
|
216
|
+
onClick={(e) => {
|
|
217
|
+
onClose?.();
|
|
218
|
+
e.stopPropagation();
|
|
219
|
+
}}
|
|
220
|
+
>
|
|
221
|
+
×
|
|
222
|
+
</span>
|
|
223
|
+
)}
|
|
224
|
+
</E>
|
|
225
|
+
</W>
|
|
178
226
|
);
|
|
179
227
|
};
|
|
@@ -25,6 +25,7 @@ import classNames from "classnames";
|
|
|
25
25
|
import {
|
|
26
26
|
Children,
|
|
27
27
|
cloneElement,
|
|
28
|
+
type ReactNode,
|
|
28
29
|
useCallback,
|
|
29
30
|
useEffect,
|
|
30
31
|
useMemo,
|
|
@@ -33,7 +34,6 @@ import {
|
|
|
33
34
|
import { type CallbackReturn, type ChildrenProp } from "../../types";
|
|
34
35
|
import { nodeCheck } from "../../utils";
|
|
35
36
|
import { Tab } from "./Tab";
|
|
36
|
-
import classes from "./TabPanel.module.css";
|
|
37
37
|
|
|
38
38
|
export interface TabPanelProps extends ChildrenProp<typeof Tab> {
|
|
39
39
|
/**
|
|
@@ -64,6 +64,14 @@ export interface TabPanelProps extends ChildrenProp<typeof Tab> {
|
|
|
64
64
|
* tab list className
|
|
65
65
|
*/
|
|
66
66
|
headerClassName?: string;
|
|
67
|
+
/**
|
|
68
|
+
* append element
|
|
69
|
+
*/
|
|
70
|
+
append?: ReactNode;
|
|
71
|
+
/**
|
|
72
|
+
* prepend element
|
|
73
|
+
*/
|
|
74
|
+
prepend?: ReactNode;
|
|
67
75
|
/**
|
|
68
76
|
* change handler
|
|
69
77
|
*/
|
|
@@ -76,6 +84,39 @@ export interface TabPanelProps extends ChildrenProp<typeof Tab> {
|
|
|
76
84
|
|
|
77
85
|
// TODO: implement append/prepend tab-bar items
|
|
78
86
|
|
|
87
|
+
/**
|
|
88
|
+
* A component that provides a tabbed interface for displaying content.
|
|
89
|
+
* It allows users to switch between different tabs, each containing its own content.
|
|
90
|
+
* It supports various orientations, justify options, and variants for the tab header.
|
|
91
|
+
* It also provides hooks for handling tab changes before and after they occur.
|
|
92
|
+
* This component is useful for organizing content into separate sections that can be easily navigated by the user.
|
|
93
|
+
* It can be customized with different styles and behaviors to fit the needs of the application.
|
|
94
|
+
*
|
|
95
|
+
* @param {TabPanelProps} props - The properties for the TabPanel component.
|
|
96
|
+
* @returns {JSX.Element} The rendered TabPanel component.
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* ```jsx
|
|
100
|
+
* <TabPanel
|
|
101
|
+
* orientation="top"
|
|
102
|
+
* activeTab="tab1"
|
|
103
|
+
* justify="start"
|
|
104
|
+
* variant="solid"
|
|
105
|
+
* tabFlex={true}
|
|
106
|
+
* onBeforeChange={(nextTab, currentTab) => {
|
|
107
|
+
* console.log(`Switching from ${currentTab} to ${nextTab}`);
|
|
108
|
+
* return true; // or false to prevent change
|
|
109
|
+
* }}
|
|
110
|
+
* onChange={(id) => console.log(`Active tab changed to: ${id}`)}
|
|
111
|
+
* >
|
|
112
|
+
* <Tab id="tab1" label="Tab 1">Content for Tab 1</Tab>
|
|
113
|
+
* <Tab id="tab2" label="Tab 2">Content for Tab 2</Tab>
|
|
114
|
+
* <Tab id="tab3" label="Tab 3">Content for Tab 3</Tab>
|
|
115
|
+
* </TabPanel>
|
|
116
|
+
* ```
|
|
117
|
+
*
|
|
118
|
+
* @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-tabpanel--docs} for more details.
|
|
119
|
+
*/
|
|
79
120
|
export const TabPanel = ({
|
|
80
121
|
children,
|
|
81
122
|
headerClassName,
|
|
@@ -84,6 +125,8 @@ export const TabPanel = ({
|
|
|
84
125
|
justify,
|
|
85
126
|
variant,
|
|
86
127
|
tabFlex,
|
|
128
|
+
append,
|
|
129
|
+
prepend,
|
|
87
130
|
gap,
|
|
88
131
|
onBeforeChange,
|
|
89
132
|
onChange,
|
|
@@ -124,7 +167,7 @@ export const TabPanel = ({
|
|
|
124
167
|
return (
|
|
125
168
|
<div
|
|
126
169
|
className={classNames(
|
|
127
|
-
|
|
170
|
+
"fabric-tabPanel",
|
|
128
171
|
"area-content grid bg-base overflow-hidden",
|
|
129
172
|
)}
|
|
130
173
|
data-orientation={orientation}
|
|
@@ -132,21 +175,33 @@ export const TabPanel = ({
|
|
|
132
175
|
>
|
|
133
176
|
<div
|
|
134
177
|
className={classNames(
|
|
135
|
-
|
|
178
|
+
"fabric-tabHeader",
|
|
136
179
|
headerClassName,
|
|
137
180
|
justify && `justify-${justify}`,
|
|
138
181
|
["start", "end"].includes(orientation) && "flex-col",
|
|
139
|
-
"flex flex-nowrap overflow-
|
|
182
|
+
"flex flex-nowrap overflow-hidden items-center",
|
|
140
183
|
)}
|
|
141
|
-
style={{ gap }}
|
|
142
184
|
>
|
|
143
|
-
{
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
185
|
+
{prepend}
|
|
186
|
+
<div
|
|
187
|
+
className={classNames(
|
|
188
|
+
"fabric-tabList",
|
|
189
|
+
justify && `justify-${justify}`,
|
|
190
|
+
["start", "end"].includes(orientation) && "flex-col",
|
|
191
|
+
["bottom", "end"].includes(orientation) ? "self-start" : "self-end",
|
|
192
|
+
"flex flex-1 flex-nowrap overflow-auto scroll-thin",
|
|
193
|
+
)}
|
|
194
|
+
style={{ gap }}
|
|
195
|
+
>
|
|
196
|
+
{tabs.map((node: AnyObject) =>
|
|
197
|
+
cloneElement(node, {
|
|
198
|
+
tabFlex: node.props.tabFlex ?? tabFlex,
|
|
199
|
+
onClick: handleClick,
|
|
200
|
+
active: node.props.id === active,
|
|
201
|
+
}),
|
|
202
|
+
)}
|
|
203
|
+
</div>
|
|
204
|
+
{append}
|
|
150
205
|
</div>
|
|
151
206
|
{rest}
|
|
152
207
|
{activeTabPanel}
|
package/src/context/Global.tsx
CHANGED
|
@@ -146,6 +146,10 @@ export const ApplicationProvider: FC<GlobalProps> = ({
|
|
|
146
146
|
defaultLocale ?? systemLocale(),
|
|
147
147
|
);
|
|
148
148
|
|
|
149
|
+
useEffect(() => {
|
|
150
|
+
defaultColorScheme && setColorScheme(defaultColorScheme);
|
|
151
|
+
}, [defaultColorScheme]);
|
|
152
|
+
|
|
149
153
|
/** ***************** set initial theme and locale dir *******************/
|
|
150
154
|
useEffect(() => {
|
|
151
155
|
document.documentElement.lang = locale;
|
|
@@ -228,13 +232,36 @@ export const ApplicationProvider: FC<GlobalProps> = ({
|
|
|
228
232
|
export const useGlobals = () => useContext(GlobalContext);
|
|
229
233
|
|
|
230
234
|
/**
|
|
231
|
-
* global application context
|
|
235
|
+
* Hook to access the global application context.
|
|
236
|
+
* This hook provides access to the global context values, including the current locale, calendar, and color scheme.
|
|
237
|
+
*
|
|
238
|
+
* @returns {GlobalContextType} The global context values excluding the error element.
|
|
239
|
+
*
|
|
240
|
+
* @example
|
|
241
|
+
* ```jsx
|
|
242
|
+
* const { changeLocale, currentLocale, toggleColorScheme } = useApplicationContext();
|
|
243
|
+
* ```
|
|
232
244
|
*/
|
|
233
245
|
export const useApplicationContext = () => {
|
|
234
246
|
const { errorElement, ...rest } = useContext(GlobalContext);
|
|
235
247
|
return rest;
|
|
236
248
|
};
|
|
237
249
|
|
|
250
|
+
/**
|
|
251
|
+
* Hook to access the notification manager from the global context.
|
|
252
|
+
* This hook provides methods to show alerts, errors, messages, and toasts.
|
|
253
|
+
* It returns a reference to the notification manager, which can be used to display notifications in the application.
|
|
254
|
+
*
|
|
255
|
+
* @returns {NotificationManagerRef} The notification manager reference.
|
|
256
|
+
*
|
|
257
|
+
* @example
|
|
258
|
+
* ```jsx
|
|
259
|
+
* const notificationService = useNotificationService();
|
|
260
|
+
* notificationService.showMessage("Hello World");
|
|
261
|
+
* ```
|
|
262
|
+
*
|
|
263
|
+
* @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-notifications--notifications} for more details on available methods.
|
|
264
|
+
*/
|
|
238
265
|
export const useNotificationService = () => {
|
|
239
266
|
const { notificationManager } = useContext(GlobalContext);
|
|
240
267
|
return notificationManager ?? {};
|
|
@@ -194,7 +194,7 @@ export const NotificationManager = ({ onLoad }: KeyValue) => {
|
|
|
194
194
|
{createPortal(
|
|
195
195
|
<div
|
|
196
196
|
style={{ zIndex: "var(--z-overlay)" }}
|
|
197
|
-
className="
|
|
197
|
+
className="fabric-container__overlays pointer-events-none fixed inset-0 p-4 bg-transparent"
|
|
198
198
|
>
|
|
199
199
|
{Object.values(alerts).map(([el]: AnyObject) => el)}
|
|
200
200
|
</div>,
|
|
@@ -203,7 +203,7 @@ export const NotificationManager = ({ onLoad }: KeyValue) => {
|
|
|
203
203
|
{createPortal(
|
|
204
204
|
<div
|
|
205
205
|
style={{ zIndex: "var(--z-notifications)" }}
|
|
206
|
-
className="
|
|
206
|
+
className="fabric-container__notifs flex flex-nowrap pointer-events-none fixed inset-0 p-2 bg-transparent flex-col-reverse items-center justify-end"
|
|
207
207
|
>
|
|
208
208
|
{Object.values(messages).map(([el]: AnyObject) => el)}
|
|
209
209
|
</div>,
|
|
@@ -212,7 +212,7 @@ export const NotificationManager = ({ onLoad }: KeyValue) => {
|
|
|
212
212
|
{createPortal(
|
|
213
213
|
<div
|
|
214
214
|
style={{ zIndex: "var(--z-notifications)" }}
|
|
215
|
-
className="
|
|
215
|
+
className="fabric-container__toasts flex flex-nowrap pointer-events-none fixed inset-0 p-4 bg-transparent flex-col items-end justify-end overflow-auto scroll-hide"
|
|
216
216
|
>
|
|
217
217
|
{Object.values(toasts).map(([el]: AnyObject) => el)}
|
|
218
218
|
</div>,
|
package/src/core/aside/Aside.tsx
CHANGED
|
@@ -45,7 +45,6 @@ import {
|
|
|
45
45
|
} from "../../types";
|
|
46
46
|
import { CoreIcons } from "../../types/icons";
|
|
47
47
|
import { ErrorBoundary } from "../boundary/ErrorBoundary";
|
|
48
|
-
import classes from "./Aside.module.css";
|
|
49
48
|
|
|
50
49
|
export interface AsideProps
|
|
51
50
|
extends IconProps,
|
|
@@ -106,7 +105,44 @@ export interface AsideProps
|
|
|
106
105
|
}
|
|
107
106
|
|
|
108
107
|
/**
|
|
109
|
-
*
|
|
108
|
+
* A sidebar component that can be collapsed, resized, and has a flyout feature.
|
|
109
|
+
* It supports a title, icon, actions, and loading state.
|
|
110
|
+
* It can be aligned to the start or end of the page.
|
|
111
|
+
*
|
|
112
|
+
* @param {AsideProps} props - The properties for the Aside component.
|
|
113
|
+
* @returns {JSX.Element} The rendered Aside component.
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```jsx
|
|
117
|
+
* <Aside
|
|
118
|
+
* title="Sidebar Title"
|
|
119
|
+
* icon={CoreIcons.menu}
|
|
120
|
+
* iconBg="bg-gray-200"
|
|
121
|
+
* iconColor="text-gray-800"
|
|
122
|
+
* rtlFlip={true}
|
|
123
|
+
* className="custom-aside"
|
|
124
|
+
* bodyClassName="custom-aside-body"
|
|
125
|
+
* headerClassName="custom-aside-header"
|
|
126
|
+
* resizeable={true}
|
|
127
|
+
* flyout={true}
|
|
128
|
+
* onFlyout={() => console.log("Flyout triggered")}
|
|
129
|
+
* collapsed={false}
|
|
130
|
+
* collapsable={true}
|
|
131
|
+
* onCollapse={() => console.log("Collapsed toggled")}
|
|
132
|
+
* actions={<button>Action</button>}
|
|
133
|
+
* loading={false}
|
|
134
|
+
* align="start"
|
|
135
|
+
* width="20rem"
|
|
136
|
+
* minWidth="2rem"
|
|
137
|
+
* maxWidth="30vw"
|
|
138
|
+
* data-testid="aside-test"
|
|
139
|
+
* data-test-value="aside-value"
|
|
140
|
+
* >
|
|
141
|
+
* <Content>This is the content of the aside.</Content>
|
|
142
|
+
* </Aside>
|
|
143
|
+
* ```
|
|
144
|
+
*
|
|
145
|
+
* @see {@link https://adarshpastakia.github.io/react-fabric/?path=/story/core-application--aside} for more details.
|
|
110
146
|
*/
|
|
111
147
|
export const Aside = ({
|
|
112
148
|
children,
|
|
@@ -197,9 +233,10 @@ export const Aside = ({
|
|
|
197
233
|
|
|
198
234
|
return (
|
|
199
235
|
<aside
|
|
200
|
-
className={classNames(
|
|
236
|
+
className={classNames("fabric-aside", className, "overflow-hidden grid")}
|
|
201
237
|
data-align={align}
|
|
202
238
|
data-flyout={peek}
|
|
239
|
+
data-loading={loading}
|
|
203
240
|
data-collapsed={isCollapsed}
|
|
204
241
|
style={isCollapsed ? undefined : widthStyles}
|
|
205
242
|
data-testid={testId}
|
|
@@ -207,15 +244,16 @@ export const Aside = ({
|
|
|
207
244
|
>
|
|
208
245
|
<header
|
|
209
246
|
className={classNames(
|
|
210
|
-
|
|
247
|
+
"fabric-asideHeader",
|
|
211
248
|
headerClassName,
|
|
212
249
|
"grid area-head items-center",
|
|
213
250
|
)}
|
|
251
|
+
data-ref="asideHeader"
|
|
214
252
|
>
|
|
215
253
|
{title && (
|
|
216
254
|
<div
|
|
217
255
|
className={classNames(
|
|
218
|
-
|
|
256
|
+
"fabric-asideTitle",
|
|
219
257
|
"truncate py-0.5 px-1 select-none pointer-events-none",
|
|
220
258
|
)}
|
|
221
259
|
>
|
|
@@ -225,7 +263,7 @@ export const Aside = ({
|
|
|
225
263
|
{collapsable && (
|
|
226
264
|
<Icon
|
|
227
265
|
aria-label={isCollapsed ? "expand" : "collapse"}
|
|
228
|
-
className={classNames(
|
|
266
|
+
className={classNames("fabric-asideCollapse", "p-2 select-none")}
|
|
229
267
|
icon={CoreIcons.chevronLeft}
|
|
230
268
|
rtlFlip
|
|
231
269
|
onClick={toggleCollapse}
|
|
@@ -239,12 +277,12 @@ export const Aside = ({
|
|
|
239
277
|
color={iconColor}
|
|
240
278
|
rtlFlip={rtlFlip}
|
|
241
279
|
className={classNames(
|
|
242
|
-
|
|
280
|
+
"fabric-asideIcon",
|
|
243
281
|
"p-1 text-lg select-none pointer-events-none",
|
|
244
282
|
)}
|
|
245
283
|
/>
|
|
246
284
|
)}
|
|
247
|
-
{actions && <div className={
|
|
285
|
+
{actions && <div className={"fabric-asideActions"}>{actions}</div>}
|
|
248
286
|
</header>
|
|
249
287
|
{loading && <Loading />}
|
|
250
288
|
{isCollapsed && (
|
|
@@ -252,14 +290,14 @@ export const Aside = ({
|
|
|
252
290
|
role="none"
|
|
253
291
|
onClick={tryPeek}
|
|
254
292
|
data-ref="asidePlaceholder"
|
|
255
|
-
className={
|
|
293
|
+
className={"fabric-asidePlaceholder"}
|
|
256
294
|
/>
|
|
257
295
|
)}
|
|
258
296
|
<section
|
|
259
297
|
ref={elementRef}
|
|
260
298
|
data-ref="asideBody"
|
|
261
299
|
className={classNames(
|
|
262
|
-
|
|
300
|
+
"fabric-asideBody",
|
|
263
301
|
bodyClassName,
|
|
264
302
|
"overflow-hidden grid",
|
|
265
303
|
)}
|
|
@@ -271,8 +309,8 @@ export const Aside = ({
|
|
|
271
309
|
<div
|
|
272
310
|
{...resizeHandleProps}
|
|
273
311
|
className={classNames(
|
|
274
|
-
|
|
275
|
-
"before:absolute before:inset-0 before:w-1 before:top-1/2 before:-translate-y-1/2 before:transition-all",
|
|
312
|
+
"fabric-asideResizer",
|
|
313
|
+
"before:absolute before:inset-0 before:w-1 before:top-1/2 before:-translate-y-1/2 before:transition-all before:delay-150",
|
|
276
314
|
)}
|
|
277
315
|
/>
|
|
278
316
|
)}
|