@koine/react 1.0.4 → 1.0.9
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.d.ts +5 -5
- package/Alert/Alert.js +16 -0
- package/Alert/index.d.ts +1 -1
- package/Alert/index.js +1 -0
- package/Alert/package.json +6 -0
- package/Animations/Reveal.d.ts +4 -4
- package/Animations/Reveal.js +15 -0
- package/Animations/Underline.d.ts +1 -1
- package/Animations/Underline.js +15 -0
- package/Animations/index.d.ts +3 -3
- package/Animations/index.js +3 -0
- package/Animations/package.json +6 -0
- package/Animations/useReveal.d.ts +33 -34
- package/Animations/useReveal.js +70 -0
- package/Autocomplete/AutocompleteDownshift.d.ts +1 -1
- package/Autocomplete/AutocompleteDownshift.js +158 -0
- package/Autocomplete/AutocompleteDownshiftMultiselect.d.ts +1 -1
- package/Autocomplete/AutocompleteDownshiftMultiselect.js +353 -0
- package/Autocomplete/AutocompleteMui.d.ts +47 -47
- package/Autocomplete/AutocompleteMui.js +177 -0
- package/Autocomplete/AutocompleteReach.d.ts +1 -1
- package/Autocomplete/AutocompleteReach.js +112 -0
- package/Autocomplete/components.d.ts +21 -21
- package/Autocomplete/components.js +89 -0
- package/Autocomplete/helpers.d.ts +3 -3
- package/Autocomplete/helpers.js +28 -0
- package/Autocomplete/index.d.ts +2 -2
- package/Autocomplete/index.js +3 -0
- package/Autocomplete/package.json +6 -0
- package/Bg/BgColor.d.ts +36 -36
- package/Bg/BgColor.js +31 -0
- package/Bg/BgPhoto.d.ts +13 -14
- package/Bg/BgPhoto.js +59 -0
- package/Bg/BgSvg.d.ts +7 -8
- package/Bg/BgSvg.js +15 -0
- package/Bg/index.d.ts +3 -3
- package/Bg/index.js +3 -0
- package/Bg/package.json +6 -0
- package/Breadcrumbs/Breadcrumbs.d.ts +13 -14
- package/Breadcrumbs/Breadcrumbs.js +67 -0
- package/Breadcrumbs/index.d.ts +1 -1
- package/Breadcrumbs/index.js +1 -0
- package/Breadcrumbs/package.json +6 -0
- package/Buttons/Button.d.ts +18 -18
- package/Buttons/Button.js +79 -0
- package/Buttons/ButtonComposite.d.ts +23 -23
- package/Buttons/ButtonComposite.js +49 -0
- package/Buttons/ButtonFab.d.ts +7 -7
- package/Buttons/ButtonFab.js +8 -0
- package/Buttons/ButtonLink.d.ts +8 -9
- package/Buttons/ButtonLink.js +10 -0
- package/Buttons/IconButton.d.ts +11 -11
- package/Buttons/IconButton.js +19 -0
- package/Buttons/index.d.ts +5 -5
- package/Buttons/index.js +5 -0
- package/Buttons/package.json +6 -0
- package/Calendar/CalendarDaygridCell.d.ts +36 -36
- package/Calendar/CalendarDaygridCell.js +51 -0
- package/Calendar/CalendarDaygridNav.d.ts +27 -28
- package/Calendar/CalendarDaygridNav.js +22 -0
- package/Calendar/CalendarDaygridTable.d.ts +25 -26
- package/Calendar/CalendarDaygridTable.js +55 -0
- package/Calendar/CalendarLegend.d.ts +19 -19
- package/Calendar/CalendarLegend.js +11 -0
- package/Calendar/calendar-api-google.d.ts +18 -18
- package/Calendar/calendar-api-google.js +94 -0
- package/Calendar/index.d.ts +6 -6
- package/Calendar/index.js +6 -0
- package/Calendar/package.json +6 -0
- package/Calendar/types.d.ts +81 -81
- package/Calendar/types.js +1 -0
- package/Calendar/useCalendar.d.ts +49 -50
- package/Calendar/useCalendar.js +182 -0
- package/Calendar/utils.d.ts +11 -11
- package/Calendar/utils.js +203 -0
- package/Carousel/Carousel.d.ts +1 -1
- package/Carousel/Carousel.js +378 -0
- package/Carousel/CarouselCss.d.ts +47 -47
- package/Carousel/CarouselCss.js +36 -0
- package/Carousel/index.d.ts +1 -1
- package/Carousel/index.js +1 -0
- package/Carousel/package.json +6 -0
- package/Collapsable/Collapsable.d.ts +1 -60
- package/Collapsable/Collapsable.js +1 -0
- package/Collapsable/CollapsableReach.d.ts +66 -0
- package/Collapsable/CollapsableReach.js +135 -0
- package/Collapsable/index.d.ts +1 -1
- package/Collapsable/index.js +1 -0
- package/Collapsable/package.json +6 -0
- package/Debug/Debug.d.ts +4 -5
- package/Debug/Debug.js +21 -0
- package/Debug/index.d.ts +1 -1
- package/Debug/index.js +1 -0
- package/Debug/package.json +6 -0
- package/Dialog/DialogMui.d.ts +139 -0
- package/Dialog/DialogMui.js +78 -0
- package/Dialog/css/bare.d.ts +145 -0
- package/Dialog/css/bare.js +19 -0
- package/Dialog/index.d.ts +2 -1
- package/Dialog/index.js +1 -0
- package/Dialog/m/bare.d.ts +56 -0
- package/Dialog/m/bare.js +48 -0
- package/Dialog/m/basic.d.ts +4 -0
- package/Dialog/m/basic.js +31 -0
- package/Dialog/m/index.d.ts +2 -0
- package/Dialog/m/index.js +4 -0
- package/Dialog/m/package.json +6 -0
- package/Dialog/package.json +6 -0
- package/Dialog/sc/bare.d.ts +105 -0
- package/Dialog/sc/bare.js +61 -0
- package/Dialog/sc/framer.d.ts +80 -0
- package/Dialog/sc/framer.js +16 -0
- package/Dialog/sc/framerMaterial.d.ts +79 -0
- package/Dialog/sc/framerMaterial.js +16 -0
- package/Dialog/sc/material.d.ts +94 -0
- package/Dialog/sc/material.js +41 -0
- package/Dialog/tw/bare.d.ts +196 -0
- package/Dialog/tw/bare.js +36 -0
- package/Dialog/tw/elegant.d.ts +244 -0
- package/Dialog/tw/elegant.js +18 -0
- package/Dialog/tw/framer.d.ts +112 -0
- package/Dialog/tw/framer.js +16 -0
- package/Dialog/tw/framerMaterial.d.ts +167 -0
- package/Dialog/tw/framerMaterial.js +16 -0
- package/Dialog/tw/material.d.ts +244 -0
- package/Dialog/tw/material.js +18 -0
- package/Editor/Editor--tiptap.d.ts +9 -10
- package/Editor/Editor--tiptap.js +23 -0
- package/Editor/components.d.ts +7 -8
- package/Editor/components.js +28 -0
- package/Editor/index.d.ts +1 -1
- package/Editor/index.js +1 -0
- package/Editor/package.json +6 -0
- package/Favicon/FaviconTags.d.ts +18 -19
- package/Favicon/FaviconTags.js +14 -0
- package/Favicon/index.d.ts +1 -1
- package/Favicon/index.js +1 -0
- package/Favicon/package.json +6 -0
- package/Forms/Checkbox/Checkbox.d.ts +11 -11
- package/Forms/Checkbox/Checkbox.js +24 -0
- package/Forms/Checkbox/index.d.ts +1 -1
- package/Forms/Checkbox/index.js +1 -0
- package/Forms/Checkbox/package.json +6 -0
- package/Forms/Feedback/Feedback.d.ts +5 -5
- package/Forms/Feedback/Feedback.js +10 -0
- package/Forms/Feedback/index.d.ts +1 -1
- package/Forms/Feedback/index.js +1 -0
- package/Forms/Feedback/package.json +6 -0
- package/Forms/Field/Field.d.ts +15 -16
- package/Forms/Field/Field.js +59 -0
- package/Forms/Field/FieldControl.d.ts +26 -26
- package/Forms/Field/FieldControl.js +43 -0
- package/Forms/Field/FieldHint.d.ts +1 -1
- package/Forms/Field/FieldHint.js +6 -0
- package/Forms/Field/index.d.ts +2 -2
- package/Forms/Field/index.js +2 -0
- package/Forms/Field/package.json +6 -0
- package/Forms/Form/Form.d.ts +31 -31
- package/Forms/Form/Form.js +62 -0
- package/Forms/Form/index.d.ts +1 -1
- package/Forms/Form/index.js +1 -0
- package/Forms/Form/package.json +6 -0
- package/Forms/Input/Input.d.ts +9 -9
- package/Forms/Input/Input.js +23 -0
- package/Forms/Input/index.d.ts +1 -1
- package/Forms/Input/index.js +1 -0
- package/Forms/Input/package.json +6 -0
- package/Forms/InputGroup/InputGroup.d.ts +13 -13
- package/Forms/InputGroup/InputGroup.js +42 -0
- package/Forms/InputGroup/index.d.ts +1 -1
- package/Forms/InputGroup/index.js +1 -0
- package/Forms/InputGroup/package.json +6 -0
- package/Forms/Label/Label.d.ts +3 -3
- package/Forms/Label/Label.js +24 -0
- package/Forms/Label/index.d.ts +1 -1
- package/Forms/Label/index.js +1 -0
- package/Forms/Label/package.json +6 -0
- package/Forms/Password/Password.d.ts +5 -5
- package/Forms/Password/Password.js +30 -0
- package/Forms/Password/index.d.ts +1 -1
- package/Forms/Password/index.js +1 -0
- package/Forms/Password/package.json +6 -0
- package/Forms/Radio/Radio.d.ts +12 -12
- package/Forms/Radio/Radio.js +28 -0
- package/Forms/Radio/index.d.ts +1 -1
- package/Forms/Radio/index.js +1 -0
- package/Forms/Radio/package.json +6 -0
- package/Forms/Switch/Switch.d.ts +9 -9
- package/Forms/Switch/Switch.js +50 -0
- package/Forms/Switch/index.d.ts +1 -1
- package/Forms/Switch/index.js +1 -0
- package/Forms/Switch/package.json +6 -0
- package/Forms/Textarea/Textarea.d.ts +5 -5
- package/Forms/Textarea/Textarea.js +13 -0
- package/Forms/Textarea/TextareaRich.d.ts +6 -6
- package/Forms/Textarea/TextareaRich.js +42 -0
- package/Forms/Textarea/index.d.ts +2 -2
- package/Forms/Textarea/index.js +2 -0
- package/Forms/Textarea/package.json +6 -0
- package/Forms/Toggle/Toggle.d.ts +19 -26
- package/Forms/Toggle/Toggle.js +79 -0
- package/Forms/Toggle/index.d.ts +1 -1
- package/Forms/Toggle/index.js +1 -0
- package/Forms/Toggle/package.json +6 -0
- package/Forms/Toggle/useToggle.d.ts +46 -46
- package/Forms/Toggle/useToggle.js +145 -0
- package/Forms/antispam.d.ts +24 -24
- package/Forms/antispam.js +56 -0
- package/Forms/helpers.d.ts +26 -26
- package/Forms/helpers.js +44 -0
- package/Forms/index.d.ts +16 -16
- package/Forms/index.js +17 -0
- package/Forms/package.json +6 -0
- package/Forms/styles.d.ts +19 -20
- package/Forms/styles.js +60 -0
- package/Gauge/Gauge.d.ts +5 -5
- package/Gauge/Gauge.js +102 -0
- package/Grid/Grid.d.ts +64 -60
- package/Grid/Grid.js +79 -0
- package/Grid/index.d.ts +1 -1
- package/Grid/index.js +1 -0
- package/Grid/package.json +6 -0
- package/Hamburger/Hamburger.d.ts +6 -6
- package/Hamburger/Hamburger.js +64 -0
- package/Hamburger/index.d.ts +1 -1
- package/Hamburger/index.js +1 -0
- package/Hamburger/package.json +6 -0
- package/Header/index.d.ts +1 -1
- package/Header/index.js +1 -0
- package/Header/package.json +6 -0
- package/Header/useHeader.d.ts +24 -20
- package/Header/useHeader.js +30 -0
- package/Hidden/Hidden.d.ts +6 -6
- package/Hidden/Hidden.js +14 -0
- package/Hidden/index.d.ts +1 -1
- package/Hidden/index.js +1 -0
- package/Hidden/package.json +6 -0
- package/Img/index.d.ts +1 -1
- package/Img/index.js +1 -0
- package/Img/package.json +6 -0
- package/Img/sc/bare.d.ts +2 -0
- package/Img/sc/bare.js +37 -0
- package/Img/types.d.ts +9 -0
- package/Img/types.js +1 -0
- package/Link/Link.d.ts +5 -5
- package/Link/Link.js +2 -0
- package/Link/LinkBlank.d.ts +8 -8
- package/Link/LinkBlank.js +26 -0
- package/Link/index.d.ts +2 -2
- package/Link/index.js +2 -0
- package/Link/package.json +6 -0
- package/Menu/Menu.d.ts +1 -1
- package/Menu/Menu.js +11 -0
- package/Menu/index.d.ts +1 -1
- package/Menu/index.js +1 -0
- package/Menu/package.json +6 -0
- package/MenuItem/MenuItem.d.ts +4 -4
- package/MenuItem/MenuItem.js +20 -0
- package/MenuItem/index.d.ts +1 -1
- package/MenuItem/index.js +1 -0
- package/MenuItem/package.json +6 -0
- package/Meta/Meta.d.ts +14 -15
- package/Meta/Meta.js +4 -0
- package/Meta/index.d.ts +1 -1
- package/Meta/index.js +1 -0
- package/Meta/package.json +6 -0
- package/NoJs/NoJs.d.ts +2 -3
- package/NoJs/NoJs.js +6 -0
- package/NoJs/index.d.ts +1 -1
- package/NoJs/index.js +1 -0
- package/NoJs/package.json +6 -0
- package/Pagination/PaginationNav.d.ts +22 -23
- package/Pagination/PaginationNav.js +83 -0
- package/Pagination/PaginationResults.d.ts +3 -3
- package/Pagination/PaginationResults.js +10 -0
- package/Pagination/index.d.ts +2 -2
- package/Pagination/index.js +2 -0
- package/Pagination/package.json +6 -0
- package/Pill/Pill.d.ts +5 -5
- package/Pill/Pill.js +37 -0
- package/Pill/index.d.ts +1 -1
- package/Pill/index.js +1 -0
- package/Pill/package.json +6 -0
- package/Progress/ProgressCircular.d.ts +19 -20
- package/Progress/ProgressCircular.js +36 -0
- package/Progress/ProgressLinear.d.ts +22 -23
- package/Progress/ProgressLinear.js +32 -0
- package/Progress/ProgressOverlay.d.ts +4 -5
- package/Progress/ProgressOverlay.js +40 -0
- package/Progress/index.d.ts +3 -3
- package/Progress/index.js +3 -0
- package/Progress/package.json +6 -0
- package/README.md +0 -0
- package/Rating/Rating.d.ts +35 -35
- package/Rating/Rating.js +90 -0
- package/Rating/index.d.ts +11 -11
- package/Rating/index.js +45 -0
- package/Rating/package.json +6 -0
- package/Select/SelectDownshift.d.ts +5 -5
- package/Select/SelectDownshift.js +38 -0
- package/Select/components.d.ts +6 -6
- package/Select/components.js +18 -0
- package/Select/index.d.ts +2 -2
- package/Select/index.js +3 -0
- package/Select/package.json +6 -0
- package/Sidebar/Sidebar.d.ts +3 -3
- package/Sidebar/Sidebar.js +48 -0
- package/Sidebar/index.d.ts +1 -1
- package/Sidebar/index.js +1 -0
- package/Sidebar/package.json +6 -0
- package/Spacing/Spacing.d.ts +30 -30
- package/Spacing/Spacing.js +45 -0
- package/Spacing/index.d.ts +1 -1
- package/Spacing/index.js +1 -0
- package/Spacing/package.json +6 -0
- package/Sticky/Sticky.d.ts +2 -2
- package/Sticky/Sticky.js +219 -0
- package/Sticky/StickyCss.d.ts +5 -5
- package/Sticky/StickyCss.js +4 -0
- package/Sticky/index.d.ts +1 -1
- package/Sticky/index.js +1 -0
- package/Sticky/package.json +6 -0
- package/Tabs/Tabs.d.ts +27 -25
- package/Tabs/Tabs.js +62 -0
- package/Tabs/index.d.ts +1 -1
- package/Tabs/index.js +1 -0
- package/Tabs/package.json +6 -0
- package/Typography/CopyPasteVisible.d.ts +1 -1
- package/Typography/CopyPasteVisible.js +6 -0
- package/Typography/Native.d.ts +10 -10
- package/Typography/Native.js +47 -0
- package/Typography/ReadMore.d.ts +12 -12
- package/Typography/ReadMore.js +69 -0
- package/Typography/TextLoop.d.ts +16 -16
- package/Typography/TextLoop.js +49 -0
- package/Typography/TypeStairs.d.ts +6 -6
- package/Typography/TypeStairs.js +46 -0
- package/Typography/index.d.ts +5 -5
- package/Typography/index.js +5 -0
- package/Typography/package.json +6 -0
- package/css/index.d.ts +2 -0
- package/css/index.js +30 -0
- package/css/package.json +6 -0
- package/helpers/classed.d.ts +22 -0
- package/helpers/classed.js +64 -0
- package/helpers/extend-component.d.ts +28 -0
- package/helpers/extend-component.js +12 -0
- package/helpers/index.d.ts +3 -1
- package/helpers/index.js +2 -0
- package/helpers/package.json +6 -0
- package/hooks/index.d.ts +6 -5
- package/hooks/index.js +7 -0
- package/hooks/package.json +6 -0
- package/hooks/useDateLocale.d.ts +7 -7
- package/hooks/useDateLocale.js +29 -0
- package/hooks/useFocus.d.ts +4 -5
- package/hooks/useFocus.js +11 -0
- package/hooks/usePrevious.d.ts +1 -1
- package/hooks/usePrevious.js +8 -0
- package/hooks/useScrollPosition.d.ts +15 -0
- package/hooks/useScrollPosition.js +75 -0
- package/hooks/useScrollTo.d.ts +1 -0
- package/hooks/useScrollTo.js +19 -0
- package/hooks/useTraceUpdate.d.ts +4 -4
- package/hooks/useTraceUpdate.js +20 -0
- package/hooks/useWindowSize.d.ts +1 -1
- package/hooks/useWindowSize.js +13 -0
- package/index.d.ts +1 -35
- package/index.js +5 -0
- package/m/MotionProvider.d.ts +37 -0
- package/m/MotionProvider.js +37 -0
- package/m/index.d.ts +6 -0
- package/m/index.js +6 -0
- package/m/lite.d.ts +2 -0
- package/m/lite.js +2 -0
- package/m/max.d.ts +2 -0
- package/m/max.js +2 -0
- package/m/package.json +6 -0
- package/node/Alert/Alert.js +21 -0
- package/node/Alert/index.js +4 -0
- package/node/Animations/Reveal.js +19 -0
- package/node/Animations/Underline.js +19 -0
- package/node/Animations/index.js +6 -0
- package/node/Animations/useReveal.js +74 -0
- package/node/Autocomplete/AutocompleteDownshift.js +161 -0
- package/node/Autocomplete/AutocompleteDownshiftMultiselect.js +356 -0
- package/node/Autocomplete/AutocompleteMui.js +175 -0
- package/node/Autocomplete/AutocompleteReach.js +115 -0
- package/node/Autocomplete/components.js +93 -0
- package/node/Autocomplete/helpers.js +32 -0
- package/node/Autocomplete/index.js +7 -0
- package/node/Bg/BgColor.js +36 -0
- package/node/Bg/BgPhoto.js +64 -0
- package/node/Bg/BgSvg.js +20 -0
- package/node/Bg/index.js +6 -0
- package/node/Breadcrumbs/Breadcrumbs.js +72 -0
- package/node/Breadcrumbs/index.js +4 -0
- package/node/Buttons/Button.js +83 -0
- package/node/Buttons/ButtonComposite.js +54 -0
- package/node/Buttons/ButtonFab.js +12 -0
- package/node/Buttons/ButtonLink.js +15 -0
- package/node/Buttons/IconButton.js +23 -0
- package/node/Buttons/index.js +8 -0
- package/node/Calendar/CalendarDaygridCell.js +55 -0
- package/node/Calendar/CalendarDaygridNav.js +27 -0
- package/node/Calendar/CalendarDaygridTable.js +60 -0
- package/node/Calendar/CalendarLegend.js +15 -0
- package/node/Calendar/calendar-api-google.js +99 -0
- package/node/Calendar/index.js +9 -0
- package/node/Calendar/types.js +2 -0
- package/node/Calendar/useCalendar.js +186 -0
- package/node/Calendar/utils.js +217 -0
- package/node/Carousel/Carousel.js +381 -0
- package/node/Carousel/CarouselCss.js +41 -0
- package/node/Carousel/index.js +4 -0
- package/node/Collapsable/Collapsable.js +4 -0
- package/node/Collapsable/CollapsableReach.js +141 -0
- package/node/Collapsable/index.js +4 -0
- package/node/Debug/Debug.js +26 -0
- package/node/Debug/index.js +4 -0
- package/node/Dialog/DialogMui.js +82 -0
- package/node/Dialog/css/bare.js +23 -0
- package/node/Dialog/index.js +5 -0
- package/node/Dialog/m/bare.js +51 -0
- package/node/Dialog/m/basic.js +35 -0
- package/node/Dialog/m/index.js +8 -0
- package/node/Dialog/sc/bare.js +65 -0
- package/node/Dialog/sc/framer.js +19 -0
- package/node/Dialog/sc/framerMaterial.js +19 -0
- package/node/Dialog/sc/material.js +45 -0
- package/node/Dialog/tw/bare.js +40 -0
- package/node/Dialog/tw/elegant.js +21 -0
- package/node/Dialog/tw/framer.js +19 -0
- package/node/Dialog/tw/framerMaterial.js +19 -0
- package/node/Dialog/tw/material.js +21 -0
- package/node/Editor/Editor--tiptap.js +29 -0
- package/node/Editor/components.js +34 -0
- package/node/Editor/index.js +4 -0
- package/node/Favicon/FaviconTags.js +18 -0
- package/node/Favicon/index.js +4 -0
- package/node/Forms/Checkbox/Checkbox.js +28 -0
- package/node/Forms/Checkbox/index.js +4 -0
- package/node/Forms/Feedback/Feedback.js +15 -0
- package/node/Forms/Feedback/index.js +4 -0
- package/node/Forms/Field/Field.js +64 -0
- package/node/Forms/Field/FieldControl.js +47 -0
- package/node/Forms/Field/FieldHint.js +10 -0
- package/node/Forms/Field/index.js +5 -0
- package/node/Forms/Form/Form.js +67 -0
- package/node/Forms/Form/index.js +4 -0
- package/node/Forms/Input/Input.js +27 -0
- package/node/Forms/Input/index.js +4 -0
- package/node/Forms/InputGroup/InputGroup.js +47 -0
- package/node/Forms/InputGroup/index.js +4 -0
- package/node/Forms/Label/Label.js +28 -0
- package/node/Forms/Label/index.js +4 -0
- package/node/Forms/Password/Password.js +34 -0
- package/node/Forms/Password/index.js +4 -0
- package/node/Forms/Radio/Radio.js +32 -0
- package/node/Forms/Radio/index.js +4 -0
- package/node/Forms/Switch/Switch.js +54 -0
- package/node/Forms/Switch/index.js +4 -0
- package/node/Forms/Textarea/Textarea.js +17 -0
- package/node/Forms/Textarea/TextareaRich.js +46 -0
- package/node/Forms/Textarea/index.js +5 -0
- package/node/Forms/Toggle/Toggle.js +85 -0
- package/node/Forms/Toggle/index.js +4 -0
- package/node/Forms/Toggle/useToggle.js +149 -0
- package/node/Forms/antispam.js +61 -0
- package/node/Forms/helpers.js +51 -0
- package/node/Forms/index.js +20 -0
- package/node/Forms/styles.js +64 -0
- package/node/Gauge/Gauge.js +106 -0
- package/node/Grid/Grid.js +83 -0
- package/node/Grid/index.js +4 -0
- package/node/Hamburger/Hamburger.js +69 -0
- package/node/Hamburger/index.js +4 -0
- package/node/Header/index.js +4 -0
- package/node/Header/useHeader.js +34 -0
- package/node/Hidden/Hidden.js +18 -0
- package/node/Hidden/index.js +4 -0
- package/node/Img/index.js +4 -0
- package/node/Img/sc/bare.js +41 -0
- package/node/Img/types.js +2 -0
- package/node/Link/Link.js +6 -0
- package/node/Link/LinkBlank.js +31 -0
- package/node/Link/index.js +5 -0
- package/node/Menu/Menu.js +15 -0
- package/node/Menu/index.js +4 -0
- package/node/MenuItem/MenuItem.js +24 -0
- package/node/MenuItem/index.js +4 -0
- package/node/Meta/Meta.js +8 -0
- package/node/Meta/index.js +4 -0
- package/node/NoJs/NoJs.js +10 -0
- package/node/NoJs/index.js +4 -0
- package/node/Pagination/PaginationNav.js +88 -0
- package/node/Pagination/PaginationResults.js +15 -0
- package/node/Pagination/index.js +5 -0
- package/node/Pill/Pill.js +41 -0
- package/node/Pill/index.js +4 -0
- package/node/Progress/ProgressCircular.js +41 -0
- package/node/Progress/ProgressLinear.js +37 -0
- package/node/Progress/ProgressOverlay.js +45 -0
- package/node/Progress/index.js +6 -0
- package/node/Rating/Rating.js +96 -0
- package/node/Rating/index.js +53 -0
- package/node/Select/SelectDownshift.js +41 -0
- package/node/Select/components.js +22 -0
- package/node/Select/index.js +7 -0
- package/node/Sidebar/Sidebar.js +53 -0
- package/node/Sidebar/index.js +4 -0
- package/node/Spacing/Spacing.js +50 -0
- package/node/Spacing/index.js +4 -0
- package/node/Sticky/Sticky.js +222 -0
- package/node/Sticky/StickyCss.js +8 -0
- package/node/Sticky/index.js +4 -0
- package/node/Tabs/Tabs.js +67 -0
- package/node/Tabs/index.js +4 -0
- package/node/Typography/CopyPasteVisible.js +10 -0
- package/node/Typography/Native.js +51 -0
- package/node/Typography/ReadMore.js +74 -0
- package/node/Typography/TextLoop.js +54 -0
- package/node/Typography/TypeStairs.js +49 -0
- package/node/Typography/index.js +8 -0
- package/node/css/index.js +35 -0
- package/node/helpers/classed.js +68 -0
- package/node/helpers/extend-component.js +16 -0
- package/node/helpers/index.js +5 -0
- package/node/hooks/index.js +10 -0
- package/node/hooks/useDateLocale.js +56 -0
- package/node/hooks/useFocus.js +15 -0
- package/node/hooks/usePrevious.js +12 -0
- package/node/hooks/useScrollPosition.js +80 -0
- package/node/hooks/useScrollTo.js +23 -0
- package/node/hooks/useTraceUpdate.js +24 -0
- package/node/hooks/useWindowSize.js +17 -0
- package/node/index.js +8 -0
- package/node/m/MotionProvider.js +41 -0
- package/node/m/index.js +9 -0
- package/node/m/lite.js +4 -0
- package/node/m/max.js +4 -0
- package/node/sc/index.js +35 -0
- package/node/scm/index.js +35 -0
- package/node/shared/index.js +11 -0
- package/node/styles/Body.js +21 -0
- package/node/styles/Global.js +53 -0
- package/node/styles/index.js +10 -0
- package/node/styles/media.js +156 -0
- package/node/styles/spacing.js +53 -0
- package/node/styles/styled.js +31 -0
- package/node/styles/theme--vanilla.js +59 -0
- package/node/styles/theme.js +45 -0
- package/node/tw/index.js +35 -0
- package/node/twm/index.js +35 -0
- package/node/types.js +2 -0
- package/package.json +9 -22
- package/sc/index.d.ts +29 -0
- package/sc/index.js +30 -0
- package/sc/package.json +6 -0
- package/scm/index.d.ts +29 -0
- package/scm/index.js +30 -0
- package/scm/package.json +6 -0
- package/shared/index.d.ts +8 -0
- package/shared/index.js +8 -0
- package/shared/package.json +6 -0
- package/styles/Body.d.ts +10 -10
- package/styles/Body.js +17 -0
- package/styles/Global.d.ts +15 -15
- package/styles/Global.js +50 -0
- package/styles/index.d.ts +7 -7
- package/styles/index.js +7 -0
- package/styles/media.d.ts +67 -67
- package/styles/media.js +150 -0
- package/styles/package.json +6 -0
- package/styles/spacing.d.ts +13 -13
- package/styles/spacing.js +46 -0
- package/styles/styled.d.ts +12 -12
- package/styles/styled.js +27 -0
- package/styles/theme--vanilla.d.ts +18 -18
- package/styles/theme--vanilla.js +53 -0
- package/styles/theme.d.ts +82 -89
- package/styles/theme.js +41 -0
- package/tw/index.d.ts +2 -0
- package/tw/index.js +30 -0
- package/tw/package.json +6 -0
- package/twm/index.d.ts +2 -0
- package/twm/index.js +30 -0
- package/twm/package.json +6 -0
- package/types.d.ts +10 -11
- package/types.js +1 -0
- package/typings.d.ts +21 -0
- package/Dialog/Dialog.d.ts +0 -23
- package/Img/Img.d.ts +0 -11
- package/index.esm.js +0 -9456
- package/index.umd.js +0 -9667
- package/styles/classed.d.ts +0 -4
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useRef, useMemo } from "react";
|
|
3
|
+
import styled from "styled-components";
|
|
4
|
+
import { useIsomorphicLayoutEffect } from "react-use";
|
|
5
|
+
import { m, useSpring } from "framer-motion";
|
|
6
|
+
// import { CgArrowsExpandDownRight as IconExpand } from "react-icons/cg";
|
|
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 ? { height, overflow: "hidden" } : {}), [exceeds, height]);
|
|
51
|
+
const handleExpandClick = () => {
|
|
52
|
+
setExpanded((prevExpanded) => !prevExpanded);
|
|
53
|
+
};
|
|
54
|
+
useIsomorphicLayoutEffect(() => {
|
|
55
|
+
if (content.current) {
|
|
56
|
+
const elementHeight = content.current.offsetHeight;
|
|
57
|
+
const newExceeds = elementHeight > maxHeight;
|
|
58
|
+
if (!newExceeds) {
|
|
59
|
+
setMaxHeight(elementHeight);
|
|
60
|
+
}
|
|
61
|
+
setExceeds(newExceeds);
|
|
62
|
+
setFullHeight(elementHeight);
|
|
63
|
+
}
|
|
64
|
+
}, [content, maxHeight]);
|
|
65
|
+
useIsomorphicLayoutEffect(() => {
|
|
66
|
+
height.set(expanded ? fullHeight : maxHeight);
|
|
67
|
+
}, [expanded, height, fullHeight, maxHeight]);
|
|
68
|
+
return (_jsxs(Root, { children: [_jsx(m.div, { style: styles, children: _jsx(Content, { ref: content, ...props }) }), exceeds && (_jsxs(BtnWrap, { "$expanded": expanded, children: [_jsx(BtnFader, { "$bg": bg }), _jsxs(Btn, { "$fontSize": fontSize, "$lineHeight": lineHeight, onClick: handleExpandClick, "aria-expanded": expanded, "aria-label": expanded ? collapse : expand, children: [expanded ? collapse : expand, _jsx(BtnIcon, { "$expanded": expanded })] })] }))] }));
|
|
69
|
+
};
|
package/Typography/TextLoop.d.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
export declare type TextLoopPieceProps = {
|
|
3
|
-
text: string | number;
|
|
4
|
-
direction?: "up" | "down";
|
|
5
|
-
inline?: boolean;
|
|
6
|
-
noOverflow?: boolean;
|
|
7
|
-
delay?: number;
|
|
8
|
-
className?: string;
|
|
9
|
-
style?: React.CSSProperties;
|
|
10
|
-
}
|
|
11
|
-
export declare const TextLoopPiece:
|
|
12
|
-
export declare type TextLoopPrpps = Omit<TextLoopPieceProps, "text"> & {
|
|
13
|
-
texts: string[];
|
|
14
|
-
interval?: number;
|
|
15
|
-
};
|
|
16
|
-
export declare const TextLoop: ({ texts, interval, ...props }: TextLoopPrpps) => JSX.Element;
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare type TextLoopPieceProps = React.PropsWithChildren<{
|
|
3
|
+
text: string | number;
|
|
4
|
+
direction?: "up" | "down";
|
|
5
|
+
inline?: boolean;
|
|
6
|
+
noOverflow?: boolean;
|
|
7
|
+
delay?: number;
|
|
8
|
+
className?: string;
|
|
9
|
+
style?: React.CSSProperties;
|
|
10
|
+
}>;
|
|
11
|
+
export declare const TextLoopPiece: ({ text, style, className, direction, inline, noOverflow, delay, }: TextLoopPieceProps) => JSX.Element;
|
|
12
|
+
export declare type TextLoopPrpps = Omit<TextLoopPieceProps, "text"> & {
|
|
13
|
+
texts: string[];
|
|
14
|
+
interval?: number;
|
|
15
|
+
};
|
|
16
|
+
export declare const TextLoop: ({ texts, interval, ...props }: TextLoopPrpps) => JSX.Element;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef, useState } from "react";
|
|
3
|
+
import { m, AnimatePresence } from "framer-motion";
|
|
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({ data: "", key: "" });
|
|
7
|
+
const [width, setWidth] = useState(inline ? 0 : "auto");
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
const timeoutId = setTimeout(() => {
|
|
10
|
+
if (!placeholderRef.current)
|
|
11
|
+
return;
|
|
12
|
+
placeholderRef.current.innerHTML = text + "";
|
|
13
|
+
if (inline)
|
|
14
|
+
setWidth(placeholderRef.current.offsetWidth);
|
|
15
|
+
setContent({ data: text + "", key: new Date() + "" });
|
|
16
|
+
}, delay);
|
|
17
|
+
return () => clearTimeout(timeoutId);
|
|
18
|
+
}, [text, delay, inline]);
|
|
19
|
+
return (_jsxs("div", { className: className, style: {
|
|
20
|
+
...style,
|
|
21
|
+
position: "relative",
|
|
22
|
+
display: inline ? "inline-block" : "block",
|
|
23
|
+
width,
|
|
24
|
+
whiteSpace: inline ? "nowrap" : "normal",
|
|
25
|
+
}, children: [_jsx("span", { ref: placeholderRef, style: { visibility: "hidden" } }), _jsx("div", { style: {
|
|
26
|
+
overflow: noOverflow ? "hidden" : "visible",
|
|
27
|
+
display: "block",
|
|
28
|
+
position: "absolute",
|
|
29
|
+
top: 0,
|
|
30
|
+
left: 0,
|
|
31
|
+
height: "100%",
|
|
32
|
+
width: "100%",
|
|
33
|
+
}, children: _jsx(AnimatePresence, { children: _jsx(m.div, { style: { position: "absolute" }, initial: {
|
|
34
|
+
opacity: 0,
|
|
35
|
+
y: direction === "down" ? "-100%" : "100%",
|
|
36
|
+
}, animate: { opacity: 1, y: 0 }, exit: {
|
|
37
|
+
opacity: 0,
|
|
38
|
+
y: direction === "down" ? "100%" : "-100%",
|
|
39
|
+
}, children: content.data }, content.key) }) })] }));
|
|
40
|
+
};
|
|
41
|
+
export const TextLoop = ({ texts, interval = 3000, ...props }) => {
|
|
42
|
+
const [index, setIndex] = useState(0);
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
const intervalId = setInterval(() => setIndex((index) => index + 1), interval // every 3 seconds
|
|
45
|
+
);
|
|
46
|
+
return () => clearTimeout(intervalId);
|
|
47
|
+
}, [interval]);
|
|
48
|
+
return _jsx(TextLoopPiece, { ...props, text: texts[index % texts.length] });
|
|
49
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
export declare type TypeStairsProps = {
|
|
3
|
-
children: string;
|
|
4
|
-
limit?: number;
|
|
5
|
-
};
|
|
6
|
-
export declare const TypeStairs: import("react").ForwardRefExoticComponent<TypeStairsProps & import("react").RefAttributes<unknown>>;
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare type TypeStairsProps = {
|
|
3
|
+
children: string;
|
|
4
|
+
limit?: number;
|
|
5
|
+
};
|
|
6
|
+
export declare const TypeStairs: import("react").ForwardRefExoticComponent<TypeStairsProps & import("react").RefAttributes<unknown>>;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef } from "react";
|
|
3
|
+
export const TypeStairs = forwardRef(({ children, limit }, ref) => {
|
|
4
|
+
// split in rows or just use one row if there is no limit
|
|
5
|
+
const rows = limit ? splitTextIntoRows(children, limit) : [children];
|
|
6
|
+
return rows.length > 1 ? (_jsx(_Fragment, { children: rows.map((row, rowIndex) => {
|
|
7
|
+
return (_jsxs("span", { children: [renderRow(row, rowIndex, ref), rowIndex !== rows.length - 1 && _jsx("br", {})] }, `row-${rowIndex}`));
|
|
8
|
+
}) })) : (renderRow(rows[0], 0, ref));
|
|
9
|
+
});
|
|
10
|
+
/**
|
|
11
|
+
* every number chars find a space and break, then restart the gradient weight
|
|
12
|
+
* @see https://stackoverflow.com/a/25770787
|
|
13
|
+
*/
|
|
14
|
+
function splitTextIntoRows(input = "", limit = 18) {
|
|
15
|
+
const rows = [];
|
|
16
|
+
const arr = input.split(" ");
|
|
17
|
+
let currow = arr[0];
|
|
18
|
+
let rowlen = currow.length;
|
|
19
|
+
for (let i = 1; i < arr.length; i++) {
|
|
20
|
+
const word = arr[i];
|
|
21
|
+
rowlen += word.length + 1;
|
|
22
|
+
if (rowlen <= limit) {
|
|
23
|
+
currow += " " + word;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
rows.push(currow);
|
|
27
|
+
currow = word;
|
|
28
|
+
rowlen = word.length;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
rows.push(currow);
|
|
32
|
+
return rows;
|
|
33
|
+
}
|
|
34
|
+
function renderRow(row, rowIndex, ref) {
|
|
35
|
+
const letters = row.split("");
|
|
36
|
+
let fontWeightIdx = 1;
|
|
37
|
+
// const fontWeight = Math.min(fontWeightIdx * 100, 800);
|
|
38
|
+
return (_jsx(_Fragment, { children: letters.map((letter, letterIndex) => {
|
|
39
|
+
const fontWeight = Math.min(fontWeightIdx * 100, 800);
|
|
40
|
+
// don't waste a fontWeight for a white space
|
|
41
|
+
if (letter !== " ") {
|
|
42
|
+
fontWeightIdx++;
|
|
43
|
+
}
|
|
44
|
+
return (_jsx("span", { style: { fontWeight }, ref: ref, children: letter }, `letter-${rowIndex}-${letterIndex}`));
|
|
45
|
+
}) }));
|
|
46
|
+
}
|
package/Typography/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export * from "./CopyPasteVisible";
|
|
2
|
-
export * from "./Native";
|
|
3
|
-
export * from "./ReadMore";
|
|
4
|
-
export * from "./TextLoop";
|
|
5
|
-
export * from "./TypeStairs";
|
|
1
|
+
export * from "./CopyPasteVisible";
|
|
2
|
+
export * from "./Native";
|
|
3
|
+
export * from "./ReadMore";
|
|
4
|
+
export * from "./TextLoop";
|
|
5
|
+
export * from "./TypeStairs";
|
package/css/index.d.ts
ADDED
package/css/index.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export * from "../shared";
|
|
2
|
+
// export * from "../Alert";
|
|
3
|
+
// export * from "../Animations";
|
|
4
|
+
// export * from "../Autocomplete";
|
|
5
|
+
// export * from "../Bg";
|
|
6
|
+
// export * from "../Breadcrumbs";
|
|
7
|
+
// export * from "../Buttons";
|
|
8
|
+
// export * from "../Carousel";
|
|
9
|
+
// export * from "../Collapsable";
|
|
10
|
+
// export * from "../Debug";
|
|
11
|
+
export { KoineDialog } from "../Dialog/css/bare";
|
|
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/css/package.json
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
declare type ClassedAugmentedProps<Props> = Props & {
|
|
3
|
+
className?: string;
|
|
4
|
+
ref?: React.Ref<any>;
|
|
5
|
+
};
|
|
6
|
+
declare type ClassedFinalProps<Props, Component> = Component extends React.ReactHTML ? React.HTMLProps<Component> & ClassedAugmentedProps<Props> : ClassedAugmentedProps<Props>;
|
|
7
|
+
/**
|
|
8
|
+
* This utility allows to extend a component a là `styled-components` but for
|
|
9
|
+
* a className based styling solution like Tailwind,
|
|
10
|
+
*
|
|
11
|
+
* It also plays nicely with tailwind intellisense @see:
|
|
12
|
+
*
|
|
13
|
+
* - https://github.com/tailwindlabs/tailwindcss-intellisense#tailwindcssclassattributes
|
|
14
|
+
*
|
|
15
|
+
* For references about tagged functions:
|
|
16
|
+
* - https://javascript.plainenglish.io/how-css-in-js-libraries-work-da4145b1b6c7
|
|
17
|
+
* - https://makersden.io/blog/reverse-engineering-styled-components
|
|
18
|
+
* - https://typesafe.blog/article/the-logic-behind-javascript-tag-functions
|
|
19
|
+
* - https://flaming.codes/posts/typescript-and-javascript-tagged-template-strings
|
|
20
|
+
*/
|
|
21
|
+
export declare function classed<Props, Component extends React.ElementType = any>(component: Component): (strings: TemplateStringsArray, ...args: string[] | ((props: Props) => string)[]) => React.ForwardRefExoticComponent<React.PropsWithoutRef<ClassedFinalProps<Props, Component>> & React.RefAttributes<Component>>;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { createElement, forwardRef } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* This utility allows to extend a component a là `styled-components` but for
|
|
4
|
+
* a className based styling solution like Tailwind,
|
|
5
|
+
*
|
|
6
|
+
* It also plays nicely with tailwind intellisense @see:
|
|
7
|
+
*
|
|
8
|
+
* - https://github.com/tailwindlabs/tailwindcss-intellisense#tailwindcssclassattributes
|
|
9
|
+
*
|
|
10
|
+
* For references about tagged functions:
|
|
11
|
+
* - https://javascript.plainenglish.io/how-css-in-js-libraries-work-da4145b1b6c7
|
|
12
|
+
* - https://makersden.io/blog/reverse-engineering-styled-components
|
|
13
|
+
* - https://typesafe.blog/article/the-logic-behind-javascript-tag-functions
|
|
14
|
+
* - https://flaming.codes/posts/typescript-and-javascript-tagged-template-strings
|
|
15
|
+
*/
|
|
16
|
+
export function classed(component) {
|
|
17
|
+
// @ts-expect-error nevermind for now...
|
|
18
|
+
const type = component.type || component;
|
|
19
|
+
return function (strings, ...args) {
|
|
20
|
+
const WrappedComponent = forwardRef(function (props, ref) {
|
|
21
|
+
const argResolved = args
|
|
22
|
+
.map((arg, index) => {
|
|
23
|
+
let result = "";
|
|
24
|
+
if (typeof arg === "function") {
|
|
25
|
+
result = arg(props);
|
|
26
|
+
}
|
|
27
|
+
else if (typeof arg !== "undefined") {
|
|
28
|
+
result = arg.toString();
|
|
29
|
+
}
|
|
30
|
+
return strings[index] + result;
|
|
31
|
+
})
|
|
32
|
+
.join("");
|
|
33
|
+
const isNativeHtmlElement = typeof type === "string";
|
|
34
|
+
const propsToForward = isNativeHtmlElement
|
|
35
|
+
? {}
|
|
36
|
+
: props;
|
|
37
|
+
if (isNativeHtmlElement) {
|
|
38
|
+
for (const key in props) {
|
|
39
|
+
// like styled-components `transient` props
|
|
40
|
+
if (!key.startsWith("$")) {
|
|
41
|
+
propsToForward[key] = props[key];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// get the tagged function string outcome
|
|
46
|
+
let className = argResolved || strings[0];
|
|
47
|
+
// check if we need to clean it or not from the optional structure `< class="..."`
|
|
48
|
+
className = className.match(/class="([^"]*)/)?.[1] || className;
|
|
49
|
+
// add the custom classes from props
|
|
50
|
+
className += props?.className ? " " + props?.className : "";
|
|
51
|
+
return createElement(type, {
|
|
52
|
+
// ...props,
|
|
53
|
+
...propsToForward,
|
|
54
|
+
// only add ot props if it is not an empty string
|
|
55
|
+
className: className || undefined,
|
|
56
|
+
// add ref to props
|
|
57
|
+
ref,
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
// FIXME: not sure if this is needed
|
|
61
|
+
// WrappedComponent.displayName = type.toString();
|
|
62
|
+
return WrappedComponent; // as unknown as React.ReactElement<typeof props>;
|
|
63
|
+
};
|
|
64
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export declare type ExtendableComponent<Props = any> = React.ForwardRefExoticComponent<Props> | React.ExoticComponent<Props> | React.FC<Props> | ((props: Props) => JSX.Element);
|
|
3
|
+
export declare const extendComponent: <Component extends ExtendableComponent<any>, DefaultProps extends {}>(component: Component, defaultProps: DefaultProps) => ((props: React.ComponentProps<Component>) => React.FunctionComponentElement<any>) & DefaultProps & {
|
|
4
|
+
defaultProps: DefaultProps;
|
|
5
|
+
};
|
|
6
|
+
export interface OverridableComponents {
|
|
7
|
+
[key: string]: {
|
|
8
|
+
type: React.ElementType;
|
|
9
|
+
props: any;
|
|
10
|
+
motionable?: boolean;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Type to define a component that has overridable components.
|
|
15
|
+
*
|
|
16
|
+
* Each of them can define its:
|
|
17
|
+
* - `type`: either as a native HTMLElement (the props for that element will be
|
|
18
|
+
* automatically inferred) or as a custom React component
|
|
19
|
+
* - `props`: any additional custom props
|
|
20
|
+
* - `motionable`: if that component has a possible implementation with `framer-motion`,
|
|
21
|
+
* in that case we remove some HTMLAttributes props which collides with
|
|
22
|
+
* `MotionProps` from framer.
|
|
23
|
+
*/
|
|
24
|
+
export declare type WithComponents<Props, Components extends OverridableComponents> = Props & {
|
|
25
|
+
[Name in keyof Components]: NonNullable<Components[Name]["type"] extends keyof JSX.IntrinsicElements ? React.ElementType<Components[Name]["motionable"] extends true ? Omit<React.ComponentPropsWithoutRef<Components[Name]["type"]>, HtmlAttributesCollidingWithMotionProps> & Components[Name]["props"] : React.ComponentPropsWithoutRef<Components[Name]["type"]> & Components[Name]["props"]> : Components[Name]["type"]>;
|
|
26
|
+
};
|
|
27
|
+
declare type HtmlAttributesCollidingWithMotionProps = "style" | "onDrag" | "onDragStart" | "onDragEnd" | "onAnimationStart" | "onAnimationEnd";
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { createElement } from "react";
|
|
2
|
+
export const extendComponent = (component, defaultProps) => {
|
|
3
|
+
// FIXME: check if we need to forwardRef or not
|
|
4
|
+
const NewComponent = (props) => createElement(component, props);
|
|
5
|
+
// const NewComponent = forwardRef<React.ComponentProps<Component>, Component>(
|
|
6
|
+
// (props, ref) => createElement(component, { ...props, ref })
|
|
7
|
+
// );
|
|
8
|
+
return Object.assign(NewComponent, {
|
|
9
|
+
...defaultProps,
|
|
10
|
+
defaultProps,
|
|
11
|
+
});
|
|
12
|
+
};
|
package/helpers/index.d.ts
CHANGED
package/helpers/index.js
ADDED
package/hooks/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export * from "./
|
|
2
|
-
export * from "./
|
|
3
|
-
export * from "./
|
|
4
|
-
export * from "./
|
|
5
|
-
export * from "./
|
|
1
|
+
export * from "./useDateLocale";
|
|
2
|
+
export * from "./useFocus";
|
|
3
|
+
export * from "./usePrevious";
|
|
4
|
+
export * from "./useScrollPosition";
|
|
5
|
+
export * from "./useTraceUpdate";
|
|
6
|
+
export * from "./useWindowSize";
|
package/hooks/index.js
ADDED
package/hooks/useDateLocale.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Dynamically import the date-fns correct locale
|
|
3
|
-
*
|
|
4
|
-
* Inspired by:
|
|
5
|
-
* @see https://robertmarshall.dev/blog/dynamically-import-datefns-locale-mui-datepicker-localization/
|
|
6
|
-
*/
|
|
7
|
-
export declare function useDateLocale(locale?: string, defaultLocale?: string): globalThis.Locale | undefined;
|
|
1
|
+
/**
|
|
2
|
+
* Dynamically import the date-fns correct locale
|
|
3
|
+
*
|
|
4
|
+
* Inspired by:
|
|
5
|
+
* @see https://robertmarshall.dev/blog/dynamically-import-datefns-locale-mui-datepicker-localization/
|
|
6
|
+
*/
|
|
7
|
+
export declare function useDateLocale(locale?: string, defaultLocale?: string): globalThis.Locale | undefined;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { useEffect, useState } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Dynamically import the date-fns correct locale
|
|
4
|
+
*
|
|
5
|
+
* Inspired by:
|
|
6
|
+
* @see https://robertmarshall.dev/blog/dynamically-import-datefns-locale-mui-datepicker-localization/
|
|
7
|
+
*/
|
|
8
|
+
export function useDateLocale(locale, defaultLocale = "en") {
|
|
9
|
+
const [data, setData] = useState();
|
|
10
|
+
const [current, setCurrent] = useState(defaultLocale);
|
|
11
|
+
// const [ready, setReady] = useState(false);
|
|
12
|
+
// If the user changes the locale listen to the change and import the locale that is now required.
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
const importLocaleFile = async () => {
|
|
15
|
+
// This webpack option stops all of the date-fns files being imported and chunked.
|
|
16
|
+
const localeToSet = await import(
|
|
17
|
+
/* webpackMode: "lazy", webpackChunkName: "df-[index]", webpackExclude: /_lib/ */
|
|
18
|
+
`date-fns/locale/${locale}/index.js`);
|
|
19
|
+
setCurrent(locale || current);
|
|
20
|
+
setData(localeToSet.default);
|
|
21
|
+
// setReady(true);
|
|
22
|
+
};
|
|
23
|
+
// If the locale has not yet been loaded.
|
|
24
|
+
if (locale !== current) {
|
|
25
|
+
importLocaleFile();
|
|
26
|
+
}
|
|
27
|
+
}, [locale, current]);
|
|
28
|
+
return data;
|
|
29
|
+
}
|
package/hooks/useFocus.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export declare const useFocus: () => (import("react").RefObject<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement> | (() => void))[];
|
|
1
|
+
/**
|
|
2
|
+
* @see https://stackoverflow.com/a/54159564/1938970
|
|
3
|
+
*/
|
|
4
|
+
export declare const useFocus: () => (import("react").RefObject<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement> | (() => void))[];
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { useRef } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* @see https://stackoverflow.com/a/54159564/1938970
|
|
4
|
+
*/
|
|
5
|
+
export const useFocus = () => {
|
|
6
|
+
const element = useRef(null);
|
|
7
|
+
const setFocus = () => {
|
|
8
|
+
element.current && element.current.focus();
|
|
9
|
+
};
|
|
10
|
+
return [element, setFocus];
|
|
11
|
+
};
|
package/hooks/usePrevious.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function usePrevious<T>(value: T): T | undefined;
|
|
1
|
+
export declare function usePrevious<T>(value: T): T | undefined;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
declare type Position = {
|
|
3
|
+
x: number;
|
|
4
|
+
y: number;
|
|
5
|
+
};
|
|
6
|
+
declare type ElementRef = React.MutableRefObject<HTMLElement | undefined>;
|
|
7
|
+
/**
|
|
8
|
+
* @borrows [@n8tb1t/use-scroll-position@2.0.3](https://github.com/n8tb1t/use-scroll-position) by `n8tb1t <n8tb1t@gmail.com>`
|
|
9
|
+
*
|
|
10
|
+
* We've just:
|
|
11
|
+
* - reused internal helper functions
|
|
12
|
+
* - compacted object arguments in functions as plain argument list to improve compression
|
|
13
|
+
*/
|
|
14
|
+
export declare const useScrollPosition: (effect: (currentPosition: Position, prevPosition: Position) => void, deps?: import("react").DependencyList, element?: ElementRef | undefined, useWindow?: boolean | undefined, wait?: number | undefined, boundingElement?: ElementRef | undefined) => void;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { useRef } from "react";
|
|
2
|
+
import useIsomorphicLayoutEffect from "react-use/esm/useIsomorphicLayoutEffect";
|
|
3
|
+
import { isBrowser } from "@koine/utils";
|
|
4
|
+
const zeroPosition = { x: 0, y: 0 };
|
|
5
|
+
const getClientRect = (element) => element?.getBoundingClientRect();
|
|
6
|
+
const getScrollPosition = (element, useWindow, boundingElement) => {
|
|
7
|
+
if (!isBrowser) {
|
|
8
|
+
return zeroPosition;
|
|
9
|
+
}
|
|
10
|
+
if (useWindow) {
|
|
11
|
+
return { x: window.scrollX, y: window.scrollY };
|
|
12
|
+
}
|
|
13
|
+
const targetPosition = getClientRect(element?.current || document.body);
|
|
14
|
+
const containerPosition = getClientRect(boundingElement?.current);
|
|
15
|
+
if (!targetPosition) {
|
|
16
|
+
return zeroPosition;
|
|
17
|
+
}
|
|
18
|
+
return containerPosition
|
|
19
|
+
? {
|
|
20
|
+
x: (containerPosition.x || 0) - (targetPosition.x || 0),
|
|
21
|
+
y: (containerPosition.y || 0) - (targetPosition.y || 0),
|
|
22
|
+
}
|
|
23
|
+
: { x: targetPosition.left, y: targetPosition.top };
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* @borrows [@n8tb1t/use-scroll-position@2.0.3](https://github.com/n8tb1t/use-scroll-position) by `n8tb1t <n8tb1t@gmail.com>`
|
|
27
|
+
*
|
|
28
|
+
* We've just:
|
|
29
|
+
* - reused internal helper functions
|
|
30
|
+
* - compacted object arguments in functions as plain argument list to improve compression
|
|
31
|
+
*/
|
|
32
|
+
export const useScrollPosition = (effect, deps = [], element, useWindow, wait, boundingElement) => {
|
|
33
|
+
const position = useRef(getScrollPosition(null, useWindow, boundingElement));
|
|
34
|
+
let throttleTimeout = null;
|
|
35
|
+
const callBack = () => {
|
|
36
|
+
const current = getScrollPosition(element, useWindow, boundingElement);
|
|
37
|
+
effect(current, position.current);
|
|
38
|
+
position.current = current;
|
|
39
|
+
throttleTimeout = null;
|
|
40
|
+
};
|
|
41
|
+
useIsomorphicLayoutEffect(() => {
|
|
42
|
+
if (!isBrowser) {
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
const handleScroll = () => {
|
|
46
|
+
if (wait) {
|
|
47
|
+
if (throttleTimeout === null) {
|
|
48
|
+
throttleTimeout = window.setTimeout(callBack, wait);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
callBack();
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
if (boundingElement) {
|
|
56
|
+
boundingElement.current?.addEventListener("scroll", handleScroll, {
|
|
57
|
+
passive: true,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
window.addEventListener("scroll", handleScroll, { passive: true });
|
|
62
|
+
}
|
|
63
|
+
return () => {
|
|
64
|
+
if (boundingElement) {
|
|
65
|
+
boundingElement.current?.removeEventListener("scroll", handleScroll);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
window.removeEventListener("scroll", handleScroll);
|
|
69
|
+
}
|
|
70
|
+
if (throttleTimeout) {
|
|
71
|
+
clearTimeout(throttleTimeout);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
}, deps);
|
|
75
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function useScrollTo(id?: string, offset?: number): void;
|