@majapisoftwares/ui 4.0.2

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 (436) hide show
  1. package/base.css +359 -0
  2. package/bootstrap/AppProps.d.ts +10 -0
  3. package/bootstrap/AppProps.js +1 -0
  4. package/bootstrap/index.d.ts +1 -0
  5. package/bootstrap/index.js +1 -0
  6. package/bootstrap/modeScript.d.ts +2 -0
  7. package/bootstrap/modeScript.js +35 -0
  8. package/bootstrap/nprogress.d.ts +1 -0
  9. package/bootstrap/nprogress.js +19 -0
  10. package/bootstrap/scrolledScript.d.ts +2 -0
  11. package/bootstrap/scrolledScript.js +27 -0
  12. package/bootstrap/setupFocusManager.d.ts +1 -0
  13. package/bootstrap/setupFocusManager.js +13 -0
  14. package/bootstrap/suppressConsoleLog.d.ts +1 -0
  15. package/bootstrap/suppressConsoleLog.js +8 -0
  16. package/components/Accordion/Accordion.d.ts +19 -0
  17. package/components/Accordion/Accordion.jsx +27 -0
  18. package/components/Accordion/index.d.ts +3 -0
  19. package/components/Accordion/index.jsx +3 -0
  20. package/components/Alert/Alert.d.ts +31 -0
  21. package/components/Alert/Alert.jsx +53 -0
  22. package/components/Alert/index.d.ts +3 -0
  23. package/components/Alert/index.jsx +3 -0
  24. package/components/Aurora/Aurora.d.ts +10 -0
  25. package/components/Aurora/Aurora.jsx +189 -0
  26. package/components/Aurora/index.d.ts +3 -0
  27. package/components/Aurora/index.jsx +3 -0
  28. package/components/Autocomplete/Autocomplete.d.ts +7 -0
  29. package/components/Autocomplete/Autocomplete.jsx +23 -0
  30. package/components/Autocomplete/UnstyledAutocomplete.d.ts +36 -0
  31. package/components/Autocomplete/UnstyledAutocomplete.jsx +73 -0
  32. package/components/Autocomplete/index.d.ts +5 -0
  33. package/components/Autocomplete/index.jsx +5 -0
  34. package/components/BackgroundEffects/BottomBlurryPoint.d.ts +3 -0
  35. package/components/BackgroundEffects/BottomBlurryPoint.jsx +14 -0
  36. package/components/BackgroundEffects/TopBlurryPoint.d.ts +3 -0
  37. package/components/BackgroundEffects/TopBlurryPoint.jsx +14 -0
  38. package/components/Badge/Badge.d.ts +42 -0
  39. package/components/Badge/Badge.jsx +50 -0
  40. package/components/Badge/index.d.ts +3 -0
  41. package/components/Badge/index.jsx +3 -0
  42. package/components/Breadcrumbs/Breadcrumbs.d.ts +11 -0
  43. package/components/Breadcrumbs/Breadcrumbs.jsx +42 -0
  44. package/components/Breadcrumbs/index.d.ts +3 -0
  45. package/components/Breadcrumbs/index.jsx +3 -0
  46. package/components/Button/Button.d.ts +111 -0
  47. package/components/Button/Button.jsx +129 -0
  48. package/components/Button/UnstyledButton.d.ts +10 -0
  49. package/components/Button/UnstyledButton.jsx +13 -0
  50. package/components/Button/index.d.ts +3 -0
  51. package/components/Button/index.jsx +3 -0
  52. package/components/Carousel/Carousel.d.ts +19 -0
  53. package/components/Carousel/Carousel.jsx +55 -0
  54. package/components/Carousel/index.d.ts +3 -0
  55. package/components/Carousel/index.jsx +3 -0
  56. package/components/Checkbox/Checkbox.d.ts +14 -0
  57. package/components/Checkbox/Checkbox.jsx +45 -0
  58. package/components/Checkbox/index.d.ts +3 -0
  59. package/components/Checkbox/index.js +3 -0
  60. package/components/Code/Code.d.ts +12 -0
  61. package/components/Code/Code.jsx +25 -0
  62. package/components/Code/Json.d.ts +5 -0
  63. package/components/Code/Json.jsx +7 -0
  64. package/components/Code/index.d.ts +4 -0
  65. package/components/Code/index.jsx +4 -0
  66. package/components/ConfirmationButton/ConfirmationButton.d.ts +17 -0
  67. package/components/ConfirmationButton/ConfirmationButton.jsx +13 -0
  68. package/components/ConfirmationButton/index.d.ts +3 -0
  69. package/components/ConfirmationButton/index.jsx +3 -0
  70. package/components/ContextMenu/ContextMenu.d.ts +28 -0
  71. package/components/ContextMenu/ContextMenu.jsx +70 -0
  72. package/components/ContextMenu/index.d.ts +3 -0
  73. package/components/ContextMenu/index.jsx +3 -0
  74. package/components/CopyButton/CopyButton.d.ts +7 -0
  75. package/components/CopyButton/CopyButton.jsx +29 -0
  76. package/components/CopyButton/index.d.ts +3 -0
  77. package/components/CopyButton/index.jsx +3 -0
  78. package/components/DateInput/DateInput.d.ts +6 -0
  79. package/components/DateInput/DateInput.jsx +19 -0
  80. package/components/DateInput/DateTimeInput.d.ts +3 -0
  81. package/components/DateInput/DateTimeInput.jsx +8 -0
  82. package/components/DateInput/index.d.ts +4 -0
  83. package/components/DateInput/index.jsx +4 -0
  84. package/components/DateInput/useRefValue.d.ts +5 -0
  85. package/components/DateInput/useRefValue.js +48 -0
  86. package/components/DatePicker/DatePicker.d.ts +19 -0
  87. package/components/DatePicker/DatePicker.jsx +55 -0
  88. package/components/DatePicker/index.d.ts +3 -0
  89. package/components/DatePicker/index.jsx +3 -0
  90. package/components/DateRangePicker/DateRangePicker.d.ts +16 -0
  91. package/components/DateRangePicker/DateRangePicker.jsx +56 -0
  92. package/components/DateRangePicker/index.d.ts +3 -0
  93. package/components/DateRangePicker/index.jsx +3 -0
  94. package/components/Dialog/Dialog.d.ts +25 -0
  95. package/components/Dialog/Dialog.jsx +35 -0
  96. package/components/Dialog/Dialogs.d.ts +1 -0
  97. package/components/Dialog/Dialogs.jsx +21 -0
  98. package/components/Dialog/dialogs.state.d.ts +21 -0
  99. package/components/Dialog/dialogs.state.js +40 -0
  100. package/components/Dialog/index.d.ts +6 -0
  101. package/components/Dialog/index.jsx +7 -0
  102. package/components/Drawer/Drawer.d.ts +15 -0
  103. package/components/Drawer/Drawer.jsx +72 -0
  104. package/components/Drawer/index.d.ts +3 -0
  105. package/components/Drawer/index.jsx +3 -0
  106. package/components/DropdownMenu/DropdownMenu.d.ts +33 -0
  107. package/components/DropdownMenu/DropdownMenu.jsx +74 -0
  108. package/components/DropdownMenu/index.d.ts +3 -0
  109. package/components/DropdownMenu/index.jsx +3 -0
  110. package/components/ErrorBoundary/ErrorBoundary.d.ts +18 -0
  111. package/components/ErrorBoundary/ErrorBoundary.jsx +32 -0
  112. package/components/ErrorBoundary/index.d.ts +3 -0
  113. package/components/ErrorBoundary/index.jsx +3 -0
  114. package/components/ErrorPage/Error404Page.d.ts +1 -0
  115. package/components/ErrorPage/Error404Page.jsx +4 -0
  116. package/components/ErrorPage/Error500Page.d.ts +1 -0
  117. package/components/ErrorPage/Error500Page.jsx +4 -0
  118. package/components/ErrorPage/ErrorPage.d.ts +11 -0
  119. package/components/ErrorPage/ErrorPage.jsx +23 -0
  120. package/components/FileInput/FileInput.d.ts +47 -0
  121. package/components/FileInput/FileInput.jsx +144 -0
  122. package/components/FileInput/PreviewFile.d.ts +13 -0
  123. package/components/FileInput/PreviewFile.jsx +55 -0
  124. package/components/FileInput/index.d.ts +3 -0
  125. package/components/FileInput/index.jsx +3 -0
  126. package/components/FileSelect/FileSelect.d.ts +31 -0
  127. package/components/FileSelect/FileSelect.jsx +143 -0
  128. package/components/FileSelect/index.d.ts +3 -0
  129. package/components/FileSelect/index.jsx +3 -0
  130. package/components/Footer/Footer.d.ts +19 -0
  131. package/components/Footer/Footer.jsx +30 -0
  132. package/components/Footer/index.d.ts +3 -0
  133. package/components/Footer/index.jsx +3 -0
  134. package/components/GridPattern/GridPattern.d.ts +2 -0
  135. package/components/GridPattern/GridPattern.jsx +12 -0
  136. package/components/GridPattern/index.d.ts +3 -0
  137. package/components/GridPattern/index.jsx +3 -0
  138. package/components/Group/Group.d.ts +5 -0
  139. package/components/Group/Group.jsx +6 -0
  140. package/components/Group/index.d.ts +3 -0
  141. package/components/Group/index.jsx +3 -0
  142. package/components/Header/Header.d.ts +5 -0
  143. package/components/Header/Header.jsx +19 -0
  144. package/components/Header/index.d.ts +3 -0
  145. package/components/Header/index.jsx +3 -0
  146. package/components/ImageInput/ImageInput.d.ts +4 -0
  147. package/components/ImageInput/ImageInput.jsx +8 -0
  148. package/components/ImageInput/index.d.ts +3 -0
  149. package/components/ImageInput/index.jsx +3 -0
  150. package/components/Input/Input.d.ts +14 -0
  151. package/components/Input/Input.jsx +57 -0
  152. package/components/Input/InputIcon.d.ts +9 -0
  153. package/components/Input/InputIcon.jsx +7 -0
  154. package/components/Input/MultiSelectInput.d.ts +13 -0
  155. package/components/Input/MultiSelectInput.jsx +28 -0
  156. package/components/Input/NumericInput.d.ts +6 -0
  157. package/components/Input/NumericInput.jsx +6 -0
  158. package/components/Input/PatternInput.d.ts +6 -0
  159. package/components/Input/PatternInput.jsx +6 -0
  160. package/components/Input/UnstyledInput.d.ts +22 -0
  161. package/components/Input/UnstyledInput.jsx +28 -0
  162. package/components/Input/index.d.ts +6 -0
  163. package/components/Input/index.jsx +6 -0
  164. package/components/Input2/InputWrapper.d.ts +11 -0
  165. package/components/Input2/InputWrapper.jsx +11 -0
  166. package/components/Link/Link.d.ts +3 -0
  167. package/components/Link/Link.jsx +9 -0
  168. package/components/Link/index.d.ts +3 -0
  169. package/components/Link/index.jsx +3 -0
  170. package/components/Loading/Loading.d.ts +3 -0
  171. package/components/Loading/Loading.jsx +13 -0
  172. package/components/Loading/index.d.ts +3 -0
  173. package/components/Loading/index.jsx +3 -0
  174. package/components/Magnet/Magnet.d.ts +13 -0
  175. package/components/Magnet/Magnet.jsx +50 -0
  176. package/components/Magnet/index.d.ts +3 -0
  177. package/components/Magnet/index.jsx +3 -0
  178. package/components/Markdown/Markdown.d.ts +8 -0
  179. package/components/Markdown/Markdown.jsx +13 -0
  180. package/components/Markdown/index.d.ts +3 -0
  181. package/components/Markdown/index.jsx +3 -0
  182. package/components/Menu/Menu.d.ts +28 -0
  183. package/components/Menu/Menu.jsx +54 -0
  184. package/components/Modal/Modal.d.ts +45 -0
  185. package/components/Modal/Modal.jsx +65 -0
  186. package/components/Modal/index.d.ts +4 -0
  187. package/components/Modal/index.jsx +4 -0
  188. package/components/Modal/useModalState.d.ts +6 -0
  189. package/components/Modal/useModalState.js +16 -0
  190. package/components/ModeToggle/ModeToggle.d.ts +9 -0
  191. package/components/ModeToggle/ModeToggle.jsx +12 -0
  192. package/components/ModeToggle/index.d.ts +4 -0
  193. package/components/ModeToggle/index.jsx +5 -0
  194. package/components/ModeToggle/useModeToggle.d.ts +1 -0
  195. package/components/ModeToggle/useModeToggle.js +21 -0
  196. package/components/MultiSelect/MultiSelect.d.ts +28 -0
  197. package/components/MultiSelect/MultiSelect.jsx +130 -0
  198. package/components/MultiSelect/index.d.ts +3 -0
  199. package/components/MultiSelect/index.jsx +3 -0
  200. package/components/MultiText/MultiText.d.ts +23 -0
  201. package/components/MultiText/MultiText.jsx +119 -0
  202. package/components/MultiText/index.d.ts +3 -0
  203. package/components/MultiText/index.jsx +3 -0
  204. package/components/NavigationDrawer/NavigationDrawer.d.ts +9 -0
  205. package/components/NavigationDrawer/NavigationDrawer.jsx +29 -0
  206. package/components/NavigationDrawer/NavigationItem.d.ts +13 -0
  207. package/components/NavigationDrawer/NavigationItem.jsx +24 -0
  208. package/components/NavigationDrawer/index.d.ts +6 -0
  209. package/components/NavigationDrawer/index.jsx +6 -0
  210. package/components/NavigationDrawer/navigationDrawer.state.d.ts +9 -0
  211. package/components/NavigationDrawer/navigationDrawer.state.js +19 -0
  212. package/components/NoSsr/NoSsr.d.ts +4 -0
  213. package/components/NoSsr/NoSsr.jsx +8 -0
  214. package/components/NoSsr/index.d.ts +3 -0
  215. package/components/NoSsr/index.jsx +3 -0
  216. package/components/Noise/Noise.d.ts +11 -0
  217. package/components/Noise/Noise.jsx +69 -0
  218. package/components/Noise/index.d.ts +3 -0
  219. package/components/Noise/index.jsx +3 -0
  220. package/components/Notifications/Notifications.d.ts +3 -0
  221. package/components/Notifications/Notifications.jsx +60 -0
  222. package/components/Notifications/index.d.ts +5 -0
  223. package/components/Notifications/index.jsx +6 -0
  224. package/components/Notifications/notifications.state.d.ts +24 -0
  225. package/components/Notifications/notifications.state.js +41 -0
  226. package/components/Orb/Orb.d.ts +8 -0
  227. package/components/Orb/Orb.jsx +258 -0
  228. package/components/Orb/index.d.ts +3 -0
  229. package/components/Orb/index.jsx +3 -0
  230. package/components/Pagination/Pagination.d.ts +13 -0
  231. package/components/Pagination/Pagination.jsx +64 -0
  232. package/components/Pagination/index.d.ts +3 -0
  233. package/components/Pagination/index.jsx +3 -0
  234. package/components/Particles/Particles.d.ts +18 -0
  235. package/components/Particles/Particles.jsx +205 -0
  236. package/components/Particles/index.d.ts +3 -0
  237. package/components/Particles/index.jsx +3 -0
  238. package/components/PictureCropInput/PictureCropInput.d.ts +17 -0
  239. package/components/PictureCropInput/PictureCropInput.jsx +153 -0
  240. package/components/PictureCropInput/canvasPreview.d.ts +2 -0
  241. package/components/PictureCropInput/canvasPreview.js +37 -0
  242. package/components/PictureCropInput/index.d.ts +3 -0
  243. package/components/PictureCropInput/index.js +3 -0
  244. package/components/Popover/Popover.d.ts +13 -0
  245. package/components/Popover/Popover.jsx +22 -0
  246. package/components/Popover/index.d.ts +3 -0
  247. package/components/Popover/index.jsx +3 -0
  248. package/components/Resizable/Resizable.d.ts +12 -0
  249. package/components/Resizable/Resizable.jsx +54 -0
  250. package/components/Resizable/index.d.ts +3 -0
  251. package/components/Resizable/index.jsx +3 -0
  252. package/components/ScrollArea/ScrollArea.d.ts +9 -0
  253. package/components/ScrollArea/ScrollArea.jsx +16 -0
  254. package/components/ScrollArea/index.d.ts +3 -0
  255. package/components/ScrollArea/index.jsx +3 -0
  256. package/components/Select/Select.d.ts +24 -0
  257. package/components/Select/Select.jsx +55 -0
  258. package/components/Select/index.d.ts +3 -0
  259. package/components/Select/index.jsx +3 -0
  260. package/components/Skeleton/Skeleton.d.ts +2 -0
  261. package/components/Skeleton/Skeleton.jsx +8 -0
  262. package/components/Skeleton/index.d.ts +3 -0
  263. package/components/Skeleton/index.jsx +3 -0
  264. package/components/Slider/Slider.d.ts +10 -0
  265. package/components/Slider/Slider.jsx +21 -0
  266. package/components/Slider/index.d.ts +3 -0
  267. package/components/Slider/index.jsx +3 -0
  268. package/components/Spotlight/Spotlight.d.ts +30 -0
  269. package/components/Spotlight/Spotlight.jsx +77 -0
  270. package/components/Spotlight/index.d.ts +3 -0
  271. package/components/Spotlight/index.jsx +3 -0
  272. package/components/SpotlightCard/SpotlightCard.d.ts +7 -0
  273. package/components/SpotlightCard/SpotlightCard.jsx +35 -0
  274. package/components/SpotlightCard/index.d.ts +3 -0
  275. package/components/SpotlightCard/index.jsx +3 -0
  276. package/components/Stack/Stack.d.ts +4 -0
  277. package/components/Stack/Stack.jsx +5 -0
  278. package/components/Stack/index.d.ts +3 -0
  279. package/components/Stack/index.jsx +3 -0
  280. package/components/StarBorder/StarBorder.d.ts +11 -0
  281. package/components/StarBorder/StarBorder.jsx +19 -0
  282. package/components/StarBorder/index.d.ts +3 -0
  283. package/components/StarBorder/index.jsx +3 -0
  284. package/components/Switch/Switch.d.ts +16 -0
  285. package/components/Switch/Switch.jsx +24 -0
  286. package/components/Switch/index.d.ts +3 -0
  287. package/components/Switch/index.jsx +3 -0
  288. package/components/Table/DataTable.d.ts +57 -0
  289. package/components/Table/DataTable.jsx +155 -0
  290. package/components/Table/Table.d.ts +27 -0
  291. package/components/Table/Table.jsx +31 -0
  292. package/components/Table/TableActionButton.d.ts +6 -0
  293. package/components/Table/TableActionButton.jsx +20 -0
  294. package/components/Table/TableBody.d.ts +6 -0
  295. package/components/Table/TableBody.jsx +10 -0
  296. package/components/Table/TableCell.d.ts +9 -0
  297. package/components/Table/TableCell.jsx +18 -0
  298. package/components/Table/TableFooter.d.ts +5 -0
  299. package/components/Table/TableFooter.jsx +5 -0
  300. package/components/Table/TableFooterWithPagination.d.ts +13 -0
  301. package/components/Table/TableFooterWithPagination.jsx +57 -0
  302. package/components/Table/TableHead.d.ts +5 -0
  303. package/components/Table/TableHead.jsx +9 -0
  304. package/components/Table/TableHeadContext.d.ts +4 -0
  305. package/components/Table/TableHeadContext.jsx +3 -0
  306. package/components/Table/TableHeader.d.ts +7 -0
  307. package/components/Table/TableHeader.jsx +15 -0
  308. package/components/Table/TableRow.d.ts +8 -0
  309. package/components/Table/TableRow.jsx +9 -0
  310. package/components/Table/index.d.ts +3 -0
  311. package/components/Table/index.jsx +3 -0
  312. package/components/Tabs/Tabs.d.ts +9 -0
  313. package/components/Tabs/Tabs.jsx +13 -0
  314. package/components/Tabs/index.d.ts +3 -0
  315. package/components/Tabs/index.jsx +3 -0
  316. package/components/TabsSwitcher/Tab.d.ts +15 -0
  317. package/components/TabsSwitcher/Tab.jsx +18 -0
  318. package/components/TabsSwitcher/TabsSwitcher.d.ts +22 -0
  319. package/components/TabsSwitcher/TabsSwitcher.jsx +31 -0
  320. package/components/TabsSwitcher/index.d.ts +4 -0
  321. package/components/TabsSwitcher/index.jsx +4 -0
  322. package/components/Text/Text.d.ts +24 -0
  323. package/components/Text/Text.jsx +28 -0
  324. package/components/Text/index.d.ts +3 -0
  325. package/components/Text/index.jsx +3 -0
  326. package/components/Textarea/Textarea.d.ts +5 -0
  327. package/components/Textarea/Textarea.jsx +6 -0
  328. package/components/Textarea/index.d.ts +3 -0
  329. package/components/Textarea/index.js +3 -0
  330. package/components/Threads/Threads.d.ts +9 -0
  331. package/components/Threads/Threads.jsx +203 -0
  332. package/components/Threads/index.d.ts +3 -0
  333. package/components/Threads/index.jsx +3 -0
  334. package/components/Tooltip/Tooltip.d.ts +11 -0
  335. package/components/Tooltip/Tooltip.jsx +21 -0
  336. package/components/Tooltip/index.d.ts +3 -0
  337. package/components/Tooltip/index.jsx +3 -0
  338. package/components/VisibilityActivatedButton/VisibilityActivatedButton.d.ts +7 -0
  339. package/components/VisibilityActivatedButton/VisibilityActivatedButton.jsx +18 -0
  340. package/components/VisibilityActivatedButton/index.d.ts +3 -0
  341. package/components/VisibilityActivatedButton/index.jsx +3 -0
  342. package/form.d.ts +82 -0
  343. package/form.js +113 -0
  344. package/form2.d.ts +15 -0
  345. package/form2.jsx +29 -0
  346. package/hooks/useBeforeUnload.d.ts +1 -0
  347. package/hooks/useBeforeUnload.js +17 -0
  348. package/hooks/useDebounceEffect.d.ts +2 -0
  349. package/hooks/useDebounceEffect.js +14 -0
  350. package/hooks/useDebouncedValue.d.ts +2 -0
  351. package/hooks/useDebouncedValue.js +14 -0
  352. package/hooks/useLagRadar.d.ts +1 -0
  353. package/hooks/useLagRadar.jsx +124 -0
  354. package/hooks/useMediaQuery.d.ts +1 -0
  355. package/hooks/useMediaQuery.js +37 -0
  356. package/hooks/useMutationWindowCloseProtection.d.ts +2 -0
  357. package/hooks/useMutationWindowCloseProtection.js +13 -0
  358. package/hooks/useScroll.d.ts +3 -0
  359. package/hooks/useScroll.js +47 -0
  360. package/hooks/useTranslation.d.ts +4 -0
  361. package/hooks/useTranslation.js +11 -0
  362. package/hooks/useWhyDidYouUpdate.d.ts +3 -0
  363. package/hooks/useWhyDidYouUpdate.js +44 -0
  364. package/imgur.d.ts +1 -0
  365. package/imgur.js +13 -0
  366. package/package.json +9 -0
  367. package/styles/DayPicker.classNames.d.ts +29 -0
  368. package/styles/DayPicker.classNames.js +30 -0
  369. package/styles/DayPicker.classNames.ts +81 -0
  370. package/styles/Dropdown.classNames.d.ts +6 -0
  371. package/styles/Dropdown.classNames.js +7 -0
  372. package/styles/Dropdown.classNames.ts +38 -0
  373. package/styles/Input.css +23 -0
  374. package/styles/Modal.classNames.d.ts +2 -0
  375. package/styles/Modal.classNames.js +3 -0
  376. package/styles/Modal.classNames.ts +15 -0
  377. package/styles/MultiText.css +40 -0
  378. package/styles/Pagination.css +19 -0
  379. package/styles/Tabs.css +23 -0
  380. package/tsconfig.tsbuildinfo +1 -0
  381. package/types.d.ts +6 -0
  382. package/types.js +1 -0
  383. package/utils/UseState.d.ts +3 -0
  384. package/utils/UseState.js +1 -0
  385. package/utils/blobToText.d.ts +1 -0
  386. package/utils/blobToText.js +13 -0
  387. package/utils/capitalize.d.ts +1 -0
  388. package/utils/capitalize.js +6 -0
  389. package/utils/clsx.d.ts +2 -0
  390. package/utils/clsx.js +5 -0
  391. package/utils/copy2DToClipboard.d.ts +1 -0
  392. package/utils/copy2DToClipboard.js +44 -0
  393. package/utils/cpfCpnjUtils.d.ts +3 -0
  394. package/utils/cpfCpnjUtils.js +43 -0
  395. package/utils/createLocalStorageStateHydration.d.ts +1 -0
  396. package/utils/createLocalStorageStateHydration.js +18 -0
  397. package/utils/createStateHydration.d.ts +3 -0
  398. package/utils/createStateHydration.js +49 -0
  399. package/utils/csvBlobToJson.d.ts +2 -0
  400. package/utils/csvBlobToJson.js +60 -0
  401. package/utils/downloadArrayAsCSV.d.ts +1 -0
  402. package/utils/downloadArrayAsCSV.js +34 -0
  403. package/utils/emailRegExp.d.ts +2 -0
  404. package/utils/emailRegExp.js +3 -0
  405. package/utils/fakeArray.d.ts +1 -0
  406. package/utils/fakeArray.js +3 -0
  407. package/utils/filterBoolean.d.ts +1 -0
  408. package/utils/filterBoolean.js +3 -0
  409. package/utils/formatClock.d.ts +1 -0
  410. package/utils/formatClock.js +21 -0
  411. package/utils/formatTime.d.ts +2 -0
  412. package/utils/formatTime.js +40 -0
  413. package/utils/getInitials.d.ts +4 -0
  414. package/utils/getInitials.js +8 -0
  415. package/utils/isBrowser.d.ts +12 -0
  416. package/utils/isBrowser.js +26 -0
  417. package/utils/ms.d.ts +6 -0
  418. package/utils/ms.js +31 -0
  419. package/utils/preventDefault.d.ts +1 -0
  420. package/utils/preventDefault.js +3 -0
  421. package/utils/recursiveChildrenMap.d.ts +2 -0
  422. package/utils/recursiveChildrenMap.js +16 -0
  423. package/utils/setSelectionRange.d.ts +1 -0
  424. package/utils/setSelectionRange.js +55 -0
  425. package/utils/smoothScrollToHref.d.ts +2 -0
  426. package/utils/smoothScrollToHref.js +10 -0
  427. package/utils/stopPropagation.d.ts +2 -0
  428. package/utils/stopPropagation.js +3 -0
  429. package/utils/stripHtml.d.ts +1 -0
  430. package/utils/stripHtml.js +4 -0
  431. package/utils/stripLineBreak.d.ts +1 -0
  432. package/utils/stripLineBreak.js +4 -0
  433. package/utils/stripMarkdown.d.ts +1 -0
  434. package/utils/stripMarkdown.js +28 -0
  435. package/utils/xlsxBlobToJson.d.ts +2 -0
  436. package/utils/xlsxBlobToJson.js +59 -0
@@ -0,0 +1,155 @@
1
+ import { Fragment, useCallback, useEffect, useState, } from "react";
2
+ import Loading from "../Loading";
3
+ import Skeleton from "../Skeleton";
4
+ import Stack from "../Stack";
5
+ import Text from "../Text";
6
+ import Table from "./Table";
7
+ import clsx from "../../utils/clsx";
8
+ import { ChevronUpIcon } from "@heroicons/react/20/solid";
9
+ export default function DataTable({ title, subtitle, headerContent, data, idAccessor = "_id", actions, columns, isLoading, noRecords: noRecordsText = "No records", onRowClick, rowWrapper, pagination, currentPage = 0, onChangePage, totalItems, itemsPerPage = 0, className, autoHeight, onChangeSort, sort: defaultSort = [], previousText, nextText, showingText, toText, ofText, resultsText, tableClassName, }) {
10
+ const [sort, setSort] = useState(defaultSort);
11
+ const [page, setPage] = useState(currentPage);
12
+ useEffect(() => {
13
+ if (page !== currentPage) {
14
+ setPage(currentPage);
15
+ }
16
+ }, [currentPage, page]);
17
+ useEffect(() => {
18
+ if (onChangePage) {
19
+ onChangePage(page);
20
+ }
21
+ // eslint-disable-next-line react-hooks/exhaustive-deps
22
+ }, [page]);
23
+ const handleRowClick = useCallback((item) => (onRowClick ? () => onRowClick(item) : undefined), [onRowClick]);
24
+ const getColumnSort = useCallback((id) => sort.find((column) => id === column[0]), [sort]);
25
+ const handleColumnClick = useCallback((id) => () => {
26
+ const sort = getColumnSort(id) || [
27
+ id,
28
+ null,
29
+ ];
30
+ switch (sort[1]) {
31
+ case "asc":
32
+ sort[1] = "desc";
33
+ break;
34
+ case "desc":
35
+ sort[1] = null;
36
+ break;
37
+ case null:
38
+ sort[1] = "asc";
39
+ break;
40
+ }
41
+ setSort((oldSort) => {
42
+ const newSort = [...oldSort];
43
+ if (sort[1]) {
44
+ const column = newSort.find((column) => column[0] === id);
45
+ if (column) {
46
+ column[1] = sort[1];
47
+ }
48
+ else {
49
+ newSort.push([sort[0], sort[1]]);
50
+ }
51
+ return newSort;
52
+ }
53
+ return newSort.filter((column) => !!column[1]);
54
+ });
55
+ }, [getColumnSort]);
56
+ useEffect(() => {
57
+ if (onChangeSort) {
58
+ onChangeSort?.(sort);
59
+ }
60
+ // eslint-disable-next-line react-hooks/exhaustive-deps
61
+ }, [sort]);
62
+ return (<Stack className={clsx({
63
+ "flex flex-1 flex-col": autoHeight,
64
+ }, className)}>
65
+ {(title || subtitle || headerContent) && (<Table.Header title={title} subtitle={subtitle}>
66
+ {headerContent}
67
+ </Table.Header>)}
68
+ <Table autoHeight={autoHeight} className={tableClassName}>
69
+ <Table.Head>
70
+ <Table.Row>
71
+ {columns.map((column, i) => {
72
+ const id = column.id ||
73
+ (typeof column.title === "string"
74
+ ? column.title
75
+ : i.toString());
76
+ const columnSort = getColumnSort(id);
77
+ return (<Table.Cell key={id} className={column.headerClassName}>
78
+ {column.sortable ? (<span className="group inline-flex cursor-pointer" onClick={handleColumnClick(id)}>
79
+ {column.title}
80
+ <span className={clsx("mb-auto ml-2 flex-none rounded-sm text-zinc-400", {
81
+ "bg-zinc-200 text-zinc-900 group-hover:bg-zinc-300": columnSort?.[1],
82
+ "invisible group-hover:visible group-focus:visible": !columnSort?.[1],
83
+ })}>
84
+ <ChevronUpIcon className={clsx("h-5 w-5", {
85
+ "scale-y-flip": columnSort?.[1] === "desc",
86
+ })} aria-hidden="true"/>
87
+ </span>
88
+ </span>) : (column.title)}
89
+ </Table.Cell>);
90
+ })}
91
+ {actions && <Table.Cell />}
92
+ </Table.Row>
93
+ {isLoading && (<tr className="absolute right-3 top-2 rounded-full bg-zinc-50/50 dark:bg-zinc-900/50">
94
+ <td>
95
+ <Loading className="mt-px"/>
96
+ </td>
97
+ </tr>)}
98
+ </Table.Head>
99
+ <Table.Body>
100
+ {data?.map((item) => {
101
+ const RowComponent = rowWrapper || Fragment;
102
+ return (<RowComponent key={item[idAccessor]} {...(RowComponent !== Fragment
103
+ ? // eslint-disable-next-line @typescript-eslint/no-explicit-any
104
+ { item: item }
105
+ : {})}>
106
+ <Table.Row onClick={handleRowClick(item)}>
107
+ {columns.map((column, i) => {
108
+ const value = column.accessor
109
+ ? item[column.accessor]
110
+ : column.render && column.render(item);
111
+ return (<Table.Cell key={column.id ||
112
+ (typeof column.title === "string" ? column.title : i)} className={column.cellClassName} title={column.cellClassName?.includes("max-w") &&
113
+ typeof value === "string"
114
+ ? value
115
+ : undefined}>
116
+ {value}
117
+ </Table.Cell>);
118
+ })}
119
+ {actions && (<Table.Cell actions>
120
+ {actions.map((action, i) => {
121
+ const ActionComponent = action.wrapper || Fragment;
122
+ return (<ActionComponent key={i} {...(ActionComponent !== Fragment
123
+ ? // eslint-disable-next-line @typescript-eslint/no-explicit-any
124
+ { item: item }
125
+ : {})}>
126
+ <Table.ActionButton title={action.title} onClick={() => action.onClick?.(item)} href={typeof action.href === "function"
127
+ ? action.href?.(item)
128
+ : action.href} target={action.target}>
129
+ {action.icon}
130
+ </Table.ActionButton>
131
+ </ActionComponent>);
132
+ })}
133
+ </Table.Cell>)}
134
+ </Table.Row>
135
+ </RowComponent>);
136
+ })}
137
+ {isLoading && !data?.length && (<Table.Row>
138
+ {columns.map((column, i) => (<Table.Cell key={column.id ||
139
+ (typeof column.title === "string" ? column.title : i)}>
140
+ <Skeleton className="h-3"/>
141
+ </Table.Cell>))}
142
+ {actions && (<Table.Cell actions>
143
+ <Skeleton className="inline-block h-3 w-6"/>
144
+ </Table.Cell>)}
145
+ </Table.Row>)}
146
+ {!isLoading && !data?.length && (<Table.Row>
147
+ <Table.Cell colSpan={columns.length + (actions ? 1 : 0)}>
148
+ <Text variant="secondary">{noRecordsText}</Text>
149
+ </Table.Cell>
150
+ </Table.Row>)}
151
+ </Table.Body>
152
+ </Table>
153
+ {pagination ? (<Table.FooterWithPagination totalItems={totalItems} itemsPerPage={itemsPerPage} currentPage={currentPage} onChangePage={onChangePage} previousText={previousText} nextText={nextText} showingText={showingText} toText={toText} ofText={ofText} resultsText={resultsText}/>) : undefined}
154
+ </Stack>);
155
+ }
@@ -0,0 +1,27 @@
1
+ import { ReactNode } from "react";
2
+ import TableActionButton from "./TableActionButton";
3
+ import TableBody from "./TableBody";
4
+ import TableCell from "./TableCell";
5
+ import TableHead from "./TableHead";
6
+ import TableHeader from "./TableHeader";
7
+ import TableRow from "./TableRow";
8
+ import TableFooter from "./TableFooter";
9
+ import TableFooterWithPagination from "./TableFooterWithPagination";
10
+ export type TableProps = {
11
+ children?: ReactNode;
12
+ className?: string;
13
+ hideBorder?: boolean;
14
+ autoHeight?: boolean;
15
+ };
16
+ declare function Table({ children, className, hideBorder, autoHeight, }: TableProps): import("react").JSX.Element;
17
+ declare namespace Table {
18
+ var Row: typeof TableRow;
19
+ var Head: typeof TableHead;
20
+ var Body: typeof TableBody;
21
+ var Cell: typeof TableCell;
22
+ var ActionButton: typeof TableActionButton;
23
+ var Header: typeof TableHeader;
24
+ var Footer: typeof TableFooter;
25
+ var FooterWithPagination: typeof TableFooterWithPagination;
26
+ }
27
+ export default Table;
@@ -0,0 +1,31 @@
1
+ import clsx from "../../utils/clsx";
2
+ import TableActionButton from "./TableActionButton";
3
+ import TableBody from "./TableBody";
4
+ import TableCell from "./TableCell";
5
+ import TableHead from "./TableHead";
6
+ import TableHeader from "./TableHeader";
7
+ import TableRow from "./TableRow";
8
+ import TableFooter from "./TableFooter";
9
+ import TableFooterWithPagination from "./TableFooterWithPagination";
10
+ export default function Table({ children, className, hideBorder, autoHeight, }) {
11
+ return (<div className={clsx("overflow-hidden bg-white dark:bg-zinc-800", {
12
+ "relative flex-1": autoHeight,
13
+ "shadow-sm ring-1 ring-black/5 dark:ring-white/10 md:rounded-lg": !hideBorder,
14
+ }, className)}>
15
+ <div className={clsx("overflow-auto", {
16
+ "absolute inset-0": autoHeight,
17
+ })}>
18
+ <table className={clsx("w-full max-w-full divide-y divide-zinc-300 dark:divide-zinc-600")}>
19
+ {children}
20
+ </table>
21
+ </div>
22
+ </div>);
23
+ }
24
+ Table.Row = TableRow;
25
+ Table.Head = TableHead;
26
+ Table.Body = TableBody;
27
+ Table.Cell = TableCell;
28
+ Table.ActionButton = TableActionButton;
29
+ Table.Header = TableHeader;
30
+ Table.Footer = TableFooter;
31
+ Table.FooterWithPagination = TableFooterWithPagination;
@@ -0,0 +1,6 @@
1
+ import { ReactNode } from "react";
2
+ import { ButtonProps } from "../Button/Button";
3
+ export type TableActionButtonProps<T extends HTMLElement = HTMLButtonElement> = {
4
+ title?: ReactNode;
5
+ } & ButtonProps<T>;
6
+ export default function TableActionButton<T extends HTMLElement = HTMLButtonElement>({ children, className, title, onClick, ...props }: TableActionButtonProps<T>): import("react").JSX.Element;
@@ -0,0 +1,20 @@
1
+ import clsx from "../../utils/clsx";
2
+ import { cloneElement, } from "react";
3
+ import Button from "../Button/Button";
4
+ import Tooltip from "../Tooltip";
5
+ export default function TableActionButton({ children, className, title, onClick, ...props }) {
6
+ const handleClick = (e) => {
7
+ e.stopPropagation();
8
+ onClick?.(e);
9
+ };
10
+ const child = children;
11
+ const button = (<Button icon variant="text" className={clsx("p-1!", className)} onClick={handleClick} {...props}>
12
+ {cloneElement(child, {
13
+ className: clsx("h-[20px]! w-[20px]!", child.props.className),
14
+ })}
15
+ </Button>);
16
+ if (title) {
17
+ return <Tooltip content={title}>{button}</Tooltip>;
18
+ }
19
+ return button;
20
+ }
@@ -0,0 +1,6 @@
1
+ import { ReactNode } from "react";
2
+ export type TableBodyProps = {
3
+ children?: ReactNode;
4
+ className?: string;
5
+ };
6
+ export default function TableBody({ children, className }: TableBodyProps): import("react").JSX.Element;
@@ -0,0 +1,10 @@
1
+ import { useMemo } from "react";
2
+ import TableHeadContext from "./TableHeadContext";
3
+ import clsx from "../../utils/clsx";
4
+ export default function TableBody({ children, className }) {
5
+ return (<TableHeadContext.Provider value={useMemo(() => ({ isHead: false, sticky: false }), [])}>
6
+ <tbody className={clsx("divide-y divide-zinc-200 bg-white dark:divide-zinc-700 dark:bg-zinc-800 [&_tr:last-of-type]:border-b [&_tr:last-of-type]:border-zinc-200 dark:[&_tr:last-of-type]:border-zinc-700", className)}>
7
+ {children}
8
+ </tbody>
9
+ </TableHeadContext.Provider>);
10
+ }
@@ -0,0 +1,9 @@
1
+ import { ReactNode } from "react";
2
+ export type TableCellProps = {
3
+ children?: ReactNode;
4
+ className?: string;
5
+ actions?: boolean;
6
+ colSpan?: number;
7
+ title?: string;
8
+ };
9
+ export default function TableCell({ children, className, actions, colSpan, title, }: TableCellProps): import("react").JSX.Element;
@@ -0,0 +1,18 @@
1
+ import clsx from "../../utils/clsx";
2
+ import { useContext } from "react";
3
+ import TableHeadContext from "./TableHeadContext";
4
+ export default function TableCell({ children, className, actions, colSpan, title, }) {
5
+ const { isHead } = useContext(TableHeadContext);
6
+ const commonClassName = clsx("text-sm first:pl-4 sm:first:pl-6 first:font-medium first:text-zinc-900 dark:first:text-zinc-100 px-3", {
7
+ "py-2 last:pr-4 sm:last:pr-6": !actions,
8
+ "py-0.5 text-right pr-2.5 sm:pr-5": actions,
9
+ });
10
+ if (isHead) {
11
+ return (<th className={clsx(commonClassName, "sticky left-0 bg-zinc-50 py-2 text-left font-semibold text-zinc-900 dark:bg-zinc-900 dark:text-zinc-50", className)} colSpan={colSpan} title={title}>
12
+ {children}
13
+ </th>);
14
+ }
15
+ return (<td className={clsx(commonClassName, "whitespace-nowrap text-zinc-500 dark:text-zinc-300", className)} colSpan={colSpan} title={title}>
16
+ {children}
17
+ </td>);
18
+ }
@@ -0,0 +1,5 @@
1
+ import { ReactNode } from "react";
2
+ export interface TableFooterProps {
3
+ children?: ReactNode;
4
+ }
5
+ export default function TableFooter({ children }: TableFooterProps): import("react").JSX.Element;
@@ -0,0 +1,5 @@
1
+ export default function TableFooter({ children }) {
2
+ return (<div className="flex items-center justify-between border border-x-0 border-zinc-200 bg-white p-3 sm:border-x sm:px-5 md:rounded-lg dark:border-white/10 dark:bg-zinc-900">
3
+ {children}
4
+ </div>);
5
+ }
@@ -0,0 +1,13 @@
1
+ export interface TableFooterWithPaginationProps {
2
+ itemsPerPage: number;
3
+ totalItems?: number;
4
+ currentPage: number;
5
+ onChangePage?: (page: number) => void;
6
+ previousText?: string;
7
+ nextText?: string;
8
+ showingText?: string;
9
+ toText?: string;
10
+ ofText?: string;
11
+ resultsText?: string;
12
+ }
13
+ export default function TableFooterWithPagination({ itemsPerPage, totalItems, currentPage, onChangePage, previousText, nextText, showingText, toText, ofText, resultsText, }: TableFooterWithPaginationProps): import("react").JSX.Element;
@@ -0,0 +1,57 @@
1
+ import TableFooter from "./TableFooter";
2
+ import Pagination from "../Pagination/Pagination";
3
+ import { useCallback, useEffect, useState } from "react";
4
+ import Button from "../Button/Button";
5
+ export default function TableFooterWithPagination({ itemsPerPage, totalItems, currentPage, onChangePage, previousText = "Previous", nextText = "Next", showingText = "Showing", toText = "to", ofText = "of", resultsText = "results", }) {
6
+ const pageCount = totalItems !== undefined && itemsPerPage !== undefined
7
+ ? Math.floor(totalItems / itemsPerPage)
8
+ : 0;
9
+ const [page, setPage] = useState(currentPage);
10
+ useEffect(() => {
11
+ if (page !== currentPage) {
12
+ setPage(currentPage);
13
+ }
14
+ // eslint-disable-next-line react-hooks/exhaustive-deps
15
+ }, [currentPage]);
16
+ useEffect(() => {
17
+ if (onChangePage) {
18
+ onChangePage(page);
19
+ }
20
+ // eslint-disable-next-line react-hooks/exhaustive-deps
21
+ }, [page]);
22
+ const handlePageClick = useCallback((page) => () => setPage(page), []);
23
+ let start = (page - 1) * itemsPerPage + 1;
24
+ let end = page * itemsPerPage;
25
+ if (totalItems !== undefined) {
26
+ end = end > totalItems ? totalItems : end;
27
+ }
28
+ if (end === 0) {
29
+ start = 0;
30
+ }
31
+ return (<TableFooter>
32
+ <div className="flex flex-1 justify-between sm:hidden">
33
+ <Button disabled={page === 1} onClick={handlePageClick(page - 1)}>
34
+ {previousText}
35
+ </Button>
36
+ <Button disabled={page === pageCount - 1} onClick={handlePageClick(page + 1)}>
37
+ {nextText}
38
+ </Button>
39
+ </div>
40
+ <div className="hidden sm:flex sm:flex-1 sm:items-center sm:justify-between">
41
+ <div>
42
+ <p className="text-sm text-zinc-700 dark:text-zinc-100">
43
+ {showingText} <span className="font-medium">{start}</span> {toText}{" "}
44
+ <span className="font-medium">{end}</span>
45
+ {totalItems !== undefined && itemsPerPage !== undefined && (<>
46
+ {" "}
47
+ {ofText} <span className="font-medium">{totalItems}</span>{" "}
48
+ {resultsText}
49
+ </>)}
50
+ </p>
51
+ </div>
52
+ <div>
53
+ <Pagination itemsPerPage={itemsPerPage} totalItems={totalItems} currentPage={currentPage} onChangePage={onChangePage}/>
54
+ </div>
55
+ </div>
56
+ </TableFooter>);
57
+ }
@@ -0,0 +1,5 @@
1
+ import { ReactNode } from "react";
2
+ export type TableHeadProps = {
3
+ children?: ReactNode;
4
+ };
5
+ export default function TableHead({ children }: TableHeadProps): import("react").JSX.Element;
@@ -0,0 +1,9 @@
1
+ import { useMemo } from "react";
2
+ import TableHeadContext from "./TableHeadContext";
3
+ export default function TableHead({ children }) {
4
+ return (<TableHeadContext.Provider value={useMemo(() => ({ isHead: true }), [])}>
5
+ <thead className="sticky top-0 bg-zinc-50 dark:bg-zinc-900">
6
+ {children}
7
+ </thead>
8
+ </TableHeadContext.Provider>);
9
+ }
@@ -0,0 +1,4 @@
1
+ declare const TableHeadContext: import("react").Context<{
2
+ isHead: boolean;
3
+ }>;
4
+ export default TableHeadContext;
@@ -0,0 +1,3 @@
1
+ import { createContext } from "react";
2
+ const TableHeadContext = createContext({ isHead: true });
3
+ export default TableHeadContext;
@@ -0,0 +1,7 @@
1
+ import { ReactNode } from "react";
2
+ export type TableHeaderProps = {
3
+ title?: ReactNode;
4
+ subtitle?: ReactNode;
5
+ children?: ReactNode;
6
+ };
7
+ export default function TableHeader({ title, subtitle, children, }: TableHeaderProps): import("react").JSX.Element;
@@ -0,0 +1,15 @@
1
+ import Text from "../Text";
2
+ import Stack from "../Stack";
3
+ export default function TableHeader({ title, subtitle, children, }) {
4
+ return (<div className="px-4 md:px-0">
5
+ <div className="sm:flex sm:items-center">
6
+ {(title || subtitle) && (<Stack className="sm:flex-auto">
7
+ {title && (<Text variant="label" size="lg">
8
+ {title}
9
+ </Text>)}
10
+ {subtitle && <Text variant="secondary">{subtitle}</Text>}
11
+ </Stack>)}
12
+ {children && (<div className="mt-4 sm:ml-16 sm:mt-0 sm:flex-none">{children}</div>)}
13
+ </div>
14
+ </div>);
15
+ }
@@ -0,0 +1,8 @@
1
+ import { MouseEventHandler, ReactNode } from "react";
2
+ export type TableRowProps = {
3
+ children?: ReactNode;
4
+ onClick?: MouseEventHandler<HTMLTableRowElement>;
5
+ className?: string;
6
+ };
7
+ declare function TableRow({ children, onClick, className, ...props }: TableRowProps): import("react").JSX.Element;
8
+ export default TableRow;
@@ -0,0 +1,9 @@
1
+ import clsx from "../../utils/clsx";
2
+ function TableRow({ children, onClick, className, ...props }) {
3
+ return (<tr onClick={onClick} className={clsx({
4
+ "group/row cursor-pointer hover:bg-black/5 dark:hover:bg-white/5": !!onClick,
5
+ }, className)} {...props}>
6
+ {children}
7
+ </tr>);
8
+ }
9
+ export default TableRow;
@@ -0,0 +1,3 @@
1
+ import Table from "./Table";
2
+ export * from "./Table";
3
+ export default Table;
@@ -0,0 +1,3 @@
1
+ import Table from "./Table";
2
+ export * from "./Table";
3
+ export default Table;
@@ -0,0 +1,9 @@
1
+ import { ReactNode } from "react";
2
+ import { ButtonProps } from "../Button";
3
+ export default function Tabs({ children, className, }: {
4
+ children: ReactNode;
5
+ className?: string;
6
+ }): import("react").JSX.Element;
7
+ export declare function Tab({ children, selected, onClick, className, ...props }: Omit<ButtonProps, "variant"> & {
8
+ selected?: boolean;
9
+ }): import("react").JSX.Element;
@@ -0,0 +1,13 @@
1
+ import clsx from "../../utils/clsx";
2
+ import Button from "../Button";
3
+ export default function Tabs({ children, className, }) {
4
+ return <div className={clsx("ui-tabs", className)}>{children}</div>;
5
+ }
6
+ export function Tab({ children, selected, onClick, className, ...props }) {
7
+ return (<div className="relative">
8
+ <Button className={clsx("ui-tabs-tab", className)} data-selected={selected ? "" : undefined} onClick={onClick} variant="custom" {...props}>
9
+ {children}
10
+ </Button>
11
+ {selected && <div className="ui-tabs-indicator"/>}
12
+ </div>);
13
+ }
@@ -0,0 +1,3 @@
1
+ import Tabs from "./Tabs";
2
+ export * from "./Tabs";
3
+ export default Tabs;
@@ -0,0 +1,3 @@
1
+ import Tabs from "./Tabs";
2
+ export * from "./Tabs";
3
+ export default Tabs;
@@ -0,0 +1,15 @@
1
+ import { ReactNode } from "react";
2
+ /**
3
+ * Tab represents an individual tab. When active,
4
+ * it renders an animated rounded background using the latest motion package.
5
+ */
6
+ export default function Tab({ active, onClick, children, className, id, variant, cursorClassName, }: {
7
+ value: string;
8
+ active?: boolean;
9
+ onClick?: () => void;
10
+ children: ReactNode;
11
+ className?: string;
12
+ id?: string;
13
+ variant?: "filled" | "outlined";
14
+ cursorClassName?: string;
15
+ }): import("react").JSX.Element;
@@ -0,0 +1,18 @@
1
+ import { motion } from "motion/react";
2
+ import Button from "../Button";
3
+ import clsx from "../../utils/clsx";
4
+ /**
5
+ * Tab represents an individual tab. When active,
6
+ * it renders an animated rounded background using the latest motion package.
7
+ */
8
+ export default function Tab({ active, onClick, children, className, id, variant, cursorClassName, }) {
9
+ return (<Button onClick={onClick} className={clsx("relative", {
10
+ "text-white": active && variant === "filled",
11
+ }, className)} variant="text" rounded={variant === "filled"}>
12
+ {active && (<motion.div layoutId={id} className={clsx("bg-primary-500 absolute", {
13
+ "inset-0 rounded-full": variant === "filled",
14
+ "right-0 bottom-0 left-0 h-0.5": variant === "outlined",
15
+ }, cursorClassName)} transition={{ type: "spring", stiffness: 500, damping: 30 }}/>)}
16
+ <span className="relative z-10">{children}</span>
17
+ </Button>);
18
+ }
@@ -0,0 +1,22 @@
1
+ import { ReactElement } from "react";
2
+ type TabElement = ReactElement<{
3
+ value: string;
4
+ active?: boolean;
5
+ onClick?: () => void;
6
+ id?: string;
7
+ variant?: "filled" | "outlined";
8
+ className?: string;
9
+ cursorClassName?: string;
10
+ }>;
11
+ export default function TabsSwitcher({ value, onChange, children, overflowHidden, className, variant, tabClassName, cursorClassName, tabsClassName, }: {
12
+ value?: string;
13
+ onChange?: (value: string) => void;
14
+ children: TabElement | TabElement[];
15
+ overflowHidden?: boolean;
16
+ className?: string;
17
+ variant?: "filled" | "outlined";
18
+ tabClassName?: string;
19
+ cursorClassName?: string;
20
+ tabsClassName?: string;
21
+ }): import("react").JSX.Element;
22
+ export {};
@@ -0,0 +1,31 @@
1
+ import { Children, cloneElement, isValidElement, useId, } from "react";
2
+ import clsx from "../../utils/clsx";
3
+ export default function TabsSwitcher({ value, onChange, children, overflowHidden, className, variant = "filled", tabClassName, cursorClassName, tabsClassName, }) {
4
+ const id = useId();
5
+ return (<div className={clsx({
6
+ "rounded-full bg-zinc-200 p-1 dark:bg-zinc-900": variant === "filled",
7
+ }, className)}>
8
+ <div className={clsx({
9
+ "rounded-full": variant === "filled",
10
+ "overflow-hidden": overflowHidden,
11
+ })}>
12
+ <div className={clsx("relative flex", tabsClassName)}>
13
+ {Children.map(children, (child) => {
14
+ if (isValidElement(child)) {
15
+ const childValue = child.props.value;
16
+ const isActive = childValue === value;
17
+ return cloneElement(child, {
18
+ active: isActive,
19
+ onClick: () => onChange?.(childValue),
20
+ id,
21
+ variant,
22
+ className: tabClassName,
23
+ cursorClassName,
24
+ });
25
+ }
26
+ return child;
27
+ })}
28
+ </div>
29
+ </div>
30
+ </div>);
31
+ }
@@ -0,0 +1,4 @@
1
+ import TabsSwitcher from "./TabsSwitcher";
2
+ export * from "./TabsSwitcher";
3
+ export { default as Tab } from "./Tab";
4
+ export default TabsSwitcher;
@@ -0,0 +1,4 @@
1
+ import TabsSwitcher from "./TabsSwitcher";
2
+ export * from "./TabsSwitcher";
3
+ export { default as Tab } from "./Tab";
4
+ export default TabsSwitcher;
@@ -0,0 +1,24 @@
1
+ import { ComponentProps, DetailedHTMLProps, HTMLAttributes } from "react";
2
+ import NextLink from "next/link";
3
+ export declare const defaultTextStyles: {
4
+ variant: {
5
+ default: string;
6
+ label: string;
7
+ secondary: string;
8
+ };
9
+ size: {
10
+ xs: string;
11
+ sm: string;
12
+ base: string;
13
+ lg: string;
14
+ xl: string;
15
+ "2xl": string;
16
+ };
17
+ };
18
+ export type TextProps = {
19
+ variant?: keyof (typeof defaultTextStyles)["variant"] | "link";
20
+ size?: keyof (typeof defaultTextStyles)["size"];
21
+ inline?: boolean;
22
+ } & Partial<DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement> & DetailedHTMLProps<HTMLAttributes<HTMLSpanElement>, HTMLSpanElement> & ComponentProps<typeof NextLink>>;
23
+ declare function Text({ inline, variant, className, href, target, size, ...props }: TextProps): import("react").JSX.Element;
24
+ export default Text;