@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
|
@@ -22,17 +22,38 @@
|
|
|
22
22
|
*/
|
|
23
23
|
|
|
24
24
|
import { useFloatingTree } from "@floating-ui/react";
|
|
25
|
-
import { iconToken } from "@react-fabric/utilities";
|
|
25
|
+
import { iconToken, mergeRefs } from "@react-fabric/utilities";
|
|
26
26
|
import classNames from "classnames";
|
|
27
|
-
import { Fragment, useCallback, useMemo } from "react";
|
|
27
|
+
import { Fragment, useCallback, useEffect, useMemo, useRef } from "react";
|
|
28
|
+
import { HotKey } from "../../hotkeys/HotKey";
|
|
28
29
|
import { HotKeyLabel } from "../../hotkeys/HotKeyLabel";
|
|
29
30
|
import { Tooltip } from "../../overlays";
|
|
30
31
|
import { type PolymorphicProps } from "../../types";
|
|
31
32
|
import { Badge, getBadgeProps } from "../badge/Badge";
|
|
32
33
|
import { Icon } from "../icon/Icon";
|
|
33
|
-
import classes from "./Menu.module.css";
|
|
34
34
|
import { type MenuItemProps } from "./types";
|
|
35
35
|
|
|
36
|
+
/**
|
|
37
|
+
* A menu item component that can be used in a dropdown or menu.
|
|
38
|
+
* It supports various features such as icons, badges, hotkeys, and more.
|
|
39
|
+
* It can be customized with different colors, icons, and behaviors.
|
|
40
|
+
*
|
|
41
|
+
* @param {MenuItemProps} props
|
|
42
|
+
* @returns A JSX element representing the menu item.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```jsx
|
|
46
|
+
* <MenuItem
|
|
47
|
+
* label="Settings"
|
|
48
|
+
* icon="settings"
|
|
49
|
+
* onClick={() => console.log("Settings clicked")}
|
|
50
|
+
* hotKey="Ctrl+S"
|
|
51
|
+
* badge={{ count: 3, color: "red" }}
|
|
52
|
+
* />
|
|
53
|
+
* ```
|
|
54
|
+
*
|
|
55
|
+
* @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-menu--docs} for documentation.
|
|
56
|
+
*/
|
|
36
57
|
export const MenuItem = <Tag extends React.ElementType = "button">({
|
|
37
58
|
as,
|
|
38
59
|
label,
|
|
@@ -50,6 +71,7 @@ export const MenuItem = <Tag extends React.ElementType = "button">({
|
|
|
50
71
|
onClick,
|
|
51
72
|
badge,
|
|
52
73
|
hotKey,
|
|
74
|
+
tabIndex = -1,
|
|
53
75
|
// @ts-expect-error ignore
|
|
54
76
|
minimal,
|
|
55
77
|
// @ts-expect-error ignore
|
|
@@ -58,11 +80,16 @@ export const MenuItem = <Tag extends React.ElementType = "button">({
|
|
|
58
80
|
ref,
|
|
59
81
|
...aria
|
|
60
82
|
}: MenuItemProps & PolymorphicProps<Tag>) => {
|
|
83
|
+
const elRef = useRef<HTMLElement>(null);
|
|
61
84
|
const tree = useFloatingTree();
|
|
62
85
|
const badgeProps = useMemo(() => {
|
|
63
86
|
return getBadgeProps(badge);
|
|
64
87
|
}, [badge]);
|
|
65
88
|
|
|
89
|
+
useEffect(() => {
|
|
90
|
+
tabIndex === 0 && elRef.current?.focus();
|
|
91
|
+
}, [tabIndex]);
|
|
92
|
+
|
|
66
93
|
const iconEl = useMemo(() => {
|
|
67
94
|
let path = icon;
|
|
68
95
|
if (minimal && !path) {
|
|
@@ -70,7 +97,7 @@ export const MenuItem = <Tag extends React.ElementType = "button">({
|
|
|
70
97
|
}
|
|
71
98
|
return (
|
|
72
99
|
<Icon
|
|
73
|
-
className={classNames(
|
|
100
|
+
className={classNames("fabric-menuIcon", minimal && "minimal")}
|
|
74
101
|
icon={path ?? ""}
|
|
75
102
|
bg={iconBg}
|
|
76
103
|
color={iconColor}
|
|
@@ -135,26 +162,30 @@ export const MenuItem = <Tag extends React.ElementType = "button">({
|
|
|
135
162
|
return (
|
|
136
163
|
<Wrapper {...aria}>
|
|
137
164
|
<E
|
|
138
|
-
ref={ref}
|
|
165
|
+
ref={mergeRefs(ref, elRef)}
|
|
139
166
|
data-dropdown-dismiss
|
|
140
167
|
data-color={color}
|
|
141
168
|
className={classNames(
|
|
142
|
-
|
|
169
|
+
"fabric-menuItem cursor-pointer",
|
|
143
170
|
className,
|
|
144
|
-
active &&
|
|
145
|
-
minimal &&
|
|
146
|
-
disabled &&
|
|
171
|
+
active && "active",
|
|
172
|
+
minimal && "minimal",
|
|
173
|
+
disabled && "disabled",
|
|
147
174
|
"rounded-capped relative max-w-[50vw] my-0.5",
|
|
148
175
|
)}
|
|
149
176
|
data-active={active}
|
|
150
177
|
data-open={childOpen}
|
|
151
178
|
disabled={disabled}
|
|
152
179
|
data-id={id}
|
|
180
|
+
tabIndex={tabIndex}
|
|
153
181
|
onClick={(e) => {
|
|
154
182
|
onClick?.(e) !== false && tree?.events.emit("click");
|
|
155
183
|
}}
|
|
156
184
|
{...(minimal ? {} : aria)}
|
|
157
185
|
>
|
|
186
|
+
{hotKey && (
|
|
187
|
+
<HotKey keyCombo={hotKey} handler={() => elRef.current?.click?.()} />
|
|
188
|
+
)}
|
|
158
189
|
{menuLabel}
|
|
159
190
|
</E>
|
|
160
191
|
</Wrapper>
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
type BadgeType,
|
|
28
28
|
type CallbackReturn,
|
|
29
29
|
type ChildrenProp,
|
|
30
|
-
type
|
|
30
|
+
type ColorState,
|
|
31
31
|
type CssProp,
|
|
32
32
|
type IconProps,
|
|
33
33
|
type TestProps,
|
|
@@ -53,7 +53,7 @@ export interface MenuItemProps
|
|
|
53
53
|
/**
|
|
54
54
|
* menu color
|
|
55
55
|
*/
|
|
56
|
-
color?:
|
|
56
|
+
color?: ColorState;
|
|
57
57
|
/**
|
|
58
58
|
* item active
|
|
59
59
|
*/
|
|
@@ -90,6 +90,7 @@ export interface MenuRootProps extends CssProp {
|
|
|
90
90
|
export interface MenuInnerProps extends MenuItemProps {
|
|
91
91
|
label: string;
|
|
92
92
|
minimal?: never;
|
|
93
|
+
trigger?: "hover" | "click";
|
|
93
94
|
/**
|
|
94
95
|
* floating menu className
|
|
95
96
|
*/
|
|
@@ -25,7 +25,6 @@ import { Format } from "@react-fabric/utilities";
|
|
|
25
25
|
import classNames from "classnames";
|
|
26
26
|
import { useMemoDebugger } from "../../hooks/useEffectDebugger";
|
|
27
27
|
import { type AriaProps, type CssProp, type TestProps } from "../../types";
|
|
28
|
-
import classes from "./Meter.module.css";
|
|
29
28
|
|
|
30
29
|
export interface MeterProps extends CssProp, AriaProps, TestProps {
|
|
31
30
|
/**
|
|
@@ -38,6 +37,30 @@ export interface MeterProps extends CssProp, AriaProps, TestProps {
|
|
|
38
37
|
hideLabel?: boolean;
|
|
39
38
|
}
|
|
40
39
|
|
|
40
|
+
/**
|
|
41
|
+
* A component that displays a visual representation of a value as a series of dots.
|
|
42
|
+
* It is useful for showing progress or completion status in a compact form.
|
|
43
|
+
* The meter consists of 6 dots, each representing approximately 16.67% of the total value.
|
|
44
|
+
* The active dots are filled based on the value provided, and the remaining dots are empty.
|
|
45
|
+
* The component can also display a label showing the percentage value.
|
|
46
|
+
*
|
|
47
|
+
* @param {MeterProps} props - The properties for the Meter component.
|
|
48
|
+
* @returns {JSX.Element} The rendered Meter component.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```jsx
|
|
52
|
+
* <Meter value={75} />
|
|
53
|
+
* // Renders a meter with 4 active dots and a label showing "75%"
|
|
54
|
+
*
|
|
55
|
+
* <Meter value={50} hideLabel />
|
|
56
|
+
* // Renders a meter with 3 active dots and no label
|
|
57
|
+
*
|
|
58
|
+
* <Meter value={100} className="custom-meter" />
|
|
59
|
+
* // Renders a meter with all 6 active dots and a custom class name
|
|
60
|
+
* ```
|
|
61
|
+
*
|
|
62
|
+
* @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-meter--docs} for more details.
|
|
63
|
+
*/
|
|
41
64
|
export const Meter = ({ value, hideLabel, className, ...aria }: MeterProps) => {
|
|
42
65
|
/** ***************** calculate active meter dots *******************/
|
|
43
66
|
const activeCount = useMemoDebugger(
|
|
@@ -51,7 +74,7 @@ export const Meter = ({ value, hideLabel, className, ...aria }: MeterProps) => {
|
|
|
51
74
|
return (
|
|
52
75
|
<div
|
|
53
76
|
className={classNames(
|
|
54
|
-
|
|
77
|
+
"fabric-meter",
|
|
55
78
|
className,
|
|
56
79
|
"flex flex-nowrap items-center gap-[2px]",
|
|
57
80
|
)}
|
|
@@ -61,7 +84,7 @@ export const Meter = ({ value, hideLabel, className, ...aria }: MeterProps) => {
|
|
|
61
84
|
<div
|
|
62
85
|
key={step}
|
|
63
86
|
className={classNames(
|
|
64
|
-
|
|
87
|
+
"fabric-meterBar",
|
|
65
88
|
"first-of-type:rounded-s last-of-type:rounded-e bg-tint-100 relative outline -outline-offset-1 outline-muted overflow-hidden after:absolute after:inset-0",
|
|
66
89
|
)}
|
|
67
90
|
data-active={activeCount >= step}
|
|
@@ -22,55 +22,106 @@
|
|
|
22
22
|
*/
|
|
23
23
|
|
|
24
24
|
import classNames from "classnames";
|
|
25
|
+
import { useCallback } from "react";
|
|
25
26
|
import { HotKey } from "../../hotkeys/HotKey";
|
|
26
27
|
import {
|
|
27
28
|
type AriaProps,
|
|
29
|
+
type ChildProp,
|
|
28
30
|
type ColorType,
|
|
29
31
|
type CssProp,
|
|
32
|
+
type PaletteType,
|
|
30
33
|
type TestProps,
|
|
31
34
|
} from "../../types";
|
|
32
35
|
import { CoreIcons } from "../../types/icons";
|
|
33
36
|
import { Icon } from "../icon/Icon";
|
|
37
|
+
import { isEmpty } from "@react-fabric/utilities";
|
|
34
38
|
|
|
35
|
-
export interface NavigatorProps
|
|
39
|
+
export interface NavigatorProps
|
|
40
|
+
extends CssProp,
|
|
41
|
+
AriaProps,
|
|
42
|
+
TestProps,
|
|
43
|
+
Partial<ChildProp> {
|
|
44
|
+
length?: number;
|
|
45
|
+
current?: number;
|
|
46
|
+
disableKeyHandlers?: boolean;
|
|
36
47
|
/**
|
|
37
48
|
* navigator button color
|
|
38
49
|
*/
|
|
39
|
-
color?: ColorType | string;
|
|
50
|
+
color?: ColorType | PaletteType | string;
|
|
40
51
|
/**
|
|
41
52
|
* navigation handler
|
|
42
53
|
*/
|
|
43
54
|
onNavigate: (dir: -1 | 1) => void;
|
|
44
55
|
}
|
|
45
56
|
|
|
57
|
+
/**
|
|
58
|
+
* A component that provides navigation controls for traversing through items.
|
|
59
|
+
* It includes previous and next buttons, and supports keyboard navigation.
|
|
60
|
+
*
|
|
61
|
+
* @param {NavigatorProps} props - The properties for the Navigator component.
|
|
62
|
+
* @returns {JSX.Element} The rendered Navigator component.
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```jsx
|
|
66
|
+
* <Navigator
|
|
67
|
+
* className="my-navigator"
|
|
68
|
+
* onNavigate={(dir) => console.log(`Navigate ${dir === -1 ? 'previous' : 'next'}`)}
|
|
69
|
+
* color="blue"
|
|
70
|
+
* length={10}
|
|
71
|
+
* current={0}
|
|
72
|
+
* >
|
|
73
|
+
* <span>Current Item: 1</span>
|
|
74
|
+
* </Navigator>
|
|
75
|
+
* ```
|
|
76
|
+
*
|
|
77
|
+
* @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-navigator--docs} for more details.
|
|
78
|
+
*/
|
|
46
79
|
export const Navigator = ({
|
|
47
80
|
className,
|
|
48
81
|
onNavigate,
|
|
49
82
|
color,
|
|
83
|
+
children,
|
|
84
|
+
length,
|
|
85
|
+
current,
|
|
86
|
+
disableKeyHandlers,
|
|
50
87
|
...aria
|
|
51
88
|
}: NavigatorProps) => {
|
|
89
|
+
const navPrev = useCallback(
|
|
90
|
+
() => (isEmpty(current) || current !== 0) && onNavigate(-1),
|
|
91
|
+
[onNavigate, current],
|
|
92
|
+
);
|
|
93
|
+
const navNext = useCallback(
|
|
94
|
+
() => (isEmpty(current) || current + 1 < (length ?? 0)) && onNavigate(+1),
|
|
95
|
+
[onNavigate, current, length],
|
|
96
|
+
);
|
|
52
97
|
return (
|
|
53
98
|
<div
|
|
54
|
-
|
|
99
|
+
data-ref="navigator"
|
|
100
|
+
className={classNames(className, "inline-flex items-center leading-none")}
|
|
55
101
|
{...aria}
|
|
56
102
|
>
|
|
57
|
-
<HotKey keyCombo="left" handler={
|
|
58
|
-
<HotKey keyCombo="right" handler={
|
|
103
|
+
{!disableKeyHandlers && <HotKey keyCombo="left" handler={navPrev} />}
|
|
104
|
+
{!disableKeyHandlers && <HotKey keyCombo="right" handler={navNext} />}
|
|
59
105
|
<Icon
|
|
60
106
|
rtlFlip
|
|
61
107
|
color={color}
|
|
62
108
|
className="text-[1em] p-1"
|
|
63
109
|
aria-label="previous"
|
|
110
|
+
data-ref="previous"
|
|
64
111
|
icon={CoreIcons.chevronLeft}
|
|
65
|
-
|
|
112
|
+
disabled={!isEmpty(current) && current === 0}
|
|
113
|
+
onClick={(e) => [e.stopPropagation(), navPrev()]}
|
|
66
114
|
/>
|
|
115
|
+
{children}
|
|
67
116
|
<Icon
|
|
68
117
|
rtlFlip
|
|
69
118
|
className="text-[1em] p-1"
|
|
70
119
|
color={color}
|
|
71
120
|
aria-label="next"
|
|
121
|
+
data-ref="next"
|
|
72
122
|
icon={CoreIcons.chevronRight}
|
|
73
|
-
|
|
123
|
+
disabled={!isEmpty(current) && current + 1 === length}
|
|
124
|
+
onClick={(e) => [e.stopPropagation(), navNext()]}
|
|
74
125
|
/>
|
|
75
126
|
</div>
|
|
76
127
|
);
|
|
@@ -38,7 +38,6 @@ import {
|
|
|
38
38
|
import { CoreIcons } from "../../types/icons";
|
|
39
39
|
import { Loading } from "../animations/Animations";
|
|
40
40
|
import { Icon } from "../icon/Icon";
|
|
41
|
-
import classes from "./Panel.module.css";
|
|
42
41
|
|
|
43
42
|
export interface PanelProps
|
|
44
43
|
extends CssProp,
|
|
@@ -102,6 +101,43 @@ export interface PanelProps
|
|
|
102
101
|
onClose?: () => void;
|
|
103
102
|
}
|
|
104
103
|
|
|
104
|
+
/**
|
|
105
|
+
* A component that represents a panel with a header, body, and optional actions.
|
|
106
|
+
* It supports expandable and collapsible functionality, loading state, and customizable styles.
|
|
107
|
+
* The panel can be resized and has a fixed position when expanded.
|
|
108
|
+
* It can be customized with different colors, icons, and behaviors.
|
|
109
|
+
* This component is useful for displaying content in a structured way, allowing users to interact with it through actions and toggles.
|
|
110
|
+
* It can be used in various applications where panels are needed, such as dashboards, settings pages, or content management systems.
|
|
111
|
+
*
|
|
112
|
+
* @param {PanelProps} props - The properties for the Panel component.
|
|
113
|
+
* @returns {JSX.Element} The rendered Panel component.
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```jsx
|
|
117
|
+
* <Panel
|
|
118
|
+
* title="Panel Title"
|
|
119
|
+
* icon={CoreIcons.info}
|
|
120
|
+
* iconBg="bg-blue-500"
|
|
121
|
+
* iconColor="text-white"
|
|
122
|
+
* actions={<button>Action</button>}
|
|
123
|
+
* expandable
|
|
124
|
+
* collapsable
|
|
125
|
+
* onExpand={() => console.log("Expanded")}
|
|
126
|
+
* onCollapse={() => console.log("Collapsed")}
|
|
127
|
+
* onClose={() => console.log("Closed")}
|
|
128
|
+
* height="400px"
|
|
129
|
+
* width="300px"
|
|
130
|
+
* minHeight="200px"
|
|
131
|
+
* minWidth="200px"
|
|
132
|
+
* maxHeight="600px"
|
|
133
|
+
* maxWidth="600px"
|
|
134
|
+
* >
|
|
135
|
+
* <p>This is the content of the panel.</p>
|
|
136
|
+
* </Panel>
|
|
137
|
+
* ```
|
|
138
|
+
*
|
|
139
|
+
* @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-panel--docs} for more details.
|
|
140
|
+
*/
|
|
105
141
|
export const Panel = ({
|
|
106
142
|
children,
|
|
107
143
|
className,
|
|
@@ -146,7 +182,7 @@ export const Panel = ({
|
|
|
146
182
|
return (
|
|
147
183
|
<div
|
|
148
184
|
className={classNames(
|
|
149
|
-
|
|
185
|
+
"fabric-panel",
|
|
150
186
|
className,
|
|
151
187
|
"rounded-capped overflow-hidden outline grid",
|
|
152
188
|
expanded ? "fixed inset-4 z-50" : "relative",
|
|
@@ -172,16 +208,17 @@ export const Panel = ({
|
|
|
172
208
|
<header
|
|
173
209
|
role="none"
|
|
174
210
|
className={classNames(
|
|
175
|
-
|
|
211
|
+
"fabric-panelHeader",
|
|
176
212
|
headerClassName,
|
|
177
213
|
"flex flex-nowrap items-center area-head",
|
|
178
214
|
)}
|
|
215
|
+
data-ref="panelHeader"
|
|
179
216
|
onClick={collapsable ? toggleCollapse : undefined}
|
|
180
217
|
>
|
|
181
218
|
{onBack && (
|
|
182
219
|
<Icon
|
|
183
220
|
data-ref="panelBack"
|
|
184
|
-
className={classNames(
|
|
221
|
+
className={classNames("fabric-panelAction", "cursor-pointer")}
|
|
185
222
|
icon={CoreIcons.chevronLeft}
|
|
186
223
|
onClick={onBack}
|
|
187
224
|
/>
|
|
@@ -204,7 +241,7 @@ export const Panel = ({
|
|
|
204
241
|
>
|
|
205
242
|
{title}
|
|
206
243
|
</div>
|
|
207
|
-
<div className="px-1">{actions}</div>
|
|
244
|
+
<div className="px-1 leading-none">{actions}</div>
|
|
208
245
|
{hasTools && (
|
|
209
246
|
<div
|
|
210
247
|
role="none"
|
|
@@ -214,7 +251,7 @@ export const Panel = ({
|
|
|
214
251
|
{expandable && (
|
|
215
252
|
<Icon
|
|
216
253
|
data-ref="panelExpand"
|
|
217
|
-
className={classNames(
|
|
254
|
+
className={classNames("fabric-panelAction", "cursor-pointer")}
|
|
218
255
|
icon={expanded ? CoreIcons.minimize : CoreIcons.maximize}
|
|
219
256
|
onClick={toggleExpand}
|
|
220
257
|
/>
|
|
@@ -222,7 +259,7 @@ export const Panel = ({
|
|
|
222
259
|
{!expanded && collapsable && (
|
|
223
260
|
<Icon
|
|
224
261
|
data-ref="panelCollapse"
|
|
225
|
-
className={classNames(
|
|
262
|
+
className={classNames("fabric-panelAction", "cursor-pointer")}
|
|
226
263
|
icon={collapsed ? CoreIcons.expand : CoreIcons.collapse}
|
|
227
264
|
onClick={toggleCollapse}
|
|
228
265
|
/>
|
|
@@ -230,7 +267,7 @@ export const Panel = ({
|
|
|
230
267
|
{!expanded && onClose && (
|
|
231
268
|
<Icon
|
|
232
269
|
data-ref="panelClose"
|
|
233
|
-
className={classNames(
|
|
270
|
+
className={classNames("fabric-panelAction", "cursor-pointer")}
|
|
234
271
|
icon={CoreIcons.close}
|
|
235
272
|
onClick={onClose}
|
|
236
273
|
/>
|
|
@@ -240,8 +277,9 @@ export const Panel = ({
|
|
|
240
277
|
</header>
|
|
241
278
|
{(!collapsed || expanded) && (
|
|
242
279
|
<div
|
|
280
|
+
data-ref="panelBody"
|
|
243
281
|
className={classNames(
|
|
244
|
-
|
|
282
|
+
"fabric-panelBody",
|
|
245
283
|
"area-content grid overflow-hidden",
|
|
246
284
|
)}
|
|
247
285
|
>
|
|
@@ -28,7 +28,6 @@ import {
|
|
|
28
28
|
useMemoDebugger,
|
|
29
29
|
} from "../../hooks/useEffectDebugger";
|
|
30
30
|
import { type ChildrenProp } from "../../types";
|
|
31
|
-
import classes from "./Panel.module.css";
|
|
32
31
|
|
|
33
32
|
export interface PanelGroupProps extends ChildrenProp {
|
|
34
33
|
/**
|
|
@@ -41,6 +40,30 @@ export interface PanelGroupProps extends ChildrenProp {
|
|
|
41
40
|
onActiveChange?: (panelId: string) => void;
|
|
42
41
|
}
|
|
43
42
|
|
|
43
|
+
/**
|
|
44
|
+
* A component that groups multiple panels together, allowing for one panel to be expanded at a time.
|
|
45
|
+
* This component allows you to manage a group of panels where only one can be expanded at a time.
|
|
46
|
+
* It accepts an `activePanel` prop to control which panel is currently expanded,
|
|
47
|
+
* and an `onActiveChange` callback that is triggered when the active panel changes.
|
|
48
|
+
* It uses the `Panel` component to render each individual panel within the group.
|
|
49
|
+
*
|
|
50
|
+
* @param {PanelGroupProps} props - The properties for the PanelGroup component.
|
|
51
|
+
* @returns {JSX.Element} The rendered PanelGroup component.
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```jsx
|
|
55
|
+
* <PanelGroup
|
|
56
|
+
* activePanel="panel1"
|
|
57
|
+
* onActiveChange={(panelId) => console.log(`Active panel changed to: ${panelId}`)}
|
|
58
|
+
* >
|
|
59
|
+
* <Panel panelId="panel1" title="Panel 1">Content for Panel 1</Panel>
|
|
60
|
+
* <Panel panelId="panel2" title="Panel 2">Content for Panel 2</Panel>
|
|
61
|
+
* <Panel panelId="panel3" title="Panel 3">Content for Panel 3</Panel>
|
|
62
|
+
* </PanelGroup>
|
|
63
|
+
* ```
|
|
64
|
+
*
|
|
65
|
+
* @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-panel--docs} for more details.
|
|
66
|
+
*/
|
|
44
67
|
export const PanelGroup = ({
|
|
45
68
|
children,
|
|
46
69
|
activePanel,
|
|
@@ -81,7 +104,7 @@ export const PanelGroup = ({
|
|
|
81
104
|
<div
|
|
82
105
|
data-ref="panelGroup"
|
|
83
106
|
className={classNames(
|
|
84
|
-
|
|
107
|
+
"fabric-panelGroup",
|
|
85
108
|
"flex flex-col overflow-auto area-content p-px",
|
|
86
109
|
)}
|
|
87
110
|
>
|
|
@@ -49,6 +49,37 @@ export interface PanelStackProps extends CssProp, ChildrenProp {
|
|
|
49
49
|
onBack?: (panelId: string, nextPanelId: string) => boolean | undefined;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
+
/**
|
|
53
|
+
* A component that manages a stack of panels, allowing navigation between them.
|
|
54
|
+
* This component allows you to manage a stack of panels where you can navigate between them.
|
|
55
|
+
* It accepts an `active` prop to control which panel is currently active,
|
|
56
|
+
* an `onPanelChange` callback that is triggered when the active panel changes,
|
|
57
|
+
* and an `onBack` callback to handle navigation to the previous panel in the history.
|
|
58
|
+
* It uses the `Panel` component to render each individual panel within the stack.
|
|
59
|
+
* The component maintains a history of panels to allow back navigation,
|
|
60
|
+
* and it updates the active panel based on user interactions.
|
|
61
|
+
*
|
|
62
|
+
* @param {PanelStackProps} props - The properties for the PanelStack component.
|
|
63
|
+
* @returns {JSX.Element} The rendered PanelStack component.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```jsx
|
|
67
|
+
* <PanelStack
|
|
68
|
+
* active="panel1"
|
|
69
|
+
* onPanelChange={(panelId) => console.log(`Active panel changed to: ${panelId}`)}
|
|
70
|
+
* onBack={(currentPanel, nextPanel) => {
|
|
71
|
+
* console.log(`Navigating back from ${currentPanel} to ${nextPanel}`);
|
|
72
|
+
* return true; // return false to prevent navigation
|
|
73
|
+
* }}
|
|
74
|
+
* >
|
|
75
|
+
* <Panel panelId="panel1" title="Panel 1">Content for Panel 1</Panel>
|
|
76
|
+
* <Panel panelId="panel2" title="Panel 2">Content for Panel 2</Panel>
|
|
77
|
+
* <Panel panelId="panel3" title="Panel 3">Content for Panel 3</Panel>
|
|
78
|
+
* </PanelStack>
|
|
79
|
+
* ```
|
|
80
|
+
*
|
|
81
|
+
* @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-panelstack--docs} for more details.
|
|
82
|
+
*/
|
|
52
83
|
export const PanelStack = ({
|
|
53
84
|
active,
|
|
54
85
|
children,
|
|
@@ -24,13 +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 {
|
|
29
|
-
import classes from "./Progress.module.css";
|
|
27
|
+
import { type PaletteType, type ColorType } from "../../types";
|
|
28
|
+
import { getColor } from "../../utils";
|
|
30
29
|
|
|
31
30
|
export interface ProgressProps {
|
|
32
31
|
/**
|
|
33
|
-
* progress value (0-
|
|
32
|
+
* progress value (0-1)
|
|
34
33
|
*/
|
|
35
34
|
value: number;
|
|
36
35
|
/**
|
|
@@ -40,7 +39,7 @@ export interface ProgressProps {
|
|
|
40
39
|
/**
|
|
41
40
|
* color
|
|
42
41
|
*/
|
|
43
|
-
color?: ColorType;
|
|
42
|
+
color?: ColorType | PaletteType;
|
|
44
43
|
/**
|
|
45
44
|
* animate
|
|
46
45
|
*/
|
|
@@ -61,23 +60,43 @@ const SizeMap: KeyValue = {
|
|
|
61
60
|
xl: "2rem",
|
|
62
61
|
};
|
|
63
62
|
|
|
63
|
+
/**
|
|
64
|
+
* A component that displays a progress bar indicating the completion percentage of a task or operation.
|
|
65
|
+
* The progress bar is styled with a background color and a track that fills based on the value provided.
|
|
66
|
+
* It can also display a label showing the percentage value.
|
|
67
|
+
* The label can be customized or hidden based on the props provided.
|
|
68
|
+
*
|
|
69
|
+
* @param {ProgressProps} props - The properties for the ProgressBar component.
|
|
70
|
+
* @returns {JSX.Element} The rendered ProgressBar component.
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```jsx
|
|
74
|
+
* <ProgressBar value={0.75} size="md" color="primary-500" label="Loading" animate />
|
|
75
|
+
* // Renders a progress bar with 75% completion, medium size, primary color, and a label "Loading"
|
|
76
|
+
*
|
|
77
|
+
* <ProgressBar value={0.5} size="lg" color="success-500" />
|
|
78
|
+
* // Renders a progress bar with 50% completion, large size, and success color without a label
|
|
79
|
+
* ```
|
|
80
|
+
*
|
|
81
|
+
* @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-progress--docs} for more details.
|
|
82
|
+
*/
|
|
64
83
|
export const ProgressBar = ({
|
|
65
84
|
value = 0,
|
|
66
85
|
size,
|
|
67
|
-
color = "primary",
|
|
86
|
+
color = "primary-500",
|
|
68
87
|
label = "",
|
|
69
88
|
animate,
|
|
70
89
|
}: ProgressProps) => {
|
|
71
90
|
/** ***************** make sure value is between 0 and 100 *******************/
|
|
72
91
|
const actualValue = useMemoDebugger(
|
|
73
|
-
() => Math.min(Math.max(value, 0),
|
|
92
|
+
() => Math.min(Math.max(value, 0), 1),
|
|
74
93
|
[value],
|
|
75
94
|
"ProgressBar value",
|
|
76
95
|
);
|
|
77
96
|
|
|
78
97
|
const progressVar = useMemoDebugger<KeyValue>(
|
|
79
98
|
() => ({
|
|
80
|
-
"--progress": actualValue,
|
|
99
|
+
"--progress": actualValue * 100,
|
|
81
100
|
}),
|
|
82
101
|
[actualValue],
|
|
83
102
|
"ProgressBar cssVar",
|
|
@@ -87,12 +106,12 @@ export const ProgressBar = ({
|
|
|
87
106
|
return (
|
|
88
107
|
<div
|
|
89
108
|
className={classNames(
|
|
90
|
-
|
|
91
|
-
getColorClass(color),
|
|
109
|
+
"fabric-progressbar",
|
|
92
110
|
"block bg-dimmed relative rounded font-bold overflow-hidden whitespace-nowrap",
|
|
93
111
|
)}
|
|
94
112
|
style={{
|
|
95
113
|
...progressVar,
|
|
114
|
+
color: getColor(color),
|
|
96
115
|
minHeight: SizeMap[size ?? ""],
|
|
97
116
|
fontSize: SizeMap[size ?? ""],
|
|
98
117
|
}}
|
|
@@ -101,20 +120,20 @@ export const ProgressBar = ({
|
|
|
101
120
|
>
|
|
102
121
|
{!["xxs", "xs", "sm"].includes(size ?? "") && (
|
|
103
122
|
<div className="absolute inset-0 text-center z-0 align-top">
|
|
104
|
-
{label} {Format.percent(actualValue
|
|
123
|
+
{label} {Format.percent(actualValue)}
|
|
105
124
|
</div>
|
|
106
125
|
)}
|
|
107
126
|
<div
|
|
108
127
|
className={classNames(
|
|
109
|
-
|
|
110
|
-
animate &&
|
|
128
|
+
"fabric-progressTrack",
|
|
129
|
+
animate && "fabric-progressAnimate",
|
|
111
130
|
"h-full overflow-clip bg-current relative z-0",
|
|
112
131
|
)}
|
|
113
132
|
/>
|
|
114
133
|
{!["xxs", "xs", "sm"].includes(size ?? "") && (
|
|
115
134
|
<div
|
|
116
135
|
className={classNames("h-full absolute inset-0 overflow-hidden z-1")}
|
|
117
|
-
data-label={`${label} ${Format.percent(actualValue
|
|
136
|
+
data-label={`${label} ${Format.percent(actualValue)}`}
|
|
118
137
|
/>
|
|
119
138
|
)}
|
|
120
139
|
</div>
|