@object-ui/types 0.5.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/README.md +1 -1
  2. package/dist/ai.d.ts +376 -0
  3. package/dist/ai.d.ts.map +1 -0
  4. package/dist/ai.js +8 -0
  5. package/dist/app.d.ts +2 -2
  6. package/dist/complex.d.ts +2 -0
  7. package/dist/complex.d.ts.map +1 -1
  8. package/dist/crud.d.ts +3 -0
  9. package/dist/crud.d.ts.map +1 -1
  10. package/dist/data-display.d.ts +40 -0
  11. package/dist/data-display.d.ts.map +1 -1
  12. package/dist/data-protocol.d.ts +19 -19
  13. package/dist/data.d.ts +77 -0
  14. package/dist/data.d.ts.map +1 -1
  15. package/dist/designer.d.ts +473 -0
  16. package/dist/designer.d.ts.map +1 -0
  17. package/dist/designer.js +8 -0
  18. package/dist/form.d.ts +35 -1
  19. package/dist/form.d.ts.map +1 -1
  20. package/dist/index.d.ts +46 -8
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +18 -0
  23. package/dist/layout.d.ts +63 -8
  24. package/dist/layout.d.ts.map +1 -1
  25. package/dist/mobile.d.ts +186 -0
  26. package/dist/mobile.d.ts.map +1 -0
  27. package/dist/mobile.js +8 -0
  28. package/dist/objectql.d.ts +341 -88
  29. package/dist/objectql.d.ts.map +1 -1
  30. package/dist/permissions.d.ts +150 -0
  31. package/dist/permissions.d.ts.map +1 -0
  32. package/dist/permissions.js +8 -0
  33. package/dist/tenant.d.ts +138 -0
  34. package/dist/tenant.d.ts.map +1 -0
  35. package/dist/tenant.js +8 -0
  36. package/dist/theme.d.ts +115 -224
  37. package/dist/theme.d.ts.map +1 -1
  38. package/dist/ui-action.d.ts +126 -11
  39. package/dist/ui-action.d.ts.map +1 -1
  40. package/dist/views.d.ts +20 -0
  41. package/dist/views.d.ts.map +1 -1
  42. package/dist/widget.d.ts +181 -0
  43. package/dist/widget.d.ts.map +1 -0
  44. package/dist/widget.js +8 -0
  45. package/dist/workflow.d.ts +340 -0
  46. package/dist/workflow.d.ts.map +1 -0
  47. package/dist/workflow.js +8 -0
  48. package/dist/zod/blocks.zod.d.ts +2 -2
  49. package/dist/zod/blocks.zod.d.ts.map +1 -1
  50. package/dist/zod/blocks.zod.js +1 -1
  51. package/dist/zod/complex.zod.d.ts +6 -6
  52. package/dist/zod/complex.zod.d.ts.map +1 -1
  53. package/dist/zod/complex.zod.js +1 -1
  54. package/dist/zod/crud.zod.d.ts +5 -5
  55. package/dist/zod/data-display.zod.d.ts +2 -2
  56. package/dist/zod/data-display.zod.d.ts.map +1 -1
  57. package/dist/zod/data-display.zod.js +1 -1
  58. package/dist/zod/disclosure.zod.d.ts +2 -2
  59. package/dist/zod/disclosure.zod.d.ts.map +1 -1
  60. package/dist/zod/disclosure.zod.js +1 -1
  61. package/dist/zod/feedback.zod.d.ts +12 -12
  62. package/dist/zod/feedback.zod.d.ts.map +1 -1
  63. package/dist/zod/feedback.zod.js +1 -1
  64. package/dist/zod/form.zod.d.ts +6 -6
  65. package/dist/zod/form.zod.d.ts.map +1 -1
  66. package/dist/zod/form.zod.js +1 -1
  67. package/dist/zod/index.zod.d.ts +337 -146
  68. package/dist/zod/index.zod.d.ts.map +1 -1
  69. package/dist/zod/index.zod.js +4 -4
  70. package/dist/zod/layout.zod.d.ts +134 -2
  71. package/dist/zod/layout.zod.d.ts.map +1 -1
  72. package/dist/zod/layout.zod.js +35 -1
  73. package/dist/zod/navigation.zod.d.ts +2 -2
  74. package/dist/zod/navigation.zod.d.ts.map +1 -1
  75. package/dist/zod/navigation.zod.js +1 -1
  76. package/dist/zod/objectql.zod.d.ts +32 -16
  77. package/dist/zod/objectql.zod.d.ts.map +1 -1
  78. package/dist/zod/objectql.zod.js +8 -0
  79. package/dist/zod/overlay.zod.d.ts +2 -2
  80. package/dist/zod/overlay.zod.d.ts.map +1 -1
  81. package/dist/zod/overlay.zod.js +1 -1
  82. package/dist/zod/reports.zod.d.ts +19 -19
  83. package/dist/zod/reports.zod.d.ts.map +1 -1
  84. package/dist/zod/reports.zod.js +1 -1
  85. package/dist/zod/theme.zod.d.ts +948 -267
  86. package/dist/zod/theme.zod.d.ts.map +1 -1
  87. package/dist/zod/theme.zod.js +175 -45
  88. package/dist/zod/views.zod.d.ts +22 -22
  89. package/dist/zod/views.zod.d.ts.map +1 -1
  90. package/dist/zod/views.zod.js +1 -1
  91. package/package.json +3 -2
  92. package/src/__tests__/namespace-exports.test.ts +23 -68
  93. package/src/__tests__/phase2-schemas.test.ts +8 -13
  94. package/src/ai.ts +454 -0
  95. package/src/app.ts +2 -2
  96. package/src/complex.ts +2 -0
  97. package/src/crud.ts +3 -0
  98. package/src/data-display.ts +36 -0
  99. package/src/data-protocol.ts +19 -19
  100. package/src/data.ts +91 -0
  101. package/src/designer.ts +509 -0
  102. package/src/form.ts +35 -1
  103. package/src/index.ts +397 -8
  104. package/src/layout.ts +66 -8
  105. package/src/mobile.ts +205 -0
  106. package/src/objectql.ts +419 -93
  107. package/src/permissions.ts +166 -0
  108. package/src/tenant.ts +153 -0
  109. package/src/theme.ts +147 -260
  110. package/src/ui-action.ts +166 -27
  111. package/src/views.ts +17 -0
  112. package/src/widget.ts +197 -0
  113. package/src/workflow.ts +409 -0
  114. package/src/zod/blocks.zod.ts +1 -1
  115. package/src/zod/complex.zod.ts +1 -1
  116. package/src/zod/data-display.zod.ts +1 -1
  117. package/src/zod/disclosure.zod.ts +1 -1
  118. package/src/zod/feedback.zod.ts +1 -1
  119. package/src/zod/form.zod.ts +1 -1
  120. package/src/zod/index.zod.ts +14 -3
  121. package/src/zod/layout.zod.ts +39 -1
  122. package/src/zod/navigation.zod.ts +1 -1
  123. package/src/zod/objectql.zod.ts +8 -0
  124. package/src/zod/overlay.zod.ts +1 -1
  125. package/src/zod/reports.zod.ts +1 -1
  126. package/src/zod/theme.zod.ts +189 -48
  127. package/src/zod/views.zod.ts +1 -1
package/src/index.ts CHANGED
@@ -94,6 +94,10 @@ export type {
94
94
  AspectRatioSchema,
95
95
  LayoutSchema,
96
96
  PageSchema,
97
+ PageType,
98
+ PageRegion,
99
+ PageRegionWidth,
100
+ PageVariable,
97
101
  } from './layout';
98
102
 
99
103
  // ============================================================================
@@ -249,6 +253,7 @@ export type {
249
253
  DataBinding,
250
254
  ValidationError,
251
255
  APIError,
256
+ FileUploadResult,
252
257
  } from './data';
253
258
 
254
259
  // ============================================================================
@@ -290,7 +295,10 @@ export type {
290
295
  ListViewSchema,
291
296
  ObjectGridSchema,
292
297
  ObjectFormSchema,
298
+ ObjectFormSection,
293
299
  ObjectViewSchema,
300
+ NamedListView,
301
+ ViewNavigationConfig,
294
302
  ObjectQLComponentSchema,
295
303
  } from './objectql';
296
304
 
@@ -402,7 +410,7 @@ export type {
402
410
  ValidationContext,
403
411
  AdvancedValidationResult,
404
412
  AdvancedValidationError,
405
- // ObjectStack Spec v0.7.1 Validation
413
+ // ObjectStack Spec v2.0.1 Validation
406
414
  BaseValidation,
407
415
  ScriptValidation,
408
416
  UniquenessValidation,
@@ -432,6 +440,89 @@ export type {
432
440
  DatasourceMetrics,
433
441
  } from './data-protocol';
434
442
 
443
+ // ============================================================================
444
+ // Permission & RBAC Types (Q2 2026)
445
+ // ============================================================================
446
+ export type {
447
+ PermissionAction,
448
+ PermissionEffect,
449
+ RoleDefinition,
450
+ ObjectLevelPermission,
451
+ FieldLevelPermission,
452
+ RowLevelPermission,
453
+ PermissionCondition,
454
+ ObjectPermissionConfig,
455
+ SharingRuleConfig,
456
+ PermissionCheckResult,
457
+ PermissionContext,
458
+ PermissionGuardConfig,
459
+ } from './permissions';
460
+
461
+ // ============================================================================
462
+ // Multi-Tenancy Types (Q2 2026)
463
+ // ============================================================================
464
+ export type {
465
+ TenantIsolationStrategy,
466
+ TenantStatus,
467
+ TenantPlan,
468
+ TenantConfig,
469
+ TenantBranding,
470
+ TenantLimits,
471
+ TenantContext,
472
+ TenantResolutionStrategy,
473
+ TenantProviderConfig,
474
+ TenantScopedQueryConfig,
475
+ } from './tenant';
476
+
477
+ // ============================================================================
478
+ // Mobile Optimization Types (Q2 2026)
479
+ // ============================================================================
480
+ export type {
481
+ BreakpointName,
482
+ ResponsiveValue,
483
+ ResponsiveConfig,
484
+ MobileOverrides,
485
+ PWAConfig,
486
+ PWAIcon,
487
+ CacheStrategy,
488
+ OfflineConfig,
489
+ OfflineRoute,
490
+ GestureType,
491
+ GestureConfig,
492
+ GestureContext,
493
+ MobileComponentConfig,
494
+ } from './mobile';
495
+
496
+ // ============================================================================
497
+ // Visual Designer Types (Q2 2026)
498
+ // ============================================================================
499
+ export type {
500
+ DesignerPosition,
501
+ DesignerCanvasConfig,
502
+ DesignerComponent,
503
+ PageDesignerSchema,
504
+ DesignerPaletteCategory,
505
+ DesignerPaletteItem,
506
+ DataModelEntity,
507
+ DataModelField,
508
+ DataModelRelationship,
509
+ DataModelDesignerSchema,
510
+ BPMNNodeType,
511
+ BPMNNode,
512
+ BPMNEdge,
513
+ BPMNLane,
514
+ ProcessDesignerSchema,
515
+ ReportSectionType,
516
+ ReportDesignerElement,
517
+ ReportDesignerSection,
518
+ ReportDesignerSchema,
519
+ CollaborationPresence,
520
+ CollaborationOperation,
521
+ CollaborationConfig,
522
+ ViewDesignerColumn,
523
+ ViewDesignerSchema,
524
+ } from './designer';
525
+
435
526
  // ============================================================================
436
527
  // API and Events - API Integration and Event Handling
437
528
  // ============================================================================
@@ -469,16 +560,24 @@ import type { AppSchema } from './app';
469
560
  // Phase 2 Schemas - New Additions
470
561
  // ============================================================================
471
562
  export type {
472
- // Theme System
563
+ // Theme System (aligned with @objectstack/spec)
564
+ Theme,
473
565
  ThemeSchema,
474
- ThemeDefinition,
475
566
  ThemeMode,
476
567
  ColorPalette,
477
568
  Typography,
478
- SpacingScale,
569
+ Spacing,
479
570
  BorderRadius,
571
+ Shadow,
572
+ Breakpoints,
573
+ Animation,
574
+ ZIndex,
575
+ ThemeLogo,
480
576
  ThemeSwitcherSchema,
481
577
  ThemePreviewSchema,
578
+ // Legacy aliases
579
+ ThemeDefinition,
580
+ SpacingScale,
482
581
  } from './theme';
483
582
 
484
583
  export type {
@@ -497,6 +596,37 @@ export type {
497
596
  ReportViewerSchema,
498
597
  } from './reports';
499
598
 
599
+ export type {
600
+ // Workflow System
601
+ WorkflowStatus,
602
+ WorkflowNodeType,
603
+ WorkflowEdgeType,
604
+ WorkflowNode,
605
+ WorkflowNodeAction,
606
+ WorkflowEdge,
607
+ ApprovalRule,
608
+ WorkflowVariable,
609
+ WorkflowSchema,
610
+ WorkflowDesignerSchema,
611
+ ApprovalHistoryItem,
612
+ ApprovalProcessSchema,
613
+ WorkflowInstanceSchema,
614
+ } from './workflow';
615
+
616
+ export type {
617
+ // AI System
618
+ AIProvider,
619
+ AIModelType,
620
+ AIConfig,
621
+ AIFieldSuggestion,
622
+ AIFormAssistSchema,
623
+ AIRecommendationItem,
624
+ AIRecommendationsSchema,
625
+ NLQueryResult,
626
+ NLQuerySchema,
627
+ AIInsightsSchema,
628
+ } from './ai';
629
+
500
630
  export type {
501
631
  // Block System
502
632
  BlockSchema,
@@ -609,7 +739,7 @@ export type {
609
739
  } from './plugin-scope';
610
740
 
611
741
  // ============================================================================
612
- // UI Actions - Enhanced Action Schema (ObjectStack Spec v0.7.1)
742
+ // UI Actions - Enhanced Action Schema (ObjectStack Spec v2.0.1)
613
743
  // ============================================================================
614
744
  /**
615
745
  * Enhanced action schema with location-based placement, parameter collection,
@@ -625,6 +755,14 @@ export type {
625
755
  ActionContext,
626
756
  ActionResult,
627
757
  ActionExecutor,
758
+ BatchOperationConfig,
759
+ BatchOperationResult,
760
+ TransactionIsolationLevel,
761
+ TransactionConfig,
762
+ TransactionResult,
763
+ UndoRedoEntry,
764
+ UndoRedoConfig,
765
+ UndoRedoState,
628
766
  } from './ui-action';
629
767
 
630
768
  // ============================================================================
@@ -638,10 +776,261 @@ export type {
638
776
  *
639
777
  * @example
640
778
  * ```typescript
641
- * import { Data, UI, System, AI, API } from '@object-ui/types';
779
+ * import { Data, UI, System, AI, API, Kernel } from '@object-ui/types';
642
780
  *
643
781
  * const field: Data.Field = { name: 'task_name', type: 'text' };
644
- * const component: UI.Component = { type: 'button', label: 'Click me' };
782
+ * const view: UI.ListView = { name: 'all', label: 'All Records', ... };
783
+ * ```
784
+ */
785
+ export type {
786
+ Data,
787
+ UI,
788
+ System,
789
+ AI,
790
+ API,
791
+ Cloud,
792
+ Automation,
793
+ Shared,
794
+ QA,
795
+ Kernel,
796
+ Contracts,
797
+ Integration,
798
+ Studio,
799
+ Identity,
800
+ Security,
801
+ } from '@objectstack/spec';
802
+
803
+ // ============================================================================
804
+ // ObjectStack Protocol Utilities - defineStack
805
+ // ============================================================================
806
+ /**
807
+ * Re-export ObjectStack Protocol utility functions and top-level types.
808
+ *
809
+ * @example
810
+ * ```typescript
811
+ * import { defineStack } from '@object-ui/types';
812
+ *
813
+ * export default defineStack({
814
+ * manifest: { id: 'com.example.app', version: '1.0.0', type: 'app', name: 'My App' },
815
+ * objects: [],
816
+ * apps: [],
817
+ * });
645
818
  * ```
646
819
  */
647
- export type { Data, UI, System, AI, API, Auth, Hub, Automation, Permission, Shared, QA } from '@objectstack/spec';
820
+ export {
821
+ defineStack,
822
+ ObjectStackSchema,
823
+ ObjectStackDefinitionSchema,
824
+ ObjectStackCapabilitiesSchema,
825
+ ObjectOSCapabilitiesSchema,
826
+ ObjectQLCapabilitiesSchema,
827
+ ObjectUICapabilitiesSchema,
828
+ } from '@objectstack/spec';
829
+
830
+ export type {
831
+ PluginContext,
832
+ ObjectStack,
833
+ ObjectStackDefinition,
834
+ ObjectStackCapabilities,
835
+ ObjectOSCapabilities,
836
+ ObjectQLCapabilities,
837
+ ObjectUICapabilities,
838
+ } from '@objectstack/spec';
839
+
840
+ // ============================================================================
841
+ // v2.0.7 Spec UI Types — Drag and Drop
842
+ // ============================================================================
843
+ export type {
844
+ DndConfig,
845
+ DndConfigSchema,
846
+ DragItem,
847
+ DragItemSchema,
848
+ DropZone,
849
+ DropZoneSchema,
850
+ DragConstraint,
851
+ DragConstraintSchema,
852
+ DragHandle,
853
+ DragHandleSchema,
854
+ DropEffect,
855
+ DropEffectSchema,
856
+ } from '@objectstack/spec/ui';
857
+
858
+ // ============================================================================
859
+ // v2.0.7 Spec UI Types — Focus & Keyboard Navigation
860
+ // ============================================================================
861
+ export type {
862
+ FocusManagement,
863
+ FocusManagementSchema,
864
+ FocusTrapConfig,
865
+ FocusTrapConfigSchema,
866
+ KeyboardNavigationConfig,
867
+ KeyboardNavigationConfigSchema,
868
+ KeyboardShortcut,
869
+ KeyboardShortcutSchema,
870
+ } from '@objectstack/spec/ui';
871
+
872
+ // ============================================================================
873
+ // v2.0.7 Spec UI Types — Animation & Motion
874
+ // ============================================================================
875
+ export type {
876
+ ComponentAnimation,
877
+ ComponentAnimationSchema,
878
+ AnimationTrigger,
879
+ AnimationTriggerSchema,
880
+ MotionConfig,
881
+ MotionConfigSchema,
882
+ TransitionConfig,
883
+ TransitionConfigSchema,
884
+ TransitionPreset,
885
+ TransitionPresetSchema,
886
+ EasingFunction,
887
+ EasingFunctionSchema,
888
+ } from '@objectstack/spec/ui';
889
+
890
+ // ============================================================================
891
+ // v2.0.7 Spec UI Types — Notifications
892
+ // ============================================================================
893
+ export type {
894
+ Notification,
895
+ NotificationSchema,
896
+ NotificationConfig,
897
+ NotificationConfigSchema,
898
+ NotificationAction,
899
+ NotificationActionSchema,
900
+ NotificationPosition,
901
+ NotificationPositionSchema,
902
+ NotificationSeverity,
903
+ NotificationSeveritySchema,
904
+ NotificationType,
905
+ NotificationTypeSchema,
906
+ } from '@objectstack/spec/ui';
907
+
908
+ // ============================================================================
909
+ // v2.0.7 Spec UI Types — Gestures & Touch
910
+ // ============================================================================
911
+ export type {
912
+ GestureConfig as SpecGestureConfig,
913
+ GestureConfigSchema as SpecGestureConfigSchema,
914
+ GestureType as SpecGestureType,
915
+ GestureTypeSchema as SpecGestureTypeSchema,
916
+ SwipeGestureConfig,
917
+ SwipeGestureConfigSchema,
918
+ SwipeDirection,
919
+ SwipeDirectionSchema,
920
+ PinchGestureConfig,
921
+ PinchGestureConfigSchema,
922
+ LongPressGestureConfig,
923
+ LongPressGestureConfigSchema,
924
+ TouchInteraction,
925
+ TouchInteractionSchema,
926
+ TouchTargetConfig,
927
+ TouchTargetConfigSchema,
928
+ } from '@objectstack/spec/ui';
929
+
930
+ // ============================================================================
931
+ // v2.0.7 Spec UI Types — Offline & Sync
932
+ // ============================================================================
933
+ export type {
934
+ OfflineConfig as SpecOfflineConfig,
935
+ OfflineConfigSchema as SpecOfflineConfigSchema,
936
+ OfflineCacheConfig,
937
+ OfflineCacheConfigSchema,
938
+ OfflineStrategy,
939
+ OfflineStrategySchema,
940
+ SyncConfig,
941
+ SyncConfigSchema,
942
+ ConflictResolution,
943
+ ConflictResolutionSchema,
944
+ PersistStorage,
945
+ PersistStorageSchema,
946
+ EvictionPolicy,
947
+ EvictionPolicySchema,
948
+ } from '@objectstack/spec/ui';
949
+
950
+ // ============================================================================
951
+ // v2.0.7 Spec UI Types — View Enhancements
952
+ // ============================================================================
953
+ export type {
954
+ ColumnSummary,
955
+ ColumnSummarySchema,
956
+ GalleryConfig,
957
+ GalleryConfigSchema,
958
+ GroupingConfig,
959
+ GroupingConfigSchema,
960
+ RowColorConfig,
961
+ RowColorConfigSchema,
962
+ RowHeight,
963
+ RowHeightSchema,
964
+ DensityMode,
965
+ ViewSharing,
966
+ ViewSharingSchema,
967
+ } from '@objectstack/spec/ui';
968
+
969
+ // ============================================================================
970
+ // v2.0.7 Spec UI Types — Performance & Page Transitions
971
+ // ============================================================================
972
+ export type {
973
+ PerformanceConfig,
974
+ PerformanceConfigSchema,
975
+ PageTransition,
976
+ PageTransitionSchema,
977
+ PageComponentType,
978
+ } from '@objectstack/spec/ui';
979
+
980
+ // ============================================================================
981
+ // v2.0.7 Spec UI Types — Accessibility
982
+ // ============================================================================
983
+ export type {
984
+ AriaProps,
985
+ AriaPropsSchema,
986
+ WcagContrastLevel,
987
+ } from '@objectstack/spec/ui';
988
+
989
+ // ============================================================================
990
+ // v2.0.7 Spec UI Types — I18n
991
+ // ============================================================================
992
+ export type {
993
+ I18nLabel,
994
+ I18nLabelSchema,
995
+ I18nObject,
996
+ I18nObjectSchema,
997
+ LocaleConfig,
998
+ LocaleConfigSchema,
999
+ PluralRule,
1000
+ PluralRuleSchema,
1001
+ DateFormat,
1002
+ DateFormatSchema,
1003
+ NumberFormat,
1004
+ NumberFormatSchema,
1005
+ } from '@objectstack/spec/ui';
1006
+
1007
+ // ============================================================================
1008
+ // v2.0.7 Spec UI Types — Responsive Design
1009
+ // ============================================================================
1010
+ export type {
1011
+ ResponsiveConfig as SpecResponsiveConfig,
1012
+ ResponsiveConfigSchema as SpecResponsiveConfigSchema,
1013
+ BreakpointColumnMapSchema,
1014
+ BreakpointOrderMapSchema,
1015
+ BreakpointName as SpecBreakpointName,
1016
+ } from '@objectstack/spec/ui';
1017
+
1018
+ // ============================================================================
1019
+ // Widget System - Runtime Widget Registration (Section 1.6)
1020
+ // ============================================================================
1021
+ /**
1022
+ * Widget manifest and registry types for runtime widget registration,
1023
+ * plugin auto-discovery, and custom widget registry.
1024
+ */
1025
+ export type {
1026
+ WidgetManifest,
1027
+ WidgetSource,
1028
+ WidgetSourceModule,
1029
+ WidgetSourceInline,
1030
+ WidgetSourceRegistry,
1031
+ WidgetInput,
1032
+ WidgetCapabilities,
1033
+ ResolvedWidget,
1034
+ WidgetRegistryEvent,
1035
+ WidgetRegistryListener,
1036
+ } from './widget';
package/src/layout.ts CHANGED
@@ -424,35 +424,64 @@ export interface AspectRatioSchema extends BaseSchema {
424
424
  children?: SchemaNode | SchemaNode[];
425
425
  }
426
426
 
427
+ /**
428
+ * Page Type
429
+ * Determines page behavior and default layout template.
430
+ * Aligned with @objectstack/spec Page.type
431
+ */
432
+ export type PageType = 'record' | 'home' | 'app' | 'utility';
433
+
434
+ /**
435
+ * Page Variable
436
+ * Local page state that can be read/written by components and expressions.
437
+ * Aligned with @objectstack/spec PageVariableSchema
438
+ */
439
+ export interface PageVariable {
440
+ /** Variable name */
441
+ name: string;
442
+ /** Variable type @default 'string' */
443
+ type?: 'string' | 'number' | 'boolean' | 'object' | 'array';
444
+ /** Default value for initialization */
445
+ defaultValue?: any;
446
+ }
447
+
448
+ /**
449
+ * Page Region Size
450
+ * Aligned with @objectstack/spec PageRegionSchema.width
451
+ */
452
+ export type PageRegionWidth = 'small' | 'medium' | 'large' | 'full';
453
+
427
454
  /**
428
455
  * Page Region (Header, Sidebar, Main, etc)
456
+ * Aligned with @objectstack/spec PageRegionSchema
429
457
  */
430
458
  export interface PageRegion {
431
459
  /**
432
- * Region name/id
460
+ * Region name/id (e.g. "sidebar", "main", "header")
433
461
  */
434
462
  name: string;
435
463
  /**
436
- * Region type
464
+ * Region type — semantic role for layout rendering
437
465
  */
438
466
  type?: 'header' | 'sidebar' | 'main' | 'footer' | 'aside';
439
467
  /**
440
- * Width (flex basis)
468
+ * Region width (spec-aligned enum)
441
469
  */
442
- width?: string;
470
+ width?: PageRegionWidth | string;
443
471
  /**
444
472
  * Components in this region
445
473
  */
446
474
  components: SchemaNode[];
447
475
  /**
448
- * CSS class
476
+ * CSS class overrides
449
477
  */
450
478
  className?: string;
451
479
  }
452
480
 
453
481
  /**
454
482
  * Page layout component
455
- * Top-level container for a page route
483
+ * Top-level container for a page route.
484
+ * Aligned with @objectstack/spec PageSchema
456
485
  */
457
486
  export interface PageSchema extends BaseSchema {
458
487
  type: 'page';
@@ -461,13 +490,33 @@ export interface PageSchema extends BaseSchema {
461
490
  */
462
491
  title?: string;
463
492
  /**
464
- * Page icon (Lucide icon name)
465
- */
493
+ * Page icon (Lucide icon name)
494
+ */
466
495
  icon?: string;
467
496
  /**
468
497
  * Page description
469
498
  */
470
499
  description?: string;
500
+ /**
501
+ * Page type — determines default layout and behavior
502
+ * @default 'record'
503
+ */
504
+ pageType?: PageType;
505
+ /**
506
+ * Bound object name (for record pages)
507
+ * Provides record context to components in regions
508
+ */
509
+ object?: string;
510
+ /**
511
+ * Layout template name (e.g. "default", "header-sidebar-main")
512
+ * @default 'default'
513
+ */
514
+ template?: string;
515
+ /**
516
+ * Local page state variables
517
+ * Initialized on mount and available to all components via context
518
+ */
519
+ variables?: PageVariable[];
471
520
  /**
472
521
  * Page layout regions
473
522
  * (Aligned with @objectstack/spec Page.regions)
@@ -481,6 +530,15 @@ export interface PageSchema extends BaseSchema {
481
530
  * Alternative content prop
482
531
  */
483
532
  children?: SchemaNode | SchemaNode[];
533
+ /**
534
+ * Whether this is the default page for the object/app
535
+ * @default false
536
+ */
537
+ isDefault?: boolean;
538
+ /**
539
+ * Profiles that can access this page
540
+ */
541
+ assignedProfiles?: string[];
484
542
  }
485
543
 
486
544
  /**