@almadar/std 16.199.0 → 16.200.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 (206) hide show
  1. package/behaviors/lolo/ui/avl/atoms/ui-behavior-view.lolo +2 -2
  2. package/behaviors/lolo/ui/avl/atoms/ui-module-card.lolo +2 -2
  3. package/behaviors/lolo/ui/core/atoms/std-app-layout.lolo +1 -1
  4. package/behaviors/lolo/ui/core/atoms/std-file-store.lolo +1 -1
  5. package/behaviors/lolo/ui/core/atoms/ui-conditional-wrapper.lolo +11 -4
  6. package/behaviors/lolo/ui/core/atoms/ui-icon.lolo +1 -1
  7. package/behaviors/lolo/ui/core/atoms/ui-input.lolo +10 -4
  8. package/behaviors/lolo/ui/core/atoms/ui-select.lolo +6 -4
  9. package/behaviors/lolo/ui/core/molecules/ui-branching-logic-builder.lolo +5 -5
  10. package/behaviors/lolo/ui/core/molecules/ui-document-details.lolo +8 -1
  11. package/behaviors/lolo/ui/core/molecules/ui-drawer.lolo +1 -1
  12. package/behaviors/lolo/ui/core/molecules/ui-edge-decoration.lolo +1 -1
  13. package/behaviors/lolo/ui/core/molecules/ui-floating-action-button.lolo +1 -1
  14. package/behaviors/lolo/ui/core/molecules/ui-gradient-divider.lolo +1 -1
  15. package/behaviors/lolo/ui/core/molecules/ui-import-preview-tree.lolo +8 -1
  16. package/behaviors/lolo/ui/core/molecules/ui-input-group.lolo +10 -4
  17. package/behaviors/lolo/ui/core/molecules/ui-orbital-visualization.lolo +3 -3
  18. package/behaviors/lolo/ui/core/molecules/ui-reply-tree.lolo +1 -1
  19. package/behaviors/lolo/ui/core/molecules/ui-swipeable-row.lolo +3 -3
  20. package/behaviors/lolo/ui/core/molecules/ui-wizard-container.lolo +23 -16
  21. package/behaviors/lolo/ui/core/organisms/ui-entity-cards.lolo +2 -2
  22. package/behaviors/lolo/ui/core/organisms/ui-entity-list.lolo +1 -1
  23. package/behaviors/lolo/ui/core/organisms/ui-entity-table.lolo +2 -2
  24. package/behaviors/lolo/ui/core/organisms/ui-form-section.lolo +15 -8
  25. package/behaviors/lolo/ui/core/organisms/ui-form.lolo +15 -8
  26. package/behaviors/lolo/ui/core/organisms/ui-stat-card.lolo +1 -1
  27. package/behaviors/lolo/ui/core/organisms/ui-subagent-trace-panel.lolo +3 -3
  28. package/behaviors/lolo/ui/game/atoms/std-fx-narrative.lolo +126 -0
  29. package/behaviors/lolo/ui/game/atoms/std-pickup.lolo +104 -0
  30. package/behaviors/lolo/ui/game/atoms/std-platformer-body.lolo +39 -19
  31. package/behaviors/lolo/ui/game/atoms/ui-control-button.lolo +3 -3
  32. package/behaviors/lolo/ui/game/atoms/ui-control-grid.lolo +1 -1
  33. package/behaviors/lolo/ui/game/atoms/ui-game-hud.lolo +1 -1
  34. package/behaviors/lolo/ui/game/atoms/ui-game-menu.lolo +3 -3
  35. package/behaviors/lolo/ui/game/atoms/ui-stat-badge.lolo +3 -3
  36. package/behaviors/registry/ui/avl/atoms/ui-behavior-view.orb +389 -3
  37. package/behaviors/registry/ui/avl/atoms/ui-module-card.orb +389 -3
  38. package/behaviors/registry/ui/core/atoms/std-app-layout.orb +93 -2
  39. package/behaviors/registry/ui/core/atoms/std-file-store.orb +101 -2
  40. package/behaviors/registry/ui/core/atoms/ui-atlas-image.orb +13 -1
  41. package/behaviors/registry/ui/core/atoms/ui-atlas-panel.orb +13 -1
  42. package/behaviors/registry/ui/core/atoms/ui-badge.orb +56 -1
  43. package/behaviors/registry/ui/core/atoms/ui-button.orb +56 -1
  44. package/behaviors/registry/ui/core/atoms/ui-conditional-wrapper.orb +277 -5
  45. package/behaviors/registry/ui/core/atoms/ui-game-icon.orb +56 -1
  46. package/behaviors/registry/ui/core/atoms/ui-icon.orb +1 -10
  47. package/behaviors/registry/ui/core/atoms/ui-input.orb +42 -7
  48. package/behaviors/registry/ui/core/atoms/ui-law-reference-tooltip.orb +27 -1
  49. package/behaviors/registry/ui/core/atoms/ui-select.orb +69 -9
  50. package/behaviors/registry/ui/core/molecules/ui-accordion.orb +30 -1
  51. package/behaviors/registry/ui/core/molecules/ui-branching-logic-builder.orb +76 -13
  52. package/behaviors/registry/ui/core/molecules/ui-breadcrumb.orb +30 -1
  53. package/behaviors/registry/ui/core/molecules/ui-chart-legend.orb +15 -1
  54. package/behaviors/registry/ui/core/molecules/ui-chart.orb +133 -1
  55. package/behaviors/registry/ui/core/molecules/ui-code-block.orb +77 -1
  56. package/behaviors/registry/ui/core/molecules/ui-confirm-dialog.orb +22 -1
  57. package/behaviors/registry/ui/core/molecules/ui-content-renderer.orb +34 -1
  58. package/behaviors/registry/ui/core/molecules/ui-data-grid.orb +99 -1
  59. package/behaviors/registry/ui/core/molecules/ui-data-list.orb +118 -1
  60. package/behaviors/registry/ui/core/molecules/ui-date-range-picker.orb +27 -1
  61. package/behaviors/registry/ui/core/molecules/ui-date-range-selector.orb +15 -1
  62. package/behaviors/registry/ui/core/molecules/ui-doc-breadcrumb.orb +14 -1
  63. package/behaviors/registry/ui/core/molecules/ui-doc-pagination.orb +35 -1
  64. package/behaviors/registry/ui/core/molecules/ui-doc-toc.orb +20 -1
  65. package/behaviors/registry/ui/core/molecules/ui-document-details.orb +65 -3
  66. package/behaviors/registry/ui/core/molecules/ui-document-panel.orb +22 -1
  67. package/behaviors/registry/ui/core/molecules/ui-document-viewer.orb +60 -1
  68. package/behaviors/registry/ui/core/molecules/ui-drawer.orb +1 -8
  69. package/behaviors/registry/ui/core/molecules/ui-edge-decoration.orb +1 -9
  70. package/behaviors/registry/ui/core/molecules/ui-feature-grid.orb +39 -1
  71. package/behaviors/registry/ui/core/molecules/ui-filter-group.orb +39 -1
  72. package/behaviors/registry/ui/core/molecules/ui-floating-action-button.orb +29 -10
  73. package/behaviors/registry/ui/core/molecules/ui-form-actions.orb +85 -1
  74. package/behaviors/registry/ui/core/molecules/ui-form-layout.orb +22 -1
  75. package/behaviors/registry/ui/core/molecules/ui-fx-overlay.orb +76 -1
  76. package/behaviors/registry/ui/core/molecules/ui-gradient-divider.orb +1 -10
  77. package/behaviors/registry/ui/core/molecules/ui-graph-canvas.orb +421 -1
  78. package/behaviors/registry/ui/core/molecules/ui-graph-view.orb +92 -1
  79. package/behaviors/registry/ui/core/molecules/ui-header.orb +59 -1
  80. package/behaviors/registry/ui/core/molecules/ui-import-preview-tree.orb +125 -2
  81. package/behaviors/registry/ui/core/molecules/ui-import-progress.orb +17 -1
  82. package/behaviors/registry/ui/core/molecules/ui-import-source-picker.orb +39 -1
  83. package/behaviors/registry/ui/core/molecules/ui-input-group.orb +42 -7
  84. package/behaviors/registry/ui/core/molecules/ui-jazari-state-machine.orb +22 -1
  85. package/behaviors/registry/ui/core/molecules/ui-lightbox.orb +17 -1
  86. package/behaviors/registry/ui/core/molecules/ui-likert-scale.orb +15 -1
  87. package/behaviors/registry/ui/core/molecules/ui-line-chart.orb +18 -1
  88. package/behaviors/registry/ui/core/molecules/ui-map-view.orb +109 -1
  89. package/behaviors/registry/ui/core/molecules/ui-matrix-question.orb +27 -1
  90. package/behaviors/registry/ui/core/molecules/ui-meter.orb +57 -1
  91. package/behaviors/registry/ui/core/molecules/ui-option-constraint-group.orb +27 -1
  92. package/behaviors/registry/ui/core/molecules/ui-orbital-visualization.orb +78 -4
  93. package/behaviors/registry/ui/core/molecules/ui-page-header.orb +91 -1
  94. package/behaviors/registry/ui/core/molecules/ui-qr-scanner.orb +20 -1
  95. package/behaviors/registry/ui/core/molecules/ui-relation-select.orb +23 -1
  96. package/behaviors/registry/ui/core/molecules/ui-repeatable-form-section.orb +18 -1
  97. package/behaviors/registry/ui/core/molecules/ui-reply-tree.orb +5 -2
  98. package/behaviors/registry/ui/core/molecules/ui-section.orb +22 -1
  99. package/behaviors/registry/ui/core/molecules/ui-signature-pad.orb +22 -1
  100. package/behaviors/registry/ui/core/molecules/ui-social-proof.orb +18 -1
  101. package/behaviors/registry/ui/core/molecules/ui-split.orb +22 -1
  102. package/behaviors/registry/ui/core/molecules/ui-stat-display.orb +22 -1
  103. package/behaviors/registry/ui/core/molecules/ui-swipeable-row.orb +64 -4
  104. package/behaviors/registry/ui/core/molecules/ui-table-view.orb +136 -1
  105. package/behaviors/registry/ui/core/molecules/ui-tabs.orb +301 -1
  106. package/behaviors/registry/ui/core/molecules/ui-upload-drop-zone.orb +25 -1
  107. package/behaviors/registry/ui/core/molecules/ui-version-diff.orb +28 -1
  108. package/behaviors/registry/ui/core/molecules/ui-violation-alert.orb +46 -1
  109. package/behaviors/registry/ui/core/molecules/ui-wizard-container.orb +518 -102
  110. package/behaviors/registry/ui/core/molecules/ui-wizard-progress.orb +19 -1
  111. package/behaviors/registry/ui/core/organisms/ui-chat-bar.orb +22 -1
  112. package/behaviors/registry/ui/core/organisms/ui-dashboard-grid.orb +40 -1
  113. package/behaviors/registry/ui/core/organisms/ui-detail-panel.orb +196 -1
  114. package/behaviors/registry/ui/core/organisms/ui-drawer-slot.orb +22 -1
  115. package/behaviors/registry/ui/core/organisms/ui-entity-cards.orb +83 -14
  116. package/behaviors/registry/ui/core/organisms/ui-entity-list.orb +64 -8
  117. package/behaviors/registry/ui/core/organisms/ui-entity-table.orb +152 -14
  118. package/behaviors/registry/ui/core/organisms/ui-form-section.orb +1140 -15
  119. package/behaviors/registry/ui/core/organisms/ui-form.orb +1140 -15
  120. package/behaviors/registry/ui/core/organisms/ui-master-detail.orb +22 -1
  121. package/behaviors/registry/ui/core/organisms/ui-media-gallery.orb +71 -1
  122. package/behaviors/registry/ui/core/organisms/ui-modal-slot.orb +22 -1
  123. package/behaviors/registry/ui/core/organisms/ui-segment-renderer.orb +29 -1
  124. package/behaviors/registry/ui/core/organisms/ui-stat-card.orb +61 -7
  125. package/behaviors/registry/ui/core/organisms/ui-state-machine-view.orb +22 -1
  126. package/behaviors/registry/ui/core/organisms/ui-subagent-trace-panel.orb +37 -7
  127. package/behaviors/registry/ui/core/organisms/ui-tabbed-container.orb +31 -1
  128. package/behaviors/registry/ui/core/organisms/ui-timeline.orb +73 -1
  129. package/behaviors/registry/ui/core/organisms/ui-toast-slot.orb +22 -1
  130. package/behaviors/registry/ui/game/atoms/std-fx-narrative.orb +695 -0
  131. package/behaviors/registry/ui/game/atoms/std-pickup.orb +835 -0
  132. package/behaviors/registry/ui/game/atoms/std-platformer-body.orb +1515 -1041
  133. package/behaviors/registry/ui/game/atoms/ui-action-palette.orb +269 -1
  134. package/behaviors/registry/ui/game/atoms/ui-action-tile.orb +288 -1
  135. package/behaviors/registry/ui/game/atoms/ui-canvas-2d.orb +54 -1
  136. package/behaviors/registry/ui/game/atoms/ui-canvas.orb +311 -1
  137. package/behaviors/registry/ui/game/atoms/ui-choice-button.orb +56 -1
  138. package/behaviors/registry/ui/game/atoms/ui-control-button.orb +59 -20
  139. package/behaviors/registry/ui/game/atoms/ui-control-grid.orb +186 -7
  140. package/behaviors/registry/ui/game/atoms/ui-dialogue-bubble.orb +56 -1
  141. package/behaviors/registry/ui/game/atoms/ui-draw-fx-layer.orb +233 -1
  142. package/behaviors/registry/ui/game/atoms/ui-draw-group.orb +137 -1
  143. package/behaviors/registry/ui/game/atoms/ui-draw-mesh.orb +219 -1
  144. package/behaviors/registry/ui/game/atoms/ui-draw-shape-layer.orb +951 -1
  145. package/behaviors/registry/ui/game/atoms/ui-draw-shape.orb +512 -1
  146. package/behaviors/registry/ui/game/atoms/ui-draw-sprite-layer.orb +270 -1
  147. package/behaviors/registry/ui/game/atoms/ui-draw-sprite.orb +106 -1
  148. package/behaviors/registry/ui/game/atoms/ui-draw-text-layer.orb +85 -1
  149. package/behaviors/registry/ui/game/atoms/ui-draw-text.orb +19 -1
  150. package/behaviors/registry/ui/game/atoms/ui-game-audio-toggle.orb +128 -1
  151. package/behaviors/registry/ui/game/atoms/ui-game-hud.orb +168 -8
  152. package/behaviors/registry/ui/game/atoms/ui-game-menu.orb +151 -13
  153. package/behaviors/registry/ui/game/atoms/ui-health-bar.orb +109 -1
  154. package/behaviors/registry/ui/game/atoms/ui-score-display.orb +56 -1
  155. package/behaviors/registry/ui/game/atoms/ui-sequence-bar.orb +523 -1
  156. package/behaviors/registry/ui/game/atoms/ui-stat-badge.orb +112 -22
  157. package/behaviors/registry/ui/game/atoms/ui-state-graph.orb +24 -1
  158. package/behaviors/registry/ui/game/atoms/ui-state-json-view.orb +20 -1
  159. package/behaviors/registry/ui/game/atoms/ui-trait-slot.orb +849 -1
  160. package/behaviors/registry/ui/learning/atoms/ui-algo-graph-canvas.orb +289 -1
  161. package/behaviors/registry/ui/learning/atoms/ui-algorithm-canvas.orb +424 -1
  162. package/behaviors/registry/ui/learning/atoms/ui-biology-canvas.orb +925 -1
  163. package/behaviors/registry/ui/learning/atoms/ui-chemistry-canvas.orb +970 -1
  164. package/behaviors/registry/ui/learning/atoms/ui-learning-canvas.orb +351 -1
  165. package/behaviors/registry/ui/learning/atoms/ui-math-canvas.orb +592 -1
  166. package/behaviors/registry/ui/learning/atoms/ui-physics-canvas.orb +1049 -1
  167. package/behaviors/registry/ui/marketing/atoms/ui-community-links.orb +36 -1
  168. package/behaviors/registry/ui/marketing/atoms/ui-cta-banner.orb +27 -1
  169. package/behaviors/registry/ui/marketing/atoms/ui-hero-section.orb +39 -1
  170. package/behaviors/registry/ui/marketing/atoms/ui-marketing-footer.orb +55 -1
  171. package/behaviors/registry/ui/marketing/atoms/ui-pricing-card.orb +15 -1
  172. package/behaviors/registry/ui/marketing/atoms/ui-pricing-grid.orb +65 -1
  173. package/behaviors/registry/ui/marketing/atoms/ui-service-catalog.orb +19 -1
  174. package/behaviors/registry/ui/marketing/atoms/ui-showcase-card.orb +15 -1
  175. package/behaviors/registry/ui/marketing/atoms/ui-split-section.orb +15 -1
  176. package/behaviors/registry/ui/marketing/atoms/ui-stats-grid.orb +15 -1
  177. package/behaviors/registry/ui/marketing/atoms/ui-step-flow.orb +23 -1
  178. package/behaviors/registry/ui/marketing/atoms/ui-tag-cloud.orb +18 -1
  179. package/behaviors/registry/ui/marketing/organisms/ui-book-viewer.orb +84 -1
  180. package/behaviors/registry/ui/marketing/organisms/ui-case-study-organism.orb +22 -1
  181. package/behaviors/registry/ui/marketing/organisms/ui-feature-grid-organism.orb +22 -1
  182. package/behaviors/registry/ui/marketing/organisms/ui-hero-organism.orb +52 -1
  183. package/behaviors/registry/ui/marketing/organisms/ui-pricing-organism.orb +22 -1
  184. package/behaviors/registry/ui/marketing/organisms/ui-showcase-organism.orb +32 -1
  185. package/behaviors/registry/ui/marketing/organisms/ui-stats-organism.orb +22 -1
  186. package/behaviors/registry/ui/marketing/organisms/ui-step-flow-organism.orb +22 -1
  187. package/behaviors/registry/ui/marketing/organisms/ui-team-organism.orb +22 -1
  188. package/behaviors/registry/ui/marketing/templates/ui-about-page-template.orb +176 -1
  189. package/behaviors/registry/ui/marketing/templates/ui-feature-detail-page-template.orb +147 -1
  190. package/behaviors/registry/ui/marketing/templates/ui-landing-page-template.orb +260 -1
  191. package/behaviors/registry/ui/marketing/templates/ui-pricing-page-template.orb +98 -1
  192. package/dist/behaviors/exports-reader.js +3302 -2594
  193. package/dist/behaviors/functions/index.d.ts +203 -29
  194. package/dist/behaviors/functions/index.js +3297 -2595
  195. package/dist/behaviors/index.d.ts +1 -1
  196. package/dist/behaviors/index.js +3303 -2595
  197. package/dist/behaviors/query.js +3302 -2594
  198. package/dist/behaviors-embeddings.hash.json +3 -3
  199. package/dist/behaviors-embeddings.json +9 -1
  200. package/dist/behaviors-registry.json +530 -8
  201. package/dist/index.d.ts +1 -1
  202. package/dist/index.js +3303 -2595
  203. package/dist/knob-embeddings.hash.json +3 -3
  204. package/dist/knob-embeddings.json +1 -1
  205. package/dist/registry/factory-signatures.json +1 -1
  206. package/package.json +2 -2
@@ -46,13 +46,13 @@ orbital BehaviorViewOrbital {
46
46
  from : string!
47
47
  to : string!
48
48
  event : string!
49
- guard : opaque!
49
+ guard : SExpr!
50
50
  effects : [BehaviorViewDataTraitDetailsValueTransitionsItemEffectsItem]!
51
51
  index : number!
52
52
  }
53
53
  type BehaviorViewDataTraitDetailsValueTransitionsItemEffectsItem = {
54
54
  type : string!
55
- args : [opaque]!
55
+ args : [SExpr]!
56
56
  }
57
57
  type BehaviorViewDataExternalLinksItem = {
58
58
  targetOrbital : string!
@@ -47,13 +47,13 @@ orbital ModuleCardOrbital {
47
47
  from : string!
48
48
  to : string!
49
49
  event : string!
50
- guard : opaque!
50
+ guard : SExpr!
51
51
  effects : [ModuleCardDataTraitDetailsValueTransitionsItemEffectsItem]!
52
52
  index : number!
53
53
  }
54
54
  type ModuleCardDataTraitDetailsValueTransitionsItemEffectsItem = {
55
55
  type : string!
56
- args : [opaque]!
56
+ args : [SExpr]!
57
57
  }
58
58
  type ModuleCardDataExternalLinksItem = {
59
59
  targetOrbital : string!
@@ -1,7 +1,7 @@
1
1
  app std-app-layout "1.4.1"
2
2
  "std-app-layout — dashboard-layout chrome (sidebar nav + top bar with search + topBarActions + notifications) wrapping a single contentTrait slot. Use for list-style apps (CMS / helpdesk / CRM) and account/settings pages: the chrome stays stable while the consumer's content trait renders the data, and the consumer can add domain icons (cart / profile / help) via topBarActions. Bind once per orbital — the consumer rebinds linkedEntity via `XAppLayout = AppShell.traits.AppLayout -> XEntity` so multiple orbitals in one file each get their own chrome without colliding on a shared atom entity."
3
3
  ;; @capabilities "settings page shell, preferences page, account settings layout, profile settings, admin console shell"
4
- type NavItem = { label : string!, href : string!, icon : string, badge : string, children : [json] }
4
+ type NavItem = { label : string!, href : string!, icon : string, badge : string, children : [NavItem] }
5
5
  type ItemAction = { label : string!, event : event, navigatesTo : string, variant : string, icon : string }
6
6
  type NotificationSpec = { id : string, message : string, variant : string }
7
7
  orbital AppLayoutOrbital {
@@ -2,7 +2,7 @@ app std-file-store "2.0.0"
2
2
  "std-file-store — the generic file/page tree primitive. A file-tree + config-driven data table over a hierarchical collection; opens a row in `viewing_single` with config-driven detail actions. Rebindable: pass `fields`/`itemActions`/`detailActions`/`tree` to retarget it at any hierarchical entity (files, wiki pages, note trees). Folds in the former std-page-tree via `reorderable` + a page field/action set."
3
3
  type FieldSpec = { name : string!, label : string, variant : "h3" | "h4" | "body" | "caption" | "badge" | "small" | "progress", icon : string, format : "date" | "currency" | "number" | "boolean" | "percent", key : string, header : string }
4
4
  type ItemAction = { label : string!, event : event!, variant : "primary" | "secondary" | "ghost" | "danger", icon : string }
5
- type TreeNode = { name : string!, path : string!, type : "file" | "dir"!, children : [object] }
5
+ type TreeNode = { name : string!, path : string!, type : "file" | "dir"!, children : [TreeNode] }
6
6
  orbital StoredFileOrbital {
7
7
  type StoredFileLoaded = Event { data : [StoredFile] } "Fired when the collection finishes loading"
8
8
 
@@ -2,10 +2,17 @@ app ui-conditional-wrapper "1.0.0"
2
2
  "ConditionalWrapper — UI factory (1:1 with the @almadar/ui conditional-wrapper pattern)."
3
3
  orbital ConditionalWrapperOrbital {
4
4
  type ConditionalWrapperContext = {
5
- formValues : opaque!
6
- globalVariables : opaque!
7
- localVariables : opaque
8
- entity : opaque
5
+ formValues : Map string ControlValue!
6
+ globalVariables : Map string ControlValue!
7
+ localVariables : Map string ControlValue
8
+ entity : Map string ControlValue
9
+ }
10
+ type ControlValue = string | number | boolean | [string] | FileValue
11
+ type FileValue = {
12
+ name : string!
13
+ url : string!
14
+ mimeType : string!
15
+ sizeBytes : number!
9
16
  }
10
17
 
11
18
  entity ConditionalWrapperItem [runtime] {
@@ -36,7 +36,7 @@ orbital IconOrbital {
36
36
  @label "Size"
37
37
  @description "Size of the icon"
38
38
  @tier "presentation"
39
- color : "primary" | "secondary" | "success" | "warning" | "error" | "muted" = primary
39
+ color : string
40
40
  @label "Color"
41
41
  @description "Semantic palette token or an arbitrary Tailwind color class."
42
42
  @tier "presentation"
@@ -63,9 +63,12 @@ orbital InputOrbital {
63
63
 
64
64
  emits {
65
65
  @config.action -> external {
66
- value : string!
66
+ value : match @config.inputType {
67
+ "number" -> number
68
+ _ -> string
69
+ }!
67
70
  }
68
- @description "Declarative event name for trait dispatch"
71
+ @description "Declarative event name for trait dispatch."
69
72
  @tier "essential"
70
73
  @config.onClear -> external { }
71
74
  @description "Callback or declarative event key when clear button is clicked"
@@ -77,7 +80,10 @@ orbital InputOrbital {
77
80
 
78
81
  listens {
79
82
  ACTION {
80
- value : string!
83
+ value : match @config.inputType {
84
+ "number" -> number
85
+ _ -> string
86
+ }!
81
87
  }
82
88
  }
83
89
 
@@ -100,7 +106,7 @@ orbital InputOrbital {
100
106
  @tier "presentation"
101
107
  action : event = "ACTION"
102
108
  @label "Action"
103
- @description "Declarative event name for trait dispatch"
109
+ @description "Declarative event name for trait dispatch."
104
110
  @tier "presentation"
105
111
  inputType : "text" | "email" | "password" | "number" | "tel" | "url" | "search" | "date" | "datetime-local" | "time" | "checkbox" | "select" | "textarea" = text
106
112
  @label "Input Type"
@@ -41,8 +41,10 @@ orbital SelectOrbital {
41
41
  }
42
42
 
43
43
  emits {
44
- @config.action -> external { }
45
- @description "Declarative event name for trait dispatch"
44
+ @config.action -> external {
45
+ value : string!
46
+ }
47
+ @description "Declarative event name for trait dispatch — emits `{ value }` on selection commit (same gestures as `onChange`)."
46
48
  @tier "essential"
47
49
  @config.onChange -> external { }
48
50
  @description "onChange handler (native ChangeEvent) or declarative event key for trait dispatch"
@@ -69,13 +71,13 @@ orbital SelectOrbital {
69
71
  @label "Placeholder"
70
72
  @description "Placeholder text"
71
73
  @tier "presentation"
72
- value : [string] = []
74
+ value : string
73
75
  @label "Value"
74
76
  @description "Current value (string for single, string[] for multiple)"
75
77
  @tier "presentation"
76
78
  action : event = "ACTION"
77
79
  @label "Action"
78
- @description "Declarative event name for trait dispatch"
80
+ @description "Declarative event name for trait dispatch — emits `{ value }` on selection commit (same gestures as `onChange`)."
79
81
  @tier "presentation"
80
82
  error : string
81
83
  @label "Error"
@@ -10,15 +10,15 @@ orbital BranchingLogicBuilderOrbital {
10
10
  id : string!
11
11
  sourceQuestionId : string!
12
12
  operator : "equals" | "not-equals" | "contains" | "in"!
13
- value : [string]!
14
- targetQuestionId : json!
13
+ value : string!
14
+ targetQuestionId : string!
15
15
  }
16
16
  type BranchingLogicBuilderRULESCHANGERulesItem = {
17
17
  id : string!
18
18
  sourceQuestionId : string!
19
19
  operator : "equals" | "not-equals" | "contains" | "in"!
20
- value : [string]!
21
- targetQuestionId : json!
20
+ value : string!
21
+ targetQuestionId : string!
22
22
  }
23
23
 
24
24
  entity BranchingLogicBuilderItem [runtime] {
@@ -54,7 +54,7 @@ orbital BranchingLogicBuilderOrbital {
54
54
  @label "Questions"
55
55
  @description "questions prop"
56
56
  @tier "presentation"
57
- rules : [BranchingLogicBuilderRulesItem] = [{ id: "Id", sourceQuestionId: "Source Question Id", operator: equals, value: ["Item", "Item 2"], targetQuestionId: "Target Question Id" }, { id: "Id 2", sourceQuestionId: "Source Question Id 2", operator: "not-equals", value: ["Item", "Item 2"], targetQuestionId: "Target Question Id 2" }]
57
+ rules : [BranchingLogicBuilderRulesItem] = [{ id: "Id", sourceQuestionId: "Source Question Id", operator: equals, value: "Value", targetQuestionId: "Target Question Id" }, { id: "Id 2", sourceQuestionId: "Source Question Id 2", operator: "not-equals", value: "Value 2", targetQuestionId: "Target Question Id 2" }]
58
58
  @label "Rules"
59
59
  @description "Rules. Accepts either a typed array (direct consumers) or the runtime payload shape from a render-ui binding (`@payload.data`). Narrowed to `[]` internally when the value isn't an array."
60
60
  @tier "presentation"
@@ -14,6 +14,13 @@ orbital DocumentDetailsOrbital {
14
14
  format : "date" | "currency" | "number" | "boolean" | "percent"
15
15
  type : string
16
16
  }
17
+ type ControlValue = string | number | boolean | [string] | FileValue
18
+ type FileValue = {
19
+ name : string!
20
+ url : string!
21
+ mimeType : string!
22
+ sizeBytes : number!
23
+ }
17
24
 
18
25
  entity DocumentDetailsItem [runtime] {
19
26
  id : string!
@@ -59,7 +66,7 @@ orbital DocumentDetailsOrbital {
59
66
  emits {
60
67
  @config.metaCommitEvent -> external {
61
68
  id : string!
62
- patch : Map string opaque!
69
+ patch : Map string ControlValue!
63
70
  }
64
71
  @description "Emitted when a property commits: { id, patch } — patch carries the id plus the one changed field, ready for a partial persist update."
65
72
  @tier "essential"
@@ -79,7 +79,7 @@ orbital DrawerOrbital {
79
79
  @label "Position"
80
80
  @description "Position (left or right)"
81
81
  @tier "presentation"
82
- width : "sm" | "md" | "lg" | "xl" | "full" = md
82
+ width : string = md
83
83
  @label "Width"
84
84
  @description "Width (CSS value or preset size)"
85
85
  @tier "presentation"
@@ -35,7 +35,7 @@ orbital EdgeDecorationOrbital {
35
35
  @label "Opacity"
36
36
  @description "Overall opacity (default: 0.15)"
37
37
  @tier "presentation"
38
- color : "primary" | "secondary" | "success" | "warning" | "error" | "muted" = primary
38
+ color : string = primary
39
39
  @label "Color"
40
40
  @description "Semantic palette token or a raw CSS color value for the stroke."
41
41
  @tier "presentation"
@@ -70,7 +70,7 @@ orbital FloatingActionButtonOrbital {
70
70
  @label "Label"
71
71
  @description "Optional label shown via `aria-label` (visually hidden in single-action mode; rendered as a tooltip beside expanded actions in multi-action mode)."
72
72
  @tier "presentation"
73
- position : "bottom-right" | "bottom-left" | "bottom-center" | "top-right" | "top-left" | "top-center" = "bottom-right"
73
+ position : string = "bottom-right"
74
74
  @label "Position"
75
75
  @description "Button position"
76
76
  @tier "presentation"
@@ -18,7 +18,7 @@ orbital GradientDividerOrbital {
18
18
  }
19
19
 
20
20
  config {
21
- color : "primary" | "secondary" | "success" | "warning" | "error" | "muted" = primary
21
+ color : string
22
22
  @label "Color"
23
23
  @description "Semantic palette token or a raw CSS color value. Defaults to 'primary'."
24
24
  @tier "presentation"
@@ -4,9 +4,16 @@ orbital ImportPreviewTreeOrbital {
4
4
  type ImportPreviewTreeUnitsItem = {
5
5
  ref : string!
6
6
  targetEntity : string!
7
- fields : Map string opaque!
7
+ fields : Map string ControlValue!
8
8
  parentRef : string
9
9
  }
10
+ type ControlValue = string | number | boolean | [string] | FileValue
11
+ type FileValue = {
12
+ name : string!
13
+ url : string!
14
+ mimeType : string!
15
+ sizeBytes : number!
16
+ }
10
17
  type ImportPreviewTreeSkippedItem = {
11
18
  ref : string!
12
19
  reason : string!
@@ -65,9 +65,12 @@ orbital InputGroupOrbital {
65
65
 
66
66
  emits {
67
67
  @config.action -> external {
68
- value : string!
68
+ value : match @config.inputType {
69
+ "number" -> number
70
+ _ -> string
71
+ }!
69
72
  }
70
- @description "Declarative event name for trait dispatch"
73
+ @description "Declarative event name for trait dispatch."
71
74
  @tier "essential"
72
75
  @config.onClear -> external { }
73
76
  @description "Callback or declarative event key when clear button is clicked"
@@ -79,7 +82,10 @@ orbital InputGroupOrbital {
79
82
 
80
83
  listens {
81
84
  ACTION {
82
- value : string!
85
+ value : match @config.inputType {
86
+ "number" -> number
87
+ _ -> string
88
+ }!
83
89
  }
84
90
  }
85
91
 
@@ -102,7 +108,7 @@ orbital InputGroupOrbital {
102
108
  @tier "presentation"
103
109
  action : event = "ACTION"
104
110
  @label "Action"
105
- @description "Declarative event name for trait dispatch"
111
+ @description "Declarative event name for trait dispatch."
106
112
  @tier "presentation"
107
113
  inputType : "text" | "email" | "password" | "number" | "tel" | "url" | "search" | "date" | "datetime-local" | "time" | "checkbox" | "select" | "textarea" = text
108
114
  @label "Input Type"
@@ -2,15 +2,15 @@ app ui-orbital-visualization "1.0.0"
2
2
  "OrbitalVisualization — UI factory (1:1 with the @almadar/ui orbital-visualization pattern)."
3
3
  orbital OrbitalVisualizationOrbital {
4
4
  type OrbitalVisualizationSchema = {
5
- dataEntities : [opaque]
5
+ dataEntities : [Map string scalar]
6
6
  ui : OrbitalVisualizationSchemaUi
7
- traits : [opaque]
7
+ traits : [Map string scalar]
8
8
  }
9
9
  type OrbitalVisualizationSchemaUi = {
10
10
  pages : [OrbitalVisualizationSchemaUiPagesItem]
11
11
  }
12
12
  type OrbitalVisualizationSchemaUiPagesItem = {
13
- sections : [opaque]
13
+ sections : [Map string scalar]
14
14
  }
15
15
  type OrbitalVisualizationError = {
16
16
  message : string!
@@ -12,7 +12,7 @@ orbital ReplyTreeOrbital {
12
12
  voteCount : number = 1
13
13
  userVote : "up" | "down" | "none" = up
14
14
  collapsed : boolean = false
15
- replies : json = {}
15
+ replies : [opaque] = []
16
16
  }
17
17
 
18
18
  trait ReplyTreeRender -> @rebindable ReplyTreeItem [interaction, instance] {
@@ -6,14 +6,14 @@ orbital SwipeableRowOrbital {
6
6
  icon : icon
7
7
  variant : "primary" | "secondary" | "danger" | "ghost"
8
8
  event : event!
9
- eventPayload : opaque
9
+ eventPayload : Map string scalar
10
10
  }
11
11
  type SwipeableRowRightActionsItem = {
12
12
  label : string!
13
13
  icon : icon
14
14
  variant : "primary" | "secondary" | "danger" | "ghost"
15
15
  event : event!
16
- eventPayload : opaque
16
+ eventPayload : Map string scalar
17
17
  }
18
18
 
19
19
  entity SwipeableRowItem [runtime] {
@@ -53,7 +53,7 @@ orbital SwipeableRowOrbital {
53
53
  @label "Children"
54
54
  @description "children prop"
55
55
  @tier "presentation"
56
- itemData : opaque
56
+ itemData : Map string scalar = {}
57
57
  @label "Item Data"
58
58
  @description "itemData prop"
59
59
  @tier "presentation"
@@ -25,12 +25,12 @@ orbital WizardContainerOrbital {
25
25
  description : string
26
26
  fields : [WizardContainerStepsItemSectionsItemFieldsItem]
27
27
  subsections : [WizardContainerStepsItemSectionsItem]
28
- condition : [opaque]
28
+ condition : SExpr
29
29
  repeatable : boolean
30
30
  minItems : number
31
31
  addButtonLabel : string
32
32
  hiddenCalculations : [WizardContainerStepsItemSectionsItemHiddenCalculationsItem]
33
- dataSource : opaque
33
+ dataSource : Map string ControlValue
34
34
  readOnly : boolean
35
35
  }
36
36
  type WizardContainerStepsItemSectionsItemFieldsItem = {
@@ -40,23 +40,23 @@ orbital WizardContainerOrbital {
40
40
  required : boolean
41
41
  repeatable : boolean
42
42
  options : [WizardContainerStepsItemSectionsItemFieldsItemOptionsItem]
43
- defaultValue : opaque
44
- condition : [opaque]
43
+ defaultValue : [string]
44
+ condition : SExpr
45
45
  placeholder : string
46
46
  entityField : string
47
47
  minLength : number
48
48
  maxLength : number
49
- dataSource : opaque
49
+ dataSource : Map string ControlValue
50
50
  displayFields : [string]
51
- searchConfig : opaque
51
+ searchConfig : Map string ControlValue
52
52
  hiddenCalculations : [WizardContainerStepsItemSectionsItemFieldsItemHiddenCalculationsItem]
53
- signatureConfig : opaque
54
- displayTemplate : opaque
55
- lawReference : opaque
53
+ signatureConfig : Map string ControlValue
54
+ displayTemplate : Map string ControlValue
55
+ lawReference : Map string ControlValue
56
56
  contextMenu : [string]
57
- calculated : opaque
57
+ calculated : Map string ControlValue
58
58
  readOnly : boolean
59
- minDate : opaque
59
+ minDate : string
60
60
  stats : [WizardContainerStepsItemSectionsItemFieldsItemStatsItem]
61
61
  items : [WizardContainerStepsItemSectionsItemFieldsItemItemsItem]
62
62
  }
@@ -65,6 +65,13 @@ orbital WizardContainerOrbital {
65
65
  label : string!
66
66
  isDefault : boolean
67
67
  }
68
+ type ControlValue = string | number | boolean | [string] | FileValue
69
+ type FileValue = {
70
+ name : string!
71
+ url : string!
72
+ mimeType : string!
73
+ sizeBytes : number!
74
+ }
68
75
  type WizardContainerStepsItemSectionsItemFieldsItemHiddenCalculationsItem = {
69
76
  variable : string!
70
77
  expression : string!
@@ -72,13 +79,13 @@ orbital WizardContainerOrbital {
72
79
  }
73
80
  type WizardContainerStepsItemSectionsItemFieldsItemStatsItem = {
74
81
  label : string!
75
- value : opaque!
82
+ value : [string]!
76
83
  icon : string
77
84
  }
78
85
  type WizardContainerStepsItemSectionsItemFieldsItemItemsItem = {
79
86
  id : string!
80
87
  label : string!
81
- autoCheck : opaque
88
+ autoCheck : boolean
82
89
  }
83
90
  type WizardContainerStepsItemSectionsItemHiddenCalculationsItem = {
84
91
  variable : string!
@@ -87,12 +94,12 @@ orbital WizardContainerOrbital {
87
94
  }
88
95
  type WizardContainerStepsItemEntityMapping = {
89
96
  entity : string!
90
- mode : "search_or_create" | "create_multiple" | "select_one" | "update"!
97
+ mode : string!
91
98
  parentField : string
92
99
  idField : string
93
100
  }
94
101
  type WizardContainerStepsItemValidationRulesItem = {
95
- condition : [opaque]!
102
+ condition : SExpr!
96
103
  message : string!
97
104
  }
98
105
  type WizardContainerStepsItemLawReferencesItem = {
@@ -156,7 +163,7 @@ orbital WizardContainerOrbital {
156
163
  }
157
164
 
158
165
  config {
159
- steps : [WizardContainerStepsItem] = [{ id: "Id", tabId: "Tab Id", title: "Title", name: "Name", description: "Description", content: "Content", optional: false, sections: [{ id: "Id", title: "Title", description: "Description", fields: [{ id: "Id", type: "Type", label: "Label", required: false, repeatable: false, options: [], condition: [], placeholder: "Placeholder", entityField: "Entity Field", minLength: 1, maxLength: 1, displayFields: [], hiddenCalculations: [], contextMenu: [], readOnly: false, stats: [], items: [] }, { id: "Id 2", type: "Type 2", label: "Label 2", required: true, repeatable: true, options: [], condition: [], placeholder: "Placeholder 2", entityField: "Entity Field 2", minLength: 2, maxLength: 2, displayFields: [], hiddenCalculations: [], contextMenu: [], readOnly: true, stats: [], items: [] }], subsections: [], condition: [], repeatable: false, minItems: 1, addButtonLabel: "Add Button Label", hiddenCalculations: [{ variable: "Variable", expression: "Expression", scope: "Scope" }, { variable: "Variable 2", expression: "Expression 2", scope: "Scope 2" }], readOnly: false }, { id: "Id 2", title: "Title 2", description: "Description 2", fields: [{ id: "Id", type: "Type", label: "Label", required: false, repeatable: false, options: [], condition: [], placeholder: "Placeholder", entityField: "Entity Field", minLength: 1, maxLength: 1, displayFields: [], hiddenCalculations: [], contextMenu: [], readOnly: false, stats: [], items: [] }, { id: "Id 2", type: "Type 2", label: "Label 2", required: true, repeatable: true, options: [], condition: [], placeholder: "Placeholder 2", entityField: "Entity Field 2", minLength: 2, maxLength: 2, displayFields: [], hiddenCalculations: [], contextMenu: [], readOnly: true, stats: [], items: [] }], subsections: [], condition: [], repeatable: true, minItems: 2, addButtonLabel: "Add Button Label 2", hiddenCalculations: [{ variable: "Variable", expression: "Expression", scope: "Scope" }, { variable: "Variable 2", expression: "Expression 2", scope: "Scope 2" }], readOnly: true }], globalVariablesRequired: ["Item", "Item 2"], globalVariablesSet: ["Item", "Item 2"], localVariables: ["Item", "Item 2"], entityMapping: { entity: "Entity", mode: "search_or_create", parentField: "Parent Field", idField: "Id Field" }, validationRules: [{ condition: [], message: "Message" }, { condition: [], message: "Message 2" }], lawReferences: [{ law: "Law", article: "Article", description: "Description" }, { law: "Law 2", article: "Article 2", description: "Description 2" }], phase: "Phase", contextMenu: ["Item", "Item 2"] }, { id: "Id 2", tabId: "Tab Id 2", title: "Title 2", name: "Name 2", description: "Description 2", content: "Content 2", optional: true, sections: [{ id: "Id", title: "Title", description: "Description", fields: [{ id: "Id", type: "Type", label: "Label", required: false, repeatable: false, options: [], condition: [], placeholder: "Placeholder", entityField: "Entity Field", minLength: 1, maxLength: 1, displayFields: [], hiddenCalculations: [], contextMenu: [], readOnly: false, stats: [], items: [] }, { id: "Id 2", type: "Type 2", label: "Label 2", required: true, repeatable: true, options: [], condition: [], placeholder: "Placeholder 2", entityField: "Entity Field 2", minLength: 2, maxLength: 2, displayFields: [], hiddenCalculations: [], contextMenu: [], readOnly: true, stats: [], items: [] }], subsections: [], condition: [], repeatable: false, minItems: 1, addButtonLabel: "Add Button Label", hiddenCalculations: [{ variable: "Variable", expression: "Expression", scope: "Scope" }, { variable: "Variable 2", expression: "Expression 2", scope: "Scope 2" }], readOnly: false }, { id: "Id 2", title: "Title 2", description: "Description 2", fields: [{ id: "Id", type: "Type", label: "Label", required: false, repeatable: false, options: [], condition: [], placeholder: "Placeholder", entityField: "Entity Field", minLength: 1, maxLength: 1, displayFields: [], hiddenCalculations: [], contextMenu: [], readOnly: false, stats: [], items: [] }, { id: "Id 2", type: "Type 2", label: "Label 2", required: true, repeatable: true, options: [], condition: [], placeholder: "Placeholder 2", entityField: "Entity Field 2", minLength: 2, maxLength: 2, displayFields: [], hiddenCalculations: [], contextMenu: [], readOnly: true, stats: [], items: [] }], subsections: [], condition: [], repeatable: true, minItems: 2, addButtonLabel: "Add Button Label 2", hiddenCalculations: [{ variable: "Variable", expression: "Expression", scope: "Scope" }, { variable: "Variable 2", expression: "Expression 2", scope: "Scope 2" }], readOnly: true }], globalVariablesRequired: ["Item", "Item 2"], globalVariablesSet: ["Item", "Item 2"], localVariables: ["Item", "Item 2"], entityMapping: { entity: "Entity 2", mode: "create_multiple", parentField: "Parent Field 2", idField: "Id Field 2" }, validationRules: [{ condition: [], message: "Message" }, { condition: [], message: "Message 2" }], lawReferences: [{ law: "Law", article: "Article", description: "Description" }, { law: "Law 2", article: "Article 2", description: "Description 2" }], phase: "Phase 2", contextMenu: ["Item", "Item 2"] }]
166
+ steps : [WizardContainerStepsItem] = [{ id: "Id", tabId: "Tab Id", title: "Title", name: "Name", description: "Description", content: "Content", optional: false, sections: [{ id: "Id", title: "Title", description: "Description", fields: [{ id: "Id", type: "Type", label: "Label", required: false, repeatable: false, options: [], defaultValue: [], placeholder: "Placeholder", entityField: "Entity Field", minLength: 1, maxLength: 1, displayFields: [], hiddenCalculations: [], contextMenu: [], readOnly: false, minDate: "Min Date", stats: [], items: [] }, { id: "Id 2", type: "Type 2", label: "Label 2", required: true, repeatable: true, options: [], defaultValue: [], placeholder: "Placeholder 2", entityField: "Entity Field 2", minLength: 2, maxLength: 2, displayFields: [], hiddenCalculations: [], contextMenu: [], readOnly: true, minDate: "Min Date 2", stats: [], items: [] }], subsections: [], repeatable: false, minItems: 1, addButtonLabel: "Add Button Label", hiddenCalculations: [{ variable: "Variable", expression: "Expression", scope: "Scope" }, { variable: "Variable 2", expression: "Expression 2", scope: "Scope 2" }], readOnly: false }, { id: "Id 2", title: "Title 2", description: "Description 2", fields: [{ id: "Id", type: "Type", label: "Label", required: false, repeatable: false, options: [], defaultValue: [], placeholder: "Placeholder", entityField: "Entity Field", minLength: 1, maxLength: 1, displayFields: [], hiddenCalculations: [], contextMenu: [], readOnly: false, minDate: "Min Date", stats: [], items: [] }, { id: "Id 2", type: "Type 2", label: "Label 2", required: true, repeatable: true, options: [], defaultValue: [], placeholder: "Placeholder 2", entityField: "Entity Field 2", minLength: 2, maxLength: 2, displayFields: [], hiddenCalculations: [], contextMenu: [], readOnly: true, minDate: "Min Date 2", stats: [], items: [] }], subsections: [], repeatable: true, minItems: 2, addButtonLabel: "Add Button Label 2", hiddenCalculations: [{ variable: "Variable", expression: "Expression", scope: "Scope" }, { variable: "Variable 2", expression: "Expression 2", scope: "Scope 2" }], readOnly: true }], globalVariablesRequired: ["Item", "Item 2"], globalVariablesSet: ["Item", "Item 2"], localVariables: ["Item", "Item 2"], entityMapping: { entity: "Entity", mode: "Mode", parentField: "Parent Field", idField: "Id Field" }, validationRules: [{ condition: {}, message: "Message" }, { condition: {}, message: "Message 2" }], lawReferences: [{ law: "Law", article: "Article", description: "Description" }, { law: "Law 2", article: "Article 2", description: "Description 2" }], phase: "Phase", contextMenu: ["Item", "Item 2"] }, { id: "Id 2", tabId: "Tab Id 2", title: "Title 2", name: "Name 2", description: "Description 2", content: "Content 2", optional: true, sections: [{ id: "Id", title: "Title", description: "Description", fields: [{ id: "Id", type: "Type", label: "Label", required: false, repeatable: false, options: [], defaultValue: [], placeholder: "Placeholder", entityField: "Entity Field", minLength: 1, maxLength: 1, displayFields: [], hiddenCalculations: [], contextMenu: [], readOnly: false, minDate: "Min Date", stats: [], items: [] }, { id: "Id 2", type: "Type 2", label: "Label 2", required: true, repeatable: true, options: [], defaultValue: [], placeholder: "Placeholder 2", entityField: "Entity Field 2", minLength: 2, maxLength: 2, displayFields: [], hiddenCalculations: [], contextMenu: [], readOnly: true, minDate: "Min Date 2", stats: [], items: [] }], subsections: [], repeatable: false, minItems: 1, addButtonLabel: "Add Button Label", hiddenCalculations: [{ variable: "Variable", expression: "Expression", scope: "Scope" }, { variable: "Variable 2", expression: "Expression 2", scope: "Scope 2" }], readOnly: false }, { id: "Id 2", title: "Title 2", description: "Description 2", fields: [{ id: "Id", type: "Type", label: "Label", required: false, repeatable: false, options: [], defaultValue: [], placeholder: "Placeholder", entityField: "Entity Field", minLength: 1, maxLength: 1, displayFields: [], hiddenCalculations: [], contextMenu: [], readOnly: false, minDate: "Min Date", stats: [], items: [] }, { id: "Id 2", type: "Type 2", label: "Label 2", required: true, repeatable: true, options: [], defaultValue: [], placeholder: "Placeholder 2", entityField: "Entity Field 2", minLength: 2, maxLength: 2, displayFields: [], hiddenCalculations: [], contextMenu: [], readOnly: true, minDate: "Min Date 2", stats: [], items: [] }], subsections: [], repeatable: true, minItems: 2, addButtonLabel: "Add Button Label 2", hiddenCalculations: [{ variable: "Variable", expression: "Expression", scope: "Scope" }, { variable: "Variable 2", expression: "Expression 2", scope: "Scope 2" }], readOnly: true }], globalVariablesRequired: ["Item", "Item 2"], globalVariablesSet: ["Item", "Item 2"], localVariables: ["Item", "Item 2"], entityMapping: { entity: "Entity 2", mode: "Mode 2", parentField: "Parent Field 2", idField: "Id Field 2" }, validationRules: [{ condition: {}, message: "Message" }, { condition: {}, message: "Message 2" }], lawReferences: [{ law: "Law", article: "Article", description: "Description" }, { law: "Law 2", article: "Article 2", description: "Description 2" }], phase: "Phase 2", contextMenu: ["Item", "Item 2"] }]
160
167
  @label "Steps"
161
168
  @description "Wizard steps"
162
169
  @tier "presentation"
@@ -24,8 +24,8 @@ orbital EntityCardsOrbital {
24
24
  label : string!
25
25
  event : event
26
26
  navigatesTo : string
27
- placement : "card" | "footer" | "row"
28
- variant : "primary" | "secondary" | "ghost" | "danger"
27
+ placement : string
28
+ variant : string
29
29
  }
30
30
 
31
31
  entity EntityCardsItem [runtime] {
@@ -18,7 +18,7 @@ orbital EntityListOrbital {
18
18
  label : string!
19
19
  event : event
20
20
  navigatesTo : string
21
- placement : "row" | "bulk" | "card" | "footer"
21
+ placement : string
22
22
  variant : "primary" | "secondary" | "ghost" | "danger" | "default"
23
23
  }
24
24
 
@@ -28,9 +28,9 @@ orbital EntityTableOrbital {
28
28
  label : string!
29
29
  event : event
30
30
  navigatesTo : string
31
- placement : "row" | "bulk"
31
+ placement : string
32
32
  icon : icon
33
- variant : "default" | "primary" | "secondary" | "ghost" | "danger"
33
+ variant : string
34
34
  }
35
35
  type EntityTableEmptyAction = {
36
36
  label : string!
@@ -10,7 +10,7 @@ orbital FormSectionOrbital {
10
10
  inputType : string
11
11
  placeholder : string
12
12
  required : boolean
13
- defaultValue : opaque
13
+ defaultValue : ControlValue
14
14
  options : [FormSectionFieldsItemOptionsItem]
15
15
  values : [string]
16
16
  relation : FormSectionFieldsItemRelation
@@ -22,6 +22,13 @@ orbital FormSectionOrbital {
22
22
  disabled : boolean
23
23
  hint : string
24
24
  }
25
+ type ControlValue = string | number | boolean | [string] | FileValue
26
+ type FileValue = {
27
+ name : string!
28
+ url : string!
29
+ mimeType : string!
30
+ sizeBytes : number!
31
+ }
25
32
  type FormSectionFieldsItemOptionsItem = {
26
33
  value : string!
27
34
  label : string!
@@ -69,10 +76,10 @@ orbital FormSectionOrbital {
69
76
  message : string!
70
77
  }
71
78
  type FormSectionEvaluationContext = {
72
- formValues : Map string opaque!
73
- globalVariables : Map string opaque!
74
- localVariables : Map string opaque
75
- entity : Map string opaque
79
+ formValues : Map string ControlValue!
80
+ globalVariables : Map string ControlValue!
81
+ localVariables : Map string ControlValue
82
+ entity : Map string ControlValue
76
83
  }
77
84
  type FormSectionSectionsItem = {
78
85
  id : string!
@@ -89,7 +96,7 @@ orbital FormSectionOrbital {
89
96
  inputType : string
90
97
  placeholder : string
91
98
  required : boolean
92
- defaultValue : opaque
99
+ defaultValue : ControlValue
93
100
  options : [FormSectionSectionsItemFieldsItemOptionsItem]
94
101
  values : [string]
95
102
  relation : FormSectionSectionsItemFieldsItemRelation
@@ -116,7 +123,7 @@ orbital FormSectionOrbital {
116
123
  type FormSectionFIELDCHANGEChange = {
117
124
  fieldId : string!
118
125
  value : string | number | boolean | [string] | FormSectionFIELDCHANGEChangeValue!
119
- formValues : Map string opaque!
126
+ formValues : Map string ControlValue!
120
127
  }
121
128
  type FormSectionFIELDCHANGEChangeValue = {
122
129
  name : string!
@@ -283,7 +290,7 @@ orbital FormSectionOrbital {
283
290
  @label "Class Name"
284
291
  @description "Additional CSS classes"
285
292
  @tier "presentation"
286
- mode : "create" | "edit" = create
293
+ mode : string
287
294
  @label "Mode"
288
295
  @description "Form mode — 'create' for new records, 'edit' for updating existing. Accepts `string` so schema-driven callers (whose `config.mode` is typed as `string` per the trait's declared config block) compile cleanly. The runtime treats anything other than 'edit' as 'create'."
289
296
  @tier "presentation"