@udhuong/admin-core 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/auth/AuthContext.d.ts +19 -0
- package/dist/client/auth/AuthContext.d.ts.map +1 -0
- package/dist/client/auth/AuthContext.js +115 -0
- package/dist/client/auth/AuthContext.js.map +1 -0
- package/dist/client/auth/PermissionGuard.d.ts +12 -0
- package/dist/client/auth/PermissionGuard.d.ts.map +1 -0
- package/dist/client/auth/PermissionGuard.js +23 -0
- package/dist/client/auth/PermissionGuard.js.map +1 -0
- package/dist/client/auth/ProtectedPage.d.ts +9 -0
- package/dist/client/auth/ProtectedPage.d.ts.map +1 -0
- package/dist/client/auth/ProtectedPage.js +57 -0
- package/dist/client/auth/ProtectedPage.js.map +1 -0
- package/dist/client/auth/ProtectedRoute.d.ts +4 -0
- package/dist/client/auth/ProtectedRoute.d.ts.map +1 -0
- package/dist/client/auth/ProtectedRoute.js +25 -0
- package/dist/client/auth/ProtectedRoute.js.map +1 -0
- package/dist/client/auth/api-client.d.ts +4 -0
- package/dist/client/auth/api-client.d.ts.map +1 -0
- package/dist/client/auth/api-client.js +83 -0
- package/dist/client/auth/api-client.js.map +1 -0
- package/dist/client/auth/auth.service.d.ts +7 -0
- package/dist/client/auth/auth.service.d.ts.map +1 -0
- package/dist/client/auth/auth.service.js +19 -0
- package/dist/client/auth/auth.service.js.map +1 -0
- package/dist/client/auth/index.d.ts +7 -0
- package/dist/client/auth/index.d.ts.map +1 -0
- package/dist/client/auth/index.js +7 -0
- package/dist/client/auth/index.js.map +1 -0
- package/dist/client/components/PageHeader.d.ts +19 -0
- package/dist/client/components/PageHeader.d.ts.map +1 -0
- package/dist/client/components/PageHeader.js +7 -0
- package/dist/client/components/PageHeader.js.map +1 -0
- package/dist/client/components/Providers.d.ts +9 -0
- package/dist/client/components/Providers.d.ts.map +1 -0
- package/dist/client/components/Providers.js +52 -0
- package/dist/client/components/Providers.js.map +1 -0
- package/dist/client/components/ThemeToggle.d.ts +6 -0
- package/dist/client/components/ThemeToggle.d.ts.map +1 -0
- package/dist/client/components/ThemeToggle.js +22 -0
- package/dist/client/components/ThemeToggle.js.map +1 -0
- package/dist/client/components/index.d.ts +4 -0
- package/dist/client/components/index.d.ts.map +1 -0
- package/dist/client/components/index.js +4 -0
- package/dist/client/components/index.js.map +1 -0
- package/dist/client/config/AdminConfigContext.d.ts +12 -0
- package/dist/client/config/AdminConfigContext.d.ts.map +1 -0
- package/dist/client/config/AdminConfigContext.js +29 -0
- package/dist/client/config/AdminConfigContext.js.map +1 -0
- package/dist/client/config/defaults.d.ts +4 -0
- package/dist/client/config/defaults.d.ts.map +1 -0
- package/dist/client/config/defaults.js +86 -0
- package/dist/client/config/defaults.js.map +1 -0
- package/dist/client/config/types.d.ts +61 -0
- package/dist/client/config/types.d.ts.map +1 -0
- package/dist/client/config/types.js +2 -0
- package/dist/client/config/types.js.map +1 -0
- package/dist/client/constants/api-routes.d.ts +104 -0
- package/dist/client/constants/api-routes.d.ts.map +1 -0
- package/dist/client/constants/api-routes.js +91 -0
- package/dist/client/constants/api-routes.js.map +1 -0
- package/dist/client/constants/permissions.d.ts +38 -0
- package/dist/client/constants/permissions.d.ts.map +1 -0
- package/dist/client/constants/permissions.js +37 -0
- package/dist/client/constants/permissions.js.map +1 -0
- package/dist/client/contexts/ThemeContext.d.ts +3 -0
- package/dist/client/contexts/ThemeContext.d.ts.map +1 -0
- package/dist/client/contexts/ThemeContext.js +8 -0
- package/dist/client/contexts/ThemeContext.js.map +1 -0
- package/dist/client/hooks/useToast.d.ts +14 -0
- package/dist/client/hooks/useToast.d.ts.map +1 -0
- package/dist/client/hooks/useToast.js +90 -0
- package/dist/client/hooks/useToast.js.map +1 -0
- package/dist/client/index.d.ts +25 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +33 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/layouts/AdminLayout.d.ts +4 -0
- package/dist/client/layouts/AdminLayout.d.ts.map +1 -0
- package/dist/client/layouts/AdminLayout.js +72 -0
- package/dist/client/layouts/AdminLayout.js.map +1 -0
- package/dist/client/layouts/Sidebar.d.ts +6 -0
- package/dist/client/layouts/Sidebar.d.ts.map +1 -0
- package/dist/client/layouts/Sidebar.js +86 -0
- package/dist/client/layouts/Sidebar.js.map +1 -0
- package/dist/client/layouts/index.d.ts +3 -0
- package/dist/client/layouts/index.d.ts.map +1 -0
- package/dist/client/layouts/index.js +3 -0
- package/dist/client/layouts/index.js.map +1 -0
- package/dist/client/lib/utils.d.ts +5 -0
- package/dist/client/lib/utils.d.ts.map +1 -0
- package/dist/client/lib/utils.js +22 -0
- package/dist/client/lib/utils.js.map +1 -0
- package/dist/client/pages/ChangePasswordPage.d.ts +2 -0
- package/dist/client/pages/ChangePasswordPage.d.ts.map +1 -0
- package/dist/client/pages/ChangePasswordPage.js +58 -0
- package/dist/client/pages/ChangePasswordPage.js.map +1 -0
- package/dist/client/pages/ForgotPasswordPage.d.ts +2 -0
- package/dist/client/pages/ForgotPasswordPage.d.ts.map +1 -0
- package/dist/client/pages/ForgotPasswordPage.js +30 -0
- package/dist/client/pages/ForgotPasswordPage.js.map +1 -0
- package/dist/client/pages/LoginPage.d.ts +2 -0
- package/dist/client/pages/LoginPage.d.ts.map +1 -0
- package/dist/client/pages/LoginPage.js +52 -0
- package/dist/client/pages/LoginPage.js.map +1 -0
- package/dist/client/pages/PermissionsPage.d.ts +2 -0
- package/dist/client/pages/PermissionsPage.d.ts.map +1 -0
- package/dist/client/pages/PermissionsPage.js +42 -0
- package/dist/client/pages/PermissionsPage.js.map +1 -0
- package/dist/client/pages/ProfilePage.d.ts +2 -0
- package/dist/client/pages/ProfilePage.d.ts.map +1 -0
- package/dist/client/pages/ProfilePage.js +107 -0
- package/dist/client/pages/ProfilePage.js.map +1 -0
- package/dist/client/pages/ResetPasswordPage.d.ts +2 -0
- package/dist/client/pages/ResetPasswordPage.d.ts.map +1 -0
- package/dist/client/pages/ResetPasswordPage.js +68 -0
- package/dist/client/pages/ResetPasswordPage.js.map +1 -0
- package/dist/client/pages/RolesPage.d.ts +2 -0
- package/dist/client/pages/RolesPage.d.ts.map +1 -0
- package/dist/client/pages/RolesPage.js +82 -0
- package/dist/client/pages/RolesPage.js.map +1 -0
- package/dist/client/pages/UnauthorizedPage.d.ts +2 -0
- package/dist/client/pages/UnauthorizedPage.d.ts.map +1 -0
- package/dist/client/pages/UnauthorizedPage.js +9 -0
- package/dist/client/pages/UnauthorizedPage.js.map +1 -0
- package/dist/client/pages/UserDetailPage.d.ts +6 -0
- package/dist/client/pages/UserDetailPage.d.ts.map +1 -0
- package/dist/client/pages/UserDetailPage.js +220 -0
- package/dist/client/pages/UserDetailPage.js.map +1 -0
- package/dist/client/pages/UserPreferencesPage.d.ts +2 -0
- package/dist/client/pages/UserPreferencesPage.d.ts.map +1 -0
- package/dist/client/pages/UserPreferencesPage.js +152 -0
- package/dist/client/pages/UserPreferencesPage.js.map +1 -0
- package/dist/client/pages/UsersPage.d.ts +2 -0
- package/dist/client/pages/UsersPage.d.ts.map +1 -0
- package/dist/client/pages/UsersPage.js +228 -0
- package/dist/client/pages/UsersPage.js.map +1 -0
- package/dist/client/pages/VerifyEmailPage.d.ts +2 -0
- package/dist/client/pages/VerifyEmailPage.d.ts.map +1 -0
- package/dist/client/pages/VerifyEmailPage.js +43 -0
- package/dist/client/pages/VerifyEmailPage.js.map +1 -0
- package/dist/client/pages/index.d.ts +13 -0
- package/dist/client/pages/index.d.ts.map +1 -0
- package/dist/client/pages/index.js +13 -0
- package/dist/client/pages/index.js.map +1 -0
- package/dist/client/pages/roles/RoleModal.d.ts +10 -0
- package/dist/client/pages/roles/RoleModal.d.ts.map +1 -0
- package/dist/client/pages/roles/RoleModal.js +123 -0
- package/dist/client/pages/roles/RoleModal.js.map +1 -0
- package/dist/client/pages/users/DangerZone.d.ts +10 -0
- package/dist/client/pages/users/DangerZone.d.ts.map +1 -0
- package/dist/client/pages/users/DangerZone.js +8 -0
- package/dist/client/pages/users/DangerZone.js.map +1 -0
- package/dist/client/pages/users/ProfileCard.d.ts +14 -0
- package/dist/client/pages/users/ProfileCard.d.ts.map +1 -0
- package/dist/client/pages/users/ProfileCard.js +8 -0
- package/dist/client/pages/users/ProfileCard.js.map +1 -0
- package/dist/client/pages/users/SecuritySection.d.ts +14 -0
- package/dist/client/pages/users/SecuritySection.d.ts.map +1 -0
- package/dist/client/pages/users/SecuritySection.js +16 -0
- package/dist/client/pages/users/SecuritySection.js.map +1 -0
- package/dist/client/pages/users/SessionsSection.d.ts +25 -0
- package/dist/client/pages/users/SessionsSection.d.ts.map +1 -0
- package/dist/client/pages/users/SessionsSection.js +93 -0
- package/dist/client/pages/users/SessionsSection.js.map +1 -0
- package/dist/client/pages/users/SocialAccountsSection.d.ts +29 -0
- package/dist/client/pages/users/SocialAccountsSection.d.ts.map +1 -0
- package/dist/client/pages/users/SocialAccountsSection.js +72 -0
- package/dist/client/pages/users/SocialAccountsSection.js.map +1 -0
- package/dist/client/pages/users/UserDetailModal.d.ts +24 -0
- package/dist/client/pages/users/UserDetailModal.d.ts.map +1 -0
- package/dist/client/pages/users/UserDetailModal.js +42 -0
- package/dist/client/pages/users/UserDetailModal.js.map +1 -0
- package/dist/client/pages/users/UserFilters.d.ts +14 -0
- package/dist/client/pages/users/UserFilters.d.ts.map +1 -0
- package/dist/client/pages/users/UserFilters.js +22 -0
- package/dist/client/pages/users/UserFilters.js.map +1 -0
- package/dist/client/pages/users/UserStats.d.ts +9 -0
- package/dist/client/pages/users/UserStats.d.ts.map +1 -0
- package/dist/client/pages/users/UserStats.js +37 -0
- package/dist/client/pages/users/UserStats.js.map +1 -0
- package/dist/client/pages/users/UserTable.d.ts +24 -0
- package/dist/client/pages/users/UserTable.d.ts.map +1 -0
- package/dist/client/pages/users/UserTable.js +39 -0
- package/dist/client/pages/users/UserTable.js.map +1 -0
- package/dist/client/pages/users/VerificationSection.d.ts +9 -0
- package/dist/client/pages/users/VerificationSection.d.ts.map +1 -0
- package/dist/client/pages/users/VerificationSection.js +8 -0
- package/dist/client/pages/users/VerificationSection.js.map +1 -0
- package/dist/client/types/auth.d.ts +29 -0
- package/dist/client/types/auth.d.ts.map +1 -0
- package/dist/client/types/auth.js +2 -0
- package/dist/client/types/auth.js.map +1 -0
- package/dist/client/types/rbac.d.ts +39 -0
- package/dist/client/types/rbac.d.ts.map +1 -0
- package/dist/client/types/rbac.js +5 -0
- package/dist/client/types/rbac.js.map +1 -0
- package/dist/client/types/status.d.ts +12 -0
- package/dist/client/types/status.d.ts.map +1 -0
- package/dist/client/types/status.js +14 -0
- package/dist/client/types/status.js.map +1 -0
- package/dist/client/ui/Badge.d.ts +14 -0
- package/dist/client/ui/Badge.d.ts.map +1 -0
- package/dist/client/ui/Badge.js +32 -0
- package/dist/client/ui/Badge.js.map +1 -0
- package/dist/client/ui/Button.d.ts +18 -0
- package/dist/client/ui/Button.d.ts.map +1 -0
- package/dist/client/ui/Button.js +33 -0
- package/dist/client/ui/Button.js.map +1 -0
- package/dist/client/ui/Checkbox.d.ts +14 -0
- package/dist/client/ui/Checkbox.d.ts.map +1 -0
- package/dist/client/ui/Checkbox.js +35 -0
- package/dist/client/ui/Checkbox.js.map +1 -0
- package/dist/client/ui/ConfirmModal.d.ts +14 -0
- package/dist/client/ui/ConfirmModal.d.ts.map +1 -0
- package/dist/client/ui/ConfirmModal.js +43 -0
- package/dist/client/ui/ConfirmModal.js.map +1 -0
- package/dist/client/ui/DataTable.d.ts +69 -0
- package/dist/client/ui/DataTable.d.ts.map +1 -0
- package/dist/client/ui/DataTable.js +133 -0
- package/dist/client/ui/DataTable.js.map +1 -0
- package/dist/client/ui/Dropdown.d.ts +11 -0
- package/dist/client/ui/Dropdown.d.ts.map +1 -0
- package/dist/client/ui/Dropdown.js +65 -0
- package/dist/client/ui/Dropdown.js.map +1 -0
- package/dist/client/ui/FileInput.d.ts +16 -0
- package/dist/client/ui/FileInput.d.ts.map +1 -0
- package/dist/client/ui/FileInput.js +45 -0
- package/dist/client/ui/FileInput.js.map +1 -0
- package/dist/client/ui/Input.d.ts +16 -0
- package/dist/client/ui/Input.d.ts.map +1 -0
- package/dist/client/ui/Input.js +33 -0
- package/dist/client/ui/Input.js.map +1 -0
- package/dist/client/ui/LoadingSpinner.d.ts +7 -0
- package/dist/client/ui/LoadingSpinner.d.ts.map +1 -0
- package/dist/client/ui/LoadingSpinner.js +12 -0
- package/dist/client/ui/LoadingSpinner.js.map +1 -0
- package/dist/client/ui/Modal.d.ts +14 -0
- package/dist/client/ui/Modal.d.ts.map +1 -0
- package/dist/client/ui/Modal.js +46 -0
- package/dist/client/ui/Modal.js.map +1 -0
- package/dist/client/ui/Pagination.d.ts +14 -0
- package/dist/client/ui/Pagination.d.ts.map +1 -0
- package/dist/client/ui/Pagination.js +50 -0
- package/dist/client/ui/Pagination.js.map +1 -0
- package/dist/client/ui/Radio.d.ts +34 -0
- package/dist/client/ui/Radio.d.ts.map +1 -0
- package/dist/client/ui/Radio.js +44 -0
- package/dist/client/ui/Radio.js.map +1 -0
- package/dist/client/ui/Range.d.ts +17 -0
- package/dist/client/ui/Range.d.ts.map +1 -0
- package/dist/client/ui/Range.js +28 -0
- package/dist/client/ui/Range.js.map +1 -0
- package/dist/client/ui/Rating.d.ts +18 -0
- package/dist/client/ui/Rating.d.ts.map +1 -0
- package/dist/client/ui/Rating.js +64 -0
- package/dist/client/ui/Rating.js.map +1 -0
- package/dist/client/ui/Select.d.ts +20 -0
- package/dist/client/ui/Select.d.ts.map +1 -0
- package/dist/client/ui/Select.js +30 -0
- package/dist/client/ui/Select.js.map +1 -0
- package/dist/client/ui/Textarea.d.ts +14 -0
- package/dist/client/ui/Textarea.d.ts.map +1 -0
- package/dist/client/ui/Textarea.js +20 -0
- package/dist/client/ui/Textarea.js.map +1 -0
- package/dist/client/ui/Toggle.d.ts +13 -0
- package/dist/client/ui/Toggle.d.ts.map +1 -0
- package/dist/client/ui/Toggle.js +29 -0
- package/dist/client/ui/Toggle.js.map +1 -0
- package/dist/client/ui/index.d.ts +31 -0
- package/dist/client/ui/index.d.ts.map +1 -0
- package/dist/client/ui/index.js +35 -0
- package/dist/client/ui/index.js.map +1 -0
- package/dist/tailwind.preset.d.ts +10 -0
- package/dist/tailwind.preset.js +12 -0
- package/package.json +46 -17
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeToggle.js","sourceRoot":"","sources":["../../../src/client/components/ThemeToggle.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAMjC,MAAM,iBAAiB,GAAG,MAAM,CAAA;AAEhC,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAE,SAAS,EAAoB;IACjE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC7C,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAA;IAEtC,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC,IAAI,CAAC,CAAA;IAClB,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CACL,cAAK,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,GAAI,CAC/C,CAAA;IACH,CAAC;IAED,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,QAAQ,CAAC,KAAK,KAAK,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAA;IACrE,CAAC,CAAA;IAED,OAAO,CACL,iBAAO,SAAS,EAAC,2CAA2C,aAC1D,gBACE,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,KAAK,KAAK,iBAAiB,EACpC,QAAQ,EAAE,WAAW,gBACV,cAAc,GACzB,EACF,KAAC,GAAG,IAAC,SAAS,EAAC,kBAAkB,GAAG,EACpC,KAAC,IAAI,IAAC,SAAS,EAAC,iBAAiB,GAAG,IAC9B,CACT,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import type { AdminConfig, CoreRoutes } from './types';
|
|
3
|
+
interface AdminConfigContextValue extends AdminConfig {
|
|
4
|
+
resolvedRoutes: CoreRoutes;
|
|
5
|
+
}
|
|
6
|
+
export declare function AdminConfigProvider({ config, children, }: {
|
|
7
|
+
config: AdminConfig;
|
|
8
|
+
children: ReactNode;
|
|
9
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export declare function useAdminConfig(): AdminConfigContextValue;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=AdminConfigContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdminConfigContext.d.ts","sourceRoot":"","sources":["../../../src/client/config/AdminConfigContext.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA6B,SAAS,EAAE,MAAM,OAAO,CAAA;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAGtD,UAAU,uBAAwB,SAAQ,WAAW;IACnD,cAAc,EAAE,UAAU,CAAA;CAC3B;AAID,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,QAAQ,GACT,EAAE;IACD,MAAM,EAAE,WAAW,CAAA;IACnB,QAAQ,EAAE,SAAS,CAAA;CACpB,2CAqBA;AAED,wBAAgB,cAAc,IAAI,uBAAuB,CAIxD"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { createContext, useContext } from 'react';
|
|
4
|
+
import { DEFAULT_CORE_ROUTES } from './defaults';
|
|
5
|
+
const AdminConfigContext = createContext(undefined);
|
|
6
|
+
export function AdminConfigProvider({ config, children, }) {
|
|
7
|
+
const mergedConfig = {
|
|
8
|
+
tokenStorageKey: 'admin_token',
|
|
9
|
+
...config,
|
|
10
|
+
resolvedRoutes: { ...DEFAULT_CORE_ROUTES, ...config.routes },
|
|
11
|
+
features: {
|
|
12
|
+
users: true,
|
|
13
|
+
roles: true,
|
|
14
|
+
permissions: true,
|
|
15
|
+
settings: true,
|
|
16
|
+
profile: true,
|
|
17
|
+
userSettings: true,
|
|
18
|
+
...config.features,
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
return (_jsx(AdminConfigContext.Provider, { value: mergedConfig, children: children }));
|
|
22
|
+
}
|
|
23
|
+
export function useAdminConfig() {
|
|
24
|
+
const ctx = useContext(AdminConfigContext);
|
|
25
|
+
if (!ctx)
|
|
26
|
+
throw new Error('useAdminConfig must be used within AdminConfigProvider');
|
|
27
|
+
return ctx;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=AdminConfigContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdminConfigContext.js","sourceRoot":"","sources":["../../../src/client/config/AdminConfigContext.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,aAAa,EAAE,UAAU,EAAa,MAAM,OAAO,CAAA;AAE5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAMhD,MAAM,kBAAkB,GAAG,aAAa,CAAsC,SAAS,CAAC,CAAA;AAExF,MAAM,UAAU,mBAAmB,CAAC,EAClC,MAAM,EACN,QAAQ,GAIT;IACC,MAAM,YAAY,GAA4B;QAC5C,eAAe,EAAE,aAAa;QAC9B,GAAG,MAAM;QACT,cAAc,EAAE,EAAE,GAAG,mBAAmB,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE;QAC5D,QAAQ,EAAE;YACR,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,IAAI;YACX,WAAW,EAAE,IAAI;YACjB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,IAAI;YAClB,GAAG,MAAM,CAAC,QAAQ;SACnB;KACF,CAAA;IAED,OAAO,CACL,KAAC,kBAAkB,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,YAC7C,QAAQ,GACmB,CAC/B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,MAAM,GAAG,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAA;IAC1C,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAA;IACnF,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { CoreRoutes, MenuSection, AdminConfig } from './types';
|
|
2
|
+
export declare const DEFAULT_CORE_ROUTES: CoreRoutes;
|
|
3
|
+
export declare function getDefaultMenuSections(routes: CoreRoutes, features?: AdminConfig['features']): MenuSection[];
|
|
4
|
+
//# sourceMappingURL=defaults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../../src/client/config/defaults.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAEnE,eAAO,MAAM,mBAAmB,EAAE,UAgBjC,CAAA;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,UAAU,EAClB,QAAQ,GAAE,WAAW,CAAC,UAAU,CAAM,GACrC,WAAW,EAAE,CA6Ef"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { LayoutDashboard, Users, Shield, Settings } from 'lucide-react';
|
|
2
|
+
import { createElement } from 'react';
|
|
3
|
+
export const DEFAULT_CORE_ROUTES = {
|
|
4
|
+
LOGIN: '/login',
|
|
5
|
+
DASHBOARD: '/dashboard',
|
|
6
|
+
CHANGE_PASSWORD: '/change-password',
|
|
7
|
+
FORGOT_PASSWORD: '/forgot-password',
|
|
8
|
+
RESET_PASSWORD: '/reset-password',
|
|
9
|
+
VERIFY_EMAIL: '/verify-email',
|
|
10
|
+
PROFILE: '/profile',
|
|
11
|
+
USER_SETTINGS: '/user-settings',
|
|
12
|
+
USERS_LIST: '/users',
|
|
13
|
+
USERS_NEW: '/users/create',
|
|
14
|
+
USERS_VIEW: (id) => `/users/${id}`,
|
|
15
|
+
ROLES_LIST: '/roles',
|
|
16
|
+
PERMISSIONS_LIST: '/permissions',
|
|
17
|
+
SETTINGS: '/settings',
|
|
18
|
+
UNAUTHORIZED: '/unauthorized',
|
|
19
|
+
};
|
|
20
|
+
export function getDefaultMenuSections(routes, features = {}) {
|
|
21
|
+
const { users = true, roles = true, permissions = true, settings = true, } = features;
|
|
22
|
+
const sections = [
|
|
23
|
+
{
|
|
24
|
+
items: [
|
|
25
|
+
{
|
|
26
|
+
label: 'Dashboard',
|
|
27
|
+
href: routes.DASHBOARD,
|
|
28
|
+
icon: createElement(LayoutDashboard, { className: 'w-5 h-5' }),
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
|
+
},
|
|
32
|
+
];
|
|
33
|
+
const systemItems = [];
|
|
34
|
+
if (users) {
|
|
35
|
+
systemItems.push({
|
|
36
|
+
label: 'Users',
|
|
37
|
+
icon: createElement(Users, { className: 'w-5 h-5' }),
|
|
38
|
+
children: [
|
|
39
|
+
{
|
|
40
|
+
label: 'All Users',
|
|
41
|
+
href: routes.USERS_LIST,
|
|
42
|
+
icon: createElement(Users, { className: 'w-4 h-4' }),
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
label: 'Add New',
|
|
46
|
+
href: routes.USERS_NEW,
|
|
47
|
+
icon: createElement(Users, { className: 'w-4 h-4' }),
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
if (roles || permissions) {
|
|
53
|
+
const children = [];
|
|
54
|
+
if (roles) {
|
|
55
|
+
children.push({
|
|
56
|
+
label: 'Roles',
|
|
57
|
+
href: routes.ROLES_LIST,
|
|
58
|
+
icon: createElement(Shield, { className: 'w-4 h-4' }),
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
if (permissions) {
|
|
62
|
+
children.push({
|
|
63
|
+
label: 'Permissions',
|
|
64
|
+
href: routes.PERMISSIONS_LIST,
|
|
65
|
+
icon: createElement(Shield, { className: 'w-4 h-4' }),
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
systemItems.push({
|
|
69
|
+
label: 'Authorization',
|
|
70
|
+
icon: createElement(Shield, { className: 'w-5 h-5' }),
|
|
71
|
+
children,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
if (settings) {
|
|
75
|
+
systemItems.push({
|
|
76
|
+
label: 'Settings',
|
|
77
|
+
href: routes.SETTINGS,
|
|
78
|
+
icon: createElement(Settings, { className: 'w-5 h-5' }),
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
if (systemItems.length > 0) {
|
|
82
|
+
sections.push({ label: 'System', items: systemItems });
|
|
83
|
+
}
|
|
84
|
+
return sections;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../src/client/config/defaults.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export interface SubMenuItem {
|
|
3
|
+
label: string;
|
|
4
|
+
href: string;
|
|
5
|
+
icon?: ReactNode;
|
|
6
|
+
}
|
|
7
|
+
export interface MenuItem {
|
|
8
|
+
label: string;
|
|
9
|
+
href?: string;
|
|
10
|
+
icon: ReactNode;
|
|
11
|
+
children?: SubMenuItem[];
|
|
12
|
+
permission?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface MenuSection {
|
|
15
|
+
label?: string;
|
|
16
|
+
items: MenuItem[];
|
|
17
|
+
}
|
|
18
|
+
export interface CoreRoutes {
|
|
19
|
+
LOGIN: string;
|
|
20
|
+
DASHBOARD: string;
|
|
21
|
+
CHANGE_PASSWORD: string;
|
|
22
|
+
FORGOT_PASSWORD: string;
|
|
23
|
+
RESET_PASSWORD: string;
|
|
24
|
+
VERIFY_EMAIL: string;
|
|
25
|
+
PROFILE: string;
|
|
26
|
+
USER_SETTINGS: string;
|
|
27
|
+
USERS_LIST: string;
|
|
28
|
+
USERS_NEW: string;
|
|
29
|
+
USERS_VIEW: (id: string | number) => string;
|
|
30
|
+
ROLES_LIST: string;
|
|
31
|
+
PERMISSIONS_LIST: string;
|
|
32
|
+
SETTINGS: string;
|
|
33
|
+
UNAUTHORIZED: string;
|
|
34
|
+
}
|
|
35
|
+
export interface AdminConfig {
|
|
36
|
+
appName: string;
|
|
37
|
+
appLogo?: ReactNode;
|
|
38
|
+
appLogoText?: string;
|
|
39
|
+
homeUrl?: string;
|
|
40
|
+
apiUrl: string;
|
|
41
|
+
tokenStorageKey?: string;
|
|
42
|
+
menuSections?: MenuSection[];
|
|
43
|
+
extraMenuSections?: MenuSection[];
|
|
44
|
+
prependMenuSections?: MenuSection[];
|
|
45
|
+
routes?: Partial<CoreRoutes>;
|
|
46
|
+
features?: {
|
|
47
|
+
users?: boolean;
|
|
48
|
+
roles?: boolean;
|
|
49
|
+
permissions?: boolean;
|
|
50
|
+
settings?: boolean;
|
|
51
|
+
profile?: boolean;
|
|
52
|
+
userSettings?: boolean;
|
|
53
|
+
};
|
|
54
|
+
headerExtra?: ReactNode;
|
|
55
|
+
sidebarFooter?: ReactNode;
|
|
56
|
+
renderAvatarPicker?: (props: {
|
|
57
|
+
currentAvatar: string | null;
|
|
58
|
+
onSelect: (url: string) => void;
|
|
59
|
+
}) => ReactNode;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/client/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,SAAS,CAAA;IACf,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,QAAQ,EAAE,CAAA;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,MAAM,CAAA;IACvB,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,CAAA;IAC3C,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,MAAM,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;IAC5B,iBAAiB,CAAC,EAAE,WAAW,EAAE,CAAA;IACjC,mBAAmB,CAAC,EAAE,WAAW,EAAE,CAAA;IAEnC,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;IAE5B,QAAQ,CAAC,EAAE;QACT,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,WAAW,CAAC,EAAE,OAAO,CAAA;QACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,YAAY,CAAC,EAAE,OAAO,CAAA;KACvB,CAAA;IAED,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB,aAAa,CAAC,EAAE,SAAS,CAAA;IAEzB,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE;QAC3B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;QAC5B,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;KAChC,KAAK,SAAS,CAAA;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/client/config/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
export declare const CORE_API_ROUTES: {
|
|
2
|
+
readonly AUTH: {
|
|
3
|
+
readonly LOGIN: "/auth/login";
|
|
4
|
+
readonly REGISTER: "/auth/register";
|
|
5
|
+
readonly REFRESH: "/auth/refresh";
|
|
6
|
+
readonly TOKEN: "/auth/token";
|
|
7
|
+
readonly LOGOUT: "/auth/logout";
|
|
8
|
+
readonly PROFILE: "/auth/profile";
|
|
9
|
+
readonly UPDATE_PROFILE: "/auth/profile";
|
|
10
|
+
readonly CHANGE_PASSWORD: "/auth/change-password";
|
|
11
|
+
readonly PREFERENCES: "/auth/preferences";
|
|
12
|
+
readonly PREFERENCES_RESET: "/auth/preferences/reset";
|
|
13
|
+
};
|
|
14
|
+
readonly PASSWORD: {
|
|
15
|
+
readonly FORGOT: "/password/forgot";
|
|
16
|
+
readonly RESET: "/password/reset";
|
|
17
|
+
};
|
|
18
|
+
readonly EMAIL: {
|
|
19
|
+
readonly VERIFY: "/email/verify";
|
|
20
|
+
readonly RESEND_VERIFICATION: "/email/resend-verification";
|
|
21
|
+
};
|
|
22
|
+
readonly TWO_FACTOR: {
|
|
23
|
+
readonly ENABLE: "/two-factor/enable";
|
|
24
|
+
readonly VERIFY_SETUP: "/two-factor/verify-setup";
|
|
25
|
+
readonly DISABLE: "/two-factor";
|
|
26
|
+
};
|
|
27
|
+
readonly SESSIONS: {
|
|
28
|
+
readonly BASE: "/sessions";
|
|
29
|
+
readonly BY_ID: (id: number | string) => string;
|
|
30
|
+
readonly REVOKE_ALL: "/sessions/revoke-all";
|
|
31
|
+
};
|
|
32
|
+
readonly SOCIAL_AUTH: {
|
|
33
|
+
readonly LOGIN: "/social-auth/login";
|
|
34
|
+
};
|
|
35
|
+
readonly ADMIN_USERS: {
|
|
36
|
+
readonly BASE: "/admin/users";
|
|
37
|
+
readonly STATS: "/admin/users/stats";
|
|
38
|
+
readonly BY_ID: (id: number | string) => string;
|
|
39
|
+
readonly RESET_PASSWORD: (id: number | string) => string;
|
|
40
|
+
readonly GENERATE_PASSWORD: (id: number | string) => string;
|
|
41
|
+
readonly VERIFY_EMAIL: (id: number | string) => string;
|
|
42
|
+
readonly RESEND_VERIFICATION: (id: number | string) => string;
|
|
43
|
+
readonly UPDATE_STATUS: (id: number | string) => string;
|
|
44
|
+
readonly DISABLE_2FA: (id: number | string) => string;
|
|
45
|
+
readonly RESTORE: (id: number | string) => string;
|
|
46
|
+
readonly SESSIONS: (id: number | string) => string;
|
|
47
|
+
readonly REVOKE_SESSION: (userId: number | string, sessionId: number | string) => string;
|
|
48
|
+
readonly REVOKE_ALL_SESSIONS: (id: number | string) => string;
|
|
49
|
+
readonly SOCIAL_ACCOUNTS: (id: number | string) => string;
|
|
50
|
+
readonly UNLINK_SOCIAL_ACCOUNT: (userId: number | string, accountId: number | string) => string;
|
|
51
|
+
};
|
|
52
|
+
readonly ROLES: {
|
|
53
|
+
readonly BASE: "/admin/roles";
|
|
54
|
+
readonly BY_ID: (id: number | string) => string;
|
|
55
|
+
};
|
|
56
|
+
readonly PERMISSIONS: {
|
|
57
|
+
readonly BASE: "/admin/permissions";
|
|
58
|
+
};
|
|
59
|
+
readonly SETTINGS: {
|
|
60
|
+
readonly BASE: "/settings";
|
|
61
|
+
readonly PUBLIC: "/settings/public";
|
|
62
|
+
readonly BY_KEY: (key: string) => string;
|
|
63
|
+
readonly BY_GROUP: (group: string) => string;
|
|
64
|
+
readonly MAP: "/settings/map";
|
|
65
|
+
readonly BULK_UPDATE: "/settings/bulk/update";
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* @deprecated Dùng CORE_API_ROUTES thay thế — đã gộp tất cả routes vào 1 object duy nhất.
|
|
70
|
+
*/
|
|
71
|
+
export declare const CORE_ADMIN_API_ROUTES: {
|
|
72
|
+
readonly AUTH: {
|
|
73
|
+
readonly LOGIN: "/auth/login";
|
|
74
|
+
readonly REGISTER: "/auth/register";
|
|
75
|
+
readonly REFRESH: "/auth/refresh";
|
|
76
|
+
readonly TOKEN: "/auth/token";
|
|
77
|
+
readonly LOGOUT: "/auth/logout";
|
|
78
|
+
readonly PROFILE: "/auth/profile";
|
|
79
|
+
readonly UPDATE_PROFILE: "/auth/profile";
|
|
80
|
+
readonly CHANGE_PASSWORD: "/auth/change-password";
|
|
81
|
+
readonly PREFERENCES: "/auth/preferences";
|
|
82
|
+
readonly PREFERENCES_RESET: "/auth/preferences/reset";
|
|
83
|
+
};
|
|
84
|
+
readonly USERS: {
|
|
85
|
+
readonly BASE: "/admin/users";
|
|
86
|
+
readonly BY_ID: (id: number | string) => string;
|
|
87
|
+
};
|
|
88
|
+
readonly ROLES: {
|
|
89
|
+
readonly BASE: "/admin/roles";
|
|
90
|
+
readonly BY_ID: (id: number | string) => string;
|
|
91
|
+
};
|
|
92
|
+
readonly PERMISSIONS: {
|
|
93
|
+
readonly BASE: "/admin/permissions";
|
|
94
|
+
};
|
|
95
|
+
readonly SETTINGS: {
|
|
96
|
+
readonly BASE: "/settings";
|
|
97
|
+
readonly PUBLIC: "/settings/public";
|
|
98
|
+
readonly BY_KEY: (key: string) => string;
|
|
99
|
+
readonly BY_GROUP: (group: string) => string;
|
|
100
|
+
readonly MAP: "/settings/map";
|
|
101
|
+
readonly BULK_UPDATE: "/settings/bulk/update";
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
//# sourceMappingURL=api-routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-routes.d.ts","sourceRoot":"","sources":["../../../src/client/constants/api-routes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAqCZ,MAAM,GAAG,MAAM;;;;;;;;;6BAaf,MAAM,GAAG,MAAM;sCACN,MAAM,GAAG,MAAM;yCACZ,MAAM,GAAG,MAAM;oCACpB,MAAM,GAAG,MAAM;2CACR,MAAM,GAAG,MAAM;qCACrB,MAAM,GAAG,MAAM;mCACjB,MAAM,GAAG,MAAM;+BACnB,MAAM,GAAG,MAAM;gCACd,MAAM,GAAG,MAAM;0CACL,MAAM,GAAG,MAAM,aAAa,MAAM,GAAG,MAAM;2CAE1C,MAAM,GAAG,MAAM;uCACnB,MAAM,GAAG,MAAM;iDACL,MAAM,GAAG,MAAM,aAAa,MAAM,GAAG,MAAM;;;;6BAO/D,MAAM,GAAG,MAAM;;;;;;;;+BAYb,MAAM;mCACF,MAAM;;;;CAIlB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;6BA1ClB,MAAM,GAAG,MAAM;;;;6BAoBf,MAAM,GAAG,MAAM;;;;;;;;+BAYb,MAAM;mCACF,MAAM;;;;CAkBlB,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
export const CORE_API_ROUTES = {
|
|
2
|
+
// ─── AuthController: /auth ───────────────────────────────────────────────
|
|
3
|
+
AUTH: {
|
|
4
|
+
LOGIN: '/auth/login',
|
|
5
|
+
REGISTER: '/auth/register',
|
|
6
|
+
REFRESH: '/auth/refresh',
|
|
7
|
+
TOKEN: '/auth/token',
|
|
8
|
+
LOGOUT: '/auth/logout',
|
|
9
|
+
PROFILE: '/auth/profile',
|
|
10
|
+
UPDATE_PROFILE: '/auth/profile',
|
|
11
|
+
CHANGE_PASSWORD: '/auth/change-password',
|
|
12
|
+
PREFERENCES: '/auth/preferences',
|
|
13
|
+
PREFERENCES_RESET: '/auth/preferences/reset',
|
|
14
|
+
},
|
|
15
|
+
// ─── PasswordController: /password ───────────────────────────────────────
|
|
16
|
+
PASSWORD: {
|
|
17
|
+
FORGOT: '/password/forgot',
|
|
18
|
+
RESET: '/password/reset',
|
|
19
|
+
},
|
|
20
|
+
// ─── EmailController: /email ─────────────────────────────────────────────
|
|
21
|
+
EMAIL: {
|
|
22
|
+
VERIFY: '/email/verify',
|
|
23
|
+
RESEND_VERIFICATION: '/email/resend-verification',
|
|
24
|
+
},
|
|
25
|
+
// ─── TwoFactorController: /two-factor ────────────────────────────────────
|
|
26
|
+
TWO_FACTOR: {
|
|
27
|
+
ENABLE: '/two-factor/enable',
|
|
28
|
+
VERIFY_SETUP: '/two-factor/verify-setup',
|
|
29
|
+
DISABLE: '/two-factor',
|
|
30
|
+
},
|
|
31
|
+
// ─── SessionController: /sessions ─���──────────────────────────────────────
|
|
32
|
+
SESSIONS: {
|
|
33
|
+
BASE: '/sessions',
|
|
34
|
+
BY_ID: (id) => `/sessions/${id}`,
|
|
35
|
+
REVOKE_ALL: '/sessions/revoke-all',
|
|
36
|
+
},
|
|
37
|
+
// ─── SocialAuthController: /social-auth ──────────────────────────────────
|
|
38
|
+
SOCIAL_AUTH: {
|
|
39
|
+
LOGIN: '/social-auth/login',
|
|
40
|
+
},
|
|
41
|
+
// ─── AdminUserController: /admin/users ───────────────────────────────────
|
|
42
|
+
ADMIN_USERS: {
|
|
43
|
+
BASE: '/admin/users',
|
|
44
|
+
STATS: '/admin/users/stats',
|
|
45
|
+
BY_ID: (id) => `/admin/users/${id}`,
|
|
46
|
+
RESET_PASSWORD: (id) => `/admin/users/${id}/reset-password`,
|
|
47
|
+
GENERATE_PASSWORD: (id) => `/admin/users/${id}/generate-password`,
|
|
48
|
+
VERIFY_EMAIL: (id) => `/admin/users/${id}/verify-email`,
|
|
49
|
+
RESEND_VERIFICATION: (id) => `/admin/users/${id}/resend-verification`,
|
|
50
|
+
UPDATE_STATUS: (id) => `/admin/users/${id}/status`,
|
|
51
|
+
DISABLE_2FA: (id) => `/admin/users/${id}/disable-2fa`,
|
|
52
|
+
RESTORE: (id) => `/admin/users/${id}/restore`,
|
|
53
|
+
SESSIONS: (id) => `/admin/users/${id}/sessions`,
|
|
54
|
+
REVOKE_SESSION: (userId, sessionId) => `/admin/users/${userId}/sessions/${sessionId}`,
|
|
55
|
+
REVOKE_ALL_SESSIONS: (id) => `/admin/users/${id}/sessions/revoke-all`,
|
|
56
|
+
SOCIAL_ACCOUNTS: (id) => `/admin/users/${id}/social-accounts`,
|
|
57
|
+
UNLINK_SOCIAL_ACCOUNT: (userId, accountId) => `/admin/users/${userId}/social-accounts/${accountId}`,
|
|
58
|
+
},
|
|
59
|
+
// ─── RoleController: /admin/roles ────────────────────────────────────────
|
|
60
|
+
ROLES: {
|
|
61
|
+
BASE: '/admin/roles',
|
|
62
|
+
BY_ID: (id) => `/admin/roles/${id}`,
|
|
63
|
+
},
|
|
64
|
+
// ─── PermissionController: /admin/permissions ────────────────────────────
|
|
65
|
+
PERMISSIONS: {
|
|
66
|
+
BASE: '/admin/permissions',
|
|
67
|
+
},
|
|
68
|
+
// ─── Settings (app-level, không thuộc admin-core-api) ────────────────────
|
|
69
|
+
SETTINGS: {
|
|
70
|
+
BASE: '/settings',
|
|
71
|
+
PUBLIC: '/settings/public',
|
|
72
|
+
BY_KEY: (key) => `/settings/${key}`,
|
|
73
|
+
BY_GROUP: (group) => `/settings/group/${group}`,
|
|
74
|
+
MAP: '/settings/map',
|
|
75
|
+
BULK_UPDATE: '/settings/bulk/update',
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* @deprecated Dùng CORE_API_ROUTES thay thế — đã gộp tất cả routes vào 1 object duy nhất.
|
|
80
|
+
*/
|
|
81
|
+
export const CORE_ADMIN_API_ROUTES = {
|
|
82
|
+
AUTH: CORE_API_ROUTES.AUTH,
|
|
83
|
+
USERS: {
|
|
84
|
+
BASE: CORE_API_ROUTES.ADMIN_USERS.BASE,
|
|
85
|
+
BY_ID: CORE_API_ROUTES.ADMIN_USERS.BY_ID,
|
|
86
|
+
},
|
|
87
|
+
ROLES: CORE_API_ROUTES.ROLES,
|
|
88
|
+
PERMISSIONS: CORE_API_ROUTES.PERMISSIONS,
|
|
89
|
+
SETTINGS: CORE_API_ROUTES.SETTINGS,
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=api-routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-routes.js","sourceRoot":"","sources":["../../../src/client/constants/api-routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core permissions strings — dùng cho client-side type checking trong
|
|
3
|
+
* <ProtectedPage permission={PERMISSIONS.ROLE_READ}>, guards, UI labels.
|
|
4
|
+
*
|
|
5
|
+
* Giá trị phải khớp với server-side `CORE_PERMISSIONS` trong
|
|
6
|
+
* `src/server/shared/permissions.ts`. Nếu thêm core permission, update cả 2 chỗ.
|
|
7
|
+
*
|
|
8
|
+
* Consumer có thể tham chiếu extra permissions bằng chuỗi thô (vd. 'blog.publish').
|
|
9
|
+
*/
|
|
10
|
+
export declare const PERMISSIONS: {
|
|
11
|
+
readonly USER_READ: "user.read";
|
|
12
|
+
readonly USER_CREATE: "user.create";
|
|
13
|
+
readonly USER_UPDATE: "user.update";
|
|
14
|
+
readonly USER_DELETE: "user.delete";
|
|
15
|
+
readonly ROLE_READ: "role.read";
|
|
16
|
+
readonly ROLE_CREATE: "role.create";
|
|
17
|
+
readonly ROLE_UPDATE: "role.update";
|
|
18
|
+
readonly ROLE_DELETE: "role.delete";
|
|
19
|
+
readonly ADMIN_DASHBOARD: "admin.dashboard";
|
|
20
|
+
readonly ADMIN_SETTINGS: "admin.settings";
|
|
21
|
+
readonly ADMIN_ANALYTICS: "admin.analytics";
|
|
22
|
+
};
|
|
23
|
+
export declare const ROLES: {
|
|
24
|
+
readonly SUPER_ADMIN: "super-admin";
|
|
25
|
+
readonly ADMIN: "admin";
|
|
26
|
+
readonly VIEWER: "viewer";
|
|
27
|
+
};
|
|
28
|
+
export type Permission = typeof PERMISSIONS[keyof typeof PERMISSIONS];
|
|
29
|
+
export type RoleKey = typeof ROLES[keyof typeof ROLES];
|
|
30
|
+
export declare const checkPermission: (userPermissions: string[], permission: string) => boolean;
|
|
31
|
+
export declare const checkAnyPermission: (userPermissions: string[], permissions: string[]) => boolean;
|
|
32
|
+
export declare const checkAllPermissions: (userPermissions: string[], permissions: string[]) => boolean;
|
|
33
|
+
export declare const ROLE_PERMISSIONS: {
|
|
34
|
+
readonly SUPER_ADMIN: ("user.read" | "user.create" | "user.update" | "user.delete" | "role.read" | "role.create" | "role.update" | "role.delete" | "admin.dashboard" | "admin.settings" | "admin.analytics")[];
|
|
35
|
+
readonly ADMIN: ("user.read" | "user.create" | "user.update" | "user.delete" | "role.read" | "role.create" | "role.update" | "role.delete" | "admin.dashboard" | "admin.settings" | "admin.analytics")[];
|
|
36
|
+
readonly VIEWER: readonly ["user.read", "role.read", "admin.dashboard"];
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../../src/client/constants/permissions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;;CAYd,CAAA;AAEV,eAAO,MAAM,KAAK;;;;CAIR,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,OAAO,WAAW,CAAC,MAAM,OAAO,WAAW,CAAC,CAAA;AACrE,MAAM,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC,CAAA;AAEtD,eAAO,MAAM,eAAe,GAAI,iBAAiB,MAAM,EAAE,EAAE,YAAY,MAAM,KAAG,OAC1C,CAAA;AAEtC,eAAO,MAAM,kBAAkB,GAAI,iBAAiB,MAAM,EAAE,EAAE,aAAa,MAAM,EAAE,KAAG,OAChC,CAAA;AAEtD,eAAO,MAAM,mBAAmB,GAAI,iBAAiB,MAAM,EAAE,EAAE,aAAa,MAAM,EAAE,KAAG,OAChC,CAAA;AAGvD,eAAO,MAAM,gBAAgB;;;;CAInB,CAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core permissions strings — dùng cho client-side type checking trong
|
|
3
|
+
* <ProtectedPage permission={PERMISSIONS.ROLE_READ}>, guards, UI labels.
|
|
4
|
+
*
|
|
5
|
+
* Giá trị phải khớp với server-side `CORE_PERMISSIONS` trong
|
|
6
|
+
* `src/server/shared/permissions.ts`. Nếu thêm core permission, update cả 2 chỗ.
|
|
7
|
+
*
|
|
8
|
+
* Consumer có thể tham chiếu extra permissions bằng chuỗi thô (vd. 'blog.publish').
|
|
9
|
+
*/
|
|
10
|
+
export const PERMISSIONS = {
|
|
11
|
+
USER_READ: 'user.read',
|
|
12
|
+
USER_CREATE: 'user.create',
|
|
13
|
+
USER_UPDATE: 'user.update',
|
|
14
|
+
USER_DELETE: 'user.delete',
|
|
15
|
+
ROLE_READ: 'role.read',
|
|
16
|
+
ROLE_CREATE: 'role.create',
|
|
17
|
+
ROLE_UPDATE: 'role.update',
|
|
18
|
+
ROLE_DELETE: 'role.delete',
|
|
19
|
+
ADMIN_DASHBOARD: 'admin.dashboard',
|
|
20
|
+
ADMIN_SETTINGS: 'admin.settings',
|
|
21
|
+
ADMIN_ANALYTICS: 'admin.analytics',
|
|
22
|
+
};
|
|
23
|
+
export const ROLES = {
|
|
24
|
+
SUPER_ADMIN: 'super-admin',
|
|
25
|
+
ADMIN: 'admin',
|
|
26
|
+
VIEWER: 'viewer',
|
|
27
|
+
};
|
|
28
|
+
export const checkPermission = (userPermissions, permission) => userPermissions.includes(permission);
|
|
29
|
+
export const checkAnyPermission = (userPermissions, permissions) => permissions.some((p) => userPermissions.includes(p));
|
|
30
|
+
export const checkAllPermissions = (userPermissions, permissions) => permissions.every((p) => userPermissions.includes(p));
|
|
31
|
+
// Giữ tương thích với code cũ — vẫn export tên ROLE_PERMISSIONS (dù logic không còn dùng)
|
|
32
|
+
export const ROLE_PERMISSIONS = {
|
|
33
|
+
SUPER_ADMIN: Object.values(PERMISSIONS),
|
|
34
|
+
ADMIN: Object.values(PERMISSIONS),
|
|
35
|
+
VIEWER: [PERMISSIONS.USER_READ, PERMISSIONS.ROLE_READ, PERMISSIONS.ADMIN_DASHBOARD],
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=permissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../src/client/constants/permissions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,aAAa;IAC1B,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,aAAa;IAC1B,eAAe,EAAE,iBAAiB;IAClC,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;CAC1B,CAAA;AAEV,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,WAAW,EAAE,aAAa;IAC1B,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;CACR,CAAA;AAKV,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,eAAyB,EAAE,UAAkB,EAAW,EAAE,CACxF,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;AAEtC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,eAAyB,EAAE,WAAqB,EAAW,EAAE,CAC9F,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AAEtD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,eAAyB,EAAE,WAAqB,EAAW,EAAE,CAC/F,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AAEvD,0FAA0F;AAC1F,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;IACjC,MAAM,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,eAAe,CAAC;CAC3E,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeContext.d.ts","sourceRoot":"","sources":["../../../src/client/contexts/ThemeContext.tsx"],"names":[],"mappings":"AAIA,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,2CAcxD;AAED,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { ThemeProvider as NextThemesProvider } from 'next-themes';
|
|
4
|
+
export function ThemeProvider({ children, ...props }) {
|
|
5
|
+
return (_jsx(NextThemesProvider, { attribute: "data-theme", defaultTheme: "light", themes: ['light', 'dark'], enableSystem: false, storageKey: "admin-theme", forcedTheme: undefined, ...props, children: children }));
|
|
6
|
+
}
|
|
7
|
+
export { useTheme } from 'next-themes';
|
|
8
|
+
//# sourceMappingURL=ThemeContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeContext.js","sourceRoot":"","sources":["../../../src/client/contexts/ThemeContext.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,aAAa,IAAI,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAEjE,MAAM,UAAU,aAAa,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAO;IACvD,OAAO,CACL,KAAC,kBAAkB,IACjB,SAAS,EAAC,YAAY,EACtB,YAAY,EAAC,OAAO,EACpB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EACzB,YAAY,EAAE,KAAK,EACnB,UAAU,EAAC,aAAa,EACxB,WAAW,EAAE,SAAS,KAClB,KAAK,YAER,QAAQ,GACU,CACtB,CAAA;AACH,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
interface ToastOptions {
|
|
2
|
+
duration?: number;
|
|
3
|
+
position?: 'top-center' | 'top-left' | 'top-right' | 'bottom-center' | 'bottom-left' | 'bottom-right';
|
|
4
|
+
}
|
|
5
|
+
export declare const useToast: () => {
|
|
6
|
+
success: (message: string, options?: ToastOptions) => void;
|
|
7
|
+
error: (message: string, options?: ToastOptions) => void;
|
|
8
|
+
warning: (message: string, options?: ToastOptions) => void;
|
|
9
|
+
info: (message: string, options?: ToastOptions) => void;
|
|
10
|
+
permissionError: (action?: string) => void;
|
|
11
|
+
showToast: (message: string, type?: "success" | "error" | "warning" | "info", options?: ToastOptions) => void;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=useToast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useToast.d.ts","sourceRoot":"","sources":["../../../src/client/hooks/useToast.ts"],"names":[],"mappings":"AAEA,UAAU,YAAY;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,WAAW,GAAG,eAAe,GAAG,aAAa,GAAG,cAAc,CAAA;CACtG;AAED,eAAO,MAAM,QAAQ;uBACW,MAAM,YAAY,YAAY;qBAehC,MAAM,YAAY,YAAY;uBAe5B,MAAM,YAAY,YAAY;oBAejC,MAAM,YAAY,YAAY;+BAenB,MAAM;yBAQhB,MAAM,SAAQ,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,YAAqB,YAAY;CAyBpH,CAAA"}
|