@alepha/ui 0.18.1 → 0.18.3

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 (280) hide show
  1. package/dist/admin/{AdminApiKeys-C-6_Q-lH.js → AdminApiKeys-Dy_k-4Vd.js} +17 -38
  2. package/dist/admin/AdminApiKeys-Dy_k-4Vd.js.map +1 -0
  3. package/dist/admin/{AdminAudits-Bgbf04hO.js → AdminAudits-CKiFMSSU.js} +23 -19
  4. package/dist/admin/AdminAudits-CKiFMSSU.js.map +1 -0
  5. package/dist/admin/AdminDashboard-PhC_dZqo.js +67 -0
  6. package/dist/admin/AdminDashboard-PhC_dZqo.js.map +1 -0
  7. package/dist/admin/{AdminFiles-B9a7G3cY.js → AdminFiles-DFTjijGp.js} +3 -7
  8. package/dist/admin/AdminFiles-DFTjijGp.js.map +1 -0
  9. package/dist/admin/{AdminJobDashboard-DaTwf5OY.js → AdminJobDashboard-BL8gGPDp.js} +2 -2
  10. package/dist/admin/{AdminJobDashboard-DaTwf5OY.js.map → AdminJobDashboard-BL8gGPDp.js.map} +1 -1
  11. package/dist/admin/{AdminJobExecutions-B9cek5dl.js → AdminJobExecutions-D9E-CS-U.js} +24 -36
  12. package/dist/admin/AdminJobExecutions-D9E-CS-U.js.map +1 -0
  13. package/dist/admin/{AdminJobRegistry-DFgV3oqx.js → AdminJobRegistry-Ci9ue1zC.js} +10 -18
  14. package/dist/admin/AdminJobRegistry-Ci9ue1zC.js.map +1 -0
  15. package/dist/admin/AdminLayout-I6TlUMPc.js +61 -0
  16. package/dist/admin/AdminLayout-I6TlUMPc.js.map +1 -0
  17. package/dist/admin/AdminNotifications-ZPHCYrv7.js +542 -0
  18. package/dist/admin/AdminNotifications-ZPHCYrv7.js.map +1 -0
  19. package/dist/admin/{AdminParameters-DHw9ATgl.js → AdminParameters-CqgvhRsb.js} +120 -105
  20. package/dist/admin/AdminParameters-CqgvhRsb.js.map +1 -0
  21. package/dist/admin/{AdminSessions-BhGJPI3z.js → AdminSessions-Bz5NRuoW.js} +48 -53
  22. package/dist/admin/AdminSessions-Bz5NRuoW.js.map +1 -0
  23. package/dist/admin/{AdminUserLayout-BdC4Te8m.js → AdminUserLayout-lXT6I0Qq.js} +14 -8
  24. package/dist/admin/AdminUserLayout-lXT6I0Qq.js.map +1 -0
  25. package/dist/admin/{AdminUserProfile-DAt23fqY.js → AdminUserProfile-vFBLoJ3h.js} +3 -3
  26. package/dist/admin/{AdminUserProfile-DAt23fqY.js.map → AdminUserProfile-vFBLoJ3h.js.map} +1 -1
  27. package/dist/admin/{AdminUserSessions-1uzcx02z.js → AdminUserSessions-CT_YDim0.js} +33 -35
  28. package/dist/admin/AdminUserSessions-CT_YDim0.js.map +1 -0
  29. package/dist/admin/AdminUsers-D1UfGya9.js +206 -0
  30. package/dist/admin/AdminUsers-D1UfGya9.js.map +1 -0
  31. package/dist/admin/{AuthLayout-DFJvCvzw.js → AuthLayout-_frhdgOO.js} +2 -2
  32. package/dist/admin/{AuthLayout-DFJvCvzw.js.map → AuthLayout-_frhdgOO.js.map} +1 -1
  33. package/dist/admin/{IconGoogle-CSQLPYwX.js → IconGoogle-Ch1m3Uzl.js} +1 -1
  34. package/dist/admin/{IconGoogle-CSQLPYwX.js.map → IconGoogle-Ch1m3Uzl.js.map} +1 -1
  35. package/dist/admin/Login-xtNmQtGh.js +275 -0
  36. package/dist/admin/Login-xtNmQtGh.js.map +1 -0
  37. package/dist/{auth/Profile-BMX_Ar_s.js → admin/Profile-_AtPUwAP.js} +31 -27
  38. package/dist/admin/Profile-_AtPUwAP.js.map +1 -0
  39. package/dist/admin/{Register-Cs10l8vX.js → Register-JcCjHUUn.js} +199 -143
  40. package/dist/admin/Register-JcCjHUUn.js.map +1 -0
  41. package/dist/admin/{ResetPassword-BwDdfkGH.js → ResetPassword-CwGBPLJO.js} +7 -7
  42. package/dist/admin/ResetPassword-CwGBPLJO.js.map +1 -0
  43. package/dist/admin/{VerifyEmail-DfXHAiQl.js → VerifyEmail-hNxWejWf.js} +23 -8
  44. package/dist/admin/VerifyEmail-hNxWejWf.js.map +1 -0
  45. package/dist/admin/{core-2xoLiT0o.js → core-CYaRQ8O-.js} +2082 -688
  46. package/dist/admin/core-CYaRQ8O-.js.map +1 -0
  47. package/dist/admin/index.d.ts +112 -48
  48. package/dist/admin/index.d.ts.map +1 -1
  49. package/dist/admin/index.js +467 -69
  50. package/dist/admin/index.js.map +1 -1
  51. package/dist/auth/{AuthLayout-CAE1pX9s.js → AuthLayout-AvLlcLjS.js} +2 -2
  52. package/dist/auth/{AuthLayout-CAE1pX9s.js.map → AuthLayout-AvLlcLjS.js.map} +1 -1
  53. package/dist/auth/Login-BA1E8IZl.js +275 -0
  54. package/dist/auth/Login-BA1E8IZl.js.map +1 -0
  55. package/dist/{admin/Profile-B-c9pCPf.js → auth/Profile-YcWdeuFz.js} +31 -27
  56. package/dist/auth/Profile-YcWdeuFz.js.map +1 -0
  57. package/dist/auth/{Register-6hi_cpfF.js → Register-CPhEO5MG.js} +198 -142
  58. package/dist/auth/Register-CPhEO5MG.js.map +1 -0
  59. package/dist/{demo/ResetPassword-DWN0lzr5.js → auth/ResetPassword-DCtGcneA.js} +7 -7
  60. package/dist/auth/ResetPassword-DCtGcneA.js.map +1 -0
  61. package/dist/{demo/VerifyEmail-DZWL72K4.js → auth/VerifyEmail-DkH7NBfn.js} +23 -8
  62. package/dist/auth/VerifyEmail-DkH7NBfn.js.map +1 -0
  63. package/dist/auth/{core-niW0sFLv.js → core-D5jIAVF2.js} +1385 -329
  64. package/dist/auth/core-D5jIAVF2.js.map +1 -0
  65. package/dist/auth/index.d.ts +105 -49
  66. package/dist/auth/index.d.ts.map +1 -1
  67. package/dist/auth/index.js +29 -26
  68. package/dist/auth/index.js.map +1 -1
  69. package/dist/core/index.d.ts +210 -74
  70. package/dist/core/index.d.ts.map +1 -1
  71. package/dist/core/index.js +2247 -834
  72. package/dist/core/index.js.map +1 -1
  73. package/dist/demo/{AuthLayout-jLa0aKsI.js → AuthLayout-Brri4A-L.js} +2 -2
  74. package/dist/demo/{AuthLayout-jLa0aKsI.js.map → AuthLayout-Brri4A-L.js.map} +1 -1
  75. package/dist/demo/DemoButton-wiCxZZ_L.js +182 -0
  76. package/dist/demo/DemoButton-wiCxZZ_L.js.map +1 -0
  77. package/dist/demo/DemoControlSelect-D7ILObVg.js +305 -0
  78. package/dist/demo/DemoControlSelect-D7ILObVg.js.map +1 -0
  79. package/dist/demo/DemoDataTable-DZ5Y8pFX.js +362 -0
  80. package/dist/demo/DemoDataTable-DZ5Y8pFX.js.map +1 -0
  81. package/dist/demo/{DemoDialog-4ItHLf9t.js → DemoDialog-CUWdLHim.js} +2 -2
  82. package/dist/demo/{DemoDialog-4ItHLf9t.js.map → DemoDialog-CUWdLHim.js.map} +1 -1
  83. package/dist/demo/{DemoFlex-EtVq8QfX.js → DemoFlex-a8OhMMvq.js} +3 -3
  84. package/dist/demo/{DemoFlex-EtVq8QfX.js.map → DemoFlex-a8OhMMvq.js.map} +1 -1
  85. package/dist/demo/{DemoHeading-BS-vGfkI.js → DemoHeading-C13OVDfS.js} +3 -3
  86. package/dist/demo/{DemoHeading-BS-vGfkI.js.map → DemoHeading-C13OVDfS.js.map} +1 -1
  87. package/dist/demo/{DemoHome-Clbn8AmS.js → DemoHome-D_De3UiT.js} +2 -2
  88. package/dist/demo/{DemoHome-Clbn8AmS.js.map → DemoHome-D_De3UiT.js.map} +1 -1
  89. package/dist/demo/{DemoJsonViewer-DkIX_ky2.js → DemoJsonViewer-B50s9aGM.js} +3 -3
  90. package/dist/demo/{DemoJsonViewer-DkIX_ky2.js.map → DemoJsonViewer-B50s9aGM.js.map} +1 -1
  91. package/dist/demo/{DemoLayout-C56xb5EE.js → DemoLayout-CHU8WTwO.js} +14 -5
  92. package/dist/demo/DemoLayout-CHU8WTwO.js.map +1 -0
  93. package/dist/demo/{DemoLogin-BZwpicOS.js → DemoLogin-BBlrWpml.js} +49 -32
  94. package/dist/demo/DemoLogin-BBlrWpml.js.map +1 -0
  95. package/dist/demo/{DemoRegister-C7_qc4MJ.js → DemoRegister-BuNE3_-f.js} +49 -50
  96. package/dist/demo/DemoRegister-BuNE3_-f.js.map +1 -0
  97. package/dist/demo/{DemoResetPassword-BI1Ct4Dw.js → DemoResetPassword-D_IjjjOJ.js} +12 -16
  98. package/dist/demo/DemoResetPassword-D_IjjjOJ.js.map +1 -0
  99. package/dist/demo/{DemoSidebar-CcBo4ltC.js → DemoSidebar-Giy2HRBD.js} +3 -3
  100. package/dist/demo/{DemoSidebar-CcBo4ltC.js.map → DemoSidebar-Giy2HRBD.js.map} +1 -1
  101. package/dist/demo/{DemoText-CzXuUn3g.js → DemoText-ubcw-vog.js} +3 -3
  102. package/dist/demo/{DemoText-CzXuUn3g.js.map → DemoText-ubcw-vog.js.map} +1 -1
  103. package/dist/demo/{DemoToast-BgHDhWrX.js → DemoToast-9die_dYT.js} +2 -2
  104. package/dist/demo/{DemoToast-BgHDhWrX.js.map → DemoToast-9die_dYT.js.map} +1 -1
  105. package/dist/demo/{DemoTypeForm-DDzWoMSV.js → DemoTypeForm-D_d6OVKL.js} +8 -4
  106. package/dist/demo/DemoTypeForm-D_d6OVKL.js.map +1 -0
  107. package/dist/demo/DemoVerifyEmail-B43KlF4F.js +34 -0
  108. package/dist/demo/DemoVerifyEmail-B43KlF4F.js.map +1 -0
  109. package/dist/demo/Login-C12N4oGs.js +275 -0
  110. package/dist/demo/Login-C12N4oGs.js.map +1 -0
  111. package/dist/demo/{Profile-CWqti7FB.js → Profile-DS5q4vOh.js} +31 -27
  112. package/dist/demo/Profile-DS5q4vOh.js.map +1 -0
  113. package/dist/demo/{Register-a70LPgs2.js → Register-B4hLBeEv.js} +198 -142
  114. package/dist/demo/Register-B4hLBeEv.js.map +1 -0
  115. package/dist/{auth/ResetPassword-CqfTk1FI.js → demo/ResetPassword-D8g9ha1N.js} +7 -7
  116. package/dist/demo/ResetPassword-D8g9ha1N.js.map +1 -0
  117. package/dist/demo/{Showcase-Dq3MISpd.js → Showcase-D6Fxt4X4.js} +64 -65
  118. package/dist/demo/Showcase-D6Fxt4X4.js.map +1 -0
  119. package/dist/{auth/VerifyEmail-nWiSTMjF.js → demo/VerifyEmail-BjDo0cZA.js} +23 -8
  120. package/dist/demo/VerifyEmail-BjDo0cZA.js.map +1 -0
  121. package/dist/demo/{auth-d6n3xbug.js → auth-ByVTreDl.js} +8 -8
  122. package/dist/demo/{auth-d6n3xbug.js.map → auth-ByVTreDl.js.map} +1 -1
  123. package/dist/demo/{core-RCUw1Q-a.js → core-DFgB3yU4.js} +2182 -756
  124. package/dist/demo/core-DFgB3yU4.js.map +1 -0
  125. package/dist/demo/index.d.ts +1 -0
  126. package/dist/demo/index.d.ts.map +1 -1
  127. package/dist/demo/index.js +24 -18
  128. package/dist/demo/index.js.map +1 -1
  129. package/package.json +7 -7
  130. package/src/admin/{AdminRouter.ts → AdminRouter.tsx} +150 -18
  131. package/src/admin/components/AdminDashboard.tsx +52 -0
  132. package/src/admin/components/AdminLayout.tsx +32 -40
  133. package/src/admin/components/audits/AdminAudits.tsx +22 -16
  134. package/src/admin/components/files/AdminFiles.tsx +1 -6
  135. package/src/admin/components/jobs/AdminJobExecutions.tsx +33 -39
  136. package/src/admin/components/jobs/AdminJobRegistry.tsx +9 -18
  137. package/src/admin/components/keys/AdminApiKeys.tsx +23 -41
  138. package/src/admin/components/notifications/AdminNotifications.tsx +519 -0
  139. package/src/admin/components/parameters/ParameterDetails.tsx +12 -270
  140. package/src/admin/components/parameters/ParameterDetailsConfigForm.tsx +238 -0
  141. package/src/admin/components/parameters/ParameterDetailsLoading.tsx +24 -0
  142. package/src/admin/components/parameters/ParameterHistory.tsx +10 -11
  143. package/src/admin/components/parameters/ParameterTree.tsx +28 -184
  144. package/src/admin/components/parameters/ParameterTreeNode.tsx +151 -0
  145. package/src/admin/components/sessions/AdminSessions.tsx +71 -71
  146. package/src/admin/components/shared/AdminResourceHeader.tsx +2 -25
  147. package/src/admin/components/shared/AdminResourceHeaderMenuItem.tsx +37 -0
  148. package/src/admin/components/shared/AdminResourceTabs.tsx +2 -26
  149. package/src/admin/components/shared/AdminResourceTabsItem.tsx +36 -0
  150. package/src/admin/components/users/AdminUserSessions.tsx +33 -31
  151. package/src/admin/components/users/AdminUsers.tsx +184 -72
  152. package/src/admin/index.ts +2 -2
  153. package/src/admin/primitives/$uiAdmin.ts +1 -1
  154. package/src/auth/components/Login.tsx +188 -121
  155. package/src/auth/components/Profile.tsx +1 -22
  156. package/src/auth/components/ProfileField.tsx +39 -0
  157. package/src/auth/components/Register.tsx +215 -158
  158. package/src/auth/components/ResetPassword.tsx +7 -11
  159. package/src/auth/components/VerifyEmail.tsx +35 -10
  160. package/src/auth/components/buttons/UserButton.tsx +20 -24
  161. package/src/auth/index.ts +1 -0
  162. package/src/core/atoms/alephaSidebarAtom.ts +1 -1
  163. package/src/core/atoms/alephaThemeListAtom.ts +14 -1
  164. package/src/core/atoms/alephaThemeOverridesAtom.ts +17 -0
  165. package/src/core/atoms/themes/editorial.ts +184 -0
  166. package/src/core/atoms/themes/monochrome.ts +197 -0
  167. package/src/core/atoms/themes/rosePine.ts +208 -0
  168. package/src/core/atoms/themes/softBrutalism.ts +221 -0
  169. package/src/core/atoms/themes/terminal.ts +186 -0
  170. package/src/core/components/Flex.tsx +101 -1
  171. package/src/core/components/Text.tsx +1 -1
  172. package/src/core/components/buttons/ActionButton.tsx +109 -87
  173. package/src/core/components/buttons/DarkModeButton.tsx +3 -3
  174. package/src/core/components/buttons/LanguageButton.tsx +1 -1
  175. package/src/core/components/buttons/OmnibarButton.tsx +1 -2
  176. package/src/core/components/buttons/ThemeButton.tsx +40 -11
  177. package/src/core/components/buttons/ThemeExpertModal.tsx +184 -0
  178. package/src/core/components/buttons/ToggleSidebarButton.tsx +1 -2
  179. package/src/core/components/data/DetailDrawer.tsx +102 -96
  180. package/src/core/components/data/DetailList.tsx +2 -1
  181. package/src/core/components/layout/AppBar.tsx +10 -0
  182. package/src/core/components/layout/Breadcrumb.tsx +3 -6
  183. package/src/core/components/layout/DashboardShell.tsx +28 -11
  184. package/src/core/components/layout/Sidebar.tsx +18 -235
  185. package/src/core/components/layout/SidebarCollapsedItem.tsx +91 -0
  186. package/src/core/components/layout/SidebarItem.tsx +146 -0
  187. package/src/core/components/layout/index.ts +3 -1
  188. package/src/core/constants/ui.ts +5 -5
  189. package/src/core/form/components/Control.tsx +31 -29
  190. package/src/core/form/components/ControlArray.tsx +13 -39
  191. package/src/core/form/components/ControlDate.tsx +10 -21
  192. package/src/core/form/components/ControlNumber.tsx +4 -33
  193. package/src/core/form/components/ControlQueryBuilder.tsx +12 -175
  194. package/src/core/form/components/ControlQueryBuilderHelp.tsx +165 -0
  195. package/src/core/form/components/ControlSelect.browser.spec.tsx +343 -0
  196. package/src/core/form/components/ControlSelect.tsx +294 -92
  197. package/src/core/form/components/TypeForm.browser.spec.tsx +3 -3
  198. package/src/core/form/components/TypeForm.tsx +5 -2
  199. package/src/core/form/index.ts +8 -1
  200. package/src/core/form/utils/parseInput.ts +7 -3
  201. package/src/core/hooks/useTheme.ts +26 -3
  202. package/src/core/index.ts +9 -2
  203. package/src/core/interfaces/AlephaTheme.ts +2 -0
  204. package/src/core/json/components/JsonViewer.tsx +103 -319
  205. package/src/core/json/components/JsonViewerCopyButton.tsx +46 -0
  206. package/src/core/json/components/JsonViewerRowNode.tsx +120 -0
  207. package/src/core/json/components/JsonViewerShared.ts +76 -0
  208. package/src/core/providers/ThemeProvider.ts +108 -8
  209. package/src/core/services/DialogService.tsx +24 -3
  210. package/src/core/styles.css +33 -20
  211. package/src/core/table/components/ColumnPicker.tsx +3 -3
  212. package/src/core/table/components/DataTable.tsx +233 -143
  213. package/src/core/table/components/DataTableFilters.tsx +6 -16
  214. package/src/core/table/components/DataTablePagination.tsx +58 -29
  215. package/src/core/table/components/DataTableToolbar.tsx +16 -7
  216. package/src/core/table/components/FilterPicker.tsx +3 -3
  217. package/src/core/table/index.ts +1 -0
  218. package/src/core/table/interfaces/types.ts +42 -9
  219. package/src/core/utils/icons.tsx +2 -2
  220. package/src/demo/DemoRouter.ts +8 -1
  221. package/src/demo/components/DemoLayout.tsx +12 -2
  222. package/src/demo/components/auth/DemoLogin.tsx +35 -28
  223. package/src/demo/components/auth/DemoRegister.tsx +35 -49
  224. package/src/demo/components/auth/DemoResetPassword.tsx +5 -9
  225. package/src/demo/components/auth/DemoVerifyEmail.tsx +7 -6
  226. package/src/demo/components/core/DemoButton.tsx +123 -103
  227. package/src/demo/components/core/DemoControlSelect.tsx +325 -0
  228. package/src/demo/components/core/DemoDataTable.tsx +255 -241
  229. package/src/demo/components/core/DemoTypeForm.tsx +7 -2
  230. package/src/demo/components/shared/MacWindow.tsx +5 -11
  231. package/src/demo/components/shared/Showcase.tsx +28 -42
  232. package/dist/admin/AdminApiKeys-C-6_Q-lH.js.map +0 -1
  233. package/dist/admin/AdminAudits-Bgbf04hO.js.map +0 -1
  234. package/dist/admin/AdminFiles-B9a7G3cY.js.map +0 -1
  235. package/dist/admin/AdminJobExecutions-B9cek5dl.js.map +0 -1
  236. package/dist/admin/AdminJobRegistry-DFgV3oqx.js.map +0 -1
  237. package/dist/admin/AdminLayout-DHsvWxVB.js +0 -70
  238. package/dist/admin/AdminLayout-DHsvWxVB.js.map +0 -1
  239. package/dist/admin/AdminParameters-DHw9ATgl.js.map +0 -1
  240. package/dist/admin/AdminSessions-BhGJPI3z.js.map +0 -1
  241. package/dist/admin/AdminUserLayout-BdC4Te8m.js.map +0 -1
  242. package/dist/admin/AdminUserSessions-1uzcx02z.js.map +0 -1
  243. package/dist/admin/AdminUsers-C85c3eiQ.js +0 -121
  244. package/dist/admin/AdminUsers-C85c3eiQ.js.map +0 -1
  245. package/dist/admin/Login-BGheURrg.js +0 -219
  246. package/dist/admin/Login-BGheURrg.js.map +0 -1
  247. package/dist/admin/Profile-B-c9pCPf.js.map +0 -1
  248. package/dist/admin/Register-Cs10l8vX.js.map +0 -1
  249. package/dist/admin/ResetPassword-BwDdfkGH.js.map +0 -1
  250. package/dist/admin/VerifyEmail-DfXHAiQl.js.map +0 -1
  251. package/dist/admin/auth-Dr0Cf8I7.js +0 -319
  252. package/dist/admin/auth-Dr0Cf8I7.js.map +0 -1
  253. package/dist/admin/core-2xoLiT0o.js.map +0 -1
  254. package/dist/auth/Login-Denw_UGy.js +0 -219
  255. package/dist/auth/Login-Denw_UGy.js.map +0 -1
  256. package/dist/auth/Profile-BMX_Ar_s.js.map +0 -1
  257. package/dist/auth/Register-6hi_cpfF.js.map +0 -1
  258. package/dist/auth/ResetPassword-CqfTk1FI.js.map +0 -1
  259. package/dist/auth/VerifyEmail-nWiSTMjF.js.map +0 -1
  260. package/dist/auth/core-niW0sFLv.js.map +0 -1
  261. package/dist/demo/DemoButton-BmaWZVwf.js +0 -178
  262. package/dist/demo/DemoButton-BmaWZVwf.js.map +0 -1
  263. package/dist/demo/DemoDataTable-Z9xyV221.js +0 -362
  264. package/dist/demo/DemoDataTable-Z9xyV221.js.map +0 -1
  265. package/dist/demo/DemoLayout-C56xb5EE.js.map +0 -1
  266. package/dist/demo/DemoLogin-BZwpicOS.js.map +0 -1
  267. package/dist/demo/DemoRegister-C7_qc4MJ.js.map +0 -1
  268. package/dist/demo/DemoResetPassword-BI1Ct4Dw.js.map +0 -1
  269. package/dist/demo/DemoTypeForm-DDzWoMSV.js.map +0 -1
  270. package/dist/demo/DemoVerifyEmail-C_Irdnov.js +0 -30
  271. package/dist/demo/DemoVerifyEmail-C_Irdnov.js.map +0 -1
  272. package/dist/demo/Login-hSOU3jZc.js +0 -219
  273. package/dist/demo/Login-hSOU3jZc.js.map +0 -1
  274. package/dist/demo/Profile-CWqti7FB.js.map +0 -1
  275. package/dist/demo/Register-a70LPgs2.js.map +0 -1
  276. package/dist/demo/ResetPassword-DWN0lzr5.js.map +0 -1
  277. package/dist/demo/Showcase-Dq3MISpd.js.map +0 -1
  278. package/dist/demo/VerifyEmail-DZWL72K4.js.map +0 -1
  279. package/dist/demo/core-RCUw1Q-a.js.map +0 -1
  280. package/src/demo/styles.css +0 -0
@@ -1,4 +1,4 @@
1
- import { ActionButton, Flex } from "@alepha/ui";
1
+ import { ActionButton, Flex, useDialog } from "@alepha/ui";
2
2
  import {
3
3
  IconCheck,
4
4
  IconDownload,
@@ -37,6 +37,127 @@ const showcaseSchema = t.object({
37
37
  }),
38
38
  });
39
39
 
40
+ interface ButtonPreviewProps {
41
+ variant:
42
+ | "filled"
43
+ | "light"
44
+ | "outline"
45
+ | "subtle"
46
+ | "default"
47
+ | "transparent";
48
+ size: "xs" | "sm" | "md" | "lg" | "xl";
49
+ intent: "none" | "primary" | "success" | "danger" | "warning" | "info";
50
+ disabled: boolean;
51
+ loading: boolean;
52
+ }
53
+
54
+ const ButtonPreview = (props: ButtonPreviewProps) => {
55
+ const dialog = useDialog();
56
+
57
+ return (
58
+ <Flex col gap="xl" p="md">
59
+ <Flex gap="md" wrap="wrap" centerY>
60
+ <ActionButton
61
+ variant={props.variant}
62
+ size={props.size}
63
+ intent={props.intent}
64
+ disabled={props.disabled}
65
+ loading={props.loading}
66
+ onClick={() => dialog.alert({ message: "Clicked" })}
67
+ >
68
+ Default
69
+ </ActionButton>
70
+ <ActionButton
71
+ variant={props.variant}
72
+ size={props.size}
73
+ intent={props.intent}
74
+ disabled={props.disabled}
75
+ loading={props.loading}
76
+ icon={IconPlus}
77
+ onClick={() => dialog.alert({ message: "Create" })}
78
+ >
79
+ Create
80
+ </ActionButton>
81
+ <ActionButton
82
+ variant={props.variant}
83
+ size={props.size}
84
+ intent={props.intent}
85
+ disabled={props.disabled}
86
+ loading={props.loading}
87
+ icon={IconTrash}
88
+ onClick={() => dialog.alert({ message: "Delete" })}
89
+ />
90
+ </Flex>
91
+
92
+ <Flex gap="md" wrap="wrap" centerY>
93
+ <ActionButton
94
+ variant="filled"
95
+ size={props.size}
96
+ intent="primary"
97
+ icon={IconCheck}
98
+ onClick={() => {}}
99
+ >
100
+ Save
101
+ </ActionButton>
102
+ <ActionButton
103
+ variant="filled"
104
+ size={props.size}
105
+ intent="danger"
106
+ icon={IconTrash}
107
+ confirm="Are you sure?"
108
+ onClick={() => dialog.alert({ message: "Deleted" })}
109
+ >
110
+ Delete
111
+ </ActionButton>
112
+ <ActionButton
113
+ variant="light"
114
+ size={props.size}
115
+ icon={IconDownload}
116
+ onClick={() => {}}
117
+ >
118
+ Export
119
+ </ActionButton>
120
+ <ActionButton
121
+ variant="subtle"
122
+ size={props.size}
123
+ icon={IconSettings}
124
+ onClick={() => {}}
125
+ />
126
+ </Flex>
127
+
128
+ <Flex gap="md" wrap="wrap" centerY>
129
+ <ActionButton
130
+ variant={props.variant}
131
+ size={props.size}
132
+ menu={{
133
+ items: [
134
+ { label: "Edit", icon: <IconSettings size={14} /> },
135
+ { type: "divider" },
136
+ {
137
+ label: "Delete",
138
+ icon: <IconTrash size={14} />,
139
+ color: "red",
140
+ },
141
+ ],
142
+ }}
143
+ onClick={() => {}}
144
+ >
145
+ With Menu
146
+ </ActionButton>
147
+ <ActionButton
148
+ variant={props.variant}
149
+ size={props.size}
150
+ tooltip="This button has a tooltip"
151
+ icon={IconSettings}
152
+ onClick={() => {}}
153
+ >
154
+ With Tooltip
155
+ </ActionButton>
156
+ </Flex>
157
+ </Flex>
158
+ );
159
+ };
160
+
40
161
  const DemoActionButton = () => {
41
162
  return (
42
163
  <Showcase
@@ -51,108 +172,7 @@ const DemoActionButton = () => {
51
172
  }}
52
173
  columns={1}
53
174
  >
54
- {(props) => (
55
- <Flex col gap="xl" p="md">
56
- <Flex gap="md" wrap="wrap" centerY>
57
- <ActionButton
58
- variant={props.variant}
59
- size={props.size}
60
- intent={props.intent}
61
- disabled={props.disabled}
62
- loading={props.loading}
63
- onClick={() => alert("Clicked")}
64
- >
65
- Default
66
- </ActionButton>
67
- <ActionButton
68
- variant={props.variant}
69
- size={props.size}
70
- intent={props.intent}
71
- disabled={props.disabled}
72
- loading={props.loading}
73
- icon={IconPlus}
74
- onClick={() => alert("Create")}
75
- >
76
- Create
77
- </ActionButton>
78
- <ActionButton
79
- variant={props.variant}
80
- size={props.size}
81
- intent={props.intent}
82
- disabled={props.disabled}
83
- loading={props.loading}
84
- icon={IconTrash}
85
- onClick={() => alert("Delete")}
86
- />
87
- </Flex>
88
-
89
- <Flex gap="md" wrap="wrap" centerY>
90
- <ActionButton
91
- variant="filled"
92
- size={props.size}
93
- intent="primary"
94
- icon={IconCheck}
95
- onClick={() => {}}
96
- >
97
- Save
98
- </ActionButton>
99
- <ActionButton
100
- variant="filled"
101
- size={props.size}
102
- intent="danger"
103
- icon={IconTrash}
104
- confirm="Are you sure?"
105
- onClick={() => alert("Deleted")}
106
- >
107
- Delete
108
- </ActionButton>
109
- <ActionButton
110
- variant="light"
111
- size={props.size}
112
- icon={IconDownload}
113
- onClick={() => {}}
114
- >
115
- Export
116
- </ActionButton>
117
- <ActionButton
118
- variant="subtle"
119
- size={props.size}
120
- icon={IconSettings}
121
- onClick={() => {}}
122
- />
123
- </Flex>
124
-
125
- <Flex gap="md" wrap="wrap" centerY>
126
- <ActionButton
127
- variant={props.variant}
128
- size={props.size}
129
- menu={{
130
- items: [
131
- { label: "Edit", icon: <IconSettings size={14} /> },
132
- { type: "divider" },
133
- {
134
- label: "Delete",
135
- icon: <IconTrash size={14} />,
136
- color: "red",
137
- },
138
- ],
139
- }}
140
- onClick={() => {}}
141
- >
142
- With Menu
143
- </ActionButton>
144
- <ActionButton
145
- variant={props.variant}
146
- size={props.size}
147
- tooltip="This button has a tooltip"
148
- icon={IconSettings}
149
- onClick={() => {}}
150
- >
151
- With Tooltip
152
- </ActionButton>
153
- </Flex>
154
- </Flex>
155
- )}
175
+ {(props) => <ButtonPreview {...(props as ButtonPreviewProps)} />}
156
176
  </Showcase>
157
177
  );
158
178
  };
@@ -0,0 +1,325 @@
1
+ import {
2
+ Control,
3
+ Flex,
4
+ type SelectValueLabel,
5
+ Text,
6
+ TypeForm,
7
+ useDialog,
8
+ } from "@alepha/ui";
9
+ import { t } from "alepha";
10
+ import { useForm } from "alepha/react/form";
11
+ import Showcase from "../shared/Showcase.tsx";
12
+
13
+ // region schemas
14
+
15
+ const selectSchema = t.object({
16
+ status: t.enum(["active", "inactive", "pending"], {
17
+ title: "Status",
18
+ default: "active",
19
+ }),
20
+ priority: t.enum(["low", "medium", "high", "critical"], {
21
+ title: "Priority",
22
+ }),
23
+ });
24
+
25
+ const multiSelectSchema = t.object({
26
+ roles: t.array(t.enum(["admin", "editor", "viewer", "moderator"]), {
27
+ title: "Roles",
28
+ default: ["editor"],
29
+ }),
30
+ });
31
+
32
+ const autocompleteSchema = t.object({
33
+ city: t.enum(["Paris", "London", "Tokyo", "New York", "Berlin", "Sydney"], {
34
+ title: "City",
35
+ default: "Paris",
36
+ }),
37
+ });
38
+
39
+ const tagsSchema = t.object({
40
+ tags: t.array(t.text(), {
41
+ title: "Tags",
42
+ default: ["typescript", "react"],
43
+ }),
44
+ });
45
+
46
+ const segmentedSchema = t.object({
47
+ theme: t.enum(["light", "dark", "auto"], {
48
+ title: "Theme",
49
+ default: "auto",
50
+ }),
51
+ });
52
+
53
+ const booleanSchema = t.object({
54
+ enabled: t.boolean({
55
+ title: "Enabled",
56
+ default: true,
57
+ }),
58
+ });
59
+
60
+ const numericSchema = t.object({
61
+ rating: t.integer({
62
+ title: "Rating",
63
+ enum: [1, 2, 3, 4, 5] as any,
64
+ }),
65
+ });
66
+
67
+ // endregion
68
+
69
+ // region async loader
70
+
71
+ const allCities = Array.from({ length: 200 }, (_, i) => ({
72
+ value: `city-${i}`,
73
+ label: `City ${i} - ${["Alpha", "Beta", "Gamma", "Delta", "Epsilon"][i % 5]}`,
74
+ }));
75
+
76
+ const cityLoader = async (
77
+ search: string,
78
+ resolve?: string[],
79
+ ): Promise<SelectValueLabel[]> => {
80
+ await new Promise((r) => setTimeout(r, 300));
81
+
82
+ if (resolve) {
83
+ return allCities.filter((c) => resolve.includes(c.value));
84
+ }
85
+
86
+ if (!search) return allCities;
87
+ return allCities.filter((c) =>
88
+ c.label.toLowerCase().includes(search.toLowerCase()),
89
+ );
90
+ };
91
+
92
+ const shortCities = allCities.slice(0, 20);
93
+ const shortCityLoader = async (): Promise<SelectValueLabel[]> => {
94
+ await new Promise((r) => setTimeout(r, 300));
95
+ return shortCities;
96
+ };
97
+
98
+ // endregion
99
+
100
+ // region shared hook
101
+
102
+ const useAlertValues = () => {
103
+ const dialog = useDialog();
104
+ return (values: any) => {
105
+ dialog.alert({
106
+ title: "Submitted",
107
+ message: JSON.stringify(values, null, 2),
108
+ });
109
+ };
110
+ };
111
+
112
+ // endregion
113
+
114
+ // region variant components
115
+
116
+ const SelectVariant = () => {
117
+ const handler = useAlertValues();
118
+ const form = useForm({ schema: selectSchema, handler }, []);
119
+ return (
120
+ <TypeForm fill form={form} submitButtonProps={{ children: "Submit" }} />
121
+ );
122
+ };
123
+
124
+ const MultiSelectVariant = () => {
125
+ const handler = useAlertValues();
126
+ const form = useForm({ schema: multiSelectSchema, handler }, []);
127
+ return (
128
+ <TypeForm fill form={form} submitButtonProps={{ children: "Submit" }} />
129
+ );
130
+ };
131
+
132
+ const AutocompleteVariant = () => {
133
+ const handler = useAlertValues();
134
+ const form = useForm({ schema: autocompleteSchema, handler }, []);
135
+ return (
136
+ <TypeForm
137
+ fill
138
+ form={form}
139
+ fieldControlProps={{ city: { select: { creatable: true } } }}
140
+ submitButtonProps={{ children: "Submit" }}
141
+ />
142
+ );
143
+ };
144
+
145
+ const TagsVariant = () => {
146
+ const handler = useAlertValues();
147
+ const form = useForm({ schema: tagsSchema, handler }, []);
148
+ return (
149
+ <TypeForm
150
+ fill
151
+ form={form}
152
+ fieldControlProps={{ tags: { select: { creatable: true } } }}
153
+ submitButtonProps={{ children: "Submit" }}
154
+ />
155
+ );
156
+ };
157
+
158
+ const SegmentedVariant = () => {
159
+ const handler = useAlertValues();
160
+ const form = useForm({ schema: segmentedSchema, handler }, []);
161
+ return (
162
+ <TypeForm
163
+ fill
164
+ form={form}
165
+ fieldControlProps={{ theme: { segmented: true } }}
166
+ submitButtonProps={{ children: "Submit" }}
167
+ />
168
+ );
169
+ };
170
+
171
+ const BooleanVariant = () => {
172
+ const handler = useAlertValues();
173
+ const form = useForm({ schema: booleanSchema, handler }, []);
174
+ return (
175
+ <TypeForm fill form={form} submitButtonProps={{ children: "Submit" }} />
176
+ );
177
+ };
178
+
179
+ const NumericVariant = () => {
180
+ const handler = useAlertValues();
181
+ const form = useForm({ schema: numericSchema, handler }, []);
182
+ return (
183
+ <TypeForm
184
+ fill
185
+ form={form}
186
+ fieldControlProps={{
187
+ rating: {
188
+ select: {
189
+ selectProps: {
190
+ data: [
191
+ { value: "1", label: "1 - Poor" },
192
+ { value: "2", label: "2 - Fair" },
193
+ { value: "3", label: "3 - Good" },
194
+ { value: "4", label: "4 - Great" },
195
+ { value: "5", label: "5 - Excellent" },
196
+ ],
197
+ },
198
+ },
199
+ },
200
+ }}
201
+ submitButtonProps={{ children: "Submit" }}
202
+ />
203
+ );
204
+ };
205
+
206
+ const AsyncShortVariant = () => {
207
+ const handler = useAlertValues();
208
+ const asyncSchema = t.object({ city: t.text({ title: "City" }) });
209
+ const form = useForm({ schema: asyncSchema, handler }, []);
210
+ return (
211
+ <Control
212
+ input={form.input.city}
213
+ select={{
214
+ loader: shortCityLoader,
215
+ }}
216
+ />
217
+ );
218
+ };
219
+
220
+ const AsyncLongVariant = () => {
221
+ const handler = useAlertValues();
222
+ const asyncSchema = t.object({ city: t.text({ title: "City" }) });
223
+ const form = useForm({ schema: asyncSchema, handler }, []);
224
+ return (
225
+ <Control
226
+ input={form.input.city}
227
+ select={{
228
+ loader: cityLoader,
229
+ selectProps: { defaultValue: "city-42" },
230
+ }}
231
+ />
232
+ );
233
+ };
234
+
235
+ // endregion
236
+
237
+ const variants: {
238
+ title: string;
239
+ description: string;
240
+ component: () => React.ReactNode;
241
+ }[] = [
242
+ {
243
+ title: "Select",
244
+ description: "Single enum value with dropdown",
245
+ component: SelectVariant,
246
+ },
247
+ {
248
+ title: "Multi Select",
249
+ description: "Array of enum values with multi-select dropdown",
250
+ component: MultiSelectVariant,
251
+ },
252
+ {
253
+ title: "Autocomplete",
254
+ description:
255
+ "Single value with freeform text input — type any value or pick from suggestions",
256
+ component: AutocompleteVariant,
257
+ },
258
+ {
259
+ title: "Tags",
260
+ description: "Array of freeform values — type and press Enter to add tags",
261
+ component: TagsVariant,
262
+ },
263
+ {
264
+ title: "Segmented",
265
+ description: "Enum rendered as segmented toggle buttons",
266
+ component: SegmentedVariant,
267
+ },
268
+ {
269
+ title: "Boolean",
270
+ description:
271
+ "Boolean value — select value is coerced to true/false on submit",
272
+ component: BooleanVariant,
273
+ },
274
+ {
275
+ title: "Numeric",
276
+ description: "Integer enum — select value is coerced to number on submit",
277
+ component: NumericVariant,
278
+ },
279
+ {
280
+ title: "Async (Short)",
281
+ description:
282
+ "Loader returns <= 100 items — client-side filtering, single network call",
283
+ component: AsyncShortVariant,
284
+ },
285
+ {
286
+ title: "Async (Long)",
287
+ description:
288
+ "Loader returns > 100 items — server-side filtering with debounced search",
289
+ component: AsyncLongVariant,
290
+ },
291
+ ];
292
+
293
+ const showcaseSchema = t.object({});
294
+
295
+ const DemoControlSelect = () => {
296
+ return (
297
+ <Showcase title="ControlSelect" schema={showcaseSchema}>
298
+ {() => (
299
+ <Flex direction="column" gap="xl">
300
+ {variants.map((variant) => (
301
+ <Flex
302
+ rounded
303
+ shadowed={"sm"}
304
+ bordered
305
+ key={variant.title}
306
+ direction="column"
307
+ >
308
+ <Flex elevated rounded col borderedBottom p={"sm"}>
309
+ <Text fw={600}>{variant.title}</Text>
310
+ <Text size="sm" c="dimmed">
311
+ {variant.description}
312
+ </Text>
313
+ </Flex>
314
+ <Flex rounded surface p={"xs"}>
315
+ <variant.component />
316
+ </Flex>
317
+ </Flex>
318
+ ))}
319
+ </Flex>
320
+ )}
321
+ </Showcase>
322
+ );
323
+ };
324
+
325
+ export default DemoControlSelect;