@alepha/ui 0.17.2 → 0.18.1

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 (270) hide show
  1. package/dist/admin/{AdminApiKeys-CF_qOO3u.js → AdminApiKeys-C-6_Q-lH.js} +56 -192
  2. package/dist/admin/AdminApiKeys-C-6_Q-lH.js.map +1 -0
  3. package/dist/admin/{AdminAudits-BQno3hZG.js → AdminAudits-Bgbf04hO.js} +25 -61
  4. package/dist/admin/AdminAudits-Bgbf04hO.js.map +1 -0
  5. package/dist/admin/{AdminFiles-kvuUaASF.js → AdminFiles-B9a7G3cY.js} +6 -8
  6. package/dist/admin/AdminFiles-B9a7G3cY.js.map +1 -0
  7. package/dist/admin/{AdminJobDashboard-CrPxp0W1.js → AdminJobDashboard-DaTwf5OY.js} +55 -186
  8. package/dist/admin/AdminJobDashboard-DaTwf5OY.js.map +1 -0
  9. package/dist/admin/{AdminJobExecutions-D-b4Zt7W.js → AdminJobExecutions-B9cek5dl.js} +132 -168
  10. package/dist/admin/AdminJobExecutions-B9cek5dl.js.map +1 -0
  11. package/dist/admin/{AdminJobRegistry-CNX5cpDx.js → AdminJobRegistry-DFgV3oqx.js} +60 -83
  12. package/dist/admin/AdminJobRegistry-DFgV3oqx.js.map +1 -0
  13. package/dist/admin/AdminLayout-DHsvWxVB.js +70 -0
  14. package/dist/admin/AdminLayout-DHsvWxVB.js.map +1 -0
  15. package/dist/admin/{AdminParameters-DCGbpt2c.js → AdminParameters-DHw9ATgl.js} +53 -53
  16. package/dist/admin/AdminParameters-DHw9ATgl.js.map +1 -0
  17. package/dist/admin/{AdminSessions-DyhW6RZv.js → AdminSessions-BhGJPI3z.js} +11 -18
  18. package/dist/admin/AdminSessions-BhGJPI3z.js.map +1 -0
  19. package/dist/admin/{AdminUserLayout-CrBj4UuI.js → AdminUserLayout-BdC4Te8m.js} +112 -151
  20. package/dist/admin/AdminUserLayout-BdC4Te8m.js.map +1 -0
  21. package/dist/admin/AdminUserProfile-DAt23fqY.js +69 -0
  22. package/dist/admin/AdminUserProfile-DAt23fqY.js.map +1 -0
  23. package/dist/admin/AdminUserSessions-1uzcx02z.js +109 -0
  24. package/dist/admin/AdminUserSessions-1uzcx02z.js.map +1 -0
  25. package/dist/admin/AdminUsers-C85c3eiQ.js +121 -0
  26. package/dist/admin/AdminUsers-C85c3eiQ.js.map +1 -0
  27. package/dist/{auth/AuthLayout-CdJcrPs4.js → admin/AuthLayout-DFJvCvzw.js} +3 -3
  28. package/dist/{auth/AuthLayout-CdJcrPs4.js.map → admin/AuthLayout-DFJvCvzw.js.map} +1 -1
  29. package/dist/{auth/IconGoogle-Bm18QD2q.js → admin/IconGoogle-CSQLPYwX.js} +1 -1
  30. package/dist/{auth/IconGoogle-Bm18QD2q.js.map → admin/IconGoogle-CSQLPYwX.js.map} +1 -1
  31. package/dist/{demo/DemoLogin-DjJ9314c.js → admin/Login-BGheURrg.js} +15 -129
  32. package/dist/{auth/Login-BS_FYTy0.js.map → admin/Login-BGheURrg.js.map} +1 -1
  33. package/dist/{auth/Profile-CjDsW378.js → admin/Profile-B-c9pCPf.js} +5 -5
  34. package/dist/{auth/Profile-CjDsW378.js.map → admin/Profile-B-c9pCPf.js.map} +1 -1
  35. package/dist/{demo/DemoRegister-DzkJ5M83.js → admin/Register-Cs10l8vX.js} +20 -146
  36. package/dist/{auth/Register-C5eqzAaD.js.map → admin/Register-Cs10l8vX.js.map} +1 -1
  37. package/dist/{demo/DemoResetPassword-DWh4_BpQ.js → admin/ResetPassword-BwDdfkGH.js} +20 -82
  38. package/dist/{auth/ResetPassword-XifinVao.js.map → admin/ResetPassword-BwDdfkGH.js.map} +1 -1
  39. package/dist/{demo/DemoVerifyEmail-DbU_tCj8.js → admin/VerifyEmail-DfXHAiQl.js} +15 -32
  40. package/dist/{auth/VerifyEmail-DTgbeJOO.js.map → admin/VerifyEmail-DfXHAiQl.js.map} +1 -1
  41. package/dist/admin/auth-Dr0Cf8I7.js +319 -0
  42. package/dist/admin/auth-Dr0Cf8I7.js.map +1 -0
  43. package/dist/admin/core-2xoLiT0o.js +4031 -0
  44. package/dist/admin/core-2xoLiT0o.js.map +1 -0
  45. package/dist/admin/index.d.ts +739 -13
  46. package/dist/admin/index.d.ts.map +1 -1
  47. package/dist/admin/index.js +79 -111
  48. package/dist/admin/index.js.map +1 -1
  49. package/dist/admin/rolldown-runtime-CjeV3_4I.js +18 -0
  50. package/dist/auth/AuthLayout-CAE1pX9s.js +22 -0
  51. package/dist/auth/AuthLayout-CAE1pX9s.js.map +1 -0
  52. package/dist/auth/{Login-BS_FYTy0.js → Login-Denw_UGy.js} +8 -8
  53. package/dist/auth/Login-Denw_UGy.js.map +1 -0
  54. package/dist/auth/Profile-BMX_Ar_s.js +155 -0
  55. package/dist/auth/Profile-BMX_Ar_s.js.map +1 -0
  56. package/dist/auth/{Register-C5eqzAaD.js → Register-6hi_cpfF.js} +8 -8
  57. package/dist/auth/Register-6hi_cpfF.js.map +1 -0
  58. package/dist/auth/{ResetPassword-XifinVao.js → ResetPassword-CqfTk1FI.js} +6 -6
  59. package/dist/auth/ResetPassword-CqfTk1FI.js.map +1 -0
  60. package/dist/auth/{VerifyEmail-DTgbeJOO.js → VerifyEmail-nWiSTMjF.js} +5 -5
  61. package/dist/auth/VerifyEmail-nWiSTMjF.js.map +1 -0
  62. package/dist/auth/core-niW0sFLv.js +2264 -0
  63. package/dist/auth/core-niW0sFLv.js.map +1 -0
  64. package/dist/auth/index.d.ts +336 -8
  65. package/dist/auth/index.d.ts.map +1 -1
  66. package/dist/auth/index.js +18 -22
  67. package/dist/auth/index.js.map +1 -1
  68. package/dist/core/index.d.ts +1033 -843
  69. package/dist/core/index.d.ts.map +1 -1
  70. package/dist/core/index.js +1626 -1354
  71. package/dist/core/index.js.map +1 -1
  72. package/dist/demo/AuthLayout-jLa0aKsI.js +22 -0
  73. package/dist/demo/AuthLayout-jLa0aKsI.js.map +1 -0
  74. package/dist/demo/DemoButton-BmaWZVwf.js +178 -0
  75. package/dist/demo/DemoButton-BmaWZVwf.js.map +1 -0
  76. package/dist/demo/{DemoDataTable-lnBKWBf8.js → DemoDataTable-Z9xyV221.js} +18 -18
  77. package/dist/demo/DemoDataTable-Z9xyV221.js.map +1 -0
  78. package/dist/demo/DemoDialog-4ItHLf9t.js +101 -0
  79. package/dist/demo/DemoDialog-4ItHLf9t.js.map +1 -0
  80. package/dist/demo/DemoFlex-EtVq8QfX.js +105 -0
  81. package/dist/demo/DemoFlex-EtVq8QfX.js.map +1 -0
  82. package/dist/demo/DemoHeading-BS-vGfkI.js +18 -0
  83. package/dist/demo/DemoHeading-BS-vGfkI.js.map +1 -0
  84. package/dist/demo/{DemoHome-CUMZsYaH.js → DemoHome-Clbn8AmS.js} +9 -12
  85. package/dist/demo/DemoHome-Clbn8AmS.js.map +1 -0
  86. package/dist/demo/DemoJsonViewer-DkIX_ky2.js +109 -0
  87. package/dist/demo/DemoJsonViewer-DkIX_ky2.js.map +1 -0
  88. package/dist/demo/DemoLayout-C56xb5EE.js +73 -0
  89. package/dist/demo/DemoLayout-C56xb5EE.js.map +1 -0
  90. package/dist/demo/DemoLogin-BZwpicOS.js +128 -0
  91. package/dist/demo/DemoLogin-BZwpicOS.js.map +1 -0
  92. package/dist/demo/DemoRegister-C7_qc4MJ.js +140 -0
  93. package/dist/demo/DemoRegister-C7_qc4MJ.js.map +1 -0
  94. package/dist/demo/DemoResetPassword-BI1Ct4Dw.js +76 -0
  95. package/dist/demo/DemoResetPassword-BI1Ct4Dw.js.map +1 -0
  96. package/dist/demo/{DemoSidebar-C1csnGhX.js → DemoSidebar-CcBo4ltC.js} +6 -9
  97. package/dist/demo/DemoSidebar-CcBo4ltC.js.map +1 -0
  98. package/dist/demo/DemoText-CzXuUn3g.js +124 -0
  99. package/dist/demo/DemoText-CzXuUn3g.js.map +1 -0
  100. package/dist/demo/DemoToast-BgHDhWrX.js +95 -0
  101. package/dist/demo/DemoToast-BgHDhWrX.js.map +1 -0
  102. package/dist/demo/{DemoTypeForm-CWz6fJrJ.js → DemoTypeForm-DDzWoMSV.js} +4 -4
  103. package/dist/demo/{DemoTypeForm-CWz6fJrJ.js.map → DemoTypeForm-DDzWoMSV.js.map} +1 -1
  104. package/dist/demo/DemoVerifyEmail-C_Irdnov.js +30 -0
  105. package/dist/demo/DemoVerifyEmail-C_Irdnov.js.map +1 -0
  106. package/dist/demo/IconGoogle-CSQLPYwX.js +56 -0
  107. package/dist/demo/IconGoogle-CSQLPYwX.js.map +1 -0
  108. package/dist/demo/Login-hSOU3jZc.js +219 -0
  109. package/dist/demo/Login-hSOU3jZc.js.map +1 -0
  110. package/dist/demo/Profile-CWqti7FB.js +155 -0
  111. package/dist/demo/Profile-CWqti7FB.js.map +1 -0
  112. package/dist/demo/Register-a70LPgs2.js +375 -0
  113. package/dist/demo/Register-a70LPgs2.js.map +1 -0
  114. package/dist/demo/ResetPassword-DWN0lzr5.js +286 -0
  115. package/dist/demo/ResetPassword-DWN0lzr5.js.map +1 -0
  116. package/dist/demo/Showcase-Dq3MISpd.js +232 -0
  117. package/dist/demo/Showcase-Dq3MISpd.js.map +1 -0
  118. package/dist/demo/VerifyEmail-DZWL72K4.js +135 -0
  119. package/dist/demo/VerifyEmail-DZWL72K4.js.map +1 -0
  120. package/dist/demo/auth-d6n3xbug.js +257 -0
  121. package/dist/demo/auth-d6n3xbug.js.map +1 -0
  122. package/dist/demo/core-RCUw1Q-a.js +4217 -0
  123. package/dist/demo/core-RCUw1Q-a.js.map +1 -0
  124. package/dist/demo/index.d.ts +17 -6
  125. package/dist/demo/index.d.ts.map +1 -1
  126. package/dist/demo/index.js +92 -24
  127. package/dist/demo/index.js.map +1 -1
  128. package/dist/demo/rolldown-runtime-CjeV3_4I.js +18 -0
  129. package/package.json +16 -20
  130. package/src/admin/AdminRouter.ts +10 -39
  131. package/src/admin/components/AdminLayout.tsx +42 -10
  132. package/src/admin/components/audits/AdminAudits.tsx +10 -64
  133. package/src/admin/components/files/AdminFiles.tsx +2 -3
  134. package/src/admin/components/jobs/AdminJobDashboard.tsx +36 -142
  135. package/src/admin/components/jobs/AdminJobExecutions.tsx +117 -175
  136. package/src/admin/components/jobs/AdminJobRegistry.tsx +58 -73
  137. package/src/admin/components/keys/AdminApiKeys.tsx +21 -169
  138. package/src/admin/components/parameters/AdminParameters.tsx +4 -4
  139. package/src/admin/components/parameters/ParameterEmptyState.tsx +1 -2
  140. package/src/admin/components/parameters/ParameterHistory.tsx +3 -3
  141. package/src/admin/components/parameters/ParameterTree.tsx +2 -8
  142. package/src/admin/components/parameters/types.ts +3 -3
  143. package/src/admin/components/sessions/AdminSessions.tsx +8 -16
  144. package/src/admin/components/users/AdminUserLayout.tsx +113 -150
  145. package/src/admin/components/users/AdminUserProfile.tsx +50 -0
  146. package/src/admin/components/users/AdminUserSessions.tsx +106 -126
  147. package/src/admin/components/users/AdminUsers.tsx +46 -62
  148. package/src/admin/index.ts +0 -4
  149. package/src/auth/components/buttons/UserButton.tsx +1 -1
  150. package/src/auth/index.ts +0 -4
  151. package/src/core/UiRouter.ts +1 -1
  152. package/src/core/atoms/alephaSidebarAtom.ts +7 -31
  153. package/src/core/components/{layout/AlephaMantineProvider.tsx → AlephaMantineProvider.tsx} +3 -4
  154. package/src/core/components/Flex.tsx +63 -0
  155. package/src/core/components/Heading.tsx +19 -0
  156. package/src/core/components/Text.tsx +140 -0
  157. package/src/core/components/buttons/ActionButton.tsx +12 -1
  158. package/src/core/components/buttons/BurgerButton.tsx +3 -3
  159. package/src/core/components/buttons/LanguageButton.tsx +1 -1
  160. package/src/core/components/buttons/ToggleSidebarButton.tsx +1 -4
  161. package/src/core/components/data/DetailDrawer.tsx +144 -0
  162. package/src/core/components/data/DetailList.tsx +64 -0
  163. package/src/core/components/data/StatCards.tsx +50 -0
  164. package/src/core/components/layout/AppBar.tsx +11 -10
  165. package/src/core/components/layout/Breadcrumb.tsx +8 -8
  166. package/src/core/components/layout/Container.tsx +15 -0
  167. package/src/core/components/layout/DashboardShell.tsx +23 -238
  168. package/src/core/components/layout/Omnibar.tsx +1 -2
  169. package/src/core/components/layout/Sidebar.tsx +103 -71
  170. package/src/core/components/layout/index.ts +65 -0
  171. package/src/core/{components/form → form/components}/Control.tsx +32 -14
  172. package/src/core/{components/form → form/components}/ControlArray.tsx +2 -5
  173. package/src/core/{components/form → form/components}/ControlDate.tsx +1 -4
  174. package/src/core/{components/form → form/components}/ControlNumber.tsx +1 -4
  175. package/src/core/{components/form → form/components}/ControlObject.tsx +1 -4
  176. package/src/core/{components/form → form/components}/ControlQueryBuilder.tsx +7 -7
  177. package/src/core/{components/form → form/components}/ControlSelect.tsx +2 -4
  178. package/src/core/{components/form → form/components}/TypeForm.browser.spec.tsx +22 -64
  179. package/src/core/{components/form → form/components}/TypeForm.tsx +1 -3
  180. package/src/core/form/factories/dialogForm.tsx +31 -0
  181. package/src/core/form/index.ts +23 -0
  182. package/src/core/{utils → form/utils}/parseInput.ts +2 -4
  183. package/src/core/index.ts +43 -51
  184. package/src/core/interfaces/AlephaIntent.ts +6 -0
  185. package/src/core/interfaces/AlephaTheme.ts +0 -1
  186. package/src/core/json/factories/dialogJson.tsx +24 -0
  187. package/src/core/json/index.ts +2 -0
  188. package/src/core/primitives/$ui.ts +17 -0
  189. package/src/core/services/DialogService.tsx +1 -48
  190. package/src/core/styles.css +1 -8
  191. package/src/core/{components/table → table/components}/ColumnPicker.tsx +2 -3
  192. package/src/core/{components/table → table/components}/DataTable.tsx +8 -9
  193. package/src/core/{components/table → table/components}/DataTableFilters.tsx +6 -3
  194. package/src/core/{components/table → table/components}/DataTableToolbar.tsx +4 -5
  195. package/src/core/{components/table → table/components}/FilterPicker.tsx +2 -3
  196. package/src/core/table/index.ts +12 -0
  197. package/src/core/{components/table → table/interfaces}/types.ts +2 -2
  198. package/src/demo/DemoRouter.ts +87 -6
  199. package/src/demo/components/DemoHome.tsx +6 -10
  200. package/src/demo/components/DemoLayout.tsx +38 -8
  201. package/src/demo/components/auth/DemoLogin.tsx +1 -1
  202. package/src/demo/components/auth/DemoRegister.tsx +1 -1
  203. package/src/demo/components/auth/DemoResetPassword.tsx +1 -1
  204. package/src/demo/components/auth/DemoVerifyEmail.tsx +1 -1
  205. package/src/demo/components/core/DemoButton.tsx +160 -0
  206. package/src/demo/components/core/DemoFlex.tsx +101 -0
  207. package/src/demo/components/core/DemoHeading.tsx +13 -0
  208. package/src/demo/components/core/DemoText.tsx +110 -0
  209. package/src/demo/components/json/DemoJsonViewer.tsx +1 -1
  210. package/src/demo/components/layout/DemoDialog.tsx +103 -0
  211. package/src/demo/components/{core → layout}/DemoSidebar.tsx +0 -1
  212. package/src/demo/components/layout/DemoToast.tsx +96 -0
  213. package/src/demo/components/shared/MacWindow.tsx +149 -74
  214. package/src/demo/components/shared/Showcase.tsx +4 -8
  215. package/src/demo/index.ts +1 -4
  216. package/src/demo/primitives/$uiDemo.ts +10 -0
  217. package/dist/admin/AdminApiKeys-CF_qOO3u.js.map +0 -1
  218. package/dist/admin/AdminAudits-BQno3hZG.js.map +0 -1
  219. package/dist/admin/AdminFiles-kvuUaASF.js.map +0 -1
  220. package/dist/admin/AdminJobDashboard-CrPxp0W1.js.map +0 -1
  221. package/dist/admin/AdminJobExecutions-D-b4Zt7W.js.map +0 -1
  222. package/dist/admin/AdminJobRegistry-CNX5cpDx.js.map +0 -1
  223. package/dist/admin/AdminLayout-e-ZP5nWw.js +0 -37
  224. package/dist/admin/AdminLayout-e-ZP5nWw.js.map +0 -1
  225. package/dist/admin/AdminParameters-DCGbpt2c.js.map +0 -1
  226. package/dist/admin/AdminSessions-DyhW6RZv.js.map +0 -1
  227. package/dist/admin/AdminUserAudits-D1GcREEE.js +0 -177
  228. package/dist/admin/AdminUserAudits-D1GcREEE.js.map +0 -1
  229. package/dist/admin/AdminUserCreate-DR8LA0tv.js +0 -104
  230. package/dist/admin/AdminUserCreate-DR8LA0tv.js.map +0 -1
  231. package/dist/admin/AdminUserDetails-CDkZNHQD.js +0 -477
  232. package/dist/admin/AdminUserDetails-CDkZNHQD.js.map +0 -1
  233. package/dist/admin/AdminUserLayout-CrBj4UuI.js.map +0 -1
  234. package/dist/admin/AdminUserSessions-srgFHrqy.js +0 -129
  235. package/dist/admin/AdminUserSessions-srgFHrqy.js.map +0 -1
  236. package/dist/admin/AdminUserSettings-BFuxl-xT.js +0 -167
  237. package/dist/admin/AdminUserSettings-BFuxl-xT.js.map +0 -1
  238. package/dist/admin/AdminUsers-D1pDpiwK.js +0 -118
  239. package/dist/admin/AdminUsers-D1pDpiwK.js.map +0 -1
  240. package/dist/demo/DemoDataTable-lnBKWBf8.js.map +0 -1
  241. package/dist/demo/DemoHome-CUMZsYaH.js.map +0 -1
  242. package/dist/demo/DemoJsonViewer-_uokbGaW.js +0 -429
  243. package/dist/demo/DemoJsonViewer-_uokbGaW.js.map +0 -1
  244. package/dist/demo/DemoLayout-DHVoacE6.js +0 -46
  245. package/dist/demo/DemoLayout-DHVoacE6.js.map +0 -1
  246. package/dist/demo/DemoLogin-DjJ9314c.js.map +0 -1
  247. package/dist/demo/DemoRegister-DzkJ5M83.js.map +0 -1
  248. package/dist/demo/DemoResetPassword-DWh4_BpQ.js.map +0 -1
  249. package/dist/demo/DemoSidebar-C1csnGhX.js.map +0 -1
  250. package/dist/demo/DemoVerifyEmail-DbU_tCj8.js.map +0 -1
  251. package/dist/demo/Showcase-BzoXNlCn.js +0 -185
  252. package/dist/demo/Showcase-BzoXNlCn.js.map +0 -1
  253. package/dist/json/index.d.ts +0 -57
  254. package/dist/json/index.d.ts.map +0 -1
  255. package/dist/json/index.js +0 -325
  256. package/dist/json/index.js.map +0 -1
  257. package/src/admin/components/users/AdminUserAudits.tsx +0 -184
  258. package/src/admin/components/users/AdminUserCreate.tsx +0 -85
  259. package/src/admin/components/users/AdminUserDetails.tsx +0 -431
  260. package/src/admin/components/users/AdminUserSettings.tsx +0 -171
  261. package/src/core/components/data/ErrorViewer.tsx +0 -171
  262. package/src/json/extensions/DialogService.tsx +0 -31
  263. package/src/json/index.ts +0 -18
  264. package/src/json/styles.css +0 -1
  265. /package/dist/{demo → auth}/IconGoogle-Ch1m3Uzl.js +0 -0
  266. /package/dist/{demo → auth}/IconGoogle-Ch1m3Uzl.js.map +0 -0
  267. /package/src/{json → core/json}/components/JsonViewer.css +0 -0
  268. /package/src/{json → core/json}/components/JsonViewer.tsx +0 -0
  269. /package/src/core/{components/table → table/components}/DataTablePagination.tsx +0 -0
  270. /package/src/core/{components/table → table/components}/useTableSelection.ts +0 -0
@@ -0,0 +1,110 @@
1
+ import type { AlephaIntent } from "@alepha/ui";
2
+ import { Flex, Text } from "@alepha/ui";
3
+ import { t } from "alepha";
4
+ import Showcase from "../shared/Showcase.tsx";
5
+
6
+ const showcaseSchema = t.object({
7
+ bold: t.boolean({
8
+ title: "bold",
9
+ default: false,
10
+ $control: { switch: true },
11
+ }),
12
+ italic: t.boolean({
13
+ title: "italic",
14
+ default: false,
15
+ $control: { switch: true },
16
+ }),
17
+ light: t.boolean({
18
+ title: "light",
19
+ default: false,
20
+ $control: { switch: true },
21
+ }),
22
+ muted: t.boolean({
23
+ title: "muted",
24
+ default: false,
25
+ $control: { switch: true },
26
+ }),
27
+ small: t.boolean({
28
+ title: "small",
29
+ default: false,
30
+ $control: { switch: true },
31
+ }),
32
+ monospace: t.boolean({
33
+ title: "monospace",
34
+ default: false,
35
+ $control: { switch: true },
36
+ }),
37
+ uppercase: t.boolean({
38
+ title: "uppercase",
39
+ default: false,
40
+ $control: { switch: true },
41
+ }),
42
+ capitalize: t.boolean({
43
+ title: "capitalize",
44
+ default: false,
45
+ $control: { switch: true },
46
+ }),
47
+ center: t.boolean({
48
+ title: "center",
49
+ default: false,
50
+ $control: { switch: true },
51
+ }),
52
+ intent: t.optional(
53
+ t.enum(["primary", "info", "success", "warning", "danger"], {
54
+ title: "intent",
55
+ }),
56
+ ),
57
+ });
58
+
59
+ const DemoText = () => {
60
+ return (
61
+ <Showcase
62
+ title="Text"
63
+ schema={showcaseSchema}
64
+ initialValues={{
65
+ bold: false,
66
+ italic: false,
67
+ light: false,
68
+ muted: false,
69
+ small: false,
70
+ monospace: false,
71
+ uppercase: false,
72
+ capitalize: false,
73
+ center: false,
74
+ intent: undefined,
75
+ }}
76
+ columns={2}
77
+ >
78
+ {(props) => (
79
+ <Flex col gap="lg" p="md" style={{ minWidth: 300 }}>
80
+ <Text
81
+ bold={props.bold}
82
+ italic={props.italic}
83
+ light={props.light}
84
+ muted={props.muted}
85
+ small={props.small}
86
+ monospace={props.monospace}
87
+ uppercase={props.uppercase}
88
+ capitalize={props.capitalize}
89
+ center={props.center}
90
+ intent={(props.intent || undefined) as AlephaIntent | undefined}
91
+ >
92
+ The quick brown fox jumps over the lazy dog.
93
+ </Text>
94
+ <Text muted small>
95
+ Muted small text for secondary information.
96
+ </Text>
97
+ <Text bold intent="danger">
98
+ Bold danger text for errors.
99
+ </Text>
100
+ <Text monospace>console.log("monospace text");</Text>
101
+ <Text bold uppercase muted>
102
+ Section header style
103
+ </Text>
104
+ </Flex>
105
+ )}
106
+ </Showcase>
107
+ );
108
+ };
109
+
110
+ export default DemoText;
@@ -1,4 +1,4 @@
1
- import { JsonViewer } from "@alepha/ui/json";
1
+ import { JsonViewer } from "@alepha/ui";
2
2
  import { t } from "alepha";
3
3
  import { useI18n } from "alepha/react/i18n";
4
4
  import Showcase from "../shared/Showcase.tsx";
@@ -0,0 +1,103 @@
1
+ import { ActionButton, Flex, Text, useDialog } from "@alepha/ui";
2
+ import {
3
+ IconAlertCircle,
4
+ IconMessage,
5
+ IconQuestionMark,
6
+ } from "@tabler/icons-react";
7
+
8
+ const DemoDialog = () => {
9
+ const dialog = useDialog();
10
+
11
+ return (
12
+ <Flex col gap="xl" p="xl">
13
+ <Text bold size="lg">
14
+ Dialog Service
15
+ </Text>
16
+ <Text muted small>
17
+ Programmatic dialogs via the DialogService. No need to mount modal
18
+ components — just call the service.
19
+ </Text>
20
+
21
+ <Flex gap="md" wrap="wrap">
22
+ <ActionButton
23
+ icon={IconAlertCircle}
24
+ variant="light"
25
+ onClick={() =>
26
+ dialog.alert({
27
+ title: "Heads up",
28
+ message: "This is an informational alert dialog.",
29
+ })
30
+ }
31
+ >
32
+ Alert
33
+ </ActionButton>
34
+
35
+ <ActionButton
36
+ icon={IconQuestionMark}
37
+ variant="light"
38
+ intent="warning"
39
+ onClick={async () => {
40
+ const ok = await dialog.confirm({
41
+ title: "Confirm action",
42
+ message: "Are you sure you want to proceed?",
43
+ });
44
+ if (ok) {
45
+ dialog.alert({
46
+ title: "Confirmed",
47
+ message: "You confirmed the action.",
48
+ });
49
+ }
50
+ }}
51
+ >
52
+ Confirm
53
+ </ActionButton>
54
+
55
+ <ActionButton
56
+ icon={IconMessage}
57
+ variant="light"
58
+ intent="primary"
59
+ onClick={async () => {
60
+ const value = await dialog.prompt({
61
+ title: "Enter a value",
62
+ message: "What is your name?",
63
+ placeholder: "John Doe",
64
+ });
65
+ if (value) {
66
+ dialog.alert({
67
+ title: "Hello",
68
+ message: `Nice to meet you, ${value}!`,
69
+ });
70
+ }
71
+ }}
72
+ >
73
+ Prompt
74
+ </ActionButton>
75
+ </Flex>
76
+
77
+ <Flex col gap="md">
78
+ <Text bold small uppercase muted>
79
+ Variants
80
+ </Text>
81
+ <Flex gap="md" wrap="wrap">
82
+ <ActionButton
83
+ variant="light"
84
+ intent="danger"
85
+ onClick={() =>
86
+ dialog.confirm({
87
+ title: "Delete item",
88
+ message:
89
+ "This action cannot be undone. Are you sure you want to delete this item?",
90
+ confirmColor: "red",
91
+ confirmLabel: "Delete",
92
+ })
93
+ }
94
+ >
95
+ Danger Confirm
96
+ </ActionButton>
97
+ </Flex>
98
+ </Flex>
99
+ </Flex>
100
+ );
101
+ };
102
+
103
+ export default DemoDialog;
@@ -61,7 +61,6 @@ const DemoSidebar = () => {
61
61
  }}
62
62
  columns={1}
63
63
  windowProps={{
64
- fill: true,
65
64
  containerProps: { p: 0 },
66
65
  }}
67
66
  >
@@ -0,0 +1,96 @@
1
+ import { ActionButton, Flex, Text, useToast } from "@alepha/ui";
2
+ import {
3
+ IconCheck,
4
+ IconExclamationMark,
5
+ IconInfoCircle,
6
+ IconX,
7
+ } from "@tabler/icons-react";
8
+
9
+ const DemoToast = () => {
10
+ const toast = useToast();
11
+
12
+ return (
13
+ <Flex col gap="xl" p="xl">
14
+ <Text bold size="lg">
15
+ Toast Service
16
+ </Text>
17
+ <Text muted small>
18
+ Notification toasts via the ToastService. Fire-and-forget notifications
19
+ for user feedback.
20
+ </Text>
21
+
22
+ <Flex gap="md" wrap="wrap">
23
+ <ActionButton
24
+ icon={IconCheck}
25
+ variant="light"
26
+ intent="success"
27
+ onClick={() => toast.success("Operation completed successfully.")}
28
+ >
29
+ Success
30
+ </ActionButton>
31
+
32
+ <ActionButton
33
+ icon={IconX}
34
+ variant="light"
35
+ intent="danger"
36
+ onClick={() => toast.danger("Something went wrong.")}
37
+ >
38
+ Error
39
+ </ActionButton>
40
+
41
+ <ActionButton
42
+ icon={IconExclamationMark}
43
+ variant="light"
44
+ intent="warning"
45
+ onClick={() => toast.warning("Please check your input.")}
46
+ >
47
+ Warning
48
+ </ActionButton>
49
+
50
+ <ActionButton
51
+ icon={IconInfoCircle}
52
+ variant="light"
53
+ intent="info"
54
+ onClick={() => toast.info("Here is some useful information.")}
55
+ >
56
+ Info
57
+ </ActionButton>
58
+ </Flex>
59
+
60
+ <Flex col gap="md">
61
+ <Text bold small uppercase muted>
62
+ With Title
63
+ </Text>
64
+ <Flex gap="md" wrap="wrap">
65
+ <ActionButton
66
+ variant="light"
67
+ intent="success"
68
+ onClick={() =>
69
+ toast.success({
70
+ message: "Your changes have been saved.",
71
+ title: "Saved",
72
+ })
73
+ }
74
+ >
75
+ With Title
76
+ </ActionButton>
77
+ <ActionButton
78
+ variant="light"
79
+ intent="danger"
80
+ onClick={() =>
81
+ toast.danger({
82
+ message: "Failed to connect to the server.",
83
+ title: "Connection Error",
84
+ autoClose: false,
85
+ })
86
+ }
87
+ >
88
+ Persistent
89
+ </ActionButton>
90
+ </Flex>
91
+ </Flex>
92
+ </Flex>
93
+ );
94
+ };
95
+
96
+ export default DemoToast;
@@ -1,103 +1,178 @@
1
- import { Flex, type FlexProps, SegmentedControl } from "@mantine/core";
1
+ import {
2
+ Flex,
3
+ type FlexProps,
4
+ Portal,
5
+ SegmentedControl,
6
+ Tooltip,
7
+ } from "@mantine/core";
8
+ import {
9
+ IconArrowsMaximize,
10
+ IconDeviceDesktop,
11
+ IconDeviceMobile,
12
+ IconDeviceTablet,
13
+ } from "@tabler/icons-react";
2
14
  import { type ReactNode, useState } from "react";
3
15
 
4
16
  export interface MacWindowProps {
5
17
  children: ReactNode;
6
18
  title?: string;
7
19
  containerProps?: FlexProps;
8
- fill?: boolean;
9
20
  }
10
21
 
11
- type WindowSize = "25" | "50" | "75" | "100";
22
+ type DeviceSize = "phone" | "tablet" | "desktop" | "full";
12
23
 
13
- const MacWindow = ({
14
- children,
15
- title,
16
- containerProps,
17
- fill,
18
- }: MacWindowProps) => {
19
- const [size, setSize] = useState<WindowSize>("100");
24
+ const DEVICE_WIDTHS: Record<DeviceSize, string> = {
25
+ phone: "375px",
26
+ tablet: "768px",
27
+ desktop: "100%",
28
+ full: "100%",
29
+ };
20
30
 
21
- const getWidth = () => {
22
- return `${size}%`;
23
- };
31
+ const MacWindow = ({ children, title, containerProps }: MacWindowProps) => {
32
+ const [device, setDevice] = useState<DeviceSize>("desktop");
33
+ const isFullPage = device === "full";
24
34
 
25
- return (
35
+ const controls = (
36
+ <SegmentedControl
37
+ size="xs"
38
+ value={device}
39
+ onChange={(v) => setDevice(v as DeviceSize)}
40
+ data={[
41
+ {
42
+ label: (
43
+ <Tooltip label="Phone (375px)" openDelay={400}>
44
+ <Flex align="center">
45
+ <IconDeviceMobile size={14} />
46
+ </Flex>
47
+ </Tooltip>
48
+ ),
49
+ value: "phone",
50
+ },
51
+ {
52
+ label: (
53
+ <Tooltip label="Tablet (768px)" openDelay={400}>
54
+ <Flex align="center">
55
+ <IconDeviceTablet size={14} />
56
+ </Flex>
57
+ </Tooltip>
58
+ ),
59
+ value: "tablet",
60
+ },
61
+ {
62
+ label: (
63
+ <Tooltip label="Desktop (100%)" openDelay={400}>
64
+ <Flex align="center">
65
+ <IconDeviceDesktop size={14} />
66
+ </Flex>
67
+ </Tooltip>
68
+ ),
69
+ value: "desktop",
70
+ },
71
+ {
72
+ label: (
73
+ <Tooltip label="Full page" openDelay={400}>
74
+ <Flex align="center">
75
+ <IconArrowsMaximize size={14} />
76
+ </Flex>
77
+ </Tooltip>
78
+ ),
79
+ value: "full",
80
+ },
81
+ ]}
82
+ />
83
+ );
84
+
85
+ const header = (
26
86
  <Flex
27
- direction="column"
28
- flex={fill ? 1 : undefined}
29
- h={fill ? "100%" : undefined}
30
- bdrs={"md"}
87
+ h={36}
88
+ px="sm"
89
+ align="center"
90
+ gap={8}
31
91
  style={{
32
- width: getWidth(),
33
- border: "1px solid var(--mantine-color-default-border)",
34
- overflow: "hidden",
35
- background: "var(--mantine-color-body)",
36
- boxShadow: "0 4px 12px rgba(0, 0, 0, 0.15)",
37
- transition: "width 0.3s ease",
92
+ background: "var(--mantine-color-default)",
93
+ borderBottom: "1px solid var(--mantine-color-default-border)",
38
94
  }}
39
95
  >
96
+ <Flex gap={6}>
97
+ <Flex
98
+ w={12}
99
+ h={12}
100
+ style={{ borderRadius: "50%", background: "#ff5f57" }}
101
+ />
102
+ <Flex
103
+ w={12}
104
+ h={12}
105
+ style={{ borderRadius: "50%", background: "#febc2e" }}
106
+ />
107
+ <Flex
108
+ w={12}
109
+ h={12}
110
+ style={{ borderRadius: "50%", background: "#28c840" }}
111
+ />
112
+ </Flex>
113
+
40
114
  <Flex
41
- h={36}
42
- px="sm"
43
- align="center"
44
- gap={8}
45
115
  style={{
46
- background: "var(--mantine-color-default)",
47
- borderBottom: "1px solid var(--mantine-color-default-border)",
116
+ flex: 1,
117
+ textAlign: "center",
118
+ fontSize: 13,
119
+ color: "var(--mantine-color-dimmed)",
48
120
  }}
49
121
  >
50
- <Flex gap={6}>
51
- <Flex
52
- w={12}
53
- h={12}
54
- style={{ borderRadius: "50%", background: "#ff5f57" }}
55
- />
56
- <Flex
57
- w={12}
58
- h={12}
59
- style={{ borderRadius: "50%", background: "#febc2e" }}
60
- />
61
- <Flex
62
- w={12}
63
- h={12}
64
- style={{ borderRadius: "50%", background: "#28c840" }}
65
- />
66
- </Flex>
122
+ {title}
123
+ </Flex>
124
+
125
+ {controls}
126
+ </Flex>
127
+ );
67
128
 
129
+ const body = (
130
+ <Flex
131
+ direction={"column"}
132
+ flex={1}
133
+ p="md"
134
+ style={{ overflow: "auto" }}
135
+ {...containerProps}
136
+ >
137
+ {children}
138
+ </Flex>
139
+ );
140
+
141
+ if (isFullPage) {
142
+ return (
143
+ <Portal>
68
144
  <Flex
145
+ direction="column"
69
146
  style={{
70
- flex: 1,
71
- textAlign: "center",
72
- fontSize: 13,
73
- color: "var(--mantine-color-dimmed)",
147
+ position: "fixed",
148
+ inset: 0,
149
+ zIndex: 1000,
150
+ background: "var(--mantine-color-body)",
74
151
  }}
75
152
  >
76
- {title}
153
+ {header}
154
+ {body}
77
155
  </Flex>
156
+ </Portal>
157
+ );
158
+ }
78
159
 
79
- {fill ? undefined : (
80
- <SegmentedControl
81
- size="xs"
82
- value={size}
83
- onChange={(v) => setSize(v as WindowSize)}
84
- data={[
85
- { label: "25", value: "25" },
86
- { label: "50", value: "50" },
87
- { label: "75", value: "75" },
88
- { label: "100", value: "100" },
89
- ]}
90
- />
91
- )}
92
- </Flex>
93
- <Flex
94
- direction={"column"}
95
- flex={fill ? 1 : undefined}
96
- p="md"
97
- {...containerProps}
98
- >
99
- {children}
100
- </Flex>
160
+ return (
161
+ <Flex
162
+ direction="column"
163
+ bdrs={"md"}
164
+ style={{
165
+ width: DEVICE_WIDTHS[device],
166
+ maxWidth: "100%",
167
+ border: "1px solid var(--mantine-color-default-border)",
168
+ overflow: "hidden",
169
+ background: "var(--mantine-color-body)",
170
+ boxShadow: "0 4px 12px rgba(0, 0, 0, 0.15)",
171
+ transition: "width 0.3s ease",
172
+ }}
173
+ >
174
+ {header}
175
+ {body}
101
176
  </Flex>
102
177
  );
103
178
  };
@@ -56,20 +56,18 @@ const Showcase = <T extends TObject>({
56
56
  setValues(values as Record<string, any>);
57
57
  },
58
58
  onChange: (key, value) => {
59
- console.log("onChange", key, value);
60
- form.submit();
59
+ return form.submit();
61
60
  },
62
61
  },
63
62
  [schema],
64
63
  );
65
64
 
66
65
  return (
67
- <Flex flex={1} h={"100%"}>
66
+ <Flex flex={1} px={"md"} gap={"md"}>
68
67
  <Flex
69
68
  flex={1}
70
69
  bg={ui.colors.background}
71
70
  h={"100%"}
72
- p="xl"
73
71
  justify="center"
74
72
  align="flex-start"
75
73
  style={{ flex: 1, minWidth: 0, overflow: "auto" }}
@@ -80,15 +78,13 @@ const Showcase = <T extends TObject>({
80
78
  </Flex>
81
79
 
82
80
  <Flex
83
- bg={ui.colors.surface}
84
81
  h={"100%"}
85
- p={"md"}
86
82
  style={{
87
83
  flex: "0 0 300px",
88
84
  overflow: "auto",
89
85
  }}
90
86
  >
91
- <Card withBorder shadow="sm" radius="md" bg={ui.colors.elevated}>
87
+ <Card shadow="sm" radius="md">
92
88
  <Card.Section withBorder py={"xs"} inheritPadding>
93
89
  <Text size={"xs"} fw={500}>
94
90
  {title} Props
@@ -98,7 +94,7 @@ const Showcase = <T extends TObject>({
98
94
  <Card.Section p={"sm"}>
99
95
  <TypeForm
100
96
  form={form}
101
- columns={columns}
97
+ columns={{ base: 1, xs: 1, sm: 1, md: 1, lg: 1, xl: 1 }}
102
98
  skipSubmitButton
103
99
  skipFormElement
104
100
  />
package/src/demo/index.ts CHANGED
@@ -5,14 +5,11 @@ import { DemoRouter } from "./DemoRouter.ts";
5
5
  // ---------------------------------------------------------------------------------------------------------------------
6
6
 
7
7
  export { DemoRouter } from "./DemoRouter.ts";
8
+ export * from "./primitives/$uiDemo.ts";
8
9
 
9
10
  // ---------------------------------------------------------------------------------------------------------------------
10
11
 
11
12
  /**
12
- * | type | quality | stability |
13
- * |------|---------|-----------|
14
- * | frontend | standard | experimental |
15
- *
16
13
  * Component showcase and documentation.
17
14
  *
18
15
  * **Features:**
@@ -0,0 +1,10 @@
1
+ import { $context } from "alepha";
2
+ import { DemoRouter } from "../DemoRouter.ts";
3
+
4
+ /**
5
+ * Register Demo UI components and get the DemoRouter instance.
6
+ */
7
+ export const $uiDemo = () => {
8
+ const { alepha } = $context();
9
+ return alepha.inject(DemoRouter);
10
+ };