@react-fabric/core 1.0.0-beta.8 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{src/components/actionLabel/ActionLabel.module.css → css/components/_actionLabel.css} +4 -4
- package/{src/overlays/alert/Alert.module.css → css/components/_alert.css} +3 -3
- package/css/components/_animations.css +52 -0
- package/css/components/_avatar.css +89 -0
- package/css/components/_button.css +218 -0
- package/css/components/_buttonGroup.css +62 -0
- package/css/components/_callout.css +32 -0
- package/css/components/_card.css +167 -0
- package/css/components/_chip.css +125 -0
- package/css/components/_collapsable.css +32 -0
- package/{src/overlays/message/Message.module.css → css/components/_divider.css} +11 -10
- package/{src/components/dropdown/Dropdown.module.css → css/components/_dropdown.css} +3 -2
- package/{src/overlays/flyout/Flyout.module.css → css/components/_flyout.css} +15 -9
- package/css/components/_media.css +102 -0
- package/{src/components/menu/Menu.module.css → css/components/_menu.css} +21 -20
- package/{src/components/meter/Meter.module.css → css/components/_meter.css} +15 -20
- package/{src/overlays/modal/Modal.module.css → css/components/_modal.css} +9 -9
- package/{src/components/panel/Panel.module.css → css/components/_panel.css} +19 -19
- package/{src/components/progress/Progress.module.css → css/components/_progress.css} +7 -10
- package/css/components/_sonner.css +431 -0
- package/{src/components/tabpanel/TabPanel.module.css → css/components/_tabPanel.css} +125 -85
- package/css/components/_titlebar.css +48 -0
- package/css/components/index.css +47 -0
- package/css/core/_aside.css +176 -0
- package/css/core/_content.css +31 -0
- package/css/core/_errorboundary.css +55 -0
- package/css/core/_responsive.css +45 -0
- package/css/core/_typography.css +69 -0
- package/css/core/_viewport.css +33 -0
- package/{src/hooks/useClientService.tsx → css/core/index.css} +7 -7
- package/css/reset/_gradients.css +36 -33
- package/css/reset/_reset.css +206 -300
- package/css/reset/_text.css +31 -61
- package/css/reset/_theme.css +467 -81
- package/css/reset/index.css +23 -21
- package/css/styles.css +30 -23
- package/css/theme/_colors.css +445 -0
- package/css/theme/_utilities.css +528 -0
- package/css/theme/_variants.css +128 -0
- package/css/theme/index.css +55 -0
- package/dist/cjs/components/actionLabel/ActionLabel.js +25 -12
- package/dist/cjs/{overlays → components}/alert/Alert.js +76 -53
- package/dist/cjs/components/animations/Indicator.js +72 -0
- package/dist/cjs/components/animations/Loader.js +77 -0
- package/dist/cjs/components/animations/LoadingBars.js +37 -0
- package/dist/cjs/components/animations/LoadingLine.js +59 -0
- package/dist/cjs/components/animations/LoadingSpinner.js +37 -0
- package/dist/cjs/components/animations/Skeleton.js +88 -0
- package/dist/cjs/components/avatar/Avatar.js +41 -20
- package/dist/cjs/components/avatar/AvatarGroup.js +37 -16
- package/dist/cjs/components/badge/Badge.js +90 -68
- package/dist/cjs/components/button/Button.js +198 -136
- package/dist/cjs/components/button/ButtonGroup.js +86 -21
- package/dist/cjs/components/button/ConfirmButton.js +55 -41
- package/dist/cjs/components/button/ToggleButtonGroup.js +84 -32
- package/dist/cjs/components/callout/Callout.js +56 -25
- package/dist/cjs/components/card/Card.js +90 -42
- package/dist/cjs/components/card/CardCover.js +38 -27
- package/dist/cjs/components/card/FlipContent.js +47 -0
- package/dist/cjs/components/chip/Chip.js +80 -37
- package/dist/cjs/components/collapsable/Collapsable.js +62 -31
- package/dist/cjs/components/divider/Divider.js +58 -24
- package/dist/cjs/components/dropdown/Dropdown.js +92 -45
- package/dist/cjs/components/dropdown/DropdownTool.js +6 -7
- package/dist/cjs/components/effect/GlassEffect.js +259 -0
- package/dist/cjs/components/effect/MatteEffect.js +127 -0
- package/dist/cjs/components/effect/StyleEffect.js +43 -0
- package/dist/cjs/components/empty/EmptyContent.js +37 -49
- package/dist/cjs/components/flyout/Flyout.js +170 -0
- package/dist/cjs/components/hotkey/HotKey.js +42 -0
- package/dist/cjs/components/icon/Icon.js +81 -80
- package/dist/cjs/components/media/Media.js +154 -77
- package/dist/cjs/components/menu/ContextMenu.js +45 -20
- package/dist/cjs/components/menu/Menu.js +98 -38
- package/dist/cjs/components/menu/MenuItem.js +102 -74
- package/dist/cjs/components/meter/Meter.js +35 -12
- package/dist/cjs/components/modal/Modal.js +152 -0
- package/dist/cjs/components/navigator/Navigator.js +81 -36
- package/dist/cjs/components/panel/Panel.js +115 -60
- package/dist/cjs/components/panel/PanelGroup.js +42 -16
- package/dist/cjs/components/panel/PanelStack.js +47 -16
- package/dist/cjs/components/pillbox/Pillbox.js +118 -0
- package/dist/cjs/components/progress/ProgressBar.js +30 -14
- package/dist/cjs/components/progress/ProgressCircle.js +27 -11
- package/dist/cjs/components/tabpanel/Tab.js +53 -37
- package/dist/cjs/components/tabpanel/TabPanel.js +74 -28
- package/dist/cjs/components/titlebar/Titlebar.js +52 -0
- package/dist/cjs/components/tooltip/Tooltip.js +180 -0
- package/dist/cjs/context/Global.js +159 -80
- package/dist/cjs/context/ModalManager.js +60 -0
- package/dist/cjs/context/context.js +43 -0
- package/dist/cjs/core/areaToggle/AreaToggle.js +41 -0
- package/dist/cjs/core/aside/Aside.js +178 -83
- package/dist/cjs/core/boundary/ErrorBoundary.js +37 -34
- package/dist/cjs/core/boundary/ErrorIcon.js +32 -19
- package/dist/cjs/core/content/Content.js +26 -37
- package/dist/cjs/core/headfoot/HeadFoot.js +133 -35
- package/dist/cjs/core/layout/Layout.js +28 -0
- package/dist/cjs/core/responsive/Responsive.js +62 -26
- package/dist/cjs/core/theme/ThemeProvider.js +35 -41
- package/dist/cjs/core/viewport/Viewport.js +26 -22
- package/dist/cjs/hooks/useClientService.js +39 -18
- package/dist/cjs/hooks/useContextMenu.js +103 -0
- package/dist/cjs/hooks/useControlledValue.js +13 -7
- package/dist/cjs/hooks/useDebounce.js +37 -21
- package/dist/cjs/hooks/useEffectDebugger.js +79 -60
- package/dist/cjs/hooks/useIsDark.js +34 -26
- package/dist/cjs/hooks/useIsRtl.js +13 -3
- package/dist/cjs/hooks/useNavigator.js +12 -9
- package/dist/cjs/hooks/useNotificationService.js +199 -0
- package/dist/cjs/hooks/useOverlayService.js +82 -41
- package/dist/cjs/hooks/usePropState.js +41 -0
- package/dist/cjs/hooks/usePropToggle.js +32 -26
- package/dist/cjs/hooks/useResize.js +47 -38
- package/dist/cjs/hooks/useResizeObserver.js +26 -7
- package/dist/cjs/hooks/useStorage.js +29 -16
- package/dist/cjs/i18n/index.js +25 -23
- package/dist/cjs/index.js +142 -94
- package/dist/cjs/typography/Abbr.js +43 -20
- package/dist/cjs/typography/Anchor.js +39 -0
- package/dist/cjs/typography/Copy.js +28 -28
- package/dist/cjs/typography/Kbd.js +43 -0
- package/dist/cjs/typography/Mark.js +34 -17
- package/dist/cjs/typography/Text.js +36 -54
- package/dist/cjs/typography/Title.js +17 -40
- package/dist/cjs/utils/calculateDimensions.js +38 -23
- package/dist/cjs/utils/cloneElement.js +64 -0
- package/dist/cjs/{core/section/Section.js → utils/getBadgeProps.js} +25 -21
- package/dist/cjs/utils/getColor.js +42 -36
- package/dist/cjs/utils/getIconProps.js +63 -0
- package/dist/cjs/utils/getTooltipProps.js +66 -0
- package/dist/cjs/utils/nodeCheck.js +4 -4
- package/dist/esm/components/actionLabel/ActionLabel.js +25 -12
- package/dist/esm/{overlays → components}/alert/Alert.js +73 -50
- package/dist/esm/components/animations/Indicator.js +72 -0
- package/dist/esm/components/animations/Loader.js +77 -0
- package/dist/esm/components/animations/LoadingBars.js +37 -0
- package/dist/esm/components/animations/LoadingLine.js +59 -0
- package/dist/esm/components/animations/LoadingSpinner.js +37 -0
- package/dist/esm/components/animations/Skeleton.js +88 -0
- package/dist/esm/components/avatar/Avatar.js +42 -21
- package/dist/esm/components/avatar/AvatarGroup.js +37 -16
- package/dist/esm/components/badge/Badge.js +93 -70
- package/dist/esm/components/button/Button.js +199 -137
- package/dist/esm/components/button/ButtonGroup.js +87 -22
- package/dist/esm/components/button/ConfirmButton.js +58 -44
- package/dist/esm/components/button/ToggleButtonGroup.js +86 -34
- package/dist/esm/components/callout/Callout.js +56 -25
- package/dist/esm/components/card/Card.js +92 -44
- package/dist/esm/components/card/CardCover.js +38 -27
- package/dist/esm/components/card/FlipContent.js +47 -0
- package/dist/esm/components/chip/Chip.js +81 -38
- package/dist/esm/components/collapsable/Collapsable.js +63 -32
- package/dist/esm/components/divider/Divider.js +59 -25
- package/dist/esm/components/dropdown/Dropdown.js +95 -48
- package/dist/esm/components/dropdown/DropdownTool.js +6 -7
- package/dist/esm/components/effect/GlassEffect.js +259 -0
- package/dist/esm/components/effect/MatteEffect.js +127 -0
- package/dist/esm/components/effect/StyleEffect.js +43 -0
- package/dist/esm/components/empty/EmptyContent.js +38 -50
- package/dist/esm/components/flyout/Flyout.js +170 -0
- package/dist/esm/components/hotkey/HotKey.js +42 -0
- package/dist/esm/components/icon/Icon.js +83 -82
- package/dist/esm/components/media/Media.js +156 -79
- package/dist/esm/components/menu/ContextMenu.js +46 -21
- package/dist/esm/components/menu/Menu.js +101 -41
- package/dist/esm/components/menu/MenuItem.js +98 -70
- package/dist/esm/components/meter/Meter.js +36 -13
- package/dist/esm/components/modal/Modal.js +152 -0
- package/dist/esm/components/navigator/Navigator.js +81 -36
- package/dist/esm/components/panel/Panel.js +117 -62
- package/dist/esm/components/panel/PanelGroup.js +43 -17
- package/dist/esm/components/panel/PanelStack.js +48 -17
- package/dist/esm/components/pillbox/Pillbox.js +118 -0
- package/dist/esm/components/progress/ProgressBar.js +31 -15
- package/dist/esm/components/progress/ProgressCircle.js +28 -12
- package/dist/esm/components/tabpanel/Tab.js +54 -38
- package/dist/esm/components/tabpanel/TabPanel.js +75 -29
- package/dist/esm/components/titlebar/Titlebar.js +52 -0
- package/dist/esm/components/tooltip/Tooltip.js +180 -0
- package/dist/esm/context/Global.js +161 -78
- package/dist/esm/context/ModalManager.js +60 -0
- package/dist/esm/context/context.js +40 -0
- package/dist/esm/core/areaToggle/AreaToggle.js +41 -0
- package/dist/esm/core/aside/Aside.js +179 -84
- package/dist/esm/core/boundary/ErrorBoundary.js +38 -35
- package/dist/esm/core/boundary/ErrorIcon.js +32 -19
- package/dist/esm/core/content/Content.js +26 -37
- package/dist/esm/core/headfoot/HeadFoot.js +134 -36
- package/dist/esm/core/layout/Layout.js +28 -0
- package/dist/esm/core/responsive/Responsive.js +62 -26
- package/dist/esm/core/theme/ThemeProvider.js +36 -42
- package/dist/esm/core/viewport/Viewport.js +26 -22
- package/dist/esm/hooks/useClientService.js +39 -18
- package/dist/esm/hooks/useContextMenu.js +103 -0
- package/dist/esm/hooks/useControlledValue.js +14 -8
- package/dist/esm/hooks/useDebounce.js +37 -21
- package/dist/esm/hooks/useEffectDebugger.js +81 -62
- package/dist/esm/hooks/useIsDark.js +34 -26
- package/dist/esm/hooks/useIsRtl.js +13 -3
- package/dist/esm/hooks/useNavigator.js +13 -10
- package/dist/esm/hooks/useNotificationService.js +199 -0
- package/dist/esm/hooks/useOverlayService.js +83 -42
- package/dist/esm/hooks/usePropState.js +40 -0
- package/dist/esm/hooks/usePropToggle.js +33 -27
- package/dist/esm/hooks/useResize.js +48 -39
- package/dist/esm/hooks/useResizeObserver.js +27 -8
- package/dist/esm/hooks/useStorage.js +30 -17
- package/dist/esm/i18n/index.js +23 -21
- package/dist/esm/index.js +87 -44
- package/dist/esm/typography/Abbr.js +45 -22
- package/dist/esm/typography/Anchor.js +39 -0
- package/dist/esm/typography/Copy.js +28 -28
- package/dist/esm/typography/Kbd.js +43 -0
- package/dist/esm/typography/Mark.js +35 -18
- package/dist/esm/typography/Text.js +39 -57
- package/dist/esm/typography/Title.js +17 -40
- package/dist/esm/utils/calculateDimensions.js +38 -23
- package/dist/esm/utils/cloneElement.js +64 -0
- package/dist/esm/{core/section/Section.js → utils/getBadgeProps.js} +25 -21
- package/dist/esm/utils/getColor.js +43 -34
- package/dist/esm/utils/getIconProps.js +63 -0
- package/dist/esm/utils/getTooltipProps.js +66 -0
- package/dist/esm/utils/nodeCheck.js +4 -4
- package/dist/types/components/actionLabel/ActionLabel.d.ts +20 -7
- package/dist/types/components/alert/Alert.d.ts +74 -0
- package/dist/types/components/animations/Indicator.d.ts +57 -0
- package/dist/types/components/animations/Loader.d.ts +65 -0
- package/dist/types/components/animations/LoadingBars.d.ts +61 -0
- package/dist/types/components/animations/LoadingLine.d.ts +43 -0
- package/dist/types/components/animations/LoadingSpinner.d.ts +61 -0
- package/dist/types/components/animations/Skeleton.d.ts +61 -0
- package/dist/types/components/avatar/Avatar.d.ts +70 -19
- package/dist/types/components/avatar/AvatarGroup.d.ts +51 -14
- package/dist/types/components/badge/Badge.d.ts +64 -14
- package/dist/types/components/button/Button.d.ts +72 -55
- package/dist/types/components/button/ButtonGroup.d.ts +86 -24
- package/dist/types/components/button/ConfirmButton.d.ts +21 -7
- package/dist/types/components/button/ToggleButtonGroup.d.ts +88 -44
- package/dist/types/components/callout/Callout.d.ts +58 -7
- package/dist/types/components/card/Card.d.ts +66 -25
- package/dist/types/components/card/CardCover.d.ts +52 -7
- package/dist/types/components/card/FlipContent.d.ts +50 -0
- package/dist/types/components/chip/Chip.d.ts +72 -20
- package/dist/types/components/collapsable/Collapsable.d.ts +55 -15
- package/dist/types/components/divider/Divider.d.ts +25 -8
- package/dist/types/components/dropdown/Dropdown.d.ts +42 -9
- package/dist/types/components/dropdown/DropdownTool.d.ts +22 -4
- package/dist/types/components/effect/GlassEffect.d.ts +5 -0
- package/dist/types/components/effect/MatteEffect.d.ts +40 -0
- package/dist/types/components/effect/StyleEffect.d.ts +27 -0
- package/dist/types/components/empty/EmptyContent.d.ts +53 -9
- package/dist/types/components/flyout/Flyout.d.ts +60 -0
- package/dist/types/components/hotkey/HotKey.d.ts +41 -0
- package/dist/types/components/icon/Icon.d.ts +74 -24
- package/dist/types/components/media/Media.d.ts +72 -4
- package/dist/types/components/menu/ContextMenu.d.ts +22 -5
- package/dist/types/components/menu/Menu.d.ts +26 -2
- package/dist/types/components/menu/MenuItem.d.ts +19 -4
- package/dist/types/components/menu/types.d.ts +23 -14
- package/dist/types/components/meter/Meter.d.ts +23 -3
- package/dist/types/components/modal/Modal.d.ts +52 -0
- package/dist/types/components/navigator/Navigator.d.ts +30 -4
- package/dist/types/components/panel/Panel.d.ts +43 -23
- package/dist/types/components/panel/PanelGroup.d.ts +22 -3
- package/dist/types/components/panel/PanelStack.d.ts +28 -2
- package/dist/types/components/pillbox/Pillbox.d.ts +95 -0
- package/dist/types/components/progress/ProgressBar.d.ts +19 -4
- package/dist/types/components/progress/ProgressCircle.d.ts +18 -4
- package/dist/types/components/tabpanel/Tab.d.ts +42 -10
- package/dist/types/components/tabpanel/TabPanel.d.ts +47 -7
- package/dist/types/components/titlebar/Titlebar.d.ts +54 -0
- package/dist/types/components/tooltip/Tooltip.d.ts +76 -0
- package/dist/types/context/Global.d.ts +39 -69
- package/dist/types/context/ModalManager.d.ts +30 -0
- package/dist/types/context/context.d.ts +107 -0
- package/dist/types/core/areaToggle/AreaToggle.d.ts +33 -0
- package/dist/types/core/aside/Aside.d.ts +75 -20
- package/dist/types/core/boundary/ErrorBoundary.d.ts +43 -4
- package/dist/types/core/boundary/ErrorIcon.d.ts +38 -1
- package/dist/types/core/content/Content.d.ts +38 -6
- package/dist/types/core/headfoot/HeadFoot.d.ts +48 -14
- package/dist/types/core/layout/Layout.d.ts +38 -0
- package/dist/types/core/responsive/Responsive.d.ts +45 -15
- package/dist/types/core/theme/ThemeProvider.d.ts +35 -11
- package/dist/types/core/viewport/Viewport.d.ts +27 -3
- package/dist/types/hooks/useClientService.d.ts +43 -1
- package/dist/types/hooks/useContextMenu.d.ts +10 -0
- package/dist/types/hooks/useControlledValue.d.ts +28 -4
- package/dist/types/hooks/useDebounce.d.ts +38 -2
- package/dist/types/hooks/useEffectDebugger.d.ts +73 -4
- package/dist/types/hooks/useIsDark.d.ts +6 -0
- package/dist/types/hooks/useIsRtl.d.ts +35 -1
- package/dist/types/hooks/useNavigator.d.ts +37 -2
- package/dist/types/hooks/useNotificationService.d.ts +60 -0
- package/dist/types/hooks/useOverlayService.d.ts +28 -8
- package/dist/types/hooks/usePropState.d.ts +26 -0
- package/dist/types/hooks/usePropToggle.d.ts +41 -7
- package/dist/types/hooks/useResize.d.ts +46 -4
- package/dist/types/hooks/useResizeObserver.d.ts +45 -3
- package/dist/types/hooks/useStorage.d.ts +32 -2
- package/dist/types/i18n/index.d.ts +27 -3
- package/dist/types/index.d.ts +106 -18
- package/dist/types/types/colors.d.ts +29 -0
- package/dist/types/types/index.d.ts +216 -76
- package/dist/types/typography/Abbr.d.ts +51 -6
- package/dist/types/typography/Anchor.d.ts +41 -0
- package/dist/types/typography/Copy.d.ts +36 -2
- package/dist/types/typography/Kbd.d.ts +40 -0
- package/dist/types/typography/Mark.d.ts +44 -7
- package/dist/types/typography/Text.d.ts +40 -24
- package/dist/types/typography/Title.d.ts +37 -26
- package/dist/types/typography/types.d.ts +32 -0
- package/dist/types/utils/calculateDimensions.d.ts +50 -6
- package/dist/types/utils/cloneElement.d.ts +41 -0
- package/dist/types/utils/getBadgeProps.d.ts +16 -0
- package/dist/types/utils/getColor.d.ts +43 -4
- package/dist/types/utils/getIconProps.d.ts +45 -0
- package/dist/types/utils/getTooltipProps.d.ts +47 -0
- package/dist/types/utils/index.d.ts +28 -0
- package/dist/types/utils/nodeCheck.d.ts +1 -2
- package/package.json +29 -21
- package/src/components/actionLabel/ActionLabel.tsx +28 -39
- package/src/components/alert/Alert.tsx +261 -0
- package/src/components/animations/Indicator.tsx +76 -0
- package/src/components/animations/Loader.tsx +89 -0
- package/src/components/animations/LoadingBars.tsx +70 -0
- package/src/components/animations/LoadingLine.tsx +51 -0
- package/src/components/animations/LoadingSpinner.tsx +70 -0
- package/src/components/animations/Skeleton.tsx +100 -0
- package/src/components/avatar/Avatar.tsx +89 -70
- package/src/components/avatar/AvatarGroup.tsx +65 -74
- package/src/components/badge/Badge.tsx +141 -108
- package/src/components/button/Button.tsx +223 -238
- package/src/components/button/ButtonGroup.tsx +117 -77
- package/src/components/button/ConfirmButton.tsx +60 -90
- package/src/components/button/ToggleButtonGroup.tsx +134 -120
- package/src/components/callout/Callout.tsx +81 -59
- package/src/components/card/Card.tsx +131 -113
- package/src/components/card/CardCover.tsx +61 -61
- package/src/components/card/FlipContent.tsx +78 -0
- package/src/components/chip/Chip.tsx +139 -99
- package/src/components/collapsable/Collapsable.tsx +79 -77
- package/src/components/divider/Divider.tsx +74 -53
- package/src/components/dropdown/Dropdown.tsx +109 -106
- package/src/components/dropdown/DropdownTool.tsx +29 -12
- package/src/components/effect/GlassEffect.tsx +221 -0
- package/src/components/effect/MatteEffect.tsx +99 -0
- package/src/components/effect/StyleEffect.tsx +36 -0
- package/src/components/empty/EmptyContent.tsx +60 -99
- package/src/components/flyout/Flyout.tsx +257 -0
- package/src/components/hotkey/HotKey.tsx +57 -0
- package/src/components/icon/Icon.tsx +131 -130
- package/src/components/media/Media.tsx +184 -154
- package/src/components/menu/ContextMenu.tsx +56 -39
- package/src/components/menu/Menu.tsx +121 -84
- package/src/components/menu/MenuItem.tsx +87 -69
- package/src/components/menu/types.ts +23 -28
- package/src/components/meter/Meter.tsx +34 -17
- package/src/components/modal/Modal.tsx +226 -0
- package/src/components/navigator/Navigator.tsx +93 -38
- package/src/components/panel/Panel.tsx +123 -131
- package/src/components/panel/PanelGroup.tsx +49 -43
- package/src/components/panel/PanelStack.tsx +63 -62
- package/src/components/pillbox/Pillbox.tsx +208 -0
- package/src/components/progress/ProgressBar.tsx +33 -33
- package/src/components/progress/ProgressCircle.tsx +29 -37
- package/src/components/tabpanel/Tab.tsx +84 -73
- package/src/components/tabpanel/TabPanel.tsx +102 -51
- package/src/components/titlebar/Titlebar.tsx +115 -0
- package/src/components/tooltip/Tooltip.tsx +255 -0
- package/src/context/Global.tsx +148 -148
- package/src/context/ModalManager.tsx +68 -0
- package/src/context/context.ts +111 -0
- package/src/core/areaToggle/AreaToggle.tsx +45 -0
- package/src/core/aside/Aside.tsx +200 -155
- package/src/core/boundary/ErrorBoundary.tsx +50 -68
- package/src/core/boundary/ErrorIcon.tsx +34 -32
- package/src/core/content/Content.tsx +41 -50
- package/src/core/headfoot/HeadFoot.tsx +162 -81
- package/src/core/layout/Layout.tsx +54 -0
- package/src/core/responsive/Responsive.tsx +91 -98
- package/src/core/theme/ThemeProvider.tsx +45 -56
- package/src/core/viewport/Viewport.tsx +25 -27
- package/src/hooks/useClientService.ts +47 -0
- package/src/hooks/useContextMenu.tsx +131 -0
- package/src/hooks/useControlledValue.ts +47 -0
- package/src/hooks/useDebounce.ts +41 -24
- package/src/hooks/useEffectDebugger.ts +105 -94
- package/src/hooks/useIsDark.ts +10 -24
- package/src/hooks/useIsRtl.ts +32 -20
- package/src/hooks/useNavigator.tsx +41 -26
- package/src/hooks/useNotificationService.tsx +239 -0
- package/src/hooks/useOverlayService.tsx +67 -20
- package/src/hooks/usePropState.ts +52 -0
- package/src/hooks/usePropToggle.ts +54 -47
- package/src/hooks/useResize.ts +69 -45
- package/src/hooks/useResizeObserver.ts +59 -34
- package/src/hooks/useStorage.ts +40 -48
- package/src/i18n/index.ts +24 -25
- package/src/index.ts +115 -44
- package/src/types/colors.ts +49 -0
- package/src/types/global.d.ts +40 -17
- package/src/types/index.ts +243 -155
- package/src/typography/Abbr.tsx +62 -59
- package/src/typography/Anchor.tsx +63 -0
- package/src/typography/Copy.tsx +39 -29
- package/src/typography/Kbd.tsx +50 -0
- package/src/typography/Mark.tsx +56 -51
- package/src/typography/Text.tsx +57 -128
- package/src/typography/Title.tsx +36 -108
- package/src/typography/types.ts +27 -17
- package/src/utils/calculateDimensions.ts +50 -40
- package/src/utils/cloneElement.ts +61 -0
- package/src/{core/content/Content.module.css → utils/getBadgeProps.ts} +20 -15
- package/src/utils/getColor.ts +42 -36
- package/src/utils/getIconProps.ts +58 -0
- package/src/utils/getTooltipProps.ts +59 -0
- package/src/utils/index.ts +23 -17
- package/src/utils/nodeCheck.ts +4 -8
- package/css/flags.rect.css +0 -1607
- package/css/flags.wavy.css +0 -1606
- package/css/index.js +0 -250
- package/css/tailwind/colors.ts +0 -158
- package/dist/cjs/components/actionLabel/ActionLabel.module.css +0 -1
- package/dist/cjs/components/animations/Animations.js +0 -142
- package/dist/cjs/components/animations/Animations.module.css +0 -1
- package/dist/cjs/components/avatar/Avatar.module.css +0 -1
- package/dist/cjs/components/badge/Badge.module.css +0 -1
- package/dist/cjs/components/breadcrumbs/Breadcrumbs.js +0 -71
- package/dist/cjs/components/breadcrumbs/Breadcrumbs.module.css +0 -1
- package/dist/cjs/components/button/Button.module.css +0 -1
- package/dist/cjs/components/card/Card.module.css +0 -1
- package/dist/cjs/components/chip/Chip.module.css +0 -1
- package/dist/cjs/components/collapsable/Collapsable.module.css +0 -1
- package/dist/cjs/components/dropdown/Dropdown.module.css +0 -1
- package/dist/cjs/components/icon/Icon.module.css +0 -1
- package/dist/cjs/components/media/Media.module.css +0 -1
- package/dist/cjs/components/menu/Menu.module.css +0 -1
- package/dist/cjs/components/meter/Meter.module.css +0 -1
- package/dist/cjs/components/panel/Panel.module.css +0 -1
- package/dist/cjs/components/progress/Progress.module.css +0 -1
- package/dist/cjs/components/tabpanel/TabPanel.module.css +0 -1
- package/dist/cjs/context/NotificationCenter.js +0 -254
- package/dist/cjs/core/aside/Aside.module.css +0 -1
- package/dist/cjs/core/boundary/ErrorBoundary.module.css +0 -1
- package/dist/cjs/core/content/Content.module.css +0 -1
- package/dist/cjs/core/headfoot/HeadFoot.module.css +0 -1
- package/dist/cjs/core/page/Page.js +0 -66
- package/dist/cjs/core/page/Page.module.css +0 -1
- package/dist/cjs/core/responsive/Responsive.module.css +0 -1
- package/dist/cjs/core/section/Section.module.css +0 -1
- package/dist/cjs/core/theme/Theme.module.css +0 -1
- package/dist/cjs/core/viewport/Viewport.module.css +0 -1
- package/dist/cjs/hotkeys/HotKey.js +0 -47
- package/dist/cjs/hotkeys/HotKeyLabel.js +0 -52
- package/dist/cjs/hotkeys/HotKeyWrapper.js +0 -98
- package/dist/cjs/hotkeys/commons.js +0 -56
- package/dist/cjs/overlays/alert/Alert.module.css +0 -1
- package/dist/cjs/overlays/flyout/Flyout.js +0 -152
- package/dist/cjs/overlays/flyout/Flyout.module.css +0 -1
- package/dist/cjs/overlays/message/Message.js +0 -84
- package/dist/cjs/overlays/message/Message.module.css +0 -1
- package/dist/cjs/overlays/modal/Modal.js +0 -132
- package/dist/cjs/overlays/modal/Modal.module.css +0 -1
- package/dist/cjs/overlays/toast/Toast.js +0 -166
- package/dist/cjs/overlays/toast/Toast.module.css +0 -1
- package/dist/cjs/overlays/tooltip/Tooltip.js +0 -133
- package/dist/cjs/overlays/tooltip/Tooltip.module.css +0 -1
- package/dist/cjs/types/icons.js +0 -200
- package/dist/cjs/typography/Link.js +0 -55
- package/dist/cjs/typography/Typography.module.css +0 -1
- package/dist/cjs/typography/types.js +0 -42
- package/dist/esm/components/actionLabel/ActionLabel.module.css +0 -1
- package/dist/esm/components/animations/Animations.js +0 -138
- package/dist/esm/components/animations/Animations.module.css +0 -1
- package/dist/esm/components/avatar/Avatar.module.css +0 -1
- package/dist/esm/components/badge/Badge.module.css +0 -1
- package/dist/esm/components/breadcrumbs/Breadcrumbs.js +0 -71
- package/dist/esm/components/breadcrumbs/Breadcrumbs.module.css +0 -1
- package/dist/esm/components/button/Button.module.css +0 -1
- package/dist/esm/components/card/Card.module.css +0 -1
- package/dist/esm/components/chip/Chip.module.css +0 -1
- package/dist/esm/components/collapsable/Collapsable.module.css +0 -1
- package/dist/esm/components/dropdown/Dropdown.module.css +0 -1
- package/dist/esm/components/icon/Icon.module.css +0 -1
- package/dist/esm/components/media/Media.module.css +0 -1
- package/dist/esm/components/menu/Menu.module.css +0 -1
- package/dist/esm/components/meter/Meter.module.css +0 -1
- package/dist/esm/components/panel/Panel.module.css +0 -1
- package/dist/esm/components/progress/Progress.module.css +0 -1
- package/dist/esm/components/tabpanel/TabPanel.module.css +0 -1
- package/dist/esm/context/NotificationCenter.js +0 -254
- package/dist/esm/core/aside/Aside.module.css +0 -1
- package/dist/esm/core/boundary/ErrorBoundary.module.css +0 -1
- package/dist/esm/core/content/Content.module.css +0 -1
- package/dist/esm/core/headfoot/HeadFoot.module.css +0 -1
- package/dist/esm/core/page/Page.js +0 -66
- package/dist/esm/core/page/Page.module.css +0 -1
- package/dist/esm/core/responsive/Responsive.module.css +0 -1
- package/dist/esm/core/section/Section.module.css +0 -1
- package/dist/esm/core/theme/Theme.module.css +0 -1
- package/dist/esm/core/viewport/Viewport.module.css +0 -1
- package/dist/esm/hotkeys/HotKey.js +0 -47
- package/dist/esm/hotkeys/HotKeyLabel.js +0 -52
- package/dist/esm/hotkeys/HotKeyWrapper.js +0 -96
- package/dist/esm/hotkeys/commons.js +0 -56
- package/dist/esm/overlays/alert/Alert.module.css +0 -1
- package/dist/esm/overlays/flyout/Flyout.js +0 -152
- package/dist/esm/overlays/flyout/Flyout.module.css +0 -1
- package/dist/esm/overlays/message/Message.js +0 -84
- package/dist/esm/overlays/message/Message.module.css +0 -1
- package/dist/esm/overlays/modal/Modal.js +0 -132
- package/dist/esm/overlays/modal/Modal.module.css +0 -1
- package/dist/esm/overlays/toast/Toast.js +0 -166
- package/dist/esm/overlays/toast/Toast.module.css +0 -1
- package/dist/esm/overlays/tooltip/Tooltip.js +0 -132
- package/dist/esm/overlays/tooltip/Tooltip.module.css +0 -1
- package/dist/esm/types/icons.js +0 -202
- package/dist/esm/typography/Link.js +0 -55
- package/dist/esm/typography/Typography.module.css +0 -1
- package/dist/esm/typography/types.js +0 -41
- package/dist/types/components/animations/Animations.d.ts +0 -23
- package/dist/types/components/breadcrumbs/Breadcrumbs.d.ts +0 -17
- package/dist/types/components/index.d.ts +0 -33
- package/dist/types/context/NotificationCenter.d.ts +0 -11
- package/dist/types/core/index.d.ts +0 -9
- package/dist/types/core/page/Page.d.ts +0 -23
- package/dist/types/core/section/Section.d.ts +0 -7
- package/dist/types/hotkeys/HotKey.d.ts +0 -2
- package/dist/types/hotkeys/HotKeyLabel.d.ts +0 -2
- package/dist/types/hotkeys/HotKeyWrapper.d.ts +0 -11
- package/dist/types/hotkeys/commons.d.ts +0 -28
- package/dist/types/overlays/alert/Alert.d.ts +0 -41
- package/dist/types/overlays/flyout/Flyout.d.ts +0 -57
- package/dist/types/overlays/index.d.ts +0 -6
- package/dist/types/overlays/message/Message.d.ts +0 -21
- package/dist/types/overlays/modal/Modal.d.ts +0 -53
- package/dist/types/overlays/toast/Toast.d.ts +0 -33
- package/dist/types/overlays/tooltip/Tooltip.d.ts +0 -18
- package/dist/types/types/icons.d.ts +0 -197
- package/dist/types/typography/Link.d.ts +0 -25
- package/dist/types/typography/index.d.ts +0 -6
- package/src/components/animations/Animations.module.css +0 -253
- package/src/components/animations/Animations.tsx +0 -196
- package/src/components/avatar/Avatar.module.css +0 -90
- package/src/components/badge/Badge.module.css +0 -165
- package/src/components/breadcrumbs/Breadcrumbs.module.css +0 -189
- package/src/components/breadcrumbs/Breadcrumbs.tsx +0 -109
- package/src/components/button/Button.module.css +0 -375
- package/src/components/card/Card.module.css +0 -152
- package/src/components/chip/Chip.module.css +0 -118
- package/src/components/collapsable/Collapsable.module.css +0 -30
- package/src/components/icon/Icon.module.css +0 -71
- package/src/components/index.ts +0 -62
- package/src/components/media/Media.module.css +0 -112
- package/src/context/NotificationCenter.tsx +0 -223
- package/src/core/aside/Aside.module.css +0 -231
- package/src/core/boundary/ErrorBoundary.module.css +0 -65
- package/src/core/headfoot/HeadFoot.module.css +0 -38
- package/src/core/index.ts +0 -32
- package/src/core/page/Page.module.css +0 -46
- package/src/core/page/Page.tsx +0 -101
- package/src/core/responsive/Responsive.module.css +0 -85
- package/src/core/section/Section.module.css +0 -28
- package/src/core/section/Section.tsx +0 -54
- package/src/core/theme/Theme.module.css +0 -30
- package/src/core/viewport/Viewport.module.css +0 -32
- package/src/hooks/useControlledValue.tsx +0 -43
- package/src/hotkeys/HotKey.tsx +0 -39
- package/src/hotkeys/HotKeyLabel.tsx +0 -61
- package/src/hotkeys/HotKeyWrapper.tsx +0 -137
- package/src/hotkeys/commons.ts +0 -74
- package/src/overlays/alert/Alert.tsx +0 -252
- package/src/overlays/flyout/Flyout.tsx +0 -283
- package/src/overlays/index.ts +0 -29
- package/src/overlays/message/Message.tsx +0 -107
- package/src/overlays/modal/Modal.tsx +0 -244
- package/src/overlays/toast/Toast.module.css +0 -37
- package/src/overlays/toast/Toast.tsx +0 -216
- package/src/overlays/tooltip/Tooltip.module.css +0 -53
- package/src/overlays/tooltip/Tooltip.tsx +0 -200
- package/src/types/icons.ts +0 -426
- package/src/typography/Link.tsx +0 -113
- package/src/typography/Typography.module.css +0 -68
- package/src/typography/index.ts +0 -29
- /package/dist/cjs/i18n/{ar.json.js → ar/core.json.js} +0 -0
- /package/dist/cjs/i18n/{en.json.js → en/core.json.js} +0 -0
- /package/dist/esm/i18n/{ar.json.js → ar/core.json.js} +0 -0
- /package/dist/esm/i18n/{en.json.js → en/core.json.js} +0 -0
- /package/src/i18n/{ar.json → ar/core.json} +0 -0
- /package/src/i18n/{en.json → en/core.json} +0 -0
package/src/types/index.ts
CHANGED
|
@@ -1,116 +1,120 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
2
|
* React Fabric
|
|
3
|
-
* @version
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* The MIT License (MIT)
|
|
7
|
-
* Copyright (c) 2024 Adarsh Pastakia
|
|
3
|
+
* @version 1.0.0
|
|
4
|
+
* @license MIT
|
|
5
|
+
* @copyright 2024 Adarsh Pastakia
|
|
8
6
|
*
|
|
9
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
10
|
-
* and associated documentation files (the "Software"), to deal
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
7
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
8
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
9
|
+
* in the Software without restriction, including without limitation the rights
|
|
10
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
11
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
12
|
+
* furnished to do so, subject to the following conditions:
|
|
14
13
|
*
|
|
15
|
-
* The above copyright notice and this permission notice shall be included in all
|
|
16
|
-
* portions of the Software.
|
|
14
|
+
* The above copyright notice and this permission notice shall be included in all
|
|
15
|
+
* copies or substantial portions of the Software.
|
|
17
16
|
*
|
|
18
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
19
|
-
* TO THE WARRANTIES OF MERCHANTABILITY,
|
|
20
|
-
*
|
|
21
|
-
*
|
|
17
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
18
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
19
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
20
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
21
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
22
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
23
|
+
* SOFTWARE.
|
|
22
24
|
*/
|
|
23
25
|
/* istanbul ignore file */
|
|
24
26
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
+
/**
|
|
28
|
+
* Core type definitions for React Fabric.
|
|
29
|
+
*
|
|
30
|
+
* This module exports shared TypeScript types and interfaces used across the library,
|
|
31
|
+
* including CSS prop types, test prop types, polymorphic component props,
|
|
32
|
+
* and utility types for working with React elements and nested object keys.
|
|
33
|
+
*/
|
|
27
34
|
|
|
28
|
-
export type
|
|
35
|
+
export type { ColorBase, ColorPalette, ColorTints, ColorUnion, CustomColors } from "./colors";
|
|
29
36
|
|
|
30
|
-
export type
|
|
37
|
+
export type CSSSizeType = string | number;
|
|
31
38
|
|
|
32
|
-
export type
|
|
33
|
-
| "primary"
|
|
34
|
-
| "accent"
|
|
35
|
-
| "info"
|
|
36
|
-
| "danger"
|
|
37
|
-
| "success"
|
|
38
|
-
| "warning";
|
|
39
|
+
export type SizeType = "xs" | "sm" | "md" | "lg" | "xl";
|
|
39
40
|
|
|
40
|
-
export type
|
|
41
|
-
| "scarlet"
|
|
42
|
-
| "pumpkin"
|
|
43
|
-
| "marigold"
|
|
44
|
-
| "avacado"
|
|
45
|
-
| "jade"
|
|
46
|
-
| "denim"
|
|
47
|
-
| "iris"
|
|
48
|
-
| "lilac"
|
|
49
|
-
| "coral"
|
|
50
|
-
| "wood"
|
|
51
|
-
| "silver"
|
|
52
|
-
| "steel"
|
|
53
|
-
| "olive"
|
|
54
|
-
| "sand";
|
|
41
|
+
export type SizeWithCustom = SizeType | (string & {}) | number;
|
|
55
42
|
|
|
56
|
-
export
|
|
43
|
+
export interface PositionObject {
|
|
44
|
+
top: number;
|
|
45
|
+
left: number;
|
|
46
|
+
}
|
|
57
47
|
|
|
58
|
-
export
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
"danger",
|
|
63
|
-
"success",
|
|
64
|
-
"warning",
|
|
65
|
-
"invert",
|
|
66
|
-
"dimmed",
|
|
67
|
-
"muted",
|
|
68
|
-
"gray",
|
|
69
|
-
"dark",
|
|
70
|
-
"light",
|
|
71
|
-
];
|
|
48
|
+
export interface SizeObject {
|
|
49
|
+
width: number;
|
|
50
|
+
height: number;
|
|
51
|
+
}
|
|
72
52
|
|
|
73
|
-
export interface
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
53
|
+
export interface ScrollObject extends PositionObject, SizeObject {
|
|
54
|
+
scrollWidth?: number;
|
|
55
|
+
scrollHeight: number;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* CSS prop types
|
|
60
|
+
* This interface defines the properties that can be used for styling React components using CSS class names.
|
|
61
|
+
* It includes an optional "className" property for applying CSS class names directly to the component,
|
|
62
|
+
* and an optional "classNames" property which is an object map for component items, allowing for more granular styling.
|
|
63
|
+
* The "dir" property specifies the text direction, which can be either "ltr" (left-to-right) or "rtl" (right-to-left), providing support for internationalization and different writing systems.
|
|
64
|
+
* By using this interface, developers can easily apply consistent styling to their components while also supporting various text directions.
|
|
65
|
+
*/
|
|
66
|
+
export interface CssProp {
|
|
82
67
|
/**
|
|
83
|
-
*
|
|
68
|
+
* css classname(s)
|
|
84
69
|
*/
|
|
85
|
-
|
|
70
|
+
className?: string;
|
|
71
|
+
dir?: "ltr" | "rtl";
|
|
86
72
|
}
|
|
87
73
|
|
|
88
|
-
export interface
|
|
74
|
+
export interface CssPropWithMap<T extends Record<string, string> = never> extends CssProp {
|
|
89
75
|
/**
|
|
90
|
-
*
|
|
76
|
+
* css classname(s) object map for component items
|
|
91
77
|
*/
|
|
92
|
-
|
|
78
|
+
classNames?: Partial<T>;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export interface HeightProps {
|
|
93
82
|
/**
|
|
94
|
-
*
|
|
83
|
+
* initial height
|
|
95
84
|
*/
|
|
96
|
-
|
|
85
|
+
height?: number | string;
|
|
97
86
|
/**
|
|
98
|
-
*
|
|
87
|
+
* max height
|
|
99
88
|
*/
|
|
100
|
-
|
|
89
|
+
maxHeight?: number | string;
|
|
101
90
|
/**
|
|
102
|
-
*
|
|
91
|
+
* min height
|
|
103
92
|
*/
|
|
104
|
-
|
|
93
|
+
minHeight?: number | string;
|
|
105
94
|
}
|
|
106
95
|
|
|
107
|
-
export interface
|
|
96
|
+
export interface WidthProps {
|
|
108
97
|
/**
|
|
109
|
-
*
|
|
98
|
+
* initial width
|
|
110
99
|
*/
|
|
111
|
-
|
|
100
|
+
width?: number | string;
|
|
101
|
+
/**
|
|
102
|
+
* max width
|
|
103
|
+
*/
|
|
104
|
+
maxWidth?: number | string;
|
|
105
|
+
/**
|
|
106
|
+
* min width
|
|
107
|
+
*/
|
|
108
|
+
minWidth?: number | string;
|
|
112
109
|
}
|
|
113
110
|
|
|
111
|
+
/**
|
|
112
|
+
* Test prop types
|
|
113
|
+
* This interface defines the properties that can be used for testing purposes in React components.
|
|
114
|
+
* It includes optional data attributes for test id and test value, which can be used to identify and interact with elements during testing.
|
|
115
|
+
* The "data-testid" attribute is commonly used to provide a unique identifier for an element, while the "data-test-value" attribute can hold any additional information relevant to the test.
|
|
116
|
+
* By using these properties, developers can write more robust and maintainable tests that target specific elements in the DOM.
|
|
117
|
+
*/
|
|
114
118
|
export interface TestProps {
|
|
115
119
|
/**
|
|
116
120
|
* data attribute for test id
|
|
@@ -119,73 +123,98 @@ export interface TestProps {
|
|
|
119
123
|
/**
|
|
120
124
|
* data attribute for test value
|
|
121
125
|
*/
|
|
122
|
-
"data-test-value"?:
|
|
126
|
+
"data-test-value"?: string;
|
|
123
127
|
}
|
|
124
128
|
|
|
125
|
-
export
|
|
126
|
-
| React.ReactElement<T>
|
|
127
|
-
| React.ReactPortal
|
|
128
|
-
| React.ReactNode
|
|
129
|
-
| string
|
|
130
|
-
| number
|
|
131
|
-
| boolean
|
|
132
|
-
| null
|
|
133
|
-
| undefined;
|
|
134
|
-
|
|
135
|
-
export type AriaProps = React.AriaAttributes;
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* For wrapping components
|
|
139
|
-
*/
|
|
140
|
-
|
|
141
|
-
export interface RefProp<T = HTMLElement> {
|
|
142
|
-
ref?: Ref<T>;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/* *********** */
|
|
146
|
-
|
|
147
|
-
// eslint-disable-next-line @typescript-eslint/no-invalid-void-type
|
|
148
|
-
export type CallbackReturn<T = unknown> =
|
|
149
|
-
| undefined
|
|
150
|
-
| T
|
|
151
|
-
| Promise<T | undefined>;
|
|
152
|
-
|
|
153
|
-
export type ReactTag = keyof JSX.IntrinsicElements | JSXElementConstructor<any>;
|
|
154
|
-
|
|
155
|
-
export type PropsOf<AsTag extends ReactTag> = AsTag extends React.ElementType
|
|
156
|
-
? Omit<React.ComponentProps<AsTag>, "ref">
|
|
157
|
-
: never;
|
|
158
|
-
|
|
159
|
-
export type PolymorphicProps<AsTag extends ReactTag> = Omit<
|
|
160
|
-
PropsOf<AsTag>,
|
|
161
|
-
"children" | "as" | "className" | "onClick"
|
|
162
|
-
> & {
|
|
129
|
+
export interface HtmlEvents {
|
|
163
130
|
/**
|
|
164
|
-
*
|
|
165
|
-
* Either a string to use a HTML element or a component.
|
|
131
|
+
* Focus handler for the button.
|
|
166
132
|
*/
|
|
167
|
-
|
|
168
|
-
|
|
133
|
+
onFocus?: (e: React.FocusEvent) => void;
|
|
134
|
+
/**
|
|
135
|
+
* Blur handler for the button.
|
|
136
|
+
*/
|
|
137
|
+
onBlur?: (e: React.FocusEvent) => void;
|
|
138
|
+
/**
|
|
139
|
+
* Click handler for the button.
|
|
140
|
+
*/
|
|
141
|
+
onClick?: (e?: React.MouseEvent) => CallbackReturn;
|
|
142
|
+
/**
|
|
143
|
+
* Mouse down handler for the button.
|
|
144
|
+
*/
|
|
145
|
+
onMouseDown?: (e: React.MouseEvent) => void;
|
|
146
|
+
/**
|
|
147
|
+
* Mouse up handler for the button.
|
|
148
|
+
*/
|
|
149
|
+
onMouseUp?: (e: React.MouseEvent) => void;
|
|
150
|
+
/**
|
|
151
|
+
* Mouse over handler for the button.
|
|
152
|
+
*/
|
|
153
|
+
onMouseOver?: (e: React.MouseEvent) => void;
|
|
154
|
+
/**
|
|
155
|
+
* Mouse move handler for the button.
|
|
156
|
+
*/
|
|
157
|
+
onMouseMove?: (e: React.MouseEvent) => void;
|
|
158
|
+
/**
|
|
159
|
+
* Mouse enter handler for the button.
|
|
160
|
+
*/
|
|
161
|
+
onMouseEnter?: (e: React.MouseEvent) => void;
|
|
162
|
+
/**
|
|
163
|
+
* Mouse leave handler for the button.
|
|
164
|
+
*/
|
|
165
|
+
onMouseLeave?: (e: React.MouseEvent) => void;
|
|
166
|
+
}
|
|
169
167
|
|
|
170
|
-
export interface
|
|
168
|
+
export interface Draggable {
|
|
171
169
|
/**
|
|
172
|
-
*
|
|
170
|
+
* make card draggable
|
|
173
171
|
*/
|
|
174
|
-
|
|
172
|
+
draggable?: boolean;
|
|
175
173
|
/**
|
|
176
|
-
*
|
|
174
|
+
* drag event data key
|
|
177
175
|
*/
|
|
178
|
-
|
|
176
|
+
dragKey?: string;
|
|
179
177
|
/**
|
|
180
|
-
*
|
|
178
|
+
* drag event data
|
|
181
179
|
*/
|
|
182
|
-
|
|
180
|
+
dragData?: KeyValue;
|
|
181
|
+
onDrag?: (e: React.DragEvent) => void;
|
|
182
|
+
onDragStart?: (e: React.DragEvent, dragKey: string, dragData?: KeyValue) => void;
|
|
183
|
+
onDragEnd?: (e: React.DragEvent) => void;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
export interface Droppable {
|
|
183
187
|
/**
|
|
184
|
-
*
|
|
188
|
+
* droppable types. true for all, string[] for specific types
|
|
185
189
|
*/
|
|
186
|
-
|
|
190
|
+
dropable?: true | string[];
|
|
191
|
+
onDragEnter?: (e: React.DragEvent) => void;
|
|
192
|
+
onDragOver?: (e: React.DragEvent) => void;
|
|
193
|
+
onDragLeave?: (e: React.DragEvent) => void;
|
|
194
|
+
onDrop?: (e: React.DragEvent) => void;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Utility type for ref props in React components.
|
|
199
|
+
* This type defines a generic interface for components that accept a ref prop, allowing the ref to be of any specified type T (defaulting to HTMLElement).
|
|
200
|
+
* The ref prop is optional and can be used to access the underlying DOM element or component instance.
|
|
201
|
+
* By using this type, you can ensure that your components are properly typed when accepting refs, improving type safety and developer experience.
|
|
202
|
+
*/
|
|
203
|
+
export interface RefProp<T = HTMLElement> {
|
|
204
|
+
ref?: React.Ref<T>;
|
|
187
205
|
}
|
|
188
206
|
|
|
207
|
+
export type ModalProps<P = unknown, T extends AnyObject = AnyObject> = P & {
|
|
208
|
+
onClose?: (args: T | null) => void;
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Utility type for callback return values, allowing for void, undefined, a specific type T, or a Promise that resolves to T or undefined.
|
|
213
|
+
* This type is useful for defining the return type of callback functions that may perform asynchronous operations or may not return a value at all.
|
|
214
|
+
* By including void and undefined, it allows for flexibility in how the callback is implemented, while still providing the option to return a specific type or a Promise.
|
|
215
|
+
*/
|
|
216
|
+
export type CallbackReturn<T = unknown> = void | undefined | T | Promise<T | undefined>;
|
|
217
|
+
|
|
189
218
|
export interface CollapseProps {
|
|
190
219
|
/**
|
|
191
220
|
* Allow collapsing
|
|
@@ -200,6 +229,7 @@ export interface CollapseProps {
|
|
|
200
229
|
*/
|
|
201
230
|
onCollapse?: (state: boolean) => void;
|
|
202
231
|
}
|
|
232
|
+
|
|
203
233
|
export interface ExpandProps {
|
|
204
234
|
/**
|
|
205
235
|
* Allow expanding
|
|
@@ -215,32 +245,90 @@ export interface ExpandProps {
|
|
|
215
245
|
onExpand?: (state: boolean) => void;
|
|
216
246
|
}
|
|
217
247
|
|
|
218
|
-
export
|
|
219
|
-
/**
|
|
220
|
-
* floating tooltip
|
|
221
|
-
*/
|
|
222
|
-
tooltip?: string | TooltipType;
|
|
223
|
-
}
|
|
248
|
+
export type ChildNode<T = unknown> = React.ReactElement<T> | React.ReactNode | false | undefined | null;
|
|
224
249
|
|
|
225
|
-
export interface ChildProp<T =
|
|
226
|
-
children:
|
|
250
|
+
export interface ChildProp<T = unknown> {
|
|
251
|
+
children: ChildNode<T>;
|
|
227
252
|
}
|
|
228
253
|
|
|
229
|
-
export interface ChildrenProp<T =
|
|
230
|
-
children:
|
|
254
|
+
export interface ChildrenProp<T = unknown> {
|
|
255
|
+
children: ChildNode<T> | Array<ChildNode<T>>;
|
|
231
256
|
}
|
|
232
257
|
|
|
233
|
-
|
|
234
|
-
top: number;
|
|
235
|
-
left: number;
|
|
236
|
-
}
|
|
258
|
+
/* *********** */
|
|
237
259
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
260
|
+
/**
|
|
261
|
+
* React tag types
|
|
262
|
+
*/
|
|
263
|
+
export type ReactTag = keyof React.JSX.IntrinsicElements | React.JSXElementConstructor<unknown>;
|
|
242
264
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
265
|
+
/**
|
|
266
|
+
* Utility type to extract props of a given React tag, excluding the ref prop.
|
|
267
|
+
* If the tag is a valid React element type, it returns the component props without the ref.
|
|
268
|
+
* Otherwise, it returns never.
|
|
269
|
+
*/
|
|
270
|
+
export type PropsOf<AsTag extends ReactTag> = AsTag extends React.ElementType
|
|
271
|
+
? Omit<React.ComponentProps<AsTag>, "ref">
|
|
272
|
+
: never;
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* Utility type for polymorphic component props.
|
|
276
|
+
* It combines the props of the specified React tag (excluding "as" and HTML attributes)
|
|
277
|
+
* with an optional "as" prop that allows specifying the component or HTML element to render.
|
|
278
|
+
* This type is useful for creating flexible components that can render different elements based on the "as" prop.
|
|
279
|
+
* The resulting props include all props of the specified tag, except for "as",
|
|
280
|
+
* which are handled separately to avoid conflicts.
|
|
281
|
+
*/
|
|
282
|
+
export type PolymorphicProps<AsTag extends ReactTag> = Omit<PropsOf<AsTag>, "as" | "children" | "onClick" | "onDragStart"> & {
|
|
283
|
+
/**
|
|
284
|
+
* The component used for the root node.
|
|
285
|
+
* Either a string to use a HTML element or a component.
|
|
286
|
+
*/
|
|
287
|
+
as?: AsTag;
|
|
288
|
+
};
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* Utility type to extract the element type from an array or array-like type.
|
|
292
|
+
* If the type is a readonly array, it returns the type of its elements.
|
|
293
|
+
* If the type is an array-like object, it also returns the type of its elements.
|
|
294
|
+
* If the type is undefined or does not match either case, it returns undefined.
|
|
295
|
+
*/
|
|
296
|
+
export type ArrayType<T extends readonly unknown[] | ArrayLike<unknown> | undefined> = T extends readonly unknown[]
|
|
297
|
+
? T[number]
|
|
298
|
+
: T extends ArrayLike<unknown>
|
|
299
|
+
? T[number]
|
|
300
|
+
: undefined;
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* Utility type to make all properties of a type required, but still allow them to be optional if they were originally optional.
|
|
304
|
+
* This is useful for cases where you want to ensure that all properties are present, but still want to allow for optional properties to be omitted.
|
|
305
|
+
* The type iterates over each property of the input type T and checks if it is required or optional.
|
|
306
|
+
* If the property is required, it keeps it as is. If the property is optional, it allows it to be either the original type or undefined.
|
|
307
|
+
*/
|
|
308
|
+
export type Complete<T> = {
|
|
309
|
+
[P in keyof Required<T>]: Pick<T, P> extends Required<Pick<T, P>> ? T[P] : T[P] | undefined;
|
|
310
|
+
};
|
|
311
|
+
|
|
312
|
+
/**
|
|
313
|
+
* Utility type to recursively extract nested keys from an object type T.
|
|
314
|
+
* It checks if T is an object and iterates over its keys. For each key K, it checks if the corresponding value is also an object.
|
|
315
|
+
* If it is, it recursively extracts the nested keys and combines them with the current key using dot notation.
|
|
316
|
+
* If the value is not an object, it simply returns the current key. The resulting type is a union of all possible nested keys in the object.
|
|
317
|
+
* This type is useful for scenarios where you want to access deeply nested properties of an object using a string path.
|
|
318
|
+
*/
|
|
319
|
+
export type NestedKeys<T> = T extends object
|
|
320
|
+
? {
|
|
321
|
+
[K in keyof T]: K extends string | number
|
|
322
|
+
? T[K] extends object
|
|
323
|
+
? // Check for array type explicitly and handle it
|
|
324
|
+
T[K] extends readonly unknown[]
|
|
325
|
+
? T[K][number] extends object
|
|
326
|
+
? // Array of objects/items: return key with array index notation and recurse
|
|
327
|
+
`${K}.${NestedKeys<T[K][number]>}` | `${K}`
|
|
328
|
+
: `${K}`
|
|
329
|
+
: // Standard object: return key with dot notation and recurse
|
|
330
|
+
`${K}.${NestedKeys<T[K]>}` | `${K}`
|
|
331
|
+
: `${K}`
|
|
332
|
+
: never;
|
|
333
|
+
}[keyof T]
|
|
334
|
+
: "";
|
package/src/typography/Abbr.tsx
CHANGED
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
2
|
* React Fabric
|
|
3
|
-
* @version
|
|
4
|
-
*
|
|
3
|
+
* @version 1.0.0
|
|
4
|
+
* @license MIT
|
|
5
|
+
* @copyright 2024 Adarsh Pastakia
|
|
5
6
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
7
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
8
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
9
|
+
* in the Software without restriction, including without limitation the rights
|
|
10
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
11
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
12
|
+
* furnished to do so, subject to the following conditions:
|
|
8
13
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
12
|
-
* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
|
|
13
|
-
* subject to the following conditions:
|
|
14
|
+
* The above copyright notice and this permission notice shall be included in all
|
|
15
|
+
* copies or substantial portions of the Software.
|
|
14
16
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
17
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
18
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
19
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
20
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
21
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
22
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
23
|
+
* SOFTWARE.
|
|
22
24
|
*/
|
|
23
25
|
|
|
24
|
-
import { isEmpty, isString, tokenize } from "@react-fabric/utilities";
|
|
25
|
-
import classNames from "classnames";
|
|
26
|
+
import { cn, isEmpty, isString, tokenize } from "@react-fabric/utilities";
|
|
26
27
|
import { Fragment, useCallback, useMemo } from "react";
|
|
28
|
+
import { Tooltip } from "../components/tooltip/Tooltip";
|
|
27
29
|
import { useMemoDebugger } from "../hooks/useEffectDebugger";
|
|
28
|
-
import {
|
|
29
|
-
import {
|
|
30
|
-
import { getColor, getColorClass } from "../utils";
|
|
31
|
-
import classes from "./Typography.module.css";
|
|
30
|
+
import type { ChildProp, CssProp, CustomColors } from "../types";
|
|
31
|
+
import { getColor, getTooltipProps } from "../utils";
|
|
32
32
|
|
|
33
33
|
interface AbbrTextProps {
|
|
34
34
|
children: string;
|
|
@@ -37,32 +37,23 @@ interface AbbrTextProps {
|
|
|
37
37
|
content?: string;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
const TooltipWrapper =
|
|
42
|
-
() => (tooltip ? Tooltip : Fragment),
|
|
43
|
-
[tooltip],
|
|
44
|
-
);
|
|
40
|
+
function AbbrText({ color, children, tooltip, content }: AbbrTextProps) {
|
|
41
|
+
const TooltipWrapper = tooltip ? Tooltip : Fragment;
|
|
45
42
|
const tooltipProps = useMemo(() => {
|
|
46
|
-
return { ...getTooltipProps(tooltip), copyContent: content };
|
|
43
|
+
return tooltip ? { ...getTooltipProps(tooltip), copyContent: content } : {};
|
|
47
44
|
}, [tooltip, content]);
|
|
48
45
|
|
|
49
46
|
return (
|
|
50
47
|
<TooltipWrapper {...tooltipProps}>
|
|
51
48
|
<abbr
|
|
52
|
-
className={
|
|
53
|
-
|
|
54
|
-
"whitespace-nowrap",
|
|
55
|
-
color && getColorClass(color),
|
|
56
|
-
)}
|
|
57
|
-
style={
|
|
58
|
-
color ? ({ "--abbr-color": getColor(color) } as AnyObject) : undefined
|
|
59
|
-
}
|
|
49
|
+
className={cn("fabric-abbr whitespace-nowrap")}
|
|
50
|
+
style={color ? ({ "--abbr-color": getColor(color) } as React.CSSProperties) : undefined}
|
|
60
51
|
>
|
|
61
52
|
{children}
|
|
62
53
|
</abbr>
|
|
63
54
|
</TooltipWrapper>
|
|
64
55
|
);
|
|
65
|
-
}
|
|
56
|
+
}
|
|
66
57
|
|
|
67
58
|
export interface AbbrProps extends ChildProp<string>, CssProp {
|
|
68
59
|
/**
|
|
@@ -74,32 +65,44 @@ export interface AbbrProps extends ChildProp<string>, CssProp {
|
|
|
74
65
|
*
|
|
75
66
|
* [textPart, tooltip, color (class name or color string)]
|
|
76
67
|
*/
|
|
77
|
-
abbr: Array<[textPart: string, tooltip: string, color?:
|
|
68
|
+
abbr: Array<[textPart: string, tooltip: string, color?: CustomColors]>;
|
|
78
69
|
/**
|
|
79
70
|
* renderer callback
|
|
80
71
|
*/
|
|
81
|
-
renderer?: (part: string[]) =>
|
|
72
|
+
renderer?: (part: string[]) => React.ReactElement;
|
|
82
73
|
}
|
|
83
74
|
|
|
84
75
|
/**
|
|
85
|
-
*
|
|
76
|
+
* A component that renders abbreviated text with tooltips for additional information.
|
|
77
|
+
* It allows you to define a list of abbreviations, each with a tooltip and optional color.
|
|
78
|
+
* The component will tokenize the children text and replace matching parts with the abbreviated version.
|
|
79
|
+
* It supports a copy action that can either copy the text or the tooltip content.
|
|
80
|
+
* This component is useful for displaying technical terms or acronyms in a user-friendly way,
|
|
81
|
+
* while providing additional context through tooltips.
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```jsx
|
|
85
|
+
* <Abbr
|
|
86
|
+
* abbr={[
|
|
87
|
+
* ["HTML", "HyperText Markup Language", "primary"],
|
|
88
|
+
* ["CSS", "Cascading Style Sheets", "secondary"],
|
|
89
|
+
* ["JS", "JavaScript", "success"],
|
|
90
|
+
* ]}
|
|
91
|
+
* className="text-sm"
|
|
92
|
+
* copyContent="tooltip"
|
|
93
|
+
* >
|
|
94
|
+
* Learn more about HTML, CSS, and JS.
|
|
95
|
+
* </Abbr>
|
|
96
|
+
* // Renders the text with abbreviations for HTML, CSS, and JS,
|
|
97
|
+
* // each with a tooltip showing the full form and colored according to the specified color.
|
|
98
|
+
* ```
|
|
86
99
|
*/
|
|
87
|
-
export
|
|
88
|
-
children,
|
|
89
|
-
abbr,
|
|
90
|
-
className,
|
|
91
|
-
renderer,
|
|
92
|
-
copyContent = "text",
|
|
93
|
-
}: AbbrProps) => {
|
|
100
|
+
export function Abbr({ children, abbr, className, renderer, copyContent = "text" }: AbbrProps) {
|
|
94
101
|
/** ***************** abbr text renderer *******************/
|
|
95
102
|
const abbrRender = useCallback(
|
|
96
103
|
(text: string, tooltip: string, color = "") => {
|
|
97
104
|
return (
|
|
98
|
-
<AbbrText
|
|
99
|
-
color={color}
|
|
100
|
-
tooltip={tooltip}
|
|
101
|
-
content={copyContent === "tooltip" ? tooltip : text}
|
|
102
|
-
>
|
|
105
|
+
<AbbrText color={color} tooltip={tooltip} content={copyContent === "tooltip" ? tooltip : text}>
|
|
103
106
|
{(renderer?.([text, tooltip, color]) ?? text) as string}
|
|
104
107
|
</AbbrText>
|
|
105
108
|
);
|
|
@@ -116,7 +119,7 @@ export const Abbr = ({
|
|
|
116
119
|
children,
|
|
117
120
|
abbr.map(([keyword]) => keyword),
|
|
118
121
|
);
|
|
119
|
-
const titles
|
|
122
|
+
const titles = abbr.reduce<KeyValue<{ tooltip: string; color: string }>>(
|
|
120
123
|
(t, [a, tooltip = "", color = ""]) => ({
|
|
121
124
|
...t,
|
|
122
125
|
[a.toLowerCase()]: {
|
|
@@ -129,10 +132,10 @@ export const Abbr = ({
|
|
|
129
132
|
return (
|
|
130
133
|
<Fragment>
|
|
131
134
|
{tokens.map(([start, text], i) => {
|
|
132
|
-
const { tooltip = "", color = "" } =
|
|
133
|
-
titles[text.toLowerCase()] ?? {};
|
|
135
|
+
const { tooltip = "", color = "" } = titles[text.toLowerCase()] ?? {};
|
|
134
136
|
return (
|
|
135
|
-
|
|
137
|
+
// eslint-disable-next-line @eslint-react/no-array-index-key
|
|
138
|
+
<Fragment key={`${text}-${i}`}>
|
|
136
139
|
{start}
|
|
137
140
|
{text ? abbrRender(text, tooltip, color) : null}
|
|
138
141
|
</Fragment>
|
|
@@ -149,5 +152,5 @@ export const Abbr = ({
|
|
|
149
152
|
);
|
|
150
153
|
|
|
151
154
|
/** ***************** component *******************/
|
|
152
|
-
return <span className={className}>{inner}</span>;
|
|
153
|
-
}
|
|
155
|
+
return <span className={cn(className, "mixed-lang whitespace-pre-wrap")}>{inner}</span>;
|
|
156
|
+
}
|