@specverse/runtime 4.1.0 → 4.1.2

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 (93) hide show
  1. package/README.md +356 -0
  2. package/dist/runtime/views/core/atomic-components-registry.d.ts +63 -0
  3. package/dist/runtime/views/core/atomic-components-registry.d.ts.map +1 -0
  4. package/dist/runtime/views/core/atomic-components-registry.js +822 -0
  5. package/dist/runtime/views/core/atomic-components-registry.js.map +1 -0
  6. package/dist/runtime/views/core/composite-pattern-types.d.ts +171 -0
  7. package/dist/runtime/views/core/composite-pattern-types.d.ts.map +1 -0
  8. package/dist/runtime/views/core/composite-pattern-types.js +11 -0
  9. package/dist/runtime/views/core/composite-pattern-types.js.map +1 -0
  10. package/dist/runtime/views/core/composite-patterns.d.ts +67 -0
  11. package/dist/runtime/views/core/composite-patterns.d.ts.map +1 -0
  12. package/dist/runtime/views/core/composite-patterns.js +485 -0
  13. package/dist/runtime/views/core/composite-patterns.js.map +1 -0
  14. package/dist/runtime/views/core/entity-display.d.ts +28 -0
  15. package/dist/runtime/views/core/entity-display.d.ts.map +1 -1
  16. package/dist/runtime/views/core/entity-display.js +75 -0
  17. package/dist/runtime/views/core/entity-display.js.map +1 -1
  18. package/dist/runtime/views/core/index.d.ts +4 -1
  19. package/dist/runtime/views/core/index.d.ts.map +1 -1
  20. package/dist/runtime/views/core/index.js +5 -1
  21. package/dist/runtime/views/core/index.js.map +1 -1
  22. package/dist/runtime/views/core/pattern-engine.d.ts +2 -2
  23. package/dist/runtime/views/core/pattern-engine.d.ts.map +1 -1
  24. package/dist/runtime/views/core/pattern-engine.js.map +1 -1
  25. package/dist/runtime/views/core/types.d.ts +2 -0
  26. package/dist/runtime/views/core/types.d.ts.map +1 -1
  27. package/dist/runtime/views/index.d.ts +5 -2
  28. package/dist/runtime/views/index.d.ts.map +1 -1
  29. package/dist/runtime/views/index.js +5 -2
  30. package/dist/runtime/views/index.js.map +1 -1
  31. package/dist/runtime/views/react/components/DevShell.d.ts.map +1 -1
  32. package/dist/runtime/views/react/components/DevShell.js +6 -2
  33. package/dist/runtime/views/react/components/DevShell.js.map +1 -1
  34. package/dist/runtime/views/react/components/EntitySelect.d.ts +14 -0
  35. package/dist/runtime/views/react/components/EntitySelect.d.ts.map +1 -0
  36. package/dist/runtime/views/react/components/EntitySelect.js +29 -0
  37. package/dist/runtime/views/react/components/EntitySelect.js.map +1 -0
  38. package/dist/runtime/views/react/components/EventStream.d.ts +11 -0
  39. package/dist/runtime/views/react/components/EventStream.d.ts.map +1 -0
  40. package/dist/runtime/views/react/components/EventStream.js +49 -0
  41. package/dist/runtime/views/react/components/EventStream.js.map +1 -0
  42. package/dist/runtime/views/react/components/FieldInput.d.ts +23 -0
  43. package/dist/runtime/views/react/components/FieldInput.d.ts.map +1 -0
  44. package/dist/runtime/views/react/components/FieldInput.js +28 -0
  45. package/dist/runtime/views/react/components/FieldInput.js.map +1 -0
  46. package/dist/runtime/views/react/components/FormView.d.ts +21 -0
  47. package/dist/runtime/views/react/components/FormView.d.ts.map +1 -0
  48. package/dist/runtime/views/react/components/FormView.js +13 -0
  49. package/dist/runtime/views/react/components/FormView.js.map +1 -0
  50. package/dist/runtime/views/react/components/ModelManager.d.ts +6 -2
  51. package/dist/runtime/views/react/components/ModelManager.d.ts.map +1 -1
  52. package/dist/runtime/views/react/components/ModelManager.js +166 -61
  53. package/dist/runtime/views/react/components/ModelManager.js.map +1 -1
  54. package/dist/runtime/views/react/components/ModelSelector.d.ts.map +1 -1
  55. package/dist/runtime/views/react/components/ModelSelector.js +4 -1
  56. package/dist/runtime/views/react/components/ModelSelector.js.map +1 -1
  57. package/dist/runtime/views/react/components/OperationExecutor.d.ts +15 -0
  58. package/dist/runtime/views/react/components/OperationExecutor.d.ts.map +1 -0
  59. package/dist/runtime/views/react/components/OperationExecutor.js +86 -0
  60. package/dist/runtime/views/react/components/OperationExecutor.js.map +1 -0
  61. package/dist/runtime/views/react/components/OperationResultView.d.ts +10 -0
  62. package/dist/runtime/views/react/components/OperationResultView.d.ts.map +1 -0
  63. package/dist/runtime/views/react/components/OperationResultView.js +92 -0
  64. package/dist/runtime/views/react/components/OperationResultView.js.map +1 -0
  65. package/dist/runtime/views/react/components/OperationView.d.ts +21 -0
  66. package/dist/runtime/views/react/components/OperationView.d.ts.map +1 -0
  67. package/dist/runtime/views/react/components/OperationView.js +7 -0
  68. package/dist/runtime/views/react/components/OperationView.js.map +1 -0
  69. package/dist/runtime/views/react/components/RelationshipField.js +4 -4
  70. package/dist/runtime/views/react/components/RelationshipField.js.map +1 -1
  71. package/dist/runtime/views/react/components/RuntimeView.d.ts.map +1 -1
  72. package/dist/runtime/views/react/components/RuntimeView.js +93 -33
  73. package/dist/runtime/views/react/components/RuntimeView.js.map +1 -1
  74. package/dist/runtime/views/react/components/ViewRouter.d.ts +7 -1
  75. package/dist/runtime/views/react/components/ViewRouter.d.ts.map +1 -1
  76. package/dist/runtime/views/react/components/ViewRouter.js +57 -18
  77. package/dist/runtime/views/react/components/ViewRouter.js.map +1 -1
  78. package/dist/runtime/views/react/hooks/useEventStream.d.ts +29 -0
  79. package/dist/runtime/views/react/hooks/useEventStream.d.ts.map +1 -0
  80. package/dist/runtime/views/react/hooks/useEventStream.js +114 -0
  81. package/dist/runtime/views/react/hooks/useEventStream.js.map +1 -0
  82. package/dist/runtime/views/react/hooks/useResizableSidebar.d.ts.map +1 -1
  83. package/dist/runtime/views/react/hooks/useResizableSidebar.js +2 -0
  84. package/dist/runtime/views/react/hooks/useResizableSidebar.js.map +1 -1
  85. package/dist/runtime/views/react/index.d.ts +10 -1
  86. package/dist/runtime/views/react/index.d.ts.map +1 -1
  87. package/dist/runtime/views/react/index.js +11 -1
  88. package/dist/runtime/views/react/index.js.map +1 -1
  89. package/dist/runtime/views/react/react-pattern-adapter.d.ts +235 -0
  90. package/dist/runtime/views/react/react-pattern-adapter.d.ts.map +1 -0
  91. package/dist/runtime/views/react/react-pattern-adapter.js +1450 -0
  92. package/dist/runtime/views/react/react-pattern-adapter.js.map +1 -0
  93. package/package.json +1 -1
@@ -6,8 +6,8 @@
6
6
  *
7
7
  * Extracted from react-pattern-adapter.tsx — the framework-agnostic parts.
8
8
  */
9
- /** CURVED operation names */
10
- export type CURVEDOperation = 'create' | 'update' | 'retrieve' | 'retrieve_many' | 'validate' | 'evolve' | 'delete';
9
+ import type { CURVEDOperation } from './composite-pattern-types.js';
10
+ export type { CURVEDOperation };
11
11
  /** Protocol mapping for a CURVED operation */
12
12
  export interface ProtocolMapping {
13
13
  method: string;
@@ -1 +1 @@
1
- {"version":3,"file":"pattern-engine.d.ts","sourceRoot":"","sources":["../../../../src/runtime/views/core/pattern-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,6BAA6B;AAC7B,MAAM,MAAM,eAAe,GACvB,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,eAAe,GACf,UAAU,GACV,QAAQ,GACR,QAAQ,CAAC;AAEb,8CAA8C;AAC9C,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qDAAqD;AACrD,MAAM,WAAW,sBAAsB;IACrC,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB;IACpB,QAAQ,EAAE,YAAY,GAAG,cAAc,GAAG,WAAW,CAAC;IACtD,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,eAAe,EAAE,eAAe,CA6B5E,CAAC;AAmBF;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,sBAAsB,GAAG,IAAI,CAYxF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EAC7C,SAAS,EAAE,MAAM,GAChB,MAAM,EAAE,CAiBV;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,CAc9D"}
1
+ {"version":3,"file":"pattern-engine.d.ts","sourceRoot":"","sources":["../../../../src/runtime/views/core/pattern-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,8CAA8C;AAC9C,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qDAAqD;AACrD,MAAM,WAAW,sBAAsB;IACrC,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB;IACpB,QAAQ,EAAE,YAAY,GAAG,cAAc,GAAG,WAAW,CAAC;IACtD,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,eAAe,EAAE,eAAe,CA6B5E,CAAC;AAmBF;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,sBAAsB,GAAG,IAAI,CAYxF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EAC7C,SAAS,EAAE,MAAM,GAChB,MAAM,EAAE,CAiBV;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,CAc9D"}
@@ -1 +1 @@
1
- {"version":3,"file":"pattern-engine.js","sourceRoot":"","sources":["../../../../src/runtime/views/core/pattern-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pattern-engine.js","sourceRoot":"","sources":["../../../../src/runtime/views/core/pattern-engine.ts"],"names":[],"mappings":"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"}
@@ -78,5 +78,7 @@ export interface RuntimeViewProviderValue {
78
78
  views: unknown[];
79
79
  /** The full specification */
80
80
  spec: Record<string, unknown>;
81
+ /** API base URL for direct fetch calls (e.g., service operations) */
82
+ apiBaseUrl?: string;
81
83
  }
82
84
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/runtime/views/core/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,wCAAwC;AACxC,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,6CAA6C;IAC7C,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,0CAA0C;AAC1C,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACrC,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,2CAA2C;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,yCAAyC;IACzC,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,wBAAwB;IACvC,oDAAoD;IACpD,gBAAgB,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK;QAC/D,IAAI,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;QAC5B,SAAS,EAAE,OAAO,CAAC;QACnB,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;IACF,qCAAqC;IACrC,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK;QAC1C,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;QAC1B,SAAS,EAAE,OAAO,CAAC;QACnB,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;IACF,uCAAuC;IACvC,2BAA2B,EAAE,MAAM;QACjC,WAAW,EAAE,CAAC,IAAI,EAAE;YAClB,cAAc,EAAE,MAAM,CAAC;YACvB,aAAa,EAAE,MAAM,CAAC;YACtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;IACF,yCAAyC;IACzC,0BAA0B,EAAE,MAAM;QAChC,WAAW,EAAE,CAAC,IAAI,EAAE;YAClB,cAAc,EAAE,MAAM,CAAC;YACvB,QAAQ,EAAE,MAAM,CAAC;YACjB,WAAW,EAAE,MAAM,CAAC;SACrB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;IACF,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACpC,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,8BAA8B;IAC9B,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/runtime/views/core/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,wCAAwC;AACxC,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,6CAA6C;IAC7C,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,0CAA0C;AAC1C,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACrC,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,2CAA2C;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,yCAAyC;IACzC,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,wBAAwB;IACvC,oDAAoD;IACpD,gBAAgB,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK;QAC/D,IAAI,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;QAC5B,SAAS,EAAE,OAAO,CAAC;QACnB,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;IACF,qCAAqC;IACrC,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK;QAC1C,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;QAC1B,SAAS,EAAE,OAAO,CAAC;QACnB,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;IACF,uCAAuC;IACvC,2BAA2B,EAAE,MAAM;QACjC,WAAW,EAAE,CAAC,IAAI,EAAE;YAClB,cAAc,EAAE,MAAM,CAAC;YACvB,aAAa,EAAE,MAAM,CAAC;YACtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;IACF,yCAAyC;IACzC,0BAA0B,EAAE,MAAM;QAChC,WAAW,EAAE,CAAC,IAAI,EAAE;YAClB,cAAc,EAAE,MAAM,CAAC;YACvB,QAAQ,EAAE,MAAM,CAAC;YACjB,WAAW,EAAE,MAAM,CAAC;SACrB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;IACF,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACpC,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,8BAA8B;IAC9B,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
@@ -4,8 +4,11 @@
4
4
  * Framework-agnostic view engine — core utilities for rendering
5
5
  * SpecVerse views from spec + data at runtime.
6
6
  */
7
- export { getEntityDisplayName, humanizeFieldName, } from './core/entity-display.js';
8
- export { classifyFields, isAutoField, isMetadataField, isRelationshipField, METADATA_FIELDS, type FieldClassification, } from './core/field-classification.js';
7
+ export { getEntityDisplayName, getEntityId, findEntityById, formatDisplayValue, formatDateTimeForInput, formatDateForInput, getForeignKeyName, humanizeFieldName, } from './core/entity-display.js';
8
+ export { classifyFields, isAutoField, isMetadataField, isRelationshipField, isFieldRequired, getFieldDefaultValue, initializeFormData, METADATA_FIELDS, type FieldClassification, } from './core/field-classification.js';
9
9
  export { detectPattern, inferFieldsFromSchema, inferFieldsFromModel, CURVED_PROTOCOL_MAPPING, type PatternDetectionResult, } from './core/pattern-engine.js';
10
10
  export type { ViewEngineConfig, ViewRenderContext, RuntimeViewProviderValue, } from './core/types.js';
11
+ export { COMPOSITE_VIEW_PATTERNS, FORM_VIEW_PATTERN, LIST_VIEW_PATTERN, DETAIL_VIEW_PATTERN, DASHBOARD_VIEW_PATTERN, getPattern, getPatternsByCategory, getPatternsByTag, getPatternIds, hasPattern, } from './core/composite-patterns.js';
12
+ export type { CompositeViewPattern, CompositePatternRegistry, CURVEDOperation, ViewCategory, LayoutStrategy, DataSource, SectionDefinition, DataOperation, RelationshipBinding, PatternContext, } from './core/composite-pattern-types.js';
13
+ export { ATOMIC_COMPONENTS_REGISTRY, getComponentDefinition, getComponentsByCategory, isValidComponentType, getAllComponentTypes, TOTAL_COMPONENT_COUNT, type AtomicComponentDefinition, } from './core/atomic-components-registry.js';
11
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/views/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,cAAc,EACd,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,KAAK,mBAAmB,GACzB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,KAAK,sBAAsB,GAC5B,MAAM,0BAA0B,CAAC;AAElC,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/views/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,cAAc,EACd,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,KAAK,mBAAmB,GACzB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,KAAK,sBAAsB,GAC5B,MAAM,0BAA0B,CAAC;AAElC,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACtB,UAAU,EACV,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,EACb,UAAU,GACX,MAAM,8BAA8B,CAAC;AAEtC,YAAY,EACV,oBAAoB,EACpB,wBAAwB,EACxB,eAAe,EACf,YAAY,EACZ,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,cAAc,GACf,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,yBAAyB,GAC/B,MAAM,sCAAsC,CAAC"}
@@ -5,7 +5,10 @@
5
5
  * SpecVerse views from spec + data at runtime.
6
6
  */
7
7
  // Core utilities
8
- export { getEntityDisplayName, humanizeFieldName, } from './core/entity-display.js';
9
- export { classifyFields, isAutoField, isMetadataField, isRelationshipField, METADATA_FIELDS, } from './core/field-classification.js';
8
+ export { getEntityDisplayName, getEntityId, findEntityById, formatDisplayValue, formatDateTimeForInput, formatDateForInput, getForeignKeyName, humanizeFieldName, } from './core/entity-display.js';
9
+ export { classifyFields, isAutoField, isMetadataField, isRelationshipField, isFieldRequired, getFieldDefaultValue, initializeFormData, METADATA_FIELDS, } from './core/field-classification.js';
10
10
  export { detectPattern, inferFieldsFromSchema, inferFieldsFromModel, CURVED_PROTOCOL_MAPPING, } from './core/pattern-engine.js';
11
+ // Composite view patterns and component registry
12
+ export { COMPOSITE_VIEW_PATTERNS, FORM_VIEW_PATTERN, LIST_VIEW_PATTERN, DETAIL_VIEW_PATTERN, DASHBOARD_VIEW_PATTERN, getPattern, getPatternsByCategory, getPatternsByTag, getPatternIds, hasPattern, } from './core/composite-patterns.js';
13
+ export { ATOMIC_COMPONENTS_REGISTRY, getComponentDefinition, getComponentsByCategory, isValidComponentType, getAllComponentTypes, TOTAL_COMPONENT_COUNT, } from './core/atomic-components-registry.js';
11
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/views/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,iBAAiB;AACjB,OAAO,EACL,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,cAAc,EACd,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,eAAe,GAEhB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,GAExB,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/views/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,iBAAiB;AACjB,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,cAAc,EACd,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,GAEhB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,GAExB,MAAM,0BAA0B,CAAC;AAQlC,iDAAiD;AACjD,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACtB,UAAU,EACV,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,EACb,UAAU,GACX,MAAM,8BAA8B,CAAC;AAetC,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,GAEtB,MAAM,sCAAsC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"DevShell.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/DevShell.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAmB,MAAM,OAAO,CAAC;AAKxC,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,uDAAuD;IACvD,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,IAAI,EAAE,GAAG,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAChF,wCAAwC;IACxC,cAAc,CAAC,EAAE,GAAG,CAAC;IACrB,wBAAwB;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAcD,wBAAgB,QAAQ,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,aAAa,2CA2F5F"}
1
+ {"version":3,"file":"DevShell.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/DevShell.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAmB,MAAM,OAAO,CAAC;AAQxC,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,uDAAuD;IACvD,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,IAAI,EAAE,GAAG,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAChF,wCAAwC;IACxC,cAAc,CAAC,EAAE,GAAG,CAAC;IACrB,wBAAwB;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAeD,wBAAgB,QAAQ,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,QAA0B,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,aAAa,2CA+F9G"}
@@ -10,12 +10,16 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
10
  import React, { useState } from 'react';
11
11
  import { useTheme } from '../hooks/useTheme.js';
12
12
  import { ViewRouter } from './ViewRouter.js';
13
+ import { FormView as DefaultFormView } from './FormView.js';
14
+ import { OperationView as DefaultOperationView } from './OperationView.js';
13
15
  import { ModelSelector } from './ModelSelector.js';
16
+ import { EventStream } from './EventStream.js';
14
17
  const TABS = [
15
18
  { id: 'views', label: 'Views' },
16
19
  { id: 'models', label: 'Models' },
20
+ { id: 'events', label: 'Events' },
17
21
  ];
18
- export function DevShell({ devSpec, appSpec, FormView, patternAdapter, title }) {
22
+ export function DevShell({ devSpec, appSpec, FormView = DefaultFormView, patternAdapter, title }) {
19
23
  const { theme, toggleTheme, isDark } = useTheme();
20
24
  const [activeTab, setActiveTab] = useState('views');
21
25
  // Combine views from both specs
@@ -50,6 +54,6 @@ export function DevShell({ devSpec, appSpec, FormView, patternAdapter, title })
50
54
  const appTitle = title || appSpec?.metadata?.name || 'SpecVerse Dev';
51
55
  return (_jsxs("div", { className: "flex flex-col h-screen bg-gray-900 text-white overflow-hidden", children: [_jsxs("header", { className: "bg-gray-800 border-b border-gray-700 px-4 py-3 flex items-center justify-between flex-shrink-0", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("h1", { className: "text-lg font-semibold text-white", children: appTitle }), _jsx("span", { className: "text-xs text-gray-400 bg-gray-700 px-2 py-0.5 rounded", children: "dev" })] }), _jsx("div", { className: "flex items-center gap-3", children: _jsx("button", { onClick: toggleTheme, className: "px-3 py-1.5 text-sm bg-gray-700 hover:bg-gray-600 text-gray-300 rounded transition-colors", children: isDark ? 'Light' : 'Dark' }) })] }), _jsx("div", { className: "bg-gray-800 px-4 flex gap-1 flex-shrink-0", children: TABS.map((tab) => (_jsx("button", { onClick: () => setActiveTab(tab.id), className: `px-4 py-2 text-sm font-medium rounded-t-lg transition-colors ${activeTab === tab.id
52
56
  ? 'bg-gray-900 text-white'
53
- : 'bg-gray-700 text-gray-300 hover:bg-gray-650 hover:text-gray-200'}`, children: tab.label }, tab.id))) }), _jsxs("main", { className: "flex-1 p-4 overflow-hidden", children: [activeTab === 'views' && (_jsx(ViewRouter, { views: allViews, FormView: FormView, patternAdapter: patternAdapter })), activeTab === 'models' && (_jsx(ModelSelector, { models: models }))] })] }));
57
+ : 'bg-gray-700 text-gray-300 hover:bg-gray-650 hover:text-gray-200'}`, children: tab.label }, tab.id))) }), _jsxs("main", { className: "flex-1 p-4 overflow-hidden", children: [activeTab === 'views' && (_jsx(ViewRouter, { views: allViews, FormView: FormView, OperationView: DefaultOperationView, patternAdapter: patternAdapter })), activeTab === 'models' && (_jsx(ModelSelector, { models: models })), activeTab === 'events' && (_jsx(EventStream, {}))] })] }));
54
58
  }
55
59
  //# sourceMappingURL=DevShell.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DevShell.js","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/DevShell.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DevShell.js","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/DevShell.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * EntitySelect — Dropdown for UUID params that reference an entity.
3
+ *
4
+ * Uses RuntimeViewProvider context for entity fetching.
5
+ */
6
+ export interface EntitySelectProps {
7
+ modelName: string;
8
+ value: string;
9
+ onChange: (value: string) => void;
10
+ compact?: boolean;
11
+ filterBy?: Record<string, string>;
12
+ }
13
+ export declare function EntitySelect({ modelName, value, onChange, compact, filterBy }: EntitySelectProps): import("react/jsx-runtime").JSX.Element;
14
+ //# sourceMappingURL=EntitySelect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntitySelect.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/EntitySelect.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAMD,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAe,EAAE,QAAQ,EAAE,EAAE,iBAAiB,2CA6BxG"}
@@ -0,0 +1,29 @@
1
+ import { jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useRuntimeContext } from '../context.js';
3
+ import { getEntityDisplayName, getEntityId } from '../../core/entity-display.js';
4
+ const inputClass = (compact) => compact
5
+ ? 'w-full px-2 py-1 text-xs bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-600 rounded focus:outline-none focus:ring-1 focus:ring-blue-500'
6
+ : 'w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded text-sm bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500';
7
+ export function EntitySelect({ modelName, value, onChange, compact = false, filterBy }) {
8
+ const ctx = useRuntimeContext();
9
+ const controllerName = `${modelName}Controller`;
10
+ const { data: allEntities = [] } = ctx.useEntitiesQuery(controllerName, modelName);
11
+ const entities = filterBy
12
+ ? allEntities.filter(e => {
13
+ for (const [fk, fkValue] of Object.entries(filterBy)) {
14
+ if (!fkValue)
15
+ continue;
16
+ if (!(fk in (e.data || {})))
17
+ continue;
18
+ if (e.data?.[fk] !== fkValue)
19
+ return false;
20
+ }
21
+ return true;
22
+ })
23
+ : allEntities;
24
+ return (_jsxs("select", { value: value || '', onChange: e => onChange(e.target.value), className: inputClass(compact), children: [_jsxs("option", { value: "", children: ["Select ", modelName, "...", filterBy && Object.values(filterBy).some(v => v) ? ` (${entities.length} matching)` : ''] }), entities.map((entity) => {
25
+ const id = getEntityId(entity);
26
+ return (_jsxs("option", { value: id, children: [getEntityDisplayName(entity, ctx.entities), " (", id?.slice(0, 8), "...)"] }, id));
27
+ })] }));
28
+ }
29
+ //# sourceMappingURL=EntitySelect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntitySelect.js","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/EntitySelect.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAUjF,MAAM,UAAU,GAAG,CAAC,OAAgB,EAAE,EAAE,CAAC,OAAO;IAC9C,CAAC,CAAC,4JAA4J;IAC9J,CAAC,CAAC,6LAA6L,CAAC;AAElM,MAAM,UAAU,YAAY,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,GAAG,KAAK,EAAE,QAAQ,EAAqB;IACvG,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAC;IAChC,MAAM,cAAc,GAAG,GAAG,SAAS,YAAY,CAAC;IAChD,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,gBAAgB,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IAEnF,MAAM,QAAQ,GAAG,QAAQ;QACvB,CAAC,CAAE,WAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YAChC,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACrD,IAAI,CAAC,OAAO;oBAAE,SAAS;gBACvB,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;oBAAE,SAAS;gBACtC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO;oBAAE,OAAO,KAAK,CAAC;YAC7C,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QACJ,CAAC,CAAC,WAAoB,CAAC;IAEzB,OAAO,CACL,kBAAQ,KAAK,EAAE,KAAK,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,aACjG,kBAAQ,KAAK,EAAC,EAAE,wBAAS,SAAS,SAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC,EAAE,IAAU,EACxI,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAW,EAAE,EAAE;gBAC5B,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC/B,OAAO,CACL,kBAAiB,KAAK,EAAE,EAAE,aACvB,oBAAoB,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,QAAI,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,aADnD,EAAE,CAEN,CACV,CAAC;YACJ,CAAC,CAAC,IACK,CACV,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * EventStream — Real-time event monitoring
3
+ *
4
+ * Displays events from the backend event bus via WebSocket.
5
+ * Two-panel layout: event type sidebar + event log.
6
+ */
7
+ export interface EventStreamProps {
8
+ className?: string;
9
+ }
10
+ export declare function EventStream({ className }: EventStreamProps): import("react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=EventStream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventStream.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/EventStream.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAc,EAAE,EAAE,gBAAgB,2CAsI/D"}
@@ -0,0 +1,49 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * EventStream — Real-time event monitoring
4
+ *
5
+ * Displays events from the backend event bus via WebSocket.
6
+ * Two-panel layout: event type sidebar + event log.
7
+ */
8
+ import { useState, useMemo } from 'react';
9
+ import { useEventStream } from '../hooks/useEventStream.js';
10
+ import { useResizableSidebar } from '../hooks/useResizableSidebar.js';
11
+ import { ResizeHandle } from './ui/ResizeHandle.js';
12
+ export function EventStream({ className = '' }) {
13
+ const { events, isConnected, clearEvents } = useEventStream();
14
+ const [selectedEventType, setSelectedEventType] = useState('all');
15
+ const [expandedEvents, setExpandedEvents] = useState(new Set());
16
+ const { width: sidebarWidth, isResizing, startResizing } = useResizableSidebar({ defaultWidth: 280 });
17
+ const eventTypes = useMemo(() => {
18
+ return [...new Set(events.map(e => e.eventName))].sort();
19
+ }, [events]);
20
+ const filteredEvents = useMemo(() => {
21
+ return selectedEventType === 'all'
22
+ ? events
23
+ : events.filter(e => e.eventName === selectedEventType);
24
+ }, [events, selectedEventType]);
25
+ const toggleEvent = (index) => {
26
+ setExpandedEvents(prev => {
27
+ const next = new Set(prev);
28
+ if (next.has(index))
29
+ next.delete(index);
30
+ else
31
+ next.add(index);
32
+ return next;
33
+ });
34
+ };
35
+ const formatTime = (date) => date.toLocaleTimeString();
36
+ const formatData = (data) => {
37
+ if (!data)
38
+ return '';
39
+ if (typeof data === 'string')
40
+ return data;
41
+ return JSON.stringify(data, null, 2);
42
+ };
43
+ return (_jsxs("div", { className: `flex h-full bg-gray-900 ${className}`, children: [_jsxs("div", { className: "bg-white dark:bg-gray-800 rounded-lg shadow p-4 flex flex-col overflow-hidden border border-gray-200 dark:border-gray-700", style: { width: `${sidebarWidth}px`, minWidth: `${sidebarWidth}px`, maxWidth: `${sidebarWidth}px` }, children: [_jsxs("div", { className: "flex items-center justify-between mb-4", children: [_jsx("h4", { className: "text-sm font-semibold text-gray-800 dark:text-gray-100 uppercase tracking-wide", children: "Events" }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: `w-2 h-2 rounded-full ${isConnected ? 'bg-green-500' : 'bg-red-500'}` }), events.length > 0 && (_jsx("button", { onClick: clearEvents, className: "text-xs text-gray-400 hover:text-gray-600 dark:hover:text-gray-300", children: "Clear" }))] })] }), _jsxs("ul", { className: "space-y-0.5 flex-1 overflow-y-auto sidebar-scrollbar", children: [_jsxs("li", { className: `px-2 py-1.5 rounded cursor-pointer border transition-all text-sm ${'all' === selectedEventType
44
+ ? 'bg-blue-50 dark:bg-blue-900/30 border-blue-500 dark:border-blue-600 text-blue-700 dark:text-blue-200'
45
+ : 'border-transparent hover:bg-gray-50 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300'}`, onClick: () => setSelectedEventType('all'), children: ["All Events (", events.length, ")"] }), eventTypes.map(eventType => (_jsx("li", { className: `px-2 py-1.5 rounded cursor-pointer border transition-all text-sm ${eventType === selectedEventType
46
+ ? 'bg-blue-50 dark:bg-blue-900/30 border-blue-500 dark:border-blue-600 text-blue-700 dark:text-blue-200'
47
+ : 'border-transparent hover:bg-gray-50 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300'}`, onClick: () => setSelectedEventType(eventType), children: eventType }, eventType)))] })] }), _jsx(ResizeHandle, { onMouseDown: startResizing, isResizing: isResizing }), _jsxs("div", { className: "flex-1 bg-white dark:bg-gray-800 rounded-lg shadow overflow-hidden flex flex-col border border-gray-200 dark:border-gray-700 ml-3", children: [_jsx("h3", { className: "text-base font-semibold bg-gray-100 dark:bg-gray-700 text-gray-800 dark:text-gray-100 px-4 py-3 border-b border-gray-300 dark:border-gray-600", children: selectedEventType === 'all' ? 'All Events' : selectedEventType }), _jsx("div", { className: "flex-1 overflow-y-auto p-2", children: filteredEvents.length === 0 ? (_jsx("div", { className: "text-center py-8 text-gray-400 dark:text-gray-500 italic", children: isConnected ? 'No events yet — perform an operation to see events' : 'Not connected to event stream' })) : (_jsx("div", { className: "space-y-2", children: filteredEvents.map((event, i) => (_jsxs("div", { className: "bg-gray-50 dark:bg-gray-700 border-l-4 border-blue-500 dark:border-blue-400 rounded overflow-hidden", children: [_jsxs("div", { className: "flex items-center gap-2 px-3 py-2 bg-white dark:bg-gray-800 cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors", onClick: () => toggleEvent(i), children: [_jsx("span", { className: "text-xs text-gray-500 dark:text-gray-400 min-w-4", children: expandedEvents.has(i) ? '\u25BC' : '\u25B6' }), _jsx("span", { className: "font-semibold text-gray-800 dark:text-gray-100 text-sm flex-1", children: event.eventName }), _jsx("span", { className: "text-xs text-gray-500 dark:text-gray-400", children: formatTime(event.timestamp) })] }), expandedEvents.has(i) && (_jsx("div", { className: "px-3 py-2 bg-gray-50 dark:bg-gray-700", children: event.data && Object.keys(event.data).length > 0 ? (_jsx("pre", { className: "text-xs text-gray-700 dark:text-gray-300 overflow-x-auto whitespace-pre-wrap break-words m-0", children: formatData(event.data) })) : (_jsx("div", { className: "text-xs text-gray-400 dark:text-gray-500 italic", children: "No event data" })) }))] }, i))) })) })] })] }));
48
+ }
49
+ //# sourceMappingURL=EventStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventStream.js","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/EventStream.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * FieldInput — Type-aware input component
3
+ *
4
+ * Renders appropriate input based on field type:
5
+ * - Boolean → checkbox / select
6
+ * - Integer/Number/Decimal → number input
7
+ * - DateTime → datetime-local picker
8
+ * - Date → date picker
9
+ * - Email → email input
10
+ * - Text → textarea
11
+ * - String → text input
12
+ */
13
+ export interface FieldInputProps {
14
+ name: string;
15
+ typeStr: string;
16
+ value: any;
17
+ onChange: (value: any) => void;
18
+ required?: boolean;
19
+ disabled?: boolean;
20
+ compact?: boolean;
21
+ }
22
+ export declare function FieldInput({ name, typeStr, value, onChange, required, disabled, compact }: FieldInputProps): import("react/jsx-runtime").JSX.Element;
23
+ //# sourceMappingURL=FieldInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldInput.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/FieldInput.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAMD,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAe,EAAE,EAAE,eAAe,2CAgElH"}
@@ -0,0 +1,28 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { humanizeFieldName } from '../../core/entity-display.js';
3
+ const inputClass = (compact) => compact
4
+ ? 'w-full px-2 py-1 text-xs bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-600 rounded focus:outline-none focus:ring-1 focus:ring-blue-500'
5
+ : 'w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded text-sm bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500 disabled:bg-gray-100 dark:disabled:bg-gray-800 disabled:cursor-not-allowed';
6
+ export function FieldInput({ name, typeStr, value, onChange, required, disabled, compact = false }) {
7
+ const type = typeStr.toLowerCase();
8
+ if (type.includes('bool')) {
9
+ return compact ? (_jsxs("select", { value: value ?? '', onChange: e => onChange(e.target.value === 'true'), disabled: disabled, className: inputClass(compact), children: [_jsx("option", { value: "", children: "Select..." }), _jsx("option", { value: "true", children: "true" }), _jsx("option", { value: "false", children: "false" })] })) : (_jsxs("div", { className: "flex items-center pt-2", children: [_jsx("input", { type: "checkbox", checked: !!value, onChange: e => onChange(e.target.checked), disabled: disabled, className: "h-4 w-4 text-blue-600 border-gray-300 dark:border-gray-600 rounded focus:ring-blue-500" }), _jsx("span", { className: "ml-2 text-sm text-gray-600 dark:text-gray-300", children: value ? 'Yes' : 'No' })] }));
10
+ }
11
+ if (type.includes('int') || type.includes('number') || type.includes('decimal')) {
12
+ return (_jsx("input", { type: "number", step: type.includes('decimal') ? '0.01' : '1', value: value ?? '', onChange: e => onChange(type.includes('int') ? parseInt(e.target.value) || 0 : parseFloat(e.target.value) || 0), disabled: disabled, required: required, className: inputClass(compact) }));
13
+ }
14
+ if (type.includes('datetime')) {
15
+ return (_jsx("input", { type: "datetime-local", value: value ? new Date(value).toISOString().slice(0, 16) : '', onChange: e => onChange(e.target.value ? new Date(e.target.value).toISOString() : ''), disabled: disabled, required: required, className: inputClass(compact) }));
16
+ }
17
+ if (type.includes('date')) {
18
+ return (_jsx("input", { type: "date", value: value ? new Date(value).toISOString().slice(0, 10) : '', onChange: e => onChange(e.target.value ? new Date(e.target.value).toISOString() : ''), disabled: disabled, required: required, className: inputClass(compact) }));
19
+ }
20
+ if (type.includes('email')) {
21
+ return (_jsx("input", { type: "email", value: value ?? '', onChange: e => onChange(e.target.value), disabled: disabled, required: required, placeholder: humanizeFieldName(name), className: inputClass(compact) }));
22
+ }
23
+ if (type === 'text') {
24
+ return (_jsx("textarea", { value: value ?? '', onChange: e => onChange(e.target.value), disabled: disabled, required: required, rows: compact ? 2 : 3, placeholder: humanizeFieldName(name), className: `${inputClass(compact)} resize-none` }));
25
+ }
26
+ return (_jsx("input", { type: "text", value: value ?? '', onChange: e => onChange(e.target.value), disabled: disabled, required: required, placeholder: `${humanizeFieldName(name)}${typeStr ? ` (${typeStr})` : ''}`, className: inputClass(compact) }));
27
+ }
28
+ //# sourceMappingURL=FieldInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldInput.js","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/FieldInput.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * FormView — View-spec adapter for ModelManager
3
+ *
4
+ * Takes a view spec (from views: section) and renders ModelManager
5
+ * for the view's model. Used as the FormView slot in ViewRouter.
6
+ *
7
+ * This bridges the gap between:
8
+ * - ViewRouter which has view specs (name, type, model)
9
+ * - ModelManager which takes modelName/controllerName directly
10
+ */
11
+ export interface FormViewProps {
12
+ view: any;
13
+ spec?: any;
14
+ selectedEntityId?: string | null;
15
+ /** Alias for selectedEntityId (backward compatibility) */
16
+ initialEntityId?: string | null;
17
+ /** Navigate to related model (passed through to ModelManager) */
18
+ onNavigateToModel?: (modelName: string, entityId?: string) => void;
19
+ }
20
+ export declare function FormView({ view, selectedEntityId, initialEntityId, onNavigateToModel }: FormViewProps): import("react/jsx-runtime").JSX.Element;
21
+ //# sourceMappingURL=FormView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormView.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/FormView.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,GAAG,CAAC;IACV,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,0DAA0D;IAC1D,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,iEAAiE;IACjE,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACpE;AAED,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,EAAE,aAAa,2CAuBrG"}
@@ -0,0 +1,13 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { ModelManager } from './ModelManager.js';
3
+ export function FormView({ view, selectedEntityId, initialEntityId, onNavigateToModel }) {
4
+ const modelName = view.model
5
+ || (Array.isArray(view.models) ? view.models[0] : null)
6
+ || view.controller?.replace(/Controller$/, '');
7
+ const controllerName = view.controller || (modelName ? `${modelName}Controller` : undefined);
8
+ if (!modelName) {
9
+ return (_jsxs("div", { className: "flex items-center justify-center h-full text-gray-500 dark:text-gray-400", children: ["No model specified for view: ", view.name] }));
10
+ }
11
+ return (_jsx(ModelManager, { modelName: modelName, controllerName: controllerName, initialEntityId: selectedEntityId || initialEntityId, onNavigateToModel: onNavigateToModel }));
12
+ }
13
+ //# sourceMappingURL=FormView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormView.js","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/FormView.tsx"],"names":[],"mappings":";AAYA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAYjD,MAAM,UAAU,QAAQ,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAiB;IACpG,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK;WACvB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;WACpD,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IAEjD,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAE7F,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CACL,eAAK,SAAS,EAAC,0EAA0E,8CACzD,IAAI,CAAC,IAAI,IACnC,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,KAAC,YAAY,IACX,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,gBAAgB,IAAI,eAAe,EACpD,iBAAiB,EAAE,iBAAiB,GACpC,CACH,CAAC;AACJ,CAAC"}
@@ -3,13 +3,17 @@
3
3
  *
4
4
  * Two-panel layout: form (top) + entity list (bottom).
5
5
  * Supports create, update, delete, and lifecycle transitions.
6
+ * Entity list shows relationships (blue), lifecycles (purple), and metadata (gray).
6
7
  *
7
8
  * Uses RuntimeViewProvider context instead of appStore.
8
- * Ported from specverse-app-demo/frontend-react/src/components/models/ModelManager.tsx
9
9
  */
10
10
  export interface ModelManagerProps {
11
11
  modelName: string;
12
12
  controllerName?: string;
13
+ /** Pre-select entity for editing (e.g., navigating from detail → form) */
14
+ initialEntityId?: string | null;
15
+ /** Navigate to a related model's form (clicking FK column in entity list) */
16
+ onNavigateToModel?: (modelName: string, entityId?: string) => void;
13
17
  }
14
- export declare function ModelManager({ modelName, controllerName }: ModelManagerProps): import("react/jsx-runtime").JSX.Element;
18
+ export declare function ModelManager({ modelName, controllerName, initialEntityId, onNavigateToModel }: ModelManagerProps): import("react/jsx-runtime").JSX.Element;
15
19
  //# sourceMappingURL=ModelManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModelManager.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/ModelManager.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAKD,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,EAAE,iBAAiB,2CAkT5E"}
1
+ {"version":3,"file":"ModelManager.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/views/react/components/ModelManager.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0EAA0E;IAC1E,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,6EAA6E;IAC7E,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACpE;AAKD,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAE,EAAE,iBAAiB,2CA2chH"}