@alepha/ui 0.16.1 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/dist/admin/{AdminApiKeys-GMORg-1l.js → AdminApiKeys-CF_qOO3u.js} +20 -19
  2. package/dist/admin/AdminApiKeys-CF_qOO3u.js.map +1 -0
  3. package/dist/admin/{AdminAudits-pkWrjq1Z.js → AdminAudits-BQno3hZG.js} +7 -7
  4. package/dist/admin/AdminAudits-BQno3hZG.js.map +1 -0
  5. package/dist/admin/{AdminFiles-WeQbsCsl.js → AdminFiles-kvuUaASF.js} +3 -4
  6. package/dist/admin/{AdminFiles-WeQbsCsl.js.map → AdminFiles-kvuUaASF.js.map} +1 -1
  7. package/dist/admin/AdminJobDashboard-CrPxp0W1.js +485 -0
  8. package/dist/admin/AdminJobDashboard-CrPxp0W1.js.map +1 -0
  9. package/dist/admin/AdminJobExecutions-D-b4Zt7W.js +678 -0
  10. package/dist/admin/AdminJobExecutions-D-b4Zt7W.js.map +1 -0
  11. package/dist/admin/AdminJobRegistry-CNX5cpDx.js +301 -0
  12. package/dist/admin/AdminJobRegistry-CNX5cpDx.js.map +1 -0
  13. package/dist/admin/{AdminLayout-BqZiXx4H.js → AdminLayout-e-ZP5nWw.js} +6 -9
  14. package/dist/admin/AdminLayout-e-ZP5nWw.js.map +1 -0
  15. package/dist/admin/{AdminNotifications-Ds5Un0NJ.js → AdminNotifications-DeHJFf6W.js} +3 -4
  16. package/dist/admin/{AdminNotifications-Ds5Un0NJ.js.map → AdminNotifications-DeHJFf6W.js.map} +1 -1
  17. package/dist/admin/AdminParameters-iQE8o7a7.js +774 -0
  18. package/dist/admin/AdminParameters-iQE8o7a7.js.map +1 -0
  19. package/dist/admin/{AdminSessions-DzIOxM3b.js → AdminSessions-oKJCbd7w.js} +5 -6
  20. package/dist/admin/AdminSessions-oKJCbd7w.js.map +1 -0
  21. package/dist/admin/{AdminUserAudits-CiUPN2BC.js → AdminUserAudits-BNCEle_E.js} +6 -7
  22. package/dist/admin/AdminUserAudits-BNCEle_E.js.map +1 -0
  23. package/dist/admin/{AdminUserCreate-BwQKr4xE.js → AdminUserCreate-CgqeFwCt.js} +6 -6
  24. package/dist/admin/AdminUserCreate-CgqeFwCt.js.map +1 -0
  25. package/dist/admin/{AdminUserDetails-uqtC5aJ1.js → AdminUserDetails-DDe1A1GP.js} +30 -28
  26. package/dist/admin/AdminUserDetails-DDe1A1GP.js.map +1 -0
  27. package/dist/admin/{AdminUserLayout-CiPay35T.js → AdminUserLayout-HAlobhWf.js} +20 -19
  28. package/dist/admin/AdminUserLayout-HAlobhWf.js.map +1 -0
  29. package/dist/admin/{AdminUserSessions-DAE8Nf1F.js → AdminUserSessions-Bq1LnVLf.js} +5 -6
  30. package/dist/admin/AdminUserSessions-Bq1LnVLf.js.map +1 -0
  31. package/dist/admin/{AdminUserSettings-EbahaV2a.js → AdminUserSettings-BRsBZoxV.js} +10 -9
  32. package/dist/admin/AdminUserSettings-BRsBZoxV.js.map +1 -0
  33. package/dist/admin/{AdminUsers-Dcjh0KNW.js → AdminUsers-D71kIOSn.js} +6 -7
  34. package/dist/admin/AdminUsers-D71kIOSn.js.map +1 -0
  35. package/dist/admin/index.d.ts +21 -85
  36. package/dist/admin/index.d.ts.map +1 -1
  37. package/dist/admin/index.js +66 -88
  38. package/dist/admin/index.js.map +1 -1
  39. package/dist/auth/{AuthLayout-Dj5K4SIN.js → AuthLayout-CdJcrPs4.js} +2 -3
  40. package/dist/auth/{AuthLayout-Dj5K4SIN.js.map → AuthLayout-CdJcrPs4.js.map} +1 -1
  41. package/dist/{demo/IconGoogle-CbBF8Hqq.js → auth/IconGoogle-Bm18QD2q.js} +2 -4
  42. package/dist/auth/{IconGoogle-DpSlPZ1u.js.map → IconGoogle-Bm18QD2q.js.map} +1 -1
  43. package/dist/auth/{Login-BBqTosqZ.js → Login-BS_FYTy0.js} +19 -13
  44. package/dist/auth/Login-BS_FYTy0.js.map +1 -0
  45. package/dist/auth/{Profile-Bxj8Nwom.js → Profile-CjDsW378.js} +17 -12
  46. package/dist/auth/Profile-CjDsW378.js.map +1 -0
  47. package/dist/auth/{Register-Ce675Crg.js → Register-C5eqzAaD.js} +27 -17
  48. package/dist/auth/Register-C5eqzAaD.js.map +1 -0
  49. package/dist/auth/{ResetPassword-DWdt7c40.js → ResetPassword-XifinVao.js} +17 -10
  50. package/dist/auth/ResetPassword-XifinVao.js.map +1 -0
  51. package/dist/auth/{VerifyEmail-CI4JwByV.js → VerifyEmail-DTgbeJOO.js} +9 -6
  52. package/dist/auth/VerifyEmail-DTgbeJOO.js.map +1 -0
  53. package/dist/auth/index.d.ts +18 -14
  54. package/dist/auth/index.d.ts.map +1 -1
  55. package/dist/auth/index.js +19 -18
  56. package/dist/auth/index.js.map +1 -1
  57. package/dist/auth/rolldown-runtime-CjeV3_4I.js +18 -0
  58. package/dist/core/index.d.ts +182 -92
  59. package/dist/core/index.d.ts.map +1 -1
  60. package/dist/core/index.js +789 -476
  61. package/dist/core/index.js.map +1 -1
  62. package/dist/demo/DemoDataTable-lnBKWBf8.js +362 -0
  63. package/dist/demo/DemoDataTable-lnBKWBf8.js.map +1 -0
  64. package/dist/demo/{DemoHome-Cce2bWmg.js → DemoHome-CUMZsYaH.js} +6 -6
  65. package/dist/demo/DemoHome-CUMZsYaH.js.map +1 -0
  66. package/dist/demo/{DemoJsonViewer-Dgdk3Txb.js → DemoJsonViewer-_uokbGaW.js} +18 -19
  67. package/dist/demo/DemoJsonViewer-_uokbGaW.js.map +1 -0
  68. package/dist/demo/{DemoLayout-B20TEuhV.js → DemoLayout-DHVoacE6.js} +4 -5
  69. package/dist/demo/DemoLayout-DHVoacE6.js.map +1 -0
  70. package/dist/demo/{DemoLogin-CvCG2WVh.js → DemoLogin-DjJ9314c.js} +27 -24
  71. package/dist/demo/DemoLogin-DjJ9314c.js.map +1 -0
  72. package/dist/demo/{DemoRegister-CmeHbOAs.js → DemoRegister-DzkJ5M83.js} +39 -32
  73. package/dist/demo/DemoRegister-DzkJ5M83.js.map +1 -0
  74. package/dist/demo/{DemoResetPassword-CKO5iA_6.js → DemoResetPassword-DWh4_BpQ.js} +30 -26
  75. package/dist/demo/DemoResetPassword-DWh4_BpQ.js.map +1 -0
  76. package/dist/demo/{DemoSidebar-MVmQKfMt.js → DemoSidebar-C1csnGhX.js} +4 -5
  77. package/dist/demo/DemoSidebar-C1csnGhX.js.map +1 -0
  78. package/dist/demo/{DemoTypeForm-w-qtfRlC.js → DemoTypeForm-CWz6fJrJ.js} +4 -5
  79. package/dist/demo/DemoTypeForm-CWz6fJrJ.js.map +1 -0
  80. package/dist/demo/{DemoVerifyEmail-C8FFJT5A.js → DemoVerifyEmail-DbU_tCj8.js} +16 -16
  81. package/dist/demo/DemoVerifyEmail-DbU_tCj8.js.map +1 -0
  82. package/dist/{auth/IconGoogle-DpSlPZ1u.js → demo/IconGoogle-Ch1m3Uzl.js} +2 -4
  83. package/dist/demo/{IconGoogle-CbBF8Hqq.js.map → IconGoogle-Ch1m3Uzl.js.map} +1 -1
  84. package/dist/demo/{Showcase-CQrMWars.js → Showcase-BzoXNlCn.js} +11 -13
  85. package/dist/demo/Showcase-BzoXNlCn.js.map +1 -0
  86. package/dist/demo/index.d.ts +3 -70
  87. package/dist/demo/index.d.ts.map +1 -1
  88. package/dist/demo/index.js +11 -15
  89. package/dist/demo/index.js.map +1 -1
  90. package/dist/json/index.js +2 -2
  91. package/dist/json/index.js.map +1 -1
  92. package/package.json +11 -5
  93. package/src/admin/AdminRouter.ts +51 -29
  94. package/src/admin/components/AdminLayout.tsx +6 -9
  95. package/src/admin/components/audits/AdminAudits.tsx +5 -5
  96. package/src/admin/components/jobs/AdminJobDashboard.tsx +455 -0
  97. package/src/admin/components/jobs/AdminJobExecutions.tsx +693 -0
  98. package/src/admin/components/jobs/AdminJobRegistry.tsx +325 -0
  99. package/src/admin/components/keys/AdminApiKeys.tsx +28 -31
  100. package/src/admin/components/parameters/AdminParameters.tsx +156 -78
  101. package/src/admin/components/parameters/ParameterDetails.tsx +173 -108
  102. package/src/admin/components/parameters/ParameterEmptyState.tsx +27 -0
  103. package/src/admin/components/parameters/ParameterHistory.tsx +22 -35
  104. package/src/admin/components/parameters/ParameterTree.tsx +283 -109
  105. package/src/admin/components/parameters/types.ts +3 -3
  106. package/src/admin/components/sessions/AdminSessions.tsx +3 -3
  107. package/src/admin/components/shared/AdminResourceHeader.tsx +20 -16
  108. package/src/admin/components/users/AdminUserAudits.tsx +5 -5
  109. package/src/admin/components/users/AdminUserCreate.tsx +3 -3
  110. package/src/admin/components/users/AdminUserDetails.tsx +51 -53
  111. package/src/admin/components/users/AdminUserLayout.tsx +7 -7
  112. package/src/admin/components/users/AdminUserSessions.tsx +3 -3
  113. package/src/admin/components/users/AdminUserSettings.tsx +9 -9
  114. package/src/admin/components/users/AdminUsers.tsx +5 -5
  115. package/src/admin/components/verifications/AdminVerifications.tsx +3 -3
  116. package/src/admin/index.ts +0 -24
  117. package/src/admin/primitives/$uiAdmin.ts +2 -2
  118. package/src/auth/AuthRouter.ts +1 -0
  119. package/src/auth/components/Login.tsx +13 -13
  120. package/src/auth/components/Profile.tsx +17 -26
  121. package/src/auth/components/Register.tsx +21 -31
  122. package/src/auth/components/ResetPassword.tsx +13 -22
  123. package/src/auth/components/VerifyEmail.tsx +5 -5
  124. package/src/auth/components/buttons/UserButton.tsx +14 -4
  125. package/src/core/components/buttons/ActionButton.tsx +13 -17
  126. package/src/core/components/buttons/DarkModeButton.tsx +8 -4
  127. package/src/core/components/buttons/ToggleSidebarButton.tsx +3 -5
  128. package/src/core/components/data/ErrorViewer.tsx +15 -15
  129. package/src/core/components/dialogs/AlertDialog.tsx +3 -3
  130. package/src/core/components/dialogs/ConfirmDialog.tsx +3 -3
  131. package/src/core/components/dialogs/PromptDialog.tsx +3 -3
  132. package/src/core/components/form/Control.tsx +19 -32
  133. package/src/core/components/form/ControlArray.tsx +206 -96
  134. package/src/core/components/form/ControlObject.tsx +3 -3
  135. package/src/core/components/form/ControlQueryBuilder.tsx +20 -22
  136. package/src/core/components/form/ControlSelect.tsx +4 -0
  137. package/src/core/components/form/TypeForm.browser.spec.tsx +727 -0
  138. package/src/core/components/form/TypeForm.tsx +7 -0
  139. package/src/core/components/layout/AlephaMantineProvider.tsx +1 -0
  140. package/src/core/components/layout/Breadcrumb.tsx +91 -0
  141. package/src/core/components/layout/{AdminShell.tsx → DashboardShell.tsx} +77 -32
  142. package/src/core/components/layout/Omnibar.tsx +2 -1
  143. package/src/core/components/layout/Sidebar.tsx +63 -19
  144. package/src/core/components/table/ColumnPicker.tsx +47 -31
  145. package/src/core/components/table/DataTable.tsx +277 -201
  146. package/src/core/components/table/DataTableFilters.tsx +8 -0
  147. package/src/core/components/table/DataTableToolbar.tsx +98 -5
  148. package/src/core/components/table/FilterPicker.tsx +28 -26
  149. package/src/core/components/table/types.ts +52 -37
  150. package/src/core/components/table/useTableSelection.ts +83 -0
  151. package/src/core/constants/ui.ts +1 -1
  152. package/src/core/helpers/renderIcon.tsx +5 -2
  153. package/src/core/index.ts +9 -5
  154. package/src/core/styles.css +8 -7
  155. package/src/core/utils/parseInput.ts +1 -0
  156. package/src/core/utils/string.ts +28 -4
  157. package/src/demo/components/DemoHome.tsx +5 -5
  158. package/src/demo/components/DemoLayout.tsx +6 -2
  159. package/src/demo/components/core/DemoDataTable.tsx +209 -5
  160. package/src/demo/components/json/DemoJsonViewer.tsx +1 -1
  161. package/src/demo/components/shared/MacWindow.tsx +7 -7
  162. package/src/demo/components/shared/Showcase.tsx +3 -3
  163. package/src/demo/index.ts +0 -11
  164. package/src/json/components/JsonViewer.tsx +3 -3
  165. package/dist/admin/AdminApiKeys-DsmGnHNh.js +0 -3
  166. package/dist/admin/AdminApiKeys-GMORg-1l.js.map +0 -1
  167. package/dist/admin/AdminAudits-8SM96viT.js +0 -3
  168. package/dist/admin/AdminAudits-pkWrjq1Z.js.map +0 -1
  169. package/dist/admin/AdminFiles-B56ocq4H.js +0 -3
  170. package/dist/admin/AdminJobs-B-q9iGO3.js +0 -697
  171. package/dist/admin/AdminJobs-B-q9iGO3.js.map +0 -1
  172. package/dist/admin/AdminJobs-CED1syCn.js +0 -3
  173. package/dist/admin/AdminLayout-BqZiXx4H.js.map +0 -1
  174. package/dist/admin/AdminNotifications-B0B1rdc4.js +0 -3
  175. package/dist/admin/AdminParameters-BU3lATdJ.js +0 -3
  176. package/dist/admin/AdminParameters-CfDUpc78.js +0 -575
  177. package/dist/admin/AdminParameters-CfDUpc78.js.map +0 -1
  178. package/dist/admin/AdminSessions-BDGK2MS6.js +0 -3
  179. package/dist/admin/AdminSessions-DzIOxM3b.js.map +0 -1
  180. package/dist/admin/AdminUserAudits-CiUPN2BC.js.map +0 -1
  181. package/dist/admin/AdminUserAudits-Cj79gENT.js +0 -3
  182. package/dist/admin/AdminUserCreate-BwQKr4xE.js.map +0 -1
  183. package/dist/admin/AdminUserCreate-Cq-mUmBs.js +0 -3
  184. package/dist/admin/AdminUserDetails-DRjVAPFd.js +0 -3
  185. package/dist/admin/AdminUserDetails-uqtC5aJ1.js.map +0 -1
  186. package/dist/admin/AdminUserLayout-CGzmHHby.js +0 -3
  187. package/dist/admin/AdminUserLayout-CiPay35T.js.map +0 -1
  188. package/dist/admin/AdminUserSessions-DAE8Nf1F.js.map +0 -1
  189. package/dist/admin/AdminUserSessions-DcdzuNZ9.js +0 -3
  190. package/dist/admin/AdminUserSettings-D7V6-ceX.js +0 -3
  191. package/dist/admin/AdminUserSettings-EbahaV2a.js.map +0 -1
  192. package/dist/admin/AdminUsers-D9nyzGqQ.js +0 -3
  193. package/dist/admin/AdminUsers-Dcjh0KNW.js.map +0 -1
  194. package/dist/auth/Login-BBqTosqZ.js.map +0 -1
  195. package/dist/auth/Login-CoU63mMR.js +0 -4
  196. package/dist/auth/Profile-Bxj8Nwom.js.map +0 -1
  197. package/dist/auth/Register-BV_oa_AK.js +0 -4
  198. package/dist/auth/Register-Ce675Crg.js.map +0 -1
  199. package/dist/auth/ResetPassword-D5wC8GAA.js +0 -3
  200. package/dist/auth/ResetPassword-DWdt7c40.js.map +0 -1
  201. package/dist/auth/VerifyEmail-CI4JwByV.js.map +0 -1
  202. package/dist/auth/VerifyEmail-DAfqVm5s.js +0 -3
  203. package/dist/demo/DemoDataTable-CguplbR7.js +0 -150
  204. package/dist/demo/DemoDataTable-CguplbR7.js.map +0 -1
  205. package/dist/demo/DemoHome-Cce2bWmg.js.map +0 -1
  206. package/dist/demo/DemoHome-DC9qkMNe.js +0 -3
  207. package/dist/demo/DemoJsonViewer-DIssGVlJ.js +0 -4
  208. package/dist/demo/DemoJsonViewer-Dgdk3Txb.js.map +0 -1
  209. package/dist/demo/DemoLayout-B20TEuhV.js.map +0 -1
  210. package/dist/demo/DemoLayout-DSRyf4qJ.js +0 -3
  211. package/dist/demo/DemoLogin-CvCG2WVh.js.map +0 -1
  212. package/dist/demo/DemoRegister-CmeHbOAs.js.map +0 -1
  213. package/dist/demo/DemoResetPassword-CKO5iA_6.js.map +0 -1
  214. package/dist/demo/DemoSidebar-MVmQKfMt.js.map +0 -1
  215. package/dist/demo/DemoTypeForm-w-qtfRlC.js.map +0 -1
  216. package/dist/demo/DemoVerifyEmail-C8FFJT5A.js.map +0 -1
  217. package/dist/demo/Showcase-CQrMWars.js.map +0 -1
  218. package/src/admin/components/jobs/AdminJobs.tsx +0 -772
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DemoResetPassword-DWh4_BpQ.js","names":["Text"],"sources":["../../src/auth/components/ResetPassword.tsx","../../src/demo/components/auth/DemoResetPassword.tsx"],"sourcesContent":["import { ActionButton, Control } from \"@alepha/ui\";\nimport { Alert, Card, Flex, Image, PinInput, Text, Title } from \"@mantine/core\";\nimport {\n IconAlertCircle,\n IconCheck,\n IconInfoCircle,\n IconLock,\n IconMail,\n} from \"@tabler/icons-react\";\nimport { AlephaError, t } from \"alepha\";\nimport type {\n PasswordResetIntentResponse,\n RealmConfig,\n UserController,\n} from \"alepha/api/users\";\nimport { resetPasswordRequestSchema } from \"alepha/api/users\";\nimport { useClient } from \"alepha/react\";\nimport { useForm } from \"alepha/react/form\";\nimport { useI18n } from \"alepha/react/i18n\";\nimport { useRouter } from \"alepha/react/router\";\nimport { useState } from \"react\";\nimport type { AuthI18n } from \"../AuthI18n.ts\";\nimport type { AuthRouter } from \"../AuthRouter.ts\";\n\nexport interface ResetPasswordProps {\n realmConfig: RealmConfig;\n}\n\ntype Step = \"email\" | \"code\" | \"password\" | \"success\";\n\ninterface ResetState {\n step: Step;\n intent?: PasswordResetIntentResponse;\n email?: string;\n code?: string;\n}\n\nconst ResetPassword = (props: ResetPasswordProps) => {\n const router = useRouter<AuthRouter>();\n const userCtrl = useClient<UserController>();\n const { tr } = useI18n<AuthI18n, \"en\">();\n const [resetState, setResetState] = useState<ResetState>({ step: \"email\" });\n const [error, setError] = useState<string | null>(null);\n const [isSubmitting, setIsSubmitting] = useState(false);\n const redirect = router.query.r || \"/\";\n\n const settings = props.realmConfig.settings;\n const isResetPasswordAllowed = settings?.resetPasswordAllowed !== false;\n\n // Phase 1: Request password reset intent\n const emailForm = useForm({\n schema: resetPasswordRequestSchema,\n handler: async (data) => {\n setError(null);\n const intent = await userCtrl.createPasswordResetIntent({\n query: { userRealmName: props.realmConfig.realmName },\n body: { email: data.email },\n });\n\n setResetState({\n step: \"code\",\n intent,\n email: data.email,\n });\n },\n });\n\n // Phase 2: Complete password reset\n const passwordForm = useForm(\n {\n schema: t.object({\n password: t.string({ minLength: 8 }),\n confirmPassword: t.string({ minLength: 8 }),\n }),\n handler: async (data) => {\n if (data.password !== data.confirmPassword) {\n throw new AlephaError(\"Passwords do not match\");\n }\n\n if (!resetState.intent || !resetState.code) {\n throw new AlephaError(\"Invalid reset state\");\n }\n\n await userCtrl.completePasswordReset({\n body: {\n intentId: resetState.intent.intentId,\n code: resetState.code,\n newPassword: data.password,\n },\n });\n\n setResetState({ step: \"success\" });\n },\n },\n [resetState.intent, resetState.code],\n );\n\n const handleCodeComplete = (value: string) => {\n if (value.length === 6) {\n setResetState((prev) => ({\n ...prev,\n step: \"password\",\n code: value,\n }));\n }\n };\n\n const handleResendCode = async () => {\n if (!resetState.email) return;\n\n setIsSubmitting(true);\n setError(null);\n\n try {\n const intent = await userCtrl.createPasswordResetIntent({\n query: { userRealmName: props.realmConfig.realmName },\n body: { email: resetState.email },\n });\n\n setResetState((prev) => ({\n ...prev,\n intent,\n }));\n } catch (err) {\n setError(err instanceof Error ? err.message : \"Failed to resend code\");\n } finally {\n setIsSubmitting(false);\n }\n };\n\n return (\n <Flex flex={1} justify={\"center\"} align={\"center\"}>\n <Flex direction=\"column\" gap={\"sm\"} w={360}>\n <Card withBorder p={\"lg\"} bg={\"var(--alepha-elevated)\"}>\n <Flex direction=\"column\" gap={\"md\"}>\n {/* Realm branding */}\n {(settings.logoUrl ||\n settings.displayName ||\n settings.description) && (\n <Flex direction=\"column\" gap={\"xs\"} align=\"center\" mb=\"xs\">\n {settings.logoUrl && (\n <Image\n src={settings.logoUrl}\n alt={settings.displayName || props.realmConfig.realmName}\n h={48}\n w=\"auto\"\n fit=\"contain\"\n />\n )}\n {settings.displayName && (\n <Title order={4} ta=\"center\">\n {settings.displayName}\n </Title>\n )}\n {settings.description && (\n <Text size=\"sm\" c=\"dimmed\" ta=\"center\">\n {settings.description}\n </Text>\n )}\n </Flex>\n )}\n\n {error && (\n <Alert variant=\"light\" color=\"red\" icon={<IconAlertCircle />}>\n <Text size=\"sm\">{error}</Text>\n </Alert>\n )}\n\n {!isResetPasswordAllowed ? (\n <>\n <Alert\n variant=\"light\"\n color=\"yellow\"\n icon={<IconAlertCircle />}\n >\n <Text size=\"sm\">{tr(\"resetPasswordDisabled\")}</Text>\n </Alert>\n <ActionButton\n href={router.path(\"login\", {\n query: { realm: props.realmConfig.realmName },\n })}\n >\n {tr(\"resetPasswordBackToSignIn\")}\n </ActionButton>\n </>\n ) : resetState.step === \"email\" ? (\n <form {...emailForm.props}>\n <Flex direction=\"column\" flex={1} gap={\"md\"}>\n <Text size=\"lg\" fw={500} ta=\"center\">\n {tr(\"resetPasswordTitle\")}\n </Text>\n <Text size=\"sm\" c=\"dimmed\">\n {tr(\"resetPasswordEnterEmail\")}\n </Text>\n <Control\n title={tr(\"resetPasswordEmail\")}\n input={emailForm.input.email}\n icon={<IconMail />}\n text={{\n autoComplete: \"email\",\n autoFocus: true,\n disabled: !isResetPasswordAllowed,\n }}\n />\n <ActionButton\n form={emailForm}\n disabled={!isResetPasswordAllowed}\n >\n {tr(\"resetPasswordSendCode\")}\n </ActionButton>\n </Flex>\n </form>\n ) : resetState.step === \"code\" ? (\n <Flex direction=\"column\" gap={\"md\"}>\n <Text size=\"lg\" fw={500} ta=\"center\">\n {tr(\"resetPasswordTitle\")}\n </Text>\n <Alert variant=\"light\" color=\"blue\" icon={<IconInfoCircle />}>\n <Text size=\"sm\">{tr(\"resetPasswordCodeSent\")}</Text>\n </Alert>\n <Text size=\"sm\" c=\"dimmed\" ta=\"center\">\n {tr(\"resetPasswordEnterCode\")}\n </Text>\n <Flex justify=\"center\">\n <PinInput\n length={6}\n type=\"number\"\n autoFocus\n oneTimeCode\n onComplete={handleCodeComplete}\n aria-label=\"Password reset verification code\"\n />\n </Flex>\n <ActionButton\n variant=\"subtle\"\n onClick={handleResendCode}\n loading={isSubmitting}\n >\n {tr(\"resetPasswordResendCode\")}\n </ActionButton>\n </Flex>\n ) : resetState.step === \"password\" ? (\n <form {...passwordForm.props}>\n <Flex direction=\"column\" flex={1} gap={\"md\"}>\n <Text size=\"lg\" fw={500} ta=\"center\">\n {tr(\"resetPasswordTitle\")}\n </Text>\n <Text size=\"sm\" c=\"dimmed\">\n {tr(\"resetPasswordEnterNewPassword\")}\n </Text>\n <Control\n title={tr(\"resetPasswordNewPassword\")}\n input={passwordForm.input.password}\n icon={<IconLock />}\n password={{\n autoComplete: \"new-password\",\n autoFocus: true,\n }}\n />\n <Control\n title={tr(\"resetPasswordConfirmPassword\")}\n input={passwordForm.input.confirmPassword}\n icon={<IconLock />}\n password={{\n autoComplete: \"new-password\",\n }}\n />\n <ActionButton form={passwordForm}>\n {tr(\"resetPasswordSetNewPassword\")}\n </ActionButton>\n </Flex>\n </form>\n ) : (\n <>\n <Alert variant=\"light\" color=\"green\" icon={<IconCheck />}>\n <Text size=\"sm\">{tr(\"resetPasswordSuccess\")}</Text>\n </Alert>\n <ActionButton\n href={router.path(\"login\", {\n query: { realm: props.realmConfig.realmName },\n })}\n >\n {tr(\"resetPasswordBackToSignIn\")}\n </ActionButton>\n </>\n )}\n </Flex>\n </Card>\n <ActionButton variant={\"subtle\"} href={redirect}>\n {tr(\"resetPasswordCancel\")}\n </ActionButton>\n </Flex>\n </Flex>\n );\n};\n\nexport default ResetPassword;\n","import { t } from \"alepha\";\nimport type { RealmConfig } from \"alepha/api/users\";\nimport ResetPassword from \"../../../auth/components/ResetPassword.tsx\";\nimport Showcase from \"../shared/Showcase.tsx\";\n\nconst showcaseSchema = t.object({\n resetPasswordAllowed: t.boolean({\n title: \"Reset Allowed\",\n default: true,\n $control: { switch: true },\n }),\n showBranding: t.boolean({\n title: \"Show Branding\",\n default: true,\n $control: { switch: true },\n }),\n});\n\nconst buildRealmConfig = (props: {\n resetPasswordAllowed: boolean;\n showBranding: boolean;\n}): RealmConfig => {\n return {\n realmName: \"demo\",\n authenticationMethods: [{ name: \"credentials\", type: \"CREDENTIALS\" }],\n settings: {\n displayName: props.showBranding ? \"Demo App\" : undefined,\n description: props.showBranding ? \"Reset your password\" : undefined,\n logoUrl: undefined,\n registrationAllowed: true,\n emailEnabled: true,\n emailRequired: true,\n usernameEnabled: false,\n usernameRequired: false,\n usernameRegExp: \"^[a-zA-Z0-9_]{3,30}$\",\n phoneEnabled: false,\n phoneRequired: false,\n verifyEmailRequired: false,\n verifyPhoneRequired: false,\n firstNameLastNameEnabled: false,\n firstNameLastNameRequired: false,\n resetPasswordAllowed: props.resetPasswordAllowed,\n adminEmails: [],\n adminUsernames: [],\n passwordPolicy: {\n minLength: 8,\n requireUppercase: true,\n requireLowercase: true,\n requireNumbers: true,\n requireSpecialCharacters: false,\n },\n },\n };\n};\n\nconst DemoResetPassword = () => {\n return (\n <Showcase\n title=\"ResetPassword\"\n schema={showcaseSchema}\n initialValues={{\n resetPasswordAllowed: true,\n showBranding: true,\n }}\n columns={1}\n >\n {(props) => <ResetPassword realmConfig={buildRealmConfig(props)} />}\n </Showcase>\n );\n};\n\nexport default DemoResetPassword;\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { t as Showcase_default } from "./Showcase-CQrMWars.js";
1
+ import { t as Showcase } from "./Showcase-BzoXNlCn.js";
2
2
  import { Sidebar } from "@alepha/ui";
3
3
  import { t } from "alepha";
4
4
  import { IconDashboard, IconFiles, IconSettings, IconUsers } from "@tabler/icons-react";
@@ -51,7 +51,7 @@ const showcaseSchema = t.object({
51
51
  })
52
52
  });
53
53
  const DemoSidebar = () => {
54
- return /* @__PURE__ */ jsx(Showcase_default, {
54
+ return /* @__PURE__ */ jsx(Showcase, {
55
55
  title: "Sidebar",
56
56
  schema: showcaseSchema,
57
57
  initialValues: {
@@ -75,8 +75,7 @@ const DemoSidebar = () => {
75
75
  })
76
76
  });
77
77
  };
78
- var DemoSidebar_default = DemoSidebar;
79
78
 
80
79
  //#endregion
81
- export { DemoSidebar_default as default };
82
- //# sourceMappingURL=DemoSidebar-MVmQKfMt.js.map
80
+ export { DemoSidebar as default };
81
+ //# sourceMappingURL=DemoSidebar-C1csnGhX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DemoSidebar-C1csnGhX.js","names":[],"sources":["../../src/demo/components/core/DemoSidebar.tsx"],"sourcesContent":["import { Sidebar, type SidebarNode } from \"@alepha/ui\";\nimport { Flex } from \"@mantine/core\";\nimport {\n IconDashboard,\n IconFiles,\n IconSettings,\n IconUsers,\n} from \"@tabler/icons-react\";\nimport { t } from \"alepha\";\nimport Showcase from \"../shared/Showcase.tsx\";\n\nconst sidebarItems = [\n { type: \"search\" },\n { type: \"divider\" },\n {\n icon: IconDashboard,\n label: \"Dashboard\",\n },\n {\n icon: IconUsers,\n label: \"Users\",\n children: [\n { label: \"All Users\" },\n { label: \"Add User\" },\n { label: \"Roles\" },\n ],\n },\n {\n icon: IconFiles,\n label: \"Files\",\n },\n { type: \"spacer\" },\n {\n position: \"bottom\",\n icon: IconSettings,\n label: \"Settings\",\n },\n] satisfies SidebarNode[];\n\nconst showcaseSchema = t.object({\n collapsed: t.boolean({\n title: \"Collapsed\",\n default: false,\n $control: { switch: true },\n }),\n gap: t.enum([\"xs\", \"sm\", \"md\", \"lg\"], {\n title: \"Gap\",\n default: \"xs\",\n $control: { segmented: true },\n }),\n});\n\nconst DemoSidebar = () => {\n return (\n <Showcase\n title=\"Sidebar\"\n schema={showcaseSchema}\n initialValues={{\n collapsed: false,\n gap: \"xs\",\n }}\n columns={1}\n windowProps={{\n fill: true,\n containerProps: { p: 0 },\n }}\n >\n {(props) => (\n <Flex\n h={\"100%\"}\n w={props.collapsed ? 60 : 240}\n bg=\"var(--alepha-surface)\"\n >\n <Sidebar\n items={sidebarItems}\n collapsed={props.collapsed}\n gap={props.gap}\n />\n </Flex>\n )}\n </Showcase>\n );\n};\n\nexport default DemoSidebar;\n"],"mappings":";;;;;;;;AAWA,MAAM,eAAe;CACnB,EAAE,MAAM,UAAU;CAClB,EAAE,MAAM,WAAW;CACnB;EACE,MAAM;EACN,OAAO;EACR;CACD;EACE,MAAM;EACN,OAAO;EACP,UAAU;GACR,EAAE,OAAO,aAAa;GACtB,EAAE,OAAO,YAAY;GACrB,EAAE,OAAO,SAAS;GACnB;EACF;CACD;EACE,MAAM;EACN,OAAO;EACR;CACD,EAAE,MAAM,UAAU;CAClB;EACE,UAAU;EACV,MAAM;EACN,OAAO;EACR;CACF;AAED,MAAM,iBAAiB,EAAE,OAAO;CAC9B,WAAW,EAAE,QAAQ;EACnB,OAAO;EACP,SAAS;EACT,UAAU,EAAE,QAAQ,MAAM;EAC3B,CAAC;CACF,KAAK,EAAE,KAAK;EAAC;EAAM;EAAM;EAAM;EAAK,EAAE;EACpC,OAAO;EACP,SAAS;EACT,UAAU,EAAE,WAAW,MAAM;EAC9B,CAAC;CACH,CAAC;AAEF,MAAM,oBAAoB;AACxB,QACE,oBAAC;EACC,OAAM;EACN,QAAQ;EACR,eAAe;GACb,WAAW;GACX,KAAK;GACN;EACD,SAAS;EACT,aAAa;GACX,MAAM;GACN,gBAAgB,EAAE,GAAG,GAAG;GACzB;aAEC,UACA,oBAAC;GACC,GAAG;GACH,GAAG,MAAM,YAAY,KAAK;GAC1B,IAAG;aAEH,oBAAC;IACC,OAAO;IACP,WAAW,MAAM;IACjB,KAAK,MAAM;KACX;IACG;GAEA"}
@@ -1,4 +1,4 @@
1
- import { t as Showcase_default } from "./Showcase-CQrMWars.js";
1
+ import { t as Showcase } from "./Showcase-BzoXNlCn.js";
2
2
  import { TypeForm } from "@alepha/ui";
3
3
  import { t } from "alepha";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -58,7 +58,7 @@ const DemoTypeForm = () => {
58
58
  alert(JSON.stringify(values, null, 2));
59
59
  }
60
60
  }, []);
61
- return /* @__PURE__ */ jsx(Showcase_default, {
61
+ return /* @__PURE__ */ jsx(Showcase, {
62
62
  title: "TypeForm",
63
63
  schema: showcaseSchema,
64
64
  initialValues: {
@@ -76,8 +76,7 @@ const DemoTypeForm = () => {
76
76
  })
77
77
  });
78
78
  };
79
- var DemoTypeForm_default = DemoTypeForm;
80
79
 
81
80
  //#endregion
82
- export { DemoTypeForm_default as default };
83
- //# sourceMappingURL=DemoTypeForm-w-qtfRlC.js.map
81
+ export { DemoTypeForm as default };
82
+ //# sourceMappingURL=DemoTypeForm-CWz6fJrJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DemoTypeForm-CWz6fJrJ.js","names":[],"sources":["../../src/demo/components/core/DemoTypeForm.tsx"],"sourcesContent":["import { TypeForm } from \"@alepha/ui\";\nimport { t } from \"alepha\";\nimport { useForm } from \"alepha/react/form\";\nimport Showcase from \"../shared/Showcase.tsx\";\n\nconst formSchema = t.object({\n username: t.text({ title: \"Username\", default: \"\" }),\n email: t.email({ title: \"Email\", default: \"\" }),\n age: t.integer({ title: \"Age\", minimum: 0, maximum: 120 }),\n role: t.enum([\"admin\", \"user\", \"guest\"], { title: \"Role\", default: \"user\" }),\n subscribe: t.boolean({ title: \"Subscribe\", default: false }),\n});\n\nconst showcaseSchema = t.object({\n columns: t.integer({\n title: \"Columns\",\n default: 1,\n minimum: 1,\n maximum: 4,\n $control: { slider: true },\n }),\n fill: t.boolean({\n title: \"Fill Width\",\n default: false,\n $control: { switch: true },\n }),\n skipSubmitButton: t.boolean({\n title: \"Hide Submit\",\n default: false,\n $control: { switch: true },\n }),\n});\n\nconst DemoTypeForm = () => {\n const form = useForm(\n {\n schema: formSchema,\n handler: (values) => {\n alert(JSON.stringify(values, null, 2));\n },\n },\n [],\n );\n\n return (\n <Showcase\n title=\"TypeForm\"\n schema={showcaseSchema}\n initialValues={{\n columns: 1,\n fill: false,\n skipSubmitButton: false,\n }}\n columns={1}\n >\n {(props) => (\n <TypeForm\n form={form}\n columns={props.columns}\n fill={props.fill}\n skipSubmitButton={props.skipSubmitButton}\n submitButtonProps={{ children: \"Submit\" }}\n />\n )}\n </Showcase>\n );\n};\n\nexport default DemoTypeForm;\n"],"mappings":";;;;;;;AAKA,MAAM,aAAa,EAAE,OAAO;CAC1B,UAAU,EAAE,KAAK;EAAE,OAAO;EAAY,SAAS;EAAI,CAAC;CACpD,OAAO,EAAE,MAAM;EAAE,OAAO;EAAS,SAAS;EAAI,CAAC;CAC/C,KAAK,EAAE,QAAQ;EAAE,OAAO;EAAO,SAAS;EAAG,SAAS;EAAK,CAAC;CAC1D,MAAM,EAAE,KAAK;EAAC;EAAS;EAAQ;EAAQ,EAAE;EAAE,OAAO;EAAQ,SAAS;EAAQ,CAAC;CAC5E,WAAW,EAAE,QAAQ;EAAE,OAAO;EAAa,SAAS;EAAO,CAAC;CAC7D,CAAC;AAEF,MAAM,iBAAiB,EAAE,OAAO;CAC9B,SAAS,EAAE,QAAQ;EACjB,OAAO;EACP,SAAS;EACT,SAAS;EACT,SAAS;EACT,UAAU,EAAE,QAAQ,MAAM;EAC3B,CAAC;CACF,MAAM,EAAE,QAAQ;EACd,OAAO;EACP,SAAS;EACT,UAAU,EAAE,QAAQ,MAAM;EAC3B,CAAC;CACF,kBAAkB,EAAE,QAAQ;EAC1B,OAAO;EACP,SAAS;EACT,UAAU,EAAE,QAAQ,MAAM;EAC3B,CAAC;CACH,CAAC;AAEF,MAAM,qBAAqB;CACzB,MAAM,OAAO,QACX;EACE,QAAQ;EACR,UAAU,WAAW;AACnB,SAAM,KAAK,UAAU,QAAQ,MAAM,EAAE,CAAC;;EAEzC,EACD,EAAE,CACH;AAED,QACE,oBAAC;EACC,OAAM;EACN,QAAQ;EACR,eAAe;GACb,SAAS;GACT,MAAM;GACN,kBAAkB;GACnB;EACD,SAAS;aAEP,UACA,oBAAC;GACO;GACN,SAAS,MAAM;GACf,MAAM,MAAM;GACZ,kBAAkB,MAAM;GACxB,mBAAmB,EAAE,UAAU,UAAU;IACzC;GAEK"}
@@ -1,9 +1,9 @@
1
- import { t as Showcase_default } from "./Showcase-CQrMWars.js";
1
+ import { t as Showcase } from "./Showcase-BzoXNlCn.js";
2
2
  import { ActionButton } from "@alepha/ui";
3
3
  import { t } from "alepha";
4
4
  import { IconAlertCircle, IconCheck, IconMailCheck } from "@tabler/icons-react";
5
5
  import { useRouter, useRouterState } from "alepha/react/router";
6
- import { Alert, Card, Flex, Loader, Stack, Text } from "@mantine/core";
6
+ import { Alert, Card, Flex, Loader, Text as Text$1 } from "@mantine/core";
7
7
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
8
  import { useI18n } from "alepha/react/i18n";
9
9
  import { useEffect, useState } from "react";
@@ -43,26 +43,28 @@ const VerifyEmail = (_props) => {
43
43
  flex: 1,
44
44
  justify: "center",
45
45
  align: "center",
46
- children: /* @__PURE__ */ jsx(Stack, {
46
+ children: /* @__PURE__ */ jsx(Flex, {
47
+ direction: "column",
47
48
  gap: "sm",
48
49
  w: 400,
49
50
  children: /* @__PURE__ */ jsx(Card, {
50
51
  withBorder: true,
51
52
  p: "lg",
52
53
  bg: "var(--alepha-elevated)",
53
- children: /* @__PURE__ */ jsxs(Stack, {
54
+ children: /* @__PURE__ */ jsxs(Flex, {
55
+ direction: "column",
54
56
  gap: "md",
55
57
  align: "center",
56
58
  children: [
57
59
  step === "verifying" && /* @__PURE__ */ jsxs(Fragment, { children: [
58
60
  /* @__PURE__ */ jsx(Loader, { size: "lg" }),
59
- /* @__PURE__ */ jsx(Text, {
61
+ /* @__PURE__ */ jsx(Text$1, {
60
62
  size: "lg",
61
63
  fw: 500,
62
64
  ta: "center",
63
65
  children: tr("verifyEmailVerifying")
64
66
  }),
65
- /* @__PURE__ */ jsx(Text, {
67
+ /* @__PURE__ */ jsx(Text$1, {
66
68
  size: "sm",
67
69
  c: "dimmed",
68
70
  ta: "center",
@@ -74,7 +76,7 @@ const VerifyEmail = (_props) => {
74
76
  size: 48,
75
77
  color: "var(--mantine-color-green-6)"
76
78
  }),
77
- /* @__PURE__ */ jsx(Text, {
79
+ /* @__PURE__ */ jsx(Text$1, {
78
80
  size: "lg",
79
81
  fw: 500,
80
82
  ta: "center",
@@ -84,7 +86,7 @@ const VerifyEmail = (_props) => {
84
86
  variant: "light",
85
87
  color: "green",
86
88
  icon: /* @__PURE__ */ jsx(IconCheck, {}),
87
- children: /* @__PURE__ */ jsx(Text, {
89
+ children: /* @__PURE__ */ jsx(Text$1, {
88
90
  size: "sm",
89
91
  children: tr("verifyEmailSuccess")
90
92
  })
@@ -100,7 +102,7 @@ const VerifyEmail = (_props) => {
100
102
  size: 48,
101
103
  color: "var(--mantine-color-red-6)"
102
104
  }),
103
- /* @__PURE__ */ jsx(Text, {
105
+ /* @__PURE__ */ jsx(Text$1, {
104
106
  size: "lg",
105
107
  fw: 500,
106
108
  ta: "center",
@@ -110,7 +112,7 @@ const VerifyEmail = (_props) => {
110
112
  variant: "light",
111
113
  color: "red",
112
114
  icon: /* @__PURE__ */ jsx(IconAlertCircle, {}),
113
- children: /* @__PURE__ */ jsx(Text, {
115
+ children: /* @__PURE__ */ jsx(Text$1, {
114
116
  size: "sm",
115
117
  children: error || tr("verifyEmailFailed")
116
118
  })
@@ -127,7 +129,6 @@ const VerifyEmail = (_props) => {
127
129
  })
128
130
  });
129
131
  };
130
- var VerifyEmail_default = VerifyEmail;
131
132
 
132
133
  //#endregion
133
134
  //#region ../../src/demo/components/auth/DemoVerifyEmail.tsx
@@ -137,16 +138,15 @@ const showcaseSchema = t.object({ placeholder: t.boolean({
137
138
  $control: { switch: true }
138
139
  }) });
139
140
  const DemoVerifyEmail = () => {
140
- return /* @__PURE__ */ jsx(Showcase_default, {
141
+ return /* @__PURE__ */ jsx(Showcase, {
141
142
  title: "VerifyEmail",
142
143
  schema: showcaseSchema,
143
144
  initialValues: { placeholder: true },
144
145
  columns: 1,
145
- children: () => /* @__PURE__ */ jsx(VerifyEmail_default, {})
146
+ children: () => /* @__PURE__ */ jsx(VerifyEmail, {})
146
147
  });
147
148
  };
148
- var DemoVerifyEmail_default = DemoVerifyEmail;
149
149
 
150
150
  //#endregion
151
- export { DemoVerifyEmail_default as default };
152
- //# sourceMappingURL=DemoVerifyEmail-C8FFJT5A.js.map
151
+ export { DemoVerifyEmail as default };
152
+ //# sourceMappingURL=DemoVerifyEmail-DbU_tCj8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DemoVerifyEmail-DbU_tCj8.js","names":["Text"],"sources":["../../src/auth/components/VerifyEmail.tsx","../../src/demo/components/auth/DemoVerifyEmail.tsx"],"sourcesContent":["import { ActionButton } from \"@alepha/ui\";\nimport { Alert, Card, Flex, Loader, Text } from \"@mantine/core\";\nimport { IconAlertCircle, IconCheck, IconMailCheck } from \"@tabler/icons-react\";\nimport type { UserController } from \"alepha/api/users\";\nimport { useClient } from \"alepha/react\";\nimport { useI18n } from \"alepha/react/i18n\";\nimport { useRouter, useRouterState } from \"alepha/react/router\";\nimport { useEffect, useState } from \"react\";\nimport type { AuthI18n } from \"../AuthI18n.ts\";\nimport type { AuthRouter } from \"../AuthRouter.ts\";\n\nexport type VerifyEmailProps = {};\n\ntype Step = \"verifying\" | \"success\" | \"error\";\n\nconst VerifyEmail = (_props: VerifyEmailProps) => {\n const router = useRouter<AuthRouter>();\n const state = useRouterState();\n const userCtrl = useClient<UserController>();\n const { tr } = useI18n<AuthI18n, \"en\">();\n\n const [step, setStep] = useState<Step>(\"verifying\");\n const [error, setError] = useState<string | null>(null);\n\n const email = state.query.email as string | undefined;\n const token = state.query.token as string | undefined;\n\n useEffect(() => {\n const verify = async () => {\n if (!email || !token) {\n setError(tr(\"verifyEmailMissingParams\"));\n setStep(\"error\");\n return;\n }\n\n try {\n await userCtrl.verifyEmail({\n body: { email, token },\n });\n setStep(\"success\");\n } catch (err) {\n setError(err instanceof Error ? err.message : tr(\"verifyEmailFailed\"));\n setStep(\"error\");\n }\n };\n\n verify();\n }, [email, token]);\n\n return (\n <Flex flex={1} justify=\"center\" align=\"center\">\n <Flex direction=\"column\" gap=\"sm\" w={400}>\n <Card withBorder p=\"lg\" bg=\"var(--alepha-elevated)\">\n <Flex direction=\"column\" gap=\"md\" align=\"center\">\n {step === \"verifying\" && (\n <>\n <Loader size=\"lg\" />\n <Text size=\"lg\" fw={500} ta=\"center\">\n {tr(\"verifyEmailVerifying\")}\n </Text>\n <Text size=\"sm\" c=\"dimmed\" ta=\"center\">\n {tr(\"verifyEmailPleaseWait\")}\n </Text>\n </>\n )}\n\n {step === \"success\" && (\n <>\n <IconMailCheck size={48} color=\"var(--mantine-color-green-6)\" />\n <Text size=\"lg\" fw={500} ta=\"center\">\n {tr(\"verifyEmailTitle\")}\n </Text>\n <Alert variant=\"light\" color=\"green\" icon={<IconCheck />}>\n <Text size=\"sm\">{tr(\"verifyEmailSuccess\")}</Text>\n </Alert>\n <ActionButton href={router.path(\"login\")} fullWidth>\n {tr(\"verifyEmailSignIn\")}\n </ActionButton>\n </>\n )}\n\n {step === \"error\" && (\n <>\n <IconAlertCircle size={48} color=\"var(--mantine-color-red-6)\" />\n <Text size=\"lg\" fw={500} ta=\"center\">\n {tr(\"verifyEmailTitle\")}\n </Text>\n <Alert variant=\"light\" color=\"red\" icon={<IconAlertCircle />}>\n <Text size=\"sm\">{error || tr(\"verifyEmailFailed\")}</Text>\n </Alert>\n <ActionButton href={router.path(\"login\")} fullWidth>\n {tr(\"verifyEmailBackToSignIn\")}\n </ActionButton>\n </>\n )}\n </Flex>\n </Card>\n </Flex>\n </Flex>\n );\n};\n\nexport default VerifyEmail;\n","import { t } from \"alepha\";\nimport VerifyEmail from \"../../../auth/components/VerifyEmail.tsx\";\nimport Showcase from \"../shared/Showcase.tsx\";\n\nconst showcaseSchema = t.object({\n placeholder: t.boolean({\n title: \"Demo Mode\",\n default: true,\n $control: { switch: true },\n }),\n});\n\nconst DemoVerifyEmail = () => {\n return (\n <Showcase\n title=\"VerifyEmail\"\n schema={showcaseSchema}\n initialValues={{\n placeholder: true,\n }}\n columns={1}\n >\n {() => <VerifyEmail />}\n </Showcase>\n );\n};\n\nexport default DemoVerifyEmail;\n"],"mappings":";;;;;;;;;;;;AAeA,MAAM,eAAe,WAA6B;CAChD,MAAM,SAAS,WAAuB;CACtC,MAAM,QAAQ,gBAAgB;CAC9B,MAAM,WAAW,WAA2B;CAC5C,MAAM,EAAE,OAAO,SAAyB;CAExC,MAAM,CAAC,MAAM,WAAW,SAAe,YAAY;CACnD,MAAM,CAAC,OAAO,YAAY,SAAwB,KAAK;CAEvD,MAAM,QAAQ,MAAM,MAAM;CAC1B,MAAM,QAAQ,MAAM,MAAM;AAE1B,iBAAgB;EACd,MAAM,SAAS,YAAY;AACzB,OAAI,CAAC,SAAS,CAAC,OAAO;AACpB,aAAS,GAAG,2BAA2B,CAAC;AACxC,YAAQ,QAAQ;AAChB;;AAGF,OAAI;AACF,UAAM,SAAS,YAAY,EACzB,MAAM;KAAE;KAAO;KAAO,EACvB,CAAC;AACF,YAAQ,UAAU;YACX,KAAK;AACZ,aAAS,eAAe,QAAQ,IAAI,UAAU,GAAG,oBAAoB,CAAC;AACtE,YAAQ,QAAQ;;;AAIpB,UAAQ;IACP,CAAC,OAAO,MAAM,CAAC;AAElB,QACE,oBAAC;EAAK,MAAM;EAAG,SAAQ;EAAS,OAAM;YACpC,oBAAC;GAAK,WAAU;GAAS,KAAI;GAAK,GAAG;aACnC,oBAAC;IAAK;IAAW,GAAE;IAAK,IAAG;cACzB,qBAAC;KAAK,WAAU;KAAS,KAAI;KAAK,OAAM;;MACrC,SAAS,eACR;OACE,oBAAC,UAAO,MAAK,OAAO;OACpB,oBAACA;QAAK,MAAK;QAAK,IAAI;QAAK,IAAG;kBACzB,GAAG,uBAAuB;SACtB;OACP,oBAACA;QAAK,MAAK;QAAK,GAAE;QAAS,IAAG;kBAC3B,GAAG,wBAAwB;SACvB;UACN;MAGJ,SAAS,aACR;OACE,oBAAC;QAAc,MAAM;QAAI,OAAM;SAAiC;OAChE,oBAACA;QAAK,MAAK;QAAK,IAAI;QAAK,IAAG;kBACzB,GAAG,mBAAmB;SAClB;OACP,oBAAC;QAAM,SAAQ;QAAQ,OAAM;QAAQ,MAAM,oBAAC,cAAY;kBACtD,oBAACA;SAAK,MAAK;mBAAM,GAAG,qBAAqB;UAAQ;SAC3C;OACR,oBAAC;QAAa,MAAM,OAAO,KAAK,QAAQ;QAAE;kBACvC,GAAG,oBAAoB;SACX;UACd;MAGJ,SAAS,WACR;OACE,oBAAC;QAAgB,MAAM;QAAI,OAAM;SAA+B;OAChE,oBAACA;QAAK,MAAK;QAAK,IAAI;QAAK,IAAG;kBACzB,GAAG,mBAAmB;SAClB;OACP,oBAAC;QAAM,SAAQ;QAAQ,OAAM;QAAM,MAAM,oBAAC,oBAAkB;kBAC1D,oBAACA;SAAK,MAAK;mBAAM,SAAS,GAAG,oBAAoB;UAAQ;SACnD;OACR,oBAAC;QAAa,MAAM,OAAO,KAAK,QAAQ;QAAE;kBACvC,GAAG,0BAA0B;SACjB;UACd;;MAEA;KACF;IACF;GACF;;;;;AC9FX,MAAM,iBAAiB,EAAE,OAAO,EAC9B,aAAa,EAAE,QAAQ;CACrB,OAAO;CACP,SAAS;CACT,UAAU,EAAE,QAAQ,MAAM;CAC3B,CAAC,EACH,CAAC;AAEF,MAAM,wBAAwB;AAC5B,QACE,oBAAC;EACC,OAAM;EACN,QAAQ;EACR,eAAe,EACb,aAAa,MACd;EACD,SAAS;kBAEF,oBAAC,gBAAc;GACb"}
@@ -17,7 +17,6 @@ const IconGithub = () => {
17
17
  })
18
18
  });
19
19
  };
20
- var IconGithub_default = IconGithub;
21
20
 
22
21
  //#endregion
23
22
  //#region ../../src/auth/components/icons/IconGoogle.tsx
@@ -51,8 +50,7 @@ const IconGoogle = () => {
51
50
  ]
52
51
  });
53
52
  };
54
- var IconGoogle_default = IconGoogle;
55
53
 
56
54
  //#endregion
57
- export { IconGithub_default as n, IconGoogle_default as t };
58
- //# sourceMappingURL=IconGoogle-DpSlPZ1u.js.map
55
+ export { IconGithub as n, IconGoogle as t };
56
+ //# sourceMappingURL=IconGoogle-Ch1m3Uzl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IconGoogle-CbBF8Hqq.js","names":[],"sources":["../../src/auth/components/icons/IconGithub.tsx","../../src/auth/components/icons/IconGoogle.tsx"],"sourcesContent":["const IconGithub = () => {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 1024 1024\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8 0C3.58 0 0 3.58 0 8C0 11.54 2.29 14.53 5.47 15.59C5.87 15.66 6.02 15.42 6.02 15.21C6.02 15.02 6.01 14.39 6.01 13.72C4 14.09 3.48 13.23 3.32 12.78C3.23 12.55 2.84 11.84 2.5 11.65C2.22 11.5 1.82 11.13 2.49 11.12C3.12 11.11 3.57 11.7 3.72 11.94C4.44 13.15 5.59 12.81 6.05 12.6C6.12 12.08 6.33 11.73 6.56 11.53C4.78 11.33 2.92 10.64 2.92 7.58C2.92 6.71 3.23 5.99 3.74 5.43C3.66 5.23 3.38 4.41 3.82 3.31C3.82 3.31 4.49 3.1 6.02 4.13C6.66 3.95 7.34 3.86 8.02 3.86C8.7 3.86 9.38 3.95 10.02 4.13C11.55 3.09 12.22 3.31 12.22 3.31C12.66 4.41 12.38 5.23 12.3 5.43C12.81 5.99 13.12 6.7 13.12 7.58C13.12 10.65 11.25 11.33 9.47 11.53C9.76 11.78 10.01 12.26 10.01 13.01C10.01 14.08 10 14.94 10 15.21C10 15.42 10.15 15.67 10.55 15.59C13.71 14.53 16 11.53 16 8C16 3.58 12.42 0 8 0Z\"\n transform=\"scale(64)\"\n fill={\"var(--alepha-text)\"}\n />\n </svg>\n );\n};\n\nexport default IconGithub;\n","const IconGoogle = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n >\n <path\n d=\"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z\"\n fill=\"#34A853\"\n />\n <path\n d=\"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z\"\n fill=\"#FBBC05\"\n />\n <path\n d=\"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z\"\n fill=\"#EA4335\"\n />\n <path d=\"M1 1h22v22H1z\" fill=\"none\" />\n </svg>\n );\n};\n\nexport default IconGoogle;\n"],"mappings":";;;AAAA,MAAM,mBAAmB;AACvB,QACE,oBAAC;EACC,OAAM;EACN,QAAO;EACP,SAAQ;EACR,MAAK;EACL,OAAM;YAEN,oBAAC;GACC,UAAS;GACT,UAAS;GACT,GAAE;GACF,WAAU;GACV,MAAM;IACN;GACE;;AAIV,yBAAe;;;;ACpBf,MAAM,mBAAmB;AACvB,QACE,qBAAC;EACC,OAAM;EACN,QAAO;EACP,SAAQ;EACR,OAAM;;GAEN,oBAAC;IACC,GAAE;IACF,MAAK;KACL;GACF,oBAAC;IACC,GAAE;IACF,MAAK;KACL;GACF,oBAAC;IACC,GAAE;IACF,MAAK;KACL;GACF,oBAAC;IACC,GAAE;IACF,MAAK;KACL;GACF,oBAAC;IAAK,GAAE;IAAgB,MAAK;KAAS;;GAClC;;AAIV,yBAAe"}
1
+ {"version":3,"file":"IconGoogle-Ch1m3Uzl.js","names":[],"sources":["../../src/auth/components/icons/IconGithub.tsx","../../src/auth/components/icons/IconGoogle.tsx"],"sourcesContent":["const IconGithub = () => {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 1024 1024\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8 0C3.58 0 0 3.58 0 8C0 11.54 2.29 14.53 5.47 15.59C5.87 15.66 6.02 15.42 6.02 15.21C6.02 15.02 6.01 14.39 6.01 13.72C4 14.09 3.48 13.23 3.32 12.78C3.23 12.55 2.84 11.84 2.5 11.65C2.22 11.5 1.82 11.13 2.49 11.12C3.12 11.11 3.57 11.7 3.72 11.94C4.44 13.15 5.59 12.81 6.05 12.6C6.12 12.08 6.33 11.73 6.56 11.53C4.78 11.33 2.92 10.64 2.92 7.58C2.92 6.71 3.23 5.99 3.74 5.43C3.66 5.23 3.38 4.41 3.82 3.31C3.82 3.31 4.49 3.1 6.02 4.13C6.66 3.95 7.34 3.86 8.02 3.86C8.7 3.86 9.38 3.95 10.02 4.13C11.55 3.09 12.22 3.31 12.22 3.31C12.66 4.41 12.38 5.23 12.3 5.43C12.81 5.99 13.12 6.7 13.12 7.58C13.12 10.65 11.25 11.33 9.47 11.53C9.76 11.78 10.01 12.26 10.01 13.01C10.01 14.08 10 14.94 10 15.21C10 15.42 10.15 15.67 10.55 15.59C13.71 14.53 16 11.53 16 8C16 3.58 12.42 0 8 0Z\"\n transform=\"scale(64)\"\n fill={\"var(--alepha-text)\"}\n />\n </svg>\n );\n};\n\nexport default IconGithub;\n","const IconGoogle = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n >\n <path\n d=\"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z\"\n fill=\"#34A853\"\n />\n <path\n d=\"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z\"\n fill=\"#FBBC05\"\n />\n <path\n d=\"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z\"\n fill=\"#EA4335\"\n />\n <path d=\"M1 1h22v22H1z\" fill=\"none\" />\n </svg>\n );\n};\n\nexport default IconGoogle;\n"],"mappings":";;;AAAA,MAAM,mBAAmB;AACvB,QACE,oBAAC;EACC,OAAM;EACN,QAAO;EACP,SAAQ;EACR,MAAK;EACL,OAAM;YAEN,oBAAC;GACC,UAAS;GACT,UAAS;GACT,GAAE;GACF,WAAU;GACV,MAAM;IACN;GACE;;;;;AChBV,MAAM,mBAAmB;AACvB,QACE,qBAAC;EACC,OAAM;EACN,QAAO;EACP,SAAQ;EACR,OAAM;;GAEN,oBAAC;IACC,GAAE;IACF,MAAK;KACL;GACF,oBAAC;IACC,GAAE;IACF,MAAK;KACL;GACF,oBAAC;IACC,GAAE;IACF,MAAK;KACL;GACF,oBAAC;IACC,GAAE;IACF,MAAK;KACL;GACF,oBAAC;IAAK,GAAE;IAAgB,MAAK;KAAS;;GAClC"}
@@ -1,8 +1,8 @@
1
1
  import { TypeForm, ui } from "@alepha/ui";
2
- import { Box, Card, Flex, SegmentedControl, Text } from "@mantine/core";
2
+ import { Card, Flex, SegmentedControl, Text as Text$1 } from "@mantine/core";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
- import { useState } from "react";
5
4
  import { useForm } from "alepha/react/form";
5
+ import { useState } from "react";
6
6
 
7
7
  //#region ../../src/demo/components/shared/MacWindow.tsx
8
8
  const MacWindow = ({ children, title, containerProps, fill }) => {
@@ -36,7 +36,7 @@ const MacWindow = ({ children, title, containerProps, fill }) => {
36
36
  /* @__PURE__ */ jsxs(Flex, {
37
37
  gap: 6,
38
38
  children: [
39
- /* @__PURE__ */ jsx(Box, {
39
+ /* @__PURE__ */ jsx(Flex, {
40
40
  w: 12,
41
41
  h: 12,
42
42
  style: {
@@ -44,7 +44,7 @@ const MacWindow = ({ children, title, containerProps, fill }) => {
44
44
  background: "#ff5f57"
45
45
  }
46
46
  }),
47
- /* @__PURE__ */ jsx(Box, {
47
+ /* @__PURE__ */ jsx(Flex, {
48
48
  w: 12,
49
49
  h: 12,
50
50
  style: {
@@ -52,7 +52,7 @@ const MacWindow = ({ children, title, containerProps, fill }) => {
52
52
  background: "#febc2e"
53
53
  }
54
54
  }),
55
- /* @__PURE__ */ jsx(Box, {
55
+ /* @__PURE__ */ jsx(Flex, {
56
56
  w: 12,
57
57
  h: 12,
58
58
  style: {
@@ -62,7 +62,7 @@ const MacWindow = ({ children, title, containerProps, fill }) => {
62
62
  })
63
63
  ]
64
64
  }),
65
- /* @__PURE__ */ jsx(Box, {
65
+ /* @__PURE__ */ jsx(Flex, {
66
66
  style: {
67
67
  flex: 1,
68
68
  textAlign: "center",
@@ -104,7 +104,6 @@ const MacWindow = ({ children, title, containerProps, fill }) => {
104
104
  })]
105
105
  });
106
106
  };
107
- var MacWindow_default = MacWindow;
108
107
 
109
108
  //#endregion
110
109
  //#region ../../src/demo/components/shared/Showcase.tsx
@@ -140,12 +139,12 @@ const Showcase = ({ title, schema, initialValues, columns = 3, children, windowP
140
139
  minWidth: 0,
141
140
  overflow: "auto"
142
141
  },
143
- children: /* @__PURE__ */ jsx(MacWindow_default, {
142
+ children: /* @__PURE__ */ jsx(MacWindow, {
144
143
  title,
145
144
  ...windowProps,
146
145
  children: children(values)
147
146
  })
148
- }), /* @__PURE__ */ jsx(Box, {
147
+ }), /* @__PURE__ */ jsx(Flex, {
149
148
  bg: ui.colors.surface,
150
149
  h: "100%",
151
150
  p: "md",
@@ -162,7 +161,7 @@ const Showcase = ({ title, schema, initialValues, columns = 3, children, windowP
162
161
  withBorder: true,
163
162
  py: "xs",
164
163
  inheritPadding: true,
165
- children: /* @__PURE__ */ jsxs(Text, {
164
+ children: /* @__PURE__ */ jsxs(Text$1, {
166
165
  size: "xs",
167
166
  fw: 500,
168
167
  children: [title, " Props"]
@@ -180,8 +179,7 @@ const Showcase = ({ title, schema, initialValues, columns = 3, children, windowP
180
179
  })]
181
180
  });
182
181
  };
183
- var Showcase_default = Showcase;
184
182
 
185
183
  //#endregion
186
- export { MacWindow_default as n, Showcase_default as t };
187
- //# sourceMappingURL=Showcase-CQrMWars.js.map
184
+ export { Showcase as t };
185
+ //# sourceMappingURL=Showcase-BzoXNlCn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Showcase-BzoXNlCn.js","names":["Text"],"sources":["../../src/demo/components/shared/MacWindow.tsx","../../src/demo/components/shared/Showcase.tsx"],"sourcesContent":["import { Flex, type FlexProps, SegmentedControl } from \"@mantine/core\";\nimport { type ReactNode, useState } from \"react\";\n\nexport interface MacWindowProps {\n children: ReactNode;\n title?: string;\n containerProps?: FlexProps;\n fill?: boolean;\n}\n\ntype WindowSize = \"25\" | \"50\" | \"75\" | \"100\";\n\nconst MacWindow = ({\n children,\n title,\n containerProps,\n fill,\n}: MacWindowProps) => {\n const [size, setSize] = useState<WindowSize>(\"100\");\n\n const getWidth = () => {\n return `${size}%`;\n };\n\n return (\n <Flex\n direction=\"column\"\n flex={fill ? 1 : undefined}\n h={fill ? \"100%\" : undefined}\n bdrs={\"md\"}\n style={{\n width: getWidth(),\n border: \"1px solid var(--mantine-color-default-border)\",\n overflow: \"hidden\",\n background: \"var(--mantine-color-body)\",\n boxShadow: \"0 4px 12px rgba(0, 0, 0, 0.15)\",\n transition: \"width 0.3s ease\",\n }}\n >\n <Flex\n h={36}\n px=\"sm\"\n align=\"center\"\n gap={8}\n style={{\n background: \"var(--mantine-color-default)\",\n borderBottom: \"1px solid var(--mantine-color-default-border)\",\n }}\n >\n <Flex gap={6}>\n <Flex\n w={12}\n h={12}\n style={{ borderRadius: \"50%\", background: \"#ff5f57\" }}\n />\n <Flex\n w={12}\n h={12}\n style={{ borderRadius: \"50%\", background: \"#febc2e\" }}\n />\n <Flex\n w={12}\n h={12}\n style={{ borderRadius: \"50%\", background: \"#28c840\" }}\n />\n </Flex>\n\n <Flex\n style={{\n flex: 1,\n textAlign: \"center\",\n fontSize: 13,\n color: \"var(--mantine-color-dimmed)\",\n }}\n >\n {title}\n </Flex>\n\n {fill ? undefined : (\n <SegmentedControl\n size=\"xs\"\n value={size}\n onChange={(v) => setSize(v as WindowSize)}\n data={[\n { label: \"25\", value: \"25\" },\n { label: \"50\", value: \"50\" },\n { label: \"75\", value: \"75\" },\n { label: \"100\", value: \"100\" },\n ]}\n />\n )}\n </Flex>\n <Flex\n direction={\"column\"}\n flex={fill ? 1 : undefined}\n p=\"md\"\n {...containerProps}\n >\n {children}\n </Flex>\n </Flex>\n );\n};\n\nexport default MacWindow;\n","import { TypeForm, ui } from \"@alepha/ui\";\nimport { Card, Flex, Text } from \"@mantine/core\";\nimport type { Static, TObject } from \"alepha\";\nimport { useForm } from \"alepha/react/form\";\nimport { type ReactNode, useState } from \"react\";\nimport MacWindow, { type MacWindowProps } from \"./MacWindow.tsx\";\n\nexport interface ShowcaseProps<T extends TObject> {\n /**\n * Component title\n */\n title: string;\n /**\n * Schema for the props configuration\n */\n schema: T;\n /**\n * Initial values for the props\n */\n initialValues?: Partial<Static<T>>;\n /**\n * Number of columns for the props form\n */\n columns?: number;\n /**\n * Render function that receives the current props values\n */\n children: (props: Static<T>) => ReactNode;\n /**\n * Additional props for the MacWindow container\n */\n windowProps?: Partial<MacWindowProps>;\n}\n\n/**\n * Showcase component for demonstrating UI components with interactive props configuration.\n * Uses TypeForm to render a form based on the props schema and displays the component preview.\n */\nconst Showcase = <T extends TObject>({\n title,\n schema,\n initialValues,\n columns = 3,\n children,\n windowProps,\n}: ShowcaseProps<T>) => {\n const [values, setValues] = useState<Record<string, any>>(\n initialValues ?? {},\n );\n\n const form = useForm(\n {\n schema,\n initialValues,\n handler: (values) => {\n setValues(values as Record<string, any>);\n },\n onChange: (key, value) => {\n console.log(\"onChange\", key, value);\n form.submit();\n },\n },\n [schema],\n );\n\n return (\n <Flex flex={1} h={\"100%\"}>\n <Flex\n flex={1}\n bg={ui.colors.background}\n h={\"100%\"}\n p=\"xl\"\n justify=\"center\"\n align=\"flex-start\"\n style={{ flex: 1, minWidth: 0, overflow: \"auto\" }}\n >\n <MacWindow title={title} {...windowProps}>\n {children(values as Static<T>)}\n </MacWindow>\n </Flex>\n\n <Flex\n bg={ui.colors.surface}\n h={\"100%\"}\n p={\"md\"}\n style={{\n flex: \"0 0 300px\",\n overflow: \"auto\",\n }}\n >\n <Card withBorder shadow=\"sm\" radius=\"md\" bg={ui.colors.elevated}>\n <Card.Section withBorder py={\"xs\"} inheritPadding>\n <Text size={\"xs\"} fw={500}>\n {title} Props\n </Text>\n </Card.Section>\n\n <Card.Section p={\"sm\"}>\n <TypeForm\n form={form}\n columns={columns}\n skipSubmitButton\n skipFormElement\n />\n </Card.Section>\n </Card>\n </Flex>\n </Flex>\n );\n};\n\nexport default Showcase;\n"],"mappings":";;;;;;;AAYA,MAAM,aAAa,EACjB,UACA,OACA,gBACA,WACoB;CACpB,MAAM,CAAC,MAAM,WAAW,SAAqB,MAAM;CAEnD,MAAM,iBAAiB;AACrB,SAAO,GAAG,KAAK;;AAGjB,QACE,qBAAC;EACC,WAAU;EACV,MAAM,OAAO,IAAI;EACjB,GAAG,OAAO,SAAS;EACnB,MAAM;EACN,OAAO;GACL,OAAO,UAAU;GACjB,QAAQ;GACR,UAAU;GACV,YAAY;GACZ,WAAW;GACX,YAAY;GACb;aAED,qBAAC;GACC,GAAG;GACH,IAAG;GACH,OAAM;GACN,KAAK;GACL,OAAO;IACL,YAAY;IACZ,cAAc;IACf;;IAED,qBAAC;KAAK,KAAK;;MACT,oBAAC;OACC,GAAG;OACH,GAAG;OACH,OAAO;QAAE,cAAc;QAAO,YAAY;QAAW;QACrD;MACF,oBAAC;OACC,GAAG;OACH,GAAG;OACH,OAAO;QAAE,cAAc;QAAO,YAAY;QAAW;QACrD;MACF,oBAAC;OACC,GAAG;OACH,GAAG;OACH,OAAO;QAAE,cAAc;QAAO,YAAY;QAAW;QACrD;;MACG;IAEP,oBAAC;KACC,OAAO;MACL,MAAM;MACN,WAAW;MACX,UAAU;MACV,OAAO;MACR;eAEA;MACI;IAEN,OAAO,SACN,oBAAC;KACC,MAAK;KACL,OAAO;KACP,WAAW,MAAM,QAAQ,EAAgB;KACzC,MAAM;MACJ;OAAE,OAAO;OAAM,OAAO;OAAM;MAC5B;OAAE,OAAO;OAAM,OAAO;OAAM;MAC5B;OAAE,OAAO;OAAM,OAAO;OAAM;MAC5B;OAAE,OAAO;OAAO,OAAO;OAAO;MAC/B;MACD;;IAEC,EACP,oBAAC;GACC,WAAW;GACX,MAAM,OAAO,IAAI;GACjB,GAAE;GACF,GAAI;GAEH;IACI;GACF;;;;;;;;;AC9DX,MAAM,YAA+B,EACnC,OACA,QACA,eACA,UAAU,GACV,UACA,kBACsB;CACtB,MAAM,CAAC,QAAQ,aAAa,SAC1B,iBAAiB,EAAE,CACpB;CAED,MAAM,OAAO,QACX;EACE;EACA;EACA,UAAU,WAAW;AACnB,aAAU,OAA8B;;EAE1C,WAAW,KAAK,UAAU;AACxB,WAAQ,IAAI,YAAY,KAAK,MAAM;AACnC,QAAK,QAAQ;;EAEhB,EACD,CAAC,OAAO,CACT;AAED,QACE,qBAAC;EAAK,MAAM;EAAG,GAAG;aAChB,oBAAC;GACC,MAAM;GACN,IAAI,GAAG,OAAO;GACd,GAAG;GACH,GAAE;GACF,SAAQ;GACR,OAAM;GACN,OAAO;IAAE,MAAM;IAAG,UAAU;IAAG,UAAU;IAAQ;aAEjD,oBAAC;IAAiB;IAAO,GAAI;cAC1B,SAAS,OAAoB;KACpB;IACP,EAEP,oBAAC;GACC,IAAI,GAAG,OAAO;GACd,GAAG;GACH,GAAG;GACH,OAAO;IACL,MAAM;IACN,UAAU;IACX;aAED,qBAAC;IAAK;IAAW,QAAO;IAAK,QAAO;IAAK,IAAI,GAAG,OAAO;eACrD,oBAAC,KAAK;KAAQ;KAAW,IAAI;KAAM;eACjC,qBAACA;MAAK,MAAM;MAAM,IAAI;iBACnB,OAAM;OACF;MACM,EAEf,oBAAC,KAAK;KAAQ,GAAG;eACf,oBAAC;MACO;MACG;MACT;MACA;OACA;MACW;KACV;IACF;GACF"}
@@ -1,73 +1,6 @@
1
- import * as alepha0 from "alepha";
2
- import { Static, TObject } from "alepha";
1
+ import * as alepha from "alepha";
3
2
  import * as alepha_react_router0 from "alepha/react/router";
4
- import { BoxProps } from "@mantine/core";
5
- import * as react_jsx_runtime0 from "react/jsx-runtime";
6
- import { ReactNode } from "react";
7
3
 
8
- //#region ../../src/demo/components/DemoHome.d.ts
9
- declare const DemoHome: () => react_jsx_runtime0.JSX.Element;
10
- //#endregion
11
- //#region ../../src/demo/components/DemoLayout.d.ts
12
- declare const DemoLayout: () => react_jsx_runtime0.JSX.Element;
13
- //#endregion
14
- //#region ../../src/demo/components/json/DemoJsonViewer.d.ts
15
- declare const DemoJsonViewer: () => react_jsx_runtime0.JSX.Element;
16
- //#endregion
17
- //#region ../../src/demo/components/shared/MacWindow.d.ts
18
- interface MacWindowProps {
19
- children: ReactNode;
20
- title?: string;
21
- containerProps?: BoxProps;
22
- fill?: boolean;
23
- }
24
- declare const MacWindow: ({
25
- children,
26
- title,
27
- containerProps,
28
- fill
29
- }: MacWindowProps) => react_jsx_runtime0.JSX.Element;
30
- //#endregion
31
- //#region ../../src/demo/components/shared/Showcase.d.ts
32
- interface ShowcaseProps<T extends TObject> {
33
- /**
34
- * Component title
35
- */
36
- title: string;
37
- /**
38
- * Schema for the props configuration
39
- */
40
- schema: T;
41
- /**
42
- * Initial values for the props
43
- */
44
- initialValues?: Partial<Static<T>>;
45
- /**
46
- * Number of columns for the props form
47
- */
48
- columns?: number;
49
- /**
50
- * Render function that receives the current props values
51
- */
52
- children: (props: Static<T>) => ReactNode;
53
- /**
54
- * Additional props for the MacWindow container
55
- */
56
- windowProps?: Partial<MacWindowProps>;
57
- }
58
- /**
59
- * Showcase component for demonstrating UI components with interactive props configuration.
60
- * Uses TypeForm to render a form based on the props schema and displays the component preview.
61
- */
62
- declare const Showcase: <T extends TObject>({
63
- title,
64
- schema,
65
- initialValues,
66
- columns,
67
- children,
68
- windowProps
69
- }: ShowcaseProps<T>) => react_jsx_runtime0.JSX.Element;
70
- //#endregion
71
4
  //#region ../../src/demo/DemoRouter.d.ts
72
5
  declare class DemoRouter {
73
6
  demoLayout: alepha_react_router0.PagePrimitive<alepha_react_router0.PageConfigSchema, any, alepha_react_router0.TPropsParentDefault>;
@@ -101,7 +34,7 @@ declare class DemoRouter {
101
34
  *
102
35
  * @module alepha.ui.demo
103
36
  */
104
- declare const AlephaUIDemo: alepha0.Service<alepha0.Module>;
37
+ declare const AlephaUIDemo: alepha.Service<alepha.Module>;
105
38
  //#endregion
106
- export { AlephaUIDemo, DemoHome, DemoJsonViewer, DemoLayout, DemoRouter, MacWindow, type MacWindowProps, Showcase, type ShowcaseProps };
39
+ export { AlephaUIDemo, DemoRouter };
107
40
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/demo/components/DemoHome.tsx","../../src/demo/components/DemoLayout.tsx","../../src/demo/components/json/DemoJsonViewer.tsx","../../src/demo/components/shared/MacWindow.tsx","../../src/demo/components/shared/Showcase.tsx","../../src/demo/DemoRouter.ts","../../src/demo/index.ts"],"mappings":";;;;;;;;cAaM,QAAA,QAAQ,kBAAA,CAAA,GAAA,CAAA,OAAA;;;cCRR,UAAA,QAAU,kBAAA,CAAA,GAAA,CAAA,OAAA;;;cC6EV,cAAA,QAAc,kBAAA,CAAA,GAAA,CAAA,OAAA;;;UC/EH,cAAA;EACf,QAAA,EAAU,SAAA;EACV,KAAA;EACA,cAAA,GAAiB,QAAA;EACjB,IAAA;AAAA;AAAA,cAKI,SAAA;EAAa,QAAA;EAAA,KAAA;EAAA,cAAA;EAAA;AAAA,GAKhB,cAAA,KAAc,kBAAA,CAAA,GAAA,CAAA,OAAA;;;UCVA,aAAA,WAAwB,OAAA;;;;EAIvC,KAAA;EJEI;;;EIEJ,MAAA,EAAQ,CAAA;EJWT;;;EIPC,aAAA,GAAgB,OAAA,CAAQ,MAAA,CAAO,CAAA;EHd3B;;;EGkBJ,OAAA;EH0BD;;;EGtBC,QAAA,GAAW,KAAA,EAAO,MAAA,CAAO,CAAA,MAAO,SAAA;EFuD5B;;;EEnDJ,WAAA,GAAc,OAAA,CAAQ,cAAA;AAAA;;;;AD5BxB;cCmCM,QAAA,aAAsB,OAAA;EAAS,KAAA;EAAA,MAAA;EAAA,aAAA;EAAA,OAAA;EAAA,QAAA;EAAA;AAAA,GAOlC,aAAA,CAAc,CAAA,MAAE,kBAAA,CAAA,GAAA,CAAA,OAAA;;;cC5BN,UAAA;EACX,UAAA,EAAU,oBAAA,CAAA,aAAA,CADW,oBAAA,CACX,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAaV,QAAA,EAAQ,oBAAA,CAAA,aAAA,CAbE,oBAAA,CAaF,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAQR,QAAA,EAAQ,oBAAA,CAAA,aAAA,CARA,oBAAA,CAQA,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOR,YAAA,EAAY,oBAAA,CAAA,aAAA,CAPJ,oBAAA,CAOI,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOZ,WAAA,EAAW,oBAAA,CAAA,aAAA,CAPC,oBAAA,CAOD,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOX,aAAA,EAAa,oBAAA,CAAA,aAAA,CAPF,oBAAA,CAOE,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAQb,QAAA,EAAQ,oBAAA,CAAA,aAAA,CARK,oBAAA,CAQL,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOR,cAAA,EAAc,oBAAA,CAAA,aAAA,CAPN,oBAAA,CAOM,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAQd,QAAA,EAAQ,oBAAA,CAAA,aAAA,CARM,oBAAA,CAQN,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAYR,SAAA,EAAS,oBAAA,CAAA,aAAA,CAZD,oBAAA,CAYC,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOT,YAAA,EAAY,oBAAA,CAAA,aAAA,CAPH,oBAAA,CAOG,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOZ,iBAAA,EAAiB,oBAAA,CAAA,aAAA,CAPL,oBAAA,CAOK,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOjB,eAAA,EAAe,oBAAA,CAAA,aAAA,CAPE,oBAAA,CAOF,gBAAA,OAAA,oBAAA,CAAA,mBAAA;AAAA;;;;;ALvGH;;;;;;;;ACRE;;;;;cK+BH,YAAA,EAAY,OAAA,CAAA,OAAA,CAGvB,OAAA,CAHuB,MAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/demo/DemoRouter.ts","../../src/demo/index.ts"],"mappings":";;;;cAiBa,UAAA;EACX,UAAA,EAAU,oBAAA,CAAA,aAAA,CADW,oBAAA,CACX,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAaV,QAAA,EAAQ,oBAAA,CAAA,aAAA,CAbE,oBAAA,CAaF,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAQR,QAAA,EAAQ,oBAAA,CAAA,aAAA,CARA,oBAAA,CAQA,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOR,YAAA,EAAY,oBAAA,CAAA,aAAA,CAPJ,oBAAA,CAOI,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOZ,WAAA,EAAW,oBAAA,CAAA,aAAA,CAPC,oBAAA,CAOD,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOX,aAAA,EAAa,oBAAA,CAAA,aAAA,CAPF,oBAAA,CAOE,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAQb,QAAA,EAAQ,oBAAA,CAAA,aAAA,CARK,oBAAA,CAQL,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOR,cAAA,EAAc,oBAAA,CAAA,aAAA,CAPN,oBAAA,CAOM,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAQd,QAAA,EAAQ,oBAAA,CAAA,aAAA,CARM,oBAAA,CAQN,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAYR,SAAA,EAAS,oBAAA,CAAA,aAAA,CAZD,oBAAA,CAYC,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOT,YAAA,EAAY,oBAAA,CAAA,aAAA,CAPH,oBAAA,CAOG,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOZ,iBAAA,EAAiB,oBAAA,CAAA,aAAA,CAPL,oBAAA,CAOK,gBAAA,OAAA,oBAAA,CAAA,mBAAA;EAOjB,eAAA,EAAe,oBAAA,CAAA,aAAA,CAPE,oBAAA,CAOF,gBAAA,OAAA,oBAAA,CAAA,mBAAA;AAAA;;;;;;AAnGjB;;;;;;;;;;;;cCQa,YAAA,EAAY,MAAA,CAAA,OAAA,CAGvB,MAAA,CAHuB,MAAA"}
@@ -1,7 +1,3 @@
1
- import { t as DemoHome_default } from "./DemoHome-Cce2bWmg.js";
2
- import { t as DemoLayout_default } from "./DemoLayout-B20TEuhV.js";
3
- import { t as DemoJsonViewer_default } from "./DemoJsonViewer-Dgdk3Txb.js";
4
- import { n as MacWindow_default, t as Showcase_default } from "./Showcase-CQrMWars.js";
5
1
  import { AlephaUI } from "@alepha/ui";
6
2
  import { $module } from "alepha";
7
3
  import { IconBinaryTree, IconBraces, IconForms, IconHome, IconKey, IconLayoutSidebar, IconLockQuestion, IconLogin, IconMailCheck, IconPackages, IconTable, IconUserPlus, IconWall } from "@tabler/icons-react";
@@ -13,7 +9,7 @@ var DemoRouter = class {
13
9
  icon: IconPackages,
14
10
  path: "/demo",
15
11
  label: "Demo",
16
- lazy: () => import("./DemoLayout-DSRyf4qJ.js"),
12
+ lazy: () => import("./DemoLayout-DHVoacE6.js"),
17
13
  children: () => [
18
14
  this.demoHome,
19
15
  this.demoCore,
@@ -25,7 +21,7 @@ var DemoRouter = class {
25
21
  icon: IconHome,
26
22
  path: "/",
27
23
  label: "Home",
28
- lazy: () => import("./DemoHome-DC9qkMNe.js")
24
+ lazy: () => import("./DemoHome-CUMZsYaH.js")
29
25
  });
30
26
  demoCore = $page({
31
27
  icon: IconWall,
@@ -41,19 +37,19 @@ var DemoRouter = class {
41
37
  icon: IconForms,
42
38
  path: "/type-form",
43
39
  label: "TypeForm",
44
- lazy: () => import("./DemoTypeForm-w-qtfRlC.js")
40
+ lazy: () => import("./DemoTypeForm-CWz6fJrJ.js")
45
41
  });
46
42
  demoSidebar = $page({
47
43
  icon: IconLayoutSidebar,
48
44
  path: "/sidebar",
49
45
  label: "Sidebar",
50
- lazy: () => import("./DemoSidebar-MVmQKfMt.js")
46
+ lazy: () => import("./DemoSidebar-C1csnGhX.js")
51
47
  });
52
48
  demoDataTable = $page({
53
49
  icon: IconTable,
54
50
  path: "/data-table",
55
51
  label: "DataTable",
56
- lazy: () => import("./DemoDataTable-CguplbR7.js")
52
+ lazy: () => import("./DemoDataTable-lnBKWBf8.js")
57
53
  });
58
54
  demoJson = $page({
59
55
  icon: IconBraces,
@@ -65,7 +61,7 @@ var DemoRouter = class {
65
61
  icon: IconBinaryTree,
66
62
  path: "/viewer",
67
63
  label: "JsonViewer",
68
- lazy: () => import("./DemoJsonViewer-DIssGVlJ.js")
64
+ lazy: () => import("./DemoJsonViewer-_uokbGaW.js")
69
65
  });
70
66
  demoAuth = $page({
71
67
  icon: IconKey,
@@ -82,25 +78,25 @@ var DemoRouter = class {
82
78
  icon: IconLogin,
83
79
  path: "/login",
84
80
  label: "Login",
85
- lazy: () => import("./DemoLogin-CvCG2WVh.js")
81
+ lazy: () => import("./DemoLogin-DjJ9314c.js")
86
82
  });
87
83
  demoRegister = $page({
88
84
  icon: IconUserPlus,
89
85
  path: "/register",
90
86
  label: "Register",
91
- lazy: () => import("./DemoRegister-CmeHbOAs.js")
87
+ lazy: () => import("./DemoRegister-DzkJ5M83.js")
92
88
  });
93
89
  demoResetPassword = $page({
94
90
  icon: IconLockQuestion,
95
91
  path: "/reset-password",
96
92
  label: "ResetPassword",
97
- lazy: () => import("./DemoResetPassword-CKO5iA_6.js")
93
+ lazy: () => import("./DemoResetPassword-DWh4_BpQ.js")
98
94
  });
99
95
  demoVerifyEmail = $page({
100
96
  icon: IconMailCheck,
101
97
  path: "/verify-email",
102
98
  label: "VerifyEmail",
103
- lazy: () => import("./DemoVerifyEmail-C8FFJT5A.js")
99
+ lazy: () => import("./DemoVerifyEmail-DbU_tCj8.js")
104
100
  });
105
101
  };
106
102
 
@@ -127,5 +123,5 @@ const AlephaUIDemo = $module({
127
123
  });
128
124
 
129
125
  //#endregion
130
- export { AlephaUIDemo, DemoHome_default as DemoHome, DemoJsonViewer_default as DemoJsonViewer, DemoLayout_default as DemoLayout, DemoRouter, MacWindow_default as MacWindow, Showcase_default as Showcase };
126
+ export { AlephaUIDemo, DemoRouter };
131
127
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/demo/DemoRouter.ts","../../src/demo/index.ts"],"sourcesContent":["import {\n IconBinaryTree,\n IconBraces,\n IconForms,\n IconHome,\n IconKey,\n IconLayoutSidebar,\n IconLockQuestion,\n IconLogin,\n IconMailCheck,\n IconPackages,\n IconTable,\n IconUserPlus,\n IconWall,\n} from \"@tabler/icons-react\";\nimport { $page } from \"alepha/react/router\";\n\nexport class DemoRouter {\n demoLayout = $page({\n icon: IconPackages,\n path: \"/demo\",\n label: \"Demo\",\n lazy: () => import(\"./components/DemoLayout.tsx\"),\n children: () => [\n this.demoHome,\n this.demoCore,\n this.demoJson,\n this.demoAuth,\n ],\n });\n\n demoHome = $page({\n icon: IconHome,\n path: \"/\",\n label: \"Home\",\n lazy: () => import(\"./components/DemoHome.tsx\"),\n });\n\n // Core Components\n demoCore = $page({\n icon: IconWall,\n path: \"/core\",\n label: \"Core\",\n children: () => [this.demoTypeForm, this.demoSidebar, this.demoDataTable],\n });\n\n demoTypeForm = $page({\n icon: IconForms,\n path: \"/type-form\",\n label: \"TypeForm\",\n lazy: () => import(\"./components/core/DemoTypeForm.tsx\"),\n });\n\n demoSidebar = $page({\n icon: IconLayoutSidebar,\n path: \"/sidebar\",\n label: \"Sidebar\",\n lazy: () => import(\"./components/core/DemoSidebar.tsx\"),\n });\n\n demoDataTable = $page({\n icon: IconTable,\n path: \"/data-table\",\n label: \"DataTable\",\n lazy: () => import(\"./components/core/DemoDataTable.tsx\"),\n });\n\n // JSON Components\n demoJson = $page({\n icon: IconBraces,\n path: \"/json\",\n label: \"Json\",\n children: () => [this.demoJsonViewer],\n });\n\n demoJsonViewer = $page({\n icon: IconBinaryTree,\n path: \"/viewer\",\n label: \"JsonViewer\",\n lazy: () => import(\"./components/json/DemoJsonViewer.tsx\"),\n });\n\n // Auth Components\n demoAuth = $page({\n icon: IconKey,\n path: \"/auth\",\n label: \"Auth\",\n children: () => [\n this.demoLogin,\n this.demoRegister,\n this.demoResetPassword,\n this.demoVerifyEmail,\n ],\n });\n\n demoLogin = $page({\n icon: IconLogin,\n path: \"/login\",\n label: \"Login\",\n lazy: () => import(\"./components/auth/DemoLogin.tsx\"),\n });\n\n demoRegister = $page({\n icon: IconUserPlus,\n path: \"/register\",\n label: \"Register\",\n lazy: () => import(\"./components/auth/DemoRegister.tsx\"),\n });\n\n demoResetPassword = $page({\n icon: IconLockQuestion,\n path: \"/reset-password\",\n label: \"ResetPassword\",\n lazy: () => import(\"./components/auth/DemoResetPassword.tsx\"),\n });\n\n demoVerifyEmail = $page({\n icon: IconMailCheck,\n path: \"/verify-email\",\n label: \"VerifyEmail\",\n lazy: () => import(\"./components/auth/DemoVerifyEmail.tsx\"),\n });\n}\n","import { AlephaUI } from \"@alepha/ui\";\nimport { $module } from \"alepha\";\nimport { DemoRouter } from \"./DemoRouter.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport { default as DemoHome } from \"./components/DemoHome.tsx\";\nexport { default as DemoLayout } from \"./components/DemoLayout.tsx\";\nexport { default as DemoJsonViewer } from \"./components/json/DemoJsonViewer.tsx\";\nexport {\n default as MacWindow,\n type MacWindowProps,\n} from \"./components/shared/MacWindow.tsx\";\nexport {\n default as Showcase,\n type ShowcaseProps,\n} from \"./components/shared/Showcase.tsx\";\nexport { DemoRouter } from \"./DemoRouter.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * | type | quality | stability |\n * |------|---------|-----------|\n * | frontend | standard | experimental |\n *\n * Component showcase and documentation.\n *\n * **Features:**\n * - DemoLayout for demo pages\n * - DemoHome landing page\n * - MacWindow component for showcases\n * - Showcase component for component demos\n *\n * @module alepha.ui.demo\n */\nexport const AlephaUIDemo = $module({\n name: \"alepha.ui.demo\",\n services: [AlephaUI, DemoRouter],\n});\n"],"mappings":";;;;;;;;;;AAiBA,IAAa,aAAb,MAAwB;CACtB,aAAa,MAAM;EACjB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACnB,gBAAgB;GACd,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACN;EACF,CAAC;CAEF,WAAW,MAAM;EACf,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAGF,WAAW,MAAM;EACf,MAAM;EACN,MAAM;EACN,OAAO;EACP,gBAAgB;GAAC,KAAK;GAAc,KAAK;GAAa,KAAK;GAAc;EAC1E,CAAC;CAEF,eAAe,MAAM;EACnB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAEF,cAAc,MAAM;EAClB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAEF,gBAAgB,MAAM;EACpB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAGF,WAAW,MAAM;EACf,MAAM;EACN,MAAM;EACN,OAAO;EACP,gBAAgB,CAAC,KAAK,eAAe;EACtC,CAAC;CAEF,iBAAiB,MAAM;EACrB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAGF,WAAW,MAAM;EACf,MAAM;EACN,MAAM;EACN,OAAO;EACP,gBAAgB;GACd,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACN;EACF,CAAC;CAEF,YAAY,MAAM;EAChB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAEF,eAAe,MAAM;EACnB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAEF,oBAAoB,MAAM;EACxB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAEF,kBAAkB,MAAM;EACtB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;;;;;;;;;;;;;;;;;;;;ACrFJ,MAAa,eAAe,QAAQ;CAClC,MAAM;CACN,UAAU,CAAC,UAAU,WAAW;CACjC,CAAC"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/demo/DemoRouter.ts","../../src/demo/index.ts"],"sourcesContent":["import {\n IconBinaryTree,\n IconBraces,\n IconForms,\n IconHome,\n IconKey,\n IconLayoutSidebar,\n IconLockQuestion,\n IconLogin,\n IconMailCheck,\n IconPackages,\n IconTable,\n IconUserPlus,\n IconWall,\n} from \"@tabler/icons-react\";\nimport { $page } from \"alepha/react/router\";\n\nexport class DemoRouter {\n demoLayout = $page({\n icon: IconPackages,\n path: \"/demo\",\n label: \"Demo\",\n lazy: () => import(\"./components/DemoLayout.tsx\"),\n children: () => [\n this.demoHome,\n this.demoCore,\n this.demoJson,\n this.demoAuth,\n ],\n });\n\n demoHome = $page({\n icon: IconHome,\n path: \"/\",\n label: \"Home\",\n lazy: () => import(\"./components/DemoHome.tsx\"),\n });\n\n // Core Components\n demoCore = $page({\n icon: IconWall,\n path: \"/core\",\n label: \"Core\",\n children: () => [this.demoTypeForm, this.demoSidebar, this.demoDataTable],\n });\n\n demoTypeForm = $page({\n icon: IconForms,\n path: \"/type-form\",\n label: \"TypeForm\",\n lazy: () => import(\"./components/core/DemoTypeForm.tsx\"),\n });\n\n demoSidebar = $page({\n icon: IconLayoutSidebar,\n path: \"/sidebar\",\n label: \"Sidebar\",\n lazy: () => import(\"./components/core/DemoSidebar.tsx\"),\n });\n\n demoDataTable = $page({\n icon: IconTable,\n path: \"/data-table\",\n label: \"DataTable\",\n lazy: () => import(\"./components/core/DemoDataTable.tsx\"),\n });\n\n // JSON Components\n demoJson = $page({\n icon: IconBraces,\n path: \"/json\",\n label: \"Json\",\n children: () => [this.demoJsonViewer],\n });\n\n demoJsonViewer = $page({\n icon: IconBinaryTree,\n path: \"/viewer\",\n label: \"JsonViewer\",\n lazy: () => import(\"./components/json/DemoJsonViewer.tsx\"),\n });\n\n // Auth Components\n demoAuth = $page({\n icon: IconKey,\n path: \"/auth\",\n label: \"Auth\",\n children: () => [\n this.demoLogin,\n this.demoRegister,\n this.demoResetPassword,\n this.demoVerifyEmail,\n ],\n });\n\n demoLogin = $page({\n icon: IconLogin,\n path: \"/login\",\n label: \"Login\",\n lazy: () => import(\"./components/auth/DemoLogin.tsx\"),\n });\n\n demoRegister = $page({\n icon: IconUserPlus,\n path: \"/register\",\n label: \"Register\",\n lazy: () => import(\"./components/auth/DemoRegister.tsx\"),\n });\n\n demoResetPassword = $page({\n icon: IconLockQuestion,\n path: \"/reset-password\",\n label: \"ResetPassword\",\n lazy: () => import(\"./components/auth/DemoResetPassword.tsx\"),\n });\n\n demoVerifyEmail = $page({\n icon: IconMailCheck,\n path: \"/verify-email\",\n label: \"VerifyEmail\",\n lazy: () => import(\"./components/auth/DemoVerifyEmail.tsx\"),\n });\n}\n","import { AlephaUI } from \"@alepha/ui\";\nimport { $module } from \"alepha\";\nimport { DemoRouter } from \"./DemoRouter.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport { DemoRouter } from \"./DemoRouter.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * | type | quality | stability |\n * |------|---------|-----------|\n * | frontend | standard | experimental |\n *\n * Component showcase and documentation.\n *\n * **Features:**\n * - DemoLayout for demo pages\n * - DemoHome landing page\n * - MacWindow component for showcases\n * - Showcase component for component demos\n *\n * @module alepha.ui.demo\n */\nexport const AlephaUIDemo = $module({\n name: \"alepha.ui.demo\",\n services: [AlephaUI, DemoRouter],\n});\n"],"mappings":";;;;;;AAiBA,IAAa,aAAb,MAAwB;CACtB,aAAa,MAAM;EACjB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACnB,gBAAgB;GACd,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACN;EACF,CAAC;CAEF,WAAW,MAAM;EACf,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAGF,WAAW,MAAM;EACf,MAAM;EACN,MAAM;EACN,OAAO;EACP,gBAAgB;GAAC,KAAK;GAAc,KAAK;GAAa,KAAK;GAAc;EAC1E,CAAC;CAEF,eAAe,MAAM;EACnB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAEF,cAAc,MAAM;EAClB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAEF,gBAAgB,MAAM;EACpB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAGF,WAAW,MAAM;EACf,MAAM;EACN,MAAM;EACN,OAAO;EACP,gBAAgB,CAAC,KAAK,eAAe;EACtC,CAAC;CAEF,iBAAiB,MAAM;EACrB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAGF,WAAW,MAAM;EACf,MAAM;EACN,MAAM;EACN,OAAO;EACP,gBAAgB;GACd,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACN;EACF,CAAC;CAEF,YAAY,MAAM;EAChB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAEF,eAAe,MAAM;EACnB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAEF,oBAAoB,MAAM;EACxB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;CAEF,kBAAkB,MAAM;EACtB,MAAM;EACN,MAAM;EACN,OAAO;EACP,YAAY,OAAO;EACpB,CAAC;;;;;;;;;;;;;;;;;;;;AChGJ,MAAa,eAAe,QAAQ;CAClC,MAAM;CACN,UAAU,CAAC,UAAU,WAAW;CACjC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { DialogService, ui } from "@alepha/ui";
2
- import { ActionIcon, Flex, Group, Text, Tree, getTreeExpandedState, useTree } from "@mantine/core";
2
+ import { ActionIcon, Flex, Text, Tree, getTreeExpandedState, useTree } from "@mantine/core";
3
3
  import { IconCheck, IconChevronDown, IconChevronRight, IconCopy } from "@tabler/icons-react";
4
4
  import { useCallback, useMemo, useState } from "react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -130,7 +130,7 @@ const RowNode = ({ node, expanded, hasChildren, elementProps, size, config, show
130
130
  return null;
131
131
  };
132
132
  const getCopyValue = () => isExpandable ? JSON.stringify(nodeValue, null, 2) : String(nodeValue ?? "");
133
- return /* @__PURE__ */ jsxs(Group, {
133
+ return /* @__PURE__ */ jsxs(Flex, {
134
134
  gap: 6,
135
135
  wrap: "nowrap",
136
136
  ...elementProps,