@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 { _ as AlephaMantineProvider } from "./core-RCUw1Q-a.js";
1
+ import { _ as AlephaMantineProvider } from "./core-DFgB3yU4.js";
2
2
  import { Flex } from "@mantine/core";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { NestedView } from "alepha/react/router";
@@ -19,4 +19,4 @@ const AuthLayout = () => {
19
19
 
20
20
  //#endregion
21
21
  export { AuthLayout as default };
22
- //# sourceMappingURL=AuthLayout-jLa0aKsI.js.map
22
+ //# sourceMappingURL=AuthLayout-Brri4A-L.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AuthLayout-jLa0aKsI.js","names":[],"sources":["../../src/auth/components/AuthLayout.tsx"],"sourcesContent":["import { AlephaMantineProvider } from \"@alepha/ui\";\nimport { Flex } from \"@mantine/core\";\nimport { NestedView } from \"alepha/react/router\";\n\nconst AuthLayout = () => {\n return (\n <AlephaMantineProvider omnibar={false}>\n <Flex flex={1} align={\"center\"} h={\"100vh\"} justify={\"center\"}>\n <NestedView />\n </Flex>\n </AlephaMantineProvider>\n );\n};\n\nexport default AuthLayout;\n"],"mappings":";;;;;;AAIA,MAAM,mBAAmB;AACvB,QACE,oBAAC;EAAsB,SAAS;YAC9B,oBAAC;GAAK,MAAM;GAAG,OAAO;GAAU,GAAG;GAAS,SAAS;aACnD,oBAAC,eAAa;IACT;GACe"}
1
+ {"version":3,"file":"AuthLayout-Brri4A-L.js","names":[],"sources":["../../src/auth/components/AuthLayout.tsx"],"sourcesContent":["import { AlephaMantineProvider } from \"@alepha/ui\";\nimport { Flex } from \"@mantine/core\";\nimport { NestedView } from \"alepha/react/router\";\n\nconst AuthLayout = () => {\n return (\n <AlephaMantineProvider omnibar={false}>\n <Flex flex={1} align={\"center\"} h={\"100vh\"} justify={\"center\"}>\n <NestedView />\n </Flex>\n </AlephaMantineProvider>\n );\n};\n\nexport default AuthLayout;\n"],"mappings":";;;;;;AAIA,MAAM,mBAAmB;AACvB,QACE,oBAAC;EAAsB,SAAS;YAC9B,oBAAC;GAAK,MAAM;GAAG,OAAO;GAAU,GAAG;GAAS,SAAS;aACnD,oBAAC,eAAa;IACT;GACe"}
@@ -0,0 +1,182 @@
1
+ import { f as Flex, h as ActionButton, m as useDialog } from "./core-DFgB3yU4.js";
2
+ import { t as Showcase } from "./Showcase-D6Fxt4X4.js";
3
+ import { t } from "alepha";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { IconCheck, IconDownload, IconPlus, IconSettings, IconTrash } from "@tabler/icons-react";
6
+
7
+ //#region ../../src/demo/components/core/DemoButton.tsx
8
+ const showcaseSchema = t.object({
9
+ variant: t.enum([
10
+ "filled",
11
+ "light",
12
+ "outline",
13
+ "subtle",
14
+ "default",
15
+ "transparent"
16
+ ], {
17
+ title: "variant",
18
+ default: "filled"
19
+ }),
20
+ size: t.enum([
21
+ "xs",
22
+ "sm",
23
+ "md",
24
+ "lg",
25
+ "xl"
26
+ ], {
27
+ title: "size",
28
+ default: "md"
29
+ }),
30
+ intent: t.enum([
31
+ "none",
32
+ "primary",
33
+ "success",
34
+ "danger",
35
+ "warning",
36
+ "info"
37
+ ], {
38
+ title: "intent",
39
+ default: "none"
40
+ }),
41
+ disabled: t.boolean({
42
+ title: "disabled",
43
+ default: false,
44
+ $control: { switch: true }
45
+ }),
46
+ loading: t.boolean({
47
+ title: "loading",
48
+ default: false,
49
+ $control: { switch: true }
50
+ })
51
+ });
52
+ const ButtonPreview = (props) => {
53
+ const dialog = useDialog();
54
+ return /* @__PURE__ */ jsxs(Flex, {
55
+ col: true,
56
+ gap: "xl",
57
+ p: "md",
58
+ children: [
59
+ /* @__PURE__ */ jsxs(Flex, {
60
+ gap: "md",
61
+ wrap: "wrap",
62
+ centerY: true,
63
+ children: [
64
+ /* @__PURE__ */ jsx(ActionButton, {
65
+ variant: props.variant,
66
+ size: props.size,
67
+ intent: props.intent,
68
+ disabled: props.disabled,
69
+ loading: props.loading,
70
+ onClick: () => dialog.alert({ message: "Clicked" }),
71
+ children: "Default"
72
+ }),
73
+ /* @__PURE__ */ jsx(ActionButton, {
74
+ variant: props.variant,
75
+ size: props.size,
76
+ intent: props.intent,
77
+ disabled: props.disabled,
78
+ loading: props.loading,
79
+ icon: IconPlus,
80
+ onClick: () => dialog.alert({ message: "Create" }),
81
+ children: "Create"
82
+ }),
83
+ /* @__PURE__ */ jsx(ActionButton, {
84
+ variant: props.variant,
85
+ size: props.size,
86
+ intent: props.intent,
87
+ disabled: props.disabled,
88
+ loading: props.loading,
89
+ icon: IconTrash,
90
+ onClick: () => dialog.alert({ message: "Delete" })
91
+ })
92
+ ]
93
+ }),
94
+ /* @__PURE__ */ jsxs(Flex, {
95
+ gap: "md",
96
+ wrap: "wrap",
97
+ centerY: true,
98
+ children: [
99
+ /* @__PURE__ */ jsx(ActionButton, {
100
+ variant: "filled",
101
+ size: props.size,
102
+ intent: "primary",
103
+ icon: IconCheck,
104
+ onClick: () => {},
105
+ children: "Save"
106
+ }),
107
+ /* @__PURE__ */ jsx(ActionButton, {
108
+ variant: "filled",
109
+ size: props.size,
110
+ intent: "danger",
111
+ icon: IconTrash,
112
+ confirm: "Are you sure?",
113
+ onClick: () => dialog.alert({ message: "Deleted" }),
114
+ children: "Delete"
115
+ }),
116
+ /* @__PURE__ */ jsx(ActionButton, {
117
+ variant: "light",
118
+ size: props.size,
119
+ icon: IconDownload,
120
+ onClick: () => {},
121
+ children: "Export"
122
+ }),
123
+ /* @__PURE__ */ jsx(ActionButton, {
124
+ variant: "subtle",
125
+ size: props.size,
126
+ icon: IconSettings,
127
+ onClick: () => {}
128
+ })
129
+ ]
130
+ }),
131
+ /* @__PURE__ */ jsxs(Flex, {
132
+ gap: "md",
133
+ wrap: "wrap",
134
+ centerY: true,
135
+ children: [/* @__PURE__ */ jsx(ActionButton, {
136
+ variant: props.variant,
137
+ size: props.size,
138
+ menu: { items: [
139
+ {
140
+ label: "Edit",
141
+ icon: /* @__PURE__ */ jsx(IconSettings, { size: 14 })
142
+ },
143
+ { type: "divider" },
144
+ {
145
+ label: "Delete",
146
+ icon: /* @__PURE__ */ jsx(IconTrash, { size: 14 }),
147
+ color: "red"
148
+ }
149
+ ] },
150
+ onClick: () => {},
151
+ children: "With Menu"
152
+ }), /* @__PURE__ */ jsx(ActionButton, {
153
+ variant: props.variant,
154
+ size: props.size,
155
+ tooltip: "This button has a tooltip",
156
+ icon: IconSettings,
157
+ onClick: () => {},
158
+ children: "With Tooltip"
159
+ })]
160
+ })
161
+ ]
162
+ });
163
+ };
164
+ const DemoActionButton = () => {
165
+ return /* @__PURE__ */ jsx(Showcase, {
166
+ title: "ActionButton",
167
+ schema: showcaseSchema,
168
+ initialValues: {
169
+ variant: "filled",
170
+ size: "md",
171
+ intent: "none",
172
+ disabled: false,
173
+ loading: false
174
+ },
175
+ columns: 1,
176
+ children: (props) => /* @__PURE__ */ jsx(ButtonPreview, { ...props })
177
+ });
178
+ };
179
+
180
+ //#endregion
181
+ export { DemoActionButton as default };
182
+ //# sourceMappingURL=DemoButton-wiCxZZ_L.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DemoButton-wiCxZZ_L.js","names":[],"sources":["../../src/demo/components/core/DemoButton.tsx"],"sourcesContent":["import { ActionButton, Flex, useDialog } from \"@alepha/ui\";\nimport {\n IconCheck,\n IconDownload,\n IconPlus,\n IconSettings,\n IconTrash,\n} from \"@tabler/icons-react\";\nimport { t } from \"alepha\";\nimport Showcase from \"../shared/Showcase.tsx\";\n\nconst showcaseSchema = t.object({\n variant: t.enum(\n [\"filled\", \"light\", \"outline\", \"subtle\", \"default\", \"transparent\"],\n {\n title: \"variant\",\n default: \"filled\",\n },\n ),\n size: t.enum([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"], {\n title: \"size\",\n default: \"md\",\n }),\n intent: t.enum([\"none\", \"primary\", \"success\", \"danger\", \"warning\", \"info\"], {\n title: \"intent\",\n default: \"none\",\n }),\n disabled: t.boolean({\n title: \"disabled\",\n default: false,\n $control: { switch: true },\n }),\n loading: t.boolean({\n title: \"loading\",\n default: false,\n $control: { switch: true },\n }),\n});\n\ninterface ButtonPreviewProps {\n variant:\n | \"filled\"\n | \"light\"\n | \"outline\"\n | \"subtle\"\n | \"default\"\n | \"transparent\";\n size: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n intent: \"none\" | \"primary\" | \"success\" | \"danger\" | \"warning\" | \"info\";\n disabled: boolean;\n loading: boolean;\n}\n\nconst ButtonPreview = (props: ButtonPreviewProps) => {\n const dialog = useDialog();\n\n return (\n <Flex col gap=\"xl\" p=\"md\">\n <Flex gap=\"md\" wrap=\"wrap\" centerY>\n <ActionButton\n variant={props.variant}\n size={props.size}\n intent={props.intent}\n disabled={props.disabled}\n loading={props.loading}\n onClick={() => dialog.alert({ message: \"Clicked\" })}\n >\n Default\n </ActionButton>\n <ActionButton\n variant={props.variant}\n size={props.size}\n intent={props.intent}\n disabled={props.disabled}\n loading={props.loading}\n icon={IconPlus}\n onClick={() => dialog.alert({ message: \"Create\" })}\n >\n Create\n </ActionButton>\n <ActionButton\n variant={props.variant}\n size={props.size}\n intent={props.intent}\n disabled={props.disabled}\n loading={props.loading}\n icon={IconTrash}\n onClick={() => dialog.alert({ message: \"Delete\" })}\n />\n </Flex>\n\n <Flex gap=\"md\" wrap=\"wrap\" centerY>\n <ActionButton\n variant=\"filled\"\n size={props.size}\n intent=\"primary\"\n icon={IconCheck}\n onClick={() => {}}\n >\n Save\n </ActionButton>\n <ActionButton\n variant=\"filled\"\n size={props.size}\n intent=\"danger\"\n icon={IconTrash}\n confirm=\"Are you sure?\"\n onClick={() => dialog.alert({ message: \"Deleted\" })}\n >\n Delete\n </ActionButton>\n <ActionButton\n variant=\"light\"\n size={props.size}\n icon={IconDownload}\n onClick={() => {}}\n >\n Export\n </ActionButton>\n <ActionButton\n variant=\"subtle\"\n size={props.size}\n icon={IconSettings}\n onClick={() => {}}\n />\n </Flex>\n\n <Flex gap=\"md\" wrap=\"wrap\" centerY>\n <ActionButton\n variant={props.variant}\n size={props.size}\n menu={{\n items: [\n { label: \"Edit\", icon: <IconSettings size={14} /> },\n { type: \"divider\" },\n {\n label: \"Delete\",\n icon: <IconTrash size={14} />,\n color: \"red\",\n },\n ],\n }}\n onClick={() => {}}\n >\n With Menu\n </ActionButton>\n <ActionButton\n variant={props.variant}\n size={props.size}\n tooltip=\"This button has a tooltip\"\n icon={IconSettings}\n onClick={() => {}}\n >\n With Tooltip\n </ActionButton>\n </Flex>\n </Flex>\n );\n};\n\nconst DemoActionButton = () => {\n return (\n <Showcase\n title=\"ActionButton\"\n schema={showcaseSchema}\n initialValues={{\n variant: \"filled\",\n size: \"md\",\n intent: \"none\",\n disabled: false,\n loading: false,\n }}\n columns={1}\n >\n {(props) => <ButtonPreview {...(props as ButtonPreviewProps)} />}\n </Showcase>\n );\n};\n\nexport default DemoActionButton;\n"],"mappings":";;;;;;;AAWA,MAAM,iBAAiB,EAAE,OAAO;CAC9B,SAAS,EAAE,KACT;EAAC;EAAU;EAAS;EAAW;EAAU;EAAW;EAAc,EAClE;EACE,OAAO;EACP,SAAS;EACV,CACF;CACD,MAAM,EAAE,KAAK;EAAC;EAAM;EAAM;EAAM;EAAM;EAAK,EAAE;EAC3C,OAAO;EACP,SAAS;EACV,CAAC;CACF,QAAQ,EAAE,KAAK;EAAC;EAAQ;EAAW;EAAW;EAAU;EAAW;EAAO,EAAE;EAC1E,OAAO;EACP,SAAS;EACV,CAAC;CACF,UAAU,EAAE,QAAQ;EAClB,OAAO;EACP,SAAS;EACT,UAAU,EAAE,QAAQ,MAAM;EAC3B,CAAC;CACF,SAAS,EAAE,QAAQ;EACjB,OAAO;EACP,SAAS;EACT,UAAU,EAAE,QAAQ,MAAM;EAC3B,CAAC;CACH,CAAC;AAgBF,MAAM,iBAAiB,UAA8B;CACnD,MAAM,SAAS,WAAW;AAE1B,QACE,qBAAC;EAAK;EAAI,KAAI;EAAK,GAAE;;GACnB,qBAAC;IAAK,KAAI;IAAK,MAAK;IAAO;;KACzB,oBAAC;MACC,SAAS,MAAM;MACf,MAAM,MAAM;MACZ,QAAQ,MAAM;MACd,UAAU,MAAM;MAChB,SAAS,MAAM;MACf,eAAe,OAAO,MAAM,EAAE,SAAS,WAAW,CAAC;gBACpD;OAEc;KACf,oBAAC;MACC,SAAS,MAAM;MACf,MAAM,MAAM;MACZ,QAAQ,MAAM;MACd,UAAU,MAAM;MAChB,SAAS,MAAM;MACf,MAAM;MACN,eAAe,OAAO,MAAM,EAAE,SAAS,UAAU,CAAC;gBACnD;OAEc;KACf,oBAAC;MACC,SAAS,MAAM;MACf,MAAM,MAAM;MACZ,QAAQ,MAAM;MACd,UAAU,MAAM;MAChB,SAAS,MAAM;MACf,MAAM;MACN,eAAe,OAAO,MAAM,EAAE,SAAS,UAAU,CAAC;OAClD;;KACG;GAEP,qBAAC;IAAK,KAAI;IAAK,MAAK;IAAO;;KACzB,oBAAC;MACC,SAAQ;MACR,MAAM,MAAM;MACZ,QAAO;MACP,MAAM;MACN,eAAe;gBAChB;OAEc;KACf,oBAAC;MACC,SAAQ;MACR,MAAM,MAAM;MACZ,QAAO;MACP,MAAM;MACN,SAAQ;MACR,eAAe,OAAO,MAAM,EAAE,SAAS,WAAW,CAAC;gBACpD;OAEc;KACf,oBAAC;MACC,SAAQ;MACR,MAAM,MAAM;MACZ,MAAM;MACN,eAAe;gBAChB;OAEc;KACf,oBAAC;MACC,SAAQ;MACR,MAAM,MAAM;MACZ,MAAM;MACN,eAAe;OACf;;KACG;GAEP,qBAAC;IAAK,KAAI;IAAK,MAAK;IAAO;eACzB,oBAAC;KACC,SAAS,MAAM;KACf,MAAM,MAAM;KACZ,MAAM,EACJ,OAAO;MACL;OAAE,OAAO;OAAQ,MAAM,oBAAC,gBAAa,MAAM,KAAM;OAAE;MACnD,EAAE,MAAM,WAAW;MACnB;OACE,OAAO;OACP,MAAM,oBAAC,aAAU,MAAM,KAAM;OAC7B,OAAO;OACR;MACF,EACF;KACD,eAAe;eAChB;MAEc,EACf,oBAAC;KACC,SAAS,MAAM;KACf,MAAM,MAAM;KACZ,SAAQ;KACR,MAAM;KACN,eAAe;eAChB;MAEc;KACV;;GACF;;AAIX,MAAM,yBAAyB;AAC7B,QACE,oBAAC;EACC,OAAM;EACN,QAAQ;EACR,eAAe;GACb,SAAS;GACT,MAAM;GACN,QAAQ;GACR,UAAU;GACV,SAAS;GACV;EACD,SAAS;aAEP,UAAU,oBAAC,iBAAc,GAAK,QAAgC;GACvD"}
@@ -0,0 +1,305 @@
1
+ import { a as TypeForm, f as Flex, l as Text, m as useDialog, o as Control } from "./core-DFgB3yU4.js";
2
+ import { t as Showcase } from "./Showcase-D6Fxt4X4.js";
3
+ import { t } from "alepha";
4
+ import { useForm } from "alepha/react/form";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+
7
+ //#region ../../src/demo/components/core/DemoControlSelect.tsx
8
+ const selectSchema = t.object({
9
+ status: t.enum([
10
+ "active",
11
+ "inactive",
12
+ "pending"
13
+ ], {
14
+ title: "Status",
15
+ default: "active"
16
+ }),
17
+ priority: t.enum([
18
+ "low",
19
+ "medium",
20
+ "high",
21
+ "critical"
22
+ ], { title: "Priority" })
23
+ });
24
+ const multiSelectSchema = t.object({ roles: t.array(t.enum([
25
+ "admin",
26
+ "editor",
27
+ "viewer",
28
+ "moderator"
29
+ ]), {
30
+ title: "Roles",
31
+ default: ["editor"]
32
+ }) });
33
+ const autocompleteSchema = t.object({ city: t.enum([
34
+ "Paris",
35
+ "London",
36
+ "Tokyo",
37
+ "New York",
38
+ "Berlin",
39
+ "Sydney"
40
+ ], {
41
+ title: "City",
42
+ default: "Paris"
43
+ }) });
44
+ const tagsSchema = t.object({ tags: t.array(t.text(), {
45
+ title: "Tags",
46
+ default: ["typescript", "react"]
47
+ }) });
48
+ const segmentedSchema = t.object({ theme: t.enum([
49
+ "light",
50
+ "dark",
51
+ "auto"
52
+ ], {
53
+ title: "Theme",
54
+ default: "auto"
55
+ }) });
56
+ const booleanSchema = t.object({ enabled: t.boolean({
57
+ title: "Enabled",
58
+ default: true
59
+ }) });
60
+ const numericSchema = t.object({ rating: t.integer({
61
+ title: "Rating",
62
+ enum: [
63
+ 1,
64
+ 2,
65
+ 3,
66
+ 4,
67
+ 5
68
+ ]
69
+ }) });
70
+ const allCities = Array.from({ length: 200 }, (_, i) => ({
71
+ value: `city-${i}`,
72
+ label: `City ${i} - ${[
73
+ "Alpha",
74
+ "Beta",
75
+ "Gamma",
76
+ "Delta",
77
+ "Epsilon"
78
+ ][i % 5]}`
79
+ }));
80
+ const cityLoader = async (search, resolve) => {
81
+ await new Promise((r) => setTimeout(r, 300));
82
+ if (resolve) return allCities.filter((c) => resolve.includes(c.value));
83
+ if (!search) return allCities;
84
+ return allCities.filter((c) => c.label.toLowerCase().includes(search.toLowerCase()));
85
+ };
86
+ const shortCities = allCities.slice(0, 20);
87
+ const shortCityLoader = async () => {
88
+ await new Promise((r) => setTimeout(r, 300));
89
+ return shortCities;
90
+ };
91
+ const useAlertValues = () => {
92
+ const dialog = useDialog();
93
+ return (values) => {
94
+ dialog.alert({
95
+ title: "Submitted",
96
+ message: JSON.stringify(values, null, 2)
97
+ });
98
+ };
99
+ };
100
+ const SelectVariant = () => {
101
+ return /* @__PURE__ */ jsx(TypeForm, {
102
+ fill: true,
103
+ form: useForm({
104
+ schema: selectSchema,
105
+ handler: useAlertValues()
106
+ }, []),
107
+ submitButtonProps: { children: "Submit" }
108
+ });
109
+ };
110
+ const MultiSelectVariant = () => {
111
+ return /* @__PURE__ */ jsx(TypeForm, {
112
+ fill: true,
113
+ form: useForm({
114
+ schema: multiSelectSchema,
115
+ handler: useAlertValues()
116
+ }, []),
117
+ submitButtonProps: { children: "Submit" }
118
+ });
119
+ };
120
+ const AutocompleteVariant = () => {
121
+ return /* @__PURE__ */ jsx(TypeForm, {
122
+ fill: true,
123
+ form: useForm({
124
+ schema: autocompleteSchema,
125
+ handler: useAlertValues()
126
+ }, []),
127
+ fieldControlProps: { city: { select: { creatable: true } } },
128
+ submitButtonProps: { children: "Submit" }
129
+ });
130
+ };
131
+ const TagsVariant = () => {
132
+ return /* @__PURE__ */ jsx(TypeForm, {
133
+ fill: true,
134
+ form: useForm({
135
+ schema: tagsSchema,
136
+ handler: useAlertValues()
137
+ }, []),
138
+ fieldControlProps: { tags: { select: { creatable: true } } },
139
+ submitButtonProps: { children: "Submit" }
140
+ });
141
+ };
142
+ const SegmentedVariant = () => {
143
+ return /* @__PURE__ */ jsx(TypeForm, {
144
+ fill: true,
145
+ form: useForm({
146
+ schema: segmentedSchema,
147
+ handler: useAlertValues()
148
+ }, []),
149
+ fieldControlProps: { theme: { segmented: true } },
150
+ submitButtonProps: { children: "Submit" }
151
+ });
152
+ };
153
+ const BooleanVariant = () => {
154
+ return /* @__PURE__ */ jsx(TypeForm, {
155
+ fill: true,
156
+ form: useForm({
157
+ schema: booleanSchema,
158
+ handler: useAlertValues()
159
+ }, []),
160
+ submitButtonProps: { children: "Submit" }
161
+ });
162
+ };
163
+ const NumericVariant = () => {
164
+ return /* @__PURE__ */ jsx(TypeForm, {
165
+ fill: true,
166
+ form: useForm({
167
+ schema: numericSchema,
168
+ handler: useAlertValues()
169
+ }, []),
170
+ fieldControlProps: { rating: { select: { selectProps: { data: [
171
+ {
172
+ value: "1",
173
+ label: "1 - Poor"
174
+ },
175
+ {
176
+ value: "2",
177
+ label: "2 - Fair"
178
+ },
179
+ {
180
+ value: "3",
181
+ label: "3 - Good"
182
+ },
183
+ {
184
+ value: "4",
185
+ label: "4 - Great"
186
+ },
187
+ {
188
+ value: "5",
189
+ label: "5 - Excellent"
190
+ }
191
+ ] } } } },
192
+ submitButtonProps: { children: "Submit" }
193
+ });
194
+ };
195
+ const AsyncShortVariant = () => {
196
+ const handler = useAlertValues();
197
+ return /* @__PURE__ */ jsx(Control, {
198
+ input: useForm({
199
+ schema: t.object({ city: t.text({ title: "City" }) }),
200
+ handler
201
+ }, []).input.city,
202
+ select: { loader: shortCityLoader }
203
+ });
204
+ };
205
+ const AsyncLongVariant = () => {
206
+ const handler = useAlertValues();
207
+ return /* @__PURE__ */ jsx(Control, {
208
+ input: useForm({
209
+ schema: t.object({ city: t.text({ title: "City" }) }),
210
+ handler
211
+ }, []).input.city,
212
+ select: {
213
+ loader: cityLoader,
214
+ selectProps: { defaultValue: "city-42" }
215
+ }
216
+ });
217
+ };
218
+ const variants = [
219
+ {
220
+ title: "Select",
221
+ description: "Single enum value with dropdown",
222
+ component: SelectVariant
223
+ },
224
+ {
225
+ title: "Multi Select",
226
+ description: "Array of enum values with multi-select dropdown",
227
+ component: MultiSelectVariant
228
+ },
229
+ {
230
+ title: "Autocomplete",
231
+ description: "Single value with freeform text input — type any value or pick from suggestions",
232
+ component: AutocompleteVariant
233
+ },
234
+ {
235
+ title: "Tags",
236
+ description: "Array of freeform values — type and press Enter to add tags",
237
+ component: TagsVariant
238
+ },
239
+ {
240
+ title: "Segmented",
241
+ description: "Enum rendered as segmented toggle buttons",
242
+ component: SegmentedVariant
243
+ },
244
+ {
245
+ title: "Boolean",
246
+ description: "Boolean value — select value is coerced to true/false on submit",
247
+ component: BooleanVariant
248
+ },
249
+ {
250
+ title: "Numeric",
251
+ description: "Integer enum — select value is coerced to number on submit",
252
+ component: NumericVariant
253
+ },
254
+ {
255
+ title: "Async (Short)",
256
+ description: "Loader returns <= 100 items — client-side filtering, single network call",
257
+ component: AsyncShortVariant
258
+ },
259
+ {
260
+ title: "Async (Long)",
261
+ description: "Loader returns > 100 items — server-side filtering with debounced search",
262
+ component: AsyncLongVariant
263
+ }
264
+ ];
265
+ const showcaseSchema = t.object({});
266
+ const DemoControlSelect = () => {
267
+ return /* @__PURE__ */ jsx(Showcase, {
268
+ title: "ControlSelect",
269
+ schema: showcaseSchema,
270
+ children: () => /* @__PURE__ */ jsx(Flex, {
271
+ direction: "column",
272
+ gap: "xl",
273
+ children: variants.map((variant) => /* @__PURE__ */ jsxs(Flex, {
274
+ rounded: true,
275
+ shadowed: "sm",
276
+ bordered: true,
277
+ direction: "column",
278
+ children: [/* @__PURE__ */ jsxs(Flex, {
279
+ elevated: true,
280
+ rounded: true,
281
+ col: true,
282
+ borderedBottom: true,
283
+ p: "sm",
284
+ children: [/* @__PURE__ */ jsx(Text, {
285
+ fw: 600,
286
+ children: variant.title
287
+ }), /* @__PURE__ */ jsx(Text, {
288
+ size: "sm",
289
+ c: "dimmed",
290
+ children: variant.description
291
+ })]
292
+ }), /* @__PURE__ */ jsx(Flex, {
293
+ rounded: true,
294
+ surface: true,
295
+ p: "xs",
296
+ children: /* @__PURE__ */ jsx(variant.component, {})
297
+ })]
298
+ }, variant.title))
299
+ })
300
+ });
301
+ };
302
+
303
+ //#endregion
304
+ export { DemoControlSelect as default };
305
+ //# sourceMappingURL=DemoControlSelect-D7ILObVg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DemoControlSelect-D7ILObVg.js","names":[],"sources":["../../src/demo/components/core/DemoControlSelect.tsx"],"sourcesContent":["import {\n Control,\n Flex,\n type SelectValueLabel,\n Text,\n TypeForm,\n useDialog,\n} from \"@alepha/ui\";\nimport { t } from \"alepha\";\nimport { useForm } from \"alepha/react/form\";\nimport Showcase from \"../shared/Showcase.tsx\";\n\n// region schemas\n\nconst selectSchema = t.object({\n status: t.enum([\"active\", \"inactive\", \"pending\"], {\n title: \"Status\",\n default: \"active\",\n }),\n priority: t.enum([\"low\", \"medium\", \"high\", \"critical\"], {\n title: \"Priority\",\n }),\n});\n\nconst multiSelectSchema = t.object({\n roles: t.array(t.enum([\"admin\", \"editor\", \"viewer\", \"moderator\"]), {\n title: \"Roles\",\n default: [\"editor\"],\n }),\n});\n\nconst autocompleteSchema = t.object({\n city: t.enum([\"Paris\", \"London\", \"Tokyo\", \"New York\", \"Berlin\", \"Sydney\"], {\n title: \"City\",\n default: \"Paris\",\n }),\n});\n\nconst tagsSchema = t.object({\n tags: t.array(t.text(), {\n title: \"Tags\",\n default: [\"typescript\", \"react\"],\n }),\n});\n\nconst segmentedSchema = t.object({\n theme: t.enum([\"light\", \"dark\", \"auto\"], {\n title: \"Theme\",\n default: \"auto\",\n }),\n});\n\nconst booleanSchema = t.object({\n enabled: t.boolean({\n title: \"Enabled\",\n default: true,\n }),\n});\n\nconst numericSchema = t.object({\n rating: t.integer({\n title: \"Rating\",\n enum: [1, 2, 3, 4, 5] as any,\n }),\n});\n\n// endregion\n\n// region async loader\n\nconst allCities = Array.from({ length: 200 }, (_, i) => ({\n value: `city-${i}`,\n label: `City ${i} - ${[\"Alpha\", \"Beta\", \"Gamma\", \"Delta\", \"Epsilon\"][i % 5]}`,\n}));\n\nconst cityLoader = async (\n search: string,\n resolve?: string[],\n): Promise<SelectValueLabel[]> => {\n await new Promise((r) => setTimeout(r, 300));\n\n if (resolve) {\n return allCities.filter((c) => resolve.includes(c.value));\n }\n\n if (!search) return allCities;\n return allCities.filter((c) =>\n c.label.toLowerCase().includes(search.toLowerCase()),\n );\n};\n\nconst shortCities = allCities.slice(0, 20);\nconst shortCityLoader = async (): Promise<SelectValueLabel[]> => {\n await new Promise((r) => setTimeout(r, 300));\n return shortCities;\n};\n\n// endregion\n\n// region shared hook\n\nconst useAlertValues = () => {\n const dialog = useDialog();\n return (values: any) => {\n dialog.alert({\n title: \"Submitted\",\n message: JSON.stringify(values, null, 2),\n });\n };\n};\n\n// endregion\n\n// region variant components\n\nconst SelectVariant = () => {\n const handler = useAlertValues();\n const form = useForm({ schema: selectSchema, handler }, []);\n return (\n <TypeForm fill form={form} submitButtonProps={{ children: \"Submit\" }} />\n );\n};\n\nconst MultiSelectVariant = () => {\n const handler = useAlertValues();\n const form = useForm({ schema: multiSelectSchema, handler }, []);\n return (\n <TypeForm fill form={form} submitButtonProps={{ children: \"Submit\" }} />\n );\n};\n\nconst AutocompleteVariant = () => {\n const handler = useAlertValues();\n const form = useForm({ schema: autocompleteSchema, handler }, []);\n return (\n <TypeForm\n fill\n form={form}\n fieldControlProps={{ city: { select: { creatable: true } } }}\n submitButtonProps={{ children: \"Submit\" }}\n />\n );\n};\n\nconst TagsVariant = () => {\n const handler = useAlertValues();\n const form = useForm({ schema: tagsSchema, handler }, []);\n return (\n <TypeForm\n fill\n form={form}\n fieldControlProps={{ tags: { select: { creatable: true } } }}\n submitButtonProps={{ children: \"Submit\" }}\n />\n );\n};\n\nconst SegmentedVariant = () => {\n const handler = useAlertValues();\n const form = useForm({ schema: segmentedSchema, handler }, []);\n return (\n <TypeForm\n fill\n form={form}\n fieldControlProps={{ theme: { segmented: true } }}\n submitButtonProps={{ children: \"Submit\" }}\n />\n );\n};\n\nconst BooleanVariant = () => {\n const handler = useAlertValues();\n const form = useForm({ schema: booleanSchema, handler }, []);\n return (\n <TypeForm fill form={form} submitButtonProps={{ children: \"Submit\" }} />\n );\n};\n\nconst NumericVariant = () => {\n const handler = useAlertValues();\n const form = useForm({ schema: numericSchema, handler }, []);\n return (\n <TypeForm\n fill\n form={form}\n fieldControlProps={{\n rating: {\n select: {\n selectProps: {\n data: [\n { value: \"1\", label: \"1 - Poor\" },\n { value: \"2\", label: \"2 - Fair\" },\n { value: \"3\", label: \"3 - Good\" },\n { value: \"4\", label: \"4 - Great\" },\n { value: \"5\", label: \"5 - Excellent\" },\n ],\n },\n },\n },\n }}\n submitButtonProps={{ children: \"Submit\" }}\n />\n );\n};\n\nconst AsyncShortVariant = () => {\n const handler = useAlertValues();\n const asyncSchema = t.object({ city: t.text({ title: \"City\" }) });\n const form = useForm({ schema: asyncSchema, handler }, []);\n return (\n <Control\n input={form.input.city}\n select={{\n loader: shortCityLoader,\n }}\n />\n );\n};\n\nconst AsyncLongVariant = () => {\n const handler = useAlertValues();\n const asyncSchema = t.object({ city: t.text({ title: \"City\" }) });\n const form = useForm({ schema: asyncSchema, handler }, []);\n return (\n <Control\n input={form.input.city}\n select={{\n loader: cityLoader,\n selectProps: { defaultValue: \"city-42\" },\n }}\n />\n );\n};\n\n// endregion\n\nconst variants: {\n title: string;\n description: string;\n component: () => React.ReactNode;\n}[] = [\n {\n title: \"Select\",\n description: \"Single enum value with dropdown\",\n component: SelectVariant,\n },\n {\n title: \"Multi Select\",\n description: \"Array of enum values with multi-select dropdown\",\n component: MultiSelectVariant,\n },\n {\n title: \"Autocomplete\",\n description:\n \"Single value with freeform text input — type any value or pick from suggestions\",\n component: AutocompleteVariant,\n },\n {\n title: \"Tags\",\n description: \"Array of freeform values — type and press Enter to add tags\",\n component: TagsVariant,\n },\n {\n title: \"Segmented\",\n description: \"Enum rendered as segmented toggle buttons\",\n component: SegmentedVariant,\n },\n {\n title: \"Boolean\",\n description:\n \"Boolean value — select value is coerced to true/false on submit\",\n component: BooleanVariant,\n },\n {\n title: \"Numeric\",\n description: \"Integer enum — select value is coerced to number on submit\",\n component: NumericVariant,\n },\n {\n title: \"Async (Short)\",\n description:\n \"Loader returns <= 100 items — client-side filtering, single network call\",\n component: AsyncShortVariant,\n },\n {\n title: \"Async (Long)\",\n description:\n \"Loader returns > 100 items — server-side filtering with debounced search\",\n component: AsyncLongVariant,\n },\n];\n\nconst showcaseSchema = t.object({});\n\nconst DemoControlSelect = () => {\n return (\n <Showcase title=\"ControlSelect\" schema={showcaseSchema}>\n {() => (\n <Flex direction=\"column\" gap=\"xl\">\n {variants.map((variant) => (\n <Flex\n rounded\n shadowed={\"sm\"}\n bordered\n key={variant.title}\n direction=\"column\"\n >\n <Flex elevated rounded col borderedBottom p={\"sm\"}>\n <Text fw={600}>{variant.title}</Text>\n <Text size=\"sm\" c=\"dimmed\">\n {variant.description}\n </Text>\n </Flex>\n <Flex rounded surface p={\"xs\"}>\n <variant.component />\n </Flex>\n </Flex>\n ))}\n </Flex>\n )}\n </Showcase>\n );\n};\n\nexport default DemoControlSelect;\n"],"mappings":"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"}