@alepha/ui 0.18.2 → 0.18.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/{AdminApiKeys-BJhIwfD6.js → AdminApiKeys-Dy_k-4Vd.js} +2 -2
- package/dist/admin/{AdminApiKeys-BJhIwfD6.js.map → AdminApiKeys-Dy_k-4Vd.js.map} +1 -1
- package/dist/admin/{AdminAudits-DzD_4cDt.js → AdminAudits-CKiFMSSU.js} +2 -2
- package/dist/admin/{AdminAudits-DzD_4cDt.js.map → AdminAudits-CKiFMSSU.js.map} +1 -1
- package/dist/admin/{AdminDashboard-C92tIc6x.js → AdminDashboard-PhC_dZqo.js} +2 -2
- package/dist/admin/{AdminDashboard-C92tIc6x.js.map → AdminDashboard-PhC_dZqo.js.map} +1 -1
- package/dist/admin/{AdminFiles-DLpfhBkf.js → AdminFiles-DFTjijGp.js} +2 -2
- package/dist/admin/{AdminFiles-DLpfhBkf.js.map → AdminFiles-DFTjijGp.js.map} +1 -1
- package/dist/admin/{AdminJobDashboard-KIOkeMgE.js → AdminJobDashboard-BL8gGPDp.js} +2 -2
- package/dist/admin/{AdminJobDashboard-KIOkeMgE.js.map → AdminJobDashboard-BL8gGPDp.js.map} +1 -1
- package/dist/admin/{AdminJobExecutions-D0Yo_PU0.js → AdminJobExecutions-D9E-CS-U.js} +2 -2
- package/dist/admin/{AdminJobExecutions-D0Yo_PU0.js.map → AdminJobExecutions-D9E-CS-U.js.map} +1 -1
- package/dist/admin/{AdminJobRegistry-PFajqaGK.js → AdminJobRegistry-Ci9ue1zC.js} +2 -2
- package/dist/admin/{AdminJobRegistry-PFajqaGK.js.map → AdminJobRegistry-Ci9ue1zC.js.map} +1 -1
- package/dist/admin/{AdminLayout-B1DXZHDn.js → AdminLayout-I6TlUMPc.js} +2 -2
- package/dist/admin/{AdminLayout-B1DXZHDn.js.map → AdminLayout-I6TlUMPc.js.map} +1 -1
- package/dist/admin/AdminNotifications-ZPHCYrv7.js +542 -0
- package/dist/admin/AdminNotifications-ZPHCYrv7.js.map +1 -0
- package/dist/admin/{AdminParameters-BspPeqp_.js → AdminParameters-CqgvhRsb.js} +120 -105
- package/dist/admin/AdminParameters-CqgvhRsb.js.map +1 -0
- package/dist/admin/{AdminSessions-BnH5CZQl.js → AdminSessions-Bz5NRuoW.js} +2 -2
- package/dist/admin/{AdminSessions-BnH5CZQl.js.map → AdminSessions-Bz5NRuoW.js.map} +1 -1
- package/dist/admin/{AdminUserLayout-DUbC6-BI.js → AdminUserLayout-lXT6I0Qq.js} +14 -8
- package/dist/admin/AdminUserLayout-lXT6I0Qq.js.map +1 -0
- package/dist/admin/{AdminUserProfile-DuTUnjdG.js → AdminUserProfile-vFBLoJ3h.js} +3 -3
- package/dist/admin/{AdminUserProfile-DuTUnjdG.js.map → AdminUserProfile-vFBLoJ3h.js.map} +1 -1
- package/dist/admin/{AdminUserSessions-DvZdAGpL.js → AdminUserSessions-CT_YDim0.js} +2 -2
- package/dist/admin/{AdminUserSessions-DvZdAGpL.js.map → AdminUserSessions-CT_YDim0.js.map} +1 -1
- package/dist/admin/{AdminUsers-CR9z0g_5.js → AdminUsers-D1UfGya9.js} +2 -2
- package/dist/admin/{AdminUsers-CR9z0g_5.js.map → AdminUsers-D1UfGya9.js.map} +1 -1
- package/dist/admin/{AuthLayout-DsUfp9RG.js → AuthLayout-_frhdgOO.js} +2 -2
- package/dist/admin/{AuthLayout-DsUfp9RG.js.map → AuthLayout-_frhdgOO.js.map} +1 -1
- package/dist/admin/Login-xtNmQtGh.js +275 -0
- package/dist/admin/Login-xtNmQtGh.js.map +1 -0
- package/dist/admin/{Profile-B2EcIDB9.js → Profile-_AtPUwAP.js} +31 -27
- package/dist/admin/Profile-_AtPUwAP.js.map +1 -0
- package/dist/admin/{Register-Z3fxRbUF.js → Register-JcCjHUUn.js} +198 -142
- package/dist/admin/Register-JcCjHUUn.js.map +1 -0
- package/dist/admin/{ResetPassword-_Y1qTTKh.js → ResetPassword-CwGBPLJO.js} +7 -7
- package/dist/admin/ResetPassword-CwGBPLJO.js.map +1 -0
- package/dist/admin/{VerifyEmail-Bg22bwcC.js → VerifyEmail-hNxWejWf.js} +23 -8
- package/dist/admin/VerifyEmail-hNxWejWf.js.map +1 -0
- package/dist/admin/{core-BVO_TQxb.js → core-CYaRQ8O-.js} +709 -556
- package/dist/admin/core-CYaRQ8O-.js.map +1 -0
- package/dist/admin/index.d.ts +83 -44
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +58 -39
- package/dist/admin/index.js.map +1 -1
- package/dist/auth/{AuthLayout-C161NeF6.js → AuthLayout-AvLlcLjS.js} +2 -2
- package/dist/auth/{AuthLayout-C161NeF6.js.map → AuthLayout-AvLlcLjS.js.map} +1 -1
- package/dist/auth/Login-BA1E8IZl.js +275 -0
- package/dist/auth/Login-BA1E8IZl.js.map +1 -0
- package/dist/auth/{Profile-BMpXJ0oi.js → Profile-YcWdeuFz.js} +31 -27
- package/dist/auth/Profile-YcWdeuFz.js.map +1 -0
- package/dist/auth/{Register-2gx8qll-.js → Register-CPhEO5MG.js} +198 -142
- package/dist/auth/Register-CPhEO5MG.js.map +1 -0
- package/dist/{demo/ResetPassword-CAPj8MO3.js → auth/ResetPassword-DCtGcneA.js} +7 -7
- package/dist/auth/ResetPassword-DCtGcneA.js.map +1 -0
- package/dist/{demo/VerifyEmail-DFmdCdYs.js → auth/VerifyEmail-DkH7NBfn.js} +23 -8
- package/dist/auth/VerifyEmail-DkH7NBfn.js.map +1 -0
- package/dist/auth/{core-DyfeVr5c.js → core-D5jIAVF2.js} +386 -294
- package/dist/auth/core-D5jIAVF2.js.map +1 -0
- package/dist/auth/index.d.ts +93 -48
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +28 -24
- package/dist/auth/index.js.map +1 -1
- package/dist/core/index.d.ts +116 -61
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +873 -701
- package/dist/core/index.js.map +1 -1
- package/dist/demo/{AuthLayout-DN-ClJQk.js → AuthLayout-Brri4A-L.js} +2 -2
- package/dist/demo/{AuthLayout-DN-ClJQk.js.map → AuthLayout-Brri4A-L.js.map} +1 -1
- package/dist/demo/DemoButton-wiCxZZ_L.js +182 -0
- package/dist/demo/DemoButton-wiCxZZ_L.js.map +1 -0
- package/dist/demo/DemoControlSelect-D7ILObVg.js +305 -0
- package/dist/demo/DemoControlSelect-D7ILObVg.js.map +1 -0
- package/dist/demo/DemoDataTable-DZ5Y8pFX.js +362 -0
- package/dist/demo/DemoDataTable-DZ5Y8pFX.js.map +1 -0
- package/dist/demo/{DemoDialog-DW8QEvD1.js → DemoDialog-CUWdLHim.js} +2 -2
- package/dist/demo/{DemoDialog-DW8QEvD1.js.map → DemoDialog-CUWdLHim.js.map} +1 -1
- package/dist/demo/{DemoFlex-CAhLUanT.js → DemoFlex-a8OhMMvq.js} +3 -3
- package/dist/demo/{DemoFlex-CAhLUanT.js.map → DemoFlex-a8OhMMvq.js.map} +1 -1
- package/dist/demo/{DemoHeading-yIFmNjHB.js → DemoHeading-C13OVDfS.js} +3 -3
- package/dist/demo/{DemoHeading-yIFmNjHB.js.map → DemoHeading-C13OVDfS.js.map} +1 -1
- package/dist/demo/{DemoHome-BSGuBHus.js → DemoHome-D_De3UiT.js} +2 -2
- package/dist/demo/{DemoHome-BSGuBHus.js.map → DemoHome-D_De3UiT.js.map} +1 -1
- package/dist/demo/{DemoJsonViewer-DsA2IpgV.js → DemoJsonViewer-B50s9aGM.js} +3 -3
- package/dist/demo/{DemoJsonViewer-DsA2IpgV.js.map → DemoJsonViewer-B50s9aGM.js.map} +1 -1
- package/dist/demo/{DemoLayout-Cy6xjn6P.js → DemoLayout-CHU8WTwO.js} +14 -5
- package/dist/demo/DemoLayout-CHU8WTwO.js.map +1 -0
- package/dist/demo/{DemoLogin-vqxgTu4P.js → DemoLogin-BBlrWpml.js} +49 -32
- package/dist/demo/DemoLogin-BBlrWpml.js.map +1 -0
- package/dist/demo/{DemoRegister-YHPvPg77.js → DemoRegister-BuNE3_-f.js} +49 -50
- package/dist/demo/DemoRegister-BuNE3_-f.js.map +1 -0
- package/dist/demo/{DemoResetPassword-mOW18Zlm.js → DemoResetPassword-D_IjjjOJ.js} +12 -16
- package/dist/demo/DemoResetPassword-D_IjjjOJ.js.map +1 -0
- package/dist/demo/{DemoSidebar-od7aLjP_.js → DemoSidebar-Giy2HRBD.js} +3 -3
- package/dist/demo/{DemoSidebar-od7aLjP_.js.map → DemoSidebar-Giy2HRBD.js.map} +1 -1
- package/dist/demo/{DemoText-DU3JeRS0.js → DemoText-ubcw-vog.js} +3 -3
- package/dist/demo/{DemoText-DU3JeRS0.js.map → DemoText-ubcw-vog.js.map} +1 -1
- package/dist/demo/{DemoToast-CUJEiPRa.js → DemoToast-9die_dYT.js} +2 -2
- package/dist/demo/{DemoToast-CUJEiPRa.js.map → DemoToast-9die_dYT.js.map} +1 -1
- package/dist/demo/{DemoTypeForm-C1dNkahD.js → DemoTypeForm-D_d6OVKL.js} +8 -4
- package/dist/demo/DemoTypeForm-D_d6OVKL.js.map +1 -0
- package/dist/demo/DemoVerifyEmail-B43KlF4F.js +34 -0
- package/dist/demo/DemoVerifyEmail-B43KlF4F.js.map +1 -0
- package/dist/demo/Login-C12N4oGs.js +275 -0
- package/dist/demo/Login-C12N4oGs.js.map +1 -0
- package/dist/demo/{Profile-BE_Y3co2.js → Profile-DS5q4vOh.js} +31 -27
- package/dist/demo/Profile-DS5q4vOh.js.map +1 -0
- package/dist/demo/{Register-fXHmBpr3.js → Register-B4hLBeEv.js} +198 -142
- package/dist/demo/Register-B4hLBeEv.js.map +1 -0
- package/dist/{auth/ResetPassword-DBxt9hKk.js → demo/ResetPassword-D8g9ha1N.js} +7 -7
- package/dist/demo/ResetPassword-D8g9ha1N.js.map +1 -0
- package/dist/demo/{Showcase-BtEU0pY9.js → Showcase-D6Fxt4X4.js} +64 -65
- package/dist/demo/Showcase-D6Fxt4X4.js.map +1 -0
- package/dist/{auth/VerifyEmail-Z80Ubajk.js → demo/VerifyEmail-BjDo0cZA.js} +23 -8
- package/dist/demo/VerifyEmail-BjDo0cZA.js.map +1 -0
- package/dist/demo/{auth-Djd7SKiw.js → auth-ByVTreDl.js} +8 -8
- package/dist/demo/{auth-Djd7SKiw.js.map → auth-ByVTreDl.js.map} +1 -1
- package/dist/demo/{core-B7LNjM78.js → core-DFgB3yU4.js} +741 -573
- package/dist/demo/core-DFgB3yU4.js.map +1 -0
- package/dist/demo/index.d.ts +1 -0
- package/dist/demo/index.d.ts.map +1 -1
- package/dist/demo/index.js +24 -18
- package/dist/demo/index.js.map +1 -1
- package/package.json +7 -7
- package/src/admin/AdminRouter.tsx +24 -1
- package/src/admin/components/notifications/AdminNotifications.tsx +519 -0
- package/src/admin/components/parameters/ParameterDetails.tsx +12 -270
- package/src/admin/components/parameters/ParameterDetailsConfigForm.tsx +238 -0
- package/src/admin/components/parameters/ParameterDetailsLoading.tsx +24 -0
- package/src/admin/components/parameters/ParameterHistory.tsx +10 -11
- package/src/admin/components/parameters/ParameterTree.tsx +28 -184
- package/src/admin/components/parameters/ParameterTreeNode.tsx +151 -0
- package/src/admin/components/shared/AdminResourceHeader.tsx +2 -25
- package/src/admin/components/shared/AdminResourceHeaderMenuItem.tsx +37 -0
- package/src/admin/components/shared/AdminResourceTabs.tsx +2 -26
- package/src/admin/components/shared/AdminResourceTabsItem.tsx +36 -0
- package/src/auth/components/Login.tsx +188 -121
- package/src/auth/components/Profile.tsx +1 -22
- package/src/auth/components/ProfileField.tsx +39 -0
- package/src/auth/components/Register.tsx +215 -158
- package/src/auth/components/ResetPassword.tsx +7 -11
- package/src/auth/components/VerifyEmail.tsx +35 -10
- package/src/auth/components/buttons/UserButton.tsx +19 -21
- package/src/auth/index.ts +1 -0
- package/src/core/components/Flex.tsx +10 -0
- package/src/core/components/buttons/ActionButton.tsx +104 -78
- package/src/core/components/data/DetailDrawer.tsx +102 -96
- package/src/core/components/data/DetailList.tsx +2 -1
- package/src/core/components/layout/Breadcrumb.tsx +3 -6
- package/src/core/components/layout/DashboardShell.tsx +18 -4
- package/src/core/components/layout/Sidebar.tsx +16 -241
- package/src/core/components/layout/SidebarCollapsedItem.tsx +91 -0
- package/src/core/components/layout/SidebarItem.tsx +146 -0
- package/src/core/components/layout/index.ts +3 -1
- package/src/core/form/components/Control.tsx +31 -29
- package/src/core/form/components/ControlArray.tsx +13 -39
- package/src/core/form/components/ControlDate.tsx +10 -21
- package/src/core/form/components/ControlNumber.tsx +4 -33
- package/src/core/form/components/ControlQueryBuilder.tsx +12 -175
- package/src/core/form/components/ControlQueryBuilderHelp.tsx +165 -0
- package/src/core/form/components/ControlSelect.browser.spec.tsx +343 -0
- package/src/core/form/components/ControlSelect.tsx +294 -92
- package/src/core/form/components/TypeForm.browser.spec.tsx +3 -3
- package/src/core/form/components/TypeForm.tsx +5 -2
- package/src/core/form/index.ts +8 -1
- package/src/core/form/utils/parseInput.ts +7 -3
- package/src/core/index.ts +3 -1
- package/src/core/json/components/JsonViewer.tsx +103 -319
- package/src/core/json/components/JsonViewerCopyButton.tsx +46 -0
- package/src/core/json/components/JsonViewerRowNode.tsx +120 -0
- package/src/core/json/components/JsonViewerShared.ts +76 -0
- package/src/core/styles.css +12 -2
- package/src/core/table/components/ColumnPicker.tsx +3 -3
- package/src/core/table/components/DataTable.tsx +89 -29
- package/src/core/table/components/DataTableFilters.tsx +6 -11
- package/src/core/table/components/DataTablePagination.tsx +9 -3
- package/src/core/table/components/DataTableToolbar.tsx +7 -3
- package/src/core/table/components/FilterPicker.tsx +3 -3
- package/src/core/table/interfaces/types.ts +29 -0
- package/src/core/utils/icons.tsx +2 -2
- package/src/demo/DemoRouter.ts +8 -1
- package/src/demo/components/DemoLayout.tsx +12 -2
- package/src/demo/components/auth/DemoLogin.tsx +35 -28
- package/src/demo/components/auth/DemoRegister.tsx +35 -49
- package/src/demo/components/auth/DemoResetPassword.tsx +5 -9
- package/src/demo/components/auth/DemoVerifyEmail.tsx +7 -6
- package/src/demo/components/core/DemoButton.tsx +123 -103
- package/src/demo/components/core/DemoControlSelect.tsx +325 -0
- package/src/demo/components/core/DemoDataTable.tsx +255 -237
- package/src/demo/components/core/DemoTypeForm.tsx +7 -2
- package/src/demo/components/shared/MacWindow.tsx +5 -11
- package/src/demo/components/shared/Showcase.tsx +28 -42
- package/dist/admin/AdminParameters-BspPeqp_.js.map +0 -1
- package/dist/admin/AdminUserLayout-DUbC6-BI.js.map +0 -1
- package/dist/admin/Login-DHbYJKwg.js +0 -219
- package/dist/admin/Login-DHbYJKwg.js.map +0 -1
- package/dist/admin/Profile-B2EcIDB9.js.map +0 -1
- package/dist/admin/Register-Z3fxRbUF.js.map +0 -1
- package/dist/admin/ResetPassword-_Y1qTTKh.js.map +0 -1
- package/dist/admin/VerifyEmail-Bg22bwcC.js.map +0 -1
- package/dist/admin/core-BVO_TQxb.js.map +0 -1
- package/dist/auth/Login-C7jIqf00.js +0 -219
- package/dist/auth/Login-C7jIqf00.js.map +0 -1
- package/dist/auth/Profile-BMpXJ0oi.js.map +0 -1
- package/dist/auth/Register-2gx8qll-.js.map +0 -1
- package/dist/auth/ResetPassword-DBxt9hKk.js.map +0 -1
- package/dist/auth/VerifyEmail-Z80Ubajk.js.map +0 -1
- package/dist/auth/core-DyfeVr5c.js.map +0 -1
- package/dist/demo/DemoButton-CGUyR9eM.js +0 -178
- package/dist/demo/DemoButton-CGUyR9eM.js.map +0 -1
- package/dist/demo/DemoDataTable-QFG-xXSx.js +0 -358
- package/dist/demo/DemoDataTable-QFG-xXSx.js.map +0 -1
- package/dist/demo/DemoLayout-Cy6xjn6P.js.map +0 -1
- package/dist/demo/DemoLogin-vqxgTu4P.js.map +0 -1
- package/dist/demo/DemoRegister-YHPvPg77.js.map +0 -1
- package/dist/demo/DemoResetPassword-mOW18Zlm.js.map +0 -1
- package/dist/demo/DemoTypeForm-C1dNkahD.js.map +0 -1
- package/dist/demo/DemoVerifyEmail-D9EcXZ38.js +0 -30
- package/dist/demo/DemoVerifyEmail-D9EcXZ38.js.map +0 -1
- package/dist/demo/Login-CoYf_P_F.js +0 -219
- package/dist/demo/Login-CoYf_P_F.js.map +0 -1
- package/dist/demo/Profile-BE_Y3co2.js.map +0 -1
- package/dist/demo/Register-fXHmBpr3.js.map +0 -1
- package/dist/demo/ResetPassword-CAPj8MO3.js.map +0 -1
- package/dist/demo/Showcase-BtEU0pY9.js.map +0 -1
- package/dist/demo/VerifyEmail-DFmdCdYs.js.map +0 -1
- package/dist/demo/core-B7LNjM78.js.map +0 -1
- package/src/demo/styles.css +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ as AlephaMantineProvider } from "./core-
|
|
1
|
+
import { _ as AlephaMantineProvider } from "./core-DFgB3yU4.js";
|
|
2
2
|
import { Flex } from "@mantine/core";
|
|
3
3
|
import { jsx } from "react/jsx-runtime";
|
|
4
4
|
import { NestedView } from "alepha/react/router";
|
|
@@ -19,4 +19,4 @@ const AuthLayout = () => {
|
|
|
19
19
|
|
|
20
20
|
//#endregion
|
|
21
21
|
export { AuthLayout as default };
|
|
22
|
-
//# sourceMappingURL=AuthLayout-
|
|
22
|
+
//# sourceMappingURL=AuthLayout-Brri4A-L.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthLayout-
|
|
1
|
+
{"version":3,"file":"AuthLayout-Brri4A-L.js","names":[],"sources":["../../src/auth/components/AuthLayout.tsx"],"sourcesContent":["import { AlephaMantineProvider } from \"@alepha/ui\";\nimport { Flex } from \"@mantine/core\";\nimport { NestedView } from \"alepha/react/router\";\n\nconst AuthLayout = () => {\n return (\n <AlephaMantineProvider omnibar={false}>\n <Flex flex={1} align={\"center\"} h={\"100vh\"} justify={\"center\"}>\n <NestedView />\n </Flex>\n </AlephaMantineProvider>\n );\n};\n\nexport default AuthLayout;\n"],"mappings":";;;;;;AAIA,MAAM,mBAAmB;AACvB,QACE,oBAAC;EAAsB,SAAS;YAC9B,oBAAC;GAAK,MAAM;GAAG,OAAO;GAAU,GAAG;GAAS,SAAS;aACnD,oBAAC,eAAa;IACT;GACe"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { f as Flex, h as ActionButton, m as useDialog } from "./core-DFgB3yU4.js";
|
|
2
|
+
import { t as Showcase } from "./Showcase-D6Fxt4X4.js";
|
|
3
|
+
import { t } from "alepha";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
import { IconCheck, IconDownload, IconPlus, IconSettings, IconTrash } from "@tabler/icons-react";
|
|
6
|
+
|
|
7
|
+
//#region ../../src/demo/components/core/DemoButton.tsx
|
|
8
|
+
const showcaseSchema = t.object({
|
|
9
|
+
variant: t.enum([
|
|
10
|
+
"filled",
|
|
11
|
+
"light",
|
|
12
|
+
"outline",
|
|
13
|
+
"subtle",
|
|
14
|
+
"default",
|
|
15
|
+
"transparent"
|
|
16
|
+
], {
|
|
17
|
+
title: "variant",
|
|
18
|
+
default: "filled"
|
|
19
|
+
}),
|
|
20
|
+
size: t.enum([
|
|
21
|
+
"xs",
|
|
22
|
+
"sm",
|
|
23
|
+
"md",
|
|
24
|
+
"lg",
|
|
25
|
+
"xl"
|
|
26
|
+
], {
|
|
27
|
+
title: "size",
|
|
28
|
+
default: "md"
|
|
29
|
+
}),
|
|
30
|
+
intent: t.enum([
|
|
31
|
+
"none",
|
|
32
|
+
"primary",
|
|
33
|
+
"success",
|
|
34
|
+
"danger",
|
|
35
|
+
"warning",
|
|
36
|
+
"info"
|
|
37
|
+
], {
|
|
38
|
+
title: "intent",
|
|
39
|
+
default: "none"
|
|
40
|
+
}),
|
|
41
|
+
disabled: t.boolean({
|
|
42
|
+
title: "disabled",
|
|
43
|
+
default: false,
|
|
44
|
+
$control: { switch: true }
|
|
45
|
+
}),
|
|
46
|
+
loading: t.boolean({
|
|
47
|
+
title: "loading",
|
|
48
|
+
default: false,
|
|
49
|
+
$control: { switch: true }
|
|
50
|
+
})
|
|
51
|
+
});
|
|
52
|
+
const ButtonPreview = (props) => {
|
|
53
|
+
const dialog = useDialog();
|
|
54
|
+
return /* @__PURE__ */ jsxs(Flex, {
|
|
55
|
+
col: true,
|
|
56
|
+
gap: "xl",
|
|
57
|
+
p: "md",
|
|
58
|
+
children: [
|
|
59
|
+
/* @__PURE__ */ jsxs(Flex, {
|
|
60
|
+
gap: "md",
|
|
61
|
+
wrap: "wrap",
|
|
62
|
+
centerY: true,
|
|
63
|
+
children: [
|
|
64
|
+
/* @__PURE__ */ jsx(ActionButton, {
|
|
65
|
+
variant: props.variant,
|
|
66
|
+
size: props.size,
|
|
67
|
+
intent: props.intent,
|
|
68
|
+
disabled: props.disabled,
|
|
69
|
+
loading: props.loading,
|
|
70
|
+
onClick: () => dialog.alert({ message: "Clicked" }),
|
|
71
|
+
children: "Default"
|
|
72
|
+
}),
|
|
73
|
+
/* @__PURE__ */ jsx(ActionButton, {
|
|
74
|
+
variant: props.variant,
|
|
75
|
+
size: props.size,
|
|
76
|
+
intent: props.intent,
|
|
77
|
+
disabled: props.disabled,
|
|
78
|
+
loading: props.loading,
|
|
79
|
+
icon: IconPlus,
|
|
80
|
+
onClick: () => dialog.alert({ message: "Create" }),
|
|
81
|
+
children: "Create"
|
|
82
|
+
}),
|
|
83
|
+
/* @__PURE__ */ jsx(ActionButton, {
|
|
84
|
+
variant: props.variant,
|
|
85
|
+
size: props.size,
|
|
86
|
+
intent: props.intent,
|
|
87
|
+
disabled: props.disabled,
|
|
88
|
+
loading: props.loading,
|
|
89
|
+
icon: IconTrash,
|
|
90
|
+
onClick: () => dialog.alert({ message: "Delete" })
|
|
91
|
+
})
|
|
92
|
+
]
|
|
93
|
+
}),
|
|
94
|
+
/* @__PURE__ */ jsxs(Flex, {
|
|
95
|
+
gap: "md",
|
|
96
|
+
wrap: "wrap",
|
|
97
|
+
centerY: true,
|
|
98
|
+
children: [
|
|
99
|
+
/* @__PURE__ */ jsx(ActionButton, {
|
|
100
|
+
variant: "filled",
|
|
101
|
+
size: props.size,
|
|
102
|
+
intent: "primary",
|
|
103
|
+
icon: IconCheck,
|
|
104
|
+
onClick: () => {},
|
|
105
|
+
children: "Save"
|
|
106
|
+
}),
|
|
107
|
+
/* @__PURE__ */ jsx(ActionButton, {
|
|
108
|
+
variant: "filled",
|
|
109
|
+
size: props.size,
|
|
110
|
+
intent: "danger",
|
|
111
|
+
icon: IconTrash,
|
|
112
|
+
confirm: "Are you sure?",
|
|
113
|
+
onClick: () => dialog.alert({ message: "Deleted" }),
|
|
114
|
+
children: "Delete"
|
|
115
|
+
}),
|
|
116
|
+
/* @__PURE__ */ jsx(ActionButton, {
|
|
117
|
+
variant: "light",
|
|
118
|
+
size: props.size,
|
|
119
|
+
icon: IconDownload,
|
|
120
|
+
onClick: () => {},
|
|
121
|
+
children: "Export"
|
|
122
|
+
}),
|
|
123
|
+
/* @__PURE__ */ jsx(ActionButton, {
|
|
124
|
+
variant: "subtle",
|
|
125
|
+
size: props.size,
|
|
126
|
+
icon: IconSettings,
|
|
127
|
+
onClick: () => {}
|
|
128
|
+
})
|
|
129
|
+
]
|
|
130
|
+
}),
|
|
131
|
+
/* @__PURE__ */ jsxs(Flex, {
|
|
132
|
+
gap: "md",
|
|
133
|
+
wrap: "wrap",
|
|
134
|
+
centerY: true,
|
|
135
|
+
children: [/* @__PURE__ */ jsx(ActionButton, {
|
|
136
|
+
variant: props.variant,
|
|
137
|
+
size: props.size,
|
|
138
|
+
menu: { items: [
|
|
139
|
+
{
|
|
140
|
+
label: "Edit",
|
|
141
|
+
icon: /* @__PURE__ */ jsx(IconSettings, { size: 14 })
|
|
142
|
+
},
|
|
143
|
+
{ type: "divider" },
|
|
144
|
+
{
|
|
145
|
+
label: "Delete",
|
|
146
|
+
icon: /* @__PURE__ */ jsx(IconTrash, { size: 14 }),
|
|
147
|
+
color: "red"
|
|
148
|
+
}
|
|
149
|
+
] },
|
|
150
|
+
onClick: () => {},
|
|
151
|
+
children: "With Menu"
|
|
152
|
+
}), /* @__PURE__ */ jsx(ActionButton, {
|
|
153
|
+
variant: props.variant,
|
|
154
|
+
size: props.size,
|
|
155
|
+
tooltip: "This button has a tooltip",
|
|
156
|
+
icon: IconSettings,
|
|
157
|
+
onClick: () => {},
|
|
158
|
+
children: "With Tooltip"
|
|
159
|
+
})]
|
|
160
|
+
})
|
|
161
|
+
]
|
|
162
|
+
});
|
|
163
|
+
};
|
|
164
|
+
const DemoActionButton = () => {
|
|
165
|
+
return /* @__PURE__ */ jsx(Showcase, {
|
|
166
|
+
title: "ActionButton",
|
|
167
|
+
schema: showcaseSchema,
|
|
168
|
+
initialValues: {
|
|
169
|
+
variant: "filled",
|
|
170
|
+
size: "md",
|
|
171
|
+
intent: "none",
|
|
172
|
+
disabled: false,
|
|
173
|
+
loading: false
|
|
174
|
+
},
|
|
175
|
+
columns: 1,
|
|
176
|
+
children: (props) => /* @__PURE__ */ jsx(ButtonPreview, { ...props })
|
|
177
|
+
});
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
//#endregion
|
|
181
|
+
export { DemoActionButton as default };
|
|
182
|
+
//# sourceMappingURL=DemoButton-wiCxZZ_L.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DemoButton-wiCxZZ_L.js","names":[],"sources":["../../src/demo/components/core/DemoButton.tsx"],"sourcesContent":["import { ActionButton, Flex, useDialog } from \"@alepha/ui\";\nimport {\n IconCheck,\n IconDownload,\n IconPlus,\n IconSettings,\n IconTrash,\n} from \"@tabler/icons-react\";\nimport { t } from \"alepha\";\nimport Showcase from \"../shared/Showcase.tsx\";\n\nconst showcaseSchema = t.object({\n variant: t.enum(\n [\"filled\", \"light\", \"outline\", \"subtle\", \"default\", \"transparent\"],\n {\n title: \"variant\",\n default: \"filled\",\n },\n ),\n size: t.enum([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"], {\n title: \"size\",\n default: \"md\",\n }),\n intent: t.enum([\"none\", \"primary\", \"success\", \"danger\", \"warning\", \"info\"], {\n title: \"intent\",\n default: \"none\",\n }),\n disabled: t.boolean({\n title: \"disabled\",\n default: false,\n $control: { switch: true },\n }),\n loading: t.boolean({\n title: \"loading\",\n default: false,\n $control: { switch: true },\n }),\n});\n\ninterface ButtonPreviewProps {\n variant:\n | \"filled\"\n | \"light\"\n | \"outline\"\n | \"subtle\"\n | \"default\"\n | \"transparent\";\n size: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n intent: \"none\" | \"primary\" | \"success\" | \"danger\" | \"warning\" | \"info\";\n disabled: boolean;\n loading: boolean;\n}\n\nconst ButtonPreview = (props: ButtonPreviewProps) => {\n const dialog = useDialog();\n\n return (\n <Flex col gap=\"xl\" p=\"md\">\n <Flex gap=\"md\" wrap=\"wrap\" centerY>\n <ActionButton\n variant={props.variant}\n size={props.size}\n intent={props.intent}\n disabled={props.disabled}\n loading={props.loading}\n onClick={() => dialog.alert({ message: \"Clicked\" })}\n >\n Default\n </ActionButton>\n <ActionButton\n variant={props.variant}\n size={props.size}\n intent={props.intent}\n disabled={props.disabled}\n loading={props.loading}\n icon={IconPlus}\n onClick={() => dialog.alert({ message: \"Create\" })}\n >\n Create\n </ActionButton>\n <ActionButton\n variant={props.variant}\n size={props.size}\n intent={props.intent}\n disabled={props.disabled}\n loading={props.loading}\n icon={IconTrash}\n onClick={() => dialog.alert({ message: \"Delete\" })}\n />\n </Flex>\n\n <Flex gap=\"md\" wrap=\"wrap\" centerY>\n <ActionButton\n variant=\"filled\"\n size={props.size}\n intent=\"primary\"\n icon={IconCheck}\n onClick={() => {}}\n >\n Save\n </ActionButton>\n <ActionButton\n variant=\"filled\"\n size={props.size}\n intent=\"danger\"\n icon={IconTrash}\n confirm=\"Are you sure?\"\n onClick={() => dialog.alert({ message: \"Deleted\" })}\n >\n Delete\n </ActionButton>\n <ActionButton\n variant=\"light\"\n size={props.size}\n icon={IconDownload}\n onClick={() => {}}\n >\n Export\n </ActionButton>\n <ActionButton\n variant=\"subtle\"\n size={props.size}\n icon={IconSettings}\n onClick={() => {}}\n />\n </Flex>\n\n <Flex gap=\"md\" wrap=\"wrap\" centerY>\n <ActionButton\n variant={props.variant}\n size={props.size}\n menu={{\n items: [\n { label: \"Edit\", icon: <IconSettings size={14} /> },\n { type: \"divider\" },\n {\n label: \"Delete\",\n icon: <IconTrash size={14} />,\n color: \"red\",\n },\n ],\n }}\n onClick={() => {}}\n >\n With Menu\n </ActionButton>\n <ActionButton\n variant={props.variant}\n size={props.size}\n tooltip=\"This button has a tooltip\"\n icon={IconSettings}\n onClick={() => {}}\n >\n With Tooltip\n </ActionButton>\n </Flex>\n </Flex>\n );\n};\n\nconst DemoActionButton = () => {\n return (\n <Showcase\n title=\"ActionButton\"\n schema={showcaseSchema}\n initialValues={{\n variant: \"filled\",\n size: \"md\",\n intent: \"none\",\n disabled: false,\n loading: false,\n }}\n columns={1}\n >\n {(props) => <ButtonPreview {...(props as ButtonPreviewProps)} />}\n </Showcase>\n );\n};\n\nexport default DemoActionButton;\n"],"mappings":";;;;;;;AAWA,MAAM,iBAAiB,EAAE,OAAO;CAC9B,SAAS,EAAE,KACT;EAAC;EAAU;EAAS;EAAW;EAAU;EAAW;EAAc,EAClE;EACE,OAAO;EACP,SAAS;EACV,CACF;CACD,MAAM,EAAE,KAAK;EAAC;EAAM;EAAM;EAAM;EAAM;EAAK,EAAE;EAC3C,OAAO;EACP,SAAS;EACV,CAAC;CACF,QAAQ,EAAE,KAAK;EAAC;EAAQ;EAAW;EAAW;EAAU;EAAW;EAAO,EAAE;EAC1E,OAAO;EACP,SAAS;EACV,CAAC;CACF,UAAU,EAAE,QAAQ;EAClB,OAAO;EACP,SAAS;EACT,UAAU,EAAE,QAAQ,MAAM;EAC3B,CAAC;CACF,SAAS,EAAE,QAAQ;EACjB,OAAO;EACP,SAAS;EACT,UAAU,EAAE,QAAQ,MAAM;EAC3B,CAAC;CACH,CAAC;AAgBF,MAAM,iBAAiB,UAA8B;CACnD,MAAM,SAAS,WAAW;AAE1B,QACE,qBAAC;EAAK;EAAI,KAAI;EAAK,GAAE;;GACnB,qBAAC;IAAK,KAAI;IAAK,MAAK;IAAO;;KACzB,oBAAC;MACC,SAAS,MAAM;MACf,MAAM,MAAM;MACZ,QAAQ,MAAM;MACd,UAAU,MAAM;MAChB,SAAS,MAAM;MACf,eAAe,OAAO,MAAM,EAAE,SAAS,WAAW,CAAC;gBACpD;OAEc;KACf,oBAAC;MACC,SAAS,MAAM;MACf,MAAM,MAAM;MACZ,QAAQ,MAAM;MACd,UAAU,MAAM;MAChB,SAAS,MAAM;MACf,MAAM;MACN,eAAe,OAAO,MAAM,EAAE,SAAS,UAAU,CAAC;gBACnD;OAEc;KACf,oBAAC;MACC,SAAS,MAAM;MACf,MAAM,MAAM;MACZ,QAAQ,MAAM;MACd,UAAU,MAAM;MAChB,SAAS,MAAM;MACf,MAAM;MACN,eAAe,OAAO,MAAM,EAAE,SAAS,UAAU,CAAC;OAClD;;KACG;GAEP,qBAAC;IAAK,KAAI;IAAK,MAAK;IAAO;;KACzB,oBAAC;MACC,SAAQ;MACR,MAAM,MAAM;MACZ,QAAO;MACP,MAAM;MACN,eAAe;gBAChB;OAEc;KACf,oBAAC;MACC,SAAQ;MACR,MAAM,MAAM;MACZ,QAAO;MACP,MAAM;MACN,SAAQ;MACR,eAAe,OAAO,MAAM,EAAE,SAAS,WAAW,CAAC;gBACpD;OAEc;KACf,oBAAC;MACC,SAAQ;MACR,MAAM,MAAM;MACZ,MAAM;MACN,eAAe;gBAChB;OAEc;KACf,oBAAC;MACC,SAAQ;MACR,MAAM,MAAM;MACZ,MAAM;MACN,eAAe;OACf;;KACG;GAEP,qBAAC;IAAK,KAAI;IAAK,MAAK;IAAO;eACzB,oBAAC;KACC,SAAS,MAAM;KACf,MAAM,MAAM;KACZ,MAAM,EACJ,OAAO;MACL;OAAE,OAAO;OAAQ,MAAM,oBAAC,gBAAa,MAAM,KAAM;OAAE;MACnD,EAAE,MAAM,WAAW;MACnB;OACE,OAAO;OACP,MAAM,oBAAC,aAAU,MAAM,KAAM;OAC7B,OAAO;OACR;MACF,EACF;KACD,eAAe;eAChB;MAEc,EACf,oBAAC;KACC,SAAS,MAAM;KACf,MAAM,MAAM;KACZ,SAAQ;KACR,MAAM;KACN,eAAe;eAChB;MAEc;KACV;;GACF;;AAIX,MAAM,yBAAyB;AAC7B,QACE,oBAAC;EACC,OAAM;EACN,QAAQ;EACR,eAAe;GACb,SAAS;GACT,MAAM;GACN,QAAQ;GACR,UAAU;GACV,SAAS;GACV;EACD,SAAS;aAEP,UAAU,oBAAC,iBAAc,GAAK,QAAgC;GACvD"}
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
import { a as TypeForm, f as Flex, l as Text, m as useDialog, o as Control } from "./core-DFgB3yU4.js";
|
|
2
|
+
import { t as Showcase } from "./Showcase-D6Fxt4X4.js";
|
|
3
|
+
import { t } from "alepha";
|
|
4
|
+
import { useForm } from "alepha/react/form";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
|
|
7
|
+
//#region ../../src/demo/components/core/DemoControlSelect.tsx
|
|
8
|
+
const selectSchema = t.object({
|
|
9
|
+
status: t.enum([
|
|
10
|
+
"active",
|
|
11
|
+
"inactive",
|
|
12
|
+
"pending"
|
|
13
|
+
], {
|
|
14
|
+
title: "Status",
|
|
15
|
+
default: "active"
|
|
16
|
+
}),
|
|
17
|
+
priority: t.enum([
|
|
18
|
+
"low",
|
|
19
|
+
"medium",
|
|
20
|
+
"high",
|
|
21
|
+
"critical"
|
|
22
|
+
], { title: "Priority" })
|
|
23
|
+
});
|
|
24
|
+
const multiSelectSchema = t.object({ roles: t.array(t.enum([
|
|
25
|
+
"admin",
|
|
26
|
+
"editor",
|
|
27
|
+
"viewer",
|
|
28
|
+
"moderator"
|
|
29
|
+
]), {
|
|
30
|
+
title: "Roles",
|
|
31
|
+
default: ["editor"]
|
|
32
|
+
}) });
|
|
33
|
+
const autocompleteSchema = t.object({ city: t.enum([
|
|
34
|
+
"Paris",
|
|
35
|
+
"London",
|
|
36
|
+
"Tokyo",
|
|
37
|
+
"New York",
|
|
38
|
+
"Berlin",
|
|
39
|
+
"Sydney"
|
|
40
|
+
], {
|
|
41
|
+
title: "City",
|
|
42
|
+
default: "Paris"
|
|
43
|
+
}) });
|
|
44
|
+
const tagsSchema = t.object({ tags: t.array(t.text(), {
|
|
45
|
+
title: "Tags",
|
|
46
|
+
default: ["typescript", "react"]
|
|
47
|
+
}) });
|
|
48
|
+
const segmentedSchema = t.object({ theme: t.enum([
|
|
49
|
+
"light",
|
|
50
|
+
"dark",
|
|
51
|
+
"auto"
|
|
52
|
+
], {
|
|
53
|
+
title: "Theme",
|
|
54
|
+
default: "auto"
|
|
55
|
+
}) });
|
|
56
|
+
const booleanSchema = t.object({ enabled: t.boolean({
|
|
57
|
+
title: "Enabled",
|
|
58
|
+
default: true
|
|
59
|
+
}) });
|
|
60
|
+
const numericSchema = t.object({ rating: t.integer({
|
|
61
|
+
title: "Rating",
|
|
62
|
+
enum: [
|
|
63
|
+
1,
|
|
64
|
+
2,
|
|
65
|
+
3,
|
|
66
|
+
4,
|
|
67
|
+
5
|
|
68
|
+
]
|
|
69
|
+
}) });
|
|
70
|
+
const allCities = Array.from({ length: 200 }, (_, i) => ({
|
|
71
|
+
value: `city-${i}`,
|
|
72
|
+
label: `City ${i} - ${[
|
|
73
|
+
"Alpha",
|
|
74
|
+
"Beta",
|
|
75
|
+
"Gamma",
|
|
76
|
+
"Delta",
|
|
77
|
+
"Epsilon"
|
|
78
|
+
][i % 5]}`
|
|
79
|
+
}));
|
|
80
|
+
const cityLoader = async (search, resolve) => {
|
|
81
|
+
await new Promise((r) => setTimeout(r, 300));
|
|
82
|
+
if (resolve) return allCities.filter((c) => resolve.includes(c.value));
|
|
83
|
+
if (!search) return allCities;
|
|
84
|
+
return allCities.filter((c) => c.label.toLowerCase().includes(search.toLowerCase()));
|
|
85
|
+
};
|
|
86
|
+
const shortCities = allCities.slice(0, 20);
|
|
87
|
+
const shortCityLoader = async () => {
|
|
88
|
+
await new Promise((r) => setTimeout(r, 300));
|
|
89
|
+
return shortCities;
|
|
90
|
+
};
|
|
91
|
+
const useAlertValues = () => {
|
|
92
|
+
const dialog = useDialog();
|
|
93
|
+
return (values) => {
|
|
94
|
+
dialog.alert({
|
|
95
|
+
title: "Submitted",
|
|
96
|
+
message: JSON.stringify(values, null, 2)
|
|
97
|
+
});
|
|
98
|
+
};
|
|
99
|
+
};
|
|
100
|
+
const SelectVariant = () => {
|
|
101
|
+
return /* @__PURE__ */ jsx(TypeForm, {
|
|
102
|
+
fill: true,
|
|
103
|
+
form: useForm({
|
|
104
|
+
schema: selectSchema,
|
|
105
|
+
handler: useAlertValues()
|
|
106
|
+
}, []),
|
|
107
|
+
submitButtonProps: { children: "Submit" }
|
|
108
|
+
});
|
|
109
|
+
};
|
|
110
|
+
const MultiSelectVariant = () => {
|
|
111
|
+
return /* @__PURE__ */ jsx(TypeForm, {
|
|
112
|
+
fill: true,
|
|
113
|
+
form: useForm({
|
|
114
|
+
schema: multiSelectSchema,
|
|
115
|
+
handler: useAlertValues()
|
|
116
|
+
}, []),
|
|
117
|
+
submitButtonProps: { children: "Submit" }
|
|
118
|
+
});
|
|
119
|
+
};
|
|
120
|
+
const AutocompleteVariant = () => {
|
|
121
|
+
return /* @__PURE__ */ jsx(TypeForm, {
|
|
122
|
+
fill: true,
|
|
123
|
+
form: useForm({
|
|
124
|
+
schema: autocompleteSchema,
|
|
125
|
+
handler: useAlertValues()
|
|
126
|
+
}, []),
|
|
127
|
+
fieldControlProps: { city: { select: { creatable: true } } },
|
|
128
|
+
submitButtonProps: { children: "Submit" }
|
|
129
|
+
});
|
|
130
|
+
};
|
|
131
|
+
const TagsVariant = () => {
|
|
132
|
+
return /* @__PURE__ */ jsx(TypeForm, {
|
|
133
|
+
fill: true,
|
|
134
|
+
form: useForm({
|
|
135
|
+
schema: tagsSchema,
|
|
136
|
+
handler: useAlertValues()
|
|
137
|
+
}, []),
|
|
138
|
+
fieldControlProps: { tags: { select: { creatable: true } } },
|
|
139
|
+
submitButtonProps: { children: "Submit" }
|
|
140
|
+
});
|
|
141
|
+
};
|
|
142
|
+
const SegmentedVariant = () => {
|
|
143
|
+
return /* @__PURE__ */ jsx(TypeForm, {
|
|
144
|
+
fill: true,
|
|
145
|
+
form: useForm({
|
|
146
|
+
schema: segmentedSchema,
|
|
147
|
+
handler: useAlertValues()
|
|
148
|
+
}, []),
|
|
149
|
+
fieldControlProps: { theme: { segmented: true } },
|
|
150
|
+
submitButtonProps: { children: "Submit" }
|
|
151
|
+
});
|
|
152
|
+
};
|
|
153
|
+
const BooleanVariant = () => {
|
|
154
|
+
return /* @__PURE__ */ jsx(TypeForm, {
|
|
155
|
+
fill: true,
|
|
156
|
+
form: useForm({
|
|
157
|
+
schema: booleanSchema,
|
|
158
|
+
handler: useAlertValues()
|
|
159
|
+
}, []),
|
|
160
|
+
submitButtonProps: { children: "Submit" }
|
|
161
|
+
});
|
|
162
|
+
};
|
|
163
|
+
const NumericVariant = () => {
|
|
164
|
+
return /* @__PURE__ */ jsx(TypeForm, {
|
|
165
|
+
fill: true,
|
|
166
|
+
form: useForm({
|
|
167
|
+
schema: numericSchema,
|
|
168
|
+
handler: useAlertValues()
|
|
169
|
+
}, []),
|
|
170
|
+
fieldControlProps: { rating: { select: { selectProps: { data: [
|
|
171
|
+
{
|
|
172
|
+
value: "1",
|
|
173
|
+
label: "1 - Poor"
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
value: "2",
|
|
177
|
+
label: "2 - Fair"
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
value: "3",
|
|
181
|
+
label: "3 - Good"
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
value: "4",
|
|
185
|
+
label: "4 - Great"
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
value: "5",
|
|
189
|
+
label: "5 - Excellent"
|
|
190
|
+
}
|
|
191
|
+
] } } } },
|
|
192
|
+
submitButtonProps: { children: "Submit" }
|
|
193
|
+
});
|
|
194
|
+
};
|
|
195
|
+
const AsyncShortVariant = () => {
|
|
196
|
+
const handler = useAlertValues();
|
|
197
|
+
return /* @__PURE__ */ jsx(Control, {
|
|
198
|
+
input: useForm({
|
|
199
|
+
schema: t.object({ city: t.text({ title: "City" }) }),
|
|
200
|
+
handler
|
|
201
|
+
}, []).input.city,
|
|
202
|
+
select: { loader: shortCityLoader }
|
|
203
|
+
});
|
|
204
|
+
};
|
|
205
|
+
const AsyncLongVariant = () => {
|
|
206
|
+
const handler = useAlertValues();
|
|
207
|
+
return /* @__PURE__ */ jsx(Control, {
|
|
208
|
+
input: useForm({
|
|
209
|
+
schema: t.object({ city: t.text({ title: "City" }) }),
|
|
210
|
+
handler
|
|
211
|
+
}, []).input.city,
|
|
212
|
+
select: {
|
|
213
|
+
loader: cityLoader,
|
|
214
|
+
selectProps: { defaultValue: "city-42" }
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
};
|
|
218
|
+
const variants = [
|
|
219
|
+
{
|
|
220
|
+
title: "Select",
|
|
221
|
+
description: "Single enum value with dropdown",
|
|
222
|
+
component: SelectVariant
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
title: "Multi Select",
|
|
226
|
+
description: "Array of enum values with multi-select dropdown",
|
|
227
|
+
component: MultiSelectVariant
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
title: "Autocomplete",
|
|
231
|
+
description: "Single value with freeform text input — type any value or pick from suggestions",
|
|
232
|
+
component: AutocompleteVariant
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
title: "Tags",
|
|
236
|
+
description: "Array of freeform values — type and press Enter to add tags",
|
|
237
|
+
component: TagsVariant
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
title: "Segmented",
|
|
241
|
+
description: "Enum rendered as segmented toggle buttons",
|
|
242
|
+
component: SegmentedVariant
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
title: "Boolean",
|
|
246
|
+
description: "Boolean value — select value is coerced to true/false on submit",
|
|
247
|
+
component: BooleanVariant
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
title: "Numeric",
|
|
251
|
+
description: "Integer enum — select value is coerced to number on submit",
|
|
252
|
+
component: NumericVariant
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
title: "Async (Short)",
|
|
256
|
+
description: "Loader returns <= 100 items — client-side filtering, single network call",
|
|
257
|
+
component: AsyncShortVariant
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
title: "Async (Long)",
|
|
261
|
+
description: "Loader returns > 100 items — server-side filtering with debounced search",
|
|
262
|
+
component: AsyncLongVariant
|
|
263
|
+
}
|
|
264
|
+
];
|
|
265
|
+
const showcaseSchema = t.object({});
|
|
266
|
+
const DemoControlSelect = () => {
|
|
267
|
+
return /* @__PURE__ */ jsx(Showcase, {
|
|
268
|
+
title: "ControlSelect",
|
|
269
|
+
schema: showcaseSchema,
|
|
270
|
+
children: () => /* @__PURE__ */ jsx(Flex, {
|
|
271
|
+
direction: "column",
|
|
272
|
+
gap: "xl",
|
|
273
|
+
children: variants.map((variant) => /* @__PURE__ */ jsxs(Flex, {
|
|
274
|
+
rounded: true,
|
|
275
|
+
shadowed: "sm",
|
|
276
|
+
bordered: true,
|
|
277
|
+
direction: "column",
|
|
278
|
+
children: [/* @__PURE__ */ jsxs(Flex, {
|
|
279
|
+
elevated: true,
|
|
280
|
+
rounded: true,
|
|
281
|
+
col: true,
|
|
282
|
+
borderedBottom: true,
|
|
283
|
+
p: "sm",
|
|
284
|
+
children: [/* @__PURE__ */ jsx(Text, {
|
|
285
|
+
fw: 600,
|
|
286
|
+
children: variant.title
|
|
287
|
+
}), /* @__PURE__ */ jsx(Text, {
|
|
288
|
+
size: "sm",
|
|
289
|
+
c: "dimmed",
|
|
290
|
+
children: variant.description
|
|
291
|
+
})]
|
|
292
|
+
}), /* @__PURE__ */ jsx(Flex, {
|
|
293
|
+
rounded: true,
|
|
294
|
+
surface: true,
|
|
295
|
+
p: "xs",
|
|
296
|
+
children: /* @__PURE__ */ jsx(variant.component, {})
|
|
297
|
+
})]
|
|
298
|
+
}, variant.title))
|
|
299
|
+
})
|
|
300
|
+
});
|
|
301
|
+
};
|
|
302
|
+
|
|
303
|
+
//#endregion
|
|
304
|
+
export { DemoControlSelect as default };
|
|
305
|
+
//# sourceMappingURL=DemoControlSelect-D7ILObVg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DemoControlSelect-D7ILObVg.js","names":[],"sources":["../../src/demo/components/core/DemoControlSelect.tsx"],"sourcesContent":["import {\n Control,\n Flex,\n type SelectValueLabel,\n Text,\n TypeForm,\n useDialog,\n} from \"@alepha/ui\";\nimport { t } from \"alepha\";\nimport { useForm } from \"alepha/react/form\";\nimport Showcase from \"../shared/Showcase.tsx\";\n\n// region schemas\n\nconst selectSchema = t.object({\n status: t.enum([\"active\", \"inactive\", \"pending\"], {\n title: \"Status\",\n default: \"active\",\n }),\n priority: t.enum([\"low\", \"medium\", \"high\", \"critical\"], {\n title: \"Priority\",\n }),\n});\n\nconst multiSelectSchema = t.object({\n roles: t.array(t.enum([\"admin\", \"editor\", \"viewer\", \"moderator\"]), {\n title: \"Roles\",\n default: [\"editor\"],\n }),\n});\n\nconst autocompleteSchema = t.object({\n city: t.enum([\"Paris\", \"London\", \"Tokyo\", \"New York\", \"Berlin\", \"Sydney\"], {\n title: \"City\",\n default: \"Paris\",\n }),\n});\n\nconst tagsSchema = t.object({\n tags: t.array(t.text(), {\n title: \"Tags\",\n default: [\"typescript\", \"react\"],\n }),\n});\n\nconst segmentedSchema = t.object({\n theme: t.enum([\"light\", \"dark\", \"auto\"], {\n title: \"Theme\",\n default: \"auto\",\n }),\n});\n\nconst booleanSchema = t.object({\n enabled: t.boolean({\n title: \"Enabled\",\n default: true,\n }),\n});\n\nconst numericSchema = t.object({\n rating: t.integer({\n title: \"Rating\",\n enum: [1, 2, 3, 4, 5] as any,\n }),\n});\n\n// endregion\n\n// region async loader\n\nconst allCities = Array.from({ length: 200 }, (_, i) => ({\n value: `city-${i}`,\n label: `City ${i} - ${[\"Alpha\", \"Beta\", \"Gamma\", \"Delta\", \"Epsilon\"][i % 5]}`,\n}));\n\nconst cityLoader = async (\n search: string,\n resolve?: string[],\n): Promise<SelectValueLabel[]> => {\n await new Promise((r) => setTimeout(r, 300));\n\n if (resolve) {\n return allCities.filter((c) => resolve.includes(c.value));\n }\n\n if (!search) return allCities;\n return allCities.filter((c) =>\n c.label.toLowerCase().includes(search.toLowerCase()),\n );\n};\n\nconst shortCities = allCities.slice(0, 20);\nconst shortCityLoader = async (): Promise<SelectValueLabel[]> => {\n await new Promise((r) => setTimeout(r, 300));\n return shortCities;\n};\n\n// endregion\n\n// region shared hook\n\nconst useAlertValues = () => {\n const dialog = useDialog();\n return (values: any) => {\n dialog.alert({\n title: \"Submitted\",\n message: JSON.stringify(values, null, 2),\n });\n };\n};\n\n// endregion\n\n// region variant components\n\nconst SelectVariant = () => {\n const handler = useAlertValues();\n const form = useForm({ schema: selectSchema, handler }, []);\n return (\n <TypeForm fill form={form} submitButtonProps={{ children: \"Submit\" }} />\n );\n};\n\nconst MultiSelectVariant = () => {\n const handler = useAlertValues();\n const form = useForm({ schema: multiSelectSchema, handler }, []);\n return (\n <TypeForm fill form={form} submitButtonProps={{ children: \"Submit\" }} />\n );\n};\n\nconst AutocompleteVariant = () => {\n const handler = useAlertValues();\n const form = useForm({ schema: autocompleteSchema, handler }, []);\n return (\n <TypeForm\n fill\n form={form}\n fieldControlProps={{ city: { select: { creatable: true } } }}\n submitButtonProps={{ children: \"Submit\" }}\n />\n );\n};\n\nconst TagsVariant = () => {\n const handler = useAlertValues();\n const form = useForm({ schema: tagsSchema, handler }, []);\n return (\n <TypeForm\n fill\n form={form}\n fieldControlProps={{ tags: { select: { creatable: true } } }}\n submitButtonProps={{ children: \"Submit\" }}\n />\n );\n};\n\nconst SegmentedVariant = () => {\n const handler = useAlertValues();\n const form = useForm({ schema: segmentedSchema, handler }, []);\n return (\n <TypeForm\n fill\n form={form}\n fieldControlProps={{ theme: { segmented: true } }}\n submitButtonProps={{ children: \"Submit\" }}\n />\n );\n};\n\nconst BooleanVariant = () => {\n const handler = useAlertValues();\n const form = useForm({ schema: booleanSchema, handler }, []);\n return (\n <TypeForm fill form={form} submitButtonProps={{ children: \"Submit\" }} />\n );\n};\n\nconst NumericVariant = () => {\n const handler = useAlertValues();\n const form = useForm({ schema: numericSchema, handler }, []);\n return (\n <TypeForm\n fill\n form={form}\n fieldControlProps={{\n rating: {\n select: {\n selectProps: {\n data: [\n { value: \"1\", label: \"1 - Poor\" },\n { value: \"2\", label: \"2 - Fair\" },\n { value: \"3\", label: \"3 - Good\" },\n { value: \"4\", label: \"4 - Great\" },\n { value: \"5\", label: \"5 - Excellent\" },\n ],\n },\n },\n },\n }}\n submitButtonProps={{ children: \"Submit\" }}\n />\n );\n};\n\nconst AsyncShortVariant = () => {\n const handler = useAlertValues();\n const asyncSchema = t.object({ city: t.text({ title: \"City\" }) });\n const form = useForm({ schema: asyncSchema, handler }, []);\n return (\n <Control\n input={form.input.city}\n select={{\n loader: shortCityLoader,\n }}\n />\n );\n};\n\nconst AsyncLongVariant = () => {\n const handler = useAlertValues();\n const asyncSchema = t.object({ city: t.text({ title: \"City\" }) });\n const form = useForm({ schema: asyncSchema, handler }, []);\n return (\n <Control\n input={form.input.city}\n select={{\n loader: cityLoader,\n selectProps: { defaultValue: \"city-42\" },\n }}\n />\n );\n};\n\n// endregion\n\nconst variants: {\n title: string;\n description: string;\n component: () => React.ReactNode;\n}[] = [\n {\n title: \"Select\",\n description: \"Single enum value with dropdown\",\n component: SelectVariant,\n },\n {\n title: \"Multi Select\",\n description: \"Array of enum values with multi-select dropdown\",\n component: MultiSelectVariant,\n },\n {\n title: \"Autocomplete\",\n description:\n \"Single value with freeform text input — type any value or pick from suggestions\",\n component: AutocompleteVariant,\n },\n {\n title: \"Tags\",\n description: \"Array of freeform values — type and press Enter to add tags\",\n component: TagsVariant,\n },\n {\n title: \"Segmented\",\n description: \"Enum rendered as segmented toggle buttons\",\n component: SegmentedVariant,\n },\n {\n title: \"Boolean\",\n description:\n \"Boolean value — select value is coerced to true/false on submit\",\n component: BooleanVariant,\n },\n {\n title: \"Numeric\",\n description: \"Integer enum — select value is coerced to number on submit\",\n component: NumericVariant,\n },\n {\n title: \"Async (Short)\",\n description:\n \"Loader returns <= 100 items — client-side filtering, single network call\",\n component: AsyncShortVariant,\n },\n {\n title: \"Async (Long)\",\n description:\n \"Loader returns > 100 items — server-side filtering with debounced search\",\n component: AsyncLongVariant,\n },\n];\n\nconst showcaseSchema = t.object({});\n\nconst DemoControlSelect = () => {\n return (\n <Showcase title=\"ControlSelect\" schema={showcaseSchema}>\n {() => (\n <Flex direction=\"column\" gap=\"xl\">\n {variants.map((variant) => (\n <Flex\n rounded\n shadowed={\"sm\"}\n bordered\n key={variant.title}\n direction=\"column\"\n >\n <Flex elevated rounded col borderedBottom p={\"sm\"}>\n <Text fw={600}>{variant.title}</Text>\n <Text size=\"sm\" c=\"dimmed\">\n {variant.description}\n </Text>\n </Flex>\n <Flex rounded surface p={\"xs\"}>\n <variant.component />\n </Flex>\n </Flex>\n ))}\n </Flex>\n )}\n </Showcase>\n );\n};\n\nexport default DemoControlSelect;\n"],"mappings":";;;;;;;AAcA,MAAM,eAAe,EAAE,OAAO;CAC5B,QAAQ,EAAE,KAAK;EAAC;EAAU;EAAY;EAAU,EAAE;EAChD,OAAO;EACP,SAAS;EACV,CAAC;CACF,UAAU,EAAE,KAAK;EAAC;EAAO;EAAU;EAAQ;EAAW,EAAE,EACtD,OAAO,YACR,CAAC;CACH,CAAC;AAEF,MAAM,oBAAoB,EAAE,OAAO,EACjC,OAAO,EAAE,MAAM,EAAE,KAAK;CAAC;CAAS;CAAU;CAAU;CAAY,CAAC,EAAE;CACjE,OAAO;CACP,SAAS,CAAC,SAAS;CACpB,CAAC,EACH,CAAC;AAEF,MAAM,qBAAqB,EAAE,OAAO,EAClC,MAAM,EAAE,KAAK;CAAC;CAAS;CAAU;CAAS;CAAY;CAAU;CAAS,EAAE;CACzE,OAAO;CACP,SAAS;CACV,CAAC,EACH,CAAC;AAEF,MAAM,aAAa,EAAE,OAAO,EAC1B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;CACtB,OAAO;CACP,SAAS,CAAC,cAAc,QAAQ;CACjC,CAAC,EACH,CAAC;AAEF,MAAM,kBAAkB,EAAE,OAAO,EAC/B,OAAO,EAAE,KAAK;CAAC;CAAS;CAAQ;CAAO,EAAE;CACvC,OAAO;CACP,SAAS;CACV,CAAC,EACH,CAAC;AAEF,MAAM,gBAAgB,EAAE,OAAO,EAC7B,SAAS,EAAE,QAAQ;CACjB,OAAO;CACP,SAAS;CACV,CAAC,EACH,CAAC;AAEF,MAAM,gBAAgB,EAAE,OAAO,EAC7B,QAAQ,EAAE,QAAQ;CAChB,OAAO;CACP,MAAM;EAAC;EAAG;EAAG;EAAG;EAAG;EAAE;CACtB,CAAC,EACH,CAAC;AAMF,MAAM,YAAY,MAAM,KAAK,EAAE,QAAQ,KAAK,GAAG,GAAG,OAAO;CACvD,OAAO,QAAQ;CACf,OAAO,QAAQ,EAAE,KAAK;EAAC;EAAS;EAAQ;EAAS;EAAS;EAAU,CAAC,IAAI;CAC1E,EAAE;AAEH,MAAM,aAAa,OACjB,QACA,YACgC;AAChC,OAAM,IAAI,SAAS,MAAM,WAAW,GAAG,IAAI,CAAC;AAE5C,KAAI,QACF,QAAO,UAAU,QAAQ,MAAM,QAAQ,SAAS,EAAE,MAAM,CAAC;AAG3D,KAAI,CAAC,OAAQ,QAAO;AACpB,QAAO,UAAU,QAAQ,MACvB,EAAE,MAAM,aAAa,CAAC,SAAS,OAAO,aAAa,CAAC,CACrD;;AAGH,MAAM,cAAc,UAAU,MAAM,GAAG,GAAG;AAC1C,MAAM,kBAAkB,YAAyC;AAC/D,OAAM,IAAI,SAAS,MAAM,WAAW,GAAG,IAAI,CAAC;AAC5C,QAAO;;AAOT,MAAM,uBAAuB;CAC3B,MAAM,SAAS,WAAW;AAC1B,SAAQ,WAAgB;AACtB,SAAO,MAAM;GACX,OAAO;GACP,SAAS,KAAK,UAAU,QAAQ,MAAM,EAAE;GACzC,CAAC;;;AAQN,MAAM,sBAAsB;AAG1B,QACE,oBAAC;EAAS;EAAK,MAFJ,QAAQ;GAAE,QAAQ;GAAc,SAD7B,gBAAgB;GACsB,EAAE,EAAE,CAAC;EAE9B,mBAAmB,EAAE,UAAU,UAAU;GAAI;;AAI5E,MAAM,2BAA2B;AAG/B,QACE,oBAAC;EAAS;EAAK,MAFJ,QAAQ;GAAE,QAAQ;GAAmB,SADlC,gBAAgB;GAC2B,EAAE,EAAE,CAAC;EAEnC,mBAAmB,EAAE,UAAU,UAAU;GAAI;;AAI5E,MAAM,4BAA4B;AAGhC,QACE,oBAAC;EACC;EACA,MAJS,QAAQ;GAAE,QAAQ;GAAoB,SADnC,gBAAgB;GAC4B,EAAE,EAAE,CAAC;EAK7D,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,MAAM,EAAE,EAAE;EAC5D,mBAAmB,EAAE,UAAU,UAAU;GACzC;;AAIN,MAAM,oBAAoB;AAGxB,QACE,oBAAC;EACC;EACA,MAJS,QAAQ;GAAE,QAAQ;GAAY,SAD3B,gBAAgB;GACoB,EAAE,EAAE,CAAC;EAKrD,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,MAAM,EAAE,EAAE;EAC5D,mBAAmB,EAAE,UAAU,UAAU;GACzC;;AAIN,MAAM,yBAAyB;AAG7B,QACE,oBAAC;EACC;EACA,MAJS,QAAQ;GAAE,QAAQ;GAAiB,SADhC,gBAAgB;GACyB,EAAE,EAAE,CAAC;EAK1D,mBAAmB,EAAE,OAAO,EAAE,WAAW,MAAM,EAAE;EACjD,mBAAmB,EAAE,UAAU,UAAU;GACzC;;AAIN,MAAM,uBAAuB;AAG3B,QACE,oBAAC;EAAS;EAAK,MAFJ,QAAQ;GAAE,QAAQ;GAAe,SAD9B,gBAAgB;GACuB,EAAE,EAAE,CAAC;EAE/B,mBAAmB,EAAE,UAAU,UAAU;GAAI;;AAI5E,MAAM,uBAAuB;AAG3B,QACE,oBAAC;EACC;EACA,MAJS,QAAQ;GAAE,QAAQ;GAAe,SAD9B,gBAAgB;GACuB,EAAE,EAAE,CAAC;EAKxD,mBAAmB,EACjB,QAAQ,EACN,QAAQ,EACN,aAAa,EACX,MAAM;GACJ;IAAE,OAAO;IAAK,OAAO;IAAY;GACjC;IAAE,OAAO;IAAK,OAAO;IAAY;GACjC;IAAE,OAAO;IAAK,OAAO;IAAY;GACjC;IAAE,OAAO;IAAK,OAAO;IAAa;GAClC;IAAE,OAAO;IAAK,OAAO;IAAiB;GACvC,EACF,EACF,EACF,EACF;EACD,mBAAmB,EAAE,UAAU,UAAU;GACzC;;AAIN,MAAM,0BAA0B;CAC9B,MAAM,UAAU,gBAAgB;AAGhC,QACE,oBAAC;EACC,OAHS,QAAQ;GAAE,QADH,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,QAAQ,CAAC,EAAE,CAAC;GACrB;GAAS,EAAE,EAAE,CAAC,CAG1C,MAAM;EAClB,QAAQ,EACN,QAAQ,iBACT;GACD;;AAIN,MAAM,yBAAyB;CAC7B,MAAM,UAAU,gBAAgB;AAGhC,QACE,oBAAC;EACC,OAHS,QAAQ;GAAE,QADH,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,QAAQ,CAAC,EAAE,CAAC;GACrB;GAAS,EAAE,EAAE,CAAC,CAG1C,MAAM;EAClB,QAAQ;GACN,QAAQ;GACR,aAAa,EAAE,cAAc,WAAW;GACzC;GACD;;AAMN,MAAM,WAIA;CACJ;EACE,OAAO;EACP,aAAa;EACb,WAAW;EACZ;CACD;EACE,OAAO;EACP,aAAa;EACb,WAAW;EACZ;CACD;EACE,OAAO;EACP,aACE;EACF,WAAW;EACZ;CACD;EACE,OAAO;EACP,aAAa;EACb,WAAW;EACZ;CACD;EACE,OAAO;EACP,aAAa;EACb,WAAW;EACZ;CACD;EACE,OAAO;EACP,aACE;EACF,WAAW;EACZ;CACD;EACE,OAAO;EACP,aAAa;EACb,WAAW;EACZ;CACD;EACE,OAAO;EACP,aACE;EACF,WAAW;EACZ;CACD;EACE,OAAO;EACP,aACE;EACF,WAAW;EACZ;CACF;AAED,MAAM,iBAAiB,EAAE,OAAO,EAAE,CAAC;AAEnC,MAAM,0BAA0B;AAC9B,QACE,oBAAC;EAAS,OAAM;EAAgB,QAAQ;kBAEpC,oBAAC;GAAK,WAAU;GAAS,KAAI;aAC1B,SAAS,KAAK,YACb,qBAAC;IACC;IACA,UAAU;IACV;IAEA,WAAU;eAEV,qBAAC;KAAK;KAAS;KAAQ;KAAI;KAAe,GAAG;gBAC3C,oBAAC;MAAK,IAAI;gBAAM,QAAQ;OAAa,EACrC,oBAAC;MAAK,MAAK;MAAK,GAAE;gBACf,QAAQ;OACJ;MACF,EACP,oBAAC;KAAK;KAAQ;KAAQ,GAAG;eACvB,oBAAC,QAAQ,cAAY;MAChB;MAXF,QAAQ,MAYR,CACP;IACG;GAEA"}
|