@majapisoftwares/ui 4.3.17 → 6.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 (517) hide show
  1. package/AGENTS.md +27 -0
  2. package/README.md +79 -0
  3. package/THIRD_PARTY_NOTICES.md +39 -0
  4. package/components.json +25 -0
  5. package/docs/MIGRATION-0.2.md +20 -0
  6. package/docs/MIGRATION-6.0.md +33 -0
  7. package/docs/NEXT-STARTER-VALIDATION.md +14 -0
  8. package/docs/STANDARDS.md +41 -0
  9. package/docs/VALIDATION.md +11 -0
  10. package/docs/VERSIONING.md +28 -0
  11. package/package.json +78 -2
  12. package/scripts/check-standards.mjs +41 -0
  13. package/src/components/ui/accordion.tsx +82 -0
  14. package/src/components/ui/alert-dialog.tsx +187 -0
  15. package/src/components/ui/alert.tsx +77 -0
  16. package/src/components/ui/avatar.tsx +108 -0
  17. package/src/components/ui/badge.tsx +55 -0
  18. package/src/components/ui/breadcrumb.tsx +125 -0
  19. package/src/components/ui/button-group.tsx +89 -0
  20. package/src/components/ui/button.tsx +59 -0
  21. package/src/components/ui/card.tsx +101 -0
  22. package/src/components/ui/checkbox.tsx +27 -0
  23. package/src/components/ui/collapsible.tsx +21 -0
  24. package/src/components/ui/context-menu.tsx +271 -0
  25. package/src/components/ui/dialog.tsx +161 -0
  26. package/src/components/ui/dropdown-menu.tsx +271 -0
  27. package/src/components/ui/empty.tsx +105 -0
  28. package/src/components/ui/field.tsx +238 -0
  29. package/src/components/ui/hover-card.tsx +50 -0
  30. package/src/components/ui/input-group.tsx +155 -0
  31. package/src/components/ui/input.tsx +21 -0
  32. package/src/components/ui/kbd.tsx +28 -0
  33. package/src/components/ui/label.tsx +19 -0
  34. package/src/components/ui/orb.css +1002 -0
  35. package/src/components/ui/orb.tsx +752 -0
  36. package/src/components/ui/popover.tsx +89 -0
  37. package/src/components/ui/progress.tsx +82 -0
  38. package/src/components/ui/radio-group.tsx +37 -0
  39. package/src/components/ui/scroll-area.tsx +54 -0
  40. package/src/components/ui/select.tsx +204 -0
  41. package/src/components/ui/separator.tsx +24 -0
  42. package/src/components/ui/sheet.tsx +139 -0
  43. package/src/components/ui/sidebar.tsx +1035 -0
  44. package/src/components/ui/skeleton.tsx +15 -0
  45. package/src/components/ui/slider.tsx +53 -0
  46. package/src/components/ui/sonner.tsx +44 -0
  47. package/src/components/ui/spinner.tsx +32 -0
  48. package/src/components/ui/switch.tsx +31 -0
  49. package/src/components/ui/table.tsx +121 -0
  50. package/src/components/ui/tabs.tsx +81 -0
  51. package/src/components/ui/textarea.tsx +19 -0
  52. package/src/components/ui/toggle-group.tsx +89 -0
  53. package/src/components/ui/toggle.tsx +44 -0
  54. package/src/components/ui/tooltip.tsx +65 -0
  55. package/src/hooks/use-mobile.ts +20 -0
  56. package/src/lib/i18n.tsx +109 -0
  57. package/src/lib/utils.ts +1 -0
  58. package/src/patterns/app-shell.tsx +175 -0
  59. package/src/patterns/data-table.tsx +2486 -0
  60. package/src/patterns/details-sheet.tsx +53 -0
  61. package/src/patterns/filter-tabs.tsx +53 -0
  62. package/src/patterns/majapi-logo.tsx +32 -0
  63. package/src/patterns/page-header.tsx +62 -0
  64. package/src/patterns/preferences.tsx +172 -0
  65. package/src/patterns/status-badge.tsx +24 -0
  66. package/src/styles.css +165 -0
  67. package/src/templates/admin-dashboard.tsx +44 -0
  68. package/src/templates/auth-layout.tsx +30 -0
  69. package/src/templates/login-form.tsx +129 -0
  70. package/src/templates/signup-form.tsx +177 -0
  71. package/base.css +0 -360
  72. package/bootstrap/AppProps.d.ts +0 -9
  73. package/bootstrap/AppProps.js +0 -1
  74. package/bootstrap/index.d.ts +0 -1
  75. package/bootstrap/index.js +0 -1
  76. package/bootstrap/modeScript.d.ts +0 -2
  77. package/bootstrap/modeScript.js +0 -35
  78. package/bootstrap/nprogress.d.ts +0 -1
  79. package/bootstrap/nprogress.js +0 -19
  80. package/bootstrap/scrolledScript.d.ts +0 -2
  81. package/bootstrap/scrolledScript.js +0 -27
  82. package/bootstrap/setupFocusManager.d.ts +0 -1
  83. package/bootstrap/setupFocusManager.js +0 -13
  84. package/bootstrap/suppressConsoleLog.d.ts +0 -1
  85. package/bootstrap/suppressConsoleLog.js +0 -8
  86. package/components/Accordion/Accordion.d.ts +0 -16
  87. package/components/Accordion/Accordion.jsx +0 -27
  88. package/components/Accordion/index.d.ts +0 -3
  89. package/components/Accordion/index.jsx +0 -3
  90. package/components/Alert/Alert.d.ts +0 -31
  91. package/components/Alert/Alert.jsx +0 -53
  92. package/components/Alert/index.d.ts +0 -3
  93. package/components/Alert/index.jsx +0 -3
  94. package/components/AntiClickjacking/AntiClickjacking.d.ts +0 -1
  95. package/components/AntiClickjacking/AntiClickjacking.jsx +0 -17
  96. package/components/AntiClickjacking/index.d.ts +0 -2
  97. package/components/AntiClickjacking/index.jsx +0 -2
  98. package/components/Aurora/Aurora.d.ts +0 -10
  99. package/components/Aurora/Aurora.jsx +0 -189
  100. package/components/Aurora/index.d.ts +0 -3
  101. package/components/Aurora/index.jsx +0 -3
  102. package/components/Autocomplete/Autocomplete.d.ts +0 -7
  103. package/components/Autocomplete/Autocomplete.jsx +0 -23
  104. package/components/Autocomplete/UnstyledAutocomplete.d.ts +0 -36
  105. package/components/Autocomplete/UnstyledAutocomplete.jsx +0 -72
  106. package/components/Autocomplete/index.d.ts +0 -5
  107. package/components/Autocomplete/index.jsx +0 -5
  108. package/components/BackgroundEffects/BottomBlurryPoint.d.ts +0 -3
  109. package/components/BackgroundEffects/BottomBlurryPoint.jsx +0 -14
  110. package/components/BackgroundEffects/TopBlurryPoint.d.ts +0 -3
  111. package/components/BackgroundEffects/TopBlurryPoint.jsx +0 -14
  112. package/components/Badge/Badge.d.ts +0 -42
  113. package/components/Badge/Badge.jsx +0 -51
  114. package/components/Badge/index.d.ts +0 -3
  115. package/components/Badge/index.jsx +0 -3
  116. package/components/Breadcrumbs/Breadcrumbs.d.ts +0 -20
  117. package/components/Breadcrumbs/Breadcrumbs.jsx +0 -42
  118. package/components/Breadcrumbs/index.d.ts +0 -3
  119. package/components/Breadcrumbs/index.jsx +0 -3
  120. package/components/Button/Button.d.ts +0 -111
  121. package/components/Button/Button.jsx +0 -129
  122. package/components/Button/UnstyledButton.d.ts +0 -10
  123. package/components/Button/UnstyledButton.jsx +0 -13
  124. package/components/Button/index.d.ts +0 -3
  125. package/components/Button/index.jsx +0 -3
  126. package/components/Carousel/Carousel.d.ts +0 -19
  127. package/components/Carousel/Carousel.jsx +0 -55
  128. package/components/Carousel/index.d.ts +0 -3
  129. package/components/Carousel/index.jsx +0 -3
  130. package/components/Checkbox/Checkbox.d.ts +0 -14
  131. package/components/Checkbox/Checkbox.jsx +0 -45
  132. package/components/Checkbox/index.d.ts +0 -3
  133. package/components/Checkbox/index.js +0 -3
  134. package/components/Code/Code.d.ts +0 -12
  135. package/components/Code/Code.jsx +0 -25
  136. package/components/Code/Json.d.ts +0 -5
  137. package/components/Code/Json.jsx +0 -7
  138. package/components/Code/index.d.ts +0 -4
  139. package/components/Code/index.jsx +0 -4
  140. package/components/ConfirmationButton/ConfirmationButton.d.ts +0 -17
  141. package/components/ConfirmationButton/ConfirmationButton.jsx +0 -13
  142. package/components/ConfirmationButton/index.d.ts +0 -3
  143. package/components/ConfirmationButton/index.jsx +0 -3
  144. package/components/ContextMenu/ContextMenu.d.ts +0 -28
  145. package/components/ContextMenu/ContextMenu.jsx +0 -70
  146. package/components/ContextMenu/index.d.ts +0 -3
  147. package/components/ContextMenu/index.jsx +0 -3
  148. package/components/CopyButton/CopyButton.d.ts +0 -7
  149. package/components/CopyButton/CopyButton.jsx +0 -29
  150. package/components/CopyButton/index.d.ts +0 -3
  151. package/components/CopyButton/index.jsx +0 -3
  152. package/components/DateInput/DateInput.d.ts +0 -6
  153. package/components/DateInput/DateInput.jsx +0 -19
  154. package/components/DateInput/DateTimeInput.d.ts +0 -3
  155. package/components/DateInput/DateTimeInput.jsx +0 -8
  156. package/components/DateInput/index.d.ts +0 -4
  157. package/components/DateInput/index.jsx +0 -4
  158. package/components/DateInput/useRefValue.d.ts +0 -5
  159. package/components/DateInput/useRefValue.js +0 -48
  160. package/components/DatePicker/DatePicker.d.ts +0 -19
  161. package/components/DatePicker/DatePicker.jsx +0 -55
  162. package/components/DatePicker/index.d.ts +0 -3
  163. package/components/DatePicker/index.jsx +0 -3
  164. package/components/DateRangePicker/DateRangePicker.d.ts +0 -16
  165. package/components/DateRangePicker/DateRangePicker.jsx +0 -56
  166. package/components/DateRangePicker/index.d.ts +0 -3
  167. package/components/DateRangePicker/index.jsx +0 -3
  168. package/components/Dialog/Dialog.d.ts +0 -25
  169. package/components/Dialog/Dialog.jsx +0 -35
  170. package/components/Dialog/Dialogs.d.ts +0 -1
  171. package/components/Dialog/Dialogs.jsx +0 -21
  172. package/components/Dialog/dialogs.state.d.ts +0 -21
  173. package/components/Dialog/dialogs.state.js +0 -40
  174. package/components/Dialog/index.d.ts +0 -6
  175. package/components/Dialog/index.jsx +0 -7
  176. package/components/Drawer/Drawer.d.ts +0 -15
  177. package/components/Drawer/Drawer.jsx +0 -72
  178. package/components/Drawer/index.d.ts +0 -3
  179. package/components/Drawer/index.jsx +0 -3
  180. package/components/DropdownMenu/DropdownMenu.d.ts +0 -33
  181. package/components/DropdownMenu/DropdownMenu.jsx +0 -74
  182. package/components/DropdownMenu/index.d.ts +0 -3
  183. package/components/DropdownMenu/index.jsx +0 -3
  184. package/components/ErrorBoundary/ErrorBoundary.d.ts +0 -18
  185. package/components/ErrorBoundary/ErrorBoundary.jsx +0 -32
  186. package/components/ErrorBoundary/index.d.ts +0 -3
  187. package/components/ErrorBoundary/index.jsx +0 -3
  188. package/components/ErrorPage/Error404Page.d.ts +0 -1
  189. package/components/ErrorPage/Error404Page.jsx +0 -4
  190. package/components/ErrorPage/Error500Page.d.ts +0 -1
  191. package/components/ErrorPage/Error500Page.jsx +0 -4
  192. package/components/ErrorPage/ErrorPage.d.ts +0 -11
  193. package/components/ErrorPage/ErrorPage.jsx +0 -23
  194. package/components/FileInput/FileInput.d.ts +0 -53
  195. package/components/FileInput/FileInput.jsx +0 -141
  196. package/components/FileInput/PreviewFile.d.ts +0 -18
  197. package/components/FileInput/PreviewFile.jsx +0 -54
  198. package/components/FileInput/index.d.ts +0 -3
  199. package/components/FileInput/index.jsx +0 -3
  200. package/components/FileInput/isImage.d.ts +0 -1
  201. package/components/FileInput/isImage.js +0 -10
  202. package/components/FileInput/isVideo.d.ts +0 -1
  203. package/components/FileInput/isVideo.js +0 -10
  204. package/components/FileSelect/FileSelect.d.ts +0 -31
  205. package/components/FileSelect/FileSelect.jsx +0 -146
  206. package/components/FileSelect/index.d.ts +0 -3
  207. package/components/FileSelect/index.jsx +0 -3
  208. package/components/Footer/Footer.d.ts +0 -19
  209. package/components/Footer/Footer.jsx +0 -30
  210. package/components/Footer/index.d.ts +0 -3
  211. package/components/Footer/index.jsx +0 -3
  212. package/components/GridPattern/GridPattern.d.ts +0 -2
  213. package/components/GridPattern/GridPattern.jsx +0 -12
  214. package/components/GridPattern/index.d.ts +0 -3
  215. package/components/GridPattern/index.jsx +0 -3
  216. package/components/Group/Group.d.ts +0 -5
  217. package/components/Group/Group.jsx +0 -6
  218. package/components/Group/index.d.ts +0 -3
  219. package/components/Group/index.jsx +0 -3
  220. package/components/Header/Header.d.ts +0 -5
  221. package/components/Header/Header.jsx +0 -19
  222. package/components/Header/index.d.ts +0 -3
  223. package/components/Header/index.jsx +0 -3
  224. package/components/ImageInput/ImageInput.d.ts +0 -4
  225. package/components/ImageInput/ImageInput.jsx +0 -8
  226. package/components/ImageInput/index.d.ts +0 -3
  227. package/components/ImageInput/index.jsx +0 -3
  228. package/components/Input/Input.d.ts +0 -14
  229. package/components/Input/Input.jsx +0 -57
  230. package/components/Input/InputIcon.d.ts +0 -9
  231. package/components/Input/InputIcon.jsx +0 -7
  232. package/components/Input/MultiSelectInput.d.ts +0 -16
  233. package/components/Input/MultiSelectInput.jsx +0 -48
  234. package/components/Input/NumericInput.d.ts +0 -6
  235. package/components/Input/NumericInput.jsx +0 -6
  236. package/components/Input/PatternInput.d.ts +0 -6
  237. package/components/Input/PatternInput.jsx +0 -6
  238. package/components/Input/SelectInput.d.ts +0 -12
  239. package/components/Input/SelectInput.jsx +0 -25
  240. package/components/Input/UnstyledInput.d.ts +0 -22
  241. package/components/Input/UnstyledInput.jsx +0 -28
  242. package/components/Input/index.d.ts +0 -6
  243. package/components/Input/index.jsx +0 -6
  244. package/components/Input/useInputRefValue.d.ts +0 -11
  245. package/components/Input/useInputRefValue.jsx +0 -51
  246. package/components/Input2/InputWrapper.d.ts +0 -11
  247. package/components/Input2/InputWrapper.jsx +0 -11
  248. package/components/Link/Link.d.ts +0 -3
  249. package/components/Link/Link.jsx +0 -9
  250. package/components/Link/index.d.ts +0 -3
  251. package/components/Link/index.jsx +0 -3
  252. package/components/Loading/Loading.d.ts +0 -5
  253. package/components/Loading/Loading.jsx +0 -15
  254. package/components/Loading/index.d.ts +0 -3
  255. package/components/Loading/index.jsx +0 -3
  256. package/components/Magnet/Magnet.d.ts +0 -13
  257. package/components/Magnet/Magnet.jsx +0 -50
  258. package/components/Magnet/index.d.ts +0 -3
  259. package/components/Magnet/index.jsx +0 -3
  260. package/components/Markdown/Markdown.d.ts +0 -8
  261. package/components/Markdown/Markdown.jsx +0 -11
  262. package/components/Markdown/index.d.ts +0 -3
  263. package/components/Markdown/index.jsx +0 -3
  264. package/components/Menu/Menu.d.ts +0 -28
  265. package/components/Menu/Menu.jsx +0 -54
  266. package/components/Modal/Modal.d.ts +0 -45
  267. package/components/Modal/Modal.jsx +0 -65
  268. package/components/Modal/index.d.ts +0 -4
  269. package/components/Modal/index.jsx +0 -4
  270. package/components/Modal/useModalState.d.ts +0 -6
  271. package/components/Modal/useModalState.js +0 -16
  272. package/components/ModeToggle/ModeToggle.d.ts +0 -9
  273. package/components/ModeToggle/ModeToggle.jsx +0 -12
  274. package/components/ModeToggle/index.d.ts +0 -4
  275. package/components/ModeToggle/index.jsx +0 -5
  276. package/components/ModeToggle/useModeToggle.d.ts +0 -1
  277. package/components/ModeToggle/useModeToggle.js +0 -21
  278. package/components/MultiSelect/MultiSelect.d.ts +0 -28
  279. package/components/MultiSelect/MultiSelect.jsx +0 -116
  280. package/components/MultiSelect/MultiSelectInput.d.ts +0 -12
  281. package/components/MultiSelect/MultiSelectInput.jsx +0 -27
  282. package/components/MultiSelect/index.d.ts +0 -5
  283. package/components/MultiSelect/index.jsx +0 -5
  284. package/components/MultiText/MultiText.d.ts +0 -23
  285. package/components/MultiText/MultiText.jsx +0 -118
  286. package/components/MultiText/index.d.ts +0 -3
  287. package/components/MultiText/index.jsx +0 -3
  288. package/components/NavigationDrawer/NavigationDrawer.d.ts +0 -9
  289. package/components/NavigationDrawer/NavigationDrawer.jsx +0 -29
  290. package/components/NavigationDrawer/NavigationItem.d.ts +0 -13
  291. package/components/NavigationDrawer/NavigationItem.jsx +0 -24
  292. package/components/NavigationDrawer/index.d.ts +0 -6
  293. package/components/NavigationDrawer/index.jsx +0 -6
  294. package/components/NavigationDrawer/navigationDrawer.state.d.ts +0 -9
  295. package/components/NavigationDrawer/navigationDrawer.state.js +0 -19
  296. package/components/NoSsr/NoSsr.d.ts +0 -4
  297. package/components/NoSsr/NoSsr.jsx +0 -8
  298. package/components/NoSsr/index.d.ts +0 -3
  299. package/components/NoSsr/index.jsx +0 -3
  300. package/components/Noise/Noise.d.ts +0 -11
  301. package/components/Noise/Noise.jsx +0 -69
  302. package/components/Noise/index.d.ts +0 -3
  303. package/components/Noise/index.jsx +0 -3
  304. package/components/Notifications/Notifications.d.ts +0 -3
  305. package/components/Notifications/Notifications.jsx +0 -60
  306. package/components/Notifications/index.d.ts +0 -5
  307. package/components/Notifications/index.jsx +0 -6
  308. package/components/Notifications/notifications.state.d.ts +0 -24
  309. package/components/Notifications/notifications.state.js +0 -41
  310. package/components/Orb/Orb.d.ts +0 -8
  311. package/components/Orb/Orb.jsx +0 -258
  312. package/components/Orb/index.d.ts +0 -3
  313. package/components/Orb/index.jsx +0 -3
  314. package/components/Pagination/Pagination.d.ts +0 -13
  315. package/components/Pagination/Pagination.jsx +0 -64
  316. package/components/Pagination/index.d.ts +0 -3
  317. package/components/Pagination/index.jsx +0 -3
  318. package/components/Particles/Particles.d.ts +0 -18
  319. package/components/Particles/Particles.jsx +0 -205
  320. package/components/Particles/index.d.ts +0 -3
  321. package/components/Particles/index.jsx +0 -3
  322. package/components/PictureCropInput/PictureCropInput.d.ts +0 -20
  323. package/components/PictureCropInput/PictureCropInput.jsx +0 -174
  324. package/components/PictureCropInput/canvasPreview.d.ts +0 -2
  325. package/components/PictureCropInput/canvasPreview.js +0 -37
  326. package/components/PictureCropInput/index.d.ts +0 -3
  327. package/components/PictureCropInput/index.js +0 -3
  328. package/components/Popover/Popover.d.ts +0 -13
  329. package/components/Popover/Popover.jsx +0 -22
  330. package/components/Popover/index.d.ts +0 -3
  331. package/components/Popover/index.jsx +0 -3
  332. package/components/Resizable/Resizable.d.ts +0 -12
  333. package/components/Resizable/Resizable.jsx +0 -54
  334. package/components/Resizable/index.d.ts +0 -3
  335. package/components/Resizable/index.jsx +0 -3
  336. package/components/ScrollArea/ScrollArea.d.ts +0 -9
  337. package/components/ScrollArea/ScrollArea.jsx +0 -16
  338. package/components/ScrollArea/index.d.ts +0 -3
  339. package/components/ScrollArea/index.jsx +0 -3
  340. package/components/Select/Select.d.ts +0 -25
  341. package/components/Select/Select.jsx +0 -55
  342. package/components/Select/index.d.ts +0 -3
  343. package/components/Select/index.jsx +0 -3
  344. package/components/Skeleton/Skeleton.d.ts +0 -2
  345. package/components/Skeleton/Skeleton.jsx +0 -8
  346. package/components/Skeleton/index.d.ts +0 -3
  347. package/components/Skeleton/index.jsx +0 -3
  348. package/components/Slider/Slider.d.ts +0 -10
  349. package/components/Slider/Slider.jsx +0 -21
  350. package/components/Slider/index.d.ts +0 -3
  351. package/components/Slider/index.jsx +0 -3
  352. package/components/Spotlight/Spotlight.d.ts +0 -30
  353. package/components/Spotlight/Spotlight.jsx +0 -86
  354. package/components/Spotlight/index.d.ts +0 -3
  355. package/components/Spotlight/index.jsx +0 -3
  356. package/components/SpotlightCard/SpotlightCard.d.ts +0 -7
  357. package/components/SpotlightCard/SpotlightCard.jsx +0 -35
  358. package/components/SpotlightCard/index.d.ts +0 -3
  359. package/components/SpotlightCard/index.jsx +0 -3
  360. package/components/Stack/Stack.d.ts +0 -4
  361. package/components/Stack/Stack.jsx +0 -5
  362. package/components/Stack/index.d.ts +0 -3
  363. package/components/Stack/index.jsx +0 -3
  364. package/components/StarBorder/StarBorder.d.ts +0 -10
  365. package/components/StarBorder/StarBorder.jsx +0 -19
  366. package/components/StarBorder/index.d.ts +0 -3
  367. package/components/StarBorder/index.jsx +0 -3
  368. package/components/Switch/Switch.d.ts +0 -16
  369. package/components/Switch/Switch.jsx +0 -24
  370. package/components/Switch/index.d.ts +0 -3
  371. package/components/Switch/index.jsx +0 -3
  372. package/components/Table/DataTable.d.ts +0 -57
  373. package/components/Table/DataTable.jsx +0 -155
  374. package/components/Table/Table.d.ts +0 -27
  375. package/components/Table/Table.jsx +0 -31
  376. package/components/Table/TableActionButton.d.ts +0 -6
  377. package/components/Table/TableActionButton.jsx +0 -20
  378. package/components/Table/TableBody.d.ts +0 -6
  379. package/components/Table/TableBody.jsx +0 -10
  380. package/components/Table/TableCell.d.ts +0 -9
  381. package/components/Table/TableCell.jsx +0 -18
  382. package/components/Table/TableFooter.d.ts +0 -5
  383. package/components/Table/TableFooter.jsx +0 -5
  384. package/components/Table/TableFooterWithPagination.d.ts +0 -13
  385. package/components/Table/TableFooterWithPagination.jsx +0 -57
  386. package/components/Table/TableHead.d.ts +0 -5
  387. package/components/Table/TableHead.jsx +0 -9
  388. package/components/Table/TableHeadContext.d.ts +0 -4
  389. package/components/Table/TableHeadContext.jsx +0 -3
  390. package/components/Table/TableHeader.d.ts +0 -7
  391. package/components/Table/TableHeader.jsx +0 -15
  392. package/components/Table/TableRow.d.ts +0 -8
  393. package/components/Table/TableRow.jsx +0 -9
  394. package/components/Table/index.d.ts +0 -3
  395. package/components/Table/index.jsx +0 -3
  396. package/components/Tabs/Tabs.d.ts +0 -9
  397. package/components/Tabs/Tabs.jsx +0 -13
  398. package/components/Tabs/index.d.ts +0 -3
  399. package/components/Tabs/index.jsx +0 -3
  400. package/components/TabsSwitcher/Tab.d.ts +0 -15
  401. package/components/TabsSwitcher/Tab.jsx +0 -18
  402. package/components/TabsSwitcher/TabsSwitcher.d.ts +0 -22
  403. package/components/TabsSwitcher/TabsSwitcher.jsx +0 -31
  404. package/components/TabsSwitcher/index.d.ts +0 -4
  405. package/components/TabsSwitcher/index.jsx +0 -4
  406. package/components/Text/Text.d.ts +0 -24
  407. package/components/Text/Text.jsx +0 -29
  408. package/components/Text/index.d.ts +0 -3
  409. package/components/Text/index.jsx +0 -3
  410. package/components/Textarea/Textarea.d.ts +0 -5
  411. package/components/Textarea/Textarea.jsx +0 -6
  412. package/components/Textarea/index.d.ts +0 -3
  413. package/components/Textarea/index.js +0 -3
  414. package/components/Threads/Threads.d.ts +0 -9
  415. package/components/Threads/Threads.jsx +0 -203
  416. package/components/Threads/index.d.ts +0 -3
  417. package/components/Threads/index.jsx +0 -3
  418. package/components/Tooltip/Tooltip.d.ts +0 -11
  419. package/components/Tooltip/Tooltip.jsx +0 -21
  420. package/components/Tooltip/index.d.ts +0 -3
  421. package/components/Tooltip/index.jsx +0 -3
  422. package/components/VisibilityActivatedButton/VisibilityActivatedButton.d.ts +0 -7
  423. package/components/VisibilityActivatedButton/VisibilityActivatedButton.jsx +0 -18
  424. package/components/VisibilityActivatedButton/index.d.ts +0 -3
  425. package/components/VisibilityActivatedButton/index.jsx +0 -3
  426. package/form.d.ts +0 -82
  427. package/form.js +0 -113
  428. package/form2.d.ts +0 -15
  429. package/form2.jsx +0 -30
  430. package/hooks/useBeforeUnload.d.ts +0 -1
  431. package/hooks/useBeforeUnload.js +0 -17
  432. package/hooks/useDebounceEffect.d.ts +0 -2
  433. package/hooks/useDebounceEffect.js +0 -14
  434. package/hooks/useDebouncedValue.d.ts +0 -2
  435. package/hooks/useDebouncedValue.js +0 -14
  436. package/hooks/useLagRadar.d.ts +0 -1
  437. package/hooks/useLagRadar.jsx +0 -124
  438. package/hooks/useMediaQuery.d.ts +0 -1
  439. package/hooks/useMediaQuery.js +0 -37
  440. package/hooks/useMutationWindowCloseProtection.d.ts +0 -2
  441. package/hooks/useMutationWindowCloseProtection.js +0 -13
  442. package/hooks/useScroll.d.ts +0 -3
  443. package/hooks/useScroll.js +0 -47
  444. package/hooks/useTranslation.d.ts +0 -4
  445. package/hooks/useTranslation.js +0 -11
  446. package/hooks/useWhyDidYouUpdate.d.ts +0 -3
  447. package/hooks/useWhyDidYouUpdate.js +0 -44
  448. package/imgur.d.ts +0 -1
  449. package/imgur.js +0 -13
  450. package/styles/DayPicker.classNames.d.ts +0 -29
  451. package/styles/DayPicker.classNames.js +0 -30
  452. package/styles/DayPicker.classNames.ts +0 -81
  453. package/styles/Dropdown.classNames.d.ts +0 -6
  454. package/styles/Dropdown.classNames.js +0 -7
  455. package/styles/Dropdown.classNames.ts +0 -38
  456. package/styles/Input.css +0 -23
  457. package/styles/Modal.classNames.d.ts +0 -2
  458. package/styles/Modal.classNames.js +0 -3
  459. package/styles/Modal.classNames.ts +0 -15
  460. package/styles/MultiText.css +0 -40
  461. package/styles/Pagination.css +0 -19
  462. package/styles/Tabs.css +0 -23
  463. package/tsconfig.tsbuildinfo +0 -1
  464. package/types.d.ts +0 -6
  465. package/types.js +0 -1
  466. package/utils/UseState.d.ts +0 -2
  467. package/utils/UseState.js +0 -1
  468. package/utils/blobToText.d.ts +0 -1
  469. package/utils/blobToText.js +0 -13
  470. package/utils/capitalize.d.ts +0 -1
  471. package/utils/capitalize.js +0 -6
  472. package/utils/clsx.d.ts +0 -2
  473. package/utils/clsx.js +0 -5
  474. package/utils/copy2DToClipboard.d.ts +0 -1
  475. package/utils/copy2DToClipboard.js +0 -44
  476. package/utils/cpfCpnjUtils.d.ts +0 -3
  477. package/utils/cpfCpnjUtils.js +0 -43
  478. package/utils/createLocalStorageStateHydration.d.ts +0 -1
  479. package/utils/createLocalStorageStateHydration.js +0 -18
  480. package/utils/createStateHydration.d.ts +0 -3
  481. package/utils/createStateHydration.js +0 -49
  482. package/utils/csvBlobToJson.d.ts +0 -2
  483. package/utils/csvBlobToJson.js +0 -59
  484. package/utils/downloadArrayAsCSV.d.ts +0 -1
  485. package/utils/downloadArrayAsCSV.js +0 -34
  486. package/utils/emailRegExp.d.ts +0 -2
  487. package/utils/emailRegExp.js +0 -2
  488. package/utils/fakeArray.d.ts +0 -1
  489. package/utils/fakeArray.js +0 -3
  490. package/utils/filterBoolean.d.ts +0 -1
  491. package/utils/filterBoolean.js +0 -3
  492. package/utils/formatClock.d.ts +0 -1
  493. package/utils/formatClock.js +0 -21
  494. package/utils/getInitials.d.ts +0 -4
  495. package/utils/getInitials.js +0 -22
  496. package/utils/isBrowser.d.ts +0 -12
  497. package/utils/isBrowser.js +0 -26
  498. package/utils/ms.d.ts +0 -6
  499. package/utils/ms.js +0 -31
  500. package/utils/preventDefault.d.ts +0 -2
  501. package/utils/preventDefault.js +0 -3
  502. package/utils/recursiveChildrenMap.d.ts +0 -2
  503. package/utils/recursiveChildrenMap.js +0 -16
  504. package/utils/setSelectionRange.d.ts +0 -1
  505. package/utils/setSelectionRange.js +0 -55
  506. package/utils/smoothScrollToHref.d.ts +0 -2
  507. package/utils/smoothScrollToHref.js +0 -14
  508. package/utils/stopPropagation.d.ts +0 -2
  509. package/utils/stopPropagation.js +0 -3
  510. package/utils/stripHtml.d.ts +0 -1
  511. package/utils/stripHtml.js +0 -4
  512. package/utils/stripLineBreak.d.ts +0 -1
  513. package/utils/stripLineBreak.js +0 -4
  514. package/utils/stripMarkdown.d.ts +0 -1
  515. package/utils/stripMarkdown.js +0 -28
  516. package/utils/xlsxBlobToJson.d.ts +0 -2
  517. package/utils/xlsxBlobToJson.js +0 -62
@@ -1,45 +0,0 @@
1
- import { type ComponentPropsWithoutRef, type CSSProperties, type ReactElement, type ReactNode } from "react";
2
- import Button from "../Button";
3
- declare function Modal({ open, onClose, children, overlayClassName, panelClassName, dialogClassName, dialogOuterPanelClassName, dialogOverflowClassName, style, }: {
4
- open?: boolean;
5
- onClose?: () => void;
6
- children?: ReactNode;
7
- overlayClassName?: string;
8
- panelClassName?: string;
9
- dialogClassName?: string;
10
- dialogOuterPanelClassName?: string;
11
- dialogOverflowClassName?: string;
12
- style?: CSSProperties;
13
- }): import("react").JSX.Element;
14
- declare namespace Modal {
15
- var Container: typeof ModalContainer;
16
- var Title: typeof ModalTitle;
17
- var Content: typeof ModalContent;
18
- var Actions: typeof ModalActions;
19
- var Icon: typeof ModalIcon;
20
- var CloseButton: typeof ModalCloseButton;
21
- }
22
- export default Modal;
23
- declare function ModalContainer({ children, className, }: {
24
- children?: ReactNode;
25
- className?: string;
26
- }): import("react").JSX.Element;
27
- declare function ModalTitle({ children, className, }: {
28
- children?: ReactNode;
29
- className?: string;
30
- }): import("react").JSX.Element;
31
- declare function ModalContent({ children, className, }: {
32
- children?: ReactNode;
33
- className?: string;
34
- }): import("react").JSX.Element;
35
- declare function ModalActions({ children, className, }: {
36
- children?: ReactNode;
37
- className?: string;
38
- }): import("react").JSX.Element;
39
- declare function ModalIcon({ children, }: {
40
- children?: ReactElement<{
41
- className?: string;
42
- "aria-hidden"?: string;
43
- }>;
44
- }): import("react").JSX.Element;
45
- declare function ModalCloseButton({ className, ...props }: ComponentPropsWithoutRef<typeof Button>): import("react").JSX.Element;
@@ -1,65 +0,0 @@
1
- import { cloneElement, Fragment, useCallback, } from "react";
2
- import { Dialog, Transition } from "@headlessui/react";
3
- import Stack from "../Stack";
4
- import Group from "../Group";
5
- import Button from "../Button";
6
- import { XMarkIcon } from "@heroicons/react/24/solid";
7
- import clsx from "../../utils/clsx";
8
- export default function Modal({ open, onClose, children, overlayClassName, panelClassName, dialogClassName, dialogOuterPanelClassName, dialogOverflowClassName, style, }) {
9
- const handleOnClose = useCallback(() => onClose?.(), [onClose]);
10
- return (<Transition.Root show={open} as={Fragment}>
11
- <Dialog as="div" className={clsx("relative z-10", dialogClassName)} onClose={handleOnClose} style={style}>
12
- <Transition.Child as={Fragment} enter="ease-out duration-300" enterFrom="opacity-0" enterTo="opacity-100" leave="ease-in duration-200" leaveFrom="opacity-100" leaveTo="opacity-0">
13
- <div className={clsx("fixed inset-0 bg-white/75 transition-opacity dark:bg-black/75", overlayClassName)}/>
14
- </Transition.Child>
15
-
16
- <div className={clsx("fixed inset-0 z-10 overflow-y-auto", dialogOverflowClassName)}>
17
- <div className={clsx("flex min-h-full items-end justify-center p-4 text-center sm:items-center sm:p-0", dialogOuterPanelClassName)}>
18
- <Transition.Child as={Fragment} enter="ease-out duration-300" enterFrom="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95" enterTo="opacity-100 translate-y-0 sm:scale-100" leave="ease-in duration-200" leaveFrom="opacity-100 translate-y-0 sm:scale-100" leaveTo="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95">
19
- <Dialog.Panel className={clsx("relative transform overflow-hidden rounded-lg bg-white text-left shadow-xl transition-all sm:my-8 sm:w-full sm:max-w-sm dark:bg-zinc-900 dark:ring-1 dark:ring-white/5", panelClassName)}>
20
- {children}
21
- </Dialog.Panel>
22
- </Transition.Child>
23
- </div>
24
- </div>
25
- </Dialog>
26
- </Transition.Root>);
27
- }
28
- Modal.Container = ModalContainer;
29
- function ModalContainer({ children, className, }) {
30
- return (<Stack className={clsx("gap-4! px-4 pt-5 pb-4 sm:p-6", className)}>
31
- {children}
32
- </Stack>);
33
- }
34
- Modal.Title = ModalTitle;
35
- function ModalTitle({ children, className, }) {
36
- return (<Dialog.Title as="h3" className={clsx("text-center text-lg leading-6 font-medium text-zinc-900 dark:text-zinc-100", className)}>
37
- {children}
38
- </Dialog.Title>);
39
- }
40
- Modal.Content = ModalContent;
41
- function ModalContent({ children, className, }) {
42
- return (<div className={clsx("text-center text-sm text-zinc-500 dark:text-zinc-400", className)}>
43
- {children}
44
- </div>);
45
- }
46
- Modal.Actions = ModalActions;
47
- function ModalActions({ children, className, }) {
48
- return <Group className={className}>{children}</Group>;
49
- }
50
- Modal.Icon = ModalIcon;
51
- function ModalIcon({ children, }) {
52
- return (<div className="mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-green-100 dark:bg-green-800">
53
- {children &&
54
- cloneElement(children, {
55
- className: "h-6 w-6 text-green-600 dark:text-green-400",
56
- "aria-hidden": "true",
57
- })}
58
- </div>);
59
- }
60
- Modal.CloseButton = ModalCloseButton;
61
- function ModalCloseButton({ className, ...props }) {
62
- return (<Button icon className={clsx("absolute top-2 right-2", className)} variant="text" {...props}>
63
- <XMarkIcon />
64
- </Button>);
65
- }
@@ -1,4 +0,0 @@
1
- import Modal from "./Modal";
2
- export * from "./Modal";
3
- export default Modal;
4
- export { default as useModalState } from "./useModalState";
@@ -1,4 +0,0 @@
1
- import Modal from "./Modal";
2
- export * from "./Modal";
3
- export default Modal;
4
- export { default as useModalState } from "./useModalState";
@@ -1,6 +0,0 @@
1
- export default function useModalState(): readonly [boolean, {
2
- readonly setModalOpen: import("react").Dispatch<import("react").SetStateAction<boolean>>;
3
- readonly openModal: () => void;
4
- readonly closeModal: () => void;
5
- readonly toggleModal: () => void;
6
- }];
@@ -1,16 +0,0 @@
1
- import { useCallback, useMemo, useState } from "react";
2
- export default function useModalState() {
3
- const [modalOpen, setModalOpen] = useState(false);
4
- const handleModalToggle = useCallback(() => setModalOpen((open) => !open), []);
5
- const handleModalOpen = useCallback(() => setModalOpen(true), []);
6
- const handleModalClose = useCallback(() => setModalOpen(false), []);
7
- return useMemo(() => [
8
- modalOpen,
9
- {
10
- setModalOpen,
11
- openModal: handleModalOpen,
12
- closeModal: handleModalClose,
13
- toggleModal: handleModalToggle,
14
- },
15
- ], [handleModalClose, handleModalOpen, handleModalToggle, modalOpen]);
16
- }
@@ -1,9 +0,0 @@
1
- import type { Ref } from "react";
2
- export interface ModeToggleProps {
3
- ariaLabel?: string;
4
- className?: string;
5
- iconClassName?: string;
6
- ref?: Ref<HTMLButtonElement>;
7
- }
8
- declare const ModeToggle: ({ ariaLabel, className, iconClassName, ref, }: ModeToggleProps) => import("react").JSX.Element;
9
- export default ModeToggle;
@@ -1,12 +0,0 @@
1
- import { MoonIcon, SunIcon } from "@heroicons/react/24/outline";
2
- import Button from "../Button";
3
- import clsx from "../../utils/clsx";
4
- import useModeToggle from "./useModeToggle";
5
- const ModeToggle = function ModeToggle({ ariaLabel = "Toggle dark mode", className, iconClassName, ref, }) {
6
- const toggleMode = useModeToggle();
7
- return (<Button ref={ref} icon variant="text" aria-label={ariaLabel} onClick={toggleMode} className={className}>
8
- <SunIcon className={clsx("dark:hidden", iconClassName)}/>
9
- <MoonIcon className={clsx("hidden dark:block", iconClassName)}/>
10
- </Button>);
11
- };
12
- export default ModeToggle;
@@ -1,4 +0,0 @@
1
- import ModeToggle from "./ModeToggle";
2
- export * from "./ModeToggle";
3
- export default ModeToggle;
4
- export { default as useModeToggle } from "./useModeToggle";
@@ -1,5 +0,0 @@
1
- import ModeToggle from "./ModeToggle";
2
- export * from "./ModeToggle";
3
- export default ModeToggle;
4
- // noinspection JSUnusedGlobalSymbols
5
- export { default as useModeToggle } from "./useModeToggle";
@@ -1 +0,0 @@
1
- export default function useModeToggle(): () => void;
@@ -1,21 +0,0 @@
1
- export default function useModeToggle() {
2
- function disableTransitionsTemporarily() {
3
- document.documentElement.classList.add("**:transition-none!");
4
- window.setTimeout(() => {
5
- document.documentElement.classList.remove("**:transition-none!");
6
- }, 0);
7
- }
8
- function toggleMode() {
9
- disableTransitionsTemporarily();
10
- const darkModeMediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
11
- const isSystemDarkMode = darkModeMediaQuery.matches;
12
- const isDarkMode = document.documentElement.classList.toggle("dark");
13
- if (isDarkMode === isSystemDarkMode) {
14
- delete window.localStorage.isDarkMode;
15
- }
16
- else {
17
- window.localStorage.isDarkMode = isDarkMode;
18
- }
19
- }
20
- return toggleMode;
21
- }
@@ -1,28 +0,0 @@
1
- import { type ReactNode } from "react";
2
- import Input, { type UnstyledInputProps } from "../Input";
3
- export interface MultiSelectProps<T extends object | string> extends Omit<UnstyledInputProps<false>, "as" | "onSelect" | "inputClassName" | "innerClassName" | "value" | "onChange"> {
4
- placeholder?: string;
5
- emptyText?: string;
6
- items?: T[];
7
- filterProperty?: keyof T;
8
- filterFunction?: (item: T) => boolean;
9
- onChange?: (items: string[]) => void;
10
- renderProperty?: keyof T;
11
- renderFunction?: (item: T) => ReactNode;
12
- query?: string;
13
- onChangeQuery?: (query: string) => void;
14
- loading?: boolean;
15
- leadingClassName?: string;
16
- inputInnerClassName?: string;
17
- inputElementClassName?: string;
18
- leading?: ReactNode;
19
- as?: typeof Input;
20
- static?: boolean;
21
- displayValue?: (item: T | null) => string;
22
- value?: string[];
23
- creatable?: boolean;
24
- getCreateLabel?: (query: string) => string;
25
- itemsRenderLimit?: number;
26
- valueProperty?: string;
27
- }
28
- export default function MultiSelect<T extends object | string>({ placeholder, emptyText, items, renderProperty, renderFunction, filterProperty, filterFunction, onChange, query: defaultQuery, onChangeQuery, loading, inputInnerClassName, inputElementClassName, as, trailing, trailingClassName, trailingInputClassName, leadingInputClassName, static: isStatic, displayValue, value, labelClassName, creatable, getCreateLabel, itemsRenderLimit, className, valueProperty, label, required, readOnly, error, ...props }: MultiSelectProps<T>): import("react").JSX.Element;
@@ -1,116 +0,0 @@
1
- import { Combobox } from "@headlessui/react";
2
- import Loading from "../Loading";
3
- import { useCallback, useEffect, useMemo, useState, } from "react";
4
- import Input, { defaultHelpTextClassName, defaultInputClassName, defaultLabelClassName, defaultLeadingInputClassName, defaultTrailingClassName, defaultTrailingInputClassName, UnstyledInput, } from "../Input";
5
- import clsx from "../../utils/clsx";
6
- import { isEqual, take } from "lodash-es";
7
- import { CheckIcon, ChevronUpDownIcon } from "@heroicons/react/20/solid";
8
- import { useDeepCompareEffect } from "react-use";
9
- import { getValue, MultiSelectInput } from "./MultiSelectInput";
10
- const defaultMenuItemsClassName = "z-10 rounded-md bg-white shadow-lg ring-1 ring-black/5 dark:ring-zinc-700 focus:outline-hidden dark:bg-zinc-800";
11
- export default function MultiSelect({ placeholder, emptyText = "No item found.", items = [], renderProperty = "title", renderFunction, filterProperty = "title", filterFunction, onChange, query: defaultQuery = "", onChangeQuery, loading, inputInnerClassName, inputElementClassName, as, trailing, trailingClassName, trailingInputClassName, leadingInputClassName, static: isStatic,
12
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
13
- displayValue = (item) => item?.[renderProperty] || "", value, labelClassName, creatable, getCreateLabel = (query) => `+ create "${query}"`, itemsRenderLimit, className, valueProperty = "_id", label, required, readOnly, error, ...props }) {
14
- const [query, setQuery] = useState(defaultQuery);
15
- const [selectedItems, setSelectedItems] = useState(value || []);
16
- // noinspection DuplicatedCode
17
- useEffect(() => {
18
- if (query !== defaultQuery) {
19
- setQuery(defaultQuery);
20
- }
21
- // eslint-disable-next-line react-hooks/exhaustive-deps
22
- }, [defaultQuery]);
23
- useEffect(() => {
24
- if (onChangeQuery && query !== defaultQuery) {
25
- onChangeQuery(query);
26
- }
27
- // eslint-disable-next-line react-hooks/exhaustive-deps
28
- }, [query]);
29
- const filteredItems = useMemo(() => query === ""
30
- ? items
31
- : items.filter(filterFunction ||
32
- ((item) => (typeof item === "string"
33
- ? item
34
- : item[filterProperty])
35
- .toLowerCase()
36
- .includes(query.toLowerCase()))), [filterFunction, filterProperty, items, query]);
37
- trailing = loading ? (<Loading />) : (trailing ||
38
- (!readOnly ? (<Combobox.Button className="pointer-events-auto -mr-1 flex items-center">
39
- <ChevronUpDownIcon className="h-5 w-5 text-zinc-400" aria-hidden="true"/>
40
- </Combobox.Button>) : undefined));
41
- const ComponentInput = as || UnstyledInput;
42
- const doRender = useCallback((item) => renderFunction
43
- ? renderFunction(item)
44
- : typeof item === "string"
45
- ? item
46
- : item[renderProperty], [renderFunction, renderProperty]);
47
- useDeepCompareEffect(() => {
48
- onChange?.(selectedItems);
49
- }, [selectedItems || {}]);
50
- useDeepCompareEffect(() => {
51
- if (!isEqual(selectedItems, value)) {
52
- setSelectedItems(value || []);
53
- }
54
- }, [value || {}]);
55
- const removeItem = useCallback((item) => () => setSelectedItems((selectedItems) => [
56
- ...selectedItems.filter((i) => getValue(valueProperty, i) !== getValue(valueProperty, item)),
57
- ]), [valueProperty]);
58
- if (label && required) {
59
- label = (<>
60
- {label} <span className="text-red-500">*</span>
61
- </>);
62
- }
63
- const renderedItems = itemsRenderLimit
64
- ? take(filteredItems, itemsRenderLimit)
65
- : filteredItems;
66
- let inputClassName = clsx(defaultInputClassName, "bg-white dark:bg-zinc-800 pl-0", inputElementClassName, {
67
- "border-dashed": readOnly,
68
- });
69
- let helpTextClassName = defaultHelpTextClassName;
70
- if (error) {
71
- inputClassName = clsx(inputClassName, "border-error-300 dark:border-error-500 text-error-900 dark:text-error-500 placeholder-error-300 focus:border-error-500 dark:focus:border-error-500 focus:ring-error-500");
72
- helpTextClassName = clsx(helpTextClassName, "text-error-600 dark:text-error-500");
73
- }
74
- return (<div className={clsx("relative", className)}>
75
- <Combobox
76
- /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
77
- onChange={setSelectedItems} value={selectedItems.map((item) => getValue(valueProperty, item))} multiple>
78
- {({ open }) => (<div>
79
- <ComponentInput
80
- /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
81
- {...props} as={MultiSelectInput} placeholder={!readOnly ? placeholder : undefined} value={query} onChange={(event) => setQuery(event.target.value)} trailing={trailing} trailingClassName={clsx(defaultTrailingClassName, trailingClassName)} inputClassName={inputClassName} innerClassName={inputInnerClassName} trailingInputClassName={clsx(defaultTrailingInputClassName, trailingInputClassName)} leadingInputClassName={clsx(defaultLeadingInputClassName, leadingInputClassName)} displayValue={displayValue} labelClassName={clsx(defaultLabelClassName, labelClassName)} selectedItems={selectedItems} doRender={doRender} removeItem={removeItem} required={required && !selectedItems.length} label={label} readOnly={readOnly} valueProperty={valueProperty} helpTextClassName={helpTextClassName} items={items}/>
82
-
83
- {!readOnly &&
84
- ((creatable && query) || filteredItems.length > 0) && (<Combobox.Options static={isStatic} className={clsx(defaultMenuItemsClassName, "absolute z-10 mt-1 max-h-72 w-full scroll-py-2 overflow-y-auto py-2 text-sm text-zinc-800 dark:text-zinc-200")}>
85
- {!renderedItems.some((item) => getValue(valueProperty, item) === query) &&
86
- creatable &&
87
- !!query && (<Combobox.Option value={query} className={({ active }) => clsx("cursor-default px-4 py-2 select-none", {
88
- "bg-primary-600 text-white": active,
89
- })}>
90
- {({ selected }) => (<div className="flex">
91
- {selected && <CheckIcon className="mr-2 w-5"/>}
92
- {selected ? query : getCreateLabel(query)}
93
- </div>)}
94
- </Combobox.Option>)}
95
- {renderedItems.map((item) => (<Combobox.Option key={getValue(valueProperty, item)} value={getValue(valueProperty, item)} className={({ active }) => clsx("cursor-default px-4 py-2 select-none", {
96
- "bg-primary-600 text-white": active,
97
- })}>
98
- {({ selected }) => (<div className="flex">
99
- {selected && <CheckIcon className="mr-2 w-5"/>}
100
- {doRender(item)}
101
- </div>)}
102
- </Combobox.Option>))}
103
- </Combobox.Options>)}
104
-
105
- {!readOnly &&
106
- !creatable &&
107
- open &&
108
- emptyText &&
109
- query !== "" &&
110
- filteredItems.length === 0 && (<p className={clsx(defaultMenuItemsClassName, "absolute mt-1 w-full p-4 text-sm text-zinc-500 dark:text-zinc-400")}>
111
- {emptyText}
112
- </p>)}
113
- </div>)}
114
- </Combobox>
115
- </div>);
116
- }
@@ -1,12 +0,0 @@
1
- import { type ReactNode } from "react";
2
- export declare function getValue<Id extends string | number, T extends object | string>(id: Id, item: T): string | number;
3
- export declare function MultiSelectInput<Id extends string | number, T extends object | string>({ className, selectedItems, doRender, removeItem, valueProperty, readOnly, items, ...props }: {
4
- className?: string;
5
- selectedItems: string[];
6
- doRender: (item: T) => ReactNode;
7
- removeItem: (item: T) => () => void;
8
- valueProperty: Id;
9
- readOnly?: boolean;
10
- error?: boolean;
11
- items?: T[];
12
- }): import("react").JSX.Element;
@@ -1,27 +0,0 @@
1
- import { useRef } from "react";
2
- import clsx from "../../utils/clsx";
3
- import Badge from "../Badge";
4
- import { Combobox } from "@headlessui/react";
5
- export function getValue(id, item) {
6
- return typeof item === "string"
7
- ? item
8
- : item[id];
9
- }
10
- export function MultiSelectInput({ className, selectedItems, doRender, removeItem, valueProperty, readOnly, items, ...props }) {
11
- const ref = useRef(null);
12
- return (<div className={clsx("focus-within:border-primary-500 focus-within:ring-primary-500 dark:focus-within:border-primary-500 flex flex-wrap border focus-within:ring-1", className)} onClick={() => ref.current?.focus()}>
13
- {!!selectedItems.length && (<div className="flex flex-wrap items-center gap-1 p-1.5 pb-0">
14
- {selectedItems.map((selectedItem) => {
15
- const item = items?.find((item) => getValue(valueProperty, item) === selectedItem);
16
- if (!item)
17
- return null;
18
- return (<Badge key={getValue(valueProperty, item)} onActionClick={!readOnly ? removeItem(item) : undefined}>
19
- {doRender(item)}
20
- </Badge>);
21
- })}
22
- </div>)}
23
- {!readOnly && (<Combobox.Input
24
- /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
25
- {...props} ref={ref} className="rounded-md border-none ring-transparent! disabled:cursor-not-allowed disabled:text-zinc-500 sm:text-sm dark:bg-zinc-800 dark:disabled:bg-zinc-900/90" readOnly={readOnly}/>)}
26
- </div>);
27
- }
@@ -1,5 +0,0 @@
1
- import MultiSelect from "./MultiSelect";
2
- export * from "./MultiSelect";
3
- export default MultiSelect;
4
- export { MultiSelectInput } from "./MultiSelectInput";
5
- export { getValue } from "./MultiSelectInput";
@@ -1,5 +0,0 @@
1
- import MultiSelect from "./MultiSelect";
2
- export * from "./MultiSelect";
3
- export default MultiSelect;
4
- export { MultiSelectInput } from "./MultiSelectInput";
5
- export { getValue } from "./MultiSelectInput";
@@ -1,23 +0,0 @@
1
- import { type ChangeEventHandler, type FocusEventHandler, type Ref } from "react";
2
- export interface MultiTextProps {
3
- value?: string[];
4
- onChangeValue?: (value: string[]) => void;
5
- name?: string;
6
- onChange?: ChangeEventHandler<HTMLInputElement>;
7
- onBlur?: FocusEventHandler<HTMLInputElement>;
8
- id?: string;
9
- className?: string;
10
- helpText?: string;
11
- label?: string;
12
- validate?: (value: string) => boolean;
13
- invalidHelpText?: string;
14
- error?: boolean;
15
- format?: (item: string) => string;
16
- readOnly?: boolean;
17
- loading?: boolean;
18
- type?: string;
19
- required?: boolean;
20
- ref?: Ref<HTMLInputElement>;
21
- }
22
- declare function MultiText({ value, onChangeValue, onChange, onBlur, name, id, className, helpText, label, validate, invalidHelpText, error, format, readOnly, loading, type, required, ref, }: MultiTextProps): import("react").JSX.Element;
23
- export default MultiText;
@@ -1,118 +0,0 @@
1
- import { useEffect, useId, useRef, useState, } from "react";
2
- import { isEqual, uniq } from "lodash-es";
3
- import { useDeepCompareEffect } from "react-use";
4
- import { XMarkIcon } from "@heroicons/react/20/solid";
5
- import InputWrapper from "../Input2/InputWrapper";
6
- function defaultFormat(item) {
7
- return item;
8
- }
9
- function MultiText({ value, onChangeValue, onChange, onBlur, name, id, className, helpText, label, validate, invalidHelpText, error, format = defaultFormat, readOnly, loading, type, required, ref, }) {
10
- const innerId = useId();
11
- id = id || innerId;
12
- const inputRef = useRef(null);
13
- const [innerFocused, setInnerFocused] = useState(false);
14
- const [innerValue, setInnerValue] = useState(value || []);
15
- const [inputValue, setInputValue] = useState("");
16
- const [invalid, setInvalid] = useState(false);
17
- useDeepCompareEffect(() => {
18
- if (value && onChangeValue && !isEqual(value, innerValue)) {
19
- onChangeValue(innerValue);
20
- }
21
- }, [innerValue]);
22
- useDeepCompareEffect(() => {
23
- if (value && !isEqual(value, innerValue)) {
24
- setInnerValue(value);
25
- }
26
- }, [value || []]);
27
- const innerRef = useRef({
28
- get value() {
29
- return innerValue;
30
- },
31
- set value(value) {
32
- setInnerValue(value);
33
- },
34
- });
35
- useEffect(() => {
36
- if (ref) {
37
- if (typeof ref === "function") {
38
- ref(innerRef.current);
39
- }
40
- else {
41
- try {
42
- ref.current = innerRef.current;
43
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
44
- }
45
- catch (e) {
46
- // do nothing
47
- }
48
- }
49
- }
50
- }, [ref]);
51
- useDeepCompareEffect(() => {
52
- if (onChange) {
53
- onChange({
54
- target: {
55
- name,
56
- value: innerValue,
57
- },
58
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
59
- });
60
- }
61
- }, [innerValue]);
62
- return (<InputWrapper id={id} className={className} helpText={(invalid ? invalidHelpText : undefined) || helpText} label={label} error={invalid || error} required={required}>
63
- <div className="ui-multi-text" onClick={() => inputRef.current?.focus()} data-focused={innerFocused ? "" : undefined} data-error={invalid || error ? "" : undefined} data-loading={loading ? "" : undefined} data-readonly={readOnly ? "" : undefined}>
64
- {!!innerValue?.length && (<div className="-mx-2 flex w-full flex-wrap gap-0.5">
65
- {innerValue.map((item, i) => {
66
- const removeItem = () => {
67
- const newValue = [...innerValue];
68
- newValue.splice(i, 1);
69
- setInnerValue(newValue);
70
- inputRef.current?.focus();
71
- };
72
- return (<span className="ui-multi-text-item" key={i} onClick={(e) => e.stopPropagation()} onDoubleClick={() => {
73
- setInputValue(item);
74
- removeItem();
75
- }}>
76
- <span className="ui-multi-text-item-content">
77
- {format(item)}
78
- </span>
79
- {!readOnly && (<button className="ui-multi-text-delete-button" onClick={removeItem} type="button">
80
- <XMarkIcon className="ui-multi-text-delete-icon"/>
81
- </button>)}
82
- </span>);
83
- })}
84
- </div>)}
85
- <input id={id} ref={inputRef} type={type || "text"} className="ui-multi-text-input" value={inputValue} onChange={(e) => {
86
- setInvalid(false);
87
- setInputValue(e.target.value);
88
- }} onBlur={(e) => {
89
- setInnerFocused(false);
90
- const value = e.currentTarget.value;
91
- if (value) {
92
- if (!validate || validate(value)) {
93
- setInvalid(false);
94
- setInnerValue(uniq([...(innerValue || []), value]));
95
- setInputValue("");
96
- }
97
- else {
98
- setInvalid(true);
99
- }
100
- }
101
- onBlur?.(e);
102
- }} onKeyDown={(e) => {
103
- const value = e.currentTarget.value;
104
- if (e.code === "Enter") {
105
- e.preventDefault();
106
- if (!validate || validate(value)) {
107
- setInnerValue(uniq([...(innerValue || []), value]));
108
- setInputValue("");
109
- }
110
- else {
111
- setInvalid(true);
112
- }
113
- }
114
- }} onFocus={() => setInnerFocused(true)} readOnly={readOnly} required={required && innerValue.length === 0}/>
115
- </div>
116
- </InputWrapper>);
117
- }
118
- export default MultiText;
@@ -1,3 +0,0 @@
1
- import MultiText from "./MultiText";
2
- export * from "./MultiText";
3
- export default MultiText;
@@ -1,3 +0,0 @@
1
- import MultiText from "./MultiText";
2
- export * from "./MultiText";
3
- export default MultiText;
@@ -1,9 +0,0 @@
1
- import { type ReactNode } from "react";
2
- export default function NavigationDrawer({ children, navigationChildren, position, title, noPadding, panelClassName, }: {
3
- children: ReactNode;
4
- navigationChildren: ReactNode;
5
- position?: "left" | "right";
6
- title?: ReactNode;
7
- noPadding?: boolean;
8
- panelClassName?: string;
9
- }): import("react").JSX.Element;
@@ -1,29 +0,0 @@
1
- import Drawer from "../Drawer";
2
- import { useCallback } from "react";
3
- import navigationDrawerState from "./navigationDrawer.state";
4
- import { useSnapshot } from "valtio";
5
- import clsx from "../../utils/clsx";
6
- export default function NavigationDrawer({ children, navigationChildren, position, title, noPadding, panelClassName, }) {
7
- const { isOpen } = useSnapshot(navigationDrawerState);
8
- const handleChangeOpen = useCallback((open) => {
9
- if (window.innerWidth <= 1024) {
10
- navigationDrawerState.setOpen(open);
11
- }
12
- }, []);
13
- return (<>
14
- <Drawer open={isOpen} onChangeOpen={handleChangeOpen} className="lg:hidden" position={position} title={title} noPadding={noPadding} panelClassName={panelClassName}>
15
- {navigationChildren}
16
- </Drawer>
17
- <div className={clsx("fixed top-0 left-0 z-10 hidden h-full w-full max-w-xs flex-1 overflow-y-auto px-4 py-4 pt-20 lg:block", "bg-zinc-100/95 backdrop-blur-sm [@supports(backdrop-filter:blur(0))]:bg-zinc-100/75", "dark:bg-zinc-900/95 dark:[@supports(backdrop-filter:blur(0))]:bg-zinc-900/75", "transition-transform", {
18
- "translate-x-0": isOpen,
19
- "-translate-x-full": !isOpen,
20
- }, panelClassName)}>
21
- {navigationChildren}
22
- </div>
23
- <div className={clsx("flex min-h-screen flex-col ring-offset-zinc-100 transition-all duration-300", {
24
- "lg:pl-80 lg:duration-150": isOpen,
25
- })}>
26
- {children}
27
- </div>
28
- </>);
29
- }
@@ -1,13 +0,0 @@
1
- import { type ReactElement, type ReactNode } from "react";
2
- export default function NavigationItem({ icon, children, href, exact, alternativeActiveHrefs, className, disabled, active, }: {
3
- icon?: ReactElement<{
4
- className?: string;
5
- }>;
6
- children: ReactNode;
7
- href: string;
8
- exact?: boolean;
9
- alternativeActiveHrefs?: string[];
10
- className?: string;
11
- disabled?: boolean;
12
- active?: boolean;
13
- }): import("react").JSX.Element;
@@ -1,24 +0,0 @@
1
- import clsx from "../../utils/clsx";
2
- import { useRouter } from "next/router";
3
- import { cloneElement } from "react";
4
- import Button from "../Button";
5
- import navigationDrawerState from "./navigationDrawer.state";
6
- import useMediaQuery from "../../hooks/useMediaQuery";
7
- export default function NavigationItem({ icon, children, href, exact, alternativeActiveHrefs, className, disabled, active, }) {
8
- const router = useRouter();
9
- active =
10
- active === undefined
11
- ? exact
12
- ? router.asPath === href ||
13
- alternativeActiveHrefs?.some((href) => router.asPath === href)
14
- : router.asPath.includes(href) ||
15
- alternativeActiveHrefs?.some((href) => router.asPath.includes(href))
16
- : active;
17
- const isMobile = useMediaQuery(`(max-width: 1024px)`);
18
- return (<Button variant={active ? "light" : "text"} color={active ? "primary" : "default"} className={clsx("w-full justify-start border-transparent", className)} leading={icon &&
19
- cloneElement(icon, {
20
- className: clsx(icon.props?.className, "w-5! mr-3"),
21
- })} href={href} onClick={isMobile ? navigationDrawerState.close : undefined} disabled={disabled}>
22
- {children}
23
- </Button>);
24
- }