@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.
Files changed (382) hide show
  1. package/.eslintrc.js +32 -0
  2. package/.storybook/.eslintrc.js +29 -0
  3. package/.storybook/main.ts +33 -0
  4. package/.storybook/preview.js +56 -0
  5. package/.storybook/tsconfig.json +17 -0
  6. package/CHANGELOG.md +574 -0
  7. package/README.md +8 -0
  8. package/package.json +1 -1
  9. package/postcss.config.js +15 -0
  10. package/project.json +77 -0
  11. package/src/_stories/icons/code-brackets.svg +1 -0
  12. package/src/_stories/icons/colors.svg +1 -0
  13. package/src/_stories/icons/comments.svg +1 -0
  14. package/src/_stories/icons/direction.svg +1 -0
  15. package/src/_stories/icons/flow.svg +1 -0
  16. package/src/_stories/icons/plugin.svg +1 -0
  17. package/src/_stories/icons/repo.svg +1 -0
  18. package/src/_stories/icons/stackalt.svg +1 -0
  19. package/src/components/Accordion/accordion.stories.mdx +240 -0
  20. package/src/components/Accordion/components/AccordionItem.tsx +53 -0
  21. package/src/components/Accordion/components/AriaAccordionItem.tsx +76 -0
  22. package/src/components/Accordion/hooks/useAccordionState.ts +46 -0
  23. package/src/components/Accordion/index.tsx +38 -0
  24. package/{components/Accordion/interface.d.ts → src/components/Accordion/interface.ts} +23 -17
  25. package/src/components/Alerts/alerts.stories.mdx +282 -0
  26. package/src/components/Alerts/components/AlertsCloseButton.tsx +20 -0
  27. package/src/components/Alerts/components/AlertsItem.tsx +39 -0
  28. package/src/components/Alerts/components/AlertsNavigationButton.tsx +71 -0
  29. package/src/components/Alerts/components/AlertsSwiper.tsx +125 -0
  30. package/src/components/Alerts/components/pagination/AlertsPagination.tsx +32 -0
  31. package/src/components/Alerts/components/pagination/AlertsPaginationBullet.tsx +61 -0
  32. package/src/components/Alerts/index.tsx +54 -0
  33. package/src/components/Alerts/interface.ts +51 -0
  34. package/src/components/Box/box.stories.mdx +27 -0
  35. package/src/components/Box/index.tsx +36 -0
  36. package/src/components/Box/interface.ts +10 -0
  37. package/src/components/Button/button.stories.mdx +99 -0
  38. package/src/components/Button/index.tsx +92 -0
  39. package/src/components/Button/interface.ts +22 -0
  40. package/src/components/Calendar/RangeCalendar.tsx +61 -0
  41. package/src/components/Calendar/calendar.stories.mdx +28 -0
  42. package/src/components/Calendar/components/CalendarCell.tsx +60 -0
  43. package/src/components/Calendar/components/CalendarGrid.tsx +44 -0
  44. package/src/components/Calendar/index.tsx +63 -0
  45. package/src/components/Calendar/interface.ts +37 -0
  46. package/src/components/Carousel/carousel.stories.mdx +182 -0
  47. package/src/components/Carousel/index.tsx +99 -0
  48. package/src/components/Carousel/interface.ts +26 -0
  49. package/src/components/Date/date.stories.mdx +122 -0
  50. package/src/components/Date/index.tsx +35 -0
  51. package/src/components/Date/interface.ts +7 -0
  52. package/src/components/Dialog/index.tsx +14 -0
  53. package/src/components/Dialog/interface.ts +6 -0
  54. package/src/components/DirectusImg/index.tsx +59 -0
  55. package/src/components/DirectusImg/interface.ts +19 -0
  56. package/src/components/Icon/index.tsx +40 -0
  57. package/src/components/Icon/interface.ts +8 -0
  58. package/src/components/Img/img.stories.mdx +28 -0
  59. package/src/components/Img/index.tsx +30 -0
  60. package/src/components/Img/interface.ts +9 -0
  61. package/src/components/Lightbox/hooks/overlay/index.tsx +36 -0
  62. package/src/components/Lightbox/index.tsx +82 -0
  63. package/src/components/Lightbox/interface.ts +28 -0
  64. package/src/components/Lightbox/lightbox.stories.mdx +79 -0
  65. package/src/components/Menu/Menu.tsx +43 -0
  66. package/src/components/Menu/MenuSidePanel.tsx +41 -0
  67. package/src/components/Menu/components/InnerContent.tsx +26 -0
  68. package/src/components/Menu/components/MenuItems.tsx +133 -0
  69. package/src/components/Menu/components/TabContainer.tsx +13 -0
  70. package/src/components/Menu/interface.ts +41 -0
  71. package/src/components/Menu/menu.stories.mdx +23 -0
  72. package/src/components/Modal/components/ModalDialog.tsx +31 -0
  73. package/src/components/Modal/components/ModalOverlay.tsx +21 -0
  74. package/src/components/Modal/index.tsx +32 -0
  75. package/{components/Modal/interface.d.ts → src/components/Modal/interface.ts} +14 -11
  76. package/src/components/Popover/index.tsx +138 -0
  77. package/src/components/Popover/interface.ts +25 -0
  78. package/src/components/Popover/popover.stories.mdx +66 -0
  79. package/src/components/ShareButton/index.tsx +172 -0
  80. package/src/components/ShareButton/interface.ts +29 -0
  81. package/src/components/ShareButton/share-button.stories.mdx +48 -0
  82. package/src/components/ShareButton/utils/generateUtmTags.ts +4 -0
  83. package/src/components/ShareButton/utils/useFacebookShareUrl.ts +15 -0
  84. package/src/components/ShareButton/utils/useMailToShareUrl.ts +15 -0
  85. package/src/components/ShareButton/utils/useTwitterShareUrl.ts +15 -0
  86. package/src/components/ShareButton/utils/useWindow.ts +17 -0
  87. package/src/components/SidePanel/index.tsx +43 -0
  88. package/src/components/SidePanel/interface.ts +16 -0
  89. package/src/components/SidePanel/side-panel.stories.mdx +44 -0
  90. package/src/components/TabList/components/Tab/Tab.tsx +19 -0
  91. package/src/components/TabList/components/TabPanel/TabPanel.tsx +27 -0
  92. package/src/components/TabList/index.tsx +44 -0
  93. package/src/components/TabList/interface.ts +23 -0
  94. package/src/components/Typography/index.tsx +35 -0
  95. package/src/components/Typography/interface.ts +9 -0
  96. package/src/components/Typography/typo.stories.mdx +157 -0
  97. package/src/components/WysiwygBlock/index.tsx +20 -0
  98. package/src/components/WysiwygBlock/interface.ts +7 -0
  99. package/src/components/WysiwygBlock/wysiwyg.stories.mdx +53 -0
  100. package/src/components/fields/Checkbox/Checkbox.interface.ts +21 -0
  101. package/src/components/fields/Checkbox/Checkbox.stories.mdx +127 -0
  102. package/src/components/fields/Checkbox/index.tsx +62 -0
  103. package/src/components/fields/CheckboxGroup/checkbox-group.stories.mdx +59 -0
  104. package/src/components/fields/CheckboxGroup/components/CheckboxGroupItem/index.tsx +66 -0
  105. package/src/components/fields/CheckboxGroup/index.tsx +49 -0
  106. package/src/components/fields/CheckboxGroup/interface.ts +17 -0
  107. package/src/components/fields/DatePicker/DateRangePicker.tsx +73 -0
  108. package/src/components/fields/DatePicker/components/CalendarPopover.tsx +31 -0
  109. package/src/components/fields/DatePicker/components/DateField.tsx +61 -0
  110. package/src/components/fields/DatePicker/date-picker.stories.mdx +55 -0
  111. package/src/components/fields/DatePicker/index.tsx +71 -0
  112. package/src/components/fields/DatePicker/interface.ts +69 -0
  113. package/src/components/fields/Radio/Radio.interface.ts +30 -0
  114. package/src/components/fields/Radio/index.tsx +63 -0
  115. package/src/components/fields/RadioGroup/index.tsx +33 -0
  116. package/src/components/fields/RadioGroup/interface.ts +10 -0
  117. package/src/components/fields/RadioGroup/radio-group.stories.mdx +56 -0
  118. package/src/components/fields/SearchField/index.tsx +59 -0
  119. package/src/components/fields/SearchField/interface.ts +10 -0
  120. package/src/components/fields/SearchField/search.stories.mdx +91 -0
  121. package/src/components/fields/Select/Select.interface.ts +24 -0
  122. package/src/components/fields/Select/Select.stories.mdx +53 -0
  123. package/src/components/fields/Select/Select.tsx +108 -0
  124. package/{components/fields/Select/components/Listbox.interface.d.ts → src/components/fields/Select/components/Listbox.interface.ts} +11 -8
  125. package/src/components/fields/Select/components/Listbox.tsx +40 -0
  126. package/src/components/fields/Select/components/Popover.interface.ts +14 -0
  127. package/src/components/fields/Select/components/Popover.tsx +32 -0
  128. package/{components/fields/SelectItem/SelectItem.interface.d.ts → src/components/fields/SelectItem/SelectItem.interface.ts} +4 -3
  129. package/src/components/fields/SelectItem/SelectItem.tsx +10 -0
  130. package/src/components/fields/TextArea/index.tsx +105 -0
  131. package/src/components/fields/TextArea/textArea.stories.mdx +60 -0
  132. package/src/components/fields/TextInputField/index.tsx +107 -0
  133. package/src/components/fields/TextInputField/interface.ts +30 -0
  134. package/src/components/fields/TextInputField/text-input-field.stories.mdx +64 -0
  135. package/src/components/icons/ArrowDown.tsx +11 -0
  136. package/src/components/icons/ArrowLeft.tsx +18 -0
  137. package/src/components/icons/ArrowRight.tsx +18 -0
  138. package/src/components/icons/Check.tsx +11 -0
  139. package/src/components/icons/ChevronLeft.tsx +11 -0
  140. package/src/components/icons/ChevronRight.tsx +11 -0
  141. package/src/components/icons/CloseBtn.tsx +11 -0
  142. package/src/components/icons/Facebook.tsx +14 -0
  143. package/src/components/icons/FacebookColored.tsx +16 -0
  144. package/src/components/icons/FacebookRounded.tsx +16 -0
  145. package/src/components/icons/Globe.tsx +38 -0
  146. package/src/components/icons/IconFallback.tsx +8 -0
  147. package/src/components/icons/Instagram.tsx +14 -0
  148. package/src/components/icons/InstagramColored.tsx +59 -0
  149. package/src/components/icons/Link.tsx +14 -0
  150. package/src/components/icons/LinkedIn.tsx +16 -0
  151. package/src/components/icons/Mail.tsx +16 -0
  152. package/src/components/icons/Plus.tsx +18 -0
  153. package/src/components/icons/Search.tsx +19 -0
  154. package/src/components/icons/Share.tsx +16 -0
  155. package/src/components/icons/Twitter.tsx +16 -0
  156. package/src/components/icons/TwitterColored.tsx +16 -0
  157. package/src/components/icons/Upload.tsx +14 -0
  158. package/src/components/icons/X.tsx +14 -0
  159. package/src/components/icons/YouTube.tsx +16 -0
  160. package/src/components/icons/YouTubeColored.tsx +17 -0
  161. package/src/components/icons/index.ts +24 -0
  162. package/src/examples/PageLayout/index.tsx +61 -0
  163. package/src/examples/PageLayout/layout.stories.mdx +35 -0
  164. package/{index.d.ts → src/index.ts} +72 -57
  165. package/src/message.tsx +8 -0
  166. package/src/providers/Accordion/index.tsx +15 -0
  167. package/src/providers/Accordion/interface.ts +14 -0
  168. package/src/providers/Alerts/index.tsx +15 -0
  169. package/src/providers/Alerts/interface.ts +11 -0
  170. package/src/providers/CheckboxGroup/index.tsx +22 -0
  171. package/{providers/CheckboxGroup/interface.d.ts → src/providers/CheckboxGroup/interface.ts} +5 -4
  172. package/src/providers/Client/index.tsx +21 -0
  173. package/src/providers/Client/interface.ts +13 -0
  174. package/src/providers/Menu/index.tsx +43 -0
  175. package/src/providers/Menu/interface.ts +32 -0
  176. package/src/providers/RadioGroup/RadioGroup.interface.ts +8 -0
  177. package/src/providers/RadioGroup/RadioGroup.tsx +25 -0
  178. package/src/providers/SidePanel/index.tsx +55 -0
  179. package/src/providers/SidePanel/interface.ts +26 -0
  180. package/src/providers/Theme/hooks.ts +25 -0
  181. package/src/providers/Theme/index.tsx +40 -0
  182. package/src/providers/Theme/interface.ts +28 -0
  183. package/src/providers/Theme/utils.ts +3 -0
  184. package/src/providers/UserSearchQuery/index.tsx +20 -0
  185. package/src/providers/UserSearchQuery/interface.ts +12 -0
  186. package/src/storybook/Lightbox/LightboxControlledState.tsx +28 -0
  187. package/src/storybook/Menu/Menu.tsx +177 -0
  188. package/src/storybook/Menu/NestedMenu.tsx +24 -0
  189. package/src/storybook/Menu/mock.tsx +84 -0
  190. package/src/storybook/SelectField/index.tsx +57 -0
  191. package/src/storybook/ShareButtonExample/index.tsx +66 -0
  192. package/src/tailwind.css +3 -0
  193. package/src/theme/Accordion/index.tsx +101 -0
  194. package/src/theme/Alerts/index.ts +97 -0
  195. package/src/theme/Box/index.ts +45 -0
  196. package/src/theme/Button/index.tsx +72 -0
  197. package/src/theme/Calendar/index.tsx +167 -0
  198. package/src/theme/Carousel/index.ts +36 -0
  199. package/src/theme/Checkbox/index.ts +49 -0
  200. package/src/theme/CheckboxGroup/index.ts +14 -0
  201. package/src/theme/DatePicker/index.tsx +42 -0
  202. package/src/theme/Image/index.ts +8 -0
  203. package/src/theme/LightBox/index.ts +56 -0
  204. package/src/theme/Radio/index.ts +31 -0
  205. package/src/theme/RadioGroup/index.ts +14 -0
  206. package/src/theme/Search/index.ts +20 -0
  207. package/src/theme/ShareButton/index.tsx +76 -0
  208. package/src/theme/SidePanel/index.ts +9 -0
  209. package/src/theme/TextArea/index.ts +25 -0
  210. package/src/theme/Typography/index.tsx +44 -0
  211. package/src/theme/index.tsx +178 -0
  212. package/src/transitions/AccordionTransition.tsx +26 -0
  213. package/src/transitions/ModalTransition.tsx +38 -0
  214. package/src/transitions/RenderWithOpacity.tsx +25 -0
  215. package/src/transitions/RenderWithSlide.tsx +21 -0
  216. package/src/transitions/SidePanelTransition.tsx +30 -0
  217. package/src/types/components.ts +34 -0
  218. package/static/images/image.png +0 -0
  219. package/tailwind.config.js +14 -0
  220. package/tsconfig.json +20 -0
  221. package/tsconfig.lib.json +25 -0
  222. package/vite.config.ts +58 -0
  223. package/components/Accordion/components/AccordionItem.d.ts +0 -3
  224. package/components/Accordion/components/AriaAccordionItem.d.ts +0 -3
  225. package/components/Accordion/hooks/useAccordionState.d.ts +0 -10
  226. package/components/Accordion/index.d.ts +0 -3
  227. package/components/Alerts/components/AlertsCloseButton.d.ts +0 -4
  228. package/components/Alerts/components/AlertsItem.d.ts +0 -3
  229. package/components/Alerts/components/AlertsNavigationButton.d.ts +0 -8
  230. package/components/Alerts/components/AlertsSwiper.d.ts +0 -3
  231. package/components/Alerts/components/pagination/AlertsPagination.d.ts +0 -3
  232. package/components/Alerts/components/pagination/AlertsPaginationBullet.d.ts +0 -3
  233. package/components/Alerts/index.d.ts +0 -3
  234. package/components/Alerts/interface.d.ts +0 -41
  235. package/components/Box/index.d.ts +0 -5
  236. package/components/Box/interface.d.ts +0 -10
  237. package/components/Button/index.d.ts +0 -6
  238. package/components/Button/interface.d.ts +0 -20
  239. package/components/Calendar/RangeCalendar.d.ts +0 -3
  240. package/components/Calendar/components/CalendarCell.d.ts +0 -3
  241. package/components/Calendar/components/CalendarGrid.d.ts +0 -3
  242. package/components/Calendar/index.d.ts +0 -3
  243. package/components/Calendar/interface.d.ts +0 -32
  244. package/components/Carousel/index.d.ts +0 -3
  245. package/components/Carousel/interface.d.ts +0 -24
  246. package/components/Date/index.d.ts +0 -3
  247. package/components/Date/interface.d.ts +0 -6
  248. package/components/Dialog/index.d.ts +0 -2
  249. package/components/Dialog/interface.d.ts +0 -6
  250. package/components/DirectusImg/index.d.ts +0 -3
  251. package/components/DirectusImg/interface.d.ts +0 -13
  252. package/components/Icon/index.d.ts +0 -3
  253. package/components/Icon/interface.d.ts +0 -7
  254. package/components/Img/index.d.ts +0 -3
  255. package/components/Img/interface.d.ts +0 -6
  256. package/components/Lightbox/index.d.ts +0 -3
  257. package/components/Lightbox/interface.d.ts +0 -25
  258. package/components/Menu/Menu.d.ts +0 -3
  259. package/components/Menu/MenuSidePanel.d.ts +0 -3
  260. package/components/Menu/components/InnerContent.d.ts +0 -3
  261. package/components/Menu/components/MenuItems.d.ts +0 -3
  262. package/components/Menu/components/TabContainer.d.ts +0 -3
  263. package/components/Menu/interface.d.ts +0 -31
  264. package/components/Modal/components/ModalDialog.d.ts +0 -3
  265. package/components/Modal/components/ModalOverlay.d.ts +0 -3
  266. package/components/Modal/index.d.ts +0 -3
  267. package/components/Popover/index.d.ts +0 -3
  268. package/components/Popover/interface.d.ts +0 -21
  269. package/components/ShareButton/index.d.ts +0 -4
  270. package/components/ShareButton/interface.d.ts +0 -26
  271. package/components/ShareButton/utils/generateUtmTags.d.ts +0 -2
  272. package/components/ShareButton/utils/useFacebookShareUrl.d.ts +0 -2
  273. package/components/ShareButton/utils/useMailToShareUrl.d.ts +0 -2
  274. package/components/ShareButton/utils/useTwitterShareUrl.d.ts +0 -2
  275. package/components/ShareButton/utils/useWindow.d.ts +0 -5
  276. package/components/SidePanel/index.d.ts +0 -4
  277. package/components/SidePanel/interface.d.ts +0 -12
  278. package/components/TabList/components/TabPanel/TabPanel.d.ts +0 -4
  279. package/components/TabList/interface.d.ts +0 -18
  280. package/components/Typography/index.d.ts +0 -5
  281. package/components/Typography/interface.d.ts +0 -9
  282. package/components/WysiwygBlock/index.d.ts +0 -3
  283. package/components/WysiwygBlock/interface.d.ts +0 -5
  284. package/components/fields/Checkbox/Checkbox.interface.d.ts +0 -18
  285. package/components/fields/Checkbox/index.d.ts +0 -3
  286. package/components/fields/CheckboxGroup/components/CheckboxGroupItem/index.d.ts +0 -3
  287. package/components/fields/CheckboxGroup/index.d.ts +0 -3
  288. package/components/fields/CheckboxGroup/interface.d.ts +0 -13
  289. package/components/fields/DatePicker/DateRangePicker.d.ts +0 -3
  290. package/components/fields/DatePicker/components/CalendarPopover.d.ts +0 -2
  291. package/components/fields/DatePicker/components/DateField.d.ts +0 -4
  292. package/components/fields/DatePicker/index.d.ts +0 -3
  293. package/components/fields/DatePicker/interface.d.ts +0 -37
  294. package/components/fields/Radio/Radio.interface.d.ts +0 -26
  295. package/components/fields/Radio/index.d.ts +0 -4
  296. package/components/fields/RadioGroup/index.d.ts +0 -3
  297. package/components/fields/RadioGroup/interface.d.ts +0 -9
  298. package/components/fields/SearchField/index.d.ts +0 -3
  299. package/components/fields/SearchField/interface.d.ts +0 -9
  300. package/components/fields/Select/Select.d.ts +0 -4
  301. package/components/fields/Select/Select.interface.d.ts +0 -26
  302. package/components/fields/Select/components/Listbox.d.ts +0 -4
  303. package/components/fields/Select/components/Popover.d.ts +0 -3
  304. package/components/fields/Select/components/Popover.interface.d.ts +0 -13
  305. package/components/fields/SelectItem/SelectItem.d.ts +0 -3
  306. package/components/fields/TextArea/index.d.ts +0 -4
  307. package/components/fields/TextInputField/index.d.ts +0 -4
  308. package/components/fields/TextInputField/interface.d.ts +0 -24
  309. package/components/icons/ArrowDown.d.ts +0 -3
  310. package/components/icons/ArrowLeft.d.ts +0 -3
  311. package/components/icons/ArrowRight.d.ts +0 -3
  312. package/components/icons/Check.d.ts +0 -3
  313. package/components/icons/ChevronLeft.d.ts +0 -3
  314. package/components/icons/ChevronRight.d.ts +0 -3
  315. package/components/icons/CloseBtn.d.ts +0 -3
  316. package/components/icons/Facebook.d.ts +0 -3
  317. package/components/icons/FacebookColored.d.ts +0 -3
  318. package/components/icons/FacebookRounded.d.ts +0 -3
  319. package/components/icons/Globe.d.ts +0 -3
  320. package/components/icons/IconFallback.d.ts +0 -3
  321. package/components/icons/Instagram.d.ts +0 -3
  322. package/components/icons/InstagramColored.d.ts +0 -3
  323. package/components/icons/Link.d.ts +0 -3
  324. package/components/icons/LinkedIn.d.ts +0 -3
  325. package/components/icons/Mail.d.ts +0 -3
  326. package/components/icons/Plus.d.ts +0 -3
  327. package/components/icons/Search.d.ts +0 -3
  328. package/components/icons/Share.d.ts +0 -3
  329. package/components/icons/Twitter.d.ts +0 -3
  330. package/components/icons/TwitterColored.d.ts +0 -3
  331. package/components/icons/Upload.d.ts +0 -3
  332. package/components/icons/X.d.ts +0 -3
  333. package/components/icons/YouTube.d.ts +0 -3
  334. package/components/icons/YouTubeColored.d.ts +0 -3
  335. package/components/icons/index.d.ts +0 -24
  336. package/index.js +0 -110
  337. package/index.mjs +0 -12897
  338. package/providers/Accordion/index.d.ts +0 -4
  339. package/providers/Accordion/interface.d.ts +0 -12
  340. package/providers/Alerts/index.d.ts +0 -4
  341. package/providers/Alerts/interface.d.ts +0 -9
  342. package/providers/CheckboxGroup/index.d.ts +0 -5
  343. package/providers/Client/index.d.ts +0 -4
  344. package/providers/Client/interface.d.ts +0 -10
  345. package/providers/Menu/index.d.ts +0 -4
  346. package/providers/Menu/interface.d.ts +0 -28
  347. package/providers/RadioGroup/RadioGroup.d.ts +0 -5
  348. package/providers/RadioGroup/RadioGroup.interface.d.ts +0 -7
  349. package/providers/SidePanel/index.d.ts +0 -4
  350. package/providers/SidePanel/interface.d.ts +0 -23
  351. package/providers/Theme/hooks.d.ts +0 -3
  352. package/providers/Theme/index.d.ts +0 -10
  353. package/providers/Theme/interface.d.ts +0 -24
  354. package/providers/Theme/utils.d.ts +0 -2
  355. package/providers/UserSearchQuery/index.d.ts +0 -4
  356. package/providers/UserSearchQuery/interface.d.ts +0 -10
  357. package/style.css +0 -1
  358. package/theme/Accordion/index.d.ts +0 -274
  359. package/theme/Alerts/index.d.ts +0 -1167
  360. package/theme/Box/index.d.ts +0 -214
  361. package/theme/Button/index.d.ts +0 -121
  362. package/theme/Calendar/index.d.ts +0 -366
  363. package/theme/Carousel/index.d.ts +0 -9
  364. package/theme/Checkbox/index.d.ts +0 -159
  365. package/theme/CheckboxGroup/index.d.ts +0 -30
  366. package/theme/DatePicker/index.d.ts +0 -43
  367. package/theme/Image/index.d.ts +0 -3
  368. package/theme/LightBox/index.d.ts +0 -455
  369. package/theme/Radio/index.d.ts +0 -108
  370. package/theme/RadioGroup/index.d.ts +0 -30
  371. package/theme/Search/index.d.ts +0 -30
  372. package/theme/ShareButton/index.d.ts +0 -174
  373. package/theme/SidePanel/index.d.ts +0 -3
  374. package/theme/TextArea/index.d.ts +0 -29
  375. package/theme/Typography/index.d.ts +0 -233
  376. package/theme/index.d.ts +0 -5
  377. package/transitions/AccordionTransition.d.ts +0 -3
  378. package/transitions/ModalTransition.d.ts +0 -7
  379. package/transitions/RenderWithOpacity.d.ts +0 -3
  380. package/transitions/RenderWithSlide.d.ts +0 -7
  381. package/transitions/SidePanelTransition.d.ts +0 -7
  382. 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
- export { default as Typography } from './components/Typography';
3
- export { default as Accordion } from './components/Accordion';
4
- export { default as AccordionItem } from './components/Accordion/components/AccordionItem';
5
- export { default as Button, ButtonWithForwardRef } from './components/Button';
6
- export { default as ShareButton } from './components/ShareButton';
7
- export { default as SidePanel } from './components/SidePanel';
8
- export { default as Lightbox } from './components/Lightbox';
9
- export { default as Popover } from './components/Popover';
10
- export { default as Carousel } from './components/Carousel';
11
- export { default as WysiwygBlock } from './components/WysiwygBlock';
12
- export { default as Icon } from './components/Icon';
13
- export { default as Date } from './components/Date';
14
- export { default as Select, ReactHookFormSelect } from './components/fields/Select/Select';
15
- export { default as Checkbox } from './components/fields/Checkbox';
16
- export { default as SearchField } from './components/fields/SearchField';
17
- export { default as CheckboxGroup } from './components/fields/CheckboxGroup';
18
- export { default as CheckboxGroupItem } from './components/fields/CheckboxGroup/components/CheckboxGroupItem';
19
- export { default as TextArea, ReactHookFormTextArea } from './components/fields/TextArea';
20
- export { default as TextInputField, ReactHookFormInput } from './components/fields/TextInputField';
21
- export { default as DatePicker } from './components/fields/DatePicker';
22
- export { default as DateRangePicker } from './components/fields/DatePicker/DateRangePicker';
23
- export { default as Box, BoxWithForwardRef } from './components/Box';
24
- export { default as Calendar } from './components/Calendar';
25
- export { default as Modal } from './components/Modal';
26
- export { default as Radio, ReactHookFormRadio } from './components/fields/Radio';
27
- export { default as RadioGroup } from './components/fields/RadioGroup';
28
- export { default as RenderWithSlide } from './transitions/RenderWithSlide';
29
- export { default as Menu } from './components/Menu/Menu';
30
- export { default as MenuSidePanel } from './components/Menu/MenuSidePanel';
31
- export { default as MenuItems } from './components/Menu/components/MenuItems';
32
- export { default as TabContainer } from './components/Menu/components/TabContainer';
33
- export { default as Alerts } from './components/Alerts';
34
- export { default as AlertsItem } from './components/Alerts/components/AlertsItem';
35
- export { default as SelectItem } from './components/fields/SelectItem/SelectItem';
36
- export { default as DirectusImg } from './components/DirectusImg';
37
- export { default as Img } from './components/Img';
38
- export * from './components/icons';
39
- export { makeTheme, createThemeProvider, useTheme, ThemeContextProvider } from './providers/Theme';
40
- export { default as useThemeContext } from './providers/Theme/hooks';
41
- export { useIsClient, IsClientContextProvider } from './providers/Client';
42
- export { useSidePanel, SidePanelContextProvider } from './providers/SidePanel';
43
- export { MenuContextProvider, useMenu } from './providers/Menu';
44
- export { RadioGroupProvider, useRadioGroupCtx } from './providers/RadioGroup/RadioGroup';
45
- export { AccordionContextProvider, useAccordionCtx } from './providers/Accordion';
46
- export { SearchBarProvider } from './providers/UserSearchQuery';
47
- export type { TButtonProps } from './components/Button/interface';
48
- export type { TTypographyProps } from './components/Typography/interface';
49
- export type { TTheme, TToken, TCustomTheme, TStyle, TDefaultTheme, TStyleCollection, TStyleValue, } from './providers/Theme/interface';
50
- export type { TMenuProps, TMenuItemProps } from './components/Menu/interface';
51
- export type { TDefaultComponent, Nullable } from './types/components';
52
- export { default as generateUtmTags } from './components/ShareButton/utils/generateUtmTags';
53
- export { default as useWindow } from './components/ShareButton/utils/useWindow';
54
- export { default as useFacebookShareUrl } from './components/ShareButton/utils/useFacebookShareUrl';
55
- export { default as useMailToShareUrl } from './components/ShareButton/utils/useMailToShareUrl';
56
- export { default as useTwitterShareUrl } from './components/ShareButton/utils/useTwitterShareUrl';
57
- export { default as useAccordionState } from './components/Accordion/hooks/useAccordionState';
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'
@@ -0,0 +1,8 @@
1
+ import type { FC } from 'react'
2
+
3
+ type Props = {
4
+ message: string
5
+ children?: never
6
+ }
7
+
8
+ export const Message: FC<Props> = ({ message }) => <span>{message}</span>
@@ -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
- children: React.ReactNode;
5
- state: CheckboxGroupState;
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,13 @@
1
+ import type React from 'react'
2
+
3
+ export type TClientProviderProps = {
4
+ children: React.ReactNode
5
+ }
6
+
7
+ export type TClientProps = {
8
+ isClient: boolean
9
+ }
10
+
11
+ export type TClientContext = {
12
+ isClient: boolean
13
+ }
@@ -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 }