@almadar/std 16.190.0 → 16.192.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 (107) hide show
  1. package/behaviors/lolo/infra/atoms/std-approval-gate.lolo +184 -18
  2. package/behaviors/lolo/infra/atoms/std-status-lifecycle.lolo +16 -3
  3. package/behaviors/lolo/ui/core/atoms/std-billable-hour.lolo +1 -0
  4. package/behaviors/lolo/ui/core/atoms/std-browse.lolo +3 -0
  5. package/behaviors/lolo/ui/core/atoms/std-image-upload-multi.lolo +37 -4
  6. package/behaviors/lolo/ui/core/atoms/std-modal.lolo +20 -6
  7. package/behaviors/lolo/ui/core/atoms/std-record-detail.lolo +40 -3
  8. package/behaviors/lolo/ui/core/atoms/std-tag-taxonomy.lolo +176 -4
  9. package/behaviors/lolo/ui/core/atoms/std-version-history.lolo +3 -1
  10. package/behaviors/lolo/ui/core/molecules/ui-calendar-grid.lolo +25 -1
  11. package/behaviors/lolo/ui/core/molecules/ui-data-grid.lolo +37 -1
  12. package/behaviors/lolo/ui/core/molecules/ui-data-list.lolo +46 -1
  13. package/behaviors/lolo/ui/core/molecules/ui-document-details.lolo +30 -2
  14. package/behaviors/lolo/ui/core/molecules/ui-document-panel.lolo +14 -29
  15. package/behaviors/lolo/ui/core/molecules/ui-positioned-canvas.lolo +19 -1
  16. package/behaviors/lolo/ui/core/molecules/ui-reply-tree.lolo +21 -1
  17. package/behaviors/lolo/ui/core/molecules/ui-sortable-list.lolo +15 -1
  18. package/behaviors/lolo/ui/core/molecules/ui-table-view.lolo +36 -1
  19. package/behaviors/lolo/ui/core/organisms/ui-detail-panel.lolo +41 -1
  20. package/behaviors/lolo/ui/core/organisms/ui-entity-cards.lolo +34 -1
  21. package/behaviors/lolo/ui/core/organisms/ui-entity-list.lolo +30 -1
  22. package/behaviors/lolo/ui/core/organisms/ui-entity-table.lolo +36 -1
  23. package/behaviors/lolo/ui/core/organisms/ui-form-section.lolo +39 -1
  24. package/behaviors/lolo/ui/core/organisms/ui-form.lolo +39 -1
  25. package/behaviors/lolo/ui/core/organisms/ui-master-detail.lolo +24 -1
  26. package/behaviors/lolo/ui/core/organisms/ui-media-gallery.lolo +30 -1
  27. package/behaviors/lolo/ui/core/organisms/ui-stat-card.lolo +37 -1
  28. package/behaviors/lolo/ui/core/organisms/ui-timeline.lolo +18 -1
  29. package/behaviors/lolo/ui/core/templates/ui-counter-template.lolo +21 -1
  30. package/behaviors/lolo/ui/core/templates/ui-generic-app-template.lolo +16 -1
  31. package/behaviors/lolo/ui/game/atoms/std-platformer-body.lolo +7 -2
  32. package/behaviors/lolo/ui/marketing/organisms/ui-book-chapter-view.lolo +12 -1
  33. package/behaviors/lolo/ui/marketing/organisms/ui-book-table-of-contents.lolo +13 -1
  34. package/behaviors/lolo/ui/marketing/organisms/ui-book-viewer.lolo +23 -1
  35. package/behaviors/lolo/ui/marketing/organisms/ui-case-study-organism.lolo +23 -1
  36. package/behaviors/lolo/ui/marketing/organisms/ui-feature-grid-organism.lolo +24 -1
  37. package/behaviors/lolo/ui/marketing/organisms/ui-hero-organism.lolo +22 -1
  38. package/behaviors/lolo/ui/marketing/organisms/ui-pricing-organism.lolo +23 -1
  39. package/behaviors/lolo/ui/marketing/organisms/ui-showcase-organism.lolo +24 -1
  40. package/behaviors/lolo/ui/marketing/organisms/ui-stats-organism.lolo +22 -1
  41. package/behaviors/lolo/ui/marketing/organisms/ui-step-flow-organism.lolo +25 -1
  42. package/behaviors/lolo/ui/marketing/organisms/ui-team-organism.lolo +23 -1
  43. package/behaviors/lolo/ui/marketing/templates/ui-about-page-template.lolo +11 -1
  44. package/behaviors/lolo/ui/marketing/templates/ui-feature-detail-page-template.lolo +11 -1
  45. package/behaviors/lolo/ui/marketing/templates/ui-landing-page-template.lolo +13 -1
  46. package/behaviors/lolo/ui/marketing/templates/ui-pricing-page-template.lolo +11 -1
  47. package/behaviors/registry/infra/atoms/std-approval-gate.orb +717 -45
  48. package/behaviors/registry/infra/atoms/std-status-lifecycle.orb +85 -10
  49. package/behaviors/registry/ui/core/atoms/std-billable-hour.orb +5 -2
  50. package/behaviors/registry/ui/core/atoms/std-browse.orb +12 -0
  51. package/behaviors/registry/ui/core/atoms/std-image-upload-multi.orb +129 -7
  52. package/behaviors/registry/ui/core/atoms/std-modal.orb +95 -3
  53. package/behaviors/registry/ui/core/atoms/std-record-detail.orb +319 -3
  54. package/behaviors/registry/ui/core/atoms/std-tag-taxonomy.orb +539 -1
  55. package/behaviors/registry/ui/core/atoms/std-version-history.orb +5 -1
  56. package/behaviors/registry/ui/core/molecules/ui-calendar-grid.orb +43 -0
  57. package/behaviors/registry/ui/core/molecules/ui-data-grid.orb +55 -0
  58. package/behaviors/registry/ui/core/molecules/ui-data-list.orb +64 -0
  59. package/behaviors/registry/ui/core/molecules/ui-document-details.orb +106 -1
  60. package/behaviors/registry/ui/core/molecules/ui-document-panel.orb +18 -80
  61. package/behaviors/registry/ui/core/molecules/ui-positioned-canvas.orb +37 -0
  62. package/behaviors/registry/ui/core/molecules/ui-reply-tree.orb +39 -0
  63. package/behaviors/registry/ui/core/molecules/ui-sortable-list.orb +45 -0
  64. package/behaviors/registry/ui/core/molecules/ui-table-view.orb +54 -0
  65. package/behaviors/registry/ui/core/organisms/ui-detail-panel.orb +59 -0
  66. package/behaviors/registry/ui/core/organisms/ui-entity-cards.orb +52 -0
  67. package/behaviors/registry/ui/core/organisms/ui-entity-list.orb +48 -0
  68. package/behaviors/registry/ui/core/organisms/ui-entity-table.orb +54 -0
  69. package/behaviors/registry/ui/core/organisms/ui-form-section.orb +57 -0
  70. package/behaviors/registry/ui/core/organisms/ui-form.orb +57 -0
  71. package/behaviors/registry/ui/core/organisms/ui-master-detail.orb +42 -0
  72. package/behaviors/registry/ui/core/organisms/ui-media-gallery.orb +48 -0
  73. package/behaviors/registry/ui/core/organisms/ui-stat-card.orb +55 -0
  74. package/behaviors/registry/ui/core/organisms/ui-timeline.orb +36 -0
  75. package/behaviors/registry/ui/core/templates/ui-counter-template.orb +39 -0
  76. package/behaviors/registry/ui/core/templates/ui-generic-app-template.orb +34 -0
  77. package/behaviors/registry/ui/game/atoms/std-platformer-body.orb +543 -496
  78. package/behaviors/registry/ui/marketing/organisms/ui-book-chapter-view.orb +30 -0
  79. package/behaviors/registry/ui/marketing/organisms/ui-book-table-of-contents.orb +31 -0
  80. package/behaviors/registry/ui/marketing/organisms/ui-book-viewer.orb +41 -0
  81. package/behaviors/registry/ui/marketing/organisms/ui-case-study-organism.orb +41 -0
  82. package/behaviors/registry/ui/marketing/organisms/ui-feature-grid-organism.orb +42 -0
  83. package/behaviors/registry/ui/marketing/organisms/ui-hero-organism.orb +40 -0
  84. package/behaviors/registry/ui/marketing/organisms/ui-pricing-organism.orb +41 -0
  85. package/behaviors/registry/ui/marketing/organisms/ui-showcase-organism.orb +42 -0
  86. package/behaviors/registry/ui/marketing/organisms/ui-stats-organism.orb +40 -0
  87. package/behaviors/registry/ui/marketing/organisms/ui-step-flow-organism.orb +43 -0
  88. package/behaviors/registry/ui/marketing/organisms/ui-team-organism.orb +41 -0
  89. package/behaviors/registry/ui/marketing/templates/ui-about-page-template.orb +29 -0
  90. package/behaviors/registry/ui/marketing/templates/ui-feature-detail-page-template.orb +29 -0
  91. package/behaviors/registry/ui/marketing/templates/ui-landing-page-template.orb +31 -0
  92. package/behaviors/registry/ui/marketing/templates/ui-pricing-page-template.orb +29 -0
  93. package/dist/behaviors/exports-reader.js +2651 -50
  94. package/dist/behaviors/functions/index.d.ts +138 -19
  95. package/dist/behaviors/functions/index.js +2650 -51
  96. package/dist/behaviors/index.d.ts +1 -1
  97. package/dist/behaviors/index.js +2652 -51
  98. package/dist/behaviors/query.js +2651 -50
  99. package/dist/behaviors-embeddings.hash.json +3 -3
  100. package/dist/behaviors-embeddings.json +961 -929
  101. package/dist/behaviors-registry.json +106 -58
  102. package/dist/index.d.ts +1 -1
  103. package/dist/index.js +2652 -51
  104. package/dist/knob-embeddings.hash.json +3 -3
  105. package/dist/knob-embeddings.json +1 -1
  106. package/dist/registry/factory-signatures.json +1 -1
  107. package/package.json +3 -3
@@ -2,7 +2,6 @@ app ui-document-panel "1.0.0"
2
2
  "DocumentPanel — a record rendered as one continuous document: editable title over the rich-text body, editing controls tucked into the header corner. — UI factory (1:1 with the @almadar/ui document-panel pattern)."
3
3
  ;; @capabilities "document page, note editor, wiki page, article editor, writing surface, rich text document, content editing canvas"
4
4
  orbital DocumentPanelOrbital {
5
- type DocumentPanelLoaded = Event { data : [DocumentPanelItem] } "DocumentPanel rows finished loading; payload.data holds the collection"
6
5
  type DocumentPanelActionsItem = {
7
6
  label : string!
8
7
  event : string
@@ -21,33 +20,13 @@ orbital DocumentPanelOrbital {
21
20
 
22
21
  state idle {
23
22
  INIT -> idle
24
- (fetch DocumentPanelItem { emit: { success: DocumentPanelLoaded } })
25
23
  (set @entity.title @config.title)
26
24
  (set @entity.value @config.value)
27
25
  (render-ui main {
28
- entity: @entity
29
- title: @entity.title
30
- subtitle: @config.subtitle
31
- value: @entity.value
32
- actions: @config.actions
33
- maxInlineActions: @config.maxInlineActions
34
- editing: @config.editing
35
- titleCommitEvent: @config.titleCommitEvent
36
- contentChangeEvent: @config.contentChangeEvent
37
- editEvent: @config.editEvent
38
- doneEvent: @config.doneEvent
39
- editLabel: @config.editLabel
40
- doneLabel: @config.doneLabel
41
- autosaveHint: @config.autosaveHint
42
- placeholder: @config.placeholder
43
- className: @config.className
44
- type: document-panel
45
- })
46
- DocumentPanelLoaded -> idle
47
- (render-ui main {
48
- entity: @payload.data
49
26
  title: @entity.title
50
27
  subtitle: @config.subtitle
28
+ coverImage: @config.coverImage
29
+ icon: @config.icon
51
30
  value: @entity.value
52
31
  actions: @config.actions
53
32
  maxInlineActions: @config.maxInlineActions
@@ -66,9 +45,10 @@ orbital DocumentPanelOrbital {
66
45
  TITLE_COMMIT -> idle
67
46
  (set @entity.title ?title)
68
47
  (render-ui main {
69
- entity: @entity
70
48
  title: @entity.title
71
49
  subtitle: @config.subtitle
50
+ coverImage: @config.coverImage
51
+ icon: @config.icon
72
52
  value: @entity.value
73
53
  actions: @config.actions
74
54
  maxInlineActions: @config.maxInlineActions
@@ -87,9 +67,10 @@ orbital DocumentPanelOrbital {
87
67
  CONTENT_CHANGE -> idle
88
68
  (set @entity.value ?value)
89
69
  (render-ui main {
90
- entity: @entity
91
70
  title: @entity.title
92
71
  subtitle: @config.subtitle
72
+ coverImage: @config.coverImage
73
+ icon: @config.icon
93
74
  value: @entity.value
94
75
  actions: @config.actions
95
76
  maxInlineActions: @config.maxInlineActions
@@ -129,10 +110,6 @@ orbital DocumentPanelOrbital {
129
110
  }
130
111
  @description "Emitted by the Done button that ends the editing session: { id }"
131
112
  @tier "essential"
132
- DocumentPanelLoaded
133
- @description "DocumentPanel rows finished loading; payload.data holds the collection."
134
- @synonyms "loaded, fetched, retrieved"
135
- @tier "essential"
136
113
  }
137
114
 
138
115
  listens {
@@ -154,6 +131,14 @@ orbital DocumentPanelOrbital {
154
131
  @label "Subtitle"
155
132
  @description "Muted byline under the title; hidden when empty"
156
133
  @tier "presentation"
134
+ coverImage : string
135
+ @label "Cover Image"
136
+ @description "Cover/hero image URL painted as a full-bleed banner above the header row (Notion/article-hero shape); hidden when empty"
137
+ @tier "presentation"
138
+ icon : icon
139
+ @label "Icon"
140
+ @description "Document icon rendered beside the title (a file glyph, a domain icon); hidden when empty"
141
+ @tier "presentation"
157
142
  value : string
158
143
  @label "Value"
159
144
  @description "The document body as rich-text HTML"
@@ -19,7 +19,7 @@ orbital PositionedCanvasOrbital {
19
19
  initial: idle
20
20
 
21
21
  state idle {
22
- INIT -> idle
22
+ INIT -> idle when @config.selfFetch
23
23
  (fetch PositionedCanvasItem { emit: { success: PositionedCanvasLoaded } })
24
24
  (render-ui main {
25
25
  items: @entity
@@ -34,6 +34,20 @@ orbital PositionedCanvasOrbital {
34
34
  className: @config.className
35
35
  type: positioned-canvas
36
36
  })
37
+ INIT -> idle when (not @config.selfFetch)
38
+ (render-ui main {
39
+ items: @entity
40
+ width: @config.width
41
+ height: @config.height
42
+ selectedId: @config.selectedId
43
+ editable: @config.editable
44
+ onSelect: @config.onSelect
45
+ onMove: @config.onMove
46
+ selectEvent: @config.selectEvent
47
+ moveEvent: @config.moveEvent
48
+ className: @config.className
49
+ type: positioned-canvas
50
+ })
37
51
  PositionedCanvasLoaded -> idle
38
52
  (render-ui main {
39
53
  items: @payload.data
@@ -106,6 +120,10 @@ orbital PositionedCanvasOrbital {
106
120
  @label "Class Name"
107
121
  @description "className prop"
108
122
  @tier "presentation"
123
+ selfFetch : boolean = true
124
+ @label "Fetch its own rows on mount?"
125
+ @description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's."
126
+ @tier "internal"
109
127
  }
110
128
  }
111
129
 
@@ -19,7 +19,7 @@ orbital ReplyTreeOrbital {
19
19
  initial: idle
20
20
 
21
21
  state idle {
22
- INIT -> idle
22
+ INIT -> idle when @config.selfFetch
23
23
  (fetch ReplyTreeItem { emit: { success: ReplyTreeLoaded } })
24
24
  (render-ui main {
25
25
  nodes: @entity
@@ -36,6 +36,22 @@ orbital ReplyTreeOrbital {
36
36
  className: @config.className
37
37
  type: reply-tree
38
38
  })
39
+ INIT -> idle when (not @config.selfFetch)
40
+ (render-ui main {
41
+ nodes: @entity
42
+ maxDepth: @config.maxDepth
43
+ onVote: @config.onVote
44
+ onReply: @config.onReply
45
+ onFlag: @config.onFlag
46
+ onContinueThread: @config.onContinueThread
47
+ voteEvent: @config.voteEvent
48
+ replyEvent: @config.replyEvent
49
+ flagEvent: @config.flagEvent
50
+ continueThreadEvent: @config.continueThreadEvent
51
+ showActions: @config.showActions
52
+ className: @config.className
53
+ type: reply-tree
54
+ })
39
55
  ReplyTreeLoaded -> idle
40
56
  (render-ui main {
41
57
  nodes: @payload.data
@@ -128,6 +144,10 @@ orbital ReplyTreeOrbital {
128
144
  @label "Class Name"
129
145
  @description "className prop"
130
146
  @tier "presentation"
147
+ selfFetch : boolean = true
148
+ @label "Fetch its own rows on mount?"
149
+ @description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's."
150
+ @tier "internal"
131
151
  }
132
152
  }
133
153
 
@@ -12,7 +12,7 @@ orbital SortableListOrbital {
12
12
  initial: idle
13
13
 
14
14
  state idle {
15
- INIT -> idle
15
+ INIT -> idle when @config.selfFetch
16
16
  (fetch SortableListItem { emit: { success: SortableListLoaded } })
17
17
  (render-ui main {
18
18
  items: @entity
@@ -23,6 +23,16 @@ orbital SortableListOrbital {
23
23
  className: @config.className
24
24
  type: sortable-list
25
25
  })
26
+ INIT -> idle when (not @config.selfFetch)
27
+ (render-ui main {
28
+ items: @entity
29
+ renderItem: (fn item { content: (object/get @item @config.itemLabelField ""), type: typography })
30
+ reorderEvent: @config.reorderEvent
31
+ reorderPayload: @config.reorderPayload
32
+ dragHandlePosition: @config.dragHandlePosition
33
+ className: @config.className
34
+ type: sortable-list
35
+ })
26
36
  SortableListLoaded -> idle
27
37
  (render-ui main {
28
38
  items: @payload.data
@@ -68,6 +78,10 @@ orbital SortableListOrbital {
68
78
  @label "Class Name"
69
79
  @description "className prop"
70
80
  @tier "presentation"
81
+ selfFetch : boolean = true
82
+ @label "Fetch its own rows on mount?"
83
+ @description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's."
84
+ @tier "internal"
71
85
  }
72
86
  }
73
87
 
@@ -50,7 +50,7 @@ orbital TableViewOrbital {
50
50
  initial: idle
51
51
 
52
52
  state idle {
53
- INIT -> idle
53
+ INIT -> idle when @config.selfFetch
54
54
  (fetch TableViewItem { emit: { success: TableViewLoaded } })
55
55
  (render-ui main {
56
56
  dragGroup: @config.dragGroup
@@ -82,6 +82,37 @@ orbital TableViewOrbital {
82
82
  look: @config.look
83
83
  type: table-view
84
84
  })
85
+ INIT -> idle when (not @config.selfFetch)
86
+ (render-ui main {
87
+ dragGroup: @config.dragGroup
88
+ accepts: @config.accepts
89
+ sortable: @config.sortable
90
+ dropEvent: @config.dropEvent
91
+ reorderEvent: @config.reorderEvent
92
+ positionEvent: @config.positionEvent
93
+ dndItemIdField: @config.dndItemIdField
94
+ dndRoot: @config.dndRoot
95
+ entity: @entity
96
+ columns: @config.columns
97
+ fields: @config.fields
98
+ itemActions: @config.itemActions
99
+ maxInlineActions: @config.maxInlineActions
100
+ itemClickEvent: @config.itemClickEvent
101
+ selectable: @config.selectable
102
+ selectEvent: @config.selectEvent
103
+ selectedIds: @config.selectedIds
104
+ sortEvent: @config.sortEvent
105
+ sortColumn: @config.sortColumn
106
+ sortDirection: @config.sortDirection
107
+ className: @config.className
108
+ emptyMessage: @config.emptyMessage
109
+ isLoading: @config.isLoading
110
+ error: @config.error
111
+ groupBy: @config.groupBy
112
+ pageSize: @config.pageSize
113
+ look: @config.look
114
+ type: table-view
115
+ })
85
116
  TableViewLoaded -> idle
86
117
  (render-ui main {
87
118
  dragGroup: @config.dragGroup
@@ -242,6 +273,10 @@ orbital TableViewOrbital {
242
273
  @label "Look"
243
274
  @description "Layer 2 visual treatment — mirrors the data-list / entity-table look enum so authors share one knob name across row renderers."
244
275
  @tier "presentation"
276
+ selfFetch : boolean = true
277
+ @label "Fetch its own rows on mount?"
278
+ @description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's."
279
+ @tier "internal"
245
280
  }
246
281
  }
247
282
 
@@ -62,7 +62,7 @@ orbital DetailPanelOrbital {
62
62
  initial: idle
63
63
 
64
64
  state idle {
65
- INIT -> idle
65
+ INIT -> idle when @config.selfFetch
66
66
  (fetch DetailPanelItem { emit: { success: DetailPanelLoaded } })
67
67
  (render-ui main {
68
68
  className: @config.className
@@ -99,6 +99,42 @@ orbital DetailPanelOrbital {
99
99
  relationsData: @config.relationsData
100
100
  type: detail-panel
101
101
  })
102
+ INIT -> idle when (not @config.selfFetch)
103
+ (render-ui main {
104
+ className: @config.className
105
+ isLoading: @config.isLoading
106
+ error: @config.error
107
+ sortBy: @config.sortBy
108
+ sortDirection: @config.sortDirection
109
+ searchValue: @config.searchValue
110
+ page: @config.pageProp
111
+ pageSize: @config.pageSize
112
+ totalCount: @config.totalCount
113
+ activeFilters: @config.activeFilters
114
+ selectedIds: @config.selectedIds
115
+ entity: @entity
116
+ title: @config.title
117
+ onTitleCommit: @config.onTitleCommit
118
+ subtitle: @config.subtitle
119
+ status: @config.status
120
+ avatar: @config.avatar
121
+ sections: @config.sections
122
+ actions: @config.actions
123
+ maxInlineActions: @config.maxInlineActions
124
+ backAction: @config.backAction
125
+ footer: @config.footer
126
+ slideOver: @config.slideOver
127
+ fields: @config.fields
128
+ fieldNames: @config.fieldNames
129
+ initialData: @entity
130
+ mode: @config.mode
131
+ position: @config.position
132
+ width: @config.width
133
+ displayFields: @config.displayFields
134
+ showActions: @config.showActions
135
+ relationsData: @config.relationsData
136
+ type: detail-panel
137
+ })
102
138
  DetailPanelLoaded -> idle
103
139
  (render-ui main {
104
140
  className: @config.className
@@ -266,6 +302,10 @@ orbital DetailPanelOrbital {
266
302
  @label "Relations Data"
267
303
  @description "Relation display data: { fieldName: [{value, label}] } — injected server-side by the runtime (relation-option injection) or bound by compiled codegen; resolves stored foreign ids to display names."
268
304
  @tier "presentation"
305
+ selfFetch : boolean = true
306
+ @label "Fetch its own rows on mount?"
307
+ @description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's."
308
+ @tier "internal"
269
309
  }
270
310
  }
271
311
 
@@ -37,7 +37,7 @@ orbital EntityCardsOrbital {
37
37
  initial: idle
38
38
 
39
39
  state idle {
40
- INIT -> idle
40
+ INIT -> idle when @config.selfFetch
41
41
  (fetch EntityCardsItem { emit: { success: EntityCardsLoaded } })
42
42
  (render-ui main {
43
43
  className: @config.className
@@ -67,6 +67,35 @@ orbital EntityCardsOrbital {
67
67
  imageField: @config.imageField
68
68
  type: entity-cards
69
69
  })
70
+ INIT -> idle when (not @config.selfFetch)
71
+ (render-ui main {
72
+ className: @config.className
73
+ isLoading: @config.isLoading
74
+ error: @config.error
75
+ sortBy: @config.sortBy
76
+ sortDirection: @config.sortDirection
77
+ searchValue: @config.searchValue
78
+ page: @config.pageProp
79
+ pageSize: @config.pageSize
80
+ totalCount: @config.totalCount
81
+ activeFilters: @config.activeFilters
82
+ selectedIds: @config.selectedIds
83
+ entity: @entity
84
+ minCardWidth: @config.minCardWidth
85
+ maxCols: @config.maxCols
86
+ gap: @config.gap
87
+ alignItems: @config.alignItems
88
+ children: @config.children
89
+ fields: @config.fields
90
+ fieldNames: @config.fieldNames
91
+ columns: @config.columns
92
+ itemActions: @config.itemActions
93
+ showTotal: @config.showTotal
94
+ showAvatar: @config.showAvatar
95
+ variant: @config.variant
96
+ imageField: @config.imageField
97
+ type: entity-cards
98
+ })
70
99
  EntityCardsLoaded -> idle
71
100
  (render-ui main {
72
101
  className: @config.className
@@ -208,6 +237,10 @@ orbital EntityCardsOrbital {
208
237
  @label "Image Field"
209
238
  @description "Entity field name containing an image URL to display as card thumbnail"
210
239
  @tier "presentation"
240
+ selfFetch : boolean = true
241
+ @label "Fetch its own rows on mount?"
242
+ @description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's."
243
+ @tier "internal"
211
244
  }
212
245
  }
213
246
 
@@ -23,7 +23,7 @@ orbital EntityListOrbital {
23
23
  initial: idle
24
24
 
25
25
  state idle {
26
- INIT -> idle
26
+ INIT -> idle when @config.selfFetch
27
27
  (fetch EntityListItem { emit: { success: EntityListLoaded } })
28
28
  (render-ui main {
29
29
  className: @config.className
@@ -49,6 +49,31 @@ orbital EntityListOrbital {
49
49
  fieldNames: @config.fieldNames
50
50
  type: entity-list
51
51
  })
52
+ INIT -> idle when (not @config.selfFetch)
53
+ (render-ui main {
54
+ className: @config.className
55
+ isLoading: @config.isLoading
56
+ error: @config.error
57
+ sortBy: @config.sortBy
58
+ sortDirection: @config.sortDirection
59
+ searchValue: @config.searchValue
60
+ page: @config.pageProp
61
+ pageSize: @config.pageSize
62
+ totalCount: @config.totalCount
63
+ activeFilters: @config.activeFilters
64
+ selectedIds: @config.selectedIds
65
+ entity: @entity
66
+ entityType: @config.entityType
67
+ selectable: @config.selectable
68
+ itemActions: @config.itemActions
69
+ showDividers: @config.showDividers
70
+ variant: @config.variant
71
+ emptyMessage: @config.emptyMessage
72
+ children: @config.children
73
+ fields: @config.fields
74
+ fieldNames: @config.fieldNames
75
+ type: entity-list
76
+ })
52
77
  EntityListLoaded -> idle
53
78
  (render-ui main {
54
79
  className: @config.className
@@ -175,6 +200,10 @@ orbital EntityListOrbital {
175
200
  @label "Field Names"
176
201
  @description "Alias for fields - backwards compatibility"
177
202
  @tier "presentation"
203
+ selfFetch : boolean = true
204
+ @label "Fetch its own rows on mount?"
205
+ @description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's."
206
+ @tier "internal"
178
207
  }
179
208
  }
180
209
 
@@ -58,7 +58,7 @@ orbital EntityTableOrbital {
58
58
  initial: idle
59
59
 
60
60
  state idle {
61
- INIT -> idle
61
+ INIT -> idle when @config.selfFetch
62
62
  (fetch EntityTableItem { emit: { success: EntityTableLoaded } })
63
63
  (render-ui main {
64
64
  className: @config.className
@@ -90,6 +90,37 @@ orbital EntityTableOrbital {
90
90
  look: @config.look
91
91
  type: entity-table
92
92
  })
93
+ INIT -> idle when (not @config.selfFetch)
94
+ (render-ui main {
95
+ className: @config.className
96
+ isLoading: @config.isLoading
97
+ error: @config.error
98
+ sortBy: @config.sortBy
99
+ sortDirection: @config.sortDirection
100
+ searchValue: @config.searchValue
101
+ page: @config.pageProp
102
+ pageSize: @config.pageSize
103
+ totalCount: @config.totalCount
104
+ activeFilters: @config.activeFilters
105
+ selectedIds: @config.selectedIds
106
+ entity: @entity
107
+ fields: @config.fields
108
+ columns: @config.columns
109
+ itemActions: @config.itemActions
110
+ emptyIcon: @config.emptyIcon
111
+ emptyTitle: @config.emptyTitle
112
+ emptyDescription: @config.emptyDescription
113
+ emptyAction: @config.emptyAction
114
+ selectable: @config.selectable
115
+ searchable: @config.searchable
116
+ searchPlaceholder: @config.searchPlaceholder
117
+ rowActions: @config.rowActions
118
+ bulkActions: @config.bulkActions
119
+ headerActions: @config.headerActions
120
+ showTotal: @config.showTotal
121
+ look: @config.look
122
+ type: entity-table
123
+ })
93
124
  EntityTableLoaded -> idle
94
125
  (render-ui main {
95
126
  className: @config.className
@@ -241,6 +272,10 @@ orbital EntityTableOrbital {
241
272
  @label "Look"
242
273
  @description "Layer 2 visual treatment — orthogonal to the semantic variant."
243
274
  @tier "presentation"
275
+ selfFetch : boolean = true
276
+ @label "Fetch its own rows on mount?"
277
+ @description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's."
278
+ @tier "internal"
244
279
  }
245
280
  }
246
281
 
@@ -127,7 +127,7 @@ orbital FormSectionOrbital {
127
127
  initial: idle
128
128
 
129
129
  state idle {
130
- INIT -> idle
130
+ INIT -> idle when @config.selfFetch
131
131
  (fetch FormSectionItem { emit: { success: FormSectionLoaded } })
132
132
  (render-ui main {
133
133
  children: @config.children
@@ -162,6 +162,40 @@ orbital FormSectionOrbital {
162
162
  repeatable: @config.repeatable
163
163
  type: form-section
164
164
  })
165
+ INIT -> idle when (not @config.selfFetch)
166
+ (render-ui main {
167
+ children: @config.children
168
+ onSubmit: @config.onSubmit
169
+ onCancel: @config.onCancel
170
+ layout: @config.layout
171
+ gap: @config.gap
172
+ className: @config.className
173
+ entity: @entity
174
+ mode: @config.mode
175
+ fields: @config.fields
176
+ initialData: @entity
177
+ isLoading: @config.isLoading
178
+ error: @config.error
179
+ submitLabel: @config.submitLabel
180
+ cancelLabel: @config.cancelLabel
181
+ showCancel: @config.showCancel
182
+ showSubmit: @config.showSubmit
183
+ title: @config.title
184
+ submitEvent: @config.submitEvent
185
+ cancelEvent: @config.cancelEvent
186
+ relationsData: @config.relationsData
187
+ relationsLoading: @config.relationsLoading
188
+ fieldOverrides: @config.fieldOverrides
189
+ conditionalFields: @config.conditionalFields
190
+ hiddenCalculations: @config.hiddenCalculations
191
+ violationTriggers: @config.violationTriggers
192
+ evaluationContext: @config.evaluationContext
193
+ sections: @config.sections
194
+ onFieldChange: @config.onFieldChange
195
+ configPath: @config.configPath
196
+ repeatable: @config.repeatable
197
+ type: form-section
198
+ })
165
199
  FormSectionLoaded -> idle
166
200
  (render-ui main {
167
201
  children: @config.children
@@ -333,6 +367,10 @@ orbital FormSectionOrbital {
333
367
  @label "Repeatable"
334
368
  @description "Whether the form supports repeatable entries"
335
369
  @tier "presentation"
370
+ selfFetch : boolean = true
371
+ @label "Fetch its own rows on mount?"
372
+ @description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's."
373
+ @tier "internal"
336
374
  }
337
375
  }
338
376
 
@@ -127,7 +127,7 @@ orbital FormOrbital {
127
127
  initial: idle
128
128
 
129
129
  state idle {
130
- INIT -> idle
130
+ INIT -> idle when @config.selfFetch
131
131
  (fetch FormItem { emit: { success: FormLoaded } })
132
132
  (render-ui main {
133
133
  children: @config.children
@@ -162,6 +162,40 @@ orbital FormOrbital {
162
162
  repeatable: @config.repeatable
163
163
  type: form
164
164
  })
165
+ INIT -> idle when (not @config.selfFetch)
166
+ (render-ui main {
167
+ children: @config.children
168
+ onSubmit: @config.onSubmit
169
+ onCancel: @config.onCancel
170
+ layout: @config.layout
171
+ gap: @config.gap
172
+ className: @config.className
173
+ entity: @entity
174
+ mode: @config.mode
175
+ fields: @config.fields
176
+ initialData: @entity
177
+ isLoading: @config.isLoading
178
+ error: @config.error
179
+ submitLabel: @config.submitLabel
180
+ cancelLabel: @config.cancelLabel
181
+ showCancel: @config.showCancel
182
+ showSubmit: @config.showSubmit
183
+ title: @config.title
184
+ submitEvent: @config.submitEvent
185
+ cancelEvent: @config.cancelEvent
186
+ relationsData: @config.relationsData
187
+ relationsLoading: @config.relationsLoading
188
+ fieldOverrides: @config.fieldOverrides
189
+ conditionalFields: @config.conditionalFields
190
+ hiddenCalculations: @config.hiddenCalculations
191
+ violationTriggers: @config.violationTriggers
192
+ evaluationContext: @config.evaluationContext
193
+ sections: @config.sections
194
+ onFieldChange: @config.onFieldChange
195
+ configPath: @config.configPath
196
+ repeatable: @config.repeatable
197
+ type: form
198
+ })
165
199
  FormLoaded -> idle
166
200
  (render-ui main {
167
201
  children: @config.children
@@ -333,6 +367,10 @@ orbital FormOrbital {
333
367
  @label "Repeatable"
334
368
  @description "Whether the form supports repeatable entries"
335
369
  @tier "presentation"
370
+ selfFetch : boolean = true
371
+ @label "Fetch its own rows on mount?"
372
+ @description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's."
373
+ @tier "internal"
336
374
  }
337
375
  }
338
376
 
@@ -17,7 +17,7 @@ orbital MasterDetailOrbital {
17
17
  initial: idle
18
18
 
19
19
  state idle {
20
- INIT -> idle
20
+ INIT -> idle when @config.selfFetch
21
21
  (fetch MasterDetailItem { emit: { success: MasterDetailLoaded } })
22
22
  (render-ui main {
23
23
  className: @config.className
@@ -37,6 +37,25 @@ orbital MasterDetailOrbital {
37
37
  loading: @config.loading
38
38
  type: master-detail
39
39
  })
40
+ INIT -> idle when (not @config.selfFetch)
41
+ (render-ui main {
42
+ className: @config.className
43
+ isLoading: @config.isLoading
44
+ error: @config.error
45
+ sortBy: @config.sortBy
46
+ sortDirection: @config.sortDirection
47
+ searchValue: @config.searchValue
48
+ page: @config.pageProp
49
+ pageSize: @config.pageSize
50
+ totalCount: @config.totalCount
51
+ activeFilters: @config.activeFilters
52
+ selectedIds: @config.selectedIds
53
+ entity: @entity
54
+ masterFields: @config.masterFields
55
+ detailFields: @config.detailFields
56
+ loading: @config.loading
57
+ type: master-detail
58
+ })
40
59
  MasterDetailLoaded -> idle
41
60
  (render-ui main {
42
61
  className: @config.className
@@ -123,6 +142,10 @@ orbital MasterDetailOrbital {
123
142
  @label "Loading"
124
143
  @description "Loading state (alias for isLoading)"
125
144
  @tier "presentation"
145
+ selfFetch : boolean = true
146
+ @label "Fetch its own rows on mount?"
147
+ @description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's."
148
+ @tier "internal"
126
149
  }
127
150
  }
128
151