@quazardous/qdadm 1.19.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/LICENSE +21 -0
- package/README.md +111 -0
- package/package.json +101 -0
- package/src/assets/logo.svg +6 -0
- package/src/auth/SessionAuthAdapter.ts +459 -0
- package/src/auth/index.ts +15 -0
- package/src/chain/ActiveStack.ts +154 -0
- package/src/chain/StackHydrator.ts +292 -0
- package/src/chain/index.ts +25 -0
- package/src/chain/useActiveStack.ts +120 -0
- package/src/chain/useStackHydrator.ts +155 -0
- package/src/components/BoolCell.vue +34 -0
- package/src/components/InfoBanner.vue +73 -0
- package/src/components/QdadmRoot.vue +52 -0
- package/src/components/SeverityTag.vue +86 -0
- package/src/components/dialogs/BulkStatusDialog.vue +60 -0
- package/src/components/dialogs/MultiStepDialog.vue +331 -0
- package/src/components/dialogs/SimpleDialog.vue +122 -0
- package/src/components/dialogs/UnsavedChangesDialog.vue +80 -0
- package/src/components/display/BannerZone.vue +65 -0
- package/src/components/display/CardsGrid.vue +72 -0
- package/src/components/display/CopyableId.vue +84 -0
- package/src/components/display/EmptyState.vue +62 -0
- package/src/components/display/IntensityBar.vue +190 -0
- package/src/components/display/RichCardsGrid.vue +101 -0
- package/src/components/edit/FormActions.vue +78 -0
- package/src/components/edit/FormField.vue +82 -0
- package/src/components/edit/FormInput.vue +158 -0
- package/src/components/edit/FormPage.vue +260 -0
- package/src/components/edit/FormTab.vue +217 -0
- package/src/components/edit/FormTabs.vue +120 -0
- package/src/components/edit/LookupField.vue +406 -0
- package/src/components/edit/LookupPickerDialog.vue +230 -0
- package/src/components/editors/JsonEditorFoldable.vue +470 -0
- package/src/components/editors/JsonStructuredField.vue +264 -0
- package/src/components/editors/JsonViewer.vue +51 -0
- package/src/components/editors/KeyValueEditor.vue +314 -0
- package/src/components/editors/LanguageEditor.vue +259 -0
- package/src/components/editors/PermissionEditor.vue +558 -0
- package/src/components/editors/ScopeEditor.vue +372 -0
- package/src/components/editors/VanillaJsonEditor.vue +183 -0
- package/src/components/index.ts +83 -0
- package/src/components/item/FieldGroups.vue +392 -0
- package/src/components/layout/AppLayout.vue +1032 -0
- package/src/components/layout/BaseLayout.vue +190 -0
- package/src/components/layout/Breadcrumb.vue +55 -0
- package/src/components/layout/DashboardLayout.vue +104 -0
- package/src/components/layout/FormLayout.vue +256 -0
- package/src/components/layout/ListLayout.vue +278 -0
- package/src/components/layout/PageHeader.vue +156 -0
- package/src/components/layout/PageLayout.vue +126 -0
- package/src/components/layout/PageNav.vue +192 -0
- package/src/components/layout/SidebarBox.vue +87 -0
- package/src/components/layout/Zone.vue +182 -0
- package/src/components/layout/defaults/DefaultBreadcrumb.vue +149 -0
- package/src/components/layout/defaults/DefaultFooter.vue +89 -0
- package/src/components/layout/defaults/DefaultFormActions.vue +67 -0
- package/src/components/layout/defaults/DefaultHeader.vue +78 -0
- package/src/components/layout/defaults/DefaultMenu.vue +188 -0
- package/src/components/layout/defaults/DefaultPagination.vue +75 -0
- package/src/components/layout/defaults/DefaultTable.vue +137 -0
- package/src/components/layout/defaults/DefaultUserInfo.vue +111 -0
- package/src/components/layout/defaults/index.ts +16 -0
- package/src/components/lists/ActionButtons.vue +49 -0
- package/src/components/lists/ActionColumn.vue +40 -0
- package/src/components/lists/FilterBar.vue +54 -0
- package/src/components/lists/ListPage.vue +467 -0
- package/src/components/pages/LoginPage.vue +334 -0
- package/src/components/pages/NotFoundPage.vue +98 -0
- package/src/components/show/ShowDisplay.vue +343 -0
- package/src/components/show/ShowField.vue +67 -0
- package/src/components/show/ShowPage.vue +431 -0
- package/src/composables/index.ts +155 -0
- package/src/composables/useApp.ts +67 -0
- package/src/composables/useAuth.ts +98 -0
- package/src/composables/useBareForm.ts +319 -0
- package/src/composables/useBreadcrumb.ts +252 -0
- package/src/composables/useChildPage.ts +113 -0
- package/src/composables/useCurrentEntity.ts +60 -0
- package/src/composables/useDeferred.ts +94 -0
- package/src/composables/useDirtyState.ts +138 -0
- package/src/composables/useEntityItemFormPage.ts +942 -0
- package/src/composables/useEntityItemFormPage.types.ts +451 -0
- package/src/composables/useEntityItemPage.ts +438 -0
- package/src/composables/useEntityItemShowPage.ts +722 -0
- package/src/composables/useFieldManager.ts +692 -0
- package/src/composables/useForm.ts +544 -0
- package/src/composables/useGuardStore.ts +53 -0
- package/src/composables/useHooks.ts +56 -0
- package/src/composables/useInfoBanner.ts +217 -0
- package/src/composables/useJsonSyntax.ts +122 -0
- package/src/composables/useLayoutResolver.ts +329 -0
- package/src/composables/useListPage.ts +1535 -0
- package/src/composables/useListPage.types.ts +437 -0
- package/src/composables/useListPage.utils.ts +101 -0
- package/src/composables/useNavContext.ts +439 -0
- package/src/composables/useNavigation.ts +216 -0
- package/src/composables/useOptionsLookup.ts +323 -0
- package/src/composables/usePageTitle.ts +84 -0
- package/src/composables/useSSEBridge.ts +142 -0
- package/src/composables/useSemanticBreadcrumb.ts +222 -0
- package/src/composables/useSidebarState.ts +24 -0
- package/src/composables/useSignals.ts +52 -0
- package/src/composables/useUnsavedChangesGuard.ts +155 -0
- package/src/composables/useUserImpersonator.ts +317 -0
- package/src/composables/useZoneRegistry.ts +252 -0
- package/src/core/bundles.ts +558 -0
- package/src/core/decorator.ts +420 -0
- package/src/core/extension.ts +470 -0
- package/src/core/index.ts +59 -0
- package/src/deferred/DeferredRegistry.ts +353 -0
- package/src/deferred/index.ts +15 -0
- package/src/editors/index.ts +12 -0
- package/src/entity/EntityManager.cache.ts +530 -0
- package/src/entity/EntityManager.crud.ts +615 -0
- package/src/entity/EntityManager.interface.ts +78 -0
- package/src/entity/EntityManager.query.ts +221 -0
- package/src/entity/EntityManager.relations.ts +151 -0
- package/src/entity/EntityManager.ts +944 -0
- package/src/entity/EntityManager.types.ts +288 -0
- package/src/entity/auth/CompositeAuthAdapter.ts +194 -0
- package/src/entity/auth/EntityAuthAdapter.ts +119 -0
- package/src/entity/auth/PermissiveAdapter.ts +43 -0
- package/src/entity/auth/RoleHierarchy.ts +128 -0
- package/src/entity/auth/SecurityChecker.ts +202 -0
- package/src/entity/auth/factory.ts +203 -0
- package/src/entity/auth/index.ts +47 -0
- package/src/entity/factory.test.js +189 -0
- package/src/entity/factory.ts +146 -0
- package/src/entity/index.ts +49 -0
- package/src/entity/storage/ApiStorage.ts +228 -0
- package/src/entity/storage/IStorage.ts +100 -0
- package/src/entity/storage/LocalStorage.ts +200 -0
- package/src/entity/storage/MemoryStorage.ts +184 -0
- package/src/entity/storage/MockApiStorage.ts +318 -0
- package/src/entity/storage/SdkStorage.ts +377 -0
- package/src/entity/storage/factory.test.js +159 -0
- package/src/entity/storage/factory.ts +209 -0
- package/src/entity/storage/index.ts +75 -0
- package/src/gen/FieldMapper.ts +122 -0
- package/src/gen/StorageProfileFactory.ts +93 -0
- package/src/gen/connectors/BaseConnector.ts +150 -0
- package/src/gen/connectors/ManualConnector.test.js +499 -0
- package/src/gen/connectors/ManualConnector.ts +414 -0
- package/src/gen/connectors/OpenAPIConnector.test.js +836 -0
- package/src/gen/connectors/OpenAPIConnector.ts +693 -0
- package/src/gen/connectors/__fixtures__/sample-openapi.json +311 -0
- package/src/gen/connectors/index.ts +27 -0
- package/src/gen/createManagers.ts +245 -0
- package/src/gen/decorators.ts +134 -0
- package/src/gen/generateManagers.test.js +540 -0
- package/src/gen/generateManagers.ts +398 -0
- package/src/gen/index.ts +66 -0
- package/src/gen/schema.ts +248 -0
- package/src/gen/vite-plugin.ts +114 -0
- package/src/generated/managers/testManager.js +45 -0
- package/src/generated/managers/testManager.ts +46 -0
- package/src/hooks/HookRegistry.ts +16 -0
- package/src/hooks/index.ts +15 -0
- package/src/i18n/I18n.ts +344 -0
- package/src/i18n/IncrementalDomainProvider.ts +153 -0
- package/src/i18n/InlineTranslationProvider.ts +4 -0
- package/src/i18n/LazyTranslationProvider.ts +102 -0
- package/src/i18n/MessagesRegistry.ts +4 -0
- package/src/i18n/Resolver.ts +4 -0
- package/src/i18n/__tests__/I18n.test.ts +169 -0
- package/src/i18n/__tests__/IncrementalDomainProvider.test.ts +146 -0
- package/src/i18n/__tests__/LazyTranslationProvider.test.ts +100 -0
- package/src/i18n/__tests__/Resolver.test.ts +271 -0
- package/src/i18n/defaults/DefaultCoreProvider.ts +28 -0
- package/src/i18n/defaults/core.en.yml +55 -0
- package/src/i18n/defaults/core.fr.yml +55 -0
- package/src/i18n/index.ts +55 -0
- package/src/i18n/loaders/raw-modules.d.ts +15 -0
- package/src/i18n/loaders/yaml.ts +35 -0
- package/src/i18n/strategies.ts +4 -0
- package/src/i18n/types.ts +34 -0
- package/src/i18n/useI18n.ts +34 -0
- package/src/index.ts +453 -0
- package/src/kernel/EventRouter.ts +23 -0
- package/src/kernel/Kernel.api.ts +79 -0
- package/src/kernel/Kernel.auth.ts +120 -0
- package/src/kernel/Kernel.i18n.ts +29 -0
- package/src/kernel/Kernel.modules.ts +170 -0
- package/src/kernel/Kernel.registries.ts +237 -0
- package/src/kernel/Kernel.routing.ts +334 -0
- package/src/kernel/Kernel.ts +460 -0
- package/src/kernel/Kernel.types.ts +263 -0
- package/src/kernel/Kernel.vue.ts +304 -0
- package/src/kernel/KernelContext.entities.ts +80 -0
- package/src/kernel/KernelContext.events.ts +57 -0
- package/src/kernel/KernelContext.i18n.ts +37 -0
- package/src/kernel/KernelContext.permissions.ts +38 -0
- package/src/kernel/KernelContext.routing.ts +280 -0
- package/src/kernel/KernelContext.ts +252 -0
- package/src/kernel/KernelContext.types.ts +173 -0
- package/src/kernel/KernelContext.zones.ts +54 -0
- package/src/kernel/Module.ts +169 -0
- package/src/kernel/ModuleLoader.ts +645 -0
- package/src/kernel/SSEBridge.ts +11 -0
- package/src/kernel/SignalBus.ts +48 -0
- package/src/kernel/index.ts +56 -0
- package/src/module/index.ts +33 -0
- package/src/module/moduleRegistry.ts +492 -0
- package/src/modules/debug/AuthCollector.ts +501 -0
- package/src/modules/debug/Collector.ts +20 -0
- package/src/modules/debug/DebugBridge.ts +14 -0
- package/src/modules/debug/DebugModule.ts +220 -0
- package/src/modules/debug/EntitiesCollector.ts +839 -0
- package/src/modules/debug/ErrorCollector.ts +4 -0
- package/src/modules/debug/I18nCollector.ts +9 -0
- package/src/modules/debug/LocalStorageAdapter.ts +7 -0
- package/src/modules/debug/RouterCollector.ts +449 -0
- package/src/modules/debug/SignalCollector.ts +4 -0
- package/src/modules/debug/ToastCollector.ts +4 -0
- package/src/modules/debug/ZonesCollector.ts +447 -0
- package/src/modules/debug/components/DebugBar.vue +31 -0
- package/src/modules/debug/components/adminPanelsConfig.ts +42 -0
- package/src/modules/debug/components/index.ts +9 -0
- package/src/modules/debug/components/panels/AuthPanel.vue +267 -0
- package/src/modules/debug/components/panels/EntitiesPanel.vue +572 -0
- package/src/modules/debug/components/panels/I18nPanel.vue +738 -0
- package/src/modules/debug/components/panels/RouterPanel.vue +440 -0
- package/src/modules/debug/components/panels/ZonesPanel.vue +133 -0
- package/src/modules/debug/components/panels/index.ts +16 -0
- package/src/modules/debug/index.ts +58 -0
- package/src/modules/debug/styles.scss +2671 -0
- package/src/notifications/NotificationBadge.vue +35 -0
- package/src/notifications/NotificationListener.vue +71 -0
- package/src/notifications/NotificationModule.ts +76 -0
- package/src/notifications/NotificationPanel.vue +478 -0
- package/src/notifications/NotificationStore.ts +288 -0
- package/src/notifications/index.ts +42 -0
- package/src/notifications/styles.scss +32 -0
- package/src/orchestrator/Orchestrator.ts +427 -0
- package/src/orchestrator/index.ts +8 -0
- package/src/orchestrator/useOrchestrator.ts +80 -0
- package/src/plugin.ts +251 -0
- package/src/query/FilterQuery.ts +306 -0
- package/src/query/QueryExecutor.ts +341 -0
- package/src/query/index.ts +16 -0
- package/src/security/EntityRolesProvider.ts +385 -0
- package/src/security/PermissionMatcher.ts +152 -0
- package/src/security/PermissionRegistry.ts +273 -0
- package/src/security/PersistableRolesProvider.ts +584 -0
- package/src/security/RolesManager.ts +136 -0
- package/src/security/RolesProvider.ts +167 -0
- package/src/security/RolesProviderStorage.ts +211 -0
- package/src/security/SecurityModule.ts +94 -0
- package/src/security/StaticRolesProvider.ts +117 -0
- package/src/security/UsersManager.ts +163 -0
- package/src/security/index.ts +77 -0
- package/src/security/pages/RoleForm.vue +276 -0
- package/src/security/pages/RoleList.vue +123 -0
- package/src/styles/_alerts.scss +95 -0
- package/src/styles/_buttons.scss +391 -0
- package/src/styles/_cards.scss +241 -0
- package/src/styles/_code.scss +78 -0
- package/src/styles/_dialogs.scss +55 -0
- package/src/styles/_filter-bar.scss +70 -0
- package/src/styles/_forms.scss +434 -0
- package/src/styles/_helpers.scss +153 -0
- package/src/styles/_lists.scss +225 -0
- package/src/styles/_main.scss +356 -0
- package/src/styles/_markdown.scss +88 -0
- package/src/styles/_responsive.scss +255 -0
- package/src/styles/_show-pages.scss +186 -0
- package/src/styles/_sidebar.scss +380 -0
- package/src/styles/_states.scss +115 -0
- package/src/styles/_stats.scss +47 -0
- package/src/styles/_variables.scss +224 -0
- package/src/styles/index.scss +38 -0
- package/src/styles/theme/_components.scss +331 -0
- package/src/styles/theme/_index.scss +10 -0
- package/src/styles/theme/_tokens.scss +147 -0
- package/src/styles/theme/_utilities.scss +175 -0
- package/src/toast/ToastBridgeModule.ts +68 -0
- package/src/toast/ToastListener.vue +55 -0
- package/src/toast/index.ts +26 -0
- package/src/toast/useSignalToast.ts +154 -0
- package/src/types/index.ts +285 -0
- package/src/types/pluralize.d.ts +19 -0
- package/src/types/quarkernel.d.ts +50 -0
- package/src/utils/formatters.ts +174 -0
- package/src/utils/index.ts +35 -0
- package/src/utils/transformers.ts +131 -0
- package/src/vite/qdadmDebugPlugin.ts +401 -0
- package/src/vite-env.d.ts +50 -0
- package/src/zones/ZoneRegistry.ts +934 -0
- package/src/zones/index.ts +29 -0
- package/src/zones/zones.ts +191 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zones Module
|
|
3
|
+
*
|
|
4
|
+
* Zone registry for extensible UI composition.
|
|
5
|
+
* Inspired by Twig/Symfony block system.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export {
|
|
9
|
+
ZoneRegistry,
|
|
10
|
+
createZoneRegistry,
|
|
11
|
+
type BlockOperation,
|
|
12
|
+
type WrapperInfo,
|
|
13
|
+
type BlockConfig,
|
|
14
|
+
type ZoneConfig,
|
|
15
|
+
type ZoneDefineOptions,
|
|
16
|
+
type ZoneListInfo,
|
|
17
|
+
type ZoneDetailInfo,
|
|
18
|
+
type ZoneInspection,
|
|
19
|
+
type ZoneRegistryOptions,
|
|
20
|
+
} from './ZoneRegistry'
|
|
21
|
+
export {
|
|
22
|
+
ZONES,
|
|
23
|
+
LAYOUT_ZONES,
|
|
24
|
+
LIST_ZONES,
|
|
25
|
+
FORM_ZONES,
|
|
26
|
+
DASHBOARD_ZONES,
|
|
27
|
+
registerStandardZones,
|
|
28
|
+
getStandardZoneNames,
|
|
29
|
+
} from './zones'
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standard Zone Definitions
|
|
3
|
+
*
|
|
4
|
+
* Canonical zones for qdadm layouts. Use these constants to prevent typos
|
|
5
|
+
* and ensure consistency across the application.
|
|
6
|
+
*
|
|
7
|
+
* Zone categories:
|
|
8
|
+
* - LAYOUT: Top-level structural zones (header, footer, etc.)
|
|
9
|
+
* - LIST: Zones specific to list/table pages
|
|
10
|
+
* - FORM: Zones specific to form pages
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import type { ZoneRegistry } from './ZoneRegistry'
|
|
14
|
+
|
|
15
|
+
// ============================================================================
|
|
16
|
+
// Layout Zones (BaseLayout)
|
|
17
|
+
// ============================================================================
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Layout zones for the base application structure.
|
|
21
|
+
* These zones are present in all page layouts.
|
|
22
|
+
*/
|
|
23
|
+
export const LAYOUT_ZONES = {
|
|
24
|
+
/** Top bar - logo, user menu, global actions */
|
|
25
|
+
HEADER: 'header',
|
|
26
|
+
/** Navigation menu - sidebar or top navigation */
|
|
27
|
+
MENU: 'menu',
|
|
28
|
+
/** Breadcrumb trail - current location path */
|
|
29
|
+
BREADCRUMB: 'breadcrumb',
|
|
30
|
+
/** Side panel - optional sidebar content */
|
|
31
|
+
SIDEBAR: 'sidebar',
|
|
32
|
+
/** Main content area - primary page content */
|
|
33
|
+
MAIN: 'main',
|
|
34
|
+
/** Footer bar - copyright, links, version */
|
|
35
|
+
FOOTER: 'footer',
|
|
36
|
+
/** Toast notifications overlay - feedback messages */
|
|
37
|
+
TOASTER: 'toaster',
|
|
38
|
+
} as const
|
|
39
|
+
|
|
40
|
+
// ============================================================================
|
|
41
|
+
// List Page Zones (ListLayout)
|
|
42
|
+
// ============================================================================
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Zones specific to list/table pages.
|
|
46
|
+
* Used by ListLayout and defineListPage.
|
|
47
|
+
*/
|
|
48
|
+
export const LIST_ZONES = {
|
|
49
|
+
/** Before table - actions bar, filters, search */
|
|
50
|
+
BEFORE_TABLE: 'before-table',
|
|
51
|
+
/** The data table itself */
|
|
52
|
+
TABLE: 'table',
|
|
53
|
+
/** Below table content - summary, bulk actions */
|
|
54
|
+
AFTER_TABLE: 'after-table',
|
|
55
|
+
/** Pagination controls */
|
|
56
|
+
PAGINATION: 'pagination',
|
|
57
|
+
} as const
|
|
58
|
+
|
|
59
|
+
// ============================================================================
|
|
60
|
+
// Form Page Zones (FormLayout)
|
|
61
|
+
// ============================================================================
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Zones specific to form pages.
|
|
65
|
+
* Used by FormLayout and defineFormPage.
|
|
66
|
+
*/
|
|
67
|
+
export const FORM_ZONES = {
|
|
68
|
+
/** Form header - title, back button, status indicators */
|
|
69
|
+
FORM_HEADER: 'form-header',
|
|
70
|
+
/** Form field groups - organized input fields */
|
|
71
|
+
FORM_FIELDS: 'form-fields',
|
|
72
|
+
/** Optional tabbed sections for complex forms */
|
|
73
|
+
FORM_TABS: 'form-tabs',
|
|
74
|
+
/** Action buttons - save, cancel, delete */
|
|
75
|
+
ACTIONS: 'actions',
|
|
76
|
+
} as const
|
|
77
|
+
|
|
78
|
+
// ============================================================================
|
|
79
|
+
// Dashboard Zones (DashboardLayout)
|
|
80
|
+
// ============================================================================
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Zones specific to dashboard pages.
|
|
84
|
+
* Used by DashboardLayout and dashboard modules.
|
|
85
|
+
*/
|
|
86
|
+
export const DASHBOARD_ZONES = {
|
|
87
|
+
/** Stats cards area - KPI cards, metrics */
|
|
88
|
+
STATS: 'dashboard-stats',
|
|
89
|
+
/** Widgets area - main dashboard widgets */
|
|
90
|
+
WIDGETS: 'dashboard-widgets',
|
|
91
|
+
/** Recent activity area - activity log, recent changes */
|
|
92
|
+
RECENT_ACTIVITY: 'dashboard-recent-activity',
|
|
93
|
+
} as const
|
|
94
|
+
|
|
95
|
+
// ============================================================================
|
|
96
|
+
// Combined Zone Constant (ZONES)
|
|
97
|
+
// ============================================================================
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* All standard zones in a single object.
|
|
101
|
+
* Provides flat access: ZONES.HEADER, ZONES.TABLE, etc.
|
|
102
|
+
*/
|
|
103
|
+
export const ZONES = {
|
|
104
|
+
// Layout zones
|
|
105
|
+
HEADER: LAYOUT_ZONES.HEADER,
|
|
106
|
+
MENU: LAYOUT_ZONES.MENU,
|
|
107
|
+
BREADCRUMB: LAYOUT_ZONES.BREADCRUMB,
|
|
108
|
+
SIDEBAR: LAYOUT_ZONES.SIDEBAR,
|
|
109
|
+
MAIN: LAYOUT_ZONES.MAIN,
|
|
110
|
+
FOOTER: LAYOUT_ZONES.FOOTER,
|
|
111
|
+
TOASTER: LAYOUT_ZONES.TOASTER,
|
|
112
|
+
// List zones
|
|
113
|
+
BEFORE_TABLE: LIST_ZONES.BEFORE_TABLE,
|
|
114
|
+
TABLE: LIST_ZONES.TABLE,
|
|
115
|
+
AFTER_TABLE: LIST_ZONES.AFTER_TABLE,
|
|
116
|
+
PAGINATION: LIST_ZONES.PAGINATION,
|
|
117
|
+
// Form zones
|
|
118
|
+
FORM_HEADER: FORM_ZONES.FORM_HEADER,
|
|
119
|
+
FORM_FIELDS: FORM_ZONES.FORM_FIELDS,
|
|
120
|
+
FORM_TABS: FORM_ZONES.FORM_TABS,
|
|
121
|
+
ACTIONS: FORM_ZONES.ACTIONS,
|
|
122
|
+
// Dashboard zones
|
|
123
|
+
DASHBOARD_STATS: DASHBOARD_ZONES.STATS,
|
|
124
|
+
DASHBOARD_WIDGETS: DASHBOARD_ZONES.WIDGETS,
|
|
125
|
+
DASHBOARD_RECENT_ACTIVITY: DASHBOARD_ZONES.RECENT_ACTIVITY,
|
|
126
|
+
} as const
|
|
127
|
+
|
|
128
|
+
// ============================================================================
|
|
129
|
+
// Registration Helper
|
|
130
|
+
// ============================================================================
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Register all standard zones in a ZoneRegistry.
|
|
134
|
+
*
|
|
135
|
+
* Call this during Kernel bootstrap to establish the canonical zones
|
|
136
|
+
* that layouts and modules can rely on.
|
|
137
|
+
*
|
|
138
|
+
* @param registry - The zone registry instance
|
|
139
|
+
* @returns The registry for chaining
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* ```ts
|
|
143
|
+
* import { createZoneRegistry, registerStandardZones } from '@quazardous/qdadm/zones'
|
|
144
|
+
*
|
|
145
|
+
* const registry = createZoneRegistry()
|
|
146
|
+
* registerStandardZones(registry)
|
|
147
|
+
*
|
|
148
|
+
* // Now all standard zones are defined
|
|
149
|
+
* registry.registerBlock(ZONES.HEADER, { component: Logo, weight: 10 })
|
|
150
|
+
* ```
|
|
151
|
+
*/
|
|
152
|
+
export function registerStandardZones(registry: ZoneRegistry): ZoneRegistry {
|
|
153
|
+
// Layout zones
|
|
154
|
+
registry.defineZone(LAYOUT_ZONES.HEADER)
|
|
155
|
+
registry.defineZone(LAYOUT_ZONES.MENU)
|
|
156
|
+
registry.defineZone(LAYOUT_ZONES.BREADCRUMB)
|
|
157
|
+
registry.defineZone(LAYOUT_ZONES.SIDEBAR)
|
|
158
|
+
registry.defineZone(LAYOUT_ZONES.MAIN)
|
|
159
|
+
registry.defineZone(LAYOUT_ZONES.FOOTER)
|
|
160
|
+
registry.defineZone(LAYOUT_ZONES.TOASTER)
|
|
161
|
+
|
|
162
|
+
// List page zones
|
|
163
|
+
registry.defineZone(LIST_ZONES.BEFORE_TABLE)
|
|
164
|
+
registry.defineZone(LIST_ZONES.TABLE)
|
|
165
|
+
registry.defineZone(LIST_ZONES.AFTER_TABLE)
|
|
166
|
+
registry.defineZone(LIST_ZONES.PAGINATION)
|
|
167
|
+
|
|
168
|
+
// Form page zones
|
|
169
|
+
registry.defineZone(FORM_ZONES.FORM_HEADER)
|
|
170
|
+
registry.defineZone(FORM_ZONES.FORM_FIELDS)
|
|
171
|
+
registry.defineZone(FORM_ZONES.FORM_TABS)
|
|
172
|
+
registry.defineZone(FORM_ZONES.ACTIONS)
|
|
173
|
+
|
|
174
|
+
// Dashboard zones
|
|
175
|
+
registry.defineZone(DASHBOARD_ZONES.STATS)
|
|
176
|
+
registry.defineZone(DASHBOARD_ZONES.WIDGETS)
|
|
177
|
+
registry.defineZone(DASHBOARD_ZONES.RECENT_ACTIVITY)
|
|
178
|
+
|
|
179
|
+
return registry
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Get all standard zone names as an array.
|
|
184
|
+
*
|
|
185
|
+
* Useful for validation or iteration.
|
|
186
|
+
*
|
|
187
|
+
* @returns Array of all standard zone names
|
|
188
|
+
*/
|
|
189
|
+
export function getStandardZoneNames(): string[] {
|
|
190
|
+
return Object.values(ZONES)
|
|
191
|
+
}
|