@react-fabric/core 1.0.0-beta.6 → 1.0.0-beta.61
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{src/components/actionLabel/ActionLabel.module.css → css/components/_actionLabel.css} +4 -4
- package/{src/overlays/alert/Alert.module.css → css/components/_alert.css} +3 -3
- package/{src/components/animations/Animations.module.css → css/components/_animations.css} +9 -9
- package/{src/components/avatar/Avatar.module.css → css/components/_avatar.css} +11 -11
- package/{src/components/badge/Badge.module.css → css/components/_badge.css} +19 -17
- package/{src/components/breadcrumbs/Breadcrumbs.module.css → css/components/_breadcrumbs.css} +52 -47
- package/{src/components/button/Button.module.css → css/components/_button.css} +86 -84
- package/{src/components/card/Card.module.css → css/components/_card.css} +54 -28
- package/{src/components/chip/Chip.module.css → css/components/_chip.css} +14 -10
- package/{src/components/collapsable/Collapsable.module.css → css/components/_collapsable.css} +3 -3
- package/css/components/_divider.css +38 -0
- package/{src/components/dropdown/Dropdown.module.css → css/components/_dropdown.css} +2 -2
- package/{src/overlays/flyout/Flyout.module.css → css/components/_flyout.css} +6 -6
- package/{src/components/icon/Icon.module.css → css/components/_icon.css} +12 -9
- package/{src/components/media/Media.module.css → css/components/_media.css} +17 -17
- package/{src/components/menu/Menu.module.css → css/components/_menu.css} +21 -20
- package/{src/overlays/message/Message.module.css → css/components/_message.css} +2 -2
- package/{src/components/meter/Meter.module.css → css/components/_meter.css} +10 -10
- package/{src/overlays/modal/Modal.module.css → css/components/_modal.css} +8 -8
- package/{src/components/panel/Panel.module.css → css/components/_panel.css} +17 -17
- package/{src/components/progress/Progress.module.css → css/components/_progress.css} +7 -10
- package/css/components/_stepper.css +86 -0
- package/{src/components/tabpanel/TabPanel.module.css → css/components/_tabPanel.css} +130 -85
- package/{src/overlays/toast/Toast.module.css → css/components/_toast.css} +2 -2
- package/css/components/_tooltip.css +29 -0
- package/{src/core/content/Content.module.css → css/components/index.css} +26 -18
- package/{src/core/aside/Aside.module.css → css/core/_aside.css} +60 -48
- package/{src/core/section/Section.module.css → css/core/_content.css} +5 -3
- package/{src/core/boundary/ErrorBoundary.module.css → css/core/_errorboundary.css} +9 -9
- package/{src/core/headfoot/HeadFoot.module.css → css/core/_headfoot.css} +4 -10
- package/{src/core/page/Page.module.css → css/core/_page.css} +10 -14
- package/{src/core/responsive/Responsive.module.css → css/core/_responsive.css} +10 -10
- package/css/core/_section.css +28 -0
- package/{src/core/theme/Theme.module.css → css/core/_theme.css} +3 -3
- package/{src/typography/Typography.module.css → css/core/_typography.css} +14 -12
- package/{src/core/viewport/Viewport.module.css → css/core/_viewport.css} +7 -3
- package/css/core/index.css +33 -0
- package/css/reset/_gradients.css +8 -8
- package/css/reset/_reset.css +56 -224
- package/css/reset/_text.css +14 -29
- package/css/reset/_theme.css +331 -52
- package/css/reset/index.css +4 -4
- package/css/styles.css +9 -6
- package/css/theme/_colors.css +320 -0
- package/css/theme/_utilities.css +541 -0
- package/css/theme/index.css +45 -0
- package/dist/cjs/components/actionLabel/ActionLabel.js +26 -8
- package/dist/cjs/components/animations/Animations.js +137 -45
- package/dist/cjs/components/avatar/Avatar.js +46 -13
- package/dist/cjs/components/avatar/AvatarGroup.js +22 -4
- package/dist/cjs/components/badge/Badge.js +36 -15
- package/dist/cjs/components/breadcrumbs/Breadcrumbs.js +40 -9
- package/dist/cjs/components/button/Button.js +51 -29
- package/dist/cjs/components/button/ButtonGroup.js +30 -3
- package/dist/cjs/components/button/ConfirmButton.js +28 -2
- package/dist/cjs/components/button/ToggleButtonGroup.js +41 -15
- package/dist/cjs/components/callout/Callout.js +47 -7
- package/dist/cjs/components/card/Card.js +60 -18
- package/dist/cjs/components/card/CardCover.js +36 -5
- package/dist/cjs/components/card/FlipContent.js +56 -0
- package/dist/cjs/components/chip/Chip.js +40 -20
- package/dist/cjs/components/collapsable/Collapsable.js +32 -8
- package/dist/cjs/components/divider/Divider.js +30 -7
- package/dist/cjs/components/dropdown/Dropdown.js +48 -9
- package/dist/cjs/components/dropdown/DropdownTool.js +2 -3
- package/dist/cjs/components/empty/EmptyContent.js +37 -7
- package/dist/cjs/components/icon/Icon.js +76 -13
- package/dist/cjs/components/media/Media.js +174 -76
- package/dist/cjs/components/menu/ContextMenu.js +19 -0
- package/dist/cjs/components/menu/Menu.js +77 -23
- package/dist/cjs/components/menu/MenuItem.js +54 -27
- package/dist/cjs/components/meter/Meter.js +26 -3
- package/dist/cjs/components/navigator/Navigator.js +50 -18
- package/dist/cjs/components/panel/Panel.js +59 -28
- package/dist/cjs/components/panel/PanelGroup.js +25 -2
- package/dist/cjs/components/panel/PanelStack.js +31 -2
- package/dist/cjs/components/progress/ProgressBar.js +31 -9
- package/dist/cjs/components/progress/ProgressCircle.js +29 -7
- package/dist/cjs/components/tabpanel/Tab.js +39 -16
- package/dist/cjs/components/tabpanel/TabPanel.js +56 -16
- package/dist/cjs/context/Global.js +28 -1
- package/dist/cjs/context/NotificationCenter.js +3 -3
- package/dist/cjs/core/aside/Aside.js +50 -25
- package/dist/cjs/core/boundary/ErrorBoundary.js +25 -8
- package/dist/cjs/core/boundary/ErrorIcon.js +1 -2
- package/dist/cjs/core/content/Content.js +7 -3
- package/dist/cjs/core/headfoot/HeadFoot.js +48 -22
- package/dist/cjs/core/page/Page.js +41 -40
- package/dist/cjs/core/responsive/Responsive.js +59 -6
- package/dist/cjs/core/section/Section.js +12 -29
- package/dist/cjs/core/theme/ThemeProvider.js +32 -10
- package/dist/cjs/core/viewport/Viewport.js +18 -2
- package/dist/cjs/hooks/useControlledValue.js +12 -0
- package/dist/cjs/hooks/useDebounce.js +14 -1
- package/dist/cjs/hooks/useEffectDebugger.js +54 -2
- package/dist/cjs/hooks/useIsDark.js +8 -0
- package/dist/cjs/hooks/useIsRtl.js +12 -0
- package/dist/cjs/hooks/useNavigator.js +6 -4
- package/dist/cjs/hooks/useOverlayService.js +24 -0
- package/dist/cjs/hooks/usePropToggle.js +16 -5
- package/dist/cjs/hooks/useResize.js +18 -0
- package/dist/cjs/hooks/useResizeObserver.js +20 -1
- package/dist/cjs/hooks/useStepper.js +74 -0
- package/dist/cjs/hooks/useStorage.js +39 -0
- package/dist/cjs/hotkeys/HotKeyLabel.js +1 -1
- package/dist/cjs/hotkeys/HotKeyWrapper.js +3 -1
- package/dist/cjs/index.js +14 -10
- package/dist/cjs/overlays/alert/Alert.js +24 -17
- package/dist/cjs/overlays/flyout/Flyout.js +48 -65
- package/dist/cjs/overlays/message/Message.js +8 -3
- package/dist/cjs/overlays/modal/Modal.js +19 -23
- package/dist/cjs/overlays/toast/Toast.js +22 -13
- package/dist/cjs/overlays/tooltip/Tooltip.js +25 -13
- package/dist/cjs/typography/Abbr.js +35 -7
- package/dist/cjs/typography/{Link.js → Anchor.js} +23 -5
- package/dist/cjs/typography/Copy.js +1 -2
- package/dist/cjs/typography/Mark.js +25 -5
- package/dist/cjs/typography/Text.js +30 -5
- package/dist/cjs/typography/Title.js +19 -4
- package/dist/cjs/utils/cloneElement.js +47 -0
- package/dist/cjs/utils/getColor.js +1 -18
- package/dist/esm/components/actionLabel/ActionLabel.js +26 -8
- package/dist/esm/components/animations/Animations.js +135 -44
- package/dist/esm/components/avatar/Avatar.js +46 -13
- package/dist/esm/components/avatar/AvatarGroup.js +22 -4
- package/dist/esm/components/badge/Badge.js +38 -17
- package/dist/esm/components/breadcrumbs/Breadcrumbs.js +40 -9
- package/dist/esm/components/button/Button.js +53 -31
- package/dist/esm/components/button/ButtonGroup.js +31 -4
- package/dist/esm/components/button/ConfirmButton.js +28 -2
- package/dist/esm/components/button/ToggleButtonGroup.js +42 -16
- package/dist/esm/components/callout/Callout.js +47 -7
- package/dist/esm/components/card/Card.js +61 -19
- package/dist/esm/components/card/CardCover.js +36 -5
- package/dist/esm/components/card/FlipContent.js +56 -0
- package/dist/esm/components/chip/Chip.js +42 -22
- package/dist/esm/components/collapsable/Collapsable.js +32 -8
- package/dist/esm/components/divider/Divider.js +31 -8
- package/dist/esm/components/dropdown/Dropdown.js +48 -9
- package/dist/esm/components/dropdown/DropdownTool.js +2 -3
- package/dist/esm/components/empty/EmptyContent.js +37 -7
- package/dist/esm/components/icon/Icon.js +78 -16
- package/dist/esm/components/media/Media.js +175 -77
- package/dist/esm/components/menu/ContextMenu.js +19 -0
- package/dist/esm/components/menu/Menu.js +79 -25
- package/dist/esm/components/menu/MenuItem.js +49 -22
- package/dist/esm/components/meter/Meter.js +26 -3
- package/dist/esm/components/navigator/Navigator.js +50 -18
- package/dist/esm/components/panel/Panel.js +61 -30
- package/dist/esm/components/panel/PanelGroup.js +25 -2
- package/dist/esm/components/panel/PanelStack.js +31 -2
- package/dist/esm/components/progress/ProgressBar.js +31 -9
- package/dist/esm/components/progress/ProgressCircle.js +29 -7
- package/dist/esm/components/tabpanel/Tab.js +40 -17
- package/dist/esm/components/tabpanel/TabPanel.js +56 -16
- package/dist/esm/context/Global.js +28 -1
- package/dist/esm/context/NotificationCenter.js +3 -3
- package/dist/esm/core/aside/Aside.js +52 -27
- package/dist/esm/core/boundary/ErrorBoundary.js +25 -8
- package/dist/esm/core/boundary/ErrorIcon.js +1 -2
- package/dist/esm/core/content/Content.js +7 -3
- package/dist/esm/core/headfoot/HeadFoot.js +48 -22
- package/dist/esm/core/page/Page.js +43 -42
- package/dist/esm/core/responsive/Responsive.js +59 -6
- package/dist/esm/core/section/Section.js +12 -29
- package/dist/esm/core/theme/ThemeProvider.js +32 -10
- package/dist/esm/core/viewport/Viewport.js +18 -2
- package/dist/esm/hooks/useControlledValue.js +12 -0
- package/dist/esm/hooks/useDebounce.js +14 -1
- package/dist/esm/hooks/useEffectDebugger.js +54 -2
- package/dist/esm/hooks/useIsDark.js +8 -0
- package/dist/esm/hooks/useIsRtl.js +12 -0
- package/dist/esm/hooks/useNavigator.js +7 -5
- package/dist/esm/hooks/useOverlayService.js +24 -0
- package/dist/esm/hooks/usePropToggle.js +16 -5
- package/dist/esm/hooks/useResize.js +18 -0
- package/dist/esm/hooks/useResizeObserver.js +20 -1
- package/dist/esm/hooks/useStepper.js +74 -0
- package/dist/esm/hooks/useStorage.js +39 -0
- package/dist/esm/hotkeys/HotKeyLabel.js +1 -1
- package/dist/esm/hotkeys/HotKeyWrapper.js +3 -1
- package/dist/esm/index.js +7 -4
- package/dist/esm/overlays/alert/Alert.js +25 -18
- package/dist/esm/overlays/flyout/Flyout.js +53 -70
- package/dist/esm/overlays/message/Message.js +9 -4
- package/dist/esm/overlays/modal/Modal.js +22 -26
- package/dist/esm/overlays/toast/Toast.js +23 -14
- package/dist/esm/overlays/tooltip/Tooltip.js +25 -13
- package/dist/esm/typography/Abbr.js +35 -7
- package/dist/esm/typography/{Link.js → Anchor.js} +24 -6
- package/dist/esm/typography/Copy.js +1 -2
- package/dist/esm/typography/Mark.js +25 -5
- package/dist/esm/typography/Text.js +31 -6
- package/dist/esm/typography/Title.js +20 -5
- package/dist/esm/utils/cloneElement.js +47 -0
- package/dist/esm/utils/getColor.js +2 -16
- package/dist/types/components/actionLabel/ActionLabel.d.ts +21 -2
- package/dist/types/components/animations/Animations.d.ts +105 -7
- package/dist/types/components/avatar/Avatar.d.ts +34 -6
- package/dist/types/components/avatar/AvatarGroup.d.ts +19 -1
- package/dist/types/components/badge/Badge.d.ts +37 -3
- package/dist/types/components/breadcrumbs/Breadcrumbs.d.ts +31 -2
- package/dist/types/components/button/Button.d.ts +39 -7
- package/dist/types/components/button/ButtonGroup.d.ts +28 -3
- package/dist/types/components/button/ConfirmButton.d.ts +23 -3
- package/dist/types/components/button/ToggleButtonGroup.d.ts +39 -11
- package/dist/types/components/callout/Callout.d.ts +29 -3
- package/dist/types/components/card/Card.d.ts +44 -4
- package/dist/types/components/card/CardCover.d.ts +25 -0
- package/dist/types/components/card/FlipContent.d.ts +28 -0
- package/dist/types/components/chip/Chip.d.ts +34 -5
- package/dist/types/components/collapsable/Collapsable.d.ts +28 -2
- package/dist/types/components/divider/Divider.d.ts +30 -7
- package/dist/types/components/dropdown/Dropdown.d.ts +40 -1
- package/dist/types/components/dropdown/DropdownTool.d.ts +25 -0
- package/dist/types/components/empty/EmptyContent.d.ts +32 -3
- package/dist/types/components/icon/Icon.d.ts +40 -8
- package/dist/types/components/index.d.ts +3 -2
- package/dist/types/components/media/Media.d.ts +54 -0
- package/dist/types/components/menu/ContextMenu.d.ts +19 -1
- package/dist/types/components/menu/Menu.d.ts +29 -0
- package/dist/types/components/menu/MenuItem.d.ts +22 -2
- package/dist/types/components/menu/types.d.ts +9 -3
- package/dist/types/components/meter/Meter.d.ts +24 -0
- package/dist/types/components/navigator/Navigator.d.ts +29 -4
- package/dist/types/components/panel/Panel.d.ts +43 -4
- package/dist/types/components/panel/PanelGroup.d.ts +24 -0
- package/dist/types/components/panel/PanelStack.d.ts +31 -0
- package/dist/types/components/progress/ProgressBar.d.ts +23 -3
- package/dist/types/components/progress/ProgressCircle.d.ts +22 -3
- package/dist/types/components/tabpanel/Tab.d.ts +38 -4
- package/dist/types/components/tabpanel/TabPanel.d.ts +51 -2
- package/dist/types/context/Global.d.ts +24 -1
- package/dist/types/core/aside/Aside.d.ts +45 -6
- package/dist/types/core/boundary/ErrorBoundary.d.ts +18 -2
- package/dist/types/core/content/Content.d.ts +6 -1
- package/dist/types/core/headfoot/HeadFoot.d.ts +41 -9
- package/dist/types/core/page/Page.d.ts +32 -4
- package/dist/types/core/responsive/Responsive.d.ts +58 -3
- package/dist/types/core/section/Section.d.ts +18 -3
- package/dist/types/core/theme/ThemeProvider.d.ts +25 -5
- package/dist/types/core/viewport/Viewport.d.ts +15 -1
- package/dist/types/hooks/useControlledValue.d.ts +13 -2
- package/dist/types/hooks/useDebounce.d.ts +12 -0
- package/dist/types/hooks/useEffectDebugger.d.ts +49 -0
- package/dist/types/hooks/useIsDark.d.ts +8 -0
- package/dist/types/hooks/useIsRtl.d.ts +12 -0
- package/dist/types/hooks/useNavigator.d.ts +18 -1
- package/dist/types/hooks/useOverlayService.d.ts +28 -9
- package/dist/types/hooks/usePropToggle.d.ts +16 -5
- package/dist/types/hooks/useResize.d.ts +19 -1
- package/dist/types/hooks/useResizeObserver.d.ts +20 -1
- package/dist/types/hooks/useStepper.d.ts +14 -0
- package/dist/types/hooks/useStorage.d.ts +38 -0
- package/dist/types/index.d.ts +4 -1
- package/dist/types/overlays/alert/Alert.d.ts +16 -5
- package/dist/types/overlays/flyout/Flyout.d.ts +9 -4
- package/dist/types/overlays/message/Message.d.ts +16 -5
- package/dist/types/overlays/modal/Modal.d.ts +13 -4
- package/dist/types/overlays/toast/Toast.d.ts +16 -5
- package/dist/types/overlays/tooltip/Tooltip.d.ts +2 -2
- package/dist/types/types/index.d.ts +28 -24
- package/dist/types/typography/Abbr.d.ts +34 -4
- package/dist/types/typography/Anchor.d.ts +42 -0
- package/dist/types/typography/Copy.d.ts +15 -0
- package/dist/types/typography/Mark.d.ts +22 -4
- package/dist/types/typography/Text.d.ts +27 -1
- package/dist/types/typography/Title.d.ts +16 -1
- package/dist/types/typography/index.d.ts +1 -1
- package/dist/types/utils/cloneElement.d.ts +1 -0
- package/dist/types/utils/getColor.d.ts +1 -4
- package/dist/types/utils/index.d.ts +1 -0
- package/package.json +17 -16
- package/src/components/actionLabel/ActionLabel.tsx +26 -8
- package/src/components/animations/Animations.tsx +139 -52
- package/src/components/avatar/Avatar.tsx +51 -15
- package/src/components/avatar/AvatarGroup.tsx +23 -5
- package/src/components/badge/Badge.tsx +50 -22
- package/src/components/breadcrumbs/Breadcrumbs.tsx +43 -10
- package/src/components/button/Button.tsx +75 -43
- package/src/components/button/ButtonGroup.tsx +33 -7
- package/src/components/button/ConfirmButton.tsx +31 -3
- package/src/components/button/ToggleButtonGroup.tsx +74 -47
- package/src/components/callout/Callout.tsx +58 -16
- package/src/components/card/Card.tsx +84 -25
- package/src/components/card/CardCover.tsx +36 -6
- package/src/components/card/FlipContent.tsx +90 -0
- package/src/components/chip/Chip.tsx +53 -25
- package/src/components/collapsable/Collapsable.tsx +35 -11
- package/src/components/divider/Divider.tsx +42 -16
- package/src/components/dropdown/Dropdown.tsx +47 -12
- package/src/components/dropdown/DropdownTool.tsx +28 -4
- package/src/components/empty/EmptyContent.tsx +49 -8
- package/src/components/icon/Icon.tsx +96 -18
- package/src/components/index.ts +5 -4
- package/src/components/media/Media.tsx +193 -105
- package/src/components/menu/ContextMenu.tsx +19 -0
- package/src/components/menu/Menu.tsx +88 -32
- package/src/components/menu/MenuItem.tsx +44 -19
- package/src/components/menu/types.ts +9 -8
- package/src/components/meter/Meter.tsx +27 -4
- package/src/components/navigator/Navigator.tsx +60 -12
- package/src/components/panel/Panel.tsx +66 -28
- package/src/components/panel/PanelGroup.tsx +25 -2
- package/src/components/panel/PanelStack.tsx +33 -2
- package/src/components/progress/ProgressBar.tsx +33 -14
- package/src/components/progress/ProgressCircle.tsx +29 -13
- package/src/components/tabpanel/Tab.tsx +47 -24
- package/src/components/tabpanel/TabPanel.tsx +79 -13
- package/src/context/Global.tsx +28 -1
- package/src/context/NotificationCenter.tsx +3 -3
- package/src/core/aside/Aside.tsx +59 -38
- package/src/core/boundary/ErrorBoundary.tsx +26 -8
- package/src/core/boundary/ErrorIcon.tsx +1 -2
- package/src/core/content/Content.tsx +7 -3
- package/src/core/headfoot/HeadFoot.tsx +44 -37
- package/src/core/page/Page.tsx +44 -22
- package/src/core/responsive/Responsive.tsx +66 -8
- package/src/core/section/Section.tsx +26 -4
- package/src/core/theme/ThemeProvider.tsx +35 -14
- package/src/core/viewport/Viewport.tsx +16 -3
- package/src/hooks/useControlledValue.tsx +12 -0
- package/src/hooks/useDebounce.ts +13 -1
- package/src/hooks/useEffectDebugger.ts +50 -2
- package/src/hooks/useIsDark.ts +8 -0
- package/src/hooks/useIsRtl.ts +12 -0
- package/src/hooks/useNavigator.tsx +28 -5
- package/src/hooks/useOverlayService.tsx +33 -8
- package/src/hooks/usePropToggle.ts +16 -5
- package/src/hooks/useResize.ts +19 -1
- package/src/hooks/useResizeObserver.ts +32 -9
- package/src/hooks/useStepper.tsx +68 -0
- package/src/hooks/useStorage.ts +38 -0
- package/src/hotkeys/HotKeyLabel.tsx +1 -1
- package/src/hotkeys/HotKeyWrapper.tsx +3 -1
- package/src/index.ts +5 -1
- package/src/overlays/alert/Alert.tsx +51 -36
- package/src/overlays/flyout/Flyout.tsx +74 -99
- package/src/overlays/message/Message.tsx +28 -9
- package/src/overlays/modal/Modal.tsx +39 -34
- package/src/overlays/toast/Toast.tsx +44 -33
- package/src/overlays/tooltip/Tooltip.tsx +44 -20
- package/src/types/global.d.ts +8 -0
- package/src/types/index.ts +293 -47
- package/src/typography/Abbr.tsx +45 -11
- package/src/typography/{Link.tsx → Anchor.tsx} +26 -14
- package/src/typography/Copy.tsx +16 -2
- package/src/typography/Mark.tsx +25 -10
- package/src/typography/Text.tsx +31 -13
- package/src/typography/Title.tsx +18 -7
- package/src/typography/index.ts +1 -1
- package/src/{overlays/tooltip/Tooltip.module.css → utils/cloneElement.ts} +21 -27
- package/src/utils/getColor.ts +1 -17
- package/src/utils/index.ts +1 -0
- package/css/flags.rect.css +0 -1607
- package/css/flags.wavy.css +0 -1606
- package/css/index.js +0 -250
- package/css/tailwind/colors.ts +0 -158
- package/dist/cjs/components/actionLabel/ActionLabel.module.css +0 -1
- package/dist/cjs/components/animations/Animations.module.css +0 -1
- package/dist/cjs/components/avatar/Avatar.module.css +0 -1
- package/dist/cjs/components/badge/Badge.module.css +0 -1
- package/dist/cjs/components/breadcrumbs/Breadcrumbs.module.css +0 -1
- package/dist/cjs/components/button/Button.module.css +0 -1
- package/dist/cjs/components/card/Card.module.css +0 -1
- package/dist/cjs/components/chip/Chip.module.css +0 -1
- package/dist/cjs/components/collapsable/Collapsable.module.css +0 -1
- package/dist/cjs/components/dropdown/Dropdown.module.css +0 -1
- package/dist/cjs/components/icon/Icon.module.css +0 -1
- package/dist/cjs/components/media/Media.module.css +0 -1
- package/dist/cjs/components/menu/Menu.module.css +0 -1
- package/dist/cjs/components/meter/Meter.module.css +0 -1
- package/dist/cjs/components/panel/Panel.module.css +0 -1
- package/dist/cjs/components/progress/Progress.module.css +0 -1
- package/dist/cjs/components/tabpanel/TabPanel.module.css +0 -1
- package/dist/cjs/core/aside/Aside.module.css +0 -1
- package/dist/cjs/core/boundary/ErrorBoundary.module.css +0 -1
- package/dist/cjs/core/content/Content.module.css +0 -1
- package/dist/cjs/core/headfoot/HeadFoot.module.css +0 -1
- package/dist/cjs/core/page/Page.module.css +0 -1
- package/dist/cjs/core/responsive/Responsive.module.css +0 -1
- package/dist/cjs/core/section/Section.module.css +0 -1
- package/dist/cjs/core/theme/Theme.module.css +0 -1
- package/dist/cjs/core/viewport/Viewport.module.css +0 -1
- package/dist/cjs/overlays/alert/Alert.module.css +0 -1
- package/dist/cjs/overlays/flyout/Flyout.module.css +0 -1
- package/dist/cjs/overlays/message/Message.module.css +0 -1
- package/dist/cjs/overlays/modal/Modal.module.css +0 -1
- package/dist/cjs/overlays/toast/Toast.module.css +0 -1
- package/dist/cjs/overlays/tooltip/Tooltip.module.css +0 -1
- package/dist/cjs/types/icons.js +0 -199
- package/dist/cjs/typography/Typography.module.css +0 -1
- package/dist/esm/components/actionLabel/ActionLabel.module.css +0 -1
- package/dist/esm/components/animations/Animations.module.css +0 -1
- package/dist/esm/components/avatar/Avatar.module.css +0 -1
- package/dist/esm/components/badge/Badge.module.css +0 -1
- package/dist/esm/components/breadcrumbs/Breadcrumbs.module.css +0 -1
- package/dist/esm/components/button/Button.module.css +0 -1
- package/dist/esm/components/card/Card.module.css +0 -1
- package/dist/esm/components/chip/Chip.module.css +0 -1
- package/dist/esm/components/collapsable/Collapsable.module.css +0 -1
- package/dist/esm/components/dropdown/Dropdown.module.css +0 -1
- package/dist/esm/components/icon/Icon.module.css +0 -1
- package/dist/esm/components/media/Media.module.css +0 -1
- package/dist/esm/components/menu/Menu.module.css +0 -1
- package/dist/esm/components/meter/Meter.module.css +0 -1
- package/dist/esm/components/panel/Panel.module.css +0 -1
- package/dist/esm/components/progress/Progress.module.css +0 -1
- package/dist/esm/components/tabpanel/TabPanel.module.css +0 -1
- package/dist/esm/core/aside/Aside.module.css +0 -1
- package/dist/esm/core/boundary/ErrorBoundary.module.css +0 -1
- package/dist/esm/core/content/Content.module.css +0 -1
- package/dist/esm/core/headfoot/HeadFoot.module.css +0 -1
- package/dist/esm/core/page/Page.module.css +0 -1
- package/dist/esm/core/responsive/Responsive.module.css +0 -1
- package/dist/esm/core/section/Section.module.css +0 -1
- package/dist/esm/core/theme/Theme.module.css +0 -1
- package/dist/esm/core/viewport/Viewport.module.css +0 -1
- package/dist/esm/overlays/alert/Alert.module.css +0 -1
- package/dist/esm/overlays/flyout/Flyout.module.css +0 -1
- package/dist/esm/overlays/message/Message.module.css +0 -1
- package/dist/esm/overlays/modal/Modal.module.css +0 -1
- package/dist/esm/overlays/toast/Toast.module.css +0 -1
- package/dist/esm/overlays/tooltip/Tooltip.module.css +0 -1
- package/dist/esm/types/icons.js +0 -201
- package/dist/esm/typography/Typography.module.css +0 -1
- package/dist/types/types/icons.d.ts +0 -196
- package/dist/types/typography/Link.d.ts +0 -25
- package/src/types/icons.ts +0 -425
|
@@ -26,25 +26,22 @@ import { useMemo } from "react";
|
|
|
26
26
|
import { type ContentProps } from "../../core/content/Content";
|
|
27
27
|
import { type HeadFootProps } from "../../core/headfoot/HeadFoot";
|
|
28
28
|
import { usePropToggle } from "../../hooks/usePropToggle";
|
|
29
|
+
import { HotKey } from "../../hotkeys/HotKey";
|
|
29
30
|
import {
|
|
30
31
|
type AriaProps,
|
|
31
32
|
type ChildrenProp,
|
|
32
33
|
type CollapseProps,
|
|
33
34
|
type CssProp,
|
|
34
35
|
type ExpandProps,
|
|
35
|
-
type IconProps,
|
|
36
36
|
type TestProps,
|
|
37
37
|
} from "../../types";
|
|
38
|
-
import {
|
|
39
|
-
import {
|
|
40
|
-
import { Icon } from "../icon/Icon";
|
|
41
|
-
import classes from "./Panel.module.css";
|
|
38
|
+
import { LoadingLine } from "../animations/Animations";
|
|
39
|
+
import { getIconProps, Icon, type IconProps } from "../icon/Icon";
|
|
42
40
|
|
|
43
41
|
export interface PanelProps
|
|
44
42
|
extends CssProp,
|
|
45
43
|
AriaProps,
|
|
46
44
|
TestProps,
|
|
47
|
-
IconProps,
|
|
48
45
|
ExpandProps,
|
|
49
46
|
CollapseProps,
|
|
50
47
|
ChildrenProp<HeadFootProps | ContentProps> {
|
|
@@ -68,6 +65,10 @@ export interface PanelProps
|
|
|
68
65
|
* title css classname(s)
|
|
69
66
|
*/
|
|
70
67
|
titleClassName?: string;
|
|
68
|
+
/**
|
|
69
|
+
* icon path or props
|
|
70
|
+
*/
|
|
71
|
+
icon?: IconProps;
|
|
71
72
|
/**
|
|
72
73
|
* loading state
|
|
73
74
|
*/
|
|
@@ -102,6 +103,41 @@ export interface PanelProps
|
|
|
102
103
|
onClose?: () => void;
|
|
103
104
|
}
|
|
104
105
|
|
|
106
|
+
/**
|
|
107
|
+
* A component that represents a panel with a header, body, and optional actions.
|
|
108
|
+
* It supports expandable and collapsible functionality, loading state, and customizable styles.
|
|
109
|
+
* The panel can be resized and has a fixed position when expanded.
|
|
110
|
+
* It can be customized with different colors, icons, and behaviors.
|
|
111
|
+
* This component is useful for displaying content in a structured way, allowing users to interact with it through actions and toggles.
|
|
112
|
+
* It can be used in various applications where panels are needed, such as dashboards, settings pages, or content management systems.
|
|
113
|
+
*
|
|
114
|
+
* @param {PanelProps} props - The properties for the Panel component.
|
|
115
|
+
* @returns {JSX.Element} The rendered Panel component.
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```jsx
|
|
119
|
+
* <Panel
|
|
120
|
+
* title="Panel Title"
|
|
121
|
+
* icon="icon-[mdi--info]"
|
|
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,
|
|
@@ -110,9 +146,6 @@ export const Panel = ({
|
|
|
110
146
|
title,
|
|
111
147
|
actions,
|
|
112
148
|
icon,
|
|
113
|
-
iconBg,
|
|
114
|
-
iconColor,
|
|
115
|
-
rtlFlip,
|
|
116
149
|
panelId,
|
|
117
150
|
height,
|
|
118
151
|
width,
|
|
@@ -146,7 +179,7 @@ export const Panel = ({
|
|
|
146
179
|
return (
|
|
147
180
|
<div
|
|
148
181
|
className={classNames(
|
|
149
|
-
|
|
182
|
+
"fabric-panel",
|
|
150
183
|
className,
|
|
151
184
|
"rounded-capped overflow-hidden outline grid",
|
|
152
185
|
expanded ? "fixed inset-4 z-50" : "relative",
|
|
@@ -169,31 +202,30 @@ export const Panel = ({
|
|
|
169
202
|
}
|
|
170
203
|
{...aria}
|
|
171
204
|
>
|
|
205
|
+
{expanded && <HotKey keyCombo="esc" handler={toggleExpand} />}
|
|
172
206
|
<header
|
|
173
207
|
role="none"
|
|
174
208
|
className={classNames(
|
|
175
|
-
|
|
209
|
+
"fabric-panelHeader",
|
|
176
210
|
headerClassName,
|
|
177
211
|
"flex flex-nowrap items-center area-head",
|
|
178
212
|
)}
|
|
179
|
-
data-
|
|
213
|
+
data-ref="panelHeader"
|
|
180
214
|
onClick={collapsable ? toggleCollapse : undefined}
|
|
181
215
|
>
|
|
182
216
|
{onBack && (
|
|
183
217
|
<Icon
|
|
218
|
+
rtlFlip
|
|
184
219
|
data-ref="panelBack"
|
|
185
|
-
className={classNames(
|
|
186
|
-
icon=
|
|
220
|
+
className={classNames("fabric-panelAction", "cursor-pointer")}
|
|
221
|
+
icon="icon-[mdi--chevron-left]"
|
|
187
222
|
onClick={onBack}
|
|
188
223
|
/>
|
|
189
224
|
)}
|
|
190
225
|
{icon && (
|
|
191
226
|
<Icon
|
|
192
|
-
icon={icon}
|
|
193
|
-
bg={iconBg}
|
|
194
|
-
color={iconColor}
|
|
195
|
-
rtlFlip={rtlFlip}
|
|
196
227
|
className="p-2 text-md select-none pointer-events-none"
|
|
228
|
+
{...getIconProps(icon)}
|
|
197
229
|
/>
|
|
198
230
|
)}
|
|
199
231
|
<div
|
|
@@ -205,7 +237,7 @@ export const Panel = ({
|
|
|
205
237
|
>
|
|
206
238
|
{title}
|
|
207
239
|
</div>
|
|
208
|
-
<div className="px-1">{actions}</div>
|
|
240
|
+
<div className="px-1 leading-none">{actions}</div>
|
|
209
241
|
{hasTools && (
|
|
210
242
|
<div
|
|
211
243
|
role="none"
|
|
@@ -215,24 +247,30 @@ export const Panel = ({
|
|
|
215
247
|
{expandable && (
|
|
216
248
|
<Icon
|
|
217
249
|
data-ref="panelExpand"
|
|
218
|
-
className={classNames(
|
|
219
|
-
icon={
|
|
250
|
+
className={classNames("fabric-panelAction", "cursor-pointer")}
|
|
251
|
+
icon={
|
|
252
|
+
expanded
|
|
253
|
+
? "icon-[mdi--fullscreen-exit]"
|
|
254
|
+
: "icon-[mdi--fullscreen]"
|
|
255
|
+
}
|
|
220
256
|
onClick={toggleExpand}
|
|
221
257
|
/>
|
|
222
258
|
)}
|
|
223
259
|
{!expanded && collapsable && (
|
|
224
260
|
<Icon
|
|
225
261
|
data-ref="panelCollapse"
|
|
226
|
-
className={classNames(
|
|
227
|
-
icon={
|
|
262
|
+
className={classNames("fabric-panelAction", "cursor-pointer")}
|
|
263
|
+
icon={
|
|
264
|
+
collapsed ? "icon-[mdi--plus-box]" : "icon-[mdi--minus-box]"
|
|
265
|
+
}
|
|
228
266
|
onClick={toggleCollapse}
|
|
229
267
|
/>
|
|
230
268
|
)}
|
|
231
269
|
{!expanded && onClose && (
|
|
232
270
|
<Icon
|
|
233
271
|
data-ref="panelClose"
|
|
234
|
-
className={classNames(
|
|
235
|
-
icon=
|
|
272
|
+
className={classNames("fabric-panelAction", "cursor-pointer")}
|
|
273
|
+
icon="icon-[mdi--close]"
|
|
236
274
|
onClick={onClose}
|
|
237
275
|
/>
|
|
238
276
|
)}
|
|
@@ -241,13 +279,13 @@ export const Panel = ({
|
|
|
241
279
|
</header>
|
|
242
280
|
{(!collapsed || expanded) && (
|
|
243
281
|
<div
|
|
244
|
-
data-
|
|
282
|
+
data-ref="panelBody"
|
|
245
283
|
className={classNames(
|
|
246
|
-
|
|
284
|
+
"fabric-panelBody",
|
|
247
285
|
"area-content grid overflow-hidden",
|
|
248
286
|
)}
|
|
249
287
|
>
|
|
250
|
-
{loading && <
|
|
288
|
+
{loading && <LoadingLine />}
|
|
251
289
|
{children}
|
|
252
290
|
</div>
|
|
253
291
|
)}
|
|
@@ -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,
|
|
@@ -82,7 +113,7 @@ export const PanelStack = ({
|
|
|
82
113
|
}, [onPanelChange, history]);
|
|
83
114
|
|
|
84
115
|
const goBack = useCallback(() => {
|
|
85
|
-
|
|
116
|
+
|
|
86
117
|
if (onBack?.(history[0], history[1] ?? "root") !== false) {
|
|
87
118
|
setHistory(history.slice(1));
|
|
88
119
|
}
|
|
@@ -100,7 +131,7 @@ export const PanelStack = ({
|
|
|
100
131
|
if (panelKey === "back") {
|
|
101
132
|
goBack();
|
|
102
133
|
} else if (panelKey === "root") {
|
|
103
|
-
|
|
134
|
+
|
|
104
135
|
if (onBack?.(history[0], "root") !== false) {
|
|
105
136
|
setHistory([]);
|
|
106
137
|
}
|
|
@@ -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>
|
|
@@ -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
|
);
|
|
@@ -30,9 +30,8 @@ import {
|
|
|
30
30
|
type BadgeType,
|
|
31
31
|
type CallbackReturn,
|
|
32
32
|
type ChildrenProp,
|
|
33
|
-
type
|
|
33
|
+
type ColorState,
|
|
34
34
|
type CssProp,
|
|
35
|
-
type IconProps,
|
|
36
35
|
type PolymorphicProps,
|
|
37
36
|
type RefProp,
|
|
38
37
|
type TestProps,
|
|
@@ -40,8 +39,7 @@ import {
|
|
|
40
39
|
} from "../../types";
|
|
41
40
|
import { Badge, getBadgeProps } from "../badge/Badge";
|
|
42
41
|
import { DropdownTool } from "../dropdown/DropdownTool";
|
|
43
|
-
import { Icon } from "../icon/Icon";
|
|
44
|
-
import classes from "./TabPanel.module.css";
|
|
42
|
+
import { getIconProps, Icon, type IconProps } from "../icon/Icon";
|
|
45
43
|
|
|
46
44
|
export interface TabProps
|
|
47
45
|
extends Partial<ChildrenProp>,
|
|
@@ -49,7 +47,6 @@ export interface TabProps
|
|
|
49
47
|
RefProp,
|
|
50
48
|
AriaProps,
|
|
51
49
|
TestProps,
|
|
52
|
-
IconProps,
|
|
53
50
|
TooltipProp {
|
|
54
51
|
/**
|
|
55
52
|
* tab id
|
|
@@ -62,7 +59,11 @@ export interface TabProps
|
|
|
62
59
|
/**
|
|
63
60
|
* tab color
|
|
64
61
|
*/
|
|
65
|
-
color?:
|
|
62
|
+
color?: ColorState;
|
|
63
|
+
/**
|
|
64
|
+
* icon path or props
|
|
65
|
+
*/
|
|
66
|
+
icon?: IconProps;
|
|
66
67
|
/**
|
|
67
68
|
* tab badge
|
|
68
69
|
*/
|
|
@@ -93,6 +94,35 @@ export interface TabProps
|
|
|
93
94
|
onClick?: (id: string) => CallbackReturn;
|
|
94
95
|
}
|
|
95
96
|
|
|
97
|
+
/**
|
|
98
|
+
* A component that represents a tab in a tabbed interface. It can display an icon, label, badge, and actions.
|
|
99
|
+
* It supports polymorphic rendering, allowing it to be rendered as different HTML elements.
|
|
100
|
+
* It also supports tooltips, active states, and click handling.
|
|
101
|
+
*
|
|
102
|
+
* @param {TabProps} props - The properties for the Tab component.
|
|
103
|
+
* @returns {JSX.Element} The rendered Tab component.
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```jsx
|
|
107
|
+
* <Tab
|
|
108
|
+
* id="tab1"
|
|
109
|
+
* label="Tab 1"
|
|
110
|
+
* icon="home"
|
|
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
|
+
*/
|
|
96
126
|
export const Tab = <Tag extends React.ElementType = "button">({
|
|
97
127
|
ref,
|
|
98
128
|
as,
|
|
@@ -100,16 +130,11 @@ export const Tab = <Tag extends React.ElementType = "button">({
|
|
|
100
130
|
className,
|
|
101
131
|
label,
|
|
102
132
|
icon,
|
|
103
|
-
iconBg,
|
|
104
|
-
iconColor,
|
|
105
|
-
rtlFlip,
|
|
106
133
|
badge,
|
|
107
134
|
disabled,
|
|
108
135
|
onClose,
|
|
109
136
|
// @ts-expect-error ignore
|
|
110
137
|
active,
|
|
111
|
-
// @ts-expect-error ignore
|
|
112
|
-
minimal,
|
|
113
138
|
onClick,
|
|
114
139
|
tabFlex,
|
|
115
140
|
color,
|
|
@@ -122,6 +147,8 @@ export const Tab = <Tag extends React.ElementType = "button">({
|
|
|
122
147
|
return getBadgeProps(badge);
|
|
123
148
|
}, [badge]);
|
|
124
149
|
|
|
150
|
+
const minimal = useMemo(() => !label, [label]);
|
|
151
|
+
|
|
125
152
|
const tooltipProps = useMemo(() => {
|
|
126
153
|
if (isString(tooltip)) return { content: tooltip };
|
|
127
154
|
|
|
@@ -136,28 +163,22 @@ export const Tab = <Tag extends React.ElementType = "button">({
|
|
|
136
163
|
data-id={id}
|
|
137
164
|
disabled={disabled}
|
|
138
165
|
data-color={color}
|
|
166
|
+
data-inner-clickable
|
|
139
167
|
className={classNames(
|
|
140
|
-
|
|
168
|
+
"fabric-tabButton",
|
|
141
169
|
className,
|
|
142
170
|
active && "active pointer-events-none",
|
|
143
171
|
active && activeClassName,
|
|
144
172
|
disabled && "text-tint-500 pointer-events-none",
|
|
145
|
-
tabFlex ? "flex-1" : "flex-initial max-w-36
|
|
146
|
-
|
|
173
|
+
tabFlex ? "flex-1" : "flex-initial max-w-36",
|
|
174
|
+
minimal ? "min-w-6 rounded" : "rounded-capped",
|
|
175
|
+
"flex items-center justify-center overflow-hidden cursor-pointer",
|
|
147
176
|
)}
|
|
148
177
|
onClick={() => !active && onClick?.(id)}
|
|
149
178
|
ref={ref as AnyObject}
|
|
150
179
|
{...aria}
|
|
151
180
|
>
|
|
152
|
-
{icon && (
|
|
153
|
-
<Icon
|
|
154
|
-
icon={icon}
|
|
155
|
-
bg={iconBg}
|
|
156
|
-
color={iconColor}
|
|
157
|
-
rtlFlip={rtlFlip}
|
|
158
|
-
className="flex-content"
|
|
159
|
-
/>
|
|
160
|
-
)}
|
|
181
|
+
{icon && <Icon className="flex-content p-2" {...getIconProps(icon)} />}
|
|
161
182
|
{!minimal && (
|
|
162
183
|
<label className="flex-initial truncate text-center px-1 py-1">
|
|
163
184
|
{label}
|
|
@@ -171,7 +192,9 @@ export const Tab = <Tag extends React.ElementType = "button">({
|
|
|
171
192
|
/>
|
|
172
193
|
)}
|
|
173
194
|
{actions && active && (
|
|
174
|
-
<DropdownTool className="bg-
|
|
195
|
+
<DropdownTool className="bg-tint-50/20 me-1 z-5">
|
|
196
|
+
{actions}
|
|
197
|
+
</DropdownTool>
|
|
175
198
|
)}
|
|
176
199
|
{onClose && (
|
|
177
200
|
<span
|