@kadoui/react 1.0.0

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 (470) hide show
  1. package/dist/components/AccessNavigation/AccessNavigation.d.ts +6 -0
  2. package/dist/components/AccessNavigation/AccessNavigation.d.ts.map +1 -0
  3. package/dist/components/AccessNavigation/AccessNavigation.jsx +26 -0
  4. package/dist/components/Accordion/Accordion.d.ts +8 -0
  5. package/dist/components/Accordion/Accordion.d.ts.map +1 -0
  6. package/dist/components/Accordion/Accordion.js +7 -0
  7. package/dist/components/Accordion/AccordionBody.d.ts +4 -0
  8. package/dist/components/Accordion/AccordionBody.d.ts.map +1 -0
  9. package/dist/components/Accordion/AccordionBody.jsx +17 -0
  10. package/dist/components/Accordion/AccordionContext.d.ts +7 -0
  11. package/dist/components/Accordion/AccordionContext.d.ts.map +1 -0
  12. package/dist/components/Accordion/AccordionContext.js +2 -0
  13. package/dist/components/Accordion/AccordionRoot.d.ts +4 -0
  14. package/dist/components/Accordion/AccordionRoot.d.ts.map +1 -0
  15. package/dist/components/Accordion/AccordionRoot.jsx +9 -0
  16. package/dist/components/Accordion/AccordionToggle.d.ts +6 -0
  17. package/dist/components/Accordion/AccordionToggle.d.ts.map +1 -0
  18. package/dist/components/Accordion/AccordionToggle.jsx +16 -0
  19. package/dist/components/Affix/Affix.d.ts +4 -0
  20. package/dist/components/Affix/Affix.d.ts.map +1 -0
  21. package/dist/components/Affix/Affix.jsx +38 -0
  22. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +6 -0
  23. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts.map +1 -0
  24. package/dist/components/Breadcrumbs/Breadcrumbs.js +5 -0
  25. package/dist/components/Breadcrumbs/BreadcrumbsContext.d.ts +6 -0
  26. package/dist/components/Breadcrumbs/BreadcrumbsContext.d.ts.map +1 -0
  27. package/dist/components/Breadcrumbs/BreadcrumbsContext.js +2 -0
  28. package/dist/components/Breadcrumbs/BreadcrumbsItem.d.ts +6 -0
  29. package/dist/components/Breadcrumbs/BreadcrumbsItem.d.ts.map +1 -0
  30. package/dist/components/Breadcrumbs/BreadcrumbsItem.jsx +11 -0
  31. package/dist/components/Breadcrumbs/BreadcrumbsRoot.d.ts +6 -0
  32. package/dist/components/Breadcrumbs/BreadcrumbsRoot.d.ts.map +1 -0
  33. package/dist/components/Breadcrumbs/BreadcrumbsRoot.jsx +8 -0
  34. package/dist/components/Carousel/Carousel.d.ts +6 -0
  35. package/dist/components/Carousel/Carousel.d.ts.map +1 -0
  36. package/dist/components/Carousel/Carousel.js +5 -0
  37. package/dist/components/Carousel/CarouselContainer.d.ts +4 -0
  38. package/dist/components/Carousel/CarouselContainer.d.ts.map +1 -0
  39. package/dist/components/Carousel/CarouselContainer.jsx +10 -0
  40. package/dist/components/Carousel/CarouselContext.d.ts +6 -0
  41. package/dist/components/Carousel/CarouselContext.d.ts.map +1 -0
  42. package/dist/components/Carousel/CarouselContext.js +2 -0
  43. package/dist/components/Carousel/CarouselRoot.d.ts +4 -0
  44. package/dist/components/Carousel/CarouselRoot.d.ts.map +1 -0
  45. package/dist/components/Carousel/CarouselRoot.jsx +53 -0
  46. package/dist/components/ClientOnly/ClientOnly.d.ts +4 -0
  47. package/dist/components/ClientOnly/ClientOnly.d.ts.map +1 -0
  48. package/dist/components/ClientOnly/ClientOnly.jsx +6 -0
  49. package/dist/components/Clipboard/Clipboard.d.ts +7 -0
  50. package/dist/components/Clipboard/Clipboard.d.ts.map +1 -0
  51. package/dist/components/Clipboard/Clipboard.jsx +15 -0
  52. package/dist/components/ContextMenu/ContextMenu.d.ts +6 -0
  53. package/dist/components/ContextMenu/ContextMenu.d.ts.map +1 -0
  54. package/dist/components/ContextMenu/ContextMenu.js +5 -0
  55. package/dist/components/ContextMenu/ContextMenuContent.d.ts +4 -0
  56. package/dist/components/ContextMenu/ContextMenuContent.d.ts.map +1 -0
  57. package/dist/components/ContextMenu/ContextMenuContent.jsx +28 -0
  58. package/dist/components/ContextMenu/ContextMenuContext.d.ts +11 -0
  59. package/dist/components/ContextMenu/ContextMenuContext.d.ts.map +1 -0
  60. package/dist/components/ContextMenu/ContextMenuContext.js +2 -0
  61. package/dist/components/ContextMenu/ContextMenuRoot.d.ts +4 -0
  62. package/dist/components/ContextMenu/ContextMenuRoot.d.ts.map +1 -0
  63. package/dist/components/ContextMenu/ContextMenuRoot.jsx +56 -0
  64. package/dist/components/Drawer/Drawer.d.ts +10 -0
  65. package/dist/components/Drawer/Drawer.d.ts.map +1 -0
  66. package/dist/components/Drawer/Drawer.js +9 -0
  67. package/dist/components/Drawer/DrawerBody.d.ts +6 -0
  68. package/dist/components/Drawer/DrawerBody.d.ts.map +1 -0
  69. package/dist/components/Drawer/DrawerBody.jsx +39 -0
  70. package/dist/components/Drawer/DrawerContext.d.ts +7 -0
  71. package/dist/components/Drawer/DrawerContext.d.ts.map +1 -0
  72. package/dist/components/Drawer/DrawerContext.js +2 -0
  73. package/dist/components/Drawer/DrawerPortal.d.ts +4 -0
  74. package/dist/components/Drawer/DrawerPortal.d.ts.map +1 -0
  75. package/dist/components/Drawer/DrawerPortal.jsx +20 -0
  76. package/dist/components/Drawer/DrawerRoot.d.ts +4 -0
  77. package/dist/components/Drawer/DrawerRoot.d.ts.map +1 -0
  78. package/dist/components/Drawer/DrawerRoot.jsx +35 -0
  79. package/dist/components/Drawer/DrawerToggle.d.ts +4 -0
  80. package/dist/components/Drawer/DrawerToggle.d.ts.map +1 -0
  81. package/dist/components/Drawer/DrawerToggle.jsx +10 -0
  82. package/dist/components/Dropdown/Dropdown.d.ts +8 -0
  83. package/dist/components/Dropdown/Dropdown.d.ts.map +1 -0
  84. package/dist/components/Dropdown/Dropdown.js +7 -0
  85. package/dist/components/Dropdown/DropdownContext.d.ts +9 -0
  86. package/dist/components/Dropdown/DropdownContext.d.ts.map +1 -0
  87. package/dist/components/Dropdown/DropdownContext.js +2 -0
  88. package/dist/components/Dropdown/DropdownMenu.d.ts +6 -0
  89. package/dist/components/Dropdown/DropdownMenu.d.ts.map +1 -0
  90. package/dist/components/Dropdown/DropdownMenu.jsx +13 -0
  91. package/dist/components/Dropdown/DropdownRoot.d.ts +6 -0
  92. package/dist/components/Dropdown/DropdownRoot.d.ts.map +1 -0
  93. package/dist/components/Dropdown/DropdownRoot.jsx +65 -0
  94. package/dist/components/Dropdown/DropdownToggle.d.ts +4 -0
  95. package/dist/components/Dropdown/DropdownToggle.d.ts.map +1 -0
  96. package/dist/components/Dropdown/DropdownToggle.jsx +11 -0
  97. package/dist/components/LinkLoader/LinkLoader.d.ts +6 -0
  98. package/dist/components/LinkLoader/LinkLoader.d.ts.map +1 -0
  99. package/dist/components/LinkLoader/LinkLoader.jsx +8 -0
  100. package/dist/components/Modal/Modal.d.ts +14 -0
  101. package/dist/components/Modal/Modal.d.ts.map +1 -0
  102. package/dist/components/Modal/Modal.js +13 -0
  103. package/dist/components/Modal/ModalBody.d.ts +4 -0
  104. package/dist/components/Modal/ModalBody.d.ts.map +1 -0
  105. package/dist/components/Modal/ModalBody.jsx +6 -0
  106. package/dist/components/Modal/ModalContent.d.ts +4 -0
  107. package/dist/components/Modal/ModalContent.d.ts.map +1 -0
  108. package/dist/components/Modal/ModalContent.jsx +22 -0
  109. package/dist/components/Modal/ModalContext.d.ts +7 -0
  110. package/dist/components/Modal/ModalContext.d.ts.map +1 -0
  111. package/dist/components/Modal/ModalContext.js +2 -0
  112. package/dist/components/Modal/ModalHeader.d.ts +4 -0
  113. package/dist/components/Modal/ModalHeader.d.ts.map +1 -0
  114. package/dist/components/Modal/ModalHeader.jsx +4 -0
  115. package/dist/components/Modal/ModalPortal.d.ts +4 -0
  116. package/dist/components/Modal/ModalPortal.d.ts.map +1 -0
  117. package/dist/components/Modal/ModalPortal.jsx +20 -0
  118. package/dist/components/Modal/ModalRoot.d.ts +6 -0
  119. package/dist/components/Modal/ModalRoot.d.ts.map +1 -0
  120. package/dist/components/Modal/ModalRoot.jsx +35 -0
  121. package/dist/components/Modal/ModalTrigger.d.ts +4 -0
  122. package/dist/components/Modal/ModalTrigger.d.ts.map +1 -0
  123. package/dist/components/Modal/ModalTrigger.jsx +10 -0
  124. package/dist/components/Otp/Otp.d.ts +8 -0
  125. package/dist/components/Otp/Otp.d.ts.map +1 -0
  126. package/dist/components/Otp/Otp.js +7 -0
  127. package/dist/components/Otp/OtpContext.d.ts +7 -0
  128. package/dist/components/Otp/OtpContext.d.ts.map +1 -0
  129. package/dist/components/Otp/OtpContext.js +4 -0
  130. package/dist/components/Otp/OtpHiddenInput.d.ts +4 -0
  131. package/dist/components/Otp/OtpHiddenInput.d.ts.map +1 -0
  132. package/dist/components/Otp/OtpHiddenInput.jsx +7 -0
  133. package/dist/components/Otp/OtpInputs.d.ts +7 -0
  134. package/dist/components/Otp/OtpInputs.d.ts.map +1 -0
  135. package/dist/components/Otp/OtpInputs.jsx +55 -0
  136. package/dist/components/Otp/OtpRoot.d.ts +4 -0
  137. package/dist/components/Otp/OtpRoot.d.ts.map +1 -0
  138. package/dist/components/Otp/OtpRoot.jsx +16 -0
  139. package/dist/components/Pagination/Pagination.d.ts +16 -0
  140. package/dist/components/Pagination/Pagination.d.ts.map +1 -0
  141. package/dist/components/Pagination/Pagination.js +12 -0
  142. package/dist/components/Pagination/PaginationContext.d.ts +8 -0
  143. package/dist/components/Pagination/PaginationContext.d.ts.map +1 -0
  144. package/dist/components/Pagination/PaginationContext.jsx +2 -0
  145. package/dist/components/Pagination/PaginationCounts.d.ts +4 -0
  146. package/dist/components/Pagination/PaginationCounts.d.ts.map +1 -0
  147. package/dist/components/Pagination/PaginationCounts.jsx +9 -0
  148. package/dist/components/Pagination/PaginationNextBtn.d.ts +6 -0
  149. package/dist/components/Pagination/PaginationNextBtn.d.ts.map +1 -0
  150. package/dist/components/Pagination/PaginationNextBtn.jsx +13 -0
  151. package/dist/components/Pagination/PaginationPrevBtn.d.ts +6 -0
  152. package/dist/components/Pagination/PaginationPrevBtn.d.ts.map +1 -0
  153. package/dist/components/Pagination/PaginationPrevBtn.jsx +13 -0
  154. package/dist/components/Pagination/PaginationSearchParamsRoot.d.ts +7 -0
  155. package/dist/components/Pagination/PaginationSearchParamsRoot.d.ts.map +1 -0
  156. package/dist/components/Pagination/PaginationSearchParamsRoot.jsx +30 -0
  157. package/dist/components/Pagination/PaginationStateRoot.d.ts +6 -0
  158. package/dist/components/Pagination/PaginationStateRoot.d.ts.map +1 -0
  159. package/dist/components/Pagination/PaginationStateRoot.jsx +11 -0
  160. package/dist/components/PasswordInput/PasswordInput.d.ts +8 -0
  161. package/dist/components/PasswordInput/PasswordInput.d.ts.map +1 -0
  162. package/dist/components/PasswordInput/PasswordInput.js +7 -0
  163. package/dist/components/PasswordInput/PasswordInputContext.d.ts +7 -0
  164. package/dist/components/PasswordInput/PasswordInputContext.d.ts.map +1 -0
  165. package/dist/components/PasswordInput/PasswordInputContext.jsx +2 -0
  166. package/dist/components/PasswordInput/PasswordInputField.d.ts +4 -0
  167. package/dist/components/PasswordInput/PasswordInputField.d.ts.map +1 -0
  168. package/dist/components/PasswordInput/PasswordInputField.jsx +7 -0
  169. package/dist/components/PasswordInput/PasswordInputRoot.d.ts +4 -0
  170. package/dist/components/PasswordInput/PasswordInputRoot.d.ts.map +1 -0
  171. package/dist/components/PasswordInput/PasswordInputRoot.jsx +9 -0
  172. package/dist/components/PasswordInput/PasswordInputToggle.d.ts +4 -0
  173. package/dist/components/PasswordInput/PasswordInputToggle.d.ts.map +1 -0
  174. package/dist/components/PasswordInput/PasswordInputToggle.jsx +20 -0
  175. package/dist/components/Portal/Portal.d.ts +6 -0
  176. package/dist/components/Portal/Portal.d.ts.map +1 -0
  177. package/dist/components/Portal/Portal.jsx +7 -0
  178. package/dist/components/Progress/Progress.d.ts +6 -0
  179. package/dist/components/Progress/Progress.d.ts.map +1 -0
  180. package/dist/components/Progress/Progress.js +5 -0
  181. package/dist/components/Progress/ProgressBar.d.ts +6 -0
  182. package/dist/components/Progress/ProgressBar.d.ts.map +1 -0
  183. package/dist/components/Progress/ProgressBar.jsx +12 -0
  184. package/dist/components/Progress/ProgressContext.d.ts +6 -0
  185. package/dist/components/Progress/ProgressContext.d.ts.map +1 -0
  186. package/dist/components/Progress/ProgressContext.js +2 -0
  187. package/dist/components/Progress/ProgressRoot.d.ts +7 -0
  188. package/dist/components/Progress/ProgressRoot.d.ts.map +1 -0
  189. package/dist/components/Progress/ProgressRoot.jsx +8 -0
  190. package/dist/components/QrCode/QrCode.d.ts +8 -0
  191. package/dist/components/QrCode/QrCode.d.ts.map +1 -0
  192. package/dist/components/QrCode/QrCode.jsx +14 -0
  193. package/dist/components/Rating/Rating.d.ts +5 -0
  194. package/dist/components/Rating/Rating.d.ts.map +1 -0
  195. package/dist/components/Rating/Rating.js +5 -0
  196. package/dist/components/Rating/RatingContext.d.ts +7 -0
  197. package/dist/components/Rating/RatingContext.d.ts.map +1 -0
  198. package/dist/components/Rating/RatingContext.js +2 -0
  199. package/dist/components/Rating/RatingItems.d.ts +10 -0
  200. package/dist/components/Rating/RatingItems.d.ts.map +1 -0
  201. package/dist/components/Rating/RatingItems.jsx +18 -0
  202. package/dist/components/Rating/RatingRoot.d.ts +4 -0
  203. package/dist/components/Rating/RatingRoot.d.ts.map +1 -0
  204. package/dist/components/Rating/RatingRoot.jsx +10 -0
  205. package/dist/components/Sheet/Sheet.d.ts +14 -0
  206. package/dist/components/Sheet/Sheet.d.ts.map +1 -0
  207. package/dist/components/Sheet/Sheet.jsx +13 -0
  208. package/dist/components/Sheet/SheetBody.d.ts +4 -0
  209. package/dist/components/Sheet/SheetBody.d.ts.map +1 -0
  210. package/dist/components/Sheet/SheetBody.jsx +21 -0
  211. package/dist/components/Sheet/SheetContent.d.ts +4 -0
  212. package/dist/components/Sheet/SheetContent.d.ts.map +1 -0
  213. package/dist/components/Sheet/SheetContent.jsx +4 -0
  214. package/dist/components/Sheet/SheetContext.d.ts +13 -0
  215. package/dist/components/Sheet/SheetContext.d.ts.map +1 -0
  216. package/dist/components/Sheet/SheetContext.js +2 -0
  217. package/dist/components/Sheet/SheetHeader.d.ts +4 -0
  218. package/dist/components/Sheet/SheetHeader.d.ts.map +1 -0
  219. package/dist/components/Sheet/SheetHeader.jsx +10 -0
  220. package/dist/components/Sheet/SheetPortal.d.ts +4 -0
  221. package/dist/components/Sheet/SheetPortal.d.ts.map +1 -0
  222. package/dist/components/Sheet/SheetPortal.jsx +17 -0
  223. package/dist/components/Sheet/SheetRoot.d.ts +4 -0
  224. package/dist/components/Sheet/SheetRoot.d.ts.map +1 -0
  225. package/dist/components/Sheet/SheetRoot.jsx +37 -0
  226. package/dist/components/Sheet/SheetToggle.d.ts +4 -0
  227. package/dist/components/Sheet/SheetToggle.d.ts.map +1 -0
  228. package/dist/components/Sheet/SheetToggle.jsx +10 -0
  229. package/dist/components/ShowMore/ShowMore.d.ts +10 -0
  230. package/dist/components/ShowMore/ShowMore.d.ts.map +1 -0
  231. package/dist/components/ShowMore/ShowMore.js +9 -0
  232. package/dist/components/ShowMore/ShowMoreContent.d.ts +4 -0
  233. package/dist/components/ShowMore/ShowMoreContent.d.ts.map +1 -0
  234. package/dist/components/ShowMore/ShowMoreContent.jsx +18 -0
  235. package/dist/components/ShowMore/ShowMoreContext.d.ts +10 -0
  236. package/dist/components/ShowMore/ShowMoreContext.d.ts.map +1 -0
  237. package/dist/components/ShowMore/ShowMoreContext.js +2 -0
  238. package/dist/components/ShowMore/ShowMoreFade.d.ts +4 -0
  239. package/dist/components/ShowMore/ShowMoreFade.d.ts.map +1 -0
  240. package/dist/components/ShowMore/ShowMoreFade.jsx +8 -0
  241. package/dist/components/ShowMore/ShowMoreRoot.d.ts +7 -0
  242. package/dist/components/ShowMore/ShowMoreRoot.d.ts.map +1 -0
  243. package/dist/components/ShowMore/ShowMoreRoot.jsx +23 -0
  244. package/dist/components/ShowMore/ShowMoreTrigger.d.ts +4 -0
  245. package/dist/components/ShowMore/ShowMoreTrigger.d.ts.map +1 -0
  246. package/dist/components/ShowMore/ShowMoreTrigger.jsx +11 -0
  247. package/dist/components/Slide/Slide.d.ts +12 -0
  248. package/dist/components/Slide/Slide.d.ts.map +1 -0
  249. package/dist/components/Slide/Slide.js +11 -0
  250. package/dist/components/Slide/SlideContent.d.ts +4 -0
  251. package/dist/components/Slide/SlideContent.d.ts.map +1 -0
  252. package/dist/components/Slide/SlideContent.jsx +4 -0
  253. package/dist/components/Slide/SlideContext.d.ts +7 -0
  254. package/dist/components/Slide/SlideContext.d.ts.map +1 -0
  255. package/dist/components/Slide/SlideContext.js +5 -0
  256. package/dist/components/Slide/SlideHeader.d.ts +4 -0
  257. package/dist/components/Slide/SlideHeader.d.ts.map +1 -0
  258. package/dist/components/Slide/SlideHeader.jsx +4 -0
  259. package/dist/components/Slide/SlidePortal.d.ts +4 -0
  260. package/dist/components/Slide/SlidePortal.d.ts.map +1 -0
  261. package/dist/components/Slide/SlidePortal.jsx +11 -0
  262. package/dist/components/Slide/SlideRoot.d.ts +4 -0
  263. package/dist/components/Slide/SlideRoot.d.ts.map +1 -0
  264. package/dist/components/Slide/SlideRoot.jsx +30 -0
  265. package/dist/components/Slide/SlideToggle.d.ts +4 -0
  266. package/dist/components/Slide/SlideToggle.d.ts.map +1 -0
  267. package/dist/components/Slide/SlideToggle.jsx +10 -0
  268. package/dist/components/Spoiler/Spoiler.d.ts +6 -0
  269. package/dist/components/Spoiler/Spoiler.d.ts.map +1 -0
  270. package/dist/components/Spoiler/Spoiler.jsx +11 -0
  271. package/dist/components/Steps/Steps.d.ts +16 -0
  272. package/dist/components/Steps/Steps.d.ts.map +1 -0
  273. package/dist/components/Steps/Steps.js +12 -0
  274. package/dist/components/Steps/StepsContext.d.ts +14 -0
  275. package/dist/components/Steps/StepsContext.d.ts.map +1 -0
  276. package/dist/components/Steps/StepsContext.jsx +2 -0
  277. package/dist/components/Steps/StepsControls.d.ts +4 -0
  278. package/dist/components/Steps/StepsControls.d.ts.map +1 -0
  279. package/dist/components/Steps/StepsControls.jsx +34 -0
  280. package/dist/components/Steps/StepsNextBtn.d.ts +6 -0
  281. package/dist/components/Steps/StepsNextBtn.d.ts.map +1 -0
  282. package/dist/components/Steps/StepsNextBtn.jsx +13 -0
  283. package/dist/components/Steps/StepsPrevBtn.d.ts +6 -0
  284. package/dist/components/Steps/StepsPrevBtn.d.ts.map +1 -0
  285. package/dist/components/Steps/StepsPrevBtn.jsx +13 -0
  286. package/dist/components/Steps/StepsSearchParamsRoot.d.ts +8 -0
  287. package/dist/components/Steps/StepsSearchParamsRoot.d.ts.map +1 -0
  288. package/dist/components/Steps/StepsSearchParamsRoot.jsx +30 -0
  289. package/dist/components/Steps/StepsStateRoot.d.ts +7 -0
  290. package/dist/components/Steps/StepsStateRoot.d.ts.map +1 -0
  291. package/dist/components/Steps/StepsStateRoot.jsx +11 -0
  292. package/dist/components/Swap/Swap.d.ts +8 -0
  293. package/dist/components/Swap/Swap.d.ts.map +1 -0
  294. package/dist/components/Swap/Swap.js +7 -0
  295. package/dist/components/Swap/SwapContext.d.ts +7 -0
  296. package/dist/components/Swap/SwapContext.d.ts.map +1 -0
  297. package/dist/components/Swap/SwapContext.js +2 -0
  298. package/dist/components/Swap/SwapItem.d.ts +4 -0
  299. package/dist/components/Swap/SwapItem.d.ts.map +1 -0
  300. package/dist/components/Swap/SwapItem.jsx +5 -0
  301. package/dist/components/Swap/SwapRoot.d.ts +8 -0
  302. package/dist/components/Swap/SwapRoot.d.ts.map +1 -0
  303. package/dist/components/Swap/SwapRoot.jsx +16 -0
  304. package/dist/components/Swap/SwapTrigger.d.ts +6 -0
  305. package/dist/components/Swap/SwapTrigger.d.ts.map +1 -0
  306. package/dist/components/Swap/SwapTrigger.jsx +16 -0
  307. package/dist/components/Tabs/Tabs.d.ts +10 -0
  308. package/dist/components/Tabs/Tabs.d.ts.map +1 -0
  309. package/dist/components/Tabs/Tabs.js +9 -0
  310. package/dist/components/Tabs/TabsContext.d.ts +7 -0
  311. package/dist/components/Tabs/TabsContext.d.ts.map +1 -0
  312. package/dist/components/Tabs/TabsContext.js +5 -0
  313. package/dist/components/Tabs/TabsList.d.ts +4 -0
  314. package/dist/components/Tabs/TabsList.d.ts.map +1 -0
  315. package/dist/components/Tabs/TabsList.jsx +5 -0
  316. package/dist/components/Tabs/TabsPanel.d.ts +6 -0
  317. package/dist/components/Tabs/TabsPanel.d.ts.map +1 -0
  318. package/dist/components/Tabs/TabsPanel.jsx +9 -0
  319. package/dist/components/Tabs/TabsRoot.d.ts +7 -0
  320. package/dist/components/Tabs/TabsRoot.d.ts.map +1 -0
  321. package/dist/components/Tabs/TabsRoot.jsx +7 -0
  322. package/dist/components/Tabs/TabsTab.d.ts +6 -0
  323. package/dist/components/Tabs/TabsTab.d.ts.map +1 -0
  324. package/dist/components/Tabs/TabsTab.jsx +10 -0
  325. package/dist/components/Toast/Toast.d.ts +4 -0
  326. package/dist/components/Toast/Toast.d.ts.map +1 -0
  327. package/dist/components/Toast/Toast.js +3 -0
  328. package/dist/components/Toast/ToastBox.d.ts +6 -0
  329. package/dist/components/Toast/ToastBox.d.ts.map +1 -0
  330. package/dist/components/Toast/ToastBox.jsx +32 -0
  331. package/dist/components/Toast/ToastRoot.d.ts +15 -0
  332. package/dist/components/Toast/ToastRoot.d.ts.map +1 -0
  333. package/dist/components/Toast/ToastRoot.jsx +38 -0
  334. package/dist/components/Toast/toastStore.d.ts +11 -0
  335. package/dist/components/Toast/toastStore.d.ts.map +1 -0
  336. package/dist/components/Toast/toastStore.js +10 -0
  337. package/dist/components/Toggle/Toggle.d.ts +6 -0
  338. package/dist/components/Toggle/Toggle.d.ts.map +1 -0
  339. package/dist/components/Toggle/Toggle.js +5 -0
  340. package/dist/components/Toggle/ToggleContext.d.ts +8 -0
  341. package/dist/components/Toggle/ToggleContext.d.ts.map +1 -0
  342. package/dist/components/Toggle/ToggleContext.js +2 -0
  343. package/dist/components/Toggle/ToggleRoot.d.ts +8 -0
  344. package/dist/components/Toggle/ToggleRoot.d.ts.map +1 -0
  345. package/dist/components/Toggle/ToggleRoot.jsx +13 -0
  346. package/dist/components/Toggle/ToggleSwitch.d.ts +4 -0
  347. package/dist/components/Toggle/ToggleSwitch.d.ts.map +1 -0
  348. package/dist/components/Toggle/ToggleSwitch.jsx +23 -0
  349. package/dist/index.d.ts +29 -0
  350. package/dist/index.d.ts.map +1 -0
  351. package/dist/index.js +28 -0
  352. package/package.json +43 -0
  353. package/src/components/AccessNavigation/AccessNavigation.tsx +46 -0
  354. package/src/components/Accordion/Accordion.ts +8 -0
  355. package/src/components/Accordion/AccordionBody.tsx +31 -0
  356. package/src/components/Accordion/AccordionContext.ts +8 -0
  357. package/src/components/Accordion/AccordionRoot.tsx +17 -0
  358. package/src/components/Accordion/AccordionToggle.tsx +29 -0
  359. package/src/components/Affix/Affix.tsx +59 -0
  360. package/src/components/Breadcrumbs/Breadcrumbs.ts +6 -0
  361. package/src/components/Breadcrumbs/BreadcrumbsContext.ts +7 -0
  362. package/src/components/Breadcrumbs/BreadcrumbsItem.tsx +24 -0
  363. package/src/components/Breadcrumbs/BreadcrumbsRoot.tsx +21 -0
  364. package/src/components/Carousel/Carousel.ts +6 -0
  365. package/src/components/Carousel/CarouselContainer.tsx +18 -0
  366. package/src/components/Carousel/CarouselContext.ts +7 -0
  367. package/src/components/Carousel/CarouselRoot.tsx +75 -0
  368. package/src/components/ClientOnly/ClientOnly.tsx +12 -0
  369. package/src/components/Clipboard/Clipboard.tsx +36 -0
  370. package/src/components/ContextMenu/ContextMenu.ts +6 -0
  371. package/src/components/ContextMenu/ContextMenuContent.tsx +51 -0
  372. package/src/components/ContextMenu/ContextMenuContext.ts +9 -0
  373. package/src/components/ContextMenu/ContextMenuRoot.tsx +79 -0
  374. package/src/components/Drawer/Drawer.ts +10 -0
  375. package/src/components/Drawer/DrawerBody.tsx +67 -0
  376. package/src/components/Drawer/DrawerContext.ts +8 -0
  377. package/src/components/Drawer/DrawerPortal.tsx +40 -0
  378. package/src/components/Drawer/DrawerRoot.tsx +45 -0
  379. package/src/components/Drawer/DrawerToggle.tsx +21 -0
  380. package/src/components/Dropdown/Dropdown.ts +8 -0
  381. package/src/components/Dropdown/DropdownContext.ts +10 -0
  382. package/src/components/Dropdown/DropdownMenu.tsx +34 -0
  383. package/src/components/Dropdown/DropdownRoot.tsx +90 -0
  384. package/src/components/Dropdown/DropdownToggle.tsx +23 -0
  385. package/src/components/LinkLoader/LinkLoader.tsx +16 -0
  386. package/src/components/Modal/Modal.ts +14 -0
  387. package/src/components/Modal/ModalBody.tsx +12 -0
  388. package/src/components/Modal/ModalContent.tsx +44 -0
  389. package/src/components/Modal/ModalContext.ts +8 -0
  390. package/src/components/Modal/ModalHeader.tsx +10 -0
  391. package/src/components/Modal/ModalPortal.tsx +40 -0
  392. package/src/components/Modal/ModalRoot.tsx +47 -0
  393. package/src/components/Modal/ModalTrigger.tsx +21 -0
  394. package/src/components/Otp/Otp.ts +8 -0
  395. package/src/components/Otp/OtpContext.ts +10 -0
  396. package/src/components/Otp/OtpHiddenInput.tsx +15 -0
  397. package/src/components/Otp/OtpInputs.tsx +86 -0
  398. package/src/components/Otp/OtpRoot.tsx +26 -0
  399. package/src/components/Pagination/Pagination.ts +15 -0
  400. package/src/components/Pagination/PaginationContext.tsx +10 -0
  401. package/src/components/Pagination/PaginationCounts.tsx +17 -0
  402. package/src/components/Pagination/PaginationNextBtn.tsx +27 -0
  403. package/src/components/Pagination/PaginationPrevBtn.tsx +27 -0
  404. package/src/components/Pagination/PaginationSearchParamsRoot.tsx +45 -0
  405. package/src/components/Pagination/PaginationStateRoot.tsx +23 -0
  406. package/src/components/PasswordInput/PasswordInput.ts +8 -0
  407. package/src/components/PasswordInput/PasswordInputContext.tsx +8 -0
  408. package/src/components/PasswordInput/PasswordInputField.tsx +15 -0
  409. package/src/components/PasswordInput/PasswordInputRoot.tsx +17 -0
  410. package/src/components/PasswordInput/PasswordInputToggle.tsx +52 -0
  411. package/src/components/Portal/Portal.tsx +17 -0
  412. package/src/components/Progress/Progress.ts +6 -0
  413. package/src/components/Progress/ProgressBar.tsx +29 -0
  414. package/src/components/Progress/ProgressContext.ts +8 -0
  415. package/src/components/Progress/ProgressRoot.tsx +22 -0
  416. package/src/components/QrCode/QrCode.tsx +22 -0
  417. package/src/components/Rating/Rating.ts +6 -0
  418. package/src/components/Rating/RatingContext.ts +8 -0
  419. package/src/components/Rating/RatingItems.tsx +50 -0
  420. package/src/components/Rating/RatingRoot.tsx +22 -0
  421. package/src/components/Sheet/Sheet.tsx +14 -0
  422. package/src/components/Sheet/SheetBody.tsx +49 -0
  423. package/src/components/Sheet/SheetContent.tsx +8 -0
  424. package/src/components/Sheet/SheetContext.ts +14 -0
  425. package/src/components/Sheet/SheetHeader.tsx +24 -0
  426. package/src/components/Sheet/SheetPortal.tsx +35 -0
  427. package/src/components/Sheet/SheetRoot.tsx +56 -0
  428. package/src/components/Sheet/SheetToggle.tsx +21 -0
  429. package/src/components/ShowMore/ShowMore.ts +10 -0
  430. package/src/components/ShowMore/ShowMoreContent.tsx +31 -0
  431. package/src/components/ShowMore/ShowMoreContext.ts +11 -0
  432. package/src/components/ShowMore/ShowMoreFade.tsx +18 -0
  433. package/src/components/ShowMore/ShowMoreRoot.tsx +37 -0
  434. package/src/components/ShowMore/ShowMoreTrigger.tsx +23 -0
  435. package/src/components/Slide/Slide.ts +12 -0
  436. package/src/components/Slide/SlideContent.tsx +8 -0
  437. package/src/components/Slide/SlideContext.ts +11 -0
  438. package/src/components/Slide/SlideHeader.tsx +10 -0
  439. package/src/components/Slide/SlidePortal.tsx +26 -0
  440. package/src/components/Slide/SlideRoot.tsx +39 -0
  441. package/src/components/Slide/SlideToggle.tsx +21 -0
  442. package/src/components/Spoiler/Spoiler.tsx +28 -0
  443. package/src/components/Steps/Steps.ts +15 -0
  444. package/src/components/Steps/StepsContext.tsx +16 -0
  445. package/src/components/Steps/StepsControls.tsx +56 -0
  446. package/src/components/Steps/StepsNextBtn.tsx +27 -0
  447. package/src/components/Steps/StepsPrevBtn.tsx +27 -0
  448. package/src/components/Steps/StepsSearchParamsRoot.tsx +45 -0
  449. package/src/components/Steps/StepsStateRoot.tsx +23 -0
  450. package/src/components/Swap/Swap.ts +8 -0
  451. package/src/components/Swap/SwapContext.ts +9 -0
  452. package/src/components/Swap/SwapItem.tsx +16 -0
  453. package/src/components/Swap/SwapRoot.tsx +29 -0
  454. package/src/components/Swap/SwapTrigger.tsx +31 -0
  455. package/src/components/Tabs/Tabs.ts +10 -0
  456. package/src/components/Tabs/TabsContext.ts +11 -0
  457. package/src/components/Tabs/TabsList.tsx +12 -0
  458. package/src/components/Tabs/TabsPanel.tsx +23 -0
  459. package/src/components/Tabs/TabsRoot.tsx +18 -0
  460. package/src/components/Tabs/TabsTab.tsx +23 -0
  461. package/src/components/Toast/Toast.ts +3 -0
  462. package/src/components/Toast/ToastBox.tsx +50 -0
  463. package/src/components/Toast/ToastRoot.tsx +71 -0
  464. package/src/components/Toast/toastStore.ts +22 -0
  465. package/src/components/Toggle/Toggle.ts +6 -0
  466. package/src/components/Toggle/ToggleContext.ts +9 -0
  467. package/src/components/Toggle/ToggleRoot.tsx +26 -0
  468. package/src/components/Toggle/ToggleSwitch.tsx +41 -0
  469. package/src/index.ts +28 -0
  470. package/tsconfig.json +17 -0
@@ -0,0 +1,40 @@
1
+ "use client";
2
+
3
+ import { use } from "react";
4
+ import { cn } from "@kadoui/utils";
5
+ import { motion, AnimatePresence, HTMLMotionProps } from "framer-motion";
6
+
7
+ import { Portal } from "../Portal/Portal";
8
+ import { ModalContext } from "./ModalContext";
9
+ import { ClientOnly } from "../ClientOnly/ClientOnly";
10
+
11
+ export type ModalPortalPropsT = HTMLMotionProps<"div">;
12
+
13
+ export function ModalPortal({ onClick, className, ...props }: ModalPortalPropsT) {
14
+ const { isOpen, setOpen } = use(ModalContext);
15
+
16
+ return (
17
+ <ClientOnly>
18
+ <Portal>
19
+ <AnimatePresence>
20
+ {isOpen ? (
21
+ <motion.div
22
+ initial={{ opacity: 0 }}
23
+ animate={{ opacity: 1 }}
24
+ exit={{ opacity: 0 }}
25
+ onClick={ev => {
26
+ onClick?.(ev);
27
+ setOpen(false);
28
+ }}
29
+ className={cn(
30
+ "fixed inset-0 z-50 f-center bg-foreground/10",
31
+ className
32
+ )}
33
+ {...props}
34
+ />
35
+ ) : null}
36
+ </AnimatePresence>
37
+ </Portal>
38
+ </ClientOnly>
39
+ );
40
+ }
@@ -0,0 +1,47 @@
1
+ "use client"
2
+
3
+ import { getBrowserScrollbarWith } from "@kadoui/utils";
4
+ import { useState, useEffect, PropsWithChildren } from "react";
5
+
6
+ import { ModalContext } from "./ModalContext";
7
+
8
+ export type ModalRootPropsT = PropsWithChildren & {
9
+ defaultOpen?: boolean;
10
+ }
11
+
12
+ export function ModalRoot({ children, defaultOpen = false }: ModalRootPropsT) {
13
+ const [isOpen, setOpen] = useState(defaultOpen);
14
+
15
+ useEffect(() => {
16
+ const handleEscape = (e: KeyboardEvent) => {
17
+ if (e.key === "Escape") {
18
+ setOpen(false);
19
+ };
20
+ };
21
+
22
+ document.addEventListener("keydown", handleEscape);
23
+
24
+ return () => {
25
+ document.removeEventListener("keydown", handleEscape);
26
+ document.body.style.overflow = "unset";
27
+ };
28
+ }, [])
29
+
30
+ useEffect(() => {
31
+ const scrollbarWidth = getBrowserScrollbarWith();
32
+
33
+ if (isOpen) {
34
+ document.body.style.overflow = "hidden";
35
+ document.body.style.paddingRight = `${scrollbarWidth}px`;
36
+ } else {
37
+ document.body.style.overflow = "unset";
38
+ document.body.style.paddingRight = "0px";
39
+ };
40
+ }, [isOpen]);
41
+
42
+ return (
43
+ <ModalContext value={{ isOpen, setOpen }}>
44
+ {children}
45
+ </ModalContext>
46
+ );
47
+ }
@@ -0,0 +1,21 @@
1
+ "use client"
2
+
3
+ import { ButtonHTMLAttributes, use } from "react";
4
+
5
+ import { ModalContext } from "./ModalContext";
6
+
7
+ export type ModalTogglePropsT = ButtonHTMLAttributes<HTMLButtonElement>;
8
+
9
+ export function ModalToggle({ onClick, ...props }: ModalTogglePropsT) {
10
+ const { setOpen } = use(ModalContext);
11
+
12
+ return (
13
+ <button
14
+ onClick={(ev) => {
15
+ onClick?.(ev);
16
+ setOpen(prev => !prev);
17
+ }}
18
+ {...props}
19
+ />
20
+ );
21
+ }
@@ -0,0 +1,8 @@
1
+ import { OtpRoot } from "./OtpRoot";
2
+ import { OtpInputs } from "./OtpInputs";
3
+ import { OtpHiddenInput } from "./OtpHiddenInput";
4
+
5
+ export const Otp = Object.assign(OtpRoot, {
6
+ Inputs: OtpInputs,
7
+ HiddenInput: OtpHiddenInput
8
+ });
@@ -0,0 +1,10 @@
1
+ import { createContext, RefObject } from "react";
2
+
3
+ export type createContextT = {
4
+ inputs?: RefObject<(HTMLInputElement | null)[]>;
5
+ getInputsValue: () => string
6
+ }
7
+
8
+ export const OtpContext = createContext<createContextT>({
9
+ getInputsValue: () => ""
10
+ });
@@ -0,0 +1,15 @@
1
+ "use client";
2
+
3
+ import { InputHTMLAttributes, use } from "react";
4
+
5
+ import { OtpContext } from "./OtpContext";
6
+
7
+ export type OtpHiddenInputPropsT = InputHTMLAttributes<HTMLInputElement>;
8
+
9
+ export function OtpHiddenInput({ name, ...p }: OtpHiddenInputPropsT) {
10
+ const { getInputsValue } = use(OtpContext);
11
+
12
+ return (
13
+ <input type="hidden" tabIndex={-1} name={name || "otp"} value={getInputsValue()} {...p} />
14
+ )
15
+ }
@@ -0,0 +1,86 @@
1
+ "use client";
2
+
3
+ import { cn } from "@kadoui/utils";
4
+ import { ClipboardEvent, InputHTMLAttributes, KeyboardEvent, use } from "react";
5
+
6
+ import { OtpContext } from "./OtpContext";
7
+
8
+ export type OtpInputsPropsT = InputHTMLAttributes<HTMLInputElement> & {
9
+ length: number;
10
+ onLastChange?: (otp: string) => void;
11
+ }
12
+
13
+ export function OtpInputs({ className, name, length, onLastChange, ...props }: OtpInputsPropsT) {
14
+ const { inputs, getInputsValue } = use(OtpContext);
15
+
16
+ const handlePaste = (ev: ClipboardEvent<HTMLInputElement>, startIndex: number) => {
17
+ ev.preventDefault();
18
+
19
+ const pastedData = ev.clipboardData.getData("text").replace(/\s/g, ""); // Remove whitespace
20
+ if (!pastedData) return;
21
+
22
+ for (let i = 0; i < pastedData.length; i++) {
23
+ const inputIndex = startIndex + i;
24
+ if (inputIndex >= length) break; // Don't exceed OTP length
25
+
26
+ const input = inputs?.current[inputIndex];
27
+ const indexedPastedData = pastedData[i];
28
+ if (input && indexedPastedData) {
29
+ input.value = indexedPastedData;
30
+ }
31
+ }
32
+
33
+ const nextIndex = Math.min(startIndex + pastedData.length, length - 1);
34
+ inputs?.current[nextIndex]?.focus();
35
+
36
+ const otpValue = getInputsValue();
37
+ if (otpValue.length === length) {
38
+ onLastChange?.(otpValue);
39
+ }
40
+ };
41
+
42
+ const handleInputChange = (value: string, index: number) => {
43
+ if (value) {
44
+ const currentInput = inputs?.current[index];
45
+ const currentValue = currentInput?.value[currentInput.value.length - 1];
46
+ if (currentValue) {
47
+ currentInput.value = currentValue;
48
+ }
49
+
50
+ const nextInput = inputs?.current[index + 1]
51
+ if (nextInput) {
52
+ nextInput.value = "";
53
+ nextInput.focus();
54
+
55
+ return
56
+ }
57
+
58
+ onLastChange?.(getInputsValue());
59
+ }
60
+ };
61
+
62
+ const handleBackspace = (e: KeyboardEvent<HTMLInputElement>, index: number) => {
63
+ if (e.key === "Backspace" && !e.currentTarget.value && index > 0) {
64
+ inputs?.current[index - 1]?.focus();
65
+ }
66
+ };
67
+
68
+ return Array.from({ length }).map((_, index) => (
69
+ <input
70
+ key={index}
71
+ autoComplete="off"
72
+ name={`${name || "otp"}-${index}`}
73
+ onPaste={ev => handlePaste(ev, index)}
74
+ onKeyDown={ev => handleBackspace(ev, index)}
75
+ onChange={ev => handleInputChange(ev.target.value, index)}
76
+ className={cn("input-outline input-square text-center", className)}
77
+ ref={el => {
78
+ if (inputs) {
79
+ inputs.current[index] = el;
80
+ }
81
+ }}
82
+ {...props}
83
+ />
84
+ )
85
+ );
86
+ }
@@ -0,0 +1,26 @@
1
+ "use client";
2
+
3
+ import { cn } from "@kadoui/utils";
4
+ import { HTMLAttributes, useEffect, useRef } from "react";
5
+
6
+ import { OtpContext } from "./OtpContext";
7
+
8
+ export type OtpRootPropsT = HTMLAttributes<HTMLDivElement>;
9
+
10
+ export function OtpRoot({ className, ...props }: OtpRootPropsT) {
11
+ const inputs = useRef<(HTMLInputElement | null)[]>([]);
12
+
13
+ useEffect(() => {
14
+ inputs.current[0]?.focus();
15
+ }, []);
16
+
17
+ const getInputsValue = () => {
18
+ return inputs?.current.map(input => input?.value || "").join("") || "";
19
+ };
20
+
21
+ return (
22
+ <OtpContext value={{ inputs, getInputsValue }}>
23
+ <div className={cn("f-align gap-1.5", className)} {...props} />
24
+ </OtpContext>
25
+ );
26
+ }
@@ -0,0 +1,15 @@
1
+ import { PaginationCounts } from "./PaginationCounts";
2
+ import { PaginationNextBtn } from "./PaginationNextBtn";
3
+ import { PaginationPrevBtn } from "./PaginationPrevBtn";
4
+ import { PaginationStateRoot } from "./PaginationStateRoot";
5
+ import { PaginationSearchParamsRoot } from "./PaginationSearchParamsRoot";
6
+
7
+ const baseComponents = {
8
+ Counts: PaginationCounts,
9
+ NextBtn: PaginationNextBtn,
10
+ PrevBtn: PaginationPrevBtn
11
+ }
12
+
13
+ export const PaginationWithState = Object.assign(PaginationStateRoot, baseComponents);
14
+
15
+ export const PaginationWithSearchParams = Object.assign(PaginationSearchParamsRoot, baseComponents);
@@ -0,0 +1,10 @@
1
+ import { createContext } from 'react';
2
+
3
+ export type PaginationContextT = {
4
+ page: number;
5
+ pageLength: number;
6
+ nextPage: () => void;
7
+ prevPage: () => void;
8
+ }
9
+
10
+ export const PaginationContext = createContext<PaginationContextT>({} as PaginationContextT);
@@ -0,0 +1,17 @@
1
+ "use client";
2
+
3
+ import { HTMLAttributes, use } from "react";
4
+
5
+ import { PaginationContext } from "./PaginationContext";
6
+
7
+ export type PaginationCountsPropsT = HTMLAttributes<HTMLParagraphElement>;
8
+
9
+ export function PaginationCounts(props: PaginationCountsPropsT) {
10
+ const { page, pageLength } = use(PaginationContext);
11
+
12
+ return (
13
+ <p {...props}>
14
+ Page {page} / {pageLength}
15
+ </p>
16
+ );
17
+ }
@@ -0,0 +1,27 @@
1
+ "use client";
2
+
3
+ import { HTMLAttributes, use } from "react";
4
+ import { ChevronRightIcon } from "lucide-react";
5
+
6
+ import { PaginationContext } from "./PaginationContext";
7
+
8
+ export type PaginationNextBtnPropsT = HTMLAttributes<HTMLButtonElement> & {
9
+ disabled?: boolean;
10
+ };
11
+
12
+ export function PaginationNextBtn({ onClick, disabled, children, ...props }: PaginationNextBtnPropsT) {
13
+ const { page, pageLength, nextPage } = use(PaginationContext);
14
+
15
+ return (
16
+ <button
17
+ disabled={disabled || page === pageLength}
18
+ onClick={ev => {
19
+ onClick?.(ev);
20
+ nextPage();
21
+ }}
22
+ {...props}
23
+ >
24
+ {children || <ChevronRightIcon className="compatible-icon" />}
25
+ </button>
26
+ )
27
+ }
@@ -0,0 +1,27 @@
1
+ "use client";
2
+
3
+ import { HTMLAttributes, use } from "react";
4
+ import { ChevronLeftIcon } from "lucide-react";
5
+
6
+ import { PaginationContext } from "./PaginationContext";
7
+
8
+ export type PaginationPrevBtnPropsT = HTMLAttributes<HTMLButtonElement> & {
9
+ disabled?: boolean;
10
+ }
11
+
12
+ export function PaginationPrevBtn({ onClick, disabled, children, ...props }: PaginationPrevBtnPropsT) {
13
+ const { page, prevPage } = use(PaginationContext);
14
+
15
+ return (
16
+ <button
17
+ disabled={disabled || page === 1}
18
+ onClick={ev => {
19
+ onClick?.(ev);
20
+ prevPage();
21
+ }}
22
+ {...props}
23
+ >
24
+ {children || <ChevronLeftIcon className="compatible-icon" />}
25
+ </button>
26
+ )
27
+ }
@@ -0,0 +1,45 @@
1
+ "use client";
2
+
3
+ import { useRouter, useSearchParams } from "next/navigation";
4
+ import { PropsWithChildren, useEffect, useState } from "react";
5
+
6
+ import { PaginationContext } from "./PaginationContext";
7
+
8
+ export type PaginationSearchParamsRootPropsT = PropsWithChildren & {
9
+ pageKey?: string;
10
+ pageLength: number;
11
+ }
12
+
13
+ export function PaginationSearchParamsRoot({ pageKey, pageLength, children }: PaginationSearchParamsRootPropsT) {
14
+ const router = useRouter();
15
+ const searchParams = useSearchParams();
16
+ const [currentPage, setCurrentPage] = useState(1);
17
+
18
+ useEffect(() => {
19
+ setCurrentPage(+(searchParams.get(pageKey || "page") || "1"));
20
+ }, [pageKey, searchParams]);
21
+
22
+ const pushRouter = (page: number) => {
23
+ const params = new URLSearchParams(searchParams.toString());
24
+ params.set(pageKey || "page", page.toString());
25
+ router.push("?" + params.toString())
26
+ }
27
+
28
+ const nextPage = () => {
29
+ if (currentPage < pageLength) {
30
+ pushRouter(currentPage + 1)
31
+ }
32
+ }
33
+
34
+ const prevPage = () => {
35
+ if (currentPage > 1) {
36
+ pushRouter(currentPage - 1)
37
+ }
38
+ }
39
+
40
+ return (
41
+ <PaginationContext.Provider value={{ page: currentPage, pageLength, nextPage, prevPage }}>
42
+ {children}
43
+ </PaginationContext.Provider>
44
+ )
45
+ }
@@ -0,0 +1,23 @@
1
+ "use client";
2
+
3
+ import { PropsWithChildren, useState } from "react";
4
+
5
+ import { PaginationContext } from "./PaginationContext";
6
+
7
+ export type PaginationStateRootPropsT = PropsWithChildren & {
8
+ pageLength: number;
9
+ }
10
+
11
+ export function PaginationStateRoot({ pageLength, children }: PaginationStateRootPropsT) {
12
+ const [page, setPage] = useState(1);
13
+
14
+ const nextPage = () => setPage(prev => prev < pageLength ? prev + 1 : prev);
15
+
16
+ const prevPage = () => setPage(prev => prev > 1 ? prev - 1 : prev);
17
+
18
+ return (
19
+ <PaginationContext.Provider value={{ page, pageLength, nextPage, prevPage }}>
20
+ {children}
21
+ </PaginationContext.Provider>
22
+ );
23
+ }
@@ -0,0 +1,8 @@
1
+ import { PasswordInputRoot } from "./PasswordInputRoot";
2
+ import { PasswordInputField } from "./PasswordInputField";
3
+ import { PasswordInputToggle } from "./PasswordInputToggle";
4
+
5
+ export const PasswordInput = Object.assign(PasswordInputRoot, {
6
+ Field: PasswordInputField,
7
+ Toggle: PasswordInputToggle
8
+ });
@@ -0,0 +1,8 @@
1
+ import { createContext, Dispatch, SetStateAction } from "react";
2
+
3
+ export type PasswordInputContextT = {
4
+ isVisible: boolean;
5
+ setIsVisible: Dispatch<SetStateAction<boolean>>;
6
+ }
7
+
8
+ export const PasswordInputContext = createContext<PasswordInputContextT>({} as PasswordInputContextT);
@@ -0,0 +1,15 @@
1
+ "use client";
2
+
3
+ import { InputHTMLAttributes, use } from "react";
4
+
5
+ import { PasswordInputContext } from "./PasswordInputContext";
6
+
7
+ export type PasswordInputFieldPropsT = InputHTMLAttributes<HTMLInputElement>;
8
+
9
+ export function PasswordInputField(props: PasswordInputFieldPropsT) {
10
+ const { isVisible } = use(PasswordInputContext);
11
+
12
+ return (
13
+ <input type={isVisible ? "text" : "password"} {...props} />
14
+ );
15
+ }
@@ -0,0 +1,17 @@
1
+ "use client";
2
+
3
+ import { LabelHTMLAttributes, useState } from "react";
4
+
5
+ import { PasswordInputContext } from "./PasswordInputContext";
6
+
7
+ export type PasswordInputRootPropsT = LabelHTMLAttributes<HTMLLabelElement>;
8
+
9
+ export function PasswordInputRoot(props: PasswordInputRootPropsT) {
10
+ const [isVisible, setIsVisible] = useState(false);
11
+
12
+ return (
13
+ <PasswordInputContext value={{ isVisible, setIsVisible }}>
14
+ <label {...props} />
15
+ </PasswordInputContext>
16
+ )
17
+ }
@@ -0,0 +1,52 @@
1
+ "use client";
2
+
3
+ import { ButtonHTMLAttributes, use } from "react";
4
+ import { EyeClosedIcon, EyeIcon } from "lucide-react";
5
+ import { AnimatePresence, motion } from "framer-motion";
6
+
7
+ import { PasswordInputContext } from "./PasswordInputContext";
8
+
9
+ export type PasswordInputTogglePropsT = ButtonHTMLAttributes<HTMLButtonElement>;
10
+
11
+ export function PasswordInputToggle({ onClick, children, ...props }: PasswordInputTogglePropsT) {
12
+ const { isVisible, setIsVisible } = use(PasswordInputContext);
13
+
14
+ return (
15
+ <button
16
+ type="button"
17
+ onClick={ev => {
18
+ setIsVisible(prev => !prev);
19
+ onClick?.(ev);
20
+ }}
21
+ {...props}
22
+ >
23
+ {children || (
24
+ <AnimatePresence initial={false} mode="wait">
25
+ {isVisible ? (
26
+ <motion.div
27
+ key="visible"
28
+ className="compatible-icon"
29
+ initial={{ opacity: 0, y: "-25%" }}
30
+ animate={{ opacity: 1, y: 0 }}
31
+ exit={{ opacity: 0, y: "25%" }}
32
+ transition={{ duration: 0.1 }}
33
+ >
34
+ <EyeIcon className="size-full" />
35
+ </motion.div>
36
+ ) : (
37
+ <motion.div
38
+ key="hidden"
39
+ className="compatible-icon"
40
+ initial={{ opacity: 0, y: "-25%" }}
41
+ animate={{ opacity: 1, y: 0 }}
42
+ exit={{ opacity: 0, y: "25%" }}
43
+ transition={{ duration: 0.1 }}
44
+ >
45
+ <EyeClosedIcon className="size-full" />
46
+ </motion.div>
47
+ )}
48
+ </AnimatePresence>
49
+ )}
50
+ </button>
51
+ );
52
+ }
@@ -0,0 +1,17 @@
1
+ "use client";
2
+
3
+ import { createPortal } from "react-dom";
4
+ import { PropsWithChildren } from "react";
5
+
6
+ export type PortalPropsT = PropsWithChildren & {
7
+ container?: Element;
8
+ }
9
+
10
+ export function Portal({ children, container }: PortalPropsT) {
11
+ return createPortal(
12
+ <>
13
+ {children}
14
+ </>,
15
+ container || document.body
16
+ );
17
+ }
@@ -0,0 +1,6 @@
1
+ import { ProgressBar } from "./ProgressBar";
2
+ import { ProgressRoot } from "./ProgressRoot";
3
+
4
+ export const Progress = Object.assign(ProgressRoot, {
5
+ Bar: ProgressBar
6
+ });
@@ -0,0 +1,29 @@
1
+ "use client"
2
+
3
+ import { use } from "react";
4
+ import { cn } from "@kadoui/utils";
5
+ import { HTMLMotionProps, motion } from "framer-motion";
6
+
7
+ import { ProgressContext } from "./ProgressContext";
8
+
9
+ export type ProgressBarPropsT = HTMLMotionProps<"div"> & {
10
+ duration?: number;
11
+ }
12
+
13
+ export function ProgressBar({ className, duration, children, ...p }: ProgressBarPropsT) {
14
+ const { value, maxValue } = use(ProgressContext);
15
+
16
+ const percentage = Math.min(100, Math.max(0, (value / maxValue) * 100));
17
+
18
+ return (
19
+ <motion.div
20
+ className={cn("f-center h-full bg-palette text-brush max-w-full", className)}
21
+ initial={{ width: 0 }}
22
+ whileInView={{ width: `${percentage}%` }}
23
+ transition={{ duration: duration || 3 }}
24
+ {...p}
25
+ >
26
+ {children || <span className="text-xs">{percentage}%</span>}
27
+ </motion.div>
28
+ )
29
+ }
@@ -0,0 +1,8 @@
1
+ import { createContext } from "react";
2
+
3
+ export type ProgressContextT = {
4
+ value: number;
5
+ maxValue: number;
6
+ }
7
+
8
+ export const ProgressContext = createContext<ProgressContextT>({} as ProgressContextT);
@@ -0,0 +1,22 @@
1
+ "use client"
2
+
3
+ import { cn } from "@kadoui/utils";
4
+ import type { HTMLAttributes } from "react";
5
+
6
+ import { ProgressContext } from "./ProgressContext";
7
+
8
+ export type ProgressRootPropsT = HTMLAttributes<HTMLDivElement> & {
9
+ value: number;
10
+ maxValue?: number;
11
+ }
12
+
13
+ export function ProgressRoot({ value, maxValue = 100, className, ...p }: ProgressRootPropsT) {
14
+ return (
15
+ <ProgressContext value={{ value, maxValue }}>
16
+ <div
17
+ className={cn("w-full rounded-kado overflow-hidden h-6 bg-palette/10", className)}
18
+ {...p}
19
+ />
20
+ </ProgressContext>
21
+ )
22
+ }
@@ -0,0 +1,22 @@
1
+ "use client";
2
+
3
+ import QRCode, { QRCodeRenderersOptions } from "qrcode";
4
+ import React, { HTMLAttributes, useEffect, useRef } from "react";
5
+
6
+ export type QrCodePropsT = HTMLAttributes<HTMLCanvasElement> & {
7
+ value: string
8
+ options: QRCodeRenderersOptions;
9
+ }
10
+
11
+ export function QrCode({ value, options, ...props }: QrCodePropsT) {
12
+ const canvasRef = useRef(null);
13
+
14
+ useEffect(() => {
15
+ console.log(value)
16
+ QRCode.toCanvas(canvasRef.current, value, options, function (error) {
17
+ if (error) console.error(error);
18
+ });
19
+ }, [value, options]);
20
+
21
+ return <canvas ref={canvasRef} {...props} />;
22
+ }
@@ -0,0 +1,6 @@
1
+ import { RatingRoot } from "./RatingRoot";
2
+ import { RatingItems } from "./RatingItems";
3
+
4
+ export const Rating = Object.assign(RatingRoot, {
5
+ Items: RatingItems
6
+ });
@@ -0,0 +1,8 @@
1
+ import { createContext, Dispatch, SetStateAction } from "react";
2
+
3
+ export type RatingContextT = {
4
+ hoverValue: number | null;
5
+ setHoverValue: Dispatch<SetStateAction<number | null>>;
6
+ }
7
+
8
+ export const RatingContext = createContext<RatingContextT>({} as RatingContextT);