@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,141 +0,0 @@
1
- import clsx from "../../utils/clsx";
2
- import { memo, useCallback, useEffect, useMemo, useRef, useState, } from "react";
3
- import { useDeepCompareEffect } from "react-use";
4
- import { defaultHelpTextClassName, defaultLabelClassName, } from "../Input";
5
- import FileSelect, {} from "../FileSelect";
6
- import isomorphicObjectId from "@majapisoftwares/next/utils/isomorphicObjectId";
7
- import { isEqual } from "lodash-es";
8
- import Text from "../Text";
9
- import PreviewFile, {} from "./PreviewFile";
10
- import concurrentForOf from "@majapisoftwares/next/utils/concurrentForOf";
11
- import paginated from "@majapisoftwares/next/utils/paginated";
12
- import Pagination from "../Pagination";
13
- function FileInput({ error, className, helpText, onChange, name, limit, label, id, required, onMouseOver, onMouseOut, readOnly, value, emptyText = "No files", downloadText = "Download", openText = "Open", fileDisplay, asyncUpload, onRejectFiles, loading, maxConcurrentUploads = 1, fileAdditionalInfo, ref, fileSelectClassName, previewFileClassName, filesPerPage = 10, previewFileComponent, previewFileProps, filesClassName, ...props }) {
14
- const [uploading, setUploading] = useState(false);
15
- const [innerValue, setInnerValue] = useState(value || []);
16
- const [currentPage, setCurrentPage] = useState(1);
17
- const PreviewFileComponent = useMemo(() => memo(previewFileComponent || PreviewFile, isEqual), [previewFileComponent]);
18
- const paginatedValue = paginated(innerValue, currentPage - 1, filesPerPage);
19
- useEffect(() => {
20
- const totalPages = Math.ceil(innerValue.length / filesPerPage);
21
- if (currentPage > totalPages && totalPages > 0) {
22
- setCurrentPage(totalPages);
23
- }
24
- }, [innerValue.length, currentPage, filesPerPage]);
25
- useDeepCompareEffect(() => {
26
- if (value && !isEqual(value, innerValue)) {
27
- setInnerValue(value);
28
- }
29
- }, [{ value }]);
30
- const innerRef = useRef({
31
- get value() {
32
- return innerValue;
33
- },
34
- set value(value) {
35
- setInnerValue(value || []);
36
- },
37
- });
38
- useEffect(() => {
39
- if (ref) {
40
- if (typeof ref === "function") {
41
- ref(innerRef.current);
42
- }
43
- else {
44
- try {
45
- ref.current = innerRef.current;
46
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
47
- }
48
- catch (e) {
49
- // do nothing
50
- }
51
- }
52
- }
53
- }, [ref]);
54
- const handleAcceptFiles = async (files) => {
55
- if (!asyncUpload) {
56
- setInnerValue((value) => [
57
- ...value,
58
- ...files
59
- .filter((_file, index) => !limit || index <= limit - value.length - 1)
60
- .map((file) => ({
61
- _id: isomorphicObjectId().toString(),
62
- name: file.name,
63
- file,
64
- type: file.type,
65
- size: file.size,
66
- url: URL.createObjectURL(file),
67
- })),
68
- ]);
69
- }
70
- else {
71
- setUploading(true);
72
- if (onRejectFiles) {
73
- const rejectedFilesLimit = files.filter((_file, index) => !(!limit || index <= limit - innerValue.length - 1));
74
- if (rejectedFilesLimit.length) {
75
- onRejectFiles(rejectedFilesLimit, "limit");
76
- }
77
- }
78
- const acceptedFiles = files.filter((_file, index) => !limit || index <= limit - innerValue.length - 1);
79
- const filesNotUploaded = [];
80
- await concurrentForOf(acceptedFiles, async (file) => {
81
- try {
82
- const uploadedFile = await asyncUpload({
83
- _id: isomorphicObjectId().toString(),
84
- name: file.name,
85
- file,
86
- type: file.type,
87
- size: file.size,
88
- url: URL.createObjectURL(file),
89
- });
90
- setInnerValue((value) => [...value, uploadedFile]);
91
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
92
- }
93
- catch (e) {
94
- filesNotUploaded.push(file);
95
- }
96
- }, maxConcurrentUploads);
97
- if (onRejectFiles && filesNotUploaded.length) {
98
- onRejectFiles(filesNotUploaded, "upload-error");
99
- }
100
- setUploading(false);
101
- }
102
- };
103
- useDeepCompareEffect(() => {
104
- if (onChange) {
105
- onChange({
106
- target: {
107
- name,
108
- value: innerValue,
109
- },
110
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
111
- });
112
- }
113
- }, [innerValue]);
114
- const handleDeleteClick = useCallback((clickedFile) => () => {
115
- setInnerValue((value) => [
116
- ...value.filter((file) => file !== clickedFile),
117
- ]);
118
- }, []);
119
- return (<div data-input-name={name} data-error={error ? "" : undefined} data-loading={loading ? "" : undefined} className={clsx("relative data-loading:animate-pulse", className)} onMouseOver={onMouseOver} onMouseOut={onMouseOut}>
120
- {label && (<label htmlFor={id} className={defaultLabelClassName}>
121
- {label}
122
- {required && (<>
123
- {" "}
124
- <span className="text-red-500">*</span>
125
- </>)}
126
- </label>)}
127
- <div className={clsx("flex flex-col gap-4", {
128
- "md:grid md:grid-cols-2": !!innerValue.length,
129
- "min-h-[140px]": !!innerValue.length || !readOnly,
130
- }, filesClassName)}>
131
- {paginatedValue.map((file, index) => (<PreviewFileComponent key={index} file={file} readOnly={readOnly} handleDeleteClick={handleDeleteClick(file)} downloadText={downloadText} display={fileDisplay} openText={openText} additionalInfo={fileAdditionalInfo} index={index} className={previewFileClassName} filesPerPage={filesPerPage} currentPage={currentPage} {...previewFileProps}/>))}
132
- {innerValue.length > filesPerPage && (<Pagination className="mx-auto md:col-span-2" currentPage={currentPage} totalItems={innerValue.length} onChangePage={setCurrentPage} itemsPerPage={filesPerPage}/>)}
133
- {readOnly && !innerValue.length && (<Text variant="secondary">{emptyText}</Text>)}
134
- {!readOnly && (!limit || innerValue.length < limit) && (<FileSelect {...props} className={fileSelectClassName} id={id} onAcceptFiles={handleAcceptFiles} limit={limit ? limit - innerValue.length : undefined} uploading={uploading} onRejectFiles={onRejectFiles} error={error}/>)}
135
- </div>
136
- {helpText && (<div className={clsx(defaultHelpTextClassName, "in-data-error:text-error-500")}>
137
- {helpText}
138
- </div>)}
139
- </div>);
140
- }
141
- export default memo(FileInput, isEqual);
@@ -1,18 +0,0 @@
1
- import type { FileInputFile } from "./FileInput";
2
- import { type ReactNode } from "react";
3
- export type PreviewFileProps = {
4
- file: FileInputFile;
5
- readOnly?: boolean;
6
- handleDeleteClick: () => void;
7
- downloadText: string;
8
- openText: string;
9
- display?: "info" | "preview" | "both";
10
- additionalInfo?: (file: FileInputFile, index: number) => ReactNode;
11
- index: number;
12
- className?: string;
13
- filesPerPage: number;
14
- currentPage: number;
15
- };
16
- declare function PreviewFile({ file, readOnly, handleDeleteClick, downloadText, openText, display, additionalInfo, index, className, filesPerPage, currentPage, }: PreviewFileProps): import("react").JSX.Element;
17
- declare const _default: import("react").MemoExoticComponent<typeof PreviewFile>;
18
- export default _default;
@@ -1,54 +0,0 @@
1
- import Group from "../Group";
2
- import { ArrowDownTrayIcon, DocumentIcon } from "@heroicons/react/24/outline";
3
- import Stack from "../Stack";
4
- import Text from "../Text";
5
- import numeral from "numeral";
6
- import Button from "../Button";
7
- import { ArrowTopRightOnSquareIcon, TrashIcon, } from "@heroicons/react/20/solid";
8
- import { memo } from "react";
9
- import clsx from "../../utils/clsx";
10
- import checkIsVideo from "./isVideo";
11
- import checkIsImage from "./isImage";
12
- import { isEqual } from "lodash-es";
13
- function PreviewFile({ file, readOnly, handleDeleteClick, downloadText, openText, display = "info", additionalInfo, index, className, filesPerPage, currentPage, }) {
14
- const isVideo = file.type?.startsWith("video") || checkIsVideo(file.url);
15
- const isImage = file.type?.startsWith("image") || checkIsImage(file.url);
16
- if (display === "preview" && !isVideo && !isImage) {
17
- display = "info";
18
- }
19
- return (<div className={clsx("group relative flex flex-wrap items-center justify-center rounded-md bg-zinc-200 dark:bg-zinc-800", className)}>
20
- {["preview", "both"].includes(display) &&
21
- (isVideo ? (<video className="max-h-96 rounded-md" src={file.url} controls/>) : (
22
- // eslint-disable-next-line @next/next/no-img-element
23
- <img src={file.url} alt={file.description} className="max-h-96 rounded-md"/>))}
24
- {["info", "both"].includes(display) && (<Group className="w-full items-center gap-0">
25
- {display === "info" && (<div className="m-2 mr-0 rounded-lg bg-zinc-300 p-2 dark:bg-zinc-800">
26
- <DocumentIcon className="h-5 w-5"/>
27
- </div>)}
28
- <Stack className="w-full overflow-hidden p-3">
29
- <Stack className="gap-1">
30
- <div className="flex-1 truncate" title={file.name}>
31
- {file.name}
32
- </div>
33
- {file.description && <div>{file.description}</div>}
34
- <Text size="sm">{file.type}</Text>
35
- {!!file.size && (<Text size="sm">{numeral(file.size).format("0b")}</Text>)}
36
- {!file.url.startsWith("blob") && (<Group className="mr-auto">
37
- <Button leading={<ArrowTopRightOnSquareIcon />} href={file.url} target="_blank">
38
- {openText}
39
- </Button>
40
- <Button leading={<ArrowDownTrayIcon />} href={file.url} download={file.name}>
41
- {downloadText}
42
- </Button>
43
- </Group>)}
44
- </Stack>
45
- {additionalInfo &&
46
- additionalInfo(file, index + (currentPage - 1) * filesPerPage)}
47
- </Stack>
48
- </Group>)}
49
- {!readOnly && (<Button icon variant="filled" color="default" className="absolute top-2 right-2 group-hover:opacity-100 sm:opacity-0" onClick={handleDeleteClick}>
50
- <TrashIcon />
51
- </Button>)}
52
- </div>);
53
- }
54
- export default memo(PreviewFile, isEqual);
@@ -1,3 +0,0 @@
1
- import FileInput from "./FileInput";
2
- export * from "./FileInput";
3
- export default FileInput;
@@ -1,3 +0,0 @@
1
- import FileInput from "./FileInput";
2
- export * from "./FileInput";
3
- export default FileInput;
@@ -1 +0,0 @@
1
- export default function isImage(file: File | string): boolean;
@@ -1,10 +0,0 @@
1
- const imageExtensions = [".png", ".jpg", ".jpeg", ".webp"];
2
- export default function isImage(file) {
3
- if (typeof file === "string") {
4
- return imageExtensions.some((ext) => file.endsWith(ext));
5
- }
6
- if (file instanceof File) {
7
- return imageExtensions.some((ext) => file.name.endsWith(ext));
8
- }
9
- return false;
10
- }
@@ -1 +0,0 @@
1
- export default function isVideo(file: File | string): boolean;
@@ -1,10 +0,0 @@
1
- const videoExtensions = [".mp4"];
2
- export default function isVideo(file) {
3
- if (typeof file === "string") {
4
- return videoExtensions.some((ext) => file.endsWith(ext));
5
- }
6
- if (file instanceof File) {
7
- return videoExtensions.some((ext) => file.name.endsWith(ext));
8
- }
9
- return false;
10
- }
@@ -1,31 +0,0 @@
1
- import { type ReactElement, type ReactNode, type Ref } from "react";
2
- export interface FileSelectProps {
3
- uploadAFileText?: string;
4
- orDragAndDropText?: string;
5
- upToText?: string;
6
- anyFileText?: string;
7
- dropFilesHereText?: string;
8
- uploadingText?: string;
9
- maxFileSize?: number | string;
10
- allowedFileTypes?: string[];
11
- id?: string;
12
- limit?: number;
13
- onAcceptFiles: (files: File[]) => void;
14
- onRejectFiles?: (files: File[], reason: "type" | "size") => void;
15
- helperText?: string;
16
- className?: string;
17
- error?: boolean;
18
- icon?: ReactElement<{
19
- className?: string;
20
- }>;
21
- uploading?: boolean;
22
- disabled?: boolean;
23
- additionalBottomInfo?: ReactNode;
24
- ref?: Ref<HTMLInputElement>;
25
- innerClassName?: string;
26
- }
27
- declare function FileSelect({ maxFileSize, allowedFileTypes, id, limit, onAcceptFiles, className, uploadAFileText, orDragAndDropText, upToText, anyFileText, dropFilesHereText, uploadingText, icon, uploading, disabled, additionalBottomInfo, onRejectFiles, error, ref, innerClassName, }: FileSelectProps): import("react").JSX.Element;
28
- export default FileSelect;
29
- export declare function FileSelectProvider({ children }: {
30
- children: ReactNode;
31
- }): import("react").JSX.Element;
@@ -1,146 +0,0 @@
1
- import { cloneElement, useCallback, useEffect, useId, useState, } from "react";
2
- import clsx from "../../utils/clsx";
3
- import { DndProvider, useDrop } from "react-dnd";
4
- import { HTML5Backend, NativeTypes } from "react-dnd-html5-backend";
5
- import numeral from "numeral";
6
- import { ArrowUpTrayIcon } from "@heroicons/react/24/solid";
7
- import { DocumentIcon } from "@heroicons/react/24/outline";
8
- import Loading from "../Loading";
9
- import { uniq } from "lodash-es";
10
- const translateAllowedType = (type) => ({
11
- "image/png": "PNG",
12
- ".png": "PNG",
13
- "image/jpeg": "JPG",
14
- ".jpg": "JPG",
15
- ".jpeg": "JPG",
16
- ".gif": "GIF",
17
- "image/gif": "GIF",
18
- "video/mp4": "MP4",
19
- ".mp4": "MP4",
20
- ".csv": "CSV",
21
- "audio/mpeg": "MP3",
22
- "application/pdf": "PDF",
23
- "text/csv": "CSV",
24
- "application/msword": "DOC",
25
- "application/vnd.openxmlformats-officedocument.wordprocessingml.document": "DOCX",
26
- "application/vnd.openxmlformats-officedocument.presentationml.presentation": "PPTX",
27
- ".webp": "WEBP",
28
- "image/webp": "WEBP",
29
- })[type] || type;
30
- const defaultIcon = <DocumentIcon />;
31
- function checkAllowedFileTypesFn(file, allowedFileTypes) {
32
- return (!allowedFileTypes ||
33
- allowedFileTypes.includes(file.type) ||
34
- allowedFileTypes.some((t) => file.name.endsWith(t)));
35
- }
36
- function FileSelect({ maxFileSize, allowedFileTypes, id, limit, onAcceptFiles, className, uploadAFileText = "Upload a file", orDragAndDropText = "or drag and drop", upToText = "up to", anyFileText = "Any file", dropFilesHereText = "Drop files here", uploadingText = "Uploading...", icon = defaultIcon, uploading, disabled, additionalBottomInfo, onRejectFiles, error, ref, innerClassName, }) {
37
- const innerId = useId();
38
- id = id || innerId;
39
- maxFileSize =
40
- typeof maxFileSize === "string"
41
- ? numeral(maxFileSize).value() || undefined
42
- : maxFileSize;
43
- maxFileSize = maxFileSize || numeral("10MB").value() || undefined;
44
- const checkAllowedFileTypes = useCallback((file) => checkAllowedFileTypesFn(file, allowedFileTypes), [allowedFileTypes]);
45
- const handleFileBrowse = (event) => {
46
- if (!event.target.files) {
47
- throw Error("Files is falsy");
48
- }
49
- const files = Array.from(event.target.files);
50
- const acceptedFiles = files.filter((file) => checkAllowedFileTypes(file) && file.size <= maxFileSize);
51
- if (onRejectFiles) {
52
- const rejectedFilesType = files.filter((file) => !checkAllowedFileTypes(file));
53
- if (rejectedFilesType.length) {
54
- onRejectFiles(rejectedFilesType, "type");
55
- }
56
- const rejectedFilesSize = files.filter((file) => file.size > maxFileSize);
57
- if (rejectedFilesSize.length) {
58
- onRejectFiles(rejectedFilesSize, "size");
59
- }
60
- }
61
- onAcceptFiles(acceptedFiles);
62
- event.target.value = "";
63
- };
64
- const [pasteEnabled, setPasteEnabled] = useState(false);
65
- useOnPasteFiles(pasteEnabled, onAcceptFiles, allowedFileTypes);
66
- const [{ canDrop, isOver }, drop] = useDrop(() => ({
67
- accept: [NativeTypes.FILE],
68
- drop(item) {
69
- if (!disabled) {
70
- let files = item.files;
71
- files = files.filter(checkAllowedFileTypes);
72
- onAcceptFiles(files);
73
- }
74
- },
75
- collect: (monitor) => ({
76
- isOver: monitor.isOver(),
77
- canDrop: monitor.canDrop(),
78
- }),
79
- }));
80
- return (<div ref={(ref) => {
81
- drop(ref);
82
- }} className={clsx("flex justify-center rounded-md border-2 border-dashed px-6 pt-5 pb-6", "border-zinc-300 hover:border-zinc-400 dark:border-zinc-700 dark:hover:border-zinc-600", "data-is-over:border-primary-300 data-is-over:dark:border-primary-700", "data-disabled:cursor-not-allowed data-disabled:border-zinc-200", "data-error:border-error-500", className)} data-is-over={isOver || undefined} data-error={error || undefined} data-disabled={disabled || undefined} onMouseMove={!disabled ? () => setPasteEnabled(true) : undefined} onMouseOut={!disabled ? () => setPasteEnabled(false) : undefined}>
83
- {uploading ? (<div className={clsx("flex flex-col items-center justify-center gap-2 text-center", innerClassName)}>
84
- <Loading className={clsx("h-10 w-10", {
85
- "text-primary-500": isOver,
86
- })}/>
87
- <div>{uploadingText}</div>
88
- </div>) : !canDrop || disabled ? (<div className={clsx("relative flex flex-col items-center justify-center gap-2 text-center", innerClassName)}>
89
- <div className="relative flex flex-col items-center justify-center gap-2 text-center">
90
- {cloneElement(icon, {
91
- className: clsx("mx-auto h-12 w-12 text-zinc-400", icon.props.className),
92
- })}
93
- <div className="text-sm">
94
- <label htmlFor={id} className={clsx("text-primary-600 focus-within:ring-primary-500 hover:text-primary-500 relative rounded-md font-medium focus-within:ring-2 focus-within:ring-offset-2 focus-within:outline-hidden dark:ring-offset-slate-900", {
95
- "cursor-pointer": !disabled,
96
- "cursor-not-allowed": disabled,
97
- })}>
98
- <span>{uploadAFileText}</span>
99
- {!disabled && (<input id={id} name={id} type="file" className="sr-only" accept={allowedFileTypes?.join(",")} onChange={handleFileBrowse} multiple={limit !== 1} ref={ref}/>)}
100
- </label>
101
- <span className="pl-1">{orDragAndDropText}</span>
102
- </div>
103
- <p className="text-xs text-zinc-500">
104
- {allowedFileTypes
105
- ? uniq(allowedFileTypes.map(translateAllowedType)).join(", ")
106
- : anyFileText}{" "}
107
- {upToText} {numeral(maxFileSize).format("0b")}
108
- </p>
109
- </div>
110
- {additionalBottomInfo}
111
- </div>) : (<div className={clsx("flex flex-col items-center justify-center gap-2 text-center", innerClassName)}>
112
- <ArrowUpTrayIcon className={clsx("w-10 text-7xl", {
113
- "text-primary-500": isOver,
114
- })}/>
115
- <div>{dropFilesHereText}</div>
116
- </div>)}
117
- </div>);
118
- }
119
- export default FileSelect;
120
- const useOnPasteFiles = (enabled, onAcceptFiles, allowedFileTypes) => {
121
- useEffect(() => {
122
- if (enabled) {
123
- document.onpaste = function (event) {
124
- const items =
125
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
126
- (event.clipboardData || event.originalEvent.clipboardData)
127
- .items;
128
- for (const index in items) {
129
- const item = items[index];
130
- if (item.kind === "file") {
131
- const file = item.getAsFile();
132
- if (checkAllowedFileTypesFn(file, allowedFileTypes)) {
133
- onAcceptFiles([file]);
134
- }
135
- }
136
- }
137
- };
138
- return () => {
139
- document.onpaste = null;
140
- };
141
- }
142
- }, [allowedFileTypes, enabled, onAcceptFiles]);
143
- };
144
- export function FileSelectProvider({ children }) {
145
- return <DndProvider backend={HTML5Backend}>{children}</DndProvider>;
146
- }
@@ -1,3 +0,0 @@
1
- import FileSelect from "./FileSelect";
2
- export * from "./FileSelect";
3
- export default FileSelect;
@@ -1,3 +0,0 @@
1
- import FileSelect from "./FileSelect";
2
- export * from "./FileSelect";
3
- export default FileSelect;
@@ -1,19 +0,0 @@
1
- import { type ReactElement, type ReactNode } from "react";
2
- export type FooterProps = {
3
- main?: {
4
- name: string;
5
- href: string;
6
- }[];
7
- social?: {
8
- name: string;
9
- href: string;
10
- icon: ReactElement<{
11
- className: string;
12
- "aria-hidden": string;
13
- }>;
14
- }[];
15
- companyName: ReactNode;
16
- allRightsReserved?: string;
17
- children: ReactNode;
18
- };
19
- export default function Footer({ main, social, companyName, allRightsReserved, children, }: FooterProps): import("react").JSX.Element;
@@ -1,30 +0,0 @@
1
- import { cloneElement } from "react";
2
- const CURRENT_YEAR = new Date().getFullYear();
3
- export default function Footer({ main, social, companyName, allRightsReserved = "All rights reserved", children, }) {
4
- return (<>
5
- <div className="flex min-h-screen flex-col">{children}</div>
6
- <footer className="border-t border-slate-900/5 bg-white dark:border-slate-50/5 dark:bg-zinc-900">
7
- <div className="mx-auto max-w-7xl overflow-hidden px-4 py-12 sm:px-6 lg:px-8">
8
- {main && (<nav className="-mx-5 -my-2 mb-8 flex flex-wrap justify-center" aria-label="Footer">
9
- {main.map((item) => (<div key={item.name} className="px-5 py-2">
10
- <a href={item.href} className="text-base text-zinc-500 hover:text-zinc-900">
11
- {item.name}
12
- </a>
13
- </div>))}
14
- </nav>)}
15
- {social && (<div className="mb-8 flex justify-center space-x-6">
16
- {social.map((item) => (<a key={item.name} href={item.href} className="text-zinc-400 hover:text-zinc-500">
17
- <span className="sr-only">{item.name}</span>
18
- {cloneElement(item.icon, {
19
- className: "h-6 w-6",
20
- "aria-hidden": "true",
21
- })}
22
- </a>))}
23
- </div>)}
24
- <p className="text-center text-base text-zinc-400">
25
- {companyName} &copy; {CURRENT_YEAR}. {allRightsReserved}.
26
- </p>
27
- </div>
28
- </footer>
29
- </>);
30
- }
@@ -1,3 +0,0 @@
1
- import Footer from "./Footer";
2
- export * from "./Footer";
3
- export default Footer;
@@ -1,3 +0,0 @@
1
- import Footer from "./Footer";
2
- export * from "./Footer";
3
- export default Footer;
@@ -1,2 +0,0 @@
1
- import { type SVGProps } from "react";
2
- export default function GridPattern(props: SVGProps<SVGPatternElement>): import("react").JSX.Element;
@@ -1,12 +0,0 @@
1
- import { useId } from "react";
2
- export default function GridPattern(props) {
3
- const patternId = useId();
4
- return (<svg aria-hidden="true" className="absolute inset-0 h-full w-full">
5
- <defs>
6
- <pattern id={patternId} width="32" height="32" patternUnits="userSpaceOnUse" {...props}>
7
- <path d="M0 32V.5H32" fill="none" stroke="currentColor"/>
8
- </pattern>
9
- </defs>
10
- <rect width="100%" height="100%" fill={`url(#${patternId})`}/>
11
- </svg>);
12
- }
@@ -1,3 +0,0 @@
1
- import GridPattern from "./GridPattern";
2
- export * from "./GridPattern";
3
- export default GridPattern;
@@ -1,3 +0,0 @@
1
- import GridPattern from "./GridPattern";
2
- export * from "./GridPattern";
3
- export default GridPattern;
@@ -1,5 +0,0 @@
1
- import type { DetailedHTMLProps, HTMLAttributes } from "react";
2
- export type GroupProps = {
3
- wrap?: boolean;
4
- } & DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>;
5
- export default function Group({ wrap, className, ...props }: GroupProps): import("react").JSX.Element;
@@ -1,6 +0,0 @@
1
- import clsx from "../../utils/clsx";
2
- export default function Group({ wrap, className, ...props }) {
3
- return (<div {...props} className={clsx("flex gap-2", {
4
- "flex-wrap": wrap,
5
- }, className)}/>);
6
- }
@@ -1,3 +0,0 @@
1
- import Group from "./Group";
2
- export * from "./Group";
3
- export default Group;
@@ -1,3 +0,0 @@
1
- import Group from "./Group";
2
- export * from "./Group";
3
- export default Group;
@@ -1,5 +0,0 @@
1
- import { type DetailedHTMLProps, type HTMLAttributes } from "react";
2
- export type HeaderProps = {
3
- hideOnScroll?: boolean;
4
- } & DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
5
- export default function Header({ className, hideOnScroll, ...props }: HeaderProps): import("react").JSX.Element;
@@ -1,19 +0,0 @@
1
- import clsx from "../../utils/clsx";
2
- import { useScrollYMovement } from "../../hooks/useScroll";
3
- import { useEffect, useRef, } from "react";
4
- import useMediaQuery from "../../hooks/useMediaQuery";
5
- export default function Header({ className, hideOnScroll, ...props }) {
6
- const ref = useRef(null);
7
- const isMobile = useMediaQuery(`(max-width: 768px)`);
8
- useScrollYMovement(74, (scrollYMovement) => {
9
- if (ref.current) {
10
- ref.current.style.transform = `translateY(-${scrollYMovement}px)`;
11
- }
12
- }, !hideOnScroll && !isMobile);
13
- useEffect(() => {
14
- if (ref.current) {
15
- ref.current.style.transform = "";
16
- }
17
- }, [isMobile]);
18
- return (<header ref={ref} {...props} className={clsx("scrolled:shadow-md fixed top-0 z-20 flex h-16 w-full items-center px-2.5 shadow-none shadow-slate-900/5 ring-offset-zinc-100 transition-colors duration-500 sm:px-4 md:px-6", "bg-white/95 backdrop-blur-sm [@supports(backdrop-filter:blur(0))]:bg-white/75", "dark:bg-zinc-900/95 dark:[@supports(backdrop-filter:blur(0))]:bg-zinc-900/75", "not-scrolled:bg-transparent!", className)}/>);
19
- }
@@ -1,3 +0,0 @@
1
- import Header from "./Header";
2
- export * from "./Header";
3
- export default Header;
@@ -1,3 +0,0 @@
1
- import Header from "./Header";
2
- export * from "./Header";
3
- export default Header;
@@ -1,4 +0,0 @@
1
- import type { ComponentProps } from "react";
2
- import FileInput from "../FileInput";
3
- declare function ImageInput<PFP extends object>({ icon, uploadAFileText, allowedFileTypes, fileDisplay, ...props }: ComponentProps<typeof FileInput<PFP>>): import("react").JSX.Element;
4
- export default ImageInput;
@@ -1,8 +0,0 @@
1
- import FileInput from "../FileInput";
2
- const defaultIcon = (<svg stroke="currentColor" fill="none" viewBox="0 0 48 48" aria-hidden="true">
3
- <path d="M28 8H12a4 4 0 00-4 4v20m32-12v8m0 0v8a4 4 0 01-4 4H12a4 4 0 01-4-4v-4m32-4l-3.172-3.172a4 4 0 00-5.656 0L28 28M8 32l9.172-9.172a4 4 0 015.656 0L28 28m0 0l4 4m4-24h8m-4-4v8m-12 4h.02" strokeWidth={2} strokeLinecap="round" strokeLinejoin="round"/>
4
- </svg>);
5
- function ImageInput({ icon = defaultIcon, uploadAFileText = "Upload an image", allowedFileTypes = [".png", ".jpg", ".jpeg", ".webp"], fileDisplay = "preview", ...props }) {
6
- return (<FileInput {...props} icon={icon} uploadAFileText={uploadAFileText} allowedFileTypes={allowedFileTypes} fileDisplay={fileDisplay}/>);
7
- }
8
- export default ImageInput;
@@ -1,3 +0,0 @@
1
- import ImageInput from "./ImageInput";
2
- export * from "./ImageInput";
3
- export default ImageInput;
@@ -1,3 +0,0 @@
1
- import ImageInput from "./ImageInput";
2
- export * from "./ImageInput";
3
- export default ImageInput;
@@ -1,14 +0,0 @@
1
- import { type UnstyledInputProps } from "../Input/UnstyledInput";
2
- export type InputProps<Select extends boolean | undefined> = {
3
- loading?: boolean;
4
- } & UnstyledInputProps<Select>;
5
- export declare const defaultLabelClassName: string;
6
- export declare const defaultInputClassNameUncolored = "block w-full rounded-md shadow-xs sm:text-sm data-disabled:cursor-not-allowed dark:bg-zinc-800 dark:placeholder:text-zinc-500 px-2.5";
7
- export declare const defaultInputClassName: string;
8
- export declare const defaultHelpTextClassName: string;
9
- export declare const defaultTrailingClassName = "pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2.5 text-zinc-500 text-sm";
10
- export declare const defaultLeadingClassName = "pointer-events-none absolute inset-y-0 left-0 flex items-center pl-2.5 text-zinc-500 text-sm";
11
- export declare const defaultLeadingInputClassName = "pl-10";
12
- export declare const defaultTrailingInputClassName = "pr-10";
13
- declare function Input<Select extends boolean | undefined>({ error, trailing, labelClassName, inputClassName, helpTextClassName, trailingClassName, leadingClassName, leadingInputClassName, trailingInputClassName, required, label, loading, readOnly, children, disabled, helpText, ref, ...props }: InputProps<Select>): import("react").JSX.Element;
14
- export default Input;