@okam/stack-ui 1.25.2 → 1.25.3
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/.eslintrc.js +32 -0
- package/.storybook/.eslintrc.js +29 -0
- package/.storybook/main.ts +33 -0
- package/.storybook/preview.js +56 -0
- package/.storybook/tsconfig.json +17 -0
- package/CHANGELOG.md +574 -0
- package/README.md +8 -0
- package/package.json +1 -1
- package/postcss.config.js +15 -0
- package/project.json +77 -0
- package/src/_stories/icons/code-brackets.svg +1 -0
- package/src/_stories/icons/colors.svg +1 -0
- package/src/_stories/icons/comments.svg +1 -0
- package/src/_stories/icons/direction.svg +1 -0
- package/src/_stories/icons/flow.svg +1 -0
- package/src/_stories/icons/plugin.svg +1 -0
- package/src/_stories/icons/repo.svg +1 -0
- package/src/_stories/icons/stackalt.svg +1 -0
- package/src/components/Accordion/accordion.stories.mdx +240 -0
- package/src/components/Accordion/components/AccordionItem.tsx +53 -0
- package/src/components/Accordion/components/AriaAccordionItem.tsx +76 -0
- package/src/components/Accordion/hooks/useAccordionState.ts +46 -0
- package/src/components/Accordion/index.tsx +38 -0
- package/{components/Accordion/interface.d.ts → src/components/Accordion/interface.ts} +23 -17
- package/src/components/Alerts/alerts.stories.mdx +282 -0
- package/src/components/Alerts/components/AlertsCloseButton.tsx +20 -0
- package/src/components/Alerts/components/AlertsItem.tsx +39 -0
- package/src/components/Alerts/components/AlertsNavigationButton.tsx +71 -0
- package/src/components/Alerts/components/AlertsSwiper.tsx +125 -0
- package/src/components/Alerts/components/pagination/AlertsPagination.tsx +32 -0
- package/src/components/Alerts/components/pagination/AlertsPaginationBullet.tsx +61 -0
- package/src/components/Alerts/index.tsx +54 -0
- package/src/components/Alerts/interface.ts +51 -0
- package/src/components/Box/box.stories.mdx +27 -0
- package/src/components/Box/index.tsx +36 -0
- package/src/components/Box/interface.ts +10 -0
- package/src/components/Button/button.stories.mdx +99 -0
- package/src/components/Button/index.tsx +92 -0
- package/src/components/Button/interface.ts +22 -0
- package/src/components/Calendar/RangeCalendar.tsx +61 -0
- package/src/components/Calendar/calendar.stories.mdx +28 -0
- package/src/components/Calendar/components/CalendarCell.tsx +60 -0
- package/src/components/Calendar/components/CalendarGrid.tsx +44 -0
- package/src/components/Calendar/index.tsx +63 -0
- package/src/components/Calendar/interface.ts +37 -0
- package/src/components/Carousel/carousel.stories.mdx +182 -0
- package/src/components/Carousel/index.tsx +99 -0
- package/src/components/Carousel/interface.ts +26 -0
- package/src/components/Date/date.stories.mdx +122 -0
- package/src/components/Date/index.tsx +35 -0
- package/src/components/Date/interface.ts +7 -0
- package/src/components/Dialog/index.tsx +14 -0
- package/src/components/Dialog/interface.ts +6 -0
- package/src/components/DirectusImg/index.tsx +59 -0
- package/src/components/DirectusImg/interface.ts +19 -0
- package/src/components/Icon/index.tsx +40 -0
- package/src/components/Icon/interface.ts +8 -0
- package/src/components/Img/img.stories.mdx +28 -0
- package/src/components/Img/index.tsx +30 -0
- package/src/components/Img/interface.ts +9 -0
- package/src/components/Lightbox/hooks/overlay/index.tsx +36 -0
- package/src/components/Lightbox/index.tsx +82 -0
- package/src/components/Lightbox/interface.ts +28 -0
- package/src/components/Lightbox/lightbox.stories.mdx +79 -0
- package/src/components/Menu/Menu.tsx +43 -0
- package/src/components/Menu/MenuSidePanel.tsx +41 -0
- package/src/components/Menu/components/InnerContent.tsx +26 -0
- package/src/components/Menu/components/MenuItems.tsx +133 -0
- package/src/components/Menu/components/TabContainer.tsx +13 -0
- package/src/components/Menu/interface.ts +41 -0
- package/src/components/Menu/menu.stories.mdx +23 -0
- package/src/components/Modal/components/ModalDialog.tsx +31 -0
- package/src/components/Modal/components/ModalOverlay.tsx +21 -0
- package/src/components/Modal/index.tsx +32 -0
- package/{components/Modal/interface.d.ts → src/components/Modal/interface.ts} +14 -11
- package/src/components/Popover/index.tsx +138 -0
- package/src/components/Popover/interface.ts +25 -0
- package/src/components/Popover/popover.stories.mdx +66 -0
- package/src/components/ShareButton/index.tsx +172 -0
- package/src/components/ShareButton/interface.ts +29 -0
- package/src/components/ShareButton/share-button.stories.mdx +48 -0
- package/src/components/ShareButton/utils/generateUtmTags.ts +4 -0
- package/src/components/ShareButton/utils/useFacebookShareUrl.ts +15 -0
- package/src/components/ShareButton/utils/useMailToShareUrl.ts +15 -0
- package/src/components/ShareButton/utils/useTwitterShareUrl.ts +15 -0
- package/src/components/ShareButton/utils/useWindow.ts +17 -0
- package/src/components/SidePanel/index.tsx +43 -0
- package/src/components/SidePanel/interface.ts +16 -0
- package/src/components/SidePanel/side-panel.stories.mdx +44 -0
- package/src/components/TabList/components/Tab/Tab.tsx +19 -0
- package/src/components/TabList/components/TabPanel/TabPanel.tsx +27 -0
- package/src/components/TabList/index.tsx +44 -0
- package/src/components/TabList/interface.ts +23 -0
- package/src/components/Typography/index.tsx +35 -0
- package/src/components/Typography/interface.ts +9 -0
- package/src/components/Typography/typo.stories.mdx +157 -0
- package/src/components/WysiwygBlock/index.tsx +20 -0
- package/src/components/WysiwygBlock/interface.ts +7 -0
- package/src/components/WysiwygBlock/wysiwyg.stories.mdx +53 -0
- package/src/components/fields/Checkbox/Checkbox.interface.ts +21 -0
- package/src/components/fields/Checkbox/Checkbox.stories.mdx +127 -0
- package/src/components/fields/Checkbox/index.tsx +62 -0
- package/src/components/fields/CheckboxGroup/checkbox-group.stories.mdx +59 -0
- package/src/components/fields/CheckboxGroup/components/CheckboxGroupItem/index.tsx +66 -0
- package/src/components/fields/CheckboxGroup/index.tsx +49 -0
- package/src/components/fields/CheckboxGroup/interface.ts +17 -0
- package/src/components/fields/DatePicker/DateRangePicker.tsx +73 -0
- package/src/components/fields/DatePicker/components/CalendarPopover.tsx +31 -0
- package/src/components/fields/DatePicker/components/DateField.tsx +61 -0
- package/src/components/fields/DatePicker/date-picker.stories.mdx +55 -0
- package/src/components/fields/DatePicker/index.tsx +71 -0
- package/src/components/fields/DatePicker/interface.ts +69 -0
- package/src/components/fields/Radio/Radio.interface.ts +30 -0
- package/src/components/fields/Radio/index.tsx +63 -0
- package/src/components/fields/RadioGroup/index.tsx +33 -0
- package/src/components/fields/RadioGroup/interface.ts +10 -0
- package/src/components/fields/RadioGroup/radio-group.stories.mdx +56 -0
- package/src/components/fields/SearchField/index.tsx +59 -0
- package/src/components/fields/SearchField/interface.ts +10 -0
- package/src/components/fields/SearchField/search.stories.mdx +91 -0
- package/src/components/fields/Select/Select.interface.ts +24 -0
- package/src/components/fields/Select/Select.stories.mdx +53 -0
- package/src/components/fields/Select/Select.tsx +108 -0
- package/{components/fields/Select/components/Listbox.interface.d.ts → src/components/fields/Select/components/Listbox.interface.ts} +11 -8
- package/src/components/fields/Select/components/Listbox.tsx +40 -0
- package/src/components/fields/Select/components/Popover.interface.ts +14 -0
- package/src/components/fields/Select/components/Popover.tsx +32 -0
- package/{components/fields/SelectItem/SelectItem.interface.d.ts → src/components/fields/SelectItem/SelectItem.interface.ts} +4 -3
- package/src/components/fields/SelectItem/SelectItem.tsx +10 -0
- package/src/components/fields/TextArea/index.tsx +105 -0
- package/src/components/fields/TextArea/textArea.stories.mdx +60 -0
- package/src/components/fields/TextInputField/index.tsx +107 -0
- package/src/components/fields/TextInputField/interface.ts +30 -0
- package/src/components/fields/TextInputField/text-input-field.stories.mdx +64 -0
- package/src/components/icons/ArrowDown.tsx +11 -0
- package/src/components/icons/ArrowLeft.tsx +18 -0
- package/src/components/icons/ArrowRight.tsx +18 -0
- package/src/components/icons/Check.tsx +11 -0
- package/src/components/icons/ChevronLeft.tsx +11 -0
- package/src/components/icons/ChevronRight.tsx +11 -0
- package/src/components/icons/CloseBtn.tsx +11 -0
- package/src/components/icons/Facebook.tsx +14 -0
- package/src/components/icons/FacebookColored.tsx +16 -0
- package/src/components/icons/FacebookRounded.tsx +16 -0
- package/src/components/icons/Globe.tsx +38 -0
- package/src/components/icons/IconFallback.tsx +8 -0
- package/src/components/icons/Instagram.tsx +14 -0
- package/src/components/icons/InstagramColored.tsx +59 -0
- package/src/components/icons/Link.tsx +14 -0
- package/src/components/icons/LinkedIn.tsx +16 -0
- package/src/components/icons/Mail.tsx +16 -0
- package/src/components/icons/Plus.tsx +18 -0
- package/src/components/icons/Search.tsx +19 -0
- package/src/components/icons/Share.tsx +16 -0
- package/src/components/icons/Twitter.tsx +16 -0
- package/src/components/icons/TwitterColored.tsx +16 -0
- package/src/components/icons/Upload.tsx +14 -0
- package/src/components/icons/X.tsx +14 -0
- package/src/components/icons/YouTube.tsx +16 -0
- package/src/components/icons/YouTubeColored.tsx +17 -0
- package/src/components/icons/index.ts +24 -0
- package/src/examples/PageLayout/index.tsx +61 -0
- package/src/examples/PageLayout/layout.stories.mdx +35 -0
- package/{index.d.ts → src/index.ts} +72 -57
- package/src/message.tsx +8 -0
- package/src/providers/Accordion/index.tsx +15 -0
- package/src/providers/Accordion/interface.ts +14 -0
- package/src/providers/Alerts/index.tsx +15 -0
- package/src/providers/Alerts/interface.ts +11 -0
- package/src/providers/CheckboxGroup/index.tsx +22 -0
- package/{providers/CheckboxGroup/interface.d.ts → src/providers/CheckboxGroup/interface.ts} +5 -4
- package/src/providers/Client/index.tsx +21 -0
- package/src/providers/Client/interface.ts +13 -0
- package/src/providers/Menu/index.tsx +43 -0
- package/src/providers/Menu/interface.ts +32 -0
- package/src/providers/RadioGroup/RadioGroup.interface.ts +8 -0
- package/src/providers/RadioGroup/RadioGroup.tsx +25 -0
- package/src/providers/SidePanel/index.tsx +55 -0
- package/src/providers/SidePanel/interface.ts +26 -0
- package/src/providers/Theme/hooks.ts +25 -0
- package/src/providers/Theme/index.tsx +40 -0
- package/src/providers/Theme/interface.ts +28 -0
- package/src/providers/Theme/utils.ts +3 -0
- package/src/providers/UserSearchQuery/index.tsx +20 -0
- package/src/providers/UserSearchQuery/interface.ts +12 -0
- package/src/storybook/Lightbox/LightboxControlledState.tsx +28 -0
- package/src/storybook/Menu/Menu.tsx +177 -0
- package/src/storybook/Menu/NestedMenu.tsx +24 -0
- package/src/storybook/Menu/mock.tsx +84 -0
- package/src/storybook/SelectField/index.tsx +57 -0
- package/src/storybook/ShareButtonExample/index.tsx +66 -0
- package/src/tailwind.css +3 -0
- package/src/theme/Accordion/index.tsx +101 -0
- package/src/theme/Alerts/index.ts +97 -0
- package/src/theme/Box/index.ts +45 -0
- package/src/theme/Button/index.tsx +72 -0
- package/src/theme/Calendar/index.tsx +167 -0
- package/src/theme/Carousel/index.ts +36 -0
- package/src/theme/Checkbox/index.ts +49 -0
- package/src/theme/CheckboxGroup/index.ts +14 -0
- package/src/theme/DatePicker/index.tsx +42 -0
- package/src/theme/Image/index.ts +8 -0
- package/src/theme/LightBox/index.ts +56 -0
- package/src/theme/Radio/index.ts +31 -0
- package/src/theme/RadioGroup/index.ts +14 -0
- package/src/theme/Search/index.ts +20 -0
- package/src/theme/ShareButton/index.tsx +76 -0
- package/src/theme/SidePanel/index.ts +9 -0
- package/src/theme/TextArea/index.ts +25 -0
- package/src/theme/Typography/index.tsx +44 -0
- package/src/theme/index.tsx +178 -0
- package/src/transitions/AccordionTransition.tsx +26 -0
- package/src/transitions/ModalTransition.tsx +38 -0
- package/src/transitions/RenderWithOpacity.tsx +25 -0
- package/src/transitions/RenderWithSlide.tsx +21 -0
- package/src/transitions/SidePanelTransition.tsx +30 -0
- package/src/types/components.ts +34 -0
- package/static/images/image.png +0 -0
- package/tailwind.config.js +14 -0
- package/tsconfig.json +20 -0
- package/tsconfig.lib.json +25 -0
- package/vite.config.ts +58 -0
- package/components/Accordion/components/AccordionItem.d.ts +0 -3
- package/components/Accordion/components/AriaAccordionItem.d.ts +0 -3
- package/components/Accordion/hooks/useAccordionState.d.ts +0 -10
- package/components/Accordion/index.d.ts +0 -3
- package/components/Alerts/components/AlertsCloseButton.d.ts +0 -4
- package/components/Alerts/components/AlertsItem.d.ts +0 -3
- package/components/Alerts/components/AlertsNavigationButton.d.ts +0 -8
- package/components/Alerts/components/AlertsSwiper.d.ts +0 -3
- package/components/Alerts/components/pagination/AlertsPagination.d.ts +0 -3
- package/components/Alerts/components/pagination/AlertsPaginationBullet.d.ts +0 -3
- package/components/Alerts/index.d.ts +0 -3
- package/components/Alerts/interface.d.ts +0 -41
- package/components/Box/index.d.ts +0 -5
- package/components/Box/interface.d.ts +0 -10
- package/components/Button/index.d.ts +0 -6
- package/components/Button/interface.d.ts +0 -20
- package/components/Calendar/RangeCalendar.d.ts +0 -3
- package/components/Calendar/components/CalendarCell.d.ts +0 -3
- package/components/Calendar/components/CalendarGrid.d.ts +0 -3
- package/components/Calendar/index.d.ts +0 -3
- package/components/Calendar/interface.d.ts +0 -32
- package/components/Carousel/index.d.ts +0 -3
- package/components/Carousel/interface.d.ts +0 -24
- package/components/Date/index.d.ts +0 -3
- package/components/Date/interface.d.ts +0 -6
- package/components/Dialog/index.d.ts +0 -2
- package/components/Dialog/interface.d.ts +0 -6
- package/components/DirectusImg/index.d.ts +0 -3
- package/components/DirectusImg/interface.d.ts +0 -13
- package/components/Icon/index.d.ts +0 -3
- package/components/Icon/interface.d.ts +0 -7
- package/components/Img/index.d.ts +0 -3
- package/components/Img/interface.d.ts +0 -6
- package/components/Lightbox/index.d.ts +0 -3
- package/components/Lightbox/interface.d.ts +0 -25
- package/components/Menu/Menu.d.ts +0 -3
- package/components/Menu/MenuSidePanel.d.ts +0 -3
- package/components/Menu/components/InnerContent.d.ts +0 -3
- package/components/Menu/components/MenuItems.d.ts +0 -3
- package/components/Menu/components/TabContainer.d.ts +0 -3
- package/components/Menu/interface.d.ts +0 -31
- package/components/Modal/components/ModalDialog.d.ts +0 -3
- package/components/Modal/components/ModalOverlay.d.ts +0 -3
- package/components/Modal/index.d.ts +0 -3
- package/components/Popover/index.d.ts +0 -3
- package/components/Popover/interface.d.ts +0 -21
- package/components/ShareButton/index.d.ts +0 -4
- package/components/ShareButton/interface.d.ts +0 -26
- package/components/ShareButton/utils/generateUtmTags.d.ts +0 -2
- package/components/ShareButton/utils/useFacebookShareUrl.d.ts +0 -2
- package/components/ShareButton/utils/useMailToShareUrl.d.ts +0 -2
- package/components/ShareButton/utils/useTwitterShareUrl.d.ts +0 -2
- package/components/ShareButton/utils/useWindow.d.ts +0 -5
- package/components/SidePanel/index.d.ts +0 -4
- package/components/SidePanel/interface.d.ts +0 -12
- package/components/TabList/components/TabPanel/TabPanel.d.ts +0 -4
- package/components/TabList/interface.d.ts +0 -18
- package/components/Typography/index.d.ts +0 -5
- package/components/Typography/interface.d.ts +0 -9
- package/components/WysiwygBlock/index.d.ts +0 -3
- package/components/WysiwygBlock/interface.d.ts +0 -5
- package/components/fields/Checkbox/Checkbox.interface.d.ts +0 -18
- package/components/fields/Checkbox/index.d.ts +0 -3
- package/components/fields/CheckboxGroup/components/CheckboxGroupItem/index.d.ts +0 -3
- package/components/fields/CheckboxGroup/index.d.ts +0 -3
- package/components/fields/CheckboxGroup/interface.d.ts +0 -13
- package/components/fields/DatePicker/DateRangePicker.d.ts +0 -3
- package/components/fields/DatePicker/components/CalendarPopover.d.ts +0 -2
- package/components/fields/DatePicker/components/DateField.d.ts +0 -4
- package/components/fields/DatePicker/index.d.ts +0 -3
- package/components/fields/DatePicker/interface.d.ts +0 -37
- package/components/fields/Radio/Radio.interface.d.ts +0 -26
- package/components/fields/Radio/index.d.ts +0 -4
- package/components/fields/RadioGroup/index.d.ts +0 -3
- package/components/fields/RadioGroup/interface.d.ts +0 -9
- package/components/fields/SearchField/index.d.ts +0 -3
- package/components/fields/SearchField/interface.d.ts +0 -9
- package/components/fields/Select/Select.d.ts +0 -4
- package/components/fields/Select/Select.interface.d.ts +0 -26
- package/components/fields/Select/components/Listbox.d.ts +0 -4
- package/components/fields/Select/components/Popover.d.ts +0 -3
- package/components/fields/Select/components/Popover.interface.d.ts +0 -13
- package/components/fields/SelectItem/SelectItem.d.ts +0 -3
- package/components/fields/TextArea/index.d.ts +0 -4
- package/components/fields/TextInputField/index.d.ts +0 -4
- package/components/fields/TextInputField/interface.d.ts +0 -24
- package/components/icons/ArrowDown.d.ts +0 -3
- package/components/icons/ArrowLeft.d.ts +0 -3
- package/components/icons/ArrowRight.d.ts +0 -3
- package/components/icons/Check.d.ts +0 -3
- package/components/icons/ChevronLeft.d.ts +0 -3
- package/components/icons/ChevronRight.d.ts +0 -3
- package/components/icons/CloseBtn.d.ts +0 -3
- package/components/icons/Facebook.d.ts +0 -3
- package/components/icons/FacebookColored.d.ts +0 -3
- package/components/icons/FacebookRounded.d.ts +0 -3
- package/components/icons/Globe.d.ts +0 -3
- package/components/icons/IconFallback.d.ts +0 -3
- package/components/icons/Instagram.d.ts +0 -3
- package/components/icons/InstagramColored.d.ts +0 -3
- package/components/icons/Link.d.ts +0 -3
- package/components/icons/LinkedIn.d.ts +0 -3
- package/components/icons/Mail.d.ts +0 -3
- package/components/icons/Plus.d.ts +0 -3
- package/components/icons/Search.d.ts +0 -3
- package/components/icons/Share.d.ts +0 -3
- package/components/icons/Twitter.d.ts +0 -3
- package/components/icons/TwitterColored.d.ts +0 -3
- package/components/icons/Upload.d.ts +0 -3
- package/components/icons/X.d.ts +0 -3
- package/components/icons/YouTube.d.ts +0 -3
- package/components/icons/YouTubeColored.d.ts +0 -3
- package/components/icons/index.d.ts +0 -24
- package/index.js +0 -110
- package/index.mjs +0 -12897
- package/providers/Accordion/index.d.ts +0 -4
- package/providers/Accordion/interface.d.ts +0 -12
- package/providers/Alerts/index.d.ts +0 -4
- package/providers/Alerts/interface.d.ts +0 -9
- package/providers/CheckboxGroup/index.d.ts +0 -5
- package/providers/Client/index.d.ts +0 -4
- package/providers/Client/interface.d.ts +0 -10
- package/providers/Menu/index.d.ts +0 -4
- package/providers/Menu/interface.d.ts +0 -28
- package/providers/RadioGroup/RadioGroup.d.ts +0 -5
- package/providers/RadioGroup/RadioGroup.interface.d.ts +0 -7
- package/providers/SidePanel/index.d.ts +0 -4
- package/providers/SidePanel/interface.d.ts +0 -23
- package/providers/Theme/hooks.d.ts +0 -3
- package/providers/Theme/index.d.ts +0 -10
- package/providers/Theme/interface.d.ts +0 -24
- package/providers/Theme/utils.d.ts +0 -2
- package/providers/UserSearchQuery/index.d.ts +0 -4
- package/providers/UserSearchQuery/interface.d.ts +0 -10
- package/style.css +0 -1
- package/theme/Accordion/index.d.ts +0 -274
- package/theme/Alerts/index.d.ts +0 -1167
- package/theme/Box/index.d.ts +0 -214
- package/theme/Button/index.d.ts +0 -121
- package/theme/Calendar/index.d.ts +0 -366
- package/theme/Carousel/index.d.ts +0 -9
- package/theme/Checkbox/index.d.ts +0 -159
- package/theme/CheckboxGroup/index.d.ts +0 -30
- package/theme/DatePicker/index.d.ts +0 -43
- package/theme/Image/index.d.ts +0 -3
- package/theme/LightBox/index.d.ts +0 -455
- package/theme/Radio/index.d.ts +0 -108
- package/theme/RadioGroup/index.d.ts +0 -30
- package/theme/Search/index.d.ts +0 -30
- package/theme/ShareButton/index.d.ts +0 -174
- package/theme/SidePanel/index.d.ts +0 -3
- package/theme/TextArea/index.d.ts +0 -29
- package/theme/Typography/index.d.ts +0 -233
- package/theme/index.d.ts +0 -5
- package/transitions/AccordionTransition.d.ts +0 -3
- package/transitions/ModalTransition.d.ts +0 -7
- package/transitions/RenderWithOpacity.d.ts +0 -3
- package/transitions/RenderWithSlide.d.ts +0 -7
- package/transitions/SidePanelTransition.d.ts +0 -7
- package/types/components.d.ts +0 -28
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import isEqual from 'lodash.isequal'
|
|
2
|
+
import React, { memo } from 'react'
|
|
3
|
+
|
|
4
|
+
const SvgComponent = (props: React.SVGProps<SVGSVGElement>) => (
|
|
5
|
+
<svg width={24} height={24} xmlns="http://www.w3.org/2000/svg" xmlSpace="preserve" viewBox="0 0 256 256" {...props}>
|
|
6
|
+
<path
|
|
7
|
+
fill="currentColor"
|
|
8
|
+
strokeMiterlimit="10"
|
|
9
|
+
strokeWidth="0"
|
|
10
|
+
d="M81 231A147 147 0 0 0 228 76c11-7 19-16 26-27-9 5-19 7-29 9 10-7 18-17 22-29-10 6-21 10-33 12a52 52 0 0 0-88 48C83 87 45 66 19 35a52 52 0 0 0 16 69c-8 0-16-3-23-7v1c0 25 17 46 41 51a52 52 0 0 1-23 1c6 20 26 35 48 36a104 104 0 0 1-77 21c23 15 51 24 80 24"
|
|
11
|
+
/>
|
|
12
|
+
</svg>
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
const Twitter = memo(SvgComponent, isEqual)
|
|
16
|
+
export default Twitter
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import isEqual from 'lodash.isequal'
|
|
2
|
+
import React, { memo } from 'react'
|
|
3
|
+
|
|
4
|
+
const SvgComponent = (props: React.SVGProps<SVGSVGElement>) => (
|
|
5
|
+
<svg width={24} height={24} xmlns="http://www.w3.org/2000/svg" xmlSpace="preserve" viewBox="0 0 256 256" {...props}>
|
|
6
|
+
<path
|
|
7
|
+
fill="#1da1f2"
|
|
8
|
+
strokeMiterlimit="10"
|
|
9
|
+
strokeWidth="0"
|
|
10
|
+
d="M81 230.6c95.4 0 147.6-79 147.6-147.6 0-2.3 0-4.5-.2-6.7 10.2-7.4 19-16.5 25.9-26.9-9.5 4.2-19.5 7-29.8 8.2a52 52 0 0 0 22.8-28.7 104 104 0 0 1-33 12.6A52 52 0 0 0 126 88.8C84.2 86.7 45.4 67 19 34.6a52 52 0 0 0 16 69.2 51.5 51.5 0 0 1-23.5-6.5v.7c0 24.7 17.4 46 41.6 50.9-7.6 2-15.6 2.4-23.4.9a52 52 0 0 0 48.5 36 104.1 104.1 0 0 1-76.8 21.5A146.9 146.9 0 0 0 81 230.6"
|
|
11
|
+
/>
|
|
12
|
+
</svg>
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
const TwitterColored = memo(SvgComponent, isEqual)
|
|
16
|
+
export default TwitterColored
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import isEqual from 'lodash.isequal'
|
|
2
|
+
import React, { memo } from 'react'
|
|
3
|
+
|
|
4
|
+
const SvgComponent = (props: React.SVGProps<SVGSVGElement>) => (
|
|
5
|
+
<svg width={24} height={24} fill="currentColor" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}>
|
|
6
|
+
<path
|
|
7
|
+
d="M17 21H7a4 4 0 0 1-4-4v-1a1 1 0 1 1 2 0v1a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-1a1 1 0 0 1 2 0v1a4 4 0 0 1-4 4Zm-5-4a1 1 0 0 1-1-1V6.41l-2.29 2.3a1.004 1.004 0 0 1-1.42-1.42l4-4a1 1 0 0 1 .33-.21A1 1 0 0 1 12 3a1 1 0 0 1 .38.08 1 1 0 0 1 .33.21l4 4a1.004 1.004 0 1 1-1.42 1.42L13 6.41V16a1 1 0 0 1-1 1Z"
|
|
8
|
+
fill="currentColor"
|
|
9
|
+
/>
|
|
10
|
+
</svg>
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
const Upload = memo(SvgComponent, isEqual)
|
|
14
|
+
export default Upload
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import isEqual from 'lodash.isequal'
|
|
2
|
+
import React, { memo } from 'react'
|
|
3
|
+
|
|
4
|
+
const SvgComponent = (props: React.SVGProps<SVGSVGElement>) => (
|
|
5
|
+
<svg xmlns="http://www.w3.org/2000/svg" width={24} height={25} viewBox="0 0 24 25" fill="none" {...props}>
|
|
6
|
+
<path
|
|
7
|
+
d="M14.119 11.7052L20.4486 4.5H18.9492L13.4509 10.7549L9.0626 4.5H4L10.6374 13.9594L4 21.5142H5.4994L11.3021 14.9074L15.9374 21.5142H21M6.04057 5.60727H8.34407L18.9481 20.4613H16.644"
|
|
8
|
+
fill="currentColor"
|
|
9
|
+
/>
|
|
10
|
+
</svg>
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
const X = memo(SvgComponent, isEqual)
|
|
14
|
+
export default X
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import isEqual from 'lodash.isequal'
|
|
2
|
+
import React, { memo } from 'react'
|
|
3
|
+
|
|
4
|
+
const SvgComponent = (props: React.SVGProps<SVGSVGElement>) => (
|
|
5
|
+
<svg width={24} height={24} xmlns="http://www.w3.org/2000/svg" xmlSpace="preserve" viewBox="0 0 256 256" {...props}>
|
|
6
|
+
<path
|
|
7
|
+
fill="currentColor"
|
|
8
|
+
strokeMiterlimit="10"
|
|
9
|
+
strokeWidth="0"
|
|
10
|
+
d="M249 67c-3-11-11-19-22-22-20-6-99-6-99-6s-79 0-99 6C18 48 10 56 7 67c-6 20-6 61-6 61s0 41 6 61c3 11 11 19 22 22 20 5 99 5 99 5s79 0 99-5c11-3 19-11 22-22 5-20 5-61 5-61s0-41-5-61zm-146 99V90l65 38-65 38z"
|
|
11
|
+
/>
|
|
12
|
+
</svg>
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
const YouTube = memo(SvgComponent, isEqual)
|
|
16
|
+
export default YouTube
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import isEqual from 'lodash.isequal'
|
|
2
|
+
import React, { memo } from 'react'
|
|
3
|
+
|
|
4
|
+
const SvgComponent = (props: React.SVGProps<SVGSVGElement>) => (
|
|
5
|
+
<svg width={24} height={24} xmlns="http://www.w3.org/2000/svg" xmlSpace="preserve" viewBox="0 0 256 256" {...props}>
|
|
6
|
+
<g fill="currentColor" strokeMiterlimit="10" strokeWidth="0">
|
|
7
|
+
<path
|
|
8
|
+
fill="red"
|
|
9
|
+
d="M249.02 66.99a31.68 31.68 0 0 0-22.36-22.36c-19.72-5.29-98.8-5.29-98.8-5.29s-79.09 0-98.8 5.29A31.68 31.68 0 0 0 6.68 66.99c-5.28 19.72-5.28 60.87-5.28 60.87s0 41.15 5.28 60.87a31.68 31.68 0 0 0 22.36 22.36c19.72 5.28 98.8 5.28 98.8 5.28s79.1 0 98.81-5.28a31.68 31.68 0 0 0 22.36-22.36c5.29-19.72 5.29-60.87 5.29-60.87s0-41.15-5.29-60.87z"
|
|
10
|
+
/>
|
|
11
|
+
<path fill="#fff" d="m102.57 165.8 65.7-37.94-65.7-37.94z" />
|
|
12
|
+
</g>
|
|
13
|
+
</svg>
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
const YouTubeColored = memo(SvgComponent, isEqual)
|
|
17
|
+
export default YouTubeColored
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export { default as ArrowDown } from './ArrowDown'
|
|
2
|
+
export { default as ArrowLeft } from './ArrowLeft'
|
|
3
|
+
export { default as ArrowRight } from './ArrowRight'
|
|
4
|
+
export { default as Check } from './Check'
|
|
5
|
+
export { default as ChevronLeft } from './ChevronLeft'
|
|
6
|
+
export { default as ChevronRight } from './ChevronRight'
|
|
7
|
+
export { default as CloseBtn } from './CloseBtn'
|
|
8
|
+
export { default as Facebook } from './Facebook'
|
|
9
|
+
export { default as FacebookColored } from './FacebookColored'
|
|
10
|
+
export { default as FacebookRounded } from './FacebookRounded'
|
|
11
|
+
export { default as Globe } from './Globe'
|
|
12
|
+
export { default as Instagram } from './Instagram'
|
|
13
|
+
export { default as InstagramColored } from './InstagramColored'
|
|
14
|
+
export { default as Link } from './Link'
|
|
15
|
+
export { default as LinkedIn } from './LinkedIn'
|
|
16
|
+
export { default as Mail } from './Mail'
|
|
17
|
+
export { default as Plus } from './Plus'
|
|
18
|
+
export { default as Share } from './Share'
|
|
19
|
+
export { default as Twitter } from './Twitter'
|
|
20
|
+
export { default as TwitterColored } from './TwitterColored'
|
|
21
|
+
export { default as Upload } from './Upload'
|
|
22
|
+
export { default as X } from './X'
|
|
23
|
+
export { default as YouTube } from './YouTube'
|
|
24
|
+
export { default as YouTubeColored } from './YouTubeColored'
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import Box from '../../components/Box'
|
|
2
|
+
import type { TBoxProps } from '../../components/Box/interface'
|
|
3
|
+
import Typography from '../../components/Typography'
|
|
4
|
+
|
|
5
|
+
const Main = ({ children }: TBoxProps) => {
|
|
6
|
+
return (
|
|
7
|
+
<Box as="main" themeName="main">
|
|
8
|
+
{children}
|
|
9
|
+
</Box>
|
|
10
|
+
)
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const Container = ({ children, ...props }: TBoxProps) => {
|
|
14
|
+
return (
|
|
15
|
+
<Box themeName="container" {...props}>
|
|
16
|
+
{children}
|
|
17
|
+
</Box>
|
|
18
|
+
)
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const Grid = ({ children, ...props }: TBoxProps) => {
|
|
22
|
+
return (
|
|
23
|
+
<Box themeName="grid" {...props}>
|
|
24
|
+
{children}
|
|
25
|
+
</Box>
|
|
26
|
+
)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const GridItem = ({ children, ...props }: TBoxProps) => {
|
|
30
|
+
return (
|
|
31
|
+
<Box as="li" themeName="gridItem" {...props}>
|
|
32
|
+
{children}
|
|
33
|
+
</Box>
|
|
34
|
+
)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const PageLayoutExample = () => (
|
|
38
|
+
<Main>
|
|
39
|
+
<Container tokens={{ spacing: 'small' }}>
|
|
40
|
+
<Typography as="h1" tokens={{ size: 'h1', align: 'center' }}>
|
|
41
|
+
Hello world
|
|
42
|
+
</Typography>
|
|
43
|
+
</Container>
|
|
44
|
+
<Container tokens={{ spacing: 'large' }}>
|
|
45
|
+
<Grid as="ul">
|
|
46
|
+
<GridItem tokens={{ size: 'medium' }}>1</GridItem>
|
|
47
|
+
<GridItem>2</GridItem>
|
|
48
|
+
<GridItem>3</GridItem>
|
|
49
|
+
<GridItem>4</GridItem>
|
|
50
|
+
<GridItem>5</GridItem>
|
|
51
|
+
</Grid>
|
|
52
|
+
</Container>
|
|
53
|
+
<Container tokens={{ fullWidth: true, className: 'bg-red-200 py-8' }}>
|
|
54
|
+
<Grid as="ul">
|
|
55
|
+
<GridItem tokens={{ size: 'large', className: 'h-96' }}>Large</GridItem>
|
|
56
|
+
</Grid>
|
|
57
|
+
</Container>
|
|
58
|
+
</Main>
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
export default PageLayoutExample
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{/* layout.stories.mdx */}
|
|
2
|
+
|
|
3
|
+
import { Canvas, Meta, Story } from '@storybook/addon-docs'
|
|
4
|
+
import PageLayoutExample from './index'
|
|
5
|
+
|
|
6
|
+
<Meta title="LAYOUT EXAMPLE/Simple" component={PageLayoutExample} />
|
|
7
|
+
|
|
8
|
+
export const Template = (args) => (
|
|
9
|
+
<>
|
|
10
|
+
<style>
|
|
11
|
+
{`
|
|
12
|
+
#storybook-root {
|
|
13
|
+
width: 100%;
|
|
14
|
+
padding: 0! important;
|
|
15
|
+
}
|
|
16
|
+
`}
|
|
17
|
+
</style>
|
|
18
|
+
<PageLayoutExample {...args} />
|
|
19
|
+
</>
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
# Box
|
|
23
|
+
|
|
24
|
+
Box component. Generic wrapper for your website or app.
|
|
25
|
+
|
|
26
|
+
<Canvas layout="fullscreen">
|
|
27
|
+
<Story
|
|
28
|
+
name="Box"
|
|
29
|
+
args={{
|
|
30
|
+
as: 'div',
|
|
31
|
+
}}
|
|
32
|
+
>
|
|
33
|
+
{Template.bind({})}
|
|
34
|
+
</Story>
|
|
35
|
+
</Canvas>
|
|
@@ -1,57 +1,72 @@
|
|
|
1
|
-
export { default as ThemeProvider } from './theme'
|
|
2
|
-
|
|
3
|
-
export { default as
|
|
4
|
-
export { default as
|
|
5
|
-
export { default as
|
|
6
|
-
export { default as
|
|
7
|
-
export { default as
|
|
8
|
-
export { default as
|
|
9
|
-
export { default as
|
|
10
|
-
export { default as
|
|
11
|
-
export { default as
|
|
12
|
-
export { default as
|
|
13
|
-
export { default as
|
|
14
|
-
export { default as
|
|
15
|
-
export { default as
|
|
16
|
-
export { default as
|
|
17
|
-
export { default as
|
|
18
|
-
export { default as
|
|
19
|
-
export { default as
|
|
20
|
-
export { default as
|
|
21
|
-
export { default as
|
|
22
|
-
export { default as
|
|
23
|
-
export { default as
|
|
24
|
-
export { default as
|
|
25
|
-
export { default as
|
|
26
|
-
export { default as
|
|
27
|
-
export { default as
|
|
28
|
-
export { default as
|
|
29
|
-
export { default as
|
|
30
|
-
export { default as
|
|
31
|
-
export { default as
|
|
32
|
-
export { default as
|
|
33
|
-
export { default as
|
|
34
|
-
export { default as
|
|
35
|
-
export { default as
|
|
36
|
-
export { default as
|
|
37
|
-
export { default as
|
|
38
|
-
export
|
|
39
|
-
export
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
export {
|
|
43
|
-
export {
|
|
44
|
-
export {
|
|
45
|
-
export {
|
|
46
|
-
export {
|
|
47
|
-
export
|
|
48
|
-
export
|
|
49
|
-
export
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
export {
|
|
53
|
-
export {
|
|
54
|
-
export {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
1
|
+
export { default as ThemeProvider } from './theme'
|
|
2
|
+
|
|
3
|
+
export { default as Typography } from './components/Typography'
|
|
4
|
+
export { default as Accordion } from './components/Accordion'
|
|
5
|
+
export { default as AccordionItem } from './components/Accordion/components/AccordionItem'
|
|
6
|
+
export { default as Button, ButtonWithForwardRef } from './components/Button'
|
|
7
|
+
export { default as ShareButton } from './components/ShareButton'
|
|
8
|
+
export { default as SidePanel } from './components/SidePanel'
|
|
9
|
+
export { default as Lightbox } from './components/Lightbox'
|
|
10
|
+
export { default as Popover } from './components/Popover'
|
|
11
|
+
export { default as Carousel } from './components/Carousel'
|
|
12
|
+
export { default as WysiwygBlock } from './components/WysiwygBlock'
|
|
13
|
+
export { default as Icon } from './components/Icon'
|
|
14
|
+
export { default as Date } from './components/Date'
|
|
15
|
+
export { default as Select, ReactHookFormSelect } from './components/fields/Select/Select'
|
|
16
|
+
export { default as Checkbox } from './components/fields/Checkbox'
|
|
17
|
+
export { default as SearchField } from './components/fields/SearchField'
|
|
18
|
+
export { default as CheckboxGroup } from './components/fields/CheckboxGroup'
|
|
19
|
+
export { default as CheckboxGroupItem } from './components/fields/CheckboxGroup/components/CheckboxGroupItem'
|
|
20
|
+
export { default as TextArea, ReactHookFormTextArea } from './components/fields/TextArea'
|
|
21
|
+
export { default as TextInputField, ReactHookFormInput } from './components/fields/TextInputField'
|
|
22
|
+
export { default as DatePicker } from './components/fields/DatePicker'
|
|
23
|
+
export { default as DateRangePicker } from './components/fields/DatePicker/DateRangePicker'
|
|
24
|
+
export { default as Box, BoxWithForwardRef } from './components/Box'
|
|
25
|
+
export { default as Calendar } from './components/Calendar'
|
|
26
|
+
export { default as Modal } from './components/Modal'
|
|
27
|
+
export { default as Radio, ReactHookFormRadio } from './components/fields/Radio'
|
|
28
|
+
export { default as RadioGroup } from './components/fields/RadioGroup'
|
|
29
|
+
export { default as RenderWithSlide } from './transitions/RenderWithSlide'
|
|
30
|
+
export { default as Menu } from './components/Menu/Menu'
|
|
31
|
+
export { default as MenuSidePanel } from './components/Menu/MenuSidePanel'
|
|
32
|
+
export { default as MenuItems } from './components/Menu/components/MenuItems'
|
|
33
|
+
export { default as TabContainer } from './components/Menu/components/TabContainer'
|
|
34
|
+
export { default as Alerts } from './components/Alerts'
|
|
35
|
+
export { default as AlertsItem } from './components/Alerts/components/AlertsItem'
|
|
36
|
+
export { default as SelectItem } from './components/fields/SelectItem/SelectItem'
|
|
37
|
+
export { default as DirectusImg } from './components/DirectusImg'
|
|
38
|
+
export { default as Img } from './components/Img'
|
|
39
|
+
export * from './components/icons'
|
|
40
|
+
|
|
41
|
+
// providers
|
|
42
|
+
export { makeTheme, createThemeProvider, useTheme, ThemeContextProvider } from './providers/Theme'
|
|
43
|
+
export { default as useThemeContext } from './providers/Theme/hooks'
|
|
44
|
+
export { useIsClient, IsClientContextProvider } from './providers/Client'
|
|
45
|
+
export { useSidePanel, SidePanelContextProvider } from './providers/SidePanel'
|
|
46
|
+
export { MenuContextProvider, useMenu } from './providers/Menu'
|
|
47
|
+
export { RadioGroupProvider, useRadioGroupCtx } from './providers/RadioGroup/RadioGroup'
|
|
48
|
+
export { AccordionContextProvider, useAccordionCtx } from './providers/Accordion'
|
|
49
|
+
export { SearchBarProvider } from './providers/UserSearchQuery'
|
|
50
|
+
|
|
51
|
+
// types & interfaces
|
|
52
|
+
export type { TButtonProps } from './components/Button/interface'
|
|
53
|
+
export type { TTypographyProps } from './components/Typography/interface'
|
|
54
|
+
export type {
|
|
55
|
+
TTheme,
|
|
56
|
+
TToken,
|
|
57
|
+
TCustomTheme,
|
|
58
|
+
TStyle,
|
|
59
|
+
TDefaultTheme,
|
|
60
|
+
TStyleCollection,
|
|
61
|
+
TStyleValue,
|
|
62
|
+
} from './providers/Theme/interface'
|
|
63
|
+
export type { TMenuProps, TMenuItemProps } from './components/Menu/interface'
|
|
64
|
+
export type { TDefaultComponent, Nullable } from './types/components'
|
|
65
|
+
|
|
66
|
+
// utils
|
|
67
|
+
export { default as generateUtmTags } from './components/ShareButton/utils/generateUtmTags'
|
|
68
|
+
export { default as useWindow } from './components/ShareButton/utils/useWindow'
|
|
69
|
+
export { default as useFacebookShareUrl } from './components/ShareButton/utils/useFacebookShareUrl'
|
|
70
|
+
export { default as useMailToShareUrl } from './components/ShareButton/utils/useMailToShareUrl'
|
|
71
|
+
export { default as useTwitterShareUrl } from './components/ShareButton/utils/useTwitterShareUrl'
|
|
72
|
+
export { default as useAccordionState } from './components/Accordion/hooks/useAccordionState'
|
package/src/message.tsx
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
3
|
+
import { createCtxNullable } from '@okam/core-lib'
|
|
4
|
+
import { useMemo } from 'react'
|
|
5
|
+
import type { TAccordionContext, TAccordionProviderProps } from './interface'
|
|
6
|
+
|
|
7
|
+
export const [useAccordionCtx, AccordionProvider] = createCtxNullable<TAccordionContext>()
|
|
8
|
+
|
|
9
|
+
export function AccordionContextProvider(props: TAccordionProviderProps) {
|
|
10
|
+
const { state, children, TransitionAnimation } = props
|
|
11
|
+
|
|
12
|
+
const value = useMemo<TAccordionContext>(() => ({ state, TransitionAnimation }), [state, TransitionAnimation])
|
|
13
|
+
|
|
14
|
+
return <AccordionProvider value={value}>{children}</AccordionProvider>
|
|
15
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ReactNode } from 'react'
|
|
2
|
+
import type { TreeState } from 'react-stately'
|
|
3
|
+
import type { TAccordionItemProps, TAccordionProps } from '../../components/Accordion/interface'
|
|
4
|
+
|
|
5
|
+
type TAccordion = NonNullable<Pick<TAccordionProps, 'TransitionAnimation'>>
|
|
6
|
+
|
|
7
|
+
export interface TAccordionProviderProps extends TAccordion {
|
|
8
|
+
children: ReactNode
|
|
9
|
+
state: TreeState<TAccordionItemProps>
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export type TAccordionContext = TAccordion & {
|
|
13
|
+
state: TreeState<TAccordionItemProps>
|
|
14
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
3
|
+
import { createCtxNullable } from '@okam/core-lib'
|
|
4
|
+
import { useMemo } from 'react'
|
|
5
|
+
import type { TAlertsControllerContext, TAlertsControllerProviderProps } from './interface'
|
|
6
|
+
|
|
7
|
+
export const [useAlertsController, AlertsControllerProvider] = createCtxNullable<TAlertsControllerContext>()
|
|
8
|
+
|
|
9
|
+
export function AlertsControllerContextProvider(props: TAlertsControllerProviderProps) {
|
|
10
|
+
const { controller, children } = props
|
|
11
|
+
|
|
12
|
+
const value = useMemo<TAlertsControllerContext>(() => ({ controller }), [controller])
|
|
13
|
+
|
|
14
|
+
return <AlertsControllerProvider value={value}>{children}</AlertsControllerProvider>
|
|
15
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ReactNode } from 'react'
|
|
2
|
+
import type { SwiperClass } from 'swiper/react'
|
|
3
|
+
|
|
4
|
+
export interface TAlertsControllerProviderProps {
|
|
5
|
+
children: ReactNode
|
|
6
|
+
controller: SwiperClass | undefined
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export type TAlertsControllerContext = {
|
|
10
|
+
controller: SwiperClass | undefined
|
|
11
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
3
|
+
import type { CheckboxGroupState } from '@react-stately/checkbox'
|
|
4
|
+
import { createContext, useContext } from 'react'
|
|
5
|
+
import type { TCheckboxGroupContext } from './interface'
|
|
6
|
+
|
|
7
|
+
const CheckboxGroupContext = createContext<CheckboxGroupState | null>(null)
|
|
8
|
+
|
|
9
|
+
const CheckboxGroupProvider = (props: TCheckboxGroupContext) => {
|
|
10
|
+
const { children, state } = props
|
|
11
|
+
|
|
12
|
+
return <CheckboxGroupContext.Provider value={state}>{children}</CheckboxGroupContext.Provider>
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function useCheckboxGroupCtx() {
|
|
16
|
+
const context = useContext(CheckboxGroupContext)
|
|
17
|
+
|
|
18
|
+
if (!context) return null
|
|
19
|
+
return context
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export { CheckboxGroupProvider, useCheckboxGroupCtx }
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import type React from 'react'
|
|
2
|
-
import type { CheckboxGroupProps, CheckboxGroupState } from 'react-stately'
|
|
1
|
+
import type React from 'react'
|
|
2
|
+
import type { CheckboxGroupProps, CheckboxGroupState } from 'react-stately'
|
|
3
|
+
|
|
3
4
|
export interface TCheckboxGroupContext extends CheckboxGroupProps {
|
|
4
|
-
|
|
5
|
-
|
|
5
|
+
children: React.ReactNode
|
|
6
|
+
state: CheckboxGroupState
|
|
6
7
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
3
|
+
import { createCtx } from '@okam/core-lib'
|
|
4
|
+
import { useEffect, useMemo, useState } from 'react'
|
|
5
|
+
import type { TClientContext, TClientProps, TClientProviderProps } from './interface'
|
|
6
|
+
|
|
7
|
+
const [useIsClient, IsClientProvider] = createCtx<TClientProps>()
|
|
8
|
+
|
|
9
|
+
export { useIsClient }
|
|
10
|
+
|
|
11
|
+
export function IsClientContextProvider({ children }: TClientProviderProps) {
|
|
12
|
+
const [isClient, setIsClient] = useState(false)
|
|
13
|
+
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
setIsClient(true)
|
|
16
|
+
}, [])
|
|
17
|
+
|
|
18
|
+
const value = useMemo<TClientContext>(() => ({ isClient }), [isClient])
|
|
19
|
+
|
|
20
|
+
return <IsClientProvider value={value}>{children}</IsClientProvider>
|
|
21
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
3
|
+
import { createCtxNullable } from '@okam/core-lib'
|
|
4
|
+
import { useMemo } from 'react'
|
|
5
|
+
import { useTabListState } from 'react-stately'
|
|
6
|
+
import { SidePanelContextProvider } from '../SidePanel'
|
|
7
|
+
import type { IMenuProviderProps, TMenuContext } from './interface'
|
|
8
|
+
|
|
9
|
+
export const [useMenu, MenuProvider] = createCtxNullable<TMenuContext>()
|
|
10
|
+
|
|
11
|
+
export function MenuContextProvider({
|
|
12
|
+
children,
|
|
13
|
+
defaultSelectedKey,
|
|
14
|
+
defaultIsOpen,
|
|
15
|
+
onCloseCallback,
|
|
16
|
+
onOpenCallback,
|
|
17
|
+
tabs,
|
|
18
|
+
openBtn,
|
|
19
|
+
closeBtn,
|
|
20
|
+
...rest
|
|
21
|
+
}: IMenuProviderProps) {
|
|
22
|
+
const tabState = useTabListState({ ...rest, children: tabs, defaultSelectedKey })
|
|
23
|
+
const value = useMemo<TMenuContext>(
|
|
24
|
+
() => ({ openBtn, closeBtn, tabState, defaultSelectedKey }),
|
|
25
|
+
[openBtn, closeBtn, tabState, defaultSelectedKey],
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
return (
|
|
29
|
+
<MenuProvider value={value}>
|
|
30
|
+
<SidePanelContextProvider
|
|
31
|
+
onCloseCallback={() => {
|
|
32
|
+
onCloseCallback?.()
|
|
33
|
+
tabState?.setSelectedKey?.(defaultSelectedKey)
|
|
34
|
+
}}
|
|
35
|
+
onOpenCallback={onOpenCallback}
|
|
36
|
+
defaultIsOpen={defaultIsOpen}
|
|
37
|
+
defaultSelectedKey={defaultSelectedKey.toString()}
|
|
38
|
+
>
|
|
39
|
+
{children}
|
|
40
|
+
</SidePanelContextProvider>
|
|
41
|
+
</MenuProvider>
|
|
42
|
+
)
|
|
43
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { CollectionChildren } from '@react-types/shared'
|
|
2
|
+
import type React from 'react'
|
|
3
|
+
import type { AriaTabListProps } from 'react-aria'
|
|
4
|
+
import type { TabListState } from 'react-stately'
|
|
5
|
+
|
|
6
|
+
export type TMenuProviderProps = {
|
|
7
|
+
children: React.ReactNode
|
|
8
|
+
tabs?: CollectionChildren<object>
|
|
9
|
+
defaultSelectedKey: string
|
|
10
|
+
defaultIsOpen?: boolean
|
|
11
|
+
onCloseCallback?: () => void
|
|
12
|
+
onOpenCallback?: () => void
|
|
13
|
+
openBtn?: () => JSX.Element
|
|
14
|
+
closeBtn?: () => JSX.Element
|
|
15
|
+
secondaryOpenBtn?: () => JSX.Element
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export type IMenuProviderProps = AriaTabListProps<TMenuProviderProps> & TMenuProviderProps
|
|
19
|
+
|
|
20
|
+
export type TMenuContext = {
|
|
21
|
+
openBtn?: () => JSX.Element
|
|
22
|
+
closeBtn?: () => JSX.Element
|
|
23
|
+
secondaryOpenBtn?: () => JSX.Element
|
|
24
|
+
tabState: TabListState<object>
|
|
25
|
+
defaultSelectedKey: string
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export type TMenuProps = {
|
|
29
|
+
openBtn?: () => JSX.Element
|
|
30
|
+
closeBtn?: () => JSX.Element
|
|
31
|
+
secondaryOpenBtn?: () => JSX.Element
|
|
32
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { RadioGroupProps } from '@react-types/radio'
|
|
2
|
+
import type { ReactNode } from 'react'
|
|
3
|
+
import type { RadioGroupState } from 'react-stately'
|
|
4
|
+
|
|
5
|
+
export interface TRadioGroupContext extends RadioGroupProps {
|
|
6
|
+
children: ReactNode
|
|
7
|
+
state: RadioGroupState
|
|
8
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
3
|
+
import type { RadioGroupState } from '@react-stately/radio'
|
|
4
|
+
import { createContext, useContext } from 'react'
|
|
5
|
+
import type { TRadioGroupContext } from './RadioGroup.interface'
|
|
6
|
+
|
|
7
|
+
const RadioGroupContext = createContext<RadioGroupState | null>(null)
|
|
8
|
+
|
|
9
|
+
const RadioGroupProvider = (props: TRadioGroupContext) => {
|
|
10
|
+
const { children, state } = props
|
|
11
|
+
|
|
12
|
+
return <RadioGroupContext.Provider value={state}>{children}</RadioGroupContext.Provider>
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function useRadioGroupCtx() {
|
|
16
|
+
const context = useContext(RadioGroupContext)
|
|
17
|
+
|
|
18
|
+
if (context !== null) {
|
|
19
|
+
return context
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return null
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export { RadioGroupProvider, useRadioGroupCtx }
|