@koine/react 1.0.10 → 1.0.13
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 -0
- package/Alert/Alert.js +10 -0
- package/Alert/index.d.ts +1 -0
- package/Alert/index.js +1 -0
- package/Alert/package.json +6 -0
- package/Animations/Reveal.d.ts +4 -0
- package/Animations/Reveal.js +17 -0
- package/Animations/Underline.d.ts +1 -0
- package/Animations/Underline.js +5 -0
- package/Animations/index.d.ts +3 -0
- package/Animations/index.js +3 -0
- package/Animations/package.json +6 -0
- package/Animations/useReveal.d.ts +33 -0
- package/Animations/useReveal.js +71 -0
- package/Autocomplete/AutocompleteDownshift.d.ts +1 -0
- package/Autocomplete/AutocompleteDownshift.js +158 -0
- package/Autocomplete/AutocompleteDownshiftMultiselect.d.ts +1 -0
- package/Autocomplete/AutocompleteDownshiftMultiselect.js +353 -0
- package/Autocomplete/AutocompleteMui.d.ts +47 -0
- package/Autocomplete/AutocompleteMui.js +182 -0
- package/Autocomplete/AutocompleteReach.d.ts +1 -0
- package/Autocomplete/AutocompleteReach.js +112 -0
- package/Autocomplete/components.d.ts +21 -0
- package/Autocomplete/components.js +34 -0
- package/Autocomplete/helpers.d.ts +3 -0
- package/Autocomplete/helpers.js +28 -0
- package/Autocomplete/index.d.ts +2 -0
- package/Autocomplete/index.js +3 -0
- package/Autocomplete/package.json +6 -0
- package/Bg/BgColor.d.ts +36 -0
- package/Bg/BgColor.js +21 -0
- package/Bg/BgPhoto.d.ts +13 -0
- package/Bg/BgPhoto.js +16 -0
- package/Bg/BgSvg.d.ts +7 -0
- package/Bg/BgSvg.js +12 -0
- package/Bg/index.d.ts +3 -0
- package/Bg/index.js +3 -0
- package/Bg/package.json +6 -0
- package/Breadcrumbs/Breadcrumbs.d.ts +13 -0
- package/Breadcrumbs/Breadcrumbs.js +27 -0
- package/Breadcrumbs/index.d.ts +1 -0
- package/Breadcrumbs/index.js +1 -0
- package/Breadcrumbs/package.json +6 -0
- package/Buttons/Button.d.ts +18 -0
- package/Buttons/Button.js +14 -0
- package/Buttons/ButtonComposite.d.ts +23 -0
- package/Buttons/ButtonComposite.js +28 -0
- package/Buttons/ButtonFab.d.ts +7 -0
- package/Buttons/ButtonFab.js +6 -0
- package/Buttons/ButtonLink.d.ts +8 -0
- package/Buttons/ButtonLink.js +11 -0
- package/Buttons/IconButton.d.ts +11 -0
- package/Buttons/IconButton.js +7 -0
- package/Buttons/index.d.ts +5 -0
- package/Buttons/index.js +5 -0
- package/Buttons/package.json +6 -0
- package/Calendar/CalendarDaygridCell.d.ts +36 -0
- package/Calendar/CalendarDaygridCell.js +57 -0
- package/Calendar/CalendarDaygridNav.d.ts +27 -0
- package/Calendar/CalendarDaygridNav.js +23 -0
- package/Calendar/CalendarDaygridTable.d.ts +25 -0
- package/Calendar/CalendarDaygridTable.js +57 -0
- package/Calendar/CalendarLegend.d.ts +19 -0
- package/Calendar/CalendarLegend.js +16 -0
- package/Calendar/calendar-api-google.d.ts +18 -0
- package/Calendar/calendar-api-google.js +127 -0
- package/Calendar/index.d.ts +6 -0
- package/Calendar/index.js +6 -0
- package/Calendar/package.json +6 -0
- package/Calendar/types.d.ts +81 -0
- package/Calendar/types.js +1 -0
- package/Calendar/useCalendar.d.ts +49 -0
- package/Calendar/useCalendar.js +183 -0
- package/Calendar/utils.d.ts +11 -0
- package/Calendar/utils.js +202 -0
- package/Carousel/Carousel.d.ts +1 -0
- package/Carousel/Carousel.js +378 -0
- package/Carousel/CarouselCss.d.ts +47 -0
- package/Carousel/CarouselCss.js +23 -0
- package/Carousel/index.d.ts +1 -0
- package/Carousel/index.js +1 -0
- package/Carousel/package.json +6 -0
- package/Collapsable/Collapsable.d.ts +1 -0
- package/Collapsable/Collapsable.js +1 -0
- package/Collapsable/CollapsableReach.d.ts +6 -0
- package/Collapsable/CollapsableReach.js +253 -0
- package/Collapsable/index.d.ts +1 -0
- package/Collapsable/index.js +2 -0
- package/Collapsable/package.json +6 -0
- package/Debug/Debug.d.ts +4 -0
- package/Debug/Debug.js +9 -0
- package/Debug/index.d.ts +1 -0
- package/Debug/index.js +1 -0
- package/Debug/package.json +6 -0
- package/Details/Details.d.ts +114 -0
- package/Details/Details.js +65 -0
- package/Details/index.d.ts +1 -0
- package/Details/index.js +1 -0
- package/Details/package.json +6 -0
- package/Dialog/DialogMui.d.ts +139 -0
- package/Dialog/DialogMui.js +80 -0
- package/Dialog/css/bare.d.ts +145 -0
- package/Dialog/css/bare.js +21 -0
- package/Dialog/index.d.ts +2 -0
- package/Dialog/index.js +1 -0
- package/Dialog/m/bare.d.ts +56 -0
- package/Dialog/m/bare.js +52 -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 +43 -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 +21 -0
- package/Dialog/tw/bare.d.ts +196 -0
- package/Dialog/tw/bare.js +42 -0
- package/Dialog/tw/elegant.d.ts +244 -0
- package/Dialog/tw/elegant.js +20 -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 +20 -0
- package/Editor/Editor--tiptap.d.ts +9 -0
- package/Editor/Editor--tiptap.js +26 -0
- package/Editor/components.d.ts +7 -0
- package/Editor/components.js +10 -0
- package/Editor/index.d.ts +1 -0
- package/Editor/index.js +1 -0
- package/Editor/package.json +6 -0
- package/Favicon/FaviconTags.d.ts +18 -0
- package/Favicon/FaviconTags.js +15 -0
- package/Favicon/index.d.ts +1 -0
- package/Favicon/index.js +1 -0
- package/Favicon/package.json +6 -0
- package/Form/Form.d.ts +111 -0
- package/Form/Form.js +61 -0
- package/Form/index.d.ts +1 -0
- package/Form/index.js +1 -0
- package/Form/package.json +6 -0
- package/Form/sc/bare.d.ts +33 -0
- package/Form/sc/bare.js +20 -0
- package/Forms/Checkbox/Checkbox.d.ts +11 -0
- package/Forms/Checkbox/Checkbox.js +18 -0
- package/Forms/Checkbox/index.d.ts +1 -0
- package/Forms/Checkbox/index.js +1 -0
- package/Forms/Checkbox/package.json +6 -0
- package/Forms/Feedback/Feedback.d.ts +5 -0
- package/Forms/Feedback/Feedback.js +9 -0
- package/Forms/Feedback/index.d.ts +1 -0
- package/Forms/Feedback/index.js +1 -0
- package/Forms/Feedback/package.json +6 -0
- package/Forms/Field/Field.d.ts +15 -0
- package/Forms/Field/Field.js +48 -0
- package/Forms/Field/FieldControl.d.ts +26 -0
- package/Forms/Field/FieldControl.js +47 -0
- package/Forms/Field/FieldHint.d.ts +1 -0
- package/Forms/Field/FieldHint.js +4 -0
- package/Forms/Field/index.d.ts +2 -0
- package/Forms/Field/index.js +2 -0
- package/Forms/Field/package.json +6 -0
- package/Forms/Input/Input.d.ts +9 -0
- package/Forms/Input/Input.js +17 -0
- package/Forms/Input/index.d.ts +1 -0
- package/Forms/Input/index.js +1 -0
- package/Forms/Input/package.json +6 -0
- package/Forms/InputGroup/InputGroup.d.ts +13 -0
- package/Forms/InputGroup/InputGroup.js +15 -0
- package/Forms/InputGroup/index.d.ts +1 -0
- package/Forms/InputGroup/index.js +1 -0
- package/Forms/InputGroup/package.json +6 -0
- package/Forms/Label/Label.d.ts +3 -0
- package/Forms/Label/Label.js +6 -0
- package/Forms/Label/index.d.ts +1 -0
- package/Forms/Label/index.js +1 -0
- package/Forms/Label/package.json +6 -0
- package/Forms/Password/Password.d.ts +5 -0
- package/Forms/Password/Password.js +17 -0
- package/Forms/Password/index.d.ts +1 -0
- package/Forms/Password/index.js +1 -0
- package/Forms/Password/package.json +6 -0
- package/Forms/Radio/Radio.d.ts +12 -0
- package/Forms/Radio/Radio.js +25 -0
- package/Forms/Radio/index.d.ts +1 -0
- package/Forms/Radio/index.js +1 -0
- package/Forms/Radio/package.json +6 -0
- package/Forms/Switch/Switch.d.ts +9 -0
- package/Forms/Switch/Switch.js +20 -0
- package/Forms/Switch/index.d.ts +1 -0
- package/Forms/Switch/index.js +1 -0
- package/Forms/Switch/package.json +6 -0
- package/Forms/Textarea/Textarea.d.ts +5 -0
- package/Forms/Textarea/Textarea.js +12 -0
- package/Forms/Textarea/TextareaRich.d.ts +6 -0
- package/Forms/Textarea/TextareaRich.js +28 -0
- package/Forms/Textarea/index.d.ts +2 -0
- package/Forms/Textarea/index.js +2 -0
- package/Forms/Textarea/package.json +6 -0
- package/Forms/Toggle/Toggle.d.ts +19 -0
- package/Forms/Toggle/Toggle.js +32 -0
- package/Forms/Toggle/index.d.ts +1 -0
- package/Forms/Toggle/index.js +1 -0
- package/Forms/Toggle/package.json +6 -0
- package/Forms/Toggle/useToggle.d.ts +46 -0
- package/Forms/Toggle/useToggle.js +145 -0
- package/Forms/antispam.d.ts +24 -0
- package/Forms/antispam.js +56 -0
- package/Forms/helpers.d.ts +26 -0
- package/Forms/helpers.js +45 -0
- package/Forms/index.d.ts +15 -0
- package/Forms/index.js +16 -0
- package/Forms/package.json +6 -0
- package/Forms/styles.d.ts +19 -0
- package/Forms/styles.js +29 -0
- package/Gauge/Gauge.d.ts +5 -0
- package/Gauge/Gauge.js +102 -0
- package/Grid/Grid.d.ts +64 -0
- package/Grid/Grid.js +53 -0
- package/Grid/index.d.ts +1 -0
- package/Grid/index.js +1 -0
- package/Grid/package.json +6 -0
- package/Hamburger/Hamburger.d.ts +6 -0
- package/Hamburger/Hamburger.js +52 -0
- package/Hamburger/index.d.ts +1 -0
- package/Hamburger/index.js +1 -0
- package/Hamburger/package.json +6 -0
- package/Header/index.d.ts +1 -0
- package/Header/index.js +1 -0
- package/Header/package.json +6 -0
- package/Header/useHeader.d.ts +24 -0
- package/Header/useHeader.js +30 -0
- package/Hidden/Hidden.d.ts +6 -0
- package/Hidden/Hidden.js +10 -0
- package/Hidden/index.d.ts +1 -0
- package/Hidden/index.js +1 -0
- package/Hidden/package.json +6 -0
- package/Img/index.d.ts +1 -0
- 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 +39 -0
- package/Img/types.d.ts +9 -0
- package/Img/types.js +1 -0
- package/Link/Link.d.ts +5 -0
- package/Link/Link.js +4 -0
- package/Link/LinkBlank.d.ts +8 -0
- package/Link/LinkBlank.js +17 -0
- package/Link/index.d.ts +2 -0
- package/Link/index.js +2 -0
- package/Link/package.json +6 -0
- package/Menu/Menu.d.ts +1 -0
- package/Menu/Menu.js +4 -0
- package/Menu/index.d.ts +1 -0
- package/Menu/index.js +1 -0
- package/Menu/package.json +6 -0
- package/MenuItem/MenuItem.d.ts +4 -0
- package/MenuItem/MenuItem.js +4 -0
- package/MenuItem/index.d.ts +1 -0
- package/MenuItem/index.js +1 -0
- package/MenuItem/package.json +6 -0
- package/Meta/Meta.d.ts +14 -0
- package/Meta/Meta.js +5 -0
- package/Meta/index.d.ts +1 -0
- package/Meta/index.js +1 -0
- package/Meta/package.json +6 -0
- package/NoJs/NoJs.d.ts +2 -0
- package/NoJs/NoJs.js +6 -0
- package/NoJs/index.d.ts +1 -0
- package/NoJs/index.js +1 -0
- package/NoJs/package.json +6 -0
- package/Pagination/PaginationNav.d.ts +22 -0
- package/Pagination/PaginationNav.js +61 -0
- package/Pagination/PaginationResults.d.ts +3 -0
- package/Pagination/PaginationResults.js +11 -0
- package/Pagination/index.d.ts +2 -0
- package/Pagination/index.js +2 -0
- package/Pagination/package.json +6 -0
- package/Pill/Pill.d.ts +5 -0
- package/Pill/Pill.js +7 -0
- package/Pill/index.d.ts +1 -0
- package/Pill/index.js +1 -0
- package/Pill/package.json +6 -0
- package/Progress/ProgressCircular.d.ts +19 -0
- package/Progress/ProgressCircular.js +15 -0
- package/Progress/ProgressLinear.d.ts +22 -0
- package/Progress/ProgressLinear.js +24 -0
- package/Progress/ProgressOverlay.d.ts +4 -0
- package/Progress/ProgressOverlay.js +24 -0
- package/Progress/index.d.ts +3 -0
- package/Progress/index.js +3 -0
- package/Progress/package.json +6 -0
- package/Rating/Rating.d.ts +35 -0
- package/Rating/Rating.js +71 -0
- package/Rating/index.d.ts +11 -0
- package/Rating/index.js +49 -0
- package/Rating/package.json +6 -0
- package/Select/SelectDownshift.d.ts +5 -0
- package/Select/SelectDownshift.js +38 -0
- package/Select/components.d.ts +6 -0
- package/Select/components.js +12 -0
- package/Select/index.d.ts +2 -0
- package/Select/index.js +3 -0
- package/Select/package.json +6 -0
- package/Sidebar/Sidebar.d.ts +3 -0
- package/Sidebar/Sidebar.js +23 -0
- package/Sidebar/index.d.ts +1 -0
- package/Sidebar/index.js +1 -0
- package/Sidebar/package.json +6 -0
- package/Spacing/Spacing.d.ts +30 -0
- package/Spacing/Spacing.js +45 -0
- package/Spacing/index.d.ts +1 -0
- package/Spacing/index.js +1 -0
- package/Spacing/package.json +6 -0
- package/Sticky/Sticky.d.ts +2 -0
- package/Sticky/Sticky.js +219 -0
- package/Sticky/StickyCss.d.ts +5 -0
- package/Sticky/StickyCss.js +6 -0
- package/Sticky/index.d.ts +1 -0
- package/Sticky/index.js +1 -0
- package/Sticky/package.json +6 -0
- package/Tabs/TabsMui.d.ts +244 -0
- package/Tabs/TabsMui.js +46 -0
- package/Tabs/index.d.ts +1 -0
- package/Tabs/index.js +1 -0
- package/Tabs/package.json +6 -0
- package/Tabs/sc/bare.d.ts +5 -0
- package/Tabs/sc/bare.js +87 -0
- package/Tabs/tw/bare.d.ts +248 -0
- package/Tabs/tw/bare.js +17 -0
- package/Tabs/tw/material.d.ts +472 -0
- package/Tabs/tw/material.js +18 -0
- package/Tabs/useTabs.d.ts +43 -0
- package/Tabs/useTabs.js +44 -0
- package/Typography/CopyPasteVisible.d.ts +1 -0
- package/Typography/CopyPasteVisible.js +4 -0
- package/Typography/Native.d.ts +10 -0
- package/Typography/Native.js +14 -0
- package/Typography/ReadMore.d.ts +12 -0
- package/Typography/ReadMore.js +43 -0
- package/Typography/TextLoop.d.ts +16 -0
- package/Typography/TextLoop.js +46 -0
- package/Typography/TypeStairs.d.ts +6 -0
- package/Typography/TypeStairs.js +50 -0
- package/Typography/index.d.ts +5 -0
- package/Typography/index.js +5 -0
- package/Typography/package.json +6 -0
- package/css/index.d.ts +2 -0
- package/css/index.js +31 -0
- package/css/package.json +6 -0
- package/helpers/classed.d.ts +22 -0
- package/helpers/classed.js +68 -0
- package/helpers/extend-component.d.ts +28 -0
- package/helpers/extend-component.js +12 -0
- package/helpers/index.d.ts +3 -0
- package/helpers/index.js +2 -0
- package/helpers/package.json +6 -0
- package/hooks/index.d.ts +14 -0
- package/hooks/index.js +15 -0
- package/hooks/package.json +6 -0
- package/hooks/types.d.ts +8 -0
- package/hooks/types.js +1 -0
- package/hooks/useAsyncFn.d.ts +26 -0
- package/hooks/useAsyncFn.js +36 -0
- package/hooks/useDateLocale.d.ts +7 -0
- package/hooks/useDateLocale.js +38 -0
- package/hooks/useEffectOnce.d.ts +5 -0
- package/hooks/useEffectOnce.js +8 -0
- package/hooks/useFirstMountState.d.ts +4 -0
- package/hooks/useFirstMountState.js +12 -0
- package/hooks/useFocus.d.ts +4 -0
- package/hooks/useFocus.js +11 -0
- package/hooks/useId.d.ts +4 -0
- package/hooks/useId.js +8 -0
- package/hooks/useIsomorphicLayoutEffect.d.ts +5 -0
- package/hooks/useIsomorphicLayoutEffect.js +8 -0
- package/hooks/useMount.d.ts +4 -0
- package/hooks/useMount.js +9 -0
- package/hooks/useMountedState.d.ts +4 -0
- package/hooks/useMountedState.js +15 -0
- package/hooks/usePrevious.d.ts +1 -0
- package/hooks/usePrevious.js +8 -0
- package/hooks/useScrollPosition.d.ts +15 -0
- package/hooks/useScrollPosition.js +80 -0
- package/hooks/useScrollTo.d.ts +1 -0
- package/hooks/useScrollTo.js +21 -0
- package/hooks/useTraceUpdate.d.ts +4 -0
- package/hooks/useTraceUpdate.js +21 -0
- package/hooks/useUpdateEffect.d.ts +5 -0
- package/hooks/useUpdateEffect.js +14 -0
- package/hooks/useWindowSize.d.ts +1 -0
- package/hooks/useWindowSize.js +13 -0
- package/index.d.ts +1 -0
- package/index.js +5 -0
- package/m/MotionProvider.d.ts +37 -0
- package/m/MotionProvider.js +39 -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/package.json +6 -9
- package/sc/index.d.ts +30 -0
- package/sc/index.js +31 -0
- package/sc/package.json +6 -0
- package/scm/index.d.ts +29 -0
- package/scm/index.js +31 -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 -0
- package/styles/Body.js +13 -0
- package/styles/Global.d.ts +15 -0
- package/styles/Global.js +18 -0
- package/styles/index.d.ts +7 -0
- package/styles/index.js +7 -0
- package/styles/media.d.ts +67 -0
- package/styles/media.js +155 -0
- package/styles/package.json +6 -0
- package/styles/spacing.d.ts +13 -0
- package/styles/spacing.js +45 -0
- package/styles/styled.d.ts +12 -0
- package/styles/styled.js +13 -0
- package/styles/theme--vanilla.d.ts +18 -0
- package/styles/theme--vanilla.js +55 -0
- package/styles/theme.d.ts +82 -0
- package/styles/theme.js +41 -0
- package/tw/index.d.ts +2 -0
- package/tw/index.js +31 -0
- package/tw/package.json +6 -0
- package/twm/index.d.ts +2 -0
- package/twm/index.js +31 -0
- package/twm/package.json +6 -0
- package/types.d.ts +10 -0
- package/types.js +1 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ObjectShape } from "yup/lib/object";
|
|
2
|
+
/**
|
|
3
|
+
* Encode form
|
|
4
|
+
*
|
|
5
|
+
* Takes a record of yup validations and outputs a `yup` schema with encoded
|
|
6
|
+
* names (antispam technique) and a record of the encoded/decoded input `name`s.
|
|
7
|
+
*
|
|
8
|
+
* We skip the names prefixed wth an underscore which are considered programmatic
|
|
9
|
+
* form data not created by user input.
|
|
10
|
+
*/
|
|
11
|
+
export declare function encodeForm<T extends ObjectShape = {}>(validationRules: T): {
|
|
12
|
+
encodedSchema: import("yup/lib/object").RequiredObjectSchema<Record<string, T[keyof T]>, import("yup/lib/object").AnyObject, import("yup/lib/object").TypeOfShape<Record<string, T[keyof T]>>>;
|
|
13
|
+
encodedNames: Record<keyof T, string>;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Decode form data
|
|
17
|
+
*
|
|
18
|
+
* This function is meant to be used inside an api endpoint to gather an encoded
|
|
19
|
+
* form submit data and transform it to the decoded desired json data.
|
|
20
|
+
*
|
|
21
|
+
* Here too we skip encoding/decoding process for names prefixed wth an underscore
|
|
22
|
+
* which are considered programmatic form data not created by user input.
|
|
23
|
+
*/
|
|
24
|
+
export declare function decodeForm<ReturnAs extends Record<string, unknown> = {}, FormData extends Record<string, unknown> = {}>(formData: FormData): ReturnAs;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { object } from "yup";
|
|
2
|
+
import { encode, decode, isUndefined } from "@koine/utils";
|
|
3
|
+
/**
|
|
4
|
+
* Encode form
|
|
5
|
+
*
|
|
6
|
+
* Takes a record of yup validations and outputs a `yup` schema with encoded
|
|
7
|
+
* names (antispam technique) and a record of the encoded/decoded input `name`s.
|
|
8
|
+
*
|
|
9
|
+
* We skip the names prefixed wth an underscore which are considered programmatic
|
|
10
|
+
* form data not created by user input.
|
|
11
|
+
*/
|
|
12
|
+
export function encodeForm(validationRules) {
|
|
13
|
+
var encoded = {};
|
|
14
|
+
var encodedNames = {};
|
|
15
|
+
for (var name_1 in validationRules) {
|
|
16
|
+
if (!name_1.startsWith("_")) {
|
|
17
|
+
var encodedName = encode(name_1);
|
|
18
|
+
encoded[encodedName] = validationRules[name_1];
|
|
19
|
+
encodedNames[name_1] = encodedName;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
// we need `.required()` to correctly infer the type @see
|
|
23
|
+
// https://github.com/jquense/yup/issues/946
|
|
24
|
+
var encodedSchema = object(encoded).required();
|
|
25
|
+
return { encodedSchema: encodedSchema, encodedNames: encodedNames };
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Decode form data
|
|
29
|
+
*
|
|
30
|
+
* This function is meant to be used inside an api endpoint to gather an encoded
|
|
31
|
+
* form submit data and transform it to the decoded desired json data.
|
|
32
|
+
*
|
|
33
|
+
* Here too we skip encoding/decoding process for names prefixed wth an underscore
|
|
34
|
+
* which are considered programmatic form data not created by user input.
|
|
35
|
+
*/
|
|
36
|
+
export function decodeForm(formData) {
|
|
37
|
+
var json = {};
|
|
38
|
+
for (var encodedName in formData) {
|
|
39
|
+
var decodedName = decode(encodedName);
|
|
40
|
+
// always add underscore prefixed names as they are treated as internal
|
|
41
|
+
// private inputs outside of the honeypot system, normalise them here removing
|
|
42
|
+
// the underscore prefix
|
|
43
|
+
if (encodedName.startsWith("_")) {
|
|
44
|
+
// @ts-expect-error nevermind
|
|
45
|
+
json[encodedName.substring(1)] = formData[encodedName];
|
|
46
|
+
}
|
|
47
|
+
// if the decoded `name` is empty and the encoded `name` is defined honeypot passed
|
|
48
|
+
else if (!isUndefined(formData[encodedName]) &&
|
|
49
|
+
formData[decodedName] === "") {
|
|
50
|
+
// @ts-expect-error nevermind
|
|
51
|
+
json[decodedName] = formData[encodedName];
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// console.log(formData, decoded, json);
|
|
55
|
+
return json;
|
|
56
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { Control, UseFormRegister, UseFormSetValue } from "react-hook-form";
|
|
3
|
+
import type { Option } from "../types";
|
|
4
|
+
declare type FormControlNativeType = "input" | "select" | "textarea";
|
|
5
|
+
declare type FormControlFieldValues = Record<string, any>;
|
|
6
|
+
export declare type FormControlNative<T extends FormControlNativeType = "input"> = Omit<React.ComponentPropsWithRef<T>, "name">;
|
|
7
|
+
export declare type FormControlProps<T extends FormControlFieldValues = any> = {
|
|
8
|
+
label?: React.ReactNode;
|
|
9
|
+
name: string;
|
|
10
|
+
control?: Control<T>;
|
|
11
|
+
register?: UseFormRegister<T>;
|
|
12
|
+
setValue?: UseFormSetValue<T>;
|
|
13
|
+
};
|
|
14
|
+
export declare type FormControl<TControlType extends FormControlNativeType = "input", TFieldValues extends FormControlFieldValues = any> = FormControlNative<TControlType> & FormControlProps<TFieldValues>;
|
|
15
|
+
export declare const normaliseOptions: (options?: (string | Option)[]) => Option[];
|
|
16
|
+
export declare function defaultOptionsFilterFn(options: Option[], inputValue?: string): Option[];
|
|
17
|
+
/**
|
|
18
|
+
* We are faking the native input `onChange` event
|
|
19
|
+
*/
|
|
20
|
+
export declare function triggerOnChange<T extends HTMLElement = HTMLInputElement>(onChange?: React.ChangeEventHandler<T>, name?: string, value?: any): void;
|
|
21
|
+
/**
|
|
22
|
+
* @see https://hustle.bizongo.in/simulate-react-on-change-on-controlled-components-baa336920e04
|
|
23
|
+
* @deprecated
|
|
24
|
+
*/
|
|
25
|
+
export declare function triggerChange(input: HTMLInputElement, value?: string): void;
|
|
26
|
+
export {};
|
package/Forms/helpers.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { isString, matchSorter } from "@koine/utils";
|
|
2
|
+
export var normaliseOptions = function (options) {
|
|
3
|
+
if (options === void 0) { options = []; }
|
|
4
|
+
return options.map(function (option) {
|
|
5
|
+
return isString(option)
|
|
6
|
+
? {
|
|
7
|
+
label: option,
|
|
8
|
+
value: option,
|
|
9
|
+
}
|
|
10
|
+
: option;
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
export function defaultOptionsFilterFn(options, inputValue) {
|
|
14
|
+
if (!inputValue) {
|
|
15
|
+
return options;
|
|
16
|
+
}
|
|
17
|
+
return matchSorter(options, inputValue, { keys: ["value", "label"] });
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* We are faking the native input `onChange` event
|
|
21
|
+
*/
|
|
22
|
+
export function triggerOnChange(onChange, name, value) {
|
|
23
|
+
// @ts-expect-error nevermind
|
|
24
|
+
if (onChange)
|
|
25
|
+
onChange({ target: { name: name, value: value } });
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* @see https://hustle.bizongo.in/simulate-react-on-change-on-controlled-components-baa336920e04
|
|
29
|
+
* @deprecated
|
|
30
|
+
*/
|
|
31
|
+
export function triggerChange(input, value) {
|
|
32
|
+
var obj = window.Object;
|
|
33
|
+
if (!obj) {
|
|
34
|
+
// if (process.env["NODE_ENV"] !== "production") {
|
|
35
|
+
// console.warn("triggerChange: window.Object does not exists, bailing.");
|
|
36
|
+
// }
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
// @ts-expect-error nevermind
|
|
40
|
+
var nativeInputValueSetter = obj.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, "value").set;
|
|
41
|
+
// @ts-expect-error nevermind
|
|
42
|
+
nativeInputValueSetter.call(input, value);
|
|
43
|
+
var inputEvent = new Event("input", { bubbles: true });
|
|
44
|
+
input.dispatchEvent(inputEvent);
|
|
45
|
+
}
|
package/Forms/index.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export * from "./antispam";
|
|
2
|
+
export * from "./Checkbox";
|
|
3
|
+
export * from "./Input";
|
|
4
|
+
export * from "./InputGroup";
|
|
5
|
+
export * from "./Feedback";
|
|
6
|
+
export * from "./Field";
|
|
7
|
+
export * from "./InputGroup";
|
|
8
|
+
export * from "./Label";
|
|
9
|
+
export * from "./Password";
|
|
10
|
+
export * from "./Radio";
|
|
11
|
+
export * from "./Switch";
|
|
12
|
+
export * from "./Textarea";
|
|
13
|
+
export * from "./Toggle";
|
|
14
|
+
export * from "./helpers";
|
|
15
|
+
export * from "./styles";
|
package/Forms/index.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export * from "./antispam";
|
|
2
|
+
export * from "./Checkbox";
|
|
3
|
+
export * from "./Input";
|
|
4
|
+
export * from "./InputGroup";
|
|
5
|
+
export * from "./Feedback";
|
|
6
|
+
export * from "./Field";
|
|
7
|
+
export * from "./InputGroup";
|
|
8
|
+
export * from "./Label";
|
|
9
|
+
export * from "./Password";
|
|
10
|
+
export * from "./Radio";
|
|
11
|
+
// export * from "./Select";
|
|
12
|
+
export * from "./Switch";
|
|
13
|
+
export * from "./Textarea";
|
|
14
|
+
export * from "./Toggle";
|
|
15
|
+
export * from "./helpers";
|
|
16
|
+
export * from "./styles";
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare const InputInvisible: import("styled-components").StyledComponent<"input", import("styled-components").DefaultTheme, {}, never>;
|
|
2
|
+
export declare const InputHoneypot: import("styled-components").StyledComponent<"input", import("styled-components").DefaultTheme, {
|
|
3
|
+
type: "text";
|
|
4
|
+
autoComplete: "new-password";
|
|
5
|
+
tabIndex: -1;
|
|
6
|
+
}, "tabIndex" | "type" | "autoComplete">;
|
|
7
|
+
export declare const InputProgress: import("styled-components").StyledComponent<(p: any) => JSX.Element, import("styled-components").DefaultTheme, {}, never>;
|
|
8
|
+
/**
|
|
9
|
+
* Remove the default light blue background on autofilled inputs. To be used as
|
|
10
|
+
* a function that outputs a CSS string.
|
|
11
|
+
*
|
|
12
|
+
* @see https://stackoverflow.com/a/62624824/1938970
|
|
13
|
+
*/
|
|
14
|
+
export declare const inputResetAutofill = "\n &:-webkit-autofill,\n &:-webkit-autofill:hover,\n &:-webkit-autofill:focus,\n &:-webkit-autofill:active {\n -webkit-background-clip: text;\n }\n";
|
|
15
|
+
export declare const inputBorder = "\n border: 1px solid var(--forms-border-color);\n";
|
|
16
|
+
export declare const inputPadding = "\n padding: var(--forms-gutter-y) var(--forms-gutter-x);\n";
|
|
17
|
+
export declare const inputReset: string;
|
|
18
|
+
export declare const inputBase: string;
|
|
19
|
+
export declare const inputFocus: string;
|
package/Forms/styles.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { __assign, __makeTemplateObject } from "tslib";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import styled from "styled-components";
|
|
4
|
+
import { stateFocus } from "../styles/styled";
|
|
5
|
+
import { ProgressLinear } from "../Progress/ProgressLinear";
|
|
6
|
+
import { invisible } from "../styles/styled";
|
|
7
|
+
export var InputInvisible = styled.input(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n ", "\n"], ["\n ", "\n"])), invisible);
|
|
8
|
+
export var InputHoneypot = styled(InputInvisible).attrs({
|
|
9
|
+
type: "text",
|
|
10
|
+
autoComplete: "new-password",
|
|
11
|
+
tabIndex: -1,
|
|
12
|
+
})(templateObject_2 || (templateObject_2 = __makeTemplateObject([""], [""])));
|
|
13
|
+
export var InputProgress = styled(function (p) { return (_jsx(ProgressLinear, __assign({ fg: "var(--accent300)", bg: "var(--accent400)" }, p))); })(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n"], ["\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n"])));
|
|
14
|
+
/**
|
|
15
|
+
* Remove the default light blue background on autofilled inputs. To be used as
|
|
16
|
+
* a function that outputs a CSS string.
|
|
17
|
+
*
|
|
18
|
+
* @see https://stackoverflow.com/a/62624824/1938970
|
|
19
|
+
*/
|
|
20
|
+
export var inputResetAutofill = "\n &:-webkit-autofill,\n &:-webkit-autofill:hover,\n &:-webkit-autofill:focus,\n &:-webkit-autofill:active {\n -webkit-background-clip: text;\n }\n";
|
|
21
|
+
/* FIXME: find a nice way to override this styling from implementation */
|
|
22
|
+
// border-bottom: 1px solid var(--forms-border-color);
|
|
23
|
+
// border: 0;
|
|
24
|
+
export var inputBorder = "\n border: 1px solid var(--forms-border-color);\n";
|
|
25
|
+
export var inputPadding = "\n padding: var(--forms-gutter-y) var(--forms-gutter-x);\n";
|
|
26
|
+
export var inputReset = "\n width: 100%;\n min-height: 44px;\n ".concat(inputBorder, "\n ").concat(inputPadding, "\n");
|
|
27
|
+
export var inputBase = "\n ".concat(inputReset, "\n ").concat(inputResetAutofill, "\n background: transparent;\n");
|
|
28
|
+
export var inputFocus = "\n &:focus {\n outline: 0px;\n appearance: none;\n ".concat(stateFocus, "\n }\n");
|
|
29
|
+
var templateObject_1, templateObject_2, templateObject_3;
|
package/Gauge/Gauge.d.ts
ADDED
package/Gauge/Gauge.js
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
// import styled, { keyframes } from "styled-components";
|
|
2
|
+
// import { m } from "framer-motion";
|
|
3
|
+
export var Gauge = function (_props) { return null; };
|
|
4
|
+
// export type GaugeProps = {
|
|
5
|
+
// /** In percentage */
|
|
6
|
+
// value: number;
|
|
7
|
+
// };
|
|
8
|
+
// export const Gauge = ({
|
|
9
|
+
// value,
|
|
10
|
+
// counter = true,
|
|
11
|
+
// stroke,
|
|
12
|
+
// // emptyStroke = "#e2e2e2",
|
|
13
|
+
// emptyStroke = stroke,
|
|
14
|
+
// emptyStrokeOpacity = 0.25,
|
|
15
|
+
// // emptyStrokeOpacity = 1,
|
|
16
|
+
// duration = 3,
|
|
17
|
+
// delay = 0.5,
|
|
18
|
+
// size = 100,
|
|
19
|
+
// strokeWidth = 6,
|
|
20
|
+
// }) => {
|
|
21
|
+
// const radius = 45;
|
|
22
|
+
// const circumference = Math.ceil(2 * Math.PI * radius);
|
|
23
|
+
// const fillPercents = Math.abs(
|
|
24
|
+
// Math.ceil((circumference / 100) * (value - 100))
|
|
25
|
+
// );
|
|
26
|
+
// const transition = {
|
|
27
|
+
// duration: duration,
|
|
28
|
+
// delay: delay,
|
|
29
|
+
// ease: "easeIn",
|
|
30
|
+
// };
|
|
31
|
+
// const variants = {
|
|
32
|
+
// hidden: {
|
|
33
|
+
// strokeDashoffset: circumference,
|
|
34
|
+
// transition,
|
|
35
|
+
// },
|
|
36
|
+
// show: {
|
|
37
|
+
// strokeDashoffset: fillPercents,
|
|
38
|
+
// transition,
|
|
39
|
+
// },
|
|
40
|
+
// };
|
|
41
|
+
// return (
|
|
42
|
+
// <>
|
|
43
|
+
// <Flex justifyContent="center" alignItems="center">
|
|
44
|
+
// {counter && (
|
|
45
|
+
// <Box
|
|
46
|
+
// position="absolute"
|
|
47
|
+
// fontSize={size >= 100 ? 6 : 3}
|
|
48
|
+
// fontWeight={2}
|
|
49
|
+
// color="text500"
|
|
50
|
+
// >
|
|
51
|
+
// <Counter valueTo={value} totalDuration={duration + delay} />%
|
|
52
|
+
// </Box>
|
|
53
|
+
// )}
|
|
54
|
+
// <Box height={size}>
|
|
55
|
+
// <svg
|
|
56
|
+
// viewBox="0 0 100 100"
|
|
57
|
+
// version="1.1"
|
|
58
|
+
// xmlns="http://www.w3.org/2000/svg"
|
|
59
|
+
// width={size}
|
|
60
|
+
// height={size}
|
|
61
|
+
// >
|
|
62
|
+
// <circle
|
|
63
|
+
// cx="50"
|
|
64
|
+
// cy="50"
|
|
65
|
+
// r={radius}
|
|
66
|
+
// className="circle"
|
|
67
|
+
// strokeWidth={strokeWidth}
|
|
68
|
+
// stroke={emptyStroke}
|
|
69
|
+
// strokeOpacity={emptyStrokeOpacity}
|
|
70
|
+
// fill="transparent"
|
|
71
|
+
// />
|
|
72
|
+
// </svg>
|
|
73
|
+
// <svg
|
|
74
|
+
// viewBox="0 0 100 100"
|
|
75
|
+
// width={size}
|
|
76
|
+
// height={size}
|
|
77
|
+
// style={{
|
|
78
|
+
// position: "absolute",
|
|
79
|
+
// transform: "rotate(-90deg)",
|
|
80
|
+
// overflow: "visible",
|
|
81
|
+
// marginLeft: -size,
|
|
82
|
+
// }}
|
|
83
|
+
// >
|
|
84
|
+
// <m.circle
|
|
85
|
+
// cx="50"
|
|
86
|
+
// cy="50"
|
|
87
|
+
// r={radius}
|
|
88
|
+
// strokeWidth={strokeWidth}
|
|
89
|
+
// stroke={stroke}
|
|
90
|
+
// fill="transparent"
|
|
91
|
+
// strokeDashoffset={fillPercents}
|
|
92
|
+
// strokeDasharray={circumference}
|
|
93
|
+
// variants={variants}
|
|
94
|
+
// initial="hidden"
|
|
95
|
+
// animate={"show"}
|
|
96
|
+
// />
|
|
97
|
+
// </svg>
|
|
98
|
+
// </Box>
|
|
99
|
+
// </Flex>
|
|
100
|
+
// </>
|
|
101
|
+
// );
|
|
102
|
+
// };
|
package/Grid/Grid.d.ts
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { Theme, Breakpoint } from "../styles/theme";
|
|
3
|
+
export declare const GRID_COLUMNS = 12;
|
|
4
|
+
export declare const GRID_GUTTER_DEFAULT: keyof Theme["gutter"];
|
|
5
|
+
export declare type GridProps = {
|
|
6
|
+
/**
|
|
7
|
+
* @default "half"
|
|
8
|
+
*/
|
|
9
|
+
$gutter?: keyof Theme["gutter"];
|
|
10
|
+
};
|
|
11
|
+
export declare type ContainerProps = React.PropsWithChildren<GridProps & {
|
|
12
|
+
size: Breakpoint;
|
|
13
|
+
clamp?: boolean;
|
|
14
|
+
}>;
|
|
15
|
+
export declare const Container: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, GridProps & {
|
|
16
|
+
size: Breakpoint;
|
|
17
|
+
clamp?: boolean | undefined;
|
|
18
|
+
} & {
|
|
19
|
+
children?: import("react").ReactNode;
|
|
20
|
+
}, never>;
|
|
21
|
+
export declare type ContainerFluidProps = React.PropsWithChildren<GridProps & {
|
|
22
|
+
size: Breakpoint;
|
|
23
|
+
}>;
|
|
24
|
+
export declare const ContainerFluid: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, GridProps & {
|
|
25
|
+
size: Breakpoint;
|
|
26
|
+
} & {
|
|
27
|
+
children?: import("react").ReactNode;
|
|
28
|
+
}, never>;
|
|
29
|
+
declare type Direction = "min" | "max";
|
|
30
|
+
export declare type RowProps = GridProps & {
|
|
31
|
+
$valign?: React.CSSProperties["alignItems"];
|
|
32
|
+
$reverse?: `${Direction}:${Breakpoint}`;
|
|
33
|
+
/**
|
|
34
|
+
* It forces child columns to be on one line overflowing the content when it does not fit,
|
|
35
|
+
* it is suggested to use with children having a minimum width not in percentage,
|
|
36
|
+
* for things like sliders and carousels
|
|
37
|
+
*/
|
|
38
|
+
$noWrap?: boolean;
|
|
39
|
+
};
|
|
40
|
+
export declare const Row: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, GridProps & {
|
|
41
|
+
$valign?: React.CSSProperties["alignItems"];
|
|
42
|
+
$reverse?: "max:xs" | "max:sm" | "max:md" | "max:lg" | "max:xl" | "max:xxl" | "min:xs" | "min:sm" | "min:md" | "min:lg" | "min:xl" | "min:xxl" | undefined;
|
|
43
|
+
/**
|
|
44
|
+
* It forces child columns to be on one line overflowing the content when it does not fit,
|
|
45
|
+
* it is suggested to use with children having a minimum width not in percentage,
|
|
46
|
+
* for things like sliders and carousels
|
|
47
|
+
*/
|
|
48
|
+
$noWrap?: boolean | undefined;
|
|
49
|
+
}, never>;
|
|
50
|
+
export declare type ColProps = GridProps & Partial<Record<Breakpoint, number>> & {
|
|
51
|
+
$width?: number;
|
|
52
|
+
$flex?: boolean;
|
|
53
|
+
$valign?: React.CSSProperties["alignItems"];
|
|
54
|
+
$auto?: boolean;
|
|
55
|
+
$offset?: string;
|
|
56
|
+
};
|
|
57
|
+
export declare const Col: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, GridProps & Partial<Record<Breakpoint, number>> & {
|
|
58
|
+
$width?: number | undefined;
|
|
59
|
+
$flex?: boolean | undefined;
|
|
60
|
+
$valign?: React.CSSProperties["alignItems"];
|
|
61
|
+
$auto?: boolean | undefined;
|
|
62
|
+
$offset?: string | undefined;
|
|
63
|
+
}, never>;
|
|
64
|
+
export {};
|
package/Grid/Grid.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { __makeTemplateObject } from "tslib";
|
|
2
|
+
import styled from "styled-components";
|
|
3
|
+
export var GRID_COLUMNS = 12;
|
|
4
|
+
export var GRID_GUTTER_DEFAULT = "half";
|
|
5
|
+
export var Container = styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n max-width: ", "px;\n margin: 0 auto;\n padding: 0 ", "px;\n ", "\n"], ["\n max-width: ", "px;\n margin: 0 auto;\n padding: 0 ", "px;\n ", "\n"])), function (p) { return p.theme.breakpoints[p.size]; }, function (p) { return p.theme.gutter[p.$gutter || GRID_GUTTER_DEFAULT]; }, function (p) { return (p.clamp ? "overflow: hidden;" : ""); });
|
|
6
|
+
export var ContainerFluid = styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n padding: 0 ", "px;\n"], ["\n padding: 0 ", "px;\n"])), function (p) { return p.theme.gutter[p.$gutter || GRID_GUTTER_DEFAULT]; });
|
|
7
|
+
export var Row = styled.div(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n margin: 0 -", "px;\n display: flex;\n ", "\n ", ";\n ", "\n"], ["\n margin: 0 -", "px;\n display: flex;\n ", "\n ", ";\n ", "\n"])), function (p) { return p.theme.gutter[p.$gutter || GRID_GUTTER_DEFAULT]; }, function (p) { return (p.$noWrap ? "overflow: auto;" : "flex-wrap: wrap;"); }, function (p) { return (p.$valign ? "align-items: ".concat(p.$valign) : ""); }, function (p) {
|
|
8
|
+
return p.$reverse &&
|
|
9
|
+
"@media (".concat(p.$reverse.split(":")[0], "-width: ").concat(p.$reverse.split(":")[1], "px) {\n flex-direction: row-reverse;\n }");
|
|
10
|
+
});
|
|
11
|
+
export var Col = styled.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n padding: 0 ", "px;\n display: ", ";\n ", ";\n ", ";\n"], ["\n padding: 0 ", "px;\n display: ", ";\n ", ";\n ", ";\n"])), function (p) { return p.theme.gutter[p.$gutter || GRID_GUTTER_DEFAULT]; }, function (p) { return (p.$flex ? "flex" : "block"); }, function (p) { return (p.$valign ? "align-items: " + p.$valign : ""); }, function (p) { return getColCss(p); });
|
|
12
|
+
function getColWidth(breakpoints, breakpoint, value) {
|
|
13
|
+
var breakpointValue = breakpoints[breakpoint] + "px";
|
|
14
|
+
var width = (value * 100) / GRID_COLUMNS;
|
|
15
|
+
var cssValue = "\n min-width: ".concat(width, "%;\n flex: 0 0 ").concat(width, "%;\n");
|
|
16
|
+
if (breakpoint === Object.keys(breakpoints)[0]) {
|
|
17
|
+
return cssValue;
|
|
18
|
+
}
|
|
19
|
+
return "\n @media (min-width: ".concat(breakpointValue, "){\n ").concat(cssValue, "\n }");
|
|
20
|
+
}
|
|
21
|
+
function getColCss(props) {
|
|
22
|
+
var $auto = props.$auto, $offset = props.$offset, $width = props.$width;
|
|
23
|
+
var breakpoints = props.theme.breakpoints;
|
|
24
|
+
var css = "";
|
|
25
|
+
if ($offset) {
|
|
26
|
+
var offsets = $offset.split(",");
|
|
27
|
+
for (var i = 0; i <= offsets.length; i++) {
|
|
28
|
+
if (offsets[i]) {
|
|
29
|
+
var _a = offsets[i].split(":"), offsetBreakpoint = _a[0], offsetSize = _a[1];
|
|
30
|
+
css += " \n @media(min-width: ".concat(breakpoints[offsetBreakpoint], "px){\n margin-left: ").concat((100 * offsetSize) / GRID_COLUMNS, "%;\n }\n ");
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if ($width) {
|
|
35
|
+
// do nothing, width is set explicitly
|
|
36
|
+
}
|
|
37
|
+
else if ($auto) {
|
|
38
|
+
css += "flex: 0 0 auto; width: auto; max-width: none;";
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
for (var breakpoint in breakpoints) {
|
|
42
|
+
var value = props[breakpoint];
|
|
43
|
+
if (typeof value !== "undefined") {
|
|
44
|
+
css += getColWidth(breakpoints, breakpoint, value);
|
|
45
|
+
}
|
|
46
|
+
else if (breakpoint === "xs") {
|
|
47
|
+
css += getColWidth(breakpoints, breakpoint, 12);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return css;
|
|
52
|
+
}
|
|
53
|
+
var templateObject_1, templateObject_2, templateObject_3, templateObject_4;
|
package/Grid/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Grid";
|
package/Grid/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Grid";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare type HamburgerProps = React.ComponentProps<"div"> & {
|
|
3
|
+
/** A way to provide your own state value. Can be used together with a state action (the `toggle` prop). */
|
|
4
|
+
toggled?: boolean;
|
|
5
|
+
};
|
|
6
|
+
export declare const Hamburger: ({ toggled, ...props }: HamburgerProps) => JSX.Element;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { __assign, __makeTemplateObject, __rest } from "tslib";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* @file
|
|
5
|
+
*
|
|
6
|
+
* Simplified from https://github.com/luukdv/hamburger-react
|
|
7
|
+
*/
|
|
8
|
+
import styled from "styled-components";
|
|
9
|
+
var HamburgerLabel = styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n position: absolute;\n top: 30px;\n font-size: ", ";\n text-transform: uppercase;\n left: 7px;\n letter-spacing: 3px;\n"], ["\n position: absolute;\n top: 30px;\n font-size: ", ";\n text-transform: uppercase;\n left: 7px;\n letter-spacing: 3px;\n"])), function (_a) {
|
|
10
|
+
var $toggled = _a.$toggled;
|
|
11
|
+
return ($toggled ? "0" : "9px");
|
|
12
|
+
});
|
|
13
|
+
var area = 48;
|
|
14
|
+
var lines = 3;
|
|
15
|
+
var width = 32;
|
|
16
|
+
var room = Math.round((area - width) / 2);
|
|
17
|
+
var barHeightRaw = width / 12;
|
|
18
|
+
var barHeight = Math.round(barHeightRaw);
|
|
19
|
+
var space = 0.5;
|
|
20
|
+
var marginRaw = width / (lines * (space + (lines === 3 ? 1 : 1.25)));
|
|
21
|
+
var margin = Math.round(marginRaw);
|
|
22
|
+
var height = barHeight * lines + margin * (lines - 1);
|
|
23
|
+
var topOffset = Math.round((area - height) / 2);
|
|
24
|
+
var translate = 4.6325;
|
|
25
|
+
var deviation = (barHeightRaw - barHeight + (marginRaw - margin)) / (lines === 3 ? 1 : 2);
|
|
26
|
+
var move = parseFloat((width / translate - deviation / (4 / 3)).toFixed(2));
|
|
27
|
+
var time = 0.4;
|
|
28
|
+
var easing = "cubic-bezier(0, 0, 0, 1)";
|
|
29
|
+
var transition = "".concat(time, "s ").concat(easing);
|
|
30
|
+
var burgerStyles = {
|
|
31
|
+
marginRight: "-8px",
|
|
32
|
+
position: "relative",
|
|
33
|
+
width: "".concat(area, "px"),
|
|
34
|
+
height: "".concat(area, "px"),
|
|
35
|
+
userSelect: "none",
|
|
36
|
+
outline: "0px",
|
|
37
|
+
cursor: "pointer",
|
|
38
|
+
transition: transition,
|
|
39
|
+
};
|
|
40
|
+
var barStyles = {
|
|
41
|
+
position: "absolute",
|
|
42
|
+
width: "".concat(width, "px"),
|
|
43
|
+
height: "".concat(barHeight, "px"),
|
|
44
|
+
left: "".concat(room, "px"),
|
|
45
|
+
background: "currentColor",
|
|
46
|
+
transition: transition,
|
|
47
|
+
};
|
|
48
|
+
export var Hamburger = function (_a) {
|
|
49
|
+
var toggled = _a.toggled, props = __rest(_a, ["toggled"]);
|
|
50
|
+
return (_jsxs("div", __assign({ style: __assign(__assign({}, burgerStyles), { transform: "".concat(toggled ? "rotate(90deg)" : "none") }), tabIndex: 0 }, props, { children: [_jsx("div", { style: __assign(__assign({}, barStyles), { top: "".concat(topOffset, "px"), transform: "".concat(toggled ? "rotate(-45deg) translate(0px, ".concat(move, "px)") : "none") }) }), _jsx("div", { style: __assign(__assign({}, barStyles), { top: "".concat(topOffset + barHeight + margin, "px"), transform: "".concat(toggled ? "rotate(45deg) translate(0, -".concat(move, "px)") : "none") }) }), _jsx(HamburgerLabel, __assign({ "$toggled": toggled }, { children: "Menu" }))] })));
|
|
51
|
+
};
|
|
52
|
+
var templateObject_1;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Hamburger";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Hamburger";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./useHeader";
|
package/Header/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./useHeader";
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/** @type {boolean} */
|
|
2
|
+
declare type isSticky = boolean & {
|
|
3
|
+
_branded: true;
|
|
4
|
+
};
|
|
5
|
+
/** @type {number} */
|
|
6
|
+
declare type placeholderHeight = number & {
|
|
7
|
+
_branded: true;
|
|
8
|
+
};
|
|
9
|
+
/** @type {number} */
|
|
10
|
+
declare type headerHeight = number & {
|
|
11
|
+
_branded: true;
|
|
12
|
+
};
|
|
13
|
+
/** @type {number} */
|
|
14
|
+
declare type logoWidth = number & {
|
|
15
|
+
_branded: true;
|
|
16
|
+
};
|
|
17
|
+
declare type UseHeaderState = readonly [
|
|
18
|
+
isSticky,
|
|
19
|
+
placeholderHeight,
|
|
20
|
+
headerHeight,
|
|
21
|
+
logoWidth
|
|
22
|
+
];
|
|
23
|
+
export declare const useHeader: () => UseHeaderState;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { useEffect, useState } from "react";
|
|
2
|
+
import { useScrollPosition } from "../hooks/useScrollPosition";
|
|
3
|
+
import { useTheme } from "../styles/theme";
|
|
4
|
+
import { useMedia } from "../styles/media";
|
|
5
|
+
export var useHeader = function () {
|
|
6
|
+
var _a = useState(false), isSticky = _a[0], setIsSticky = _a[1];
|
|
7
|
+
var themed = useTheme().header;
|
|
8
|
+
var isDesktopLayout = useMedia("min:".concat(themed.breakpoint));
|
|
9
|
+
var valueIdx = isDesktopLayout ? 1 : 0;
|
|
10
|
+
var _b = useState(themed.height[valueIdx]), headerHeight = _b[0], setHeaderHeight = _b[1];
|
|
11
|
+
var _c = useState(themed.height[valueIdx]), placeholderHeight = _c[0], setPlaceholderHeight = _c[1];
|
|
12
|
+
var _d = useState(themed.logoWidth[valueIdx]), logoWidth = _d[0], setLogoWidth = _d[1];
|
|
13
|
+
useScrollPosition(function (currentPosition) {
|
|
14
|
+
var isPastThreshold = currentPosition.y * -1 > 40;
|
|
15
|
+
if (isSticky !== isPastThreshold)
|
|
16
|
+
setIsSticky(isPastThreshold);
|
|
17
|
+
}, [isSticky]);
|
|
18
|
+
useEffect(function () {
|
|
19
|
+
var valueIdx = isDesktopLayout ? 1 : 0;
|
|
20
|
+
setPlaceholderHeight(themed.height[valueIdx]);
|
|
21
|
+
setHeaderHeight(isSticky ? themed.heightSticky[valueIdx] : themed.height[valueIdx]);
|
|
22
|
+
setLogoWidth(isSticky ? themed.logoWidthSticky[valueIdx] : themed.logoWidth[valueIdx]);
|
|
23
|
+
}, [themed, isSticky, isDesktopLayout]);
|
|
24
|
+
return [
|
|
25
|
+
isSticky,
|
|
26
|
+
placeholderHeight,
|
|
27
|
+
headerHeight,
|
|
28
|
+
logoWidth,
|
|
29
|
+
];
|
|
30
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Breakpoint } from "../styles/theme";
|
|
2
|
+
export declare type HiddenProps = {
|
|
3
|
+
$min?: Breakpoint;
|
|
4
|
+
$max?: Breakpoint;
|
|
5
|
+
};
|
|
6
|
+
export declare const Hidden: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, HiddenProps, never>;
|