@majapisoftwares/ui 4.3.17 → 5.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 (482) hide show
  1. package/AGENTS.md +17 -0
  2. package/README.md +71 -0
  3. package/THIRD_PARTY_NOTICES.md +15 -0
  4. package/components.json +25 -0
  5. package/docs/MIGRATION-0.2.md +20 -0
  6. package/docs/NEXT-STARTER-VALIDATION.md +14 -0
  7. package/docs/STANDARDS.md +36 -0
  8. package/docs/VALIDATION.md +11 -0
  9. package/package.json +69 -2
  10. package/scripts/check-standards.mjs +39 -0
  11. package/src/components/ui/alert.tsx +77 -0
  12. package/src/components/ui/badge.tsx +55 -0
  13. package/src/components/ui/button.tsx +63 -0
  14. package/src/components/ui/empty.tsx +105 -0
  15. package/src/components/ui/field.tsx +238 -0
  16. package/src/components/ui/input.tsx +21 -0
  17. package/src/components/ui/label.tsx +19 -0
  18. package/src/components/ui/native-select.tsx +66 -0
  19. package/src/components/ui/separator.tsx +24 -0
  20. package/src/components/ui/sheet.tsx +137 -0
  21. package/src/components/ui/skeleton.tsx +15 -0
  22. package/src/components/ui/table.tsx +115 -0
  23. package/src/components/ui/tabs.tsx +81 -0
  24. package/src/lib/utils.ts +1 -0
  25. package/src/patterns/app-shell.tsx +70 -0
  26. package/src/patterns/data-table.tsx +225 -0
  27. package/src/patterns/details-sheet.tsx +51 -0
  28. package/src/patterns/page-header.tsx +40 -0
  29. package/src/patterns/status-badge.tsx +23 -0
  30. package/src/styles.css +465 -0
  31. package/src/templates/admin-dashboard.tsx +63 -0
  32. package/src/templates/auth-layout.tsx +36 -0
  33. package/src/templates/login-form.tsx +97 -0
  34. package/src/templates/signup-form.tsx +137 -0
  35. package/src/vite-env.d.ts +1 -0
  36. package/base.css +0 -360
  37. package/bootstrap/AppProps.d.ts +0 -9
  38. package/bootstrap/AppProps.js +0 -1
  39. package/bootstrap/index.d.ts +0 -1
  40. package/bootstrap/index.js +0 -1
  41. package/bootstrap/modeScript.d.ts +0 -2
  42. package/bootstrap/modeScript.js +0 -35
  43. package/bootstrap/nprogress.d.ts +0 -1
  44. package/bootstrap/nprogress.js +0 -19
  45. package/bootstrap/scrolledScript.d.ts +0 -2
  46. package/bootstrap/scrolledScript.js +0 -27
  47. package/bootstrap/setupFocusManager.d.ts +0 -1
  48. package/bootstrap/setupFocusManager.js +0 -13
  49. package/bootstrap/suppressConsoleLog.d.ts +0 -1
  50. package/bootstrap/suppressConsoleLog.js +0 -8
  51. package/components/Accordion/Accordion.d.ts +0 -16
  52. package/components/Accordion/Accordion.jsx +0 -27
  53. package/components/Accordion/index.d.ts +0 -3
  54. package/components/Accordion/index.jsx +0 -3
  55. package/components/Alert/Alert.d.ts +0 -31
  56. package/components/Alert/Alert.jsx +0 -53
  57. package/components/Alert/index.d.ts +0 -3
  58. package/components/Alert/index.jsx +0 -3
  59. package/components/AntiClickjacking/AntiClickjacking.d.ts +0 -1
  60. package/components/AntiClickjacking/AntiClickjacking.jsx +0 -17
  61. package/components/AntiClickjacking/index.d.ts +0 -2
  62. package/components/AntiClickjacking/index.jsx +0 -2
  63. package/components/Aurora/Aurora.d.ts +0 -10
  64. package/components/Aurora/Aurora.jsx +0 -189
  65. package/components/Aurora/index.d.ts +0 -3
  66. package/components/Aurora/index.jsx +0 -3
  67. package/components/Autocomplete/Autocomplete.d.ts +0 -7
  68. package/components/Autocomplete/Autocomplete.jsx +0 -23
  69. package/components/Autocomplete/UnstyledAutocomplete.d.ts +0 -36
  70. package/components/Autocomplete/UnstyledAutocomplete.jsx +0 -72
  71. package/components/Autocomplete/index.d.ts +0 -5
  72. package/components/Autocomplete/index.jsx +0 -5
  73. package/components/BackgroundEffects/BottomBlurryPoint.d.ts +0 -3
  74. package/components/BackgroundEffects/BottomBlurryPoint.jsx +0 -14
  75. package/components/BackgroundEffects/TopBlurryPoint.d.ts +0 -3
  76. package/components/BackgroundEffects/TopBlurryPoint.jsx +0 -14
  77. package/components/Badge/Badge.d.ts +0 -42
  78. package/components/Badge/Badge.jsx +0 -51
  79. package/components/Badge/index.d.ts +0 -3
  80. package/components/Badge/index.jsx +0 -3
  81. package/components/Breadcrumbs/Breadcrumbs.d.ts +0 -20
  82. package/components/Breadcrumbs/Breadcrumbs.jsx +0 -42
  83. package/components/Breadcrumbs/index.d.ts +0 -3
  84. package/components/Breadcrumbs/index.jsx +0 -3
  85. package/components/Button/Button.d.ts +0 -111
  86. package/components/Button/Button.jsx +0 -129
  87. package/components/Button/UnstyledButton.d.ts +0 -10
  88. package/components/Button/UnstyledButton.jsx +0 -13
  89. package/components/Button/index.d.ts +0 -3
  90. package/components/Button/index.jsx +0 -3
  91. package/components/Carousel/Carousel.d.ts +0 -19
  92. package/components/Carousel/Carousel.jsx +0 -55
  93. package/components/Carousel/index.d.ts +0 -3
  94. package/components/Carousel/index.jsx +0 -3
  95. package/components/Checkbox/Checkbox.d.ts +0 -14
  96. package/components/Checkbox/Checkbox.jsx +0 -45
  97. package/components/Checkbox/index.d.ts +0 -3
  98. package/components/Checkbox/index.js +0 -3
  99. package/components/Code/Code.d.ts +0 -12
  100. package/components/Code/Code.jsx +0 -25
  101. package/components/Code/Json.d.ts +0 -5
  102. package/components/Code/Json.jsx +0 -7
  103. package/components/Code/index.d.ts +0 -4
  104. package/components/Code/index.jsx +0 -4
  105. package/components/ConfirmationButton/ConfirmationButton.d.ts +0 -17
  106. package/components/ConfirmationButton/ConfirmationButton.jsx +0 -13
  107. package/components/ConfirmationButton/index.d.ts +0 -3
  108. package/components/ConfirmationButton/index.jsx +0 -3
  109. package/components/ContextMenu/ContextMenu.d.ts +0 -28
  110. package/components/ContextMenu/ContextMenu.jsx +0 -70
  111. package/components/ContextMenu/index.d.ts +0 -3
  112. package/components/ContextMenu/index.jsx +0 -3
  113. package/components/CopyButton/CopyButton.d.ts +0 -7
  114. package/components/CopyButton/CopyButton.jsx +0 -29
  115. package/components/CopyButton/index.d.ts +0 -3
  116. package/components/CopyButton/index.jsx +0 -3
  117. package/components/DateInput/DateInput.d.ts +0 -6
  118. package/components/DateInput/DateInput.jsx +0 -19
  119. package/components/DateInput/DateTimeInput.d.ts +0 -3
  120. package/components/DateInput/DateTimeInput.jsx +0 -8
  121. package/components/DateInput/index.d.ts +0 -4
  122. package/components/DateInput/index.jsx +0 -4
  123. package/components/DateInput/useRefValue.d.ts +0 -5
  124. package/components/DateInput/useRefValue.js +0 -48
  125. package/components/DatePicker/DatePicker.d.ts +0 -19
  126. package/components/DatePicker/DatePicker.jsx +0 -55
  127. package/components/DatePicker/index.d.ts +0 -3
  128. package/components/DatePicker/index.jsx +0 -3
  129. package/components/DateRangePicker/DateRangePicker.d.ts +0 -16
  130. package/components/DateRangePicker/DateRangePicker.jsx +0 -56
  131. package/components/DateRangePicker/index.d.ts +0 -3
  132. package/components/DateRangePicker/index.jsx +0 -3
  133. package/components/Dialog/Dialog.d.ts +0 -25
  134. package/components/Dialog/Dialog.jsx +0 -35
  135. package/components/Dialog/Dialogs.d.ts +0 -1
  136. package/components/Dialog/Dialogs.jsx +0 -21
  137. package/components/Dialog/dialogs.state.d.ts +0 -21
  138. package/components/Dialog/dialogs.state.js +0 -40
  139. package/components/Dialog/index.d.ts +0 -6
  140. package/components/Dialog/index.jsx +0 -7
  141. package/components/Drawer/Drawer.d.ts +0 -15
  142. package/components/Drawer/Drawer.jsx +0 -72
  143. package/components/Drawer/index.d.ts +0 -3
  144. package/components/Drawer/index.jsx +0 -3
  145. package/components/DropdownMenu/DropdownMenu.d.ts +0 -33
  146. package/components/DropdownMenu/DropdownMenu.jsx +0 -74
  147. package/components/DropdownMenu/index.d.ts +0 -3
  148. package/components/DropdownMenu/index.jsx +0 -3
  149. package/components/ErrorBoundary/ErrorBoundary.d.ts +0 -18
  150. package/components/ErrorBoundary/ErrorBoundary.jsx +0 -32
  151. package/components/ErrorBoundary/index.d.ts +0 -3
  152. package/components/ErrorBoundary/index.jsx +0 -3
  153. package/components/ErrorPage/Error404Page.d.ts +0 -1
  154. package/components/ErrorPage/Error404Page.jsx +0 -4
  155. package/components/ErrorPage/Error500Page.d.ts +0 -1
  156. package/components/ErrorPage/Error500Page.jsx +0 -4
  157. package/components/ErrorPage/ErrorPage.d.ts +0 -11
  158. package/components/ErrorPage/ErrorPage.jsx +0 -23
  159. package/components/FileInput/FileInput.d.ts +0 -53
  160. package/components/FileInput/FileInput.jsx +0 -141
  161. package/components/FileInput/PreviewFile.d.ts +0 -18
  162. package/components/FileInput/PreviewFile.jsx +0 -54
  163. package/components/FileInput/index.d.ts +0 -3
  164. package/components/FileInput/index.jsx +0 -3
  165. package/components/FileInput/isImage.d.ts +0 -1
  166. package/components/FileInput/isImage.js +0 -10
  167. package/components/FileInput/isVideo.d.ts +0 -1
  168. package/components/FileInput/isVideo.js +0 -10
  169. package/components/FileSelect/FileSelect.d.ts +0 -31
  170. package/components/FileSelect/FileSelect.jsx +0 -146
  171. package/components/FileSelect/index.d.ts +0 -3
  172. package/components/FileSelect/index.jsx +0 -3
  173. package/components/Footer/Footer.d.ts +0 -19
  174. package/components/Footer/Footer.jsx +0 -30
  175. package/components/Footer/index.d.ts +0 -3
  176. package/components/Footer/index.jsx +0 -3
  177. package/components/GridPattern/GridPattern.d.ts +0 -2
  178. package/components/GridPattern/GridPattern.jsx +0 -12
  179. package/components/GridPattern/index.d.ts +0 -3
  180. package/components/GridPattern/index.jsx +0 -3
  181. package/components/Group/Group.d.ts +0 -5
  182. package/components/Group/Group.jsx +0 -6
  183. package/components/Group/index.d.ts +0 -3
  184. package/components/Group/index.jsx +0 -3
  185. package/components/Header/Header.d.ts +0 -5
  186. package/components/Header/Header.jsx +0 -19
  187. package/components/Header/index.d.ts +0 -3
  188. package/components/Header/index.jsx +0 -3
  189. package/components/ImageInput/ImageInput.d.ts +0 -4
  190. package/components/ImageInput/ImageInput.jsx +0 -8
  191. package/components/ImageInput/index.d.ts +0 -3
  192. package/components/ImageInput/index.jsx +0 -3
  193. package/components/Input/Input.d.ts +0 -14
  194. package/components/Input/Input.jsx +0 -57
  195. package/components/Input/InputIcon.d.ts +0 -9
  196. package/components/Input/InputIcon.jsx +0 -7
  197. package/components/Input/MultiSelectInput.d.ts +0 -16
  198. package/components/Input/MultiSelectInput.jsx +0 -48
  199. package/components/Input/NumericInput.d.ts +0 -6
  200. package/components/Input/NumericInput.jsx +0 -6
  201. package/components/Input/PatternInput.d.ts +0 -6
  202. package/components/Input/PatternInput.jsx +0 -6
  203. package/components/Input/SelectInput.d.ts +0 -12
  204. package/components/Input/SelectInput.jsx +0 -25
  205. package/components/Input/UnstyledInput.d.ts +0 -22
  206. package/components/Input/UnstyledInput.jsx +0 -28
  207. package/components/Input/index.d.ts +0 -6
  208. package/components/Input/index.jsx +0 -6
  209. package/components/Input/useInputRefValue.d.ts +0 -11
  210. package/components/Input/useInputRefValue.jsx +0 -51
  211. package/components/Input2/InputWrapper.d.ts +0 -11
  212. package/components/Input2/InputWrapper.jsx +0 -11
  213. package/components/Link/Link.d.ts +0 -3
  214. package/components/Link/Link.jsx +0 -9
  215. package/components/Link/index.d.ts +0 -3
  216. package/components/Link/index.jsx +0 -3
  217. package/components/Loading/Loading.d.ts +0 -5
  218. package/components/Loading/Loading.jsx +0 -15
  219. package/components/Loading/index.d.ts +0 -3
  220. package/components/Loading/index.jsx +0 -3
  221. package/components/Magnet/Magnet.d.ts +0 -13
  222. package/components/Magnet/Magnet.jsx +0 -50
  223. package/components/Magnet/index.d.ts +0 -3
  224. package/components/Magnet/index.jsx +0 -3
  225. package/components/Markdown/Markdown.d.ts +0 -8
  226. package/components/Markdown/Markdown.jsx +0 -11
  227. package/components/Markdown/index.d.ts +0 -3
  228. package/components/Markdown/index.jsx +0 -3
  229. package/components/Menu/Menu.d.ts +0 -28
  230. package/components/Menu/Menu.jsx +0 -54
  231. package/components/Modal/Modal.d.ts +0 -45
  232. package/components/Modal/Modal.jsx +0 -65
  233. package/components/Modal/index.d.ts +0 -4
  234. package/components/Modal/index.jsx +0 -4
  235. package/components/Modal/useModalState.d.ts +0 -6
  236. package/components/Modal/useModalState.js +0 -16
  237. package/components/ModeToggle/ModeToggle.d.ts +0 -9
  238. package/components/ModeToggle/ModeToggle.jsx +0 -12
  239. package/components/ModeToggle/index.d.ts +0 -4
  240. package/components/ModeToggle/index.jsx +0 -5
  241. package/components/ModeToggle/useModeToggle.d.ts +0 -1
  242. package/components/ModeToggle/useModeToggle.js +0 -21
  243. package/components/MultiSelect/MultiSelect.d.ts +0 -28
  244. package/components/MultiSelect/MultiSelect.jsx +0 -116
  245. package/components/MultiSelect/MultiSelectInput.d.ts +0 -12
  246. package/components/MultiSelect/MultiSelectInput.jsx +0 -27
  247. package/components/MultiSelect/index.d.ts +0 -5
  248. package/components/MultiSelect/index.jsx +0 -5
  249. package/components/MultiText/MultiText.d.ts +0 -23
  250. package/components/MultiText/MultiText.jsx +0 -118
  251. package/components/MultiText/index.d.ts +0 -3
  252. package/components/MultiText/index.jsx +0 -3
  253. package/components/NavigationDrawer/NavigationDrawer.d.ts +0 -9
  254. package/components/NavigationDrawer/NavigationDrawer.jsx +0 -29
  255. package/components/NavigationDrawer/NavigationItem.d.ts +0 -13
  256. package/components/NavigationDrawer/NavigationItem.jsx +0 -24
  257. package/components/NavigationDrawer/index.d.ts +0 -6
  258. package/components/NavigationDrawer/index.jsx +0 -6
  259. package/components/NavigationDrawer/navigationDrawer.state.d.ts +0 -9
  260. package/components/NavigationDrawer/navigationDrawer.state.js +0 -19
  261. package/components/NoSsr/NoSsr.d.ts +0 -4
  262. package/components/NoSsr/NoSsr.jsx +0 -8
  263. package/components/NoSsr/index.d.ts +0 -3
  264. package/components/NoSsr/index.jsx +0 -3
  265. package/components/Noise/Noise.d.ts +0 -11
  266. package/components/Noise/Noise.jsx +0 -69
  267. package/components/Noise/index.d.ts +0 -3
  268. package/components/Noise/index.jsx +0 -3
  269. package/components/Notifications/Notifications.d.ts +0 -3
  270. package/components/Notifications/Notifications.jsx +0 -60
  271. package/components/Notifications/index.d.ts +0 -5
  272. package/components/Notifications/index.jsx +0 -6
  273. package/components/Notifications/notifications.state.d.ts +0 -24
  274. package/components/Notifications/notifications.state.js +0 -41
  275. package/components/Orb/Orb.d.ts +0 -8
  276. package/components/Orb/Orb.jsx +0 -258
  277. package/components/Orb/index.d.ts +0 -3
  278. package/components/Orb/index.jsx +0 -3
  279. package/components/Pagination/Pagination.d.ts +0 -13
  280. package/components/Pagination/Pagination.jsx +0 -64
  281. package/components/Pagination/index.d.ts +0 -3
  282. package/components/Pagination/index.jsx +0 -3
  283. package/components/Particles/Particles.d.ts +0 -18
  284. package/components/Particles/Particles.jsx +0 -205
  285. package/components/Particles/index.d.ts +0 -3
  286. package/components/Particles/index.jsx +0 -3
  287. package/components/PictureCropInput/PictureCropInput.d.ts +0 -20
  288. package/components/PictureCropInput/PictureCropInput.jsx +0 -174
  289. package/components/PictureCropInput/canvasPreview.d.ts +0 -2
  290. package/components/PictureCropInput/canvasPreview.js +0 -37
  291. package/components/PictureCropInput/index.d.ts +0 -3
  292. package/components/PictureCropInput/index.js +0 -3
  293. package/components/Popover/Popover.d.ts +0 -13
  294. package/components/Popover/Popover.jsx +0 -22
  295. package/components/Popover/index.d.ts +0 -3
  296. package/components/Popover/index.jsx +0 -3
  297. package/components/Resizable/Resizable.d.ts +0 -12
  298. package/components/Resizable/Resizable.jsx +0 -54
  299. package/components/Resizable/index.d.ts +0 -3
  300. package/components/Resizable/index.jsx +0 -3
  301. package/components/ScrollArea/ScrollArea.d.ts +0 -9
  302. package/components/ScrollArea/ScrollArea.jsx +0 -16
  303. package/components/ScrollArea/index.d.ts +0 -3
  304. package/components/ScrollArea/index.jsx +0 -3
  305. package/components/Select/Select.d.ts +0 -25
  306. package/components/Select/Select.jsx +0 -55
  307. package/components/Select/index.d.ts +0 -3
  308. package/components/Select/index.jsx +0 -3
  309. package/components/Skeleton/Skeleton.d.ts +0 -2
  310. package/components/Skeleton/Skeleton.jsx +0 -8
  311. package/components/Skeleton/index.d.ts +0 -3
  312. package/components/Skeleton/index.jsx +0 -3
  313. package/components/Slider/Slider.d.ts +0 -10
  314. package/components/Slider/Slider.jsx +0 -21
  315. package/components/Slider/index.d.ts +0 -3
  316. package/components/Slider/index.jsx +0 -3
  317. package/components/Spotlight/Spotlight.d.ts +0 -30
  318. package/components/Spotlight/Spotlight.jsx +0 -86
  319. package/components/Spotlight/index.d.ts +0 -3
  320. package/components/Spotlight/index.jsx +0 -3
  321. package/components/SpotlightCard/SpotlightCard.d.ts +0 -7
  322. package/components/SpotlightCard/SpotlightCard.jsx +0 -35
  323. package/components/SpotlightCard/index.d.ts +0 -3
  324. package/components/SpotlightCard/index.jsx +0 -3
  325. package/components/Stack/Stack.d.ts +0 -4
  326. package/components/Stack/Stack.jsx +0 -5
  327. package/components/Stack/index.d.ts +0 -3
  328. package/components/Stack/index.jsx +0 -3
  329. package/components/StarBorder/StarBorder.d.ts +0 -10
  330. package/components/StarBorder/StarBorder.jsx +0 -19
  331. package/components/StarBorder/index.d.ts +0 -3
  332. package/components/StarBorder/index.jsx +0 -3
  333. package/components/Switch/Switch.d.ts +0 -16
  334. package/components/Switch/Switch.jsx +0 -24
  335. package/components/Switch/index.d.ts +0 -3
  336. package/components/Switch/index.jsx +0 -3
  337. package/components/Table/DataTable.d.ts +0 -57
  338. package/components/Table/DataTable.jsx +0 -155
  339. package/components/Table/Table.d.ts +0 -27
  340. package/components/Table/Table.jsx +0 -31
  341. package/components/Table/TableActionButton.d.ts +0 -6
  342. package/components/Table/TableActionButton.jsx +0 -20
  343. package/components/Table/TableBody.d.ts +0 -6
  344. package/components/Table/TableBody.jsx +0 -10
  345. package/components/Table/TableCell.d.ts +0 -9
  346. package/components/Table/TableCell.jsx +0 -18
  347. package/components/Table/TableFooter.d.ts +0 -5
  348. package/components/Table/TableFooter.jsx +0 -5
  349. package/components/Table/TableFooterWithPagination.d.ts +0 -13
  350. package/components/Table/TableFooterWithPagination.jsx +0 -57
  351. package/components/Table/TableHead.d.ts +0 -5
  352. package/components/Table/TableHead.jsx +0 -9
  353. package/components/Table/TableHeadContext.d.ts +0 -4
  354. package/components/Table/TableHeadContext.jsx +0 -3
  355. package/components/Table/TableHeader.d.ts +0 -7
  356. package/components/Table/TableHeader.jsx +0 -15
  357. package/components/Table/TableRow.d.ts +0 -8
  358. package/components/Table/TableRow.jsx +0 -9
  359. package/components/Table/index.d.ts +0 -3
  360. package/components/Table/index.jsx +0 -3
  361. package/components/Tabs/Tabs.d.ts +0 -9
  362. package/components/Tabs/Tabs.jsx +0 -13
  363. package/components/Tabs/index.d.ts +0 -3
  364. package/components/Tabs/index.jsx +0 -3
  365. package/components/TabsSwitcher/Tab.d.ts +0 -15
  366. package/components/TabsSwitcher/Tab.jsx +0 -18
  367. package/components/TabsSwitcher/TabsSwitcher.d.ts +0 -22
  368. package/components/TabsSwitcher/TabsSwitcher.jsx +0 -31
  369. package/components/TabsSwitcher/index.d.ts +0 -4
  370. package/components/TabsSwitcher/index.jsx +0 -4
  371. package/components/Text/Text.d.ts +0 -24
  372. package/components/Text/Text.jsx +0 -29
  373. package/components/Text/index.d.ts +0 -3
  374. package/components/Text/index.jsx +0 -3
  375. package/components/Textarea/Textarea.d.ts +0 -5
  376. package/components/Textarea/Textarea.jsx +0 -6
  377. package/components/Textarea/index.d.ts +0 -3
  378. package/components/Textarea/index.js +0 -3
  379. package/components/Threads/Threads.d.ts +0 -9
  380. package/components/Threads/Threads.jsx +0 -203
  381. package/components/Threads/index.d.ts +0 -3
  382. package/components/Threads/index.jsx +0 -3
  383. package/components/Tooltip/Tooltip.d.ts +0 -11
  384. package/components/Tooltip/Tooltip.jsx +0 -21
  385. package/components/Tooltip/index.d.ts +0 -3
  386. package/components/Tooltip/index.jsx +0 -3
  387. package/components/VisibilityActivatedButton/VisibilityActivatedButton.d.ts +0 -7
  388. package/components/VisibilityActivatedButton/VisibilityActivatedButton.jsx +0 -18
  389. package/components/VisibilityActivatedButton/index.d.ts +0 -3
  390. package/components/VisibilityActivatedButton/index.jsx +0 -3
  391. package/form.d.ts +0 -82
  392. package/form.js +0 -113
  393. package/form2.d.ts +0 -15
  394. package/form2.jsx +0 -30
  395. package/hooks/useBeforeUnload.d.ts +0 -1
  396. package/hooks/useBeforeUnload.js +0 -17
  397. package/hooks/useDebounceEffect.d.ts +0 -2
  398. package/hooks/useDebounceEffect.js +0 -14
  399. package/hooks/useDebouncedValue.d.ts +0 -2
  400. package/hooks/useDebouncedValue.js +0 -14
  401. package/hooks/useLagRadar.d.ts +0 -1
  402. package/hooks/useLagRadar.jsx +0 -124
  403. package/hooks/useMediaQuery.d.ts +0 -1
  404. package/hooks/useMediaQuery.js +0 -37
  405. package/hooks/useMutationWindowCloseProtection.d.ts +0 -2
  406. package/hooks/useMutationWindowCloseProtection.js +0 -13
  407. package/hooks/useScroll.d.ts +0 -3
  408. package/hooks/useScroll.js +0 -47
  409. package/hooks/useTranslation.d.ts +0 -4
  410. package/hooks/useTranslation.js +0 -11
  411. package/hooks/useWhyDidYouUpdate.d.ts +0 -3
  412. package/hooks/useWhyDidYouUpdate.js +0 -44
  413. package/imgur.d.ts +0 -1
  414. package/imgur.js +0 -13
  415. package/styles/DayPicker.classNames.d.ts +0 -29
  416. package/styles/DayPicker.classNames.js +0 -30
  417. package/styles/DayPicker.classNames.ts +0 -81
  418. package/styles/Dropdown.classNames.d.ts +0 -6
  419. package/styles/Dropdown.classNames.js +0 -7
  420. package/styles/Dropdown.classNames.ts +0 -38
  421. package/styles/Input.css +0 -23
  422. package/styles/Modal.classNames.d.ts +0 -2
  423. package/styles/Modal.classNames.js +0 -3
  424. package/styles/Modal.classNames.ts +0 -15
  425. package/styles/MultiText.css +0 -40
  426. package/styles/Pagination.css +0 -19
  427. package/styles/Tabs.css +0 -23
  428. package/tsconfig.tsbuildinfo +0 -1
  429. package/types.d.ts +0 -6
  430. package/types.js +0 -1
  431. package/utils/UseState.d.ts +0 -2
  432. package/utils/UseState.js +0 -1
  433. package/utils/blobToText.d.ts +0 -1
  434. package/utils/blobToText.js +0 -13
  435. package/utils/capitalize.d.ts +0 -1
  436. package/utils/capitalize.js +0 -6
  437. package/utils/clsx.d.ts +0 -2
  438. package/utils/clsx.js +0 -5
  439. package/utils/copy2DToClipboard.d.ts +0 -1
  440. package/utils/copy2DToClipboard.js +0 -44
  441. package/utils/cpfCpnjUtils.d.ts +0 -3
  442. package/utils/cpfCpnjUtils.js +0 -43
  443. package/utils/createLocalStorageStateHydration.d.ts +0 -1
  444. package/utils/createLocalStorageStateHydration.js +0 -18
  445. package/utils/createStateHydration.d.ts +0 -3
  446. package/utils/createStateHydration.js +0 -49
  447. package/utils/csvBlobToJson.d.ts +0 -2
  448. package/utils/csvBlobToJson.js +0 -59
  449. package/utils/downloadArrayAsCSV.d.ts +0 -1
  450. package/utils/downloadArrayAsCSV.js +0 -34
  451. package/utils/emailRegExp.d.ts +0 -2
  452. package/utils/emailRegExp.js +0 -2
  453. package/utils/fakeArray.d.ts +0 -1
  454. package/utils/fakeArray.js +0 -3
  455. package/utils/filterBoolean.d.ts +0 -1
  456. package/utils/filterBoolean.js +0 -3
  457. package/utils/formatClock.d.ts +0 -1
  458. package/utils/formatClock.js +0 -21
  459. package/utils/getInitials.d.ts +0 -4
  460. package/utils/getInitials.js +0 -22
  461. package/utils/isBrowser.d.ts +0 -12
  462. package/utils/isBrowser.js +0 -26
  463. package/utils/ms.d.ts +0 -6
  464. package/utils/ms.js +0 -31
  465. package/utils/preventDefault.d.ts +0 -2
  466. package/utils/preventDefault.js +0 -3
  467. package/utils/recursiveChildrenMap.d.ts +0 -2
  468. package/utils/recursiveChildrenMap.js +0 -16
  469. package/utils/setSelectionRange.d.ts +0 -1
  470. package/utils/setSelectionRange.js +0 -55
  471. package/utils/smoothScrollToHref.d.ts +0 -2
  472. package/utils/smoothScrollToHref.js +0 -14
  473. package/utils/stopPropagation.d.ts +0 -2
  474. package/utils/stopPropagation.js +0 -3
  475. package/utils/stripHtml.d.ts +0 -1
  476. package/utils/stripHtml.js +0 -4
  477. package/utils/stripLineBreak.d.ts +0 -1
  478. package/utils/stripLineBreak.js +0 -4
  479. package/utils/stripMarkdown.d.ts +0 -1
  480. package/utils/stripMarkdown.js +0 -28
  481. package/utils/xlsxBlobToJson.d.ts +0 -2
  482. package/utils/xlsxBlobToJson.js +0 -62
package/AGENTS.md ADDED
@@ -0,0 +1,17 @@
1
+ # Padrão obrigatório do Workbench
2
+
3
+ - Novos apps web devem partir de starters/next-app, criado por npm run create:app -- <diretorio-novo>. O starter usa a versão estável do Next.js fixada e validada no manifesto; atualizações devem manter lockfile, CI e revisão de compatibilidade.
4
+
5
+ - A base de primitivas é shadcn sobre Base UI (base-nova), não Radix. Use render para composição e nativeButton=false quando Button renderizar Link/a. Preserve as fronteiras use client da biblioteca em consumidores Next.js.
6
+
7
+ - Esta biblioteca pública é a base obrigatória de todos os apps atuais e futuros do Workbench, incluindo administrativos, dashboards, login e cadastro. Leia README.md e docs/STANDARDS.md antes de alterar interfaces.
8
+ - Antes de criar UI em um app, procure o componente, variante ou padrão existente aqui. Reutilize-o diretamente como dependência.
9
+ - Se faltar uma capacidade reutilizável, contribua primeiro para esta biblioteca: adicione uma API genérica, documente o comportamento e mostre o uso no catálogo. Depois atualize o app para o commit publicado.
10
+ - Não copie componentes shadcn para apps, não faça forks locais e não use CSS, classes ou wrappers locais para corrigir cores, tipografia, tamanho, estados ou comportamento de um componente compartilhado.
11
+ - Adaptações específicas de domínio e composição de layout ficam no app; capacidades compartilhadas, tokens e variantes ficam aqui. Não traga AWS, autenticação, secrets ou modelos de negócio para a biblioteca.
12
+ - Use o CLI oficial shadcn para adicionar componentes. Preserve a licença upstream e registre adaptações em docs/STANDARDS.md. Imports internos da biblioteca devem ser relativos, sem aliases particulares do consumidor.
13
+ - className nos apps é para layout. Mudanças visuais precisam de tokens, variantes ou padrões oficiais. Evite controles HTML crus quando houver um componente da biblioteca.
14
+ - Todos os fluxos devem incluir estados carregando, vazio, erro, parcial e indisponível quando aplicáveis. Não esconda falhas ou altere dados para o exemplo parecer funcionar.
15
+ - Preserve acessibilidade: nome acessível, foco visível, navegação por teclado, título e descrição de overlays, labels em campos, e texto junto aos estados.
16
+ - Antes de publicar: npm run typecheck, npm run lint, npm run check:standards, npm run build, git diff --check e revisão visual em desktop/mobile. Teste comportamentos novos de risco, sem testes que apenas espelhem markup.
17
+ - Publique código e evidências no GitHub e vincule os commits ao PLAN.md central. Registre breaking changes e migração antes de atualizar consumidores.
package/README.md ADDED
@@ -0,0 +1,71 @@
1
+ # Majapi UI
2
+
3
+ Biblioteca pública `@majapisoftwares/ui`, base obrigatória de código, interface e experiência de **todos os apps atuais e futuros do Workbench**, baseada em shadcn/ui (**Base UI / base-nova**), React e Tailwind CSS v4. Repositório: https://github.com/majapisoftwares/workbench-ui.
4
+
5
+ ## Regra central
6
+
7
+ **Contribuir para a biblioteca antes de customizar o app.** Quando um produto precisa de uma variante ou comportamento reutilizável, a mudança deve ser implementada aqui com documentação e exemplo. O produto passa a consumir a versão publicada. Não mantenha cópias, forks ou overrides visuais locais dos componentes.
8
+
9
+ Composição de páginas, lógica de domínio, dados e permissões pertencem ao app. Primitivos, variantes, tokens e comportamentos reutilizáveis pertencem à biblioteca. Consulte [AGENTS.md](AGENTS.md) e [docs/STANDARDS.md](docs/STANDARDS.md).
10
+
11
+ ## Criar um app Next.js
12
+
13
+ O starter completo fica em [starters/next-app](starters/next-app), com **Next.js 16.4.3** (latest estável verificado na criação), React, App Router, TypeScript, Tailwind e esta biblioteca já configurados. A dependência da UI é uma versão npm fixa; não depende de caminhos para este checkout.
14
+
15
+ Dentro deste repositório:
16
+
17
+ ```sh
18
+ npm run create:app -- ../meu-app
19
+ cd ../meu-app
20
+ npm ci
21
+ npm run dev
22
+ ```
23
+
24
+ O comando não sobrescreve diretórios existentes. Copia dashboard, login, cadastro, carregamento/erro/404, regras de agentes, lockfile e CI, sem node_modules, builds ou secrets. Customize por componentes, props e slots. As telas de autenticação são demonstrativas e devem ser conectadas à autenticação real do produto.
25
+
26
+ ## Catálogo visual
27
+
28
+ ```powershell
29
+ npm ci
30
+ npm run dev
31
+ ```
32
+
33
+ Abra http://127.0.0.1:4318. O catálogo permite revisar componentes, temas claro/escuro, tabela com busca/ordenação/paginação/filtro, detalhes e estados de vazio/erro/carregamento. Usa dados demonstrativos explícitos, sem AWS ou credenciais.
34
+
35
+ ## Consumir
36
+
37
+ Pacote público **@majapisoftwares/ui@5.0.0**, publicado na organização npm existente. Instale com `npm install --save-exact @majapisoftwares/ui@5.0.0` e versione o lockfile. O pacote exporta fontes TSX para bundlers React/TypeScript (Vite ou Next.js), não para execução direta em Node sem transformação. O starter e o gerador permanecem neste repositório Git, separados do pacote npm da biblioteca.
38
+
39
+ O catálogo público está em **https://ui.majapi.com**. A versão 5 substitui a base 4.x com uma mudança incompatível de API e a base antes chamada @workbench/ui. Apps existentes em ^4 permanecem nessa linha até migração explícita.
40
+
41
+ ```tsx
42
+ import { Button } from "@majapisoftwares/ui/components/button";
43
+ import { DataTable } from "@majapisoftwares/ui/patterns/data-table";
44
+ import { AdminDashboard } from "@majapisoftwares/ui/templates/admin-dashboard";
45
+ import { AuthLayout } from "@majapisoftwares/ui/templates/auth-layout";
46
+ import { LoginForm } from "@majapisoftwares/ui/templates/login-form";
47
+ import { SignupForm } from "@majapisoftwares/ui/templates/signup-form";
48
+ import "@majapisoftwares/ui/styles.css";
49
+ ```
50
+
51
+ O CSS inclui os tokens, fontes locais e o Tailwind, com `@source` da biblioteca. O app precisa processar esse CSS com Tailwind v4. Faça dedupe de react/react-dom no Vite se estiver desenvolvendo com um checkout local. Dependências de catálogo, como Vite, não entram no código executado pelo consumidor.
52
+
53
+ ## Contribuir e validar
54
+
55
+ Templates iniciais: **AdminDashboard**, **AuthLayout**, **LoginForm** e **SignupForm**. Configure marca, navegação, textos, dados, ações e conteúdo por props/slots React. Variações de tema são definidas e documentadas na biblioteca. Formulários recebem callbacks tipados; autenticação real, validação no servidor, sessões e autorização pertencem ao app. O catálogo demonstra os templates sem enviar ou persistir senhas.
56
+
57
+ 1. Leia o padrão e procure o primitivo/padrão existente.
58
+ 2. Adicione uma API reutilizável ou variante oficial, com defaults compatíveis.
59
+ 3. Documente motivos, estados e migração; adicione exemplo no catálogo.
60
+ 4. Valide tipos, lint, padrões, build, teclado e visual desktop/mobile.
61
+ 5. Publique o commit e atualize o consumidor para esse commit; registre no plano.
62
+
63
+ ```powershell
64
+ npm run typecheck
65
+ npm run lint
66
+ npm run check:standards
67
+ npm run build
68
+ git diff --check
69
+ ```
70
+
71
+ Os componentes foram instalados pelo CLI shadcn 4.22.1, preset base-nova e Base UI 1.9.0. A versão 0.2 migra a base anterior Radix; veja [docs/MIGRATION-0.2.md](docs/MIGRATION-0.2.md). Atribuição upstream: [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md). O Cloud Manager é o primeiro consumidor real.
@@ -0,0 +1,15 @@
1
+ # Third-party notices
2
+
3
+ The primitives in src/components/ui were generated with shadcn/ui 4.22.1, base-nova preset (Base UI), from https://github.com/shadcn-ui/ui and https://ui.shadcn.com. They are distributed under the MIT License:
4
+
5
+ MIT License
6
+
7
+ Copyright (c) 2023 shadcn
8
+
9
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
14
+
15
+ Other dependencies retain their own licenses in their package metadata. This notice does not change ownership or licensing of Workbench-authored code.
@@ -0,0 +1,25 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema.json",
3
+ "style": "base-nova",
4
+ "rsc": false,
5
+ "tsx": true,
6
+ "tailwind": {
7
+ "config": "",
8
+ "css": "src/styles.css",
9
+ "baseColor": "neutral",
10
+ "cssVariables": true,
11
+ "prefix": ""
12
+ },
13
+ "iconLibrary": "lucide",
14
+ "rtl": false,
15
+ "aliases": {
16
+ "components": "@/components",
17
+ "utils": "@/lib/utils",
18
+ "ui": "@/components/ui",
19
+ "lib": "@/lib",
20
+ "hooks": "@/hooks"
21
+ },
22
+ "menuColor": "default",
23
+ "menuAccent": "subtle",
24
+ "registries": {}
25
+ }
@@ -0,0 +1,20 @@
1
+ # Migração 0.1 → 0.2: shadcn sobre Base UI
2
+
3
+ A base inicial era radix-nova. A versão 0.2 usa base-nova e @base-ui/react 1.9.0, regenerados pelo CLI oficial shadcn em diretório limpo e adaptados para preservar os contratos do Workbench. Tokens, estilos compartilhados, variantes navigation/success/warning e nomes dos padrões permanecem.
4
+
5
+ ## Mudanças de API
6
+
7
+ - Primitivas com composição usam render, não asChild. Exemplo: `<Button render={<Link href="/dashboard" />} nativeButton={false}>Dashboard</Button>`.
8
+ - Sheet usa Dialog de Base UI, com Backdrop/Popup e composição render. Os padrões DetailsSheet e DetailList mantêm suas props.
9
+ - Badge usa useRender/mergeProps de Base UI. Button usa ButtonPrimitive.Props. Considere essas mudanças incompatíveis para consumidores diretos das primitivas antigas.
10
+ - Componentes e padrões interativos têm use client explícito. Dados vindos do servidor devem ser serializáveis; callbacks de UI e definição de colunas com funções ficam em Client Components.
11
+ - Não importe radix-ui ou @radix-ui diretamente nos consumidores. O verificador de padrões detecta esses imports.
12
+
13
+ ## Atualizar um produto
14
+
15
+ 1. Atualize a dependência @majapisoftwares/ui para o commit publicado da versão 0.2 e regenere o lockfile.
16
+ 2. Substitua asChild por render e nativeButton=false em links/triggers não nativos.
17
+ 3. Preserve imports dos padrões compostos, evitando reimplementar o comportamento no produto.
18
+ 4. Execute typecheck, lint/padrões, build e verificações de navegação, foco, overlays, campos e telas menores.
19
+
20
+ O starter Next.js é o caminho padrão para novos apps. Autenticação real e permissões continuam sendo responsabilidade do produto, sem fallback ou simulação de login.
@@ -0,0 +1,14 @@
1
+ # Validação do starter Next.js e Base UI
2
+
3
+ - Next.js e create-next-app 16.4.3 conferidos no registry npm e na documentação oficial; React 19.3.1; UI 0.2 com shadcn base-nova e @base-ui/react 1.9.0.
4
+ - Biblioteca regenerada pelo CLI oficial shadcn em diretório limpo, preservando tokens e variantes compartilhadas. Imports diretos de Radix removidos; fronteiras use client explícitas nas primitivas e padrões interativos.
5
+ - Biblioteca: typecheck, ESLint, verificação de padrões e build Vite aprovados.
6
+ - Starter: lint, typegen/TypeScript, check:ui e build Next.js de produção aprovados para /dashboard, /login e /signup.
7
+ - Um projeto independente foi criado pelo comando create:app e validado com npm ci, lint, tipos, padrões e build. O projeto não depende de um checkout local da biblioteca.
8
+ - Teste do gerador confirma nome/lockfile coerentes, rotas, regras de agentes, workflow, ausência de node_modules e recusa de sobrescrita de diretório existente.
9
+ - npm pack --dry-run foi inspecionado: starter incluído, sem node_modules, .next, tsbuildinfo ou arquivos de ambiente no pacote.
10
+ - Navegador com build de produção: dashboard, navegação para login/cadastro, painel de detalhes Base UI, devolução de foco ao fechar, console sem erros/warnings e revisão de cadastro em viewport mobile de 500px.
11
+ - As telas usam dados demonstrativos explícitos. Nenhuma credencial foi enviada nem conta criada; autenticação real e proteção das rotas são integração do produto consumidor.
12
+ - Cloud Manager atualizado para a mesma UI Base UI: build, types, padrões e 20 testes passaram.
13
+
14
+ A CI pública valida tanto a biblioteca quanto o starter Next.js. O processo de produção local do starter foi aberto em http://127.0.0.1:4319 para revisão. Não houve deploy público nem provisionamento de infraestrutura.
@@ -0,0 +1,36 @@
1
+ # Padrão v1 de código e UI/UX
2
+
3
+ Base atual: shadcn base-nova com @base-ui/react. Os componentes interativos expõem fronteiras use client para uso no Next.js App Router. A migração da API Radix está documentada em MIGRATION-0.2.md.
4
+
5
+ ## Arquitetura e código
6
+
7
+ TypeScript em modo strict, React com componentes funcionais e composição. APIs genéricas tipadas; sem any para contornar contratos, estado derivado duplicado ou dependências de domínio na UI. Imports públicos por subpath, internos relativos. Dependências e lockfile versionados. Interface, acesso a dados, autorização e operações de infraestrutura permanecem separados. Entradas externas são validadas no servidor; erros e resultados incompletos são explícitos.
8
+
9
+ ## Base visual
10
+
11
+ `src/styles.css` é a fonte dos tokens de cor, tipografia, raio, bordas, foco, estados e estrutura. Paleta neutra com ação primária terracota; body Geist, títulos Georgia; foco visível e espaço consistente. Cores são semânticas: background, foreground, primary, muted, destructive, success e warning. Temas claro/escuro preservam a semântica. Tokens e padrões podem evoluir nesta biblioteca, nunca por overrides locais em um produto.
12
+
13
+ Os 13 primitivos shadcn são Button, Badge, Input, Table, Sheet, Alert, Empty, NativeSelect, Separator, Skeleton, Tabs, Field e Label. Os sete padrões compostos são AppShell, PageHeader, MetricStrip, StatusBadge, DataTable, DetailsSheet e DetailList. Os quatro templates React são AdminDashboard, AuthLayout, LoginForm e SignupForm. Marca, navegação, textos, dados, ações e slots são configuráveis. Todos os apps atuais e futuros devem consumir esta base pública; ela não conhece AWS ou outro domínio.
14
+
15
+ ## Comportamentos de UX
16
+
17
+ - Ação primária destaca o objetivo; secundária usa outline/secondary; destrutiva usa variante própria e depende das autorizações do app.
18
+ - Busca, filtros, ordenação por coluna e paginação seguem DataTable. Filtros de domínio são slots tipados do app. Não reconstruir tabelas por tela. Persistência não é habilitada por padrão para evitar guardar buscas sensíveis; quando necessária, deve evoluir como capacidade compartilhada com controle explícito.
19
+ - Estados com texto e cor: sucesso, aviso, erro e desconhecido. Nunca traduzir ausência de informação em zero ou sucesso.
20
+ - Carregamento usa Skeleton, vazio usa Empty, falhas usam Alert e detalhes usam DetailsSheet com título, descrição, foco preso ao overlay, Escape e devolução do foco ao fechar.
21
+ - Em telas pequenas, controles têm texto de pelo menos 16px e alvo de 44px, navegação se reorganiza e tabelas têm rolagem interna, sem rolagem horizontal da página.
22
+ - Preferência por movimento reduzido é respeitada. A ordem de leitura deve acompanhar a ordem visual. Ícones sozinhos exigem nome acessível.
23
+ - Distinguir dados demonstrativos de dados reais; mostrar observação e cobertura em telas de infraestrutura. Comunicação e labels em português no v1.
24
+
25
+ ## Evolução sem customizações isoladas
26
+
27
+ Uma necessidade reutilizável entra na biblioteca por prop, variante, token ou novo padrão documentado. Não adicionar props específicas como awsAccountId a componentes genéricos. Novas variantes preservam defaults; mudanças incompatíveis exigem versão/migração explícitas e atualização coordenada dos consumidores. A versão semântica identifica a API, e o commit Git fixo identifica o código efetivamente consumido.
28
+
29
+ AGENTS.md nos apps exige contribuição upstream antes de uso. O verificador estático bloqueia primitivas locais e cores avulsas em consumidores; não substitui revisão humana de design, acessibilidade e comportamento. O catálogo e o primeiro consumidor devem ser revisados em navegador.
30
+
31
+ ## Adaptações do upstream
32
+
33
+ - Sheet usa import interno relativo para funcionar como pacote e traduz o nome acessível do fechamento para português.
34
+ - Field usa imports relativos. Button assume type=button para evitar submissões acidentais; formulários declaram type=submit. Badge inclui variantes success e warning reutilizadas por StatusBadge.
35
+ - Tokens de identidade, estados semânticos e padrões compostos são mantidos aqui.
36
+ - Mudanças posteriores no upstream devem ser avaliadas com o diff do CLI, preservando estas decisões e o contrato público.
@@ -0,0 +1,11 @@
1
+ # Validação da base v1
2
+
3
+ - TypeScript strict, ESLint sem warnings, verificador de padrões, Prettier e build Vite aprovados.
4
+ - CI pública executa npm ci, typecheck, lint, check:standards e build, sem secrets ou acesso à AWS.
5
+ - Catálogo renderizado em navegador real em desktop e mobile (viewport de 500px), incluindo template administrativo, login e cadastro.
6
+ - Cadastro demonstrativo: confirmação divergente de senha foi bloqueada, campo marcado aria-invalid e erro anunciado por role=alert. Nenhuma informação foi enviada ou persistida.
7
+ - DataTable demonstrativa possui busca, filtro por região, ordenação e paginação; DetailsSheet usa Radix com título e descrição. Estados de vazio, erro e carregamento estão expostos no catálogo.
8
+ - O primeiro consumidor real é o Cloud Manager, que importa a biblioteca por commit público fixo e continua exibindo o inventário real AWS. Detalhes de infraestrutura e credenciais permanecem no repo privado do produto.
9
+ - Ajustes de navegação e toolbar mobile foram feitos nos componentes compartilhados e publicados antes de atualizar o consumidor, exercitando a regra de contribuição upstream.
10
+
11
+ Esta revisão é uma validação inicial de implementação, não uma certificação de acessibilidade nem prova de integração de autenticação. Backend de login/cadastro pertence a cada produto e deve ser validado pelo consumidor.
package/package.json CHANGED
@@ -1,8 +1,75 @@
1
1
  {
2
2
  "name": "@majapisoftwares/ui",
3
+ "version": "5.0.0",
4
+ "description": "Shared Workbench UI and UX standards based on shadcn/ui",
5
+ "publishConfig": {
6
+ "access": "public"
7
+ },
3
8
  "repository": {
4
9
  "type": "git",
5
- "url": "https://github.com/majapisoftwares/ui.git"
10
+ "url": "git+https://github.com/majapisoftwares/workbench-ui.git"
11
+ },
12
+ "homepage": "https://ui.majapi.com",
13
+ "type": "module",
14
+ "sideEffects": [
15
+ "**/*.css"
16
+ ],
17
+ "files": [
18
+ "scripts/check-standards.mjs",
19
+ "src",
20
+ "components.json",
21
+ "docs",
22
+ "AGENTS.md",
23
+ "THIRD_PARTY_NOTICES.md"
24
+ ],
25
+ "exports": {
26
+ "./components/*": "./src/components/ui/*.tsx",
27
+ "./patterns/*": "./src/patterns/*.tsx",
28
+ "./templates/*": "./src/templates/*.tsx",
29
+ "./styles.css": "./src/styles.css",
30
+ "./lib/utils": "./src/lib/utils.ts"
31
+ },
32
+ "scripts": {
33
+ "create:app": "node scripts/create-app.mjs",
34
+ "test:starter": "node --test scripts/create-app.test.mjs",
35
+ "dev": "vite --host 127.0.0.1 --port 4318 --strictPort",
36
+ "build": "tsc --noEmit && vite build",
37
+ "typecheck": "tsc --noEmit",
38
+ "lint": "eslint . --max-warnings=0",
39
+ "format:check": "prettier --check src examples scripts *.json *.ts *.md docs/*.md",
40
+ "check:standards": "node scripts/check-standards.mjs"
41
+ },
42
+ "peerDependencies": {
43
+ "react": "19.3.1",
44
+ "react-dom": "19.3.1"
45
+ },
46
+ "engines": {
47
+ "node": ">=22"
48
+ },
49
+ "dependencies": {
50
+ "@base-ui/react": "1.9.0",
51
+ "@fontsource-variable/geist": "^5.3.0",
52
+ "class-variance-authority": "0.7.1",
53
+ "clsx": "2.1.1",
54
+ "cn": "^0.5.0",
55
+ "lucide-react": "1.61.0",
56
+ "shadcn": "^4.22.1",
57
+ "tailwind-merge": "3.7.0",
58
+ "tw-animate-css": "^1.4.0"
6
59
  },
7
- "version": "4.3.17"
60
+ "devDependencies": {
61
+ "@eslint/js": "10.0.1",
62
+ "@tailwindcss/vite": "4.3.3",
63
+ "@types/node": "26.6.5",
64
+ "@types/react": "19.3.0",
65
+ "@types/react-dom": "19.3.0",
66
+ "@vitejs/plugin-react": "6.1.2",
67
+ "eslint": "10.13.0",
68
+ "eslint-plugin-react-hooks": "7.1.1",
69
+ "prettier": "3.9.10",
70
+ "tailwindcss": "4.3.3",
71
+ "typescript": "6.0.3",
72
+ "typescript-eslint": "8.72.0",
73
+ "vite": "8.3.5"
74
+ }
8
75
  }
@@ -0,0 +1,39 @@
1
+ import { readdir, readFile } from "node:fs/promises";
2
+ import { resolve, relative } from "node:path";
3
+ const consumer = process.argv[2];
4
+ const root = resolve(consumer ?? "src");
5
+ const violations = [];
6
+ async function visit(path) {
7
+ for (const entry of await readdir(path, { withFileTypes: true })) {
8
+ if (["node_modules", "dist", ".git"].includes(entry.name)) continue;
9
+ const file = resolve(path, entry.name);
10
+ if (entry.isDirectory()) {
11
+ await visit(file);
12
+ continue;
13
+ }
14
+ if (!/\.[jt]sx?$/.test(entry.name)) continue;
15
+ const text = await readFile(file, "utf8"),
16
+ name = relative(root, file).replaceAll("\\", "/");
17
+ if (/from\s+["'](?:radix-ui|@radix-ui\/)/.test(text))
18
+ violations.push(`${name}: the Workbench foundation uses Base UI`);
19
+ if (!consumer && name.startsWith("components/ui/")) continue;
20
+ if (consumer && /(?:^|\/)components\/ui\//.test(name))
21
+ violations.push(`${name}: local UI primitive copies are forbidden`);
22
+ if (/<(?:button|input|select|table|dialog)(?:\s|>)/.test(text))
23
+ violations.push(`${name}: use the shared UI primitive`);
24
+ if (
25
+ /(?:bg|text|border)-(?:red|blue|green|orange|gray|slate|zinc)-\d|(?:bg|text|border)-\[#[a-f\d]/i.test(
26
+ text,
27
+ )
28
+ )
29
+ violations.push(`${name}: use semantic tokens instead of local colors`);
30
+ if (!consumer && /from ["']@\//.test(text))
31
+ violations.push(`${name}: library internals must use portable imports`);
32
+ }
33
+ }
34
+ await visit(root);
35
+ if (violations.length) {
36
+ console.error(violations.join("\n"));
37
+ process.exitCode = 1;
38
+ } else
39
+ console.log(`UI standards passed (${consumer ? "consumer" : "library"}).`);
@@ -0,0 +1,77 @@
1
+ "use client";
2
+
3
+ import * as React from "react";
4
+ import { cva, type VariantProps } from "class-variance-authority";
5
+ import { cn } from "cn";
6
+
7
+ const alertVariants = cva(
8
+ "group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4",
9
+ {
10
+ variants: {
11
+ variant: {
12
+ default: "bg-card text-card-foreground",
13
+ destructive:
14
+ "bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current",
15
+ },
16
+ },
17
+ defaultVariants: {
18
+ variant: "default",
19
+ },
20
+ },
21
+ );
22
+
23
+ function Alert({
24
+ className,
25
+ variant,
26
+ ...props
27
+ }: React.ComponentProps<"div"> & VariantProps<typeof alertVariants>) {
28
+ return (
29
+ <div
30
+ data-slot="alert"
31
+ role="alert"
32
+ className={cn(alertVariants({ variant }), className)}
33
+ {...props}
34
+ />
35
+ );
36
+ }
37
+
38
+ function AlertTitle({ className, ...props }: React.ComponentProps<"div">) {
39
+ return (
40
+ <div
41
+ data-slot="alert-title"
42
+ className={cn(
43
+ "font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground",
44
+ className,
45
+ )}
46
+ {...props}
47
+ />
48
+ );
49
+ }
50
+
51
+ function AlertDescription({
52
+ className,
53
+ ...props
54
+ }: React.ComponentProps<"div">) {
55
+ return (
56
+ <div
57
+ data-slot="alert-description"
58
+ className={cn(
59
+ "text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4",
60
+ className,
61
+ )}
62
+ {...props}
63
+ />
64
+ );
65
+ }
66
+
67
+ function AlertAction({ className, ...props }: React.ComponentProps<"div">) {
68
+ return (
69
+ <div
70
+ data-slot="alert-action"
71
+ className={cn("absolute top-2 right-2", className)}
72
+ {...props}
73
+ />
74
+ );
75
+ }
76
+
77
+ export { Alert, AlertTitle, AlertDescription, AlertAction };
@@ -0,0 +1,55 @@
1
+ "use client";
2
+
3
+ import { mergeProps } from "@base-ui/react/merge-props";
4
+ import { useRender } from "@base-ui/react/use-render";
5
+ import { cva, type VariantProps } from "class-variance-authority";
6
+ import { cn } from "cn";
7
+
8
+ const badgeVariants = cva(
9
+ "group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",
10
+ {
11
+ variants: {
12
+ variant: {
13
+ success: "bg-success text-success-foreground",
14
+ warning: "bg-warning text-warning-foreground",
15
+ default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80",
16
+ secondary:
17
+ "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",
18
+ destructive:
19
+ "bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",
20
+ outline:
21
+ "border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",
22
+ ghost:
23
+ "hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",
24
+ link: "text-primary underline-offset-4 hover:underline",
25
+ },
26
+ },
27
+ defaultVariants: {
28
+ variant: "default",
29
+ },
30
+ },
31
+ );
32
+
33
+ function Badge({
34
+ className,
35
+ variant = "default",
36
+ render,
37
+ ...props
38
+ }: useRender.ComponentProps<"span"> & VariantProps<typeof badgeVariants>) {
39
+ return useRender({
40
+ defaultTagName: "span",
41
+ props: mergeProps<"span">(
42
+ {
43
+ className: cn(badgeVariants({ variant }), className),
44
+ },
45
+ props,
46
+ ),
47
+ render,
48
+ state: {
49
+ slot: "badge",
50
+ variant,
51
+ },
52
+ });
53
+ }
54
+
55
+ export { Badge, badgeVariants };
@@ -0,0 +1,63 @@
1
+ "use client";
2
+
3
+ import { Button as ButtonPrimitive } from "@base-ui/react/button";
4
+ import { cva, type VariantProps } from "class-variance-authority";
5
+ import { cn } from "cn";
6
+
7
+ const buttonVariants = cva(
8
+ "group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
9
+ {
10
+ variants: {
11
+ variant: {
12
+ navigation:
13
+ "bg-transparent text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground",
14
+ default: "bg-primary text-primary-foreground hover:bg-primary/80",
15
+ outline:
16
+ "border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
17
+ secondary:
18
+ "bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
19
+ ghost:
20
+ "hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",
21
+ destructive:
22
+ "bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",
23
+ link: "text-primary underline-offset-4 hover:underline",
24
+ },
25
+ size: {
26
+ default:
27
+ "h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
28
+ xs: "h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",
29
+ sm: "h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",
30
+ lg: "h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
31
+ icon: "size-8",
32
+ "icon-xs":
33
+ "size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3",
34
+ "icon-sm":
35
+ "size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg",
36
+ "icon-lg": "size-9",
37
+ },
38
+ },
39
+ defaultVariants: {
40
+ variant: "default",
41
+ size: "default",
42
+ },
43
+ },
44
+ );
45
+
46
+ function Button({
47
+ className,
48
+ variant = "default",
49
+ size = "default",
50
+ type = "button",
51
+ ...props
52
+ }: ButtonPrimitive.Props & VariantProps<typeof buttonVariants>) {
53
+ return (
54
+ <ButtonPrimitive
55
+ data-slot="button"
56
+ type={type}
57
+ className={cn(buttonVariants({ variant, size, className }))}
58
+ {...props}
59
+ />
60
+ );
61
+ }
62
+
63
+ export { Button, buttonVariants };
@@ -0,0 +1,105 @@
1
+ "use client";
2
+
3
+ import { cva, type VariantProps } from "class-variance-authority";
4
+ import { cn } from "cn";
5
+
6
+ function Empty({ className, ...props }: React.ComponentProps<"div">) {
7
+ return (
8
+ <div
9
+ data-slot="empty"
10
+ className={cn(
11
+ "flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border-dashed p-6 text-center text-balance",
12
+ className,
13
+ )}
14
+ {...props}
15
+ />
16
+ );
17
+ }
18
+
19
+ function EmptyHeader({ className, ...props }: React.ComponentProps<"div">) {
20
+ return (
21
+ <div
22
+ data-slot="empty-header"
23
+ className={cn("flex max-w-sm flex-col items-center gap-2", className)}
24
+ {...props}
25
+ />
26
+ );
27
+ }
28
+
29
+ const emptyMediaVariants = cva(
30
+ "mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0",
31
+ {
32
+ variants: {
33
+ variant: {
34
+ default: "bg-transparent",
35
+ icon: "flex size-8 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-4",
36
+ },
37
+ },
38
+ defaultVariants: {
39
+ variant: "default",
40
+ },
41
+ },
42
+ );
43
+
44
+ function EmptyMedia({
45
+ className,
46
+ variant = "default",
47
+ ...props
48
+ }: React.ComponentProps<"div"> & VariantProps<typeof emptyMediaVariants>) {
49
+ return (
50
+ <div
51
+ data-slot="empty-icon"
52
+ data-variant={variant}
53
+ className={cn(emptyMediaVariants({ variant, className }))}
54
+ {...props}
55
+ />
56
+ );
57
+ }
58
+
59
+ function EmptyTitle({ className, ...props }: React.ComponentProps<"div">) {
60
+ return (
61
+ <div
62
+ data-slot="empty-title"
63
+ className={cn(
64
+ "font-heading text-sm font-medium tracking-tight",
65
+ className,
66
+ )}
67
+ {...props}
68
+ />
69
+ );
70
+ }
71
+
72
+ function EmptyDescription({ className, ...props }: React.ComponentProps<"p">) {
73
+ return (
74
+ <div
75
+ data-slot="empty-description"
76
+ className={cn(
77
+ "text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
78
+ className,
79
+ )}
80
+ {...props}
81
+ />
82
+ );
83
+ }
84
+
85
+ function EmptyContent({ className, ...props }: React.ComponentProps<"div">) {
86
+ return (
87
+ <div
88
+ data-slot="empty-content"
89
+ className={cn(
90
+ "flex w-full max-w-sm min-w-0 flex-col items-center gap-2.5 text-sm text-balance",
91
+ className,
92
+ )}
93
+ {...props}
94
+ />
95
+ );
96
+ }
97
+
98
+ export {
99
+ Empty,
100
+ EmptyHeader,
101
+ EmptyTitle,
102
+ EmptyDescription,
103
+ EmptyContent,
104
+ EmptyMedia,
105
+ };