@momentumcms/admin 0.5.3 → 0.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. package/fesm2022/{momentumcms-admin-array-field.component-ChjP5zK9.mjs → momentumcms-admin-array-field.component-Co0_3wwq.mjs} +2 -2
  2. package/fesm2022/{momentumcms-admin-array-field.component-ChjP5zK9.mjs.map → momentumcms-admin-array-field.component-Co0_3wwq.mjs.map} +1 -1
  3. package/fesm2022/{momentumcms-admin-blocks-field.component-Dl0FxGnf.mjs → momentumcms-admin-blocks-field.component-Dr0N35Nz.mjs} +2 -2
  4. package/fesm2022/{momentumcms-admin-blocks-field.component-Dl0FxGnf.mjs.map → momentumcms-admin-blocks-field.component-Dr0N35Nz.mjs.map} +1 -1
  5. package/fesm2022/{momentumcms-admin-collapsible-field.component-CSLOT0Dp.mjs → momentumcms-admin-collapsible-field.component-C1GobKo0.mjs} +2 -2
  6. package/fesm2022/{momentumcms-admin-collapsible-field.component-CSLOT0Dp.mjs.map → momentumcms-admin-collapsible-field.component-C1GobKo0.mjs.map} +1 -1
  7. package/fesm2022/{momentumcms-admin-global-edit.page-DHr7Icl6.mjs → momentumcms-admin-global-edit.page-C-e4_QKx.mjs} +2 -2
  8. package/fesm2022/{momentumcms-admin-global-edit.page-DHr7Icl6.mjs.map → momentumcms-admin-global-edit.page-C-e4_QKx.mjs.map} +1 -1
  9. package/fesm2022/{momentumcms-admin-group-field.component-Bofhumd5.mjs → momentumcms-admin-group-field.component-NdX_GSNQ.mjs} +2 -2
  10. package/fesm2022/{momentumcms-admin-group-field.component-Bofhumd5.mjs.map → momentumcms-admin-group-field.component-NdX_GSNQ.mjs.map} +1 -1
  11. package/fesm2022/{momentumcms-admin-momentumcms-admin-D8WvqCxe.mjs → momentumcms-admin-momentumcms-admin-D56RXzt0.mjs} +1132 -457
  12. package/fesm2022/momentumcms-admin-momentumcms-admin-D56RXzt0.mjs.map +1 -0
  13. package/fesm2022/{momentumcms-admin-relationship-field.component-DSZhc5MP.mjs → momentumcms-admin-relationship-field.component-Cy9BsTBY.mjs} +2 -2
  14. package/fesm2022/{momentumcms-admin-relationship-field.component-DSZhc5MP.mjs.map → momentumcms-admin-relationship-field.component-Cy9BsTBY.mjs.map} +1 -1
  15. package/fesm2022/{momentumcms-admin-rich-text-field.component-BIUu6NXa.mjs → momentumcms-admin-rich-text-field.component-s47cVU85.mjs} +2 -2
  16. package/fesm2022/{momentumcms-admin-rich-text-field.component-BIUu6NXa.mjs.map → momentumcms-admin-rich-text-field.component-s47cVU85.mjs.map} +1 -1
  17. package/fesm2022/{momentumcms-admin-row-field.component-DBzqzooT.mjs → momentumcms-admin-row-field.component-VJvSx9YM.mjs} +2 -2
  18. package/fesm2022/{momentumcms-admin-row-field.component-DBzqzooT.mjs.map → momentumcms-admin-row-field.component-VJvSx9YM.mjs.map} +1 -1
  19. package/fesm2022/{momentumcms-admin-tabs-field.component-BsnCWC5J.mjs → momentumcms-admin-tabs-field.component-C_iReaEt.mjs} +2 -2
  20. package/fesm2022/{momentumcms-admin-tabs-field.component-BsnCWC5J.mjs.map → momentumcms-admin-tabs-field.component-C_iReaEt.mjs.map} +1 -1
  21. package/fesm2022/momentumcms-admin.mjs +1 -1
  22. package/package.json +1 -1
  23. package/types/momentumcms-admin.d.ts +232 -8
  24. package/fesm2022/momentumcms-admin-momentumcms-admin-D8WvqCxe.mjs.map +0 -1
@@ -1,13 +1,14 @@
1
1
  import { Routes, CanActivateFn, CanDeactivateFn } from '@angular/router';
2
2
  import * as _angular_core from '@angular/core';
3
3
  import { Type, InjectionToken, Signal, Provider, OnInit, WritableSignal, makeEnvironmentProviders } from '@angular/core';
4
- import { CollectionConfig, GlobalConfig, PluginAdminRouteDescriptor, MomentumPlugin, MomentumConfig, MomentumAdminConfig, MediaDocument, AdminConfig, ImageSizeConfig, Field, DocumentStatus as DocumentStatus$1, BlockConfig, UploadField } from '@momentumcms/core';
4
+ import { CollectionConfig, GlobalConfig, PluginAdminRouteDescriptor, MomentumPlugin, AdminComponentsConfig, MomentumConfig, MomentumAdminConfig, MediaDocument, DocumentStatus as DocumentStatus$1, AdminConfig, ImageSizeConfig, Field, BlockConfig, UploadField } from '@momentumcms/core';
5
5
  import { HttpContextToken, HttpInterceptorFn } from '@angular/common/http';
6
6
  import { Observable } from 'rxjs';
7
7
  import * as _momentumcms_admin from '@momentumcms/admin';
8
8
  import { DataTableColumn, DataTableSort, DataTableRowAction, DataTableRowActionEvent, FieldDisplayType, FieldDisplayFieldMeta, FieldDisplayNumberFormat, FieldDisplayDateFormat, PopoverTrigger, ValidationError, SelectOption } from '@momentumcms/ui';
9
9
  import * as _angular_forms_signals from '@angular/forms/signals';
10
10
  import { CdkDragDrop } from '@angular/cdk/drag-drop';
11
+ import * as dist_libs_core_src from 'dist/libs/core/src';
11
12
 
12
13
  /**
13
14
  * Momentum Admin Routes Factory
@@ -77,6 +78,8 @@ interface MomentumAdminRouteData {
77
78
  globals?: GlobalConfig[];
78
79
  branding?: MomentumAdminBranding;
79
80
  pluginRoutes?: AdminPluginRoute[];
81
+ adminComponents?: AdminComponentsConfig;
82
+ plugins?: MomentumPlugin[];
80
83
  }
81
84
  /**
82
85
  * Creates Angular routes for the Momentum CMS admin UI.
@@ -638,7 +641,7 @@ interface CollectionOperationsServer<T = Record<string, unknown>> {
638
641
  findById(id: string, options?: {
639
642
  depth?: number;
640
643
  withDeleted?: boolean;
641
- }): Promise<T | null>;
644
+ }): Promise<T>;
642
645
  create(data: Partial<T>): Promise<T>;
643
646
  update(id: string, data: Partial<T>): Promise<T>;
644
647
  delete(id: string): Promise<DeleteResult>;
@@ -695,7 +698,7 @@ interface MomentumClientAPI {
695
698
  */
696
699
  interface MomentumCollectionAPI<T = Record<string, unknown>> {
697
700
  find$(options?: FindOptions): Observable<FindResult<T>>;
698
- findById$(id: string, options?: FindByIdOptions): Observable<T | null>;
701
+ findById$(id: string, options?: FindByIdOptions): Observable<T>;
699
702
  create$(data: Partial<T>): Observable<T>;
700
703
  update$(id: string, data: Partial<T>): Observable<T>;
701
704
  delete$(id: string): Observable<DeleteResult>;
@@ -708,7 +711,7 @@ interface MomentumCollectionAPI<T = Record<string, unknown>> {
708
711
  }[]): Observable<T[]>;
709
712
  batchDelete$(ids: string[]): Observable<DeleteResult[]>;
710
713
  find(options?: FindOptions): Promise<FindResult<T>>;
711
- findById(id: string, options?: FindByIdOptions): Promise<T | null>;
714
+ findById(id: string, options?: FindByIdOptions): Promise<T>;
712
715
  create(data: Partial<T>): Promise<T>;
713
716
  update(id: string, data: Partial<T>): Promise<T>;
714
717
  delete(id: string): Promise<DeleteResult>;
@@ -1388,6 +1391,9 @@ interface HasUnsavedChanges {
1388
1391
  }
1389
1392
  /**
1390
1393
  * Route guard that prompts the user before navigating away from a dirty form.
1394
+ *
1395
+ * Defensive: checks that the component implements HasUnsavedChanges before calling.
1396
+ * This is necessary because AdminPageResolver wraps the actual page component.
1391
1397
  */
1392
1398
  declare const unsavedChangesGuard: CanDeactivateFn<HasUnsavedChanges>;
1393
1399
 
@@ -1638,6 +1644,8 @@ declare class AdminShellComponent implements OnInit {
1638
1644
  private readonly auth;
1639
1645
  private readonly collectionAccess;
1640
1646
  private readonly sidebar;
1647
+ private readonly componentRegistry;
1648
+ private readonly slotRegistry;
1641
1649
  readonly entitySheet: EntitySheetService;
1642
1650
  /** All collections from route data */
1643
1651
  private readonly allCollections;
@@ -1850,6 +1858,8 @@ declare class EntityListWidget<T extends Entity = Entity> {
1850
1858
  private readonly route;
1851
1859
  /** Template ref for complex cell rendering (group, array, json). */
1852
1860
  private readonly complexCellTemplate;
1861
+ /** Template ref for badge cell rendering (_status column). */
1862
+ private readonly badgeCellTemplate;
1853
1863
  /** The collection configuration */
1854
1864
  readonly collection: _angular_core.InputSignal<CollectionConfig>;
1855
1865
  /** Base path for entity routes */
@@ -1909,8 +1919,16 @@ declare class EntityListWidget<T extends Entity = Entity> {
1909
1919
  readonly selectedEntities: _angular_core.WritableSignal<T[]>;
1910
1920
  readonly searchQuery: _angular_core.ModelSignal<string>;
1911
1921
  readonly viewingTrash: _angular_core.WritableSignal<boolean>;
1922
+ readonly statusFilter: _angular_core.WritableSignal<DocumentStatus$1 | null>;
1923
+ /** Status filter options for versioned collections */
1924
+ readonly statusFilterOptions: {
1925
+ label: string;
1926
+ value: DocumentStatus$1 | null;
1927
+ }[];
1912
1928
  /** Whether the collection has soft delete enabled */
1913
1929
  readonly hasSoftDelete: _angular_core.Signal<boolean>;
1930
+ /** Whether the collection has versioning with drafts enabled */
1931
+ readonly hasVersioning: _angular_core.Signal<boolean>;
1914
1932
  /** Computed collection label */
1915
1933
  readonly collectionLabel: _angular_core.Signal<string>;
1916
1934
  /** Computed collection label singular */
@@ -1949,6 +1967,13 @@ declare class EntityListWidget<T extends Entity = Entity> {
1949
1967
  * Format a value based on its type.
1950
1968
  */
1951
1969
  private formatValue;
1970
+ /**
1971
+ * Look up a badge configuration from a column's badgeMap.
1972
+ */
1973
+ getBadgeConfig(value: unknown, column: EntityListColumn<T>): {
1974
+ label: string;
1975
+ variant: 'default' | 'secondary' | 'destructive' | 'outline';
1976
+ } | null;
1952
1977
  /**
1953
1978
  * Generate a brief summary string for complex field values (group, array, json).
1954
1979
  */
@@ -1989,6 +2014,10 @@ declare class EntityListWidget<T extends Entity = Entity> {
1989
2014
  * Toggle between active and trash views.
1990
2015
  */
1991
2016
  toggleTrashView(): void;
2017
+ /**
2018
+ * Set the status filter for versioned collections.
2019
+ */
2020
+ setStatusFilter(status: DocumentStatus$1 | null): void;
1992
2021
  /**
1993
2022
  * Handle create button click.
1994
2023
  */
@@ -2581,6 +2610,8 @@ declare class EntityFormWidget<T extends Entity = Entity> {
2581
2610
  readonly canEdit: _angular_core.Signal<boolean>;
2582
2611
  /** Whether collection has versioning with drafts enabled */
2583
2612
  readonly hasVersioning: _angular_core.Signal<boolean>;
2613
+ /** Current document status (from form model or default to 'draft') */
2614
+ readonly documentStatus: _angular_core.Signal<DocumentStatus$1>;
2584
2615
  /** Whether draft save is available (edit mode with existing entity) */
2585
2616
  readonly canSaveDraft: _angular_core.Signal<boolean>;
2586
2617
  constructor();
@@ -2637,6 +2668,10 @@ declare class EntityFormWidget<T extends Entity = Entity> {
2637
2668
  * Switch from view to edit mode.
2638
2669
  */
2639
2670
  switchToEdit(): void;
2671
+ /**
2672
+ * Handle status change from publish controls.
2673
+ */
2674
+ onStatusChanged(status: DocumentStatus$1): void;
2640
2675
  /**
2641
2676
  * Handle version restore — reload the entity data.
2642
2677
  */
@@ -3438,6 +3473,195 @@ declare function provideMomentumFieldRenderers(): ReturnType<typeof makeEnvironm
3438
3473
  */
3439
3474
  declare function provideFieldRenderer(type: string, loader: () => Promise<Type<unknown>>): ReturnType<typeof makeEnvironmentProviders>;
3440
3475
 
3476
+ type Loader$1 = () => Promise<unknown>;
3477
+ /**
3478
+ * Registry for swappable admin page components.
3479
+ *
3480
+ * Maps page keys (e.g., 'dashboard', 'collection-list') to lazy component loaders.
3481
+ * Per-collection overrides use the pattern: 'collections/{slug}/{type}'.
3482
+ *
3483
+ * Resolution chain: per-collection → global → undefined (use built-in default).
3484
+ */
3485
+ declare class AdminComponentRegistry {
3486
+ private readonly components;
3487
+ /** Register a lazy loader for a page key. Later registrations override earlier ones. */
3488
+ register(key: string, loader: Loader$1): void;
3489
+ /** Get the lazy loader for a page key. Returns undefined if not registered. */
3490
+ get(key: string): Loader$1 | undefined;
3491
+ /** Check if a page key has a registered component. */
3492
+ has(key: string): boolean;
3493
+ /**
3494
+ * Resolve a component loader with per-collection fallback.
3495
+ *
3496
+ * For collection pages, tries `collections/{slug}/{type}` first,
3497
+ * then falls back to the global key (e.g., 'collection-list').
3498
+ */
3499
+ resolve(key: string, slug?: string): Loader$1 | undefined;
3500
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AdminComponentRegistry, never>;
3501
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AdminComponentRegistry>;
3502
+ }
3503
+
3504
+ type Loader = () => Promise<unknown>;
3505
+ /**
3506
+ * Registry for admin layout slot components.
3507
+ *
3508
+ * Slots are additive — multiple components can be registered for the same slot key.
3509
+ * Per-collection slots use the pattern: `{base-slot}:{collection-slug}`.
3510
+ *
3511
+ * Resolution merges global + per-collection loaders (global first).
3512
+ *
3513
+ * The registry is signal-aware: `resolve()` reads an internal version signal,
3514
+ * so Angular effects that call `resolve()` will re-run when new slots are registered.
3515
+ */
3516
+ declare class AdminSlotRegistry {
3517
+ private readonly slots;
3518
+ /** Incremented on every register() so signal-based consumers re-evaluate. */
3519
+ private readonly _version;
3520
+ /** Register a lazy loader for a slot. Multiple loaders per slot are supported. Duplicate loaders are skipped. */
3521
+ register(slot: string, loader: Loader): void;
3522
+ /** Get all loaders for a slot key. Returns empty array if none registered. */
3523
+ getAll(slot: string): Loader[];
3524
+ /** Check if a slot has any registered loaders. */
3525
+ has(slot: string): boolean;
3526
+ /**
3527
+ * Resolve slot loaders, merging global and per-collection entries.
3528
+ *
3529
+ * Reads the internal version signal so Angular effects tracking this call
3530
+ * will re-run when new slots are registered.
3531
+ */
3532
+ resolve(slot: string, slug?: string): Loader[];
3533
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AdminSlotRegistry, never>;
3534
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AdminSlotRegistry>;
3535
+ }
3536
+
3537
+ /** Lazy loader that returns an Angular component class. */
3538
+ type ComponentLoader = () => Promise<Type<unknown>>;
3539
+ /**
3540
+ * Keys for swappable admin pages.
3541
+ * Used in AdminComponentRegistry to replace built-in pages.
3542
+ *
3543
+ * Resolution chain for collection pages:
3544
+ * per-collection key (e.g. "collections/articles/list")
3545
+ * → global key (e.g. "collection-list")
3546
+ * → built-in default
3547
+ */
3548
+ type AdminComponentKey = 'dashboard' | 'login' | 'media' | 'collection-list' | 'collection-edit' | 'collection-view' | 'global-edit';
3549
+ /**
3550
+ * Keys for named layout slots in admin pages.
3551
+ * Slots are additive — multiple components can be registered for the same slot.
3552
+ *
3553
+ * Per-collection variants use the pattern: `{base-slot}:{collection-slug}`
3554
+ * e.g. `collection-list:before:articles`
3555
+ */
3556
+ type AdminSlotKey = 'shell:header' | 'shell:footer' | 'shell:nav-start' | 'shell:nav-end' | 'dashboard:before' | 'dashboard:after' | 'collection-list:before' | 'collection-list:after' | 'collection-edit:before' | 'collection-edit:after' | 'collection-edit:sidebar' | 'collection-view:before' | 'collection-view:after' | 'login:before' | 'login:after' | `${'collection-list' | 'collection-edit' | 'collection-view'}:${'before' | 'after' | 'sidebar'}:${string}`;
3557
+ /**
3558
+ * Context passed to slot components via input bindings.
3559
+ * Available as inputs on any component rendered in a slot.
3560
+ */
3561
+ interface AdminSlotContext {
3562
+ /** The collection config, if the slot is within a collection page. */
3563
+ collection?: CollectionConfig;
3564
+ /** The entity ID, if the slot is within an entity view/edit page. */
3565
+ entityId?: string;
3566
+ }
3567
+
3568
+ /**
3569
+ * Register a custom admin page component override.
3570
+ *
3571
+ * ```typescript
3572
+ * export const appConfig: ApplicationConfig = {
3573
+ * providers: [
3574
+ * provideAdminComponent('dashboard', () =>
3575
+ * import('./custom-dashboard.component').then(m => m.CustomDashboard)
3576
+ * ),
3577
+ * ],
3578
+ * };
3579
+ * ```
3580
+ */
3581
+ declare function provideAdminComponent(key: string, loader: ComponentLoader): ReturnType<typeof makeEnvironmentProviders>;
3582
+ /**
3583
+ * Register a component into an admin layout slot.
3584
+ *
3585
+ * ```typescript
3586
+ * export const appConfig: ApplicationConfig = {
3587
+ * providers: [
3588
+ * provideAdminSlot('dashboard:before', () =>
3589
+ * import('./welcome-banner.component').then(m => m.WelcomeBanner)
3590
+ * ),
3591
+ * ],
3592
+ * };
3593
+ * ```
3594
+ */
3595
+ declare function provideAdminSlot(slot: string, loader: ComponentLoader): ReturnType<typeof makeEnvironmentProviders>;
3596
+ /**
3597
+ * Read AdminComponentsConfig and CollectionAdminComponentsConfig from config
3598
+ * and register them into AdminComponentRegistry and AdminSlotRegistry.
3599
+ *
3600
+ * Called once in AdminShellComponent.ngOnInit() after route data is available.
3601
+ */
3602
+ declare function registerConfigComponents(collections: CollectionConfig[], adminComponents: AdminComponentsConfig | undefined, componentRegistry: AdminComponentRegistry, slotRegistry: AdminSlotRegistry): void;
3603
+
3604
+ /**
3605
+ * Renders all components registered for a named admin layout slot.
3606
+ *
3607
+ * Usage:
3608
+ * ```html
3609
+ * <mcms-admin-slot slot="dashboard:before" />
3610
+ * <mcms-admin-slot slot="collection-list:before" [collectionSlug]="slug" />
3611
+ * ```
3612
+ */
3613
+ declare class AdminSlotOutlet {
3614
+ private readonly registry;
3615
+ /** The slot key to render (e.g., 'dashboard:before'). */
3616
+ readonly slot: _angular_core.InputSignal<string>;
3617
+ /** Optional collection slug for per-collection slot resolution. */
3618
+ readonly collectionSlug: _angular_core.InputSignal<string | undefined>;
3619
+ /** Optional context passed as inputs to slot components. */
3620
+ readonly context: _angular_core.InputSignal<AdminSlotContext>;
3621
+ /** Resolved component types after lazy loading. */
3622
+ readonly resolvedComponents: _angular_core.WritableSignal<Type<unknown>[]>;
3623
+ /** Inputs to pass to each slot component. */
3624
+ readonly slotInputs: _angular_core.Signal<{
3625
+ collection?: dist_libs_core_src.CollectionConfig;
3626
+ entityId?: string;
3627
+ }>;
3628
+ /** Incremented on every effect run to detect stale promise resolutions. */
3629
+ private loadGeneration;
3630
+ constructor();
3631
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AdminSlotOutlet, never>;
3632
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AdminSlotOutlet, "mcms-admin-slot", never, { "slot": { "alias": "slot"; "required": true; "isSignal": true; }; "collectionSlug": { "alias": "collectionSlug"; "required": false; "isSignal": true; }; "context": { "alias": "context"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3633
+ }
3634
+
3635
+ /**
3636
+ * Registry-aware page resolver that delegates to either a registered
3637
+ * custom component or the built-in fallback.
3638
+ *
3639
+ * Used as the `loadComponent` for every admin route. Route `data` provides:
3640
+ * - `adminPageKey` — the registry key (e.g., 'dashboard', 'collection-list')
3641
+ * - `adminPageFallback` — lazy loader for the built-in default
3642
+ *
3643
+ * For collection pages, reads `:slug` from route params to check per-collection overrides.
3644
+ *
3645
+ * Subscribes to route observables so the component re-resolves when Angular
3646
+ * reuses the instance for sibling routes (e.g., navigating between collections).
3647
+ *
3648
+ * Implements HasUnsavedChanges to delegate to the resolved component for
3649
+ * the unsaved changes guard.
3650
+ */
3651
+ declare class AdminPageResolver implements OnInit, HasUnsavedChanges {
3652
+ private readonly registry;
3653
+ private readonly route;
3654
+ private readonly destroyRef;
3655
+ private readonly outlet;
3656
+ readonly resolvedComponent: _angular_core.WritableSignal<Type<unknown> | null>;
3657
+ /** Incremented on every load to detect stale promise resolutions. */
3658
+ private loadGeneration;
3659
+ ngOnInit(): void;
3660
+ hasUnsavedChanges(): boolean;
3661
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AdminPageResolver, never>;
3662
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AdminPageResolver, "mcms-admin-page-resolver", never, {}, {}, never, never, true, never>;
3663
+ }
3664
+
3441
3665
  /**
3442
3666
  * Dynamic field renderer that resolves components lazily from the registry.
3443
3667
  *
@@ -3464,7 +3688,7 @@ declare class FieldRenderer {
3464
3688
  /** Error from lazy loading failure */
3465
3689
  readonly loadError: _angular_core.WritableSignal<Error | null>;
3466
3690
  /** Registry key: maps field type + editor config to renderer registry keys */
3467
- readonly registryKey: _angular_core.Signal<"number" | "text" | "textarea" | "richText" | "date" | "checkbox" | "select" | "radio" | "email" | "password" | "upload" | "relationship" | "array" | "group" | "blocks" | "json" | "point" | "slug" | "tabs" | "collapsible" | "row" | "blocks-visual" | "json-email-builder" | "json-form-builder">;
3691
+ readonly registryKey: _angular_core.Signal<"number" | "slug" | "email" | "json" | "text" | "textarea" | "richText" | "date" | "checkbox" | "select" | "radio" | "password" | "upload" | "relationship" | "array" | "group" | "blocks" | "point" | "tabs" | "collapsible" | "row" | "blocks-visual" | "json-email-builder" | "json-form-builder">;
3468
3692
  /** Inputs to pass to the dynamically loaded component via NgComponentOutlet */
3469
3693
  readonly rendererInputs: _angular_core.Signal<{
3470
3694
  field: Field;
@@ -3509,7 +3733,7 @@ declare class TextFieldRenderer {
3509
3733
  /** Whether to use textarea */
3510
3734
  readonly isTextarea: _angular_core.Signal<boolean>;
3511
3735
  /** Input type (text, email, etc.) */
3512
- readonly inputType: _angular_core.Signal<"text" | "email">;
3736
+ readonly inputType: _angular_core.Signal<"email" | "text">;
3513
3737
  /** Number of rows for textarea */
3514
3738
  readonly rows: _angular_core.Signal<number>;
3515
3739
  /** String value from FieldState */
@@ -3903,5 +4127,5 @@ declare class MediaPickerDialog {
3903
4127
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<MediaPickerDialog, "mcms-media-picker-dialog", never, {}, {}, never, never, true, never>;
3904
4128
  }
3905
4129
 
3906
- export { AdminShellComponent, AdminSidebarWidget, BlockEditDialog, BlockInserterComponent, BlockWrapperComponent, CheckboxFieldRenderer, CollectionAccessService, CollectionCardWidget, CollectionEditPage, CollectionListPage, CollectionViewPage, DashboardPage, DateFieldRenderer, EntityFormWidget, EntityListWidget, EntitySheetService, EntityViewWidget, FeedbackService, FieldRenderer, FieldRendererRegistry, ForgotPasswordFormComponent, ForgotPasswordPage, LivePreviewComponent, LoginPage, MOMENTUM_API, MOMENTUM_API_CONTEXT, McmsThemeService, MediaLibraryPage, MediaPickerDialog, MediaPreviewComponent, MomentumApiService, MomentumAuthService, NumberFieldRenderer, PublishControlsWidget, ResetPasswordFormComponent, ResetPasswordPage, SHEET_QUERY_PARAMS, SKIP_AUTO_TOAST, SelectFieldRenderer, SetupPage, TextFieldRenderer, UploadFieldRenderer, UploadService, VersionHistoryWidget, VersionService, VisualBlockEditorComponent, adminGuard, authGuard, collectionAccessGuard, crudToastInterceptor, getFieldNodeState, getSubNode, getTitleField, guestGuard, injectHasAnyRole, injectHasRole, injectIsAdmin, injectIsAuthenticated, injectMomentumAPI, injectTypedMomentumAPI, injectUser, injectUserRole, injectVersionService, momentumAdminRoutes, provideFieldRenderer, provideMomentumAPI, provideMomentumFieldRenderers, setupGuard, unsavedChangesGuard };
3907
- export type { AdminBranding, AdminNavItem, AdminNavSection, AdminPluginRoute, AdminUser, AuthResult, AuthSession, AuthUser, BaseUser, BlockEditDialogData, BlockItem, BreadcrumbItem, CollectionGroup, CollectionPermissions, CollectionWithCount, DeleteResult, DeviceSize, DocumentStatus, DocumentVersionParsed, DraftSaveResult, Entity, EntityAction, EntityFormMode, EntityListActionEvent, EntityListBulkActionEvent, EntityListColumn, EntityListFindResult, EntitySheetResult, EntityViewActionEvent, EntityViewFieldConfig, FieldNodeState, FindByIdOptions, FindOptions, FindResult, HasUnsavedChanges, McmsTheme, MediaPickerDialogData, MediaPickerResult, MediaPreviewData, MomentumAPIContext, MomentumAPIServer, MomentumAdminBranding, MomentumAdminOptions, MomentumAdminRouteData, MomentumClientAPI, MomentumCollectionAPI, PublishResult, RestoreResult, RestoreVersionOptions, SetupStatus, StatusResult, TypedCollectionAPI, TypedFindByIdOptions, TypedFindOptions, TypedMomentumClientAPI, UploadProgress, UserContext, VersionFindOptions, VersionQueryResult, VisualEditorState };
4130
+ export { AdminComponentRegistry, AdminPageResolver, AdminShellComponent, AdminSidebarWidget, AdminSlotOutlet, AdminSlotRegistry, BlockEditDialog, BlockInserterComponent, BlockWrapperComponent, CheckboxFieldRenderer, CollectionAccessService, CollectionCardWidget, CollectionEditPage, CollectionListPage, CollectionViewPage, DashboardPage, DateFieldRenderer, EntityFormWidget, EntityListWidget, EntitySheetService, EntityViewWidget, FeedbackService, FieldRenderer, FieldRendererRegistry, ForgotPasswordFormComponent, ForgotPasswordPage, LivePreviewComponent, LoginPage, MOMENTUM_API, MOMENTUM_API_CONTEXT, McmsThemeService, MediaLibraryPage, MediaPickerDialog, MediaPreviewComponent, MomentumApiService, MomentumAuthService, NumberFieldRenderer, PublishControlsWidget, ResetPasswordFormComponent, ResetPasswordPage, SHEET_QUERY_PARAMS, SKIP_AUTO_TOAST, SelectFieldRenderer, SetupPage, TextFieldRenderer, UploadFieldRenderer, UploadService, VersionHistoryWidget, VersionService, VisualBlockEditorComponent, adminGuard, authGuard, collectionAccessGuard, crudToastInterceptor, getFieldNodeState, getSubNode, getTitleField, guestGuard, injectHasAnyRole, injectHasRole, injectIsAdmin, injectIsAuthenticated, injectMomentumAPI, injectTypedMomentumAPI, injectUser, injectUserRole, injectVersionService, momentumAdminRoutes, provideAdminComponent, provideAdminSlot, provideFieldRenderer, provideMomentumAPI, provideMomentumFieldRenderers, registerConfigComponents, setupGuard, unsavedChangesGuard };
4131
+ export type { AdminBranding, AdminComponentKey, AdminNavItem, AdminNavSection, AdminPluginRoute, AdminSlotContext, AdminSlotKey, AdminUser, AuthResult, AuthSession, AuthUser, BaseUser, BlockEditDialogData, BlockItem, BreadcrumbItem, CollectionGroup, CollectionPermissions, CollectionWithCount, ComponentLoader, DeleteResult, DeviceSize, DocumentStatus, DocumentVersionParsed, DraftSaveResult, Entity, EntityAction, EntityFormMode, EntityListActionEvent, EntityListBulkActionEvent, EntityListColumn, EntityListFindResult, EntitySheetResult, EntityViewActionEvent, EntityViewFieldConfig, FieldNodeState, FindByIdOptions, FindOptions, FindResult, HasUnsavedChanges, McmsTheme, MediaPickerDialogData, MediaPickerResult, MediaPreviewData, MomentumAPIContext, MomentumAPIServer, MomentumAdminBranding, MomentumAdminOptions, MomentumAdminRouteData, MomentumClientAPI, MomentumCollectionAPI, PublishResult, RestoreResult, RestoreVersionOptions, SetupStatus, StatusResult, TypedCollectionAPI, TypedFindByIdOptions, TypedFindOptions, TypedMomentumClientAPI, UploadProgress, UserContext, VersionFindOptions, VersionQueryResult, VisualEditorState };