@koine/react 2.0.0-beta.1 → 2.0.0-beta.11
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/Alert/Alert.mjs +19 -7
- package/Alert/Alert.stories.mjs +18 -0
- package/Animations/Reveal.mjs +39 -13
- package/Animations/Underline.d.ts +1 -1
- package/Animations/Underline.mjs +14 -4
- package/Animations/useReveal.mjs +42 -40
- package/Autocomplete/AutocompleteDownshift.mjs +156 -157
- package/Autocomplete/AutocompleteDownshiftMultiselect.mjs +351 -352
- package/Autocomplete/AutocompleteMui.d.ts +1 -1
- package/Autocomplete/AutocompleteMui.mjs +126 -89
- package/Autocomplete/AutocompleteReach.mjs +110 -111
- package/Autocomplete/components.d.ts +12 -16
- package/Autocomplete/components.mjs +76 -23
- package/Autocomplete/helpers.mjs +11 -5
- package/Autocomplete/index.mjs +4 -3
- package/Bg/BgColor.d.ts +2 -7
- package/Bg/BgColor.mjs +36 -15
- package/Bg/BgPhoto.mjs +66 -11
- package/Bg/BgSvg.mjs +17 -7
- package/Breadcrumbs/Breadcrumbs.d.ts +1 -1
- package/Breadcrumbs/Breadcrumbs.mjs +82 -18
- package/Buttons/Button.d.ts +1 -1
- package/Buttons/Button.mjs +73 -9
- package/Buttons/ButtonComposite.d.ts +1 -1
- package/Buttons/ButtonComposite.mjs +99 -22
- package/Buttons/ButtonFab.d.ts +1 -3
- package/Buttons/ButtonFab.mjs +6 -4
- package/Buttons/ButtonLink.d.ts +1 -1
- package/Buttons/ButtonLink.mjs +14 -7
- package/Buttons/IconButton.d.ts +1 -3
- package/Buttons/IconButton.mjs +18 -6
- package/Calendar/CalendarDaygridCell.d.ts +2 -2
- package/Calendar/CalendarDaygridCell.mjs +64 -26
- package/Calendar/CalendarDaygridNav.d.ts +1 -1
- package/Calendar/CalendarDaygridNav.mjs +41 -12
- package/Calendar/CalendarDaygridTable.d.ts +3 -3
- package/Calendar/CalendarDaygridTable.mjs +97 -30
- package/Calendar/CalendarLegend.d.ts +1 -1
- package/Calendar/CalendarLegend.mjs +20 -6
- package/Calendar/calendar-api-google.d.ts +1 -1
- package/Calendar/calendar-api-google.mjs +75 -105
- package/Calendar/types.mjs +1 -1
- package/Calendar/useCalendar.d.ts +2 -2
- package/Calendar/useCalendar.mjs +184 -142
- package/Calendar/utils.mjs +101 -94
- package/Carousel/Carousel.mjs +377 -378
- package/Carousel/CarouselCss.d.ts +3 -20
- package/Carousel/CarouselCss.mjs +38 -16
- package/Collapsable/Collapsable.mjs +1 -1
- package/Collapsable/CollapsableReach.mjs +1 -3
- package/Collapsable/index.mjs +1 -2
- package/Debug/Debug.mjs +20 -6
- package/Details/Details.d.ts +5 -5
- package/Details/Details.mjs +64 -37
- package/Details/Details.stories.mjs +21 -0
- package/Dialog/DialogMui.d.ts +10 -327
- package/Dialog/DialogMui.mjs +50 -25
- package/Dialog/DialogMui.stories.mjs +20 -0
- package/Dialog/css/bare.d.ts +9 -327
- package/Dialog/css/bare.mjs +15 -17
- package/Dialog/css/index.stories.mjs +75 -0
- package/Dialog/m/bare.d.ts +2 -398
- package/Dialog/m/bare.mjs +114 -51
- package/Dialog/m/basic.mjs +10 -10
- package/Dialog/m/index.mjs +4 -4
- package/Dialog/sc/bare.d.ts +27 -405
- package/Dialog/sc/bare.mjs +40 -29
- package/Dialog/sc/framer.d.ts +15 -422
- package/Dialog/sc/framer.mjs +9 -9
- package/Dialog/sc/framerMaterial.d.ts +15 -422
- package/Dialog/sc/framerMaterial.mjs +9 -9
- package/Dialog/sc/index.stories.mjs +48 -0
- package/Dialog/sc/material.d.ts +27 -405
- package/Dialog/sc/material.mjs +37 -17
- package/Dialog/tw/bare.d.ts +9 -327
- package/Dialog/tw/bare.mjs +15 -28
- package/Dialog/tw/elegant.d.ts +9 -327
- package/Dialog/tw/elegant.mjs +15 -17
- package/Dialog/tw/framer.d.ts +3 -354
- package/Dialog/tw/framer.mjs +9 -9
- package/Dialog/tw/framerMaterial.d.ts +3 -354
- package/Dialog/tw/framerMaterial.mjs +9 -9
- package/Dialog/tw/index.stories.mjs +83 -0
- package/Dialog/tw/material.d.ts +9 -327
- package/Dialog/tw/material.mjs +15 -17
- package/Editor/Editor--tiptap.d.ts +1 -1
- package/Editor/Editor--tiptap.mjs +45 -18
- package/Editor/components.d.ts +3 -5
- package/Editor/components.mjs +26 -8
- package/FaviconTags.mjs +64 -0
- package/Form/Form.mjs +81 -47
- package/Form/sc/bare.d.ts +11 -11
- package/Form/sc/bare.mjs +21 -12
- package/Forms/Checkbox/Checkbox.d.ts +4 -4
- package/Forms/Checkbox/Checkbox.mjs +29 -11
- package/Forms/Feedback/Feedback.mjs +11 -6
- package/Forms/Field/Field.d.ts +2 -4
- package/Forms/Field/Field.mjs +35 -16
- package/Forms/Field/FieldControl.mjs +39 -19
- package/Forms/Field/FieldHint.d.ts +1 -1
- package/Forms/Field/FieldHint.mjs +5 -3
- package/Forms/Input/Input.d.ts +5 -5
- package/Forms/Input/Input.mjs +30 -11
- package/Forms/InputGroup/InputGroup.d.ts +4 -4
- package/Forms/InputGroup/InputGroup.mjs +52 -10
- package/Forms/Label/Label.d.ts +1 -1
- package/Forms/Label/Label.mjs +23 -5
- package/Forms/Password/Password.d.ts +1 -1
- package/Forms/Password/Password.mjs +48 -12
- package/Forms/Radio/Radio.mjs +50 -18
- package/Forms/Switch/Switch.d.ts +2 -2
- package/Forms/Switch/Switch.mjs +52 -12
- package/Forms/Textarea/Textarea.d.ts +1 -1
- package/Forms/Textarea/Textarea.mjs +21 -7
- package/Forms/Textarea/TextareaRich.mjs +39 -19
- package/Forms/Toggle/Toggle-tailwind.mjs +0 -1
- package/Forms/Toggle/Toggle.d.ts +7 -7
- package/Forms/Toggle/Toggle.mjs +113 -21
- package/Forms/Toggle/useToggle-tailwind.mjs +0 -1
- package/Forms/Toggle/useToggle.mjs +86 -68
- package/Forms/antispam.mjs +19 -21
- package/Forms/helpers.mjs +25 -19
- package/Forms/styles.d.ts +3 -7
- package/Forms/styles.mjs +50 -18
- package/Gauge/Gauge.mjs +99 -100
- package/Grid/Grid.d.ts +7 -30
- package/Grid/Grid.mjs +54 -32
- package/Hamburger/Hamburger.mjs +64 -37
- package/Header/useHeader.mjs +23 -18
- package/Hidden/Hidden.d.ts +1 -1
- package/Hidden/Hidden.mjs +9 -9
- package/Img/sc/bare.d.ts +1 -1
- package/Img/sc/bare.mjs +31 -34
- package/Img/types.mjs +1 -1
- package/Link/Link.d.ts +1 -3
- package/Link/Link.mjs +1 -3
- package/Link/LinkBlank.d.ts +2 -5
- package/Link/LinkBlank.mjs +25 -10
- package/Menu/Menu.d.ts +1 -1
- package/Menu/Menu.mjs +10 -3
- package/Menu/MenuMui.mjs +1 -2
- package/MenuItem/MenuItem.d.ts +1 -4
- package/MenuItem/MenuItem.mjs +19 -3
- package/MenuItem/MenuItemMui.mjs +0 -1
- package/MenuItem/useMenuItem.mjs +45 -27
- package/Meta/Meta.mjs +5 -3
- package/NoJs/NoJs.mjs +7 -4
- package/Pagination/PaginationNav.d.ts +1 -1
- package/Pagination/PaginationNav.mjs +90 -29
- package/Pagination/PaginationResults.mjs +31 -8
- package/Pill/Pill.d.ts +4 -4
- package/Pill/Pill.mjs +36 -6
- package/Progress/ProgressCircular.mjs +48 -10
- package/Progress/ProgressLinear.mjs +39 -19
- package/Progress/ProgressOverlay.mjs +56 -16
- package/Rating/Rating.d.ts +5 -5
- package/Rating/Rating.mjs +118 -34
- package/Rating/index.mjs +37 -24
- package/Select/SelectDownshift.mjs +37 -38
- package/Select/components.d.ts +1 -1
- package/Select/components.mjs +21 -8
- package/Select/index.mjs +2 -3
- package/Sidebar/Sidebar.mjs +57 -17
- package/Spacing/Spacing.d.ts +1 -1
- package/Spacing/Spacing.mjs +27 -17
- package/Sticky/Sticky.mjs +218 -219
- package/Sticky/StickyCss.mjs +8 -4
- package/Sticky/index.mjs +1 -1
- package/Tabs/TabsMui.d.ts +9 -298
- package/Tabs/TabsMui.mjs +39 -27
- package/Tabs/TabsMui.stories.mjs +20 -0
- package/Tabs/sc/bare.mjs +1 -3
- package/Tabs/sc/index.stories.mjs +0 -0
- package/Tabs/tw/bare.d.ts +7 -296
- package/Tabs/tw/bare.mjs +11 -13
- package/Tabs/tw/index.stories.mjs +25 -0
- package/Tabs/tw/material.d.ts +7 -332
- package/Tabs/tw/material.mjs +11 -15
- package/Tabs/useTabs.mjs +24 -21
- package/Typography/CopyPasteVisible.d.ts +1 -1
- package/Typography/CopyPasteVisible.mjs +5 -3
- package/Typography/Native.d.ts +5 -5
- package/Typography/Native.mjs +45 -12
- package/Typography/ReadMore.mjs +100 -29
- package/Typography/TextLoop.mjs +75 -31
- package/Typography/TypeStairs.mjs +36 -24
- package/css/index.mjs +20 -21
- package/helpers/classed.mjs +21 -30
- package/helpers/classed.stories.mjs +121 -0
- package/helpers/createUseMediaQueryWidth.mjs +140 -140
- package/helpers/extend-component.mjs +7 -7
- package/helpers/mergeRefs.mjs +3 -4
- package/hooks/index.mjs +3 -3
- package/hooks/types.mjs +3 -1
- package/hooks/useAsyncFn.mjs +28 -26
- package/hooks/useDateLocale.mjs +22 -22
- package/hooks/useFirstMountState.mjs +2 -3
- package/hooks/useFixedOffset.mjs +23 -24
- package/hooks/useFocus.mjs +7 -5
- package/hooks/useInterval.mjs +15 -14
- package/hooks/useIsomorphicLayoutEffect.mjs +1 -4
- package/hooks/useKeyUp.mjs +9 -11
- package/hooks/useMeasure.mjs +74 -67
- package/hooks/useMountedState.mjs +5 -6
- package/hooks/useNavigateAway.mjs +26 -25
- package/hooks/usePrevious.mjs +9 -4
- package/hooks/usePreviousRef.mjs +2 -2
- package/hooks/useScrollPosition.mjs +28 -26
- package/hooks/useScrollThreshold.mjs +18 -13
- package/hooks/useScrollTo.mjs +6 -8
- package/hooks/useSmoothScroll.mjs +12 -16
- package/hooks/useSpinDelay.mjs +24 -22
- package/hooks/useTraceUpdate.mjs +8 -7
- package/hooks/useUpdateEffect.mjs +4 -5
- package/hooks/useWindowSize.mjs +13 -10
- package/index.mjs +4 -5
- package/m/MotionProvider.mjs +5 -4
- package/m/index.mjs +1 -2
- package/package.json +17 -18
- package/shared/index.mjs +35 -0
- package/styles/Body.d.ts +2 -2
- package/styles/Body.mjs +8 -5
- package/styles/Global.mjs +36 -5
- package/styles/index.mjs +5 -5
- package/styles/media.mjs +63 -68
- package/styles/spacing.mjs +26 -25
- package/styles/styled.mjs +23 -10
- package/styles/theme--vanilla.mjs +26 -19
- package/styles/theme.mjs +16 -19
- package/tw/index.mjs +20 -21
- package/twm/index.mjs +20 -21
- package/types.mjs +1 -1
- package/typings.d.ts +1 -0
- package/Alert/Alert.js +0 -14
- package/Alert/index.js +0 -4
- package/Alert/package.json +0 -6
- package/Animations/Reveal.js +0 -21
- package/Animations/Underline.js +0 -8
- package/Animations/index.js +0 -6
- package/Animations/package.json +0 -6
- package/Animations/useReveal.js +0 -75
- package/Autocomplete/AutocompleteDownshift.js +0 -161
- package/Autocomplete/AutocompleteDownshiftMultiselect.js +0 -356
- package/Autocomplete/AutocompleteMui.js +0 -180
- package/Autocomplete/AutocompleteReach.js +0 -115
- package/Autocomplete/components.js +0 -37
- package/Autocomplete/helpers.js +0 -34
- package/Autocomplete/index.js +0 -7
- package/Autocomplete/package.json +0 -6
- package/Bg/BgColor.js +0 -25
- package/Bg/BgPhoto.js +0 -20
- package/Bg/BgSvg.js +0 -16
- package/Bg/index.js +0 -6
- package/Bg/package.json +0 -6
- package/Breadcrumbs/Breadcrumbs.js +0 -31
- package/Breadcrumbs/index.js +0 -4
- package/Breadcrumbs/package.json +0 -6
- package/Buttons/Button.js +0 -17
- package/Buttons/ButtonComposite.js +0 -32
- package/Buttons/ButtonFab.js +0 -9
- package/Buttons/ButtonLink.js +0 -15
- package/Buttons/IconButton.js +0 -10
- package/Buttons/index.js +0 -8
- package/Buttons/package.json +0 -6
- package/Calendar/CalendarDaygridCell.js +0 -61
- package/Calendar/CalendarDaygridNav.js +0 -28
- package/Calendar/CalendarDaygridTable.js +0 -52
- package/Calendar/CalendarLegend.js +0 -19
- package/Calendar/calendar-api-google.js +0 -133
- package/Calendar/index.js +0 -9
- package/Calendar/package.json +0 -6
- package/Calendar/types.js +0 -2
- package/Calendar/useCalendar.js +0 -187
- package/Calendar/utils.js +0 -215
- package/Carousel/Carousel.js +0 -381
- package/Carousel/CarouselCss.js +0 -26
- package/Carousel/index.js +0 -4
- package/Carousel/package.json +0 -6
- package/Collapsable/Collapsable.js +0 -4
- package/Collapsable/CollapsableReach.js +0 -252
- package/Collapsable/index.js +0 -5
- package/Collapsable/package.json +0 -6
- package/Debug/Debug.js +0 -13
- package/Debug/index.js +0 -4
- package/Debug/package.json +0 -6
- package/Details/Details.js +0 -66
- package/Details/index.js +0 -4
- package/Details/package.json +0 -6
- package/Dialog/DialogMui.js +0 -83
- package/Dialog/css/bare.js +0 -24
- package/Dialog/index.js +0 -5
- package/Dialog/m/bare.js +0 -55
- package/Dialog/m/basic.js +0 -35
- package/Dialog/m/index.js +0 -8
- package/Dialog/m/package.json +0 -6
- package/Dialog/package.json +0 -6
- package/Dialog/sc/bare.js +0 -46
- package/Dialog/sc/framer.js +0 -19
- package/Dialog/sc/framerMaterial.js +0 -19
- package/Dialog/sc/material.js +0 -24
- package/Dialog/tw/bare.js +0 -45
- package/Dialog/tw/elegant.js +0 -23
- package/Dialog/tw/framer.js +0 -19
- package/Dialog/tw/framerMaterial.js +0 -19
- package/Dialog/tw/material.js +0 -23
- package/Editor/Editor--tiptap.js +0 -31
- package/Editor/components.js +0 -15
- package/Editor/index.js +0 -4
- package/Editor/package.json +0 -6
- package/FaviconTags/FaviconTags.js +0 -20
- package/FaviconTags/FaviconTags.mjs +0 -16
- package/FaviconTags/index.d.ts +0 -2
- package/FaviconTags/index.js +0 -7
- package/FaviconTags/index.mjs +0 -2
- package/FaviconTags/package.json +0 -6
- package/Form/Form.js +0 -65
- package/Form/index.js +0 -4
- package/Form/package.json +0 -6
- package/Form/sc/bare.js +0 -23
- package/Forms/Checkbox/Checkbox.js +0 -21
- package/Forms/Checkbox/index.js +0 -4
- package/Forms/Checkbox/package.json +0 -6
- package/Forms/Feedback/Feedback.js +0 -13
- package/Forms/Feedback/index.js +0 -4
- package/Forms/Feedback/package.json +0 -6
- package/Forms/Field/Field.js +0 -35
- package/Forms/Field/FieldControl.js +0 -51
- package/Forms/Field/FieldHint.js +0 -7
- package/Forms/Field/index.js +0 -5
- package/Forms/Field/package.json +0 -6
- package/Forms/Input/Input.js +0 -20
- package/Forms/Input/index.js +0 -4
- package/Forms/Input/package.json +0 -6
- package/Forms/InputGroup/InputGroup.js +0 -19
- package/Forms/InputGroup/index.js +0 -4
- package/Forms/InputGroup/package.json +0 -6
- package/Forms/Label/Label.js +0 -9
- package/Forms/Label/index.js +0 -4
- package/Forms/Label/package.json +0 -6
- package/Forms/Password/Password.js +0 -20
- package/Forms/Password/index.js +0 -4
- package/Forms/Password/package.json +0 -6
- package/Forms/Radio/Radio.js +0 -28
- package/Forms/Radio/index.js +0 -4
- package/Forms/Radio/package.json +0 -6
- package/Forms/Switch/Switch.js +0 -23
- package/Forms/Switch/index.js +0 -4
- package/Forms/Switch/package.json +0 -6
- package/Forms/Textarea/Textarea.js +0 -15
- package/Forms/Textarea/TextareaRich.js +0 -31
- package/Forms/Textarea/index.js +0 -5
- package/Forms/Textarea/package.json +0 -6
- package/Forms/Toggle/Toggle-tailwind.js +0 -99
- package/Forms/Toggle/Toggle.js +0 -36
- package/Forms/Toggle/index.js +0 -4
- package/Forms/Toggle/package.json +0 -6
- package/Forms/Toggle/useToggle-tailwind.js +0 -202
- package/Forms/Toggle/useToggle.js +0 -149
- package/Forms/antispam.js +0 -66
- package/Forms/helpers.js +0 -54
- package/Forms/index.js +0 -19
- package/Forms/package.json +0 -6
- package/Forms/styles.js +0 -32
- package/Gauge/Gauge.js +0 -106
- package/Grid/Grid.js +0 -56
- package/Grid/index.js +0 -4
- package/Grid/package.json +0 -6
- package/Hamburger/Hamburger.js +0 -56
- package/Hamburger/index.js +0 -4
- package/Hamburger/package.json +0 -6
- package/Header/index.js +0 -4
- package/Header/package.json +0 -6
- package/Header/useHeader.js +0 -35
- package/Hidden/Hidden.js +0 -13
- package/Hidden/index.js +0 -4
- package/Hidden/package.json +0 -6
- package/Img/index.js +0 -4
- package/Img/package.json +0 -6
- package/Img/sc/bare.js +0 -42
- package/Img/types.js +0 -2
- package/Link/Link.js +0 -7
- package/Link/LinkBlank.js +0 -21
- package/Link/index.js +0 -5
- package/Link/package.json +0 -6
- package/Menu/Menu.js +0 -7
- package/Menu/MenuMui.js +0 -165
- package/Menu/index.js +0 -4
- package/Menu/package.json +0 -6
- package/MenuItem/MenuItem.js +0 -7
- package/MenuItem/MenuItemMui.js +0 -32
- package/MenuItem/index.js +0 -4
- package/MenuItem/package.json +0 -6
- package/MenuItem/useMenuItem.js +0 -64
- package/Meta/Meta.js +0 -10
- package/Meta/index.js +0 -7
- package/Meta/package.json +0 -6
- package/NoJs/NoJs.js +0 -11
- package/NoJs/index.js +0 -7
- package/NoJs/package.json +0 -6
- package/Pagination/PaginationNav.js +0 -65
- package/Pagination/PaginationResults.js +0 -15
- package/Pagination/index.js +0 -5
- package/Pagination/package.json +0 -6
- package/Pill/Pill.js +0 -10
- package/Pill/index.js +0 -4
- package/Pill/package.json +0 -6
- package/Progress/ProgressCircular.js +0 -19
- package/Progress/ProgressLinear.js +0 -28
- package/Progress/ProgressOverlay.js +0 -28
- package/Progress/index.js +0 -6
- package/Progress/package.json +0 -6
- package/Rating/Rating.js +0 -75
- package/Rating/index.js +0 -57
- package/Rating/package.json +0 -6
- package/Select/SelectDownshift.js +0 -41
- package/Select/components.js +0 -15
- package/Select/index.js +0 -7
- package/Select/package.json +0 -6
- package/Sidebar/Sidebar.js +0 -27
- package/Sidebar/index.js +0 -4
- package/Sidebar/package.json +0 -6
- package/Spacing/Spacing.js +0 -49
- package/Spacing/index.js +0 -4
- package/Spacing/package.json +0 -6
- package/Sticky/Sticky.js +0 -222
- package/Sticky/StickyCss.js +0 -10
- package/Sticky/index.js +0 -5
- package/Sticky/package.json +0 -6
- package/Tabs/TabsMui.js +0 -52
- package/Tabs/index.js +0 -4
- package/Tabs/package.json +0 -6
- package/Tabs/sc/bare.js +0 -87
- package/Tabs/tw/bare.js +0 -20
- package/Tabs/tw/material.js +0 -21
- package/Tabs/useTabs.js +0 -47
- package/Typography/CopyPasteVisible.js +0 -7
- package/Typography/Native.js +0 -17
- package/Typography/ReadMore.js +0 -47
- package/Typography/TextLoop.js +0 -51
- package/Typography/TypeStairs.js +0 -52
- package/Typography/index.js +0 -8
- package/Typography/package.json +0 -6
- package/css/index.js +0 -36
- package/css/package.json +0 -6
- package/helpers/classed.js +0 -78
- package/helpers/createUseMediaQueryWidth.js +0 -183
- package/helpers/extend-component.js +0 -17
- package/helpers/index.js +0 -7
- package/helpers/mergeRefs.js +0 -17
- package/helpers/package.json +0 -6
- package/hooks/index.js +0 -44
- package/hooks/package.json +0 -6
- package/hooks/types.js +0 -2
- package/hooks/useAsyncFn.js +0 -41
- package/hooks/useDateLocale.js +0 -41
- package/hooks/useFirstMountState.js +0 -17
- package/hooks/useFixedOffset.js +0 -62
- package/hooks/useFocus.js +0 -16
- package/hooks/useInterval.js +0 -32
- package/hooks/useIsomorphicLayoutEffect.js +0 -13
- package/hooks/useKeyUp.js +0 -27
- package/hooks/useMeasure.js +0 -171
- package/hooks/useMountedState.js +0 -20
- package/hooks/useNavigateAway.js +0 -73
- package/hooks/usePrevious.js +0 -16
- package/hooks/usePreviousRef.js +0 -13
- package/hooks/useScrollPosition.js +0 -73
- package/hooks/useScrollThreshold.js +0 -33
- package/hooks/useScrollTo.js +0 -27
- package/hooks/useSmoothScroll.js +0 -44
- package/hooks/useSpinDelay.js +0 -54
- package/hooks/useTraceUpdate.js +0 -26
- package/hooks/useUpdateEffect.js +0 -19
- package/hooks/useWindowSize.js +0 -34
- package/index.js +0 -8
- package/m/MotionProvider.js +0 -43
- package/m/index.js +0 -9
- package/m/lite.js +0 -4
- package/m/max.js +0 -4
- package/m/package.json +0 -6
- package/sc/index.js +0 -37
- package/sc/package.json +0 -6
- package/scm/index.js +0 -36
- package/scm/package.json +0 -6
- package/shared/index.js +0 -11
- package/shared/package.json +0 -6
- package/styles/Body.js +0 -16
- package/styles/Global.js +0 -21
- package/styles/index.js +0 -41
- package/styles/media.js +0 -161
- package/styles/package.json +0 -6
- package/styles/spacing.js +0 -52
- package/styles/styled.js +0 -17
- package/styles/theme--vanilla.js +0 -64
- package/styles/theme.js +0 -45
- package/tw/index.js +0 -36
- package/tw/package.json +0 -6
- package/twm/index.js +0 -36
- package/twm/package.json +0 -6
- package/types.js +0 -2
- /package/{FaviconTags/FaviconTags.d.ts → FaviconTags.d.ts} +0 -0
package/Typography/ReadMore.mjs
CHANGED
|
@@ -1,43 +1,114 @@
|
|
|
1
|
-
import { __assign, __makeTemplateObject, __rest } from "tslib";
|
|
2
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useState, useRef, useMemo } from "react";
|
|
4
|
-
import styled from "styled-components";
|
|
5
2
|
import { m, useSpring } from "framer-motion";
|
|
3
|
+
import React, { useMemo, useRef, useState } from "react";
|
|
4
|
+
import styled from "styled-components";
|
|
6
5
|
// import { CgArrowsExpandDownRight as IconExpand } from "react-icons/cg";
|
|
7
6
|
import { useIsomorphicLayoutEffect } from "../hooks";
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
7
|
+
const Root = styled.div``;
|
|
8
|
+
const Content = styled.div`
|
|
9
|
+
& p:first-child {
|
|
10
|
+
margin-top: 0;
|
|
11
|
+
}
|
|
12
|
+
`;
|
|
13
|
+
const BtnWrap = styled.span`
|
|
14
|
+
display: flex;
|
|
15
|
+
justify-content: flex-end;
|
|
16
|
+
transition: transform 0.18s ease-in-out;
|
|
17
|
+
text-align: right;
|
|
18
|
+
transform: translateY(${(p)=>p.$expanded ? "0" : "-100%"});
|
|
19
|
+
opacity: ${(p)=>p.$expanded ? 0 : 1};
|
|
20
|
+
`;
|
|
21
|
+
const BtnFader = styled.div`
|
|
22
|
+
width: 30%;
|
|
23
|
+
transition: transform 0.18s ease-in-out;
|
|
24
|
+
background: linear-gradient(45deg, transparent 50%, ${(p)=>p.$bg} 70%);
|
|
25
|
+
`;
|
|
26
|
+
const Btn = styled.span`
|
|
27
|
+
padding: 0 10px 0 10px;
|
|
28
|
+
line-height: ${(p)=>p.$lineHeight ? p.$lineHeight : "inherit"};
|
|
29
|
+
background: var(--bodyBg);
|
|
30
|
+
color: var(--grey600);
|
|
31
|
+
white-space: nowrap;
|
|
32
|
+
font-size: ${(p)=>p.$fontSize}px;
|
|
33
|
+
cursor: pointer;
|
|
34
|
+
`;
|
|
35
|
+
const BtnIcon = styled.span`
|
|
36
|
+
display: inline-block;
|
|
37
|
+
margin: 0 0 0 4px;
|
|
38
|
+
transition: transform 0.18s ease-in-out;
|
|
39
|
+
${(p)=>p.$expanded ? "transform: rotate(180deg);" : ""};
|
|
40
|
+
font-size: ${(p)=>p.$fontSize}px;
|
|
41
|
+
`;
|
|
42
|
+
export const ReadMore = ({ lines = 3, lineHeight = 1.6, fontSize = 14, bg = "var(--bodyBg)", expand = "Expand", collapse = "Collapse", ...props })=>{
|
|
43
|
+
const defaultMaxHeight = lines * (lineHeight * fontSize);
|
|
44
|
+
const [expanded, setExpanded] = useState(false);
|
|
45
|
+
const [maxHeight, setMaxHeight] = useState(defaultMaxHeight);
|
|
46
|
+
const [fullHeight, setFullHeight] = useState(0);
|
|
47
|
+
const [exceeds, setExceeds] = useState(false);
|
|
48
|
+
const content = useRef(null);
|
|
49
|
+
const height = useSpring(defaultMaxHeight);
|
|
50
|
+
const styles = useMemo(()=>exceeds ? {
|
|
51
|
+
height,
|
|
52
|
+
overflow: "hidden"
|
|
53
|
+
} : {}, [
|
|
54
|
+
exceeds,
|
|
55
|
+
height
|
|
56
|
+
]);
|
|
57
|
+
const handleExpandClick = ()=>{
|
|
58
|
+
setExpanded((prevExpanded)=>!prevExpanded);
|
|
26
59
|
};
|
|
27
|
-
useIsomorphicLayoutEffect(
|
|
60
|
+
useIsomorphicLayoutEffect(()=>{
|
|
28
61
|
if (content.current) {
|
|
29
|
-
|
|
30
|
-
|
|
62
|
+
const elementHeight = content.current.offsetHeight;
|
|
63
|
+
const newExceeds = elementHeight > maxHeight;
|
|
31
64
|
if (!newExceeds) {
|
|
32
65
|
setMaxHeight(elementHeight);
|
|
33
66
|
}
|
|
34
67
|
setExceeds(newExceeds);
|
|
35
68
|
setFullHeight(elementHeight);
|
|
36
69
|
}
|
|
37
|
-
}, [
|
|
38
|
-
|
|
70
|
+
}, [
|
|
71
|
+
content,
|
|
72
|
+
maxHeight
|
|
73
|
+
]);
|
|
74
|
+
useIsomorphicLayoutEffect(()=>{
|
|
39
75
|
height.set(expanded ? fullHeight : maxHeight);
|
|
40
|
-
}, [
|
|
41
|
-
|
|
76
|
+
}, [
|
|
77
|
+
expanded,
|
|
78
|
+
height,
|
|
79
|
+
fullHeight,
|
|
80
|
+
maxHeight
|
|
81
|
+
]);
|
|
82
|
+
return /*#__PURE__*/ _jsxs(Root, {
|
|
83
|
+
children: [
|
|
84
|
+
/*#__PURE__*/ _jsx(m.div, {
|
|
85
|
+
style: styles,
|
|
86
|
+
children: /*#__PURE__*/ _jsx(Content, {
|
|
87
|
+
ref: content,
|
|
88
|
+
...props
|
|
89
|
+
})
|
|
90
|
+
}),
|
|
91
|
+
exceeds && /*#__PURE__*/ _jsxs(BtnWrap, {
|
|
92
|
+
$expanded: expanded,
|
|
93
|
+
children: [
|
|
94
|
+
/*#__PURE__*/ _jsx(BtnFader, {
|
|
95
|
+
$bg: bg
|
|
96
|
+
}),
|
|
97
|
+
/*#__PURE__*/ _jsxs(Btn, {
|
|
98
|
+
$fontSize: fontSize,
|
|
99
|
+
$lineHeight: lineHeight,
|
|
100
|
+
onClick: handleExpandClick,
|
|
101
|
+
"aria-expanded": expanded,
|
|
102
|
+
"aria-label": expanded ? collapse : expand,
|
|
103
|
+
children: [
|
|
104
|
+
expanded ? collapse : expand,
|
|
105
|
+
/*#__PURE__*/ _jsx(BtnIcon, {
|
|
106
|
+
$expanded: expanded
|
|
107
|
+
})
|
|
108
|
+
]
|
|
109
|
+
})
|
|
110
|
+
]
|
|
111
|
+
})
|
|
112
|
+
]
|
|
113
|
+
});
|
|
42
114
|
};
|
|
43
|
-
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;
|
package/Typography/TextLoop.mjs
CHANGED
|
@@ -1,46 +1,90 @@
|
|
|
1
|
-
import { __assign, __rest } from "tslib";
|
|
2
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { AnimatePresence, m } from "framer-motion";
|
|
3
3
|
import { useEffect, useRef, useState } from "react";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
4
|
+
export const TextLoopPiece = ({ text = "", style = {}, className = "", direction = "up", inline = true, noOverflow = true, delay = 400 })=>{
|
|
5
|
+
const placeholderRef = useRef(null);
|
|
6
|
+
const [content, setContent] = useState({
|
|
7
|
+
data: "",
|
|
8
|
+
key: ""
|
|
9
|
+
});
|
|
10
|
+
const [width, setWidth] = useState(inline ? 0 : "auto");
|
|
11
|
+
useEffect(()=>{
|
|
12
|
+
const timeoutId = setTimeout(()=>{
|
|
13
|
+
if (!placeholderRef.current) return;
|
|
14
14
|
placeholderRef.current.innerHTML = text + "";
|
|
15
|
-
if (inline)
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
if (inline) setWidth(placeholderRef.current.offsetWidth);
|
|
16
|
+
setContent({
|
|
17
|
+
data: text + "",
|
|
18
|
+
key: new Date() + ""
|
|
19
|
+
});
|
|
18
20
|
}, delay);
|
|
19
|
-
return
|
|
20
|
-
}, [
|
|
21
|
-
|
|
21
|
+
return ()=>clearTimeout(timeoutId);
|
|
22
|
+
}, [
|
|
23
|
+
text,
|
|
24
|
+
delay,
|
|
25
|
+
inline
|
|
26
|
+
]);
|
|
27
|
+
return /*#__PURE__*/ _jsxs("div", {
|
|
28
|
+
className: className,
|
|
29
|
+
style: {
|
|
30
|
+
...style,
|
|
31
|
+
position: "relative",
|
|
32
|
+
display: inline ? "inline-block" : "block",
|
|
33
|
+
width,
|
|
34
|
+
whiteSpace: inline ? "nowrap" : "normal"
|
|
35
|
+
},
|
|
36
|
+
children: [
|
|
37
|
+
/*#__PURE__*/ _jsx("span", {
|
|
38
|
+
ref: placeholderRef,
|
|
39
|
+
style: {
|
|
40
|
+
visibility: "hidden"
|
|
41
|
+
}
|
|
42
|
+
}),
|
|
43
|
+
/*#__PURE__*/ _jsx("div", {
|
|
44
|
+
style: {
|
|
22
45
|
overflow: noOverflow ? "hidden" : "visible",
|
|
23
46
|
display: "block",
|
|
24
47
|
position: "absolute",
|
|
25
48
|
top: 0,
|
|
26
49
|
left: 0,
|
|
27
50
|
height: "100%",
|
|
28
|
-
width: "100%"
|
|
29
|
-
},
|
|
51
|
+
width: "100%"
|
|
52
|
+
},
|
|
53
|
+
children: /*#__PURE__*/ _jsx(AnimatePresence, {
|
|
54
|
+
children: /*#__PURE__*/ _jsx(m.div, {
|
|
55
|
+
style: {
|
|
56
|
+
position: "absolute"
|
|
57
|
+
},
|
|
58
|
+
initial: {
|
|
30
59
|
opacity: 0,
|
|
31
|
-
y: direction === "down" ? "-100%" : "100%"
|
|
32
|
-
},
|
|
60
|
+
y: direction === "down" ? "-100%" : "100%"
|
|
61
|
+
},
|
|
62
|
+
animate: {
|
|
63
|
+
opacity: 1,
|
|
64
|
+
y: 0
|
|
65
|
+
},
|
|
66
|
+
exit: {
|
|
33
67
|
opacity: 0,
|
|
34
|
-
y: direction === "down" ? "100%" : "-100%"
|
|
35
|
-
},
|
|
68
|
+
y: direction === "down" ? "100%" : "-100%"
|
|
69
|
+
},
|
|
70
|
+
children: content.data
|
|
71
|
+
}, content.key)
|
|
72
|
+
})
|
|
73
|
+
})
|
|
74
|
+
]
|
|
75
|
+
});
|
|
36
76
|
};
|
|
37
|
-
export
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
var intervalId = setInterval(function () { return setIndex(function (index) { return index + 1; }); }, interval // every 3 seconds
|
|
77
|
+
export const TextLoop = ({ texts, interval = 3000, ...props })=>{
|
|
78
|
+
const [index, setIndex] = useState(0);
|
|
79
|
+
useEffect(()=>{
|
|
80
|
+
const intervalId = setInterval(()=>setIndex((index)=>index + 1), interval // every 3 seconds
|
|
42
81
|
);
|
|
43
|
-
return
|
|
44
|
-
}, [
|
|
45
|
-
|
|
82
|
+
return ()=>clearTimeout(intervalId);
|
|
83
|
+
}, [
|
|
84
|
+
interval
|
|
85
|
+
]);
|
|
86
|
+
return /*#__PURE__*/ _jsx(TextLoopPiece, {
|
|
87
|
+
...props,
|
|
88
|
+
text: texts[index % texts.length]
|
|
89
|
+
});
|
|
46
90
|
};
|
|
@@ -1,31 +1,35 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { forwardRef } from "react";
|
|
3
|
-
export
|
|
4
|
-
var children = _a.children, limit = _a.limit;
|
|
3
|
+
export const TypeStairs = /*#__PURE__*/ forwardRef(({ children, limit }, ref)=>{
|
|
5
4
|
// split in rows or just use one row if there is no limit
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
const rows = limit ? splitTextIntoRows(children, limit) : [
|
|
6
|
+
children
|
|
7
|
+
];
|
|
8
|
+
return rows.length > 1 ? /*#__PURE__*/ _jsx(_Fragment, {
|
|
9
|
+
children: rows.map((row, rowIndex)=>{
|
|
10
|
+
return /*#__PURE__*/ _jsxs("span", {
|
|
11
|
+
children: [
|
|
12
|
+
renderRow(row, rowIndex, ref),
|
|
13
|
+
rowIndex !== rows.length - 1 && /*#__PURE__*/ _jsx("br", {})
|
|
14
|
+
]
|
|
15
|
+
}, `row-${rowIndex}`);
|
|
16
|
+
})
|
|
17
|
+
}) : renderRow(rows[0], 0, ref);
|
|
10
18
|
});
|
|
11
19
|
/**
|
|
12
20
|
* every number chars find a space and break, then restart the gradient weight
|
|
13
21
|
* @see https://stackoverflow.com/a/25770787
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
var rowlen = currow.length;
|
|
22
|
-
for (var i = 1; i < arr.length; i++) {
|
|
23
|
-
var word = arr[i];
|
|
22
|
+
*/ function splitTextIntoRows(input = "", limit = 18) {
|
|
23
|
+
const rows = [];
|
|
24
|
+
const arr = input.split(" ");
|
|
25
|
+
let currow = arr[0];
|
|
26
|
+
let rowlen = currow.length;
|
|
27
|
+
for(let i = 1; i < arr.length; i++){
|
|
28
|
+
const word = arr[i];
|
|
24
29
|
rowlen += word.length + 1;
|
|
25
30
|
if (rowlen <= limit) {
|
|
26
31
|
currow += " " + word;
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
32
|
+
} else {
|
|
29
33
|
rows.push(currow);
|
|
30
34
|
currow = word;
|
|
31
35
|
rowlen = word.length;
|
|
@@ -35,15 +39,23 @@ function splitTextIntoRows(input, limit) {
|
|
|
35
39
|
return rows;
|
|
36
40
|
}
|
|
37
41
|
function renderRow(row, rowIndex, ref) {
|
|
38
|
-
|
|
39
|
-
|
|
42
|
+
const letters = row.split("");
|
|
43
|
+
let fontWeightIdx = 1;
|
|
40
44
|
// const fontWeight = Math.min(fontWeightIdx * 100, 800);
|
|
41
|
-
return
|
|
42
|
-
|
|
45
|
+
return /*#__PURE__*/ _jsx(_Fragment, {
|
|
46
|
+
children: letters.map((letter, letterIndex)=>{
|
|
47
|
+
const fontWeight = Math.min(fontWeightIdx * 100, 800);
|
|
43
48
|
// don't waste a fontWeight for a white space
|
|
44
49
|
if (letter !== " ") {
|
|
45
50
|
fontWeightIdx++;
|
|
46
51
|
}
|
|
47
|
-
return
|
|
48
|
-
|
|
52
|
+
return /*#__PURE__*/ _jsx("span", {
|
|
53
|
+
style: {
|
|
54
|
+
fontWeight
|
|
55
|
+
},
|
|
56
|
+
ref: ref,
|
|
57
|
+
children: letter
|
|
58
|
+
}, `letter-${rowIndex}-${letterIndex}`);
|
|
59
|
+
})
|
|
60
|
+
});
|
|
49
61
|
}
|
package/css/index.mjs
CHANGED
|
@@ -8,24 +8,23 @@ export * from "../shared";
|
|
|
8
8
|
// export * from "../Carousel";
|
|
9
9
|
// export * from "../Collapsable";
|
|
10
10
|
// export * from "../Debug";
|
|
11
|
-
export { KoineDialog } from "../Dialog/css/bare";
|
|
12
|
-
// export * from "../
|
|
13
|
-
// export * from "../
|
|
14
|
-
// export * from "../
|
|
15
|
-
// export * from "../
|
|
16
|
-
// export * from "../
|
|
17
|
-
// export * from "../
|
|
18
|
-
// export * from "../
|
|
19
|
-
// export * from "../
|
|
20
|
-
// export * from "../
|
|
21
|
-
// export * from "../
|
|
22
|
-
// export * from "../
|
|
23
|
-
// export * from "../
|
|
24
|
-
// export * from "../
|
|
25
|
-
|
|
26
|
-
// export * from "../
|
|
27
|
-
// export * from "../
|
|
28
|
-
// export * from "../
|
|
29
|
-
// export * from "../
|
|
30
|
-
// export * from "../
|
|
31
|
-
// export * from "../Typography";
|
|
11
|
+
export { KoineDialog } from "../Dialog/css/bare"; // export * from "../Form";
|
|
12
|
+
// export * from "../Forms";
|
|
13
|
+
// export * from "../Grid";
|
|
14
|
+
// export * from "../Hamburger";
|
|
15
|
+
// export * from "../Header";
|
|
16
|
+
// export * from "../Hidden";
|
|
17
|
+
// export * from "../Img";
|
|
18
|
+
// export * from "../Link";
|
|
19
|
+
// export * from "../MenuItem";
|
|
20
|
+
// export * from "../Pagination";
|
|
21
|
+
// export * from "../Pill";
|
|
22
|
+
// export * from "../Progress";
|
|
23
|
+
// export * from "../Rating";
|
|
24
|
+
// // export * from "../Select";
|
|
25
|
+
// export * from "../Sidebar";
|
|
26
|
+
// export * from "../Spacing";
|
|
27
|
+
// export * from "../Sticky";
|
|
28
|
+
// export * from "../styles";
|
|
29
|
+
// export * from "../Tabs";
|
|
30
|
+
// export * from "../Typography";
|
package/helpers/classed.mjs
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { createElement, forwardRef } from "react";
|
|
1
|
+
import React, { createElement, forwardRef } from "react";
|
|
3
2
|
/**
|
|
4
3
|
* This utility allows to extend a component a là `styled-components` but for
|
|
5
4
|
* a className based styling solution like Tailwind,
|
|
@@ -18,35 +17,24 @@ import { createElement, forwardRef } from "react";
|
|
|
18
17
|
*
|
|
19
18
|
* Discussions and Q/A:
|
|
20
19
|
* - https://stackoverflow.com/q/73055695/1938970
|
|
21
|
-
*/
|
|
22
|
-
export function classed(component) {
|
|
20
|
+
*/ export function classed(component) {
|
|
23
21
|
// @ts-expect-error nevermind for now...
|
|
24
|
-
|
|
25
|
-
return function
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
var WrappedComponent = forwardRef(function (props, ref) {
|
|
31
|
-
var _a;
|
|
32
|
-
var argResolved = args
|
|
33
|
-
.map(function (arg, index) {
|
|
34
|
-
var result = "";
|
|
22
|
+
const type = component.type || component;
|
|
23
|
+
return function(strings, ...args) {
|
|
24
|
+
const WrappedComponent = /*#__PURE__*/ forwardRef(function(props, ref) {
|
|
25
|
+
const argResolved = args.map((arg, index)=>{
|
|
26
|
+
let result = "";
|
|
35
27
|
if (typeof arg === "function") {
|
|
36
28
|
result = arg(props);
|
|
37
|
-
}
|
|
38
|
-
else if (typeof arg !== "undefined") {
|
|
29
|
+
} else if (typeof arg !== "undefined") {
|
|
39
30
|
result = arg.toString();
|
|
40
31
|
}
|
|
41
32
|
return strings[index] + result;
|
|
42
|
-
})
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
var propsToForward = isNativeHtmlElement
|
|
46
|
-
? {}
|
|
47
|
-
: props;
|
|
33
|
+
}).join("");
|
|
34
|
+
const isNativeHtmlElement = typeof type === "string";
|
|
35
|
+
const propsToForward = isNativeHtmlElement ? {} : props;
|
|
48
36
|
if (isNativeHtmlElement) {
|
|
49
|
-
for
|
|
37
|
+
for(const key in props){
|
|
50
38
|
// like styled-components `transient` props
|
|
51
39
|
if (!key.startsWith("$")) {
|
|
52
40
|
// FIXME: for react 18 we need: @ts-expect-error
|
|
@@ -55,16 +43,19 @@ export function classed(component) {
|
|
|
55
43
|
}
|
|
56
44
|
}
|
|
57
45
|
// get the tagged function string outcome
|
|
58
|
-
|
|
46
|
+
let className = argResolved || strings[0];
|
|
59
47
|
// check if we need to clean it or not from the optional structure `< class="..."`
|
|
60
|
-
className =
|
|
48
|
+
className = className.match(/class="([^"]*)/)?.[1] || className;
|
|
61
49
|
// add the custom classes from props
|
|
62
|
-
className +=
|
|
63
|
-
return createElement(type,
|
|
50
|
+
className += props?.className ? " " + props?.className : "";
|
|
51
|
+
return /*#__PURE__*/ createElement(type, {
|
|
52
|
+
// ...props,
|
|
53
|
+
...propsToForward,
|
|
64
54
|
// only add ot props if it is not an empty string
|
|
65
|
-
className: className || undefined,
|
|
55
|
+
className: className || undefined,
|
|
66
56
|
// add ref to props
|
|
67
|
-
ref
|
|
57
|
+
ref
|
|
58
|
+
});
|
|
68
59
|
});
|
|
69
60
|
// FIXME: not sure if this is needed
|
|
70
61
|
// WrappedComponent.displayName = type.toString();
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
2
|
+
// @ts-nocheck These are just wip experiments, we stick to just `./classed.tsx`
|
|
3
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
4
|
+
import React, { createElement } from "react";
|
|
5
|
+
import { classed } from "./classed";
|
|
6
|
+
const Classed = classed("div")`< class="bg-red-400 ${(p)=>p.test === "0a" ? "py-3" : "px-3"}`;
|
|
7
|
+
/**
|
|
8
|
+
* Adapted (removed `classnames` dependency) from:
|
|
9
|
+
* @see https://daily.dev/blog/my-tailwind-css-utility-function-for-creating-reusable-react-components-typescript-support
|
|
10
|
+
*
|
|
11
|
+
* See also [classname-hoc](https://www.npmjs.com/package/classname-hoc)
|
|
12
|
+
*/ function classedOriginal(type, ...className) {
|
|
13
|
+
return function(props) {
|
|
14
|
+
return /*#__PURE__*/ createElement(type, {
|
|
15
|
+
...props,
|
|
16
|
+
className: [
|
|
17
|
+
props?.className || ""
|
|
18
|
+
].concat(className).join(" ")
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
const ClassedOriginal = classedOriginal("div", "bg-slate-800");
|
|
23
|
+
function classedBind(props) {
|
|
24
|
+
// @ts-expect-error no time now
|
|
25
|
+
const classNameImpl = props.className ? " " + props.className : "";
|
|
26
|
+
// return <this className={this.props.className + classNameImpl} {...props} />;
|
|
27
|
+
return /*#__PURE__*/ createElement(this.props.as || this.type, {
|
|
28
|
+
...props,
|
|
29
|
+
className: this.props.className + classNameImpl
|
|
30
|
+
}, // @ts-expect-error no time now
|
|
31
|
+
props.children);
|
|
32
|
+
}
|
|
33
|
+
const ClassedBind = classedBind.bind(/*#__PURE__*/ _jsx("div", {
|
|
34
|
+
as: "h2",
|
|
35
|
+
className: "bg-slate-800"
|
|
36
|
+
}));
|
|
37
|
+
function classedDynamic(ComponentFn) {
|
|
38
|
+
return function(propsImplementation) {
|
|
39
|
+
const { props, type } = ComponentFn(propsImplementation);
|
|
40
|
+
const classNameDefault = props.className ? " " + props.className : "";
|
|
41
|
+
return /*#__PURE__*/ createElement(props.as || type, {
|
|
42
|
+
...props,
|
|
43
|
+
...propsImplementation,
|
|
44
|
+
className: propsImplementation?.className + classNameDefault
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
const ClassedDynamicIgnoringProps = classedDynamic(()=>/*#__PURE__*/ _jsx("div", {
|
|
49
|
+
as: "h2",
|
|
50
|
+
className: "bg-slate-800"
|
|
51
|
+
}));
|
|
52
|
+
const ClassedDynamicUsingProps = classedDynamic((p)=>{
|
|
53
|
+
return /*#__PURE__*/ _jsx("div", {
|
|
54
|
+
as: "h2",
|
|
55
|
+
className: `bg-slate-800 ${p?.test === "3" ? "py-3" : "px-3"}`
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
// type ExtractComponent<ComponentString extends string> =
|
|
59
|
+
// ComponentString extends `<${infer ComponentName} class="${infer ClassNames}`
|
|
60
|
+
// ? { name: ComponentName; className: ClassNames }
|
|
61
|
+
// : { error: "Cannot parse Component string" };
|
|
62
|
+
// type ExtractedComponent<T extends string> = ExtractComponent<T>;
|
|
63
|
+
function classedTaggedStatic(value = "") {
|
|
64
|
+
// @ts-expect-error we rely on correct implementation and assume it always matches
|
|
65
|
+
const componentName = value.match(/<(.*?)\s/)[1];
|
|
66
|
+
// @ts-expect-error we rely on correct implementation and assume it always matches
|
|
67
|
+
const classDefault = value.match(/class="(.+)/)[1];
|
|
68
|
+
return function(props) {
|
|
69
|
+
// @ts-expect-error no time now
|
|
70
|
+
const classCustom = props?.className ? " " + props?.className : "";
|
|
71
|
+
return /*#__PURE__*/ createElement(componentName, {
|
|
72
|
+
...props,
|
|
73
|
+
className: classDefault + classCustom
|
|
74
|
+
});
|
|
75
|
+
}; /* as Component; */
|
|
76
|
+
}
|
|
77
|
+
const ClassedTaggedStatic = classedTaggedStatic(`<div class="bg-teal-400`);
|
|
78
|
+
export default {
|
|
79
|
+
// component: KoineDialog,
|
|
80
|
+
title: "Helpers/classed"
|
|
81
|
+
};
|
|
82
|
+
const Template = (args)=>{
|
|
83
|
+
return /*#__PURE__*/ _jsxs(_Fragment, {
|
|
84
|
+
children: [
|
|
85
|
+
/*#__PURE__*/ _jsx(Classed, {
|
|
86
|
+
className: "text-yellow-200",
|
|
87
|
+
test: "0a",
|
|
88
|
+
children: "Classed taller"
|
|
89
|
+
}),
|
|
90
|
+
/*#__PURE__*/ _jsx(Classed, {
|
|
91
|
+
className: "text-yellow-200",
|
|
92
|
+
test: "0b",
|
|
93
|
+
children: "Classed wider"
|
|
94
|
+
}),
|
|
95
|
+
/*#__PURE__*/ _jsx(ClassedOriginal, {
|
|
96
|
+
className: "text-white",
|
|
97
|
+
children: "ClassedOriginal"
|
|
98
|
+
}),
|
|
99
|
+
/*#__PURE__*/ _jsx(ClassedBind, {
|
|
100
|
+
className: "text-white",
|
|
101
|
+
children: "ClassedBind"
|
|
102
|
+
}),
|
|
103
|
+
/*#__PURE__*/ _jsx(ClassedDynamicIgnoringProps, {
|
|
104
|
+
className: "text-gray-300",
|
|
105
|
+
test: "2",
|
|
106
|
+
children: "ClassedDynamicIgnoringProps"
|
|
107
|
+
}),
|
|
108
|
+
/*#__PURE__*/ _jsx(ClassedDynamicUsingProps, {
|
|
109
|
+
className: "text-gray-600",
|
|
110
|
+
test: "3",
|
|
111
|
+
children: "ClassedDynamicUsingProps"
|
|
112
|
+
}),
|
|
113
|
+
/*#__PURE__*/ _jsx(ClassedTaggedStatic, {
|
|
114
|
+
className: "text-gray-600",
|
|
115
|
+
children: "ClassedTaggedStatic"
|
|
116
|
+
})
|
|
117
|
+
]
|
|
118
|
+
});
|
|
119
|
+
};
|
|
120
|
+
export const Playground = Template.bind({});
|
|
121
|
+
Playground.args = {};
|