@almadar/std 16.141.0 → 16.143.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 (116) hide show
  1. package/behaviors/lolo/ui/avl/molecules/ui-module-card.lolo +1 -1
  2. package/behaviors/lolo/ui/core/atoms/std-app-layout.lolo +1 -1
  3. package/behaviors/lolo/ui/core/atoms/std-app-search.lolo +22 -1
  4. package/behaviors/lolo/ui/core/atoms/std-browse.lolo +11 -1
  5. package/behaviors/lolo/ui/core/atoms/std-file-store.lolo +1 -1
  6. package/behaviors/lolo/ui/core/atoms/std-filter.lolo +3 -0
  7. package/behaviors/lolo/ui/core/atoms/std-image-upload-multi.lolo +17 -0
  8. package/behaviors/lolo/ui/core/atoms/std-saved-search.lolo +17 -0
  9. package/behaviors/lolo/ui/core/atoms/std-tag-taxonomy.lolo +17 -0
  10. package/behaviors/lolo/ui/core/atoms/std-wizard.lolo +0 -244
  11. package/behaviors/lolo/ui/core/atoms/ui-aside.lolo +1 -1
  12. package/behaviors/lolo/ui/core/atoms/ui-typography.lolo +2 -2
  13. package/behaviors/lolo/ui/core/molecules/ui-code-block.lolo +3 -3
  14. package/behaviors/lolo/ui/core/molecules/ui-data-grid.lolo +3 -4
  15. package/behaviors/lolo/ui/core/molecules/ui-data-list.lolo +2 -3
  16. package/behaviors/lolo/ui/core/molecules/ui-drawer.lolo +2 -2
  17. package/behaviors/lolo/ui/core/molecules/ui-filter-group.lolo +1 -1
  18. package/behaviors/lolo/ui/core/molecules/ui-flip-card.lolo +1 -1
  19. package/behaviors/lolo/ui/core/molecules/ui-quiz-block.lolo +1 -1
  20. package/behaviors/lolo/ui/core/molecules/ui-repeatable-form-section.lolo +1 -1
  21. package/behaviors/lolo/ui/core/molecules/ui-signature-pad.lolo +1 -1
  22. package/behaviors/lolo/ui/core/molecules/ui-sortable-list.lolo +1 -1
  23. package/behaviors/lolo/ui/core/molecules/ui-table-view.lolo +3 -4
  24. package/behaviors/lolo/ui/core/organisms/ui-entity-cards.lolo +0 -2
  25. package/behaviors/lolo/ui/core/organisms/ui-entity-list.lolo +0 -2
  26. package/behaviors/lolo/ui/core/organisms/ui-entity-table.lolo +0 -2
  27. package/behaviors/lolo/ui/core/organisms/ui-segment-renderer.lolo +2 -12
  28. package/behaviors/lolo/ui/core/organisms/ui-timeline.lolo +0 -2
  29. package/behaviors/lolo/ui/marketing/atoms/ui-marketing-stat-card.lolo +1 -1
  30. package/behaviors/lolo/ui/marketing/molecules/ui-case-study-card.lolo +1 -1
  31. package/behaviors/lolo/ui/marketing/molecules/ui-feature-card.lolo +1 -1
  32. package/behaviors/lolo/ui/marketing/molecules/ui-pricing-card.lolo +1 -1
  33. package/behaviors/registry/factory-signatures.json +286 -3335
  34. package/behaviors/registry/ui/avl/molecules/ui-module-card.orb +1 -1
  35. package/behaviors/registry/ui/core/atoms/std-app-layout.orb +6 -1
  36. package/behaviors/registry/ui/core/atoms/std-app-search.orb +83 -0
  37. package/behaviors/registry/ui/core/atoms/std-browse.orb +30 -5
  38. package/behaviors/registry/ui/core/atoms/std-file-store.orb +12 -2
  39. package/behaviors/registry/ui/core/atoms/std-filter.orb +3 -0
  40. package/behaviors/registry/ui/core/atoms/std-image-upload-multi.orb +40 -0
  41. package/behaviors/registry/ui/core/atoms/std-saved-search.orb +40 -0
  42. package/behaviors/registry/ui/core/atoms/std-tag-taxonomy.orb +40 -0
  43. package/behaviors/registry/ui/core/atoms/std-wizard.orb +0 -912
  44. package/behaviors/registry/ui/core/atoms/ui-aside.orb +1 -1
  45. package/behaviors/registry/ui/core/atoms/ui-typography.orb +4 -2
  46. package/behaviors/registry/ui/core/molecules/ui-code-block.orb +54 -32
  47. package/behaviors/registry/ui/core/molecules/ui-data-grid.orb +13 -26
  48. package/behaviors/registry/ui/core/molecules/ui-data-list.orb +13 -26
  49. package/behaviors/registry/ui/core/molecules/ui-drawer.orb +2 -2
  50. package/behaviors/registry/ui/core/molecules/ui-filter-group.orb +1 -1
  51. package/behaviors/registry/ui/core/molecules/ui-flip-card.orb +1 -1
  52. package/behaviors/registry/ui/core/molecules/ui-quiz-block.orb +1 -1
  53. package/behaviors/registry/ui/core/molecules/ui-repeatable-form-section.orb +1 -1
  54. package/behaviors/registry/ui/core/molecules/ui-signature-pad.orb +1 -1
  55. package/behaviors/registry/ui/core/molecules/ui-sortable-list.orb +1 -1
  56. package/behaviors/registry/ui/core/molecules/ui-table-view.orb +13 -26
  57. package/behaviors/registry/ui/core/organisms/ui-entity-cards.orb +0 -13
  58. package/behaviors/registry/ui/core/organisms/ui-entity-list.orb +8 -21
  59. package/behaviors/registry/ui/core/organisms/ui-entity-table.orb +0 -13
  60. package/behaviors/registry/ui/core/organisms/ui-segment-renderer.orb +4 -47
  61. package/behaviors/registry/ui/core/organisms/ui-timeline.orb +0 -13
  62. package/behaviors/registry/ui/marketing/atoms/ui-marketing-stat-card.orb +1 -1
  63. package/behaviors/registry/ui/marketing/molecules/ui-case-study-card.orb +1 -1
  64. package/behaviors/registry/ui/marketing/molecules/ui-feature-card.orb +1 -1
  65. package/behaviors/registry/ui/marketing/molecules/ui-pricing-card.orb +1 -1
  66. package/dist/behaviors/behaviors-embeddings.json +463 -463
  67. package/dist/behaviors/behaviors-registry.json +35 -26
  68. package/dist/behaviors/exports-reader.js +25 -518
  69. package/dist/behaviors/functions/index.d.ts +80 -119
  70. package/dist/behaviors/functions/index.js +23 -486
  71. package/dist/behaviors/index.d.ts +1 -1
  72. package/dist/behaviors/index.js +26 -519
  73. package/dist/behaviors/knob-embeddings.json +1 -1
  74. package/dist/behaviors/query.js +25 -518
  75. package/dist/behaviors/registry/factory-signatures.json +286 -3335
  76. package/dist/behaviors/registry/ui/avl/molecules/ui-module-card.orb +1 -1
  77. package/dist/behaviors/registry/ui/core/atoms/std-app-layout.orb +6 -1
  78. package/dist/behaviors/registry/ui/core/atoms/std-app-search.orb +83 -0
  79. package/dist/behaviors/registry/ui/core/atoms/std-browse.orb +30 -5
  80. package/dist/behaviors/registry/ui/core/atoms/std-file-store.orb +12 -2
  81. package/dist/behaviors/registry/ui/core/atoms/std-filter.orb +3 -0
  82. package/dist/behaviors/registry/ui/core/atoms/std-image-upload-multi.orb +40 -0
  83. package/dist/behaviors/registry/ui/core/atoms/std-saved-search.orb +40 -0
  84. package/dist/behaviors/registry/ui/core/atoms/std-tag-taxonomy.orb +40 -0
  85. package/dist/behaviors/registry/ui/core/atoms/std-wizard.orb +0 -912
  86. package/dist/behaviors/registry/ui/core/atoms/ui-aside.orb +1 -1
  87. package/dist/behaviors/registry/ui/core/atoms/ui-typography.orb +4 -2
  88. package/dist/behaviors/registry/ui/core/molecules/ui-code-block.orb +54 -32
  89. package/dist/behaviors/registry/ui/core/molecules/ui-data-grid.orb +13 -26
  90. package/dist/behaviors/registry/ui/core/molecules/ui-data-list.orb +13 -26
  91. package/dist/behaviors/registry/ui/core/molecules/ui-drawer.orb +2 -2
  92. package/dist/behaviors/registry/ui/core/molecules/ui-filter-group.orb +1 -1
  93. package/dist/behaviors/registry/ui/core/molecules/ui-flip-card.orb +1 -1
  94. package/dist/behaviors/registry/ui/core/molecules/ui-quiz-block.orb +1 -1
  95. package/dist/behaviors/registry/ui/core/molecules/ui-repeatable-form-section.orb +1 -1
  96. package/dist/behaviors/registry/ui/core/molecules/ui-signature-pad.orb +1 -1
  97. package/dist/behaviors/registry/ui/core/molecules/ui-sortable-list.orb +1 -1
  98. package/dist/behaviors/registry/ui/core/molecules/ui-table-view.orb +13 -26
  99. package/dist/behaviors/registry/ui/core/organisms/ui-entity-cards.orb +0 -13
  100. package/dist/behaviors/registry/ui/core/organisms/ui-entity-list.orb +8 -21
  101. package/dist/behaviors/registry/ui/core/organisms/ui-entity-table.orb +0 -13
  102. package/dist/behaviors/registry/ui/core/organisms/ui-segment-renderer.orb +4 -47
  103. package/dist/behaviors/registry/ui/core/organisms/ui-timeline.orb +0 -13
  104. package/dist/behaviors/registry/ui/marketing/atoms/ui-marketing-stat-card.orb +1 -1
  105. package/dist/behaviors/registry/ui/marketing/molecules/ui-case-study-card.orb +1 -1
  106. package/dist/behaviors/registry/ui/marketing/molecules/ui-feature-card.orb +1 -1
  107. package/dist/behaviors/registry/ui/marketing/molecules/ui-pricing-card.orb +1 -1
  108. package/dist/behaviors-embeddings.json +463 -463
  109. package/dist/behaviors-registry.json +35 -26
  110. package/dist/index.d.ts +2 -2
  111. package/dist/index.js +37 -519
  112. package/dist/knob-embeddings.json +1 -1
  113. package/dist/registry/factory-signatures.json +286 -3335
  114. package/dist/registry.d.ts +9 -1
  115. package/dist/registry.js +12 -1
  116. package/package.json +5 -4
@@ -1,5 +1,5 @@
1
1
  app ui-module-card "1.0.0"
2
- "ModuleCard — a card summarizing one course module or lesson with progress and entry point."
2
+ "ModuleCard — a card summarizing one course module or lesson with progress and entry point. — UI factory (1:1 with the @almadar/ui module-card pattern)."
3
3
  ;; @capabilities "course module card, lesson card, curriculum unit card, learning-path step card"
4
4
  orbital ModuleCardOrbital {
5
5
  entity ModuleCardItem [runtime] {
@@ -2,7 +2,7 @@ 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
4
  type NavItem = { label : string!, href : string!, icon : string, badge : string, children : [json] }
5
- type ItemAction = { label : string!, event : string!, variant : string, icon : string }
5
+ type ItemAction = { label : string!, event : string, navigatesTo : string, variant : string, icon : string }
6
6
  type NotificationSpec = { id : string, message : string, variant : string }
7
7
  orbital AppLayoutOrbital {
8
8
  type AppLayoutStateLoaded = Event { data : [AppLayoutData] }
@@ -12,6 +12,27 @@ orbital AppSearchOrbital {
12
12
  searchTerm : string @intrinsic @description "The current search query the user submitted." @synonyms "query, term, q" = ""
13
13
  }
14
14
 
15
+ trait AppSearchIdleHint -> AppSearchTarget [interaction, instance] {
16
+ initial: idle
17
+
18
+ state idle {
19
+ INIT -> idle
20
+ (render-ui main {
21
+ type: stack
22
+ align: center
23
+ direction: vertical
24
+ gap: sm
25
+ className: "py-12"
26
+ children: [{ type: icon, name: search, size: lg, color: muted }, {
27
+ type: typography
28
+ variant: caption
29
+ color: muted
30
+ content: "Start typing to search"
31
+ }]
32
+ })
33
+ }
34
+ }
35
+
15
36
  trait AppSearch -> @rebindable AppSearchTarget [interaction, collection] {
16
37
  initial: idle
17
38
 
@@ -161,7 +182,7 @@ orbital AppSearchOrbital {
161
182
  }
162
183
 
163
184
  config {
164
- idleContent : trait
185
+ idleContent : trait = @trait.AppSearchIdleHint
165
186
  @label "Idle content"
166
187
  @description "The normal content view (e.g. the data ledger/browse trait) shown when no search is active."
167
188
  @tier "presentation"
@@ -1,7 +1,7 @@
1
1
  app std-browse "2.3.0"
2
2
  "std-browse as a Function — single primitive: data-grid. Owns the fetch + REFETCH (query/filter/page) state machine. Consumers configure fields/imageField/itemActions/cols/gap/variant; the atom renders the grid. Each `fields[]` entry accepts `{ name, label, variant }` plus optional `referenceEntity` + `displayField` to render a foreign-key column as the joined entity's display value (data-grid resolves @list[referenceEntity] at render time when both keys are present). `browseLook` (table default / dense / feed / gallery) selects one of four render bodies; dense/feed/gallery were folded in from std-browse-dense/-feed/-gallery (Phase 5.B) and their consumers retarget by setting browseLook."
3
3
  type FieldSpec = { name : string!, label : string, variant : string, icon : string, format : string, key : string, header : string }
4
- type ItemAction = { label : string!, event : string!, variant : string, icon : string }
4
+ type ItemAction = { label : string!, event : string, navigatesTo : string, variant : string, icon : string }
5
5
  type ColumnSpec = { key : string!, field : string, header : string, width : string, align : string, className : string, weight : string, format : string, icon : string }
6
6
  type FilterSpec = { field : string!, label : string, options : [string] }
7
7
  orbital BrowseItemOrbital {
@@ -30,6 +30,10 @@ orbital BrowseItemOrbital {
30
30
  itemActions: @config.itemActions
31
31
  pageSize: @config.displayPageSize
32
32
  }
33
+
34
+ listens {
35
+ BrowseItemBrowse.BrowseItemLoaded -> DataGridLoaded
36
+ }
33
37
  }
34
38
 
35
39
  trait DenseTableView = TableView.traits.TableViewRender -> BrowseItem {
@@ -42,6 +46,10 @@ orbital BrowseItemOrbital {
42
46
  pageSize: @config.displayPageSize
43
47
  selectable: true
44
48
  }
49
+
50
+ listens {
51
+ BrowseItemBrowse.BrowseItemLoaded -> TableViewLoaded
52
+ }
45
53
  }
46
54
 
47
55
  trait BrowseItemBrowse -> @rebindable BrowseItem [interaction, collection] {
@@ -461,6 +469,8 @@ orbital BrowseItemOrbital {
461
469
  entity: ?data
462
470
  fields: []
463
471
  gap: lg
472
+ itemActions: @config.itemActions
473
+ maxInlineActions: @config.maxInlineActions
464
474
  minCardWidth: 260
465
475
  renderItem: (fn item {
466
476
  children: [{
@@ -1,7 +1,7 @@
1
1
  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 : string, icon : string, format : string, key : string, header : string }
4
- type ItemAction = { label : string!, event : string!, variant : string, icon : string }
4
+ type ItemAction = { label : string!, event : string, navigatesTo : string, variant : string, icon : string }
5
5
  type TreeNode = { name : string!, path : string!, type : string!, children : [object] }
6
6
  orbital StoredFileOrbital {
7
7
  type StoredFileLoaded = Event { data : [StoredFile] } "Fired when the collection finishes loading"
@@ -16,6 +16,7 @@ orbital FilterTargetOrbital {
16
16
  (fetch FilterTarget {})
17
17
  (render-ui main {
18
18
  entity: FilterTarget
19
+ event: @config.event
19
20
  filters: @config.filters
20
21
  look: @config.filterBarLook
21
22
  type: filter-group
@@ -25,6 +26,7 @@ orbital FilterTargetOrbital {
25
26
  (set @entity.value ?value)
26
27
  (render-ui main {
27
28
  entity: FilterTarget
29
+ event: @config.event
28
30
  filters: @config.filters
29
31
  look: @config.filterBarLook
30
32
  type: filter-group
@@ -38,6 +40,7 @@ orbital FilterTargetOrbital {
38
40
  })
39
41
  (render-ui main {
40
42
  entity: FilterTarget
43
+ event: @config.event
41
44
  filters: @config.filters
42
45
  look: @config.filterBarLook
43
46
  type: filter-group
@@ -78,6 +78,23 @@ orbital UploadedImageOrbital {
78
78
  }
79
79
 
80
80
  state browsing {
81
+ INIT -> loading
82
+ (fetch UploadedImage {
83
+ emit: { failure: UploadedImageLoadFailed, success: UploadedImageLoaded }
84
+ })
85
+ (render-ui main {
86
+ align: center
87
+ children: [{ type: spinner }, {
88
+ color: muted
89
+ content: "Loading images…"
90
+ type: typography
91
+ variant: caption
92
+ }]
93
+ className: py-12
94
+ direction: vertical
95
+ gap: md
96
+ type: stack
97
+ })
81
98
  UPLOAD -> uploading
82
99
  (persist create UploadedImage ?files {
83
100
  emit: { failure: UploadedImageUploadFailed, success: UploadedImageCreated }
@@ -106,6 +106,23 @@ orbital SavedSearchOrbital {
106
106
  }
107
107
 
108
108
  state browsing {
109
+ INIT -> loading
110
+ (fetch SavedSearch {
111
+ emit: { failure: SavedSearchLoadFailed, success: SavedSearchLoaded }
112
+ })
113
+ (render-ui main {
114
+ align: center
115
+ children: [{ type: spinner }, {
116
+ color: muted
117
+ content: "Loading saved searches…"
118
+ type: typography
119
+ variant: caption
120
+ }]
121
+ className: py-12
122
+ direction: vertical
123
+ gap: md
124
+ type: stack
125
+ })
109
126
  TOGGLE_ALERT -> browsing
110
127
  (set @entity.id ?id)
111
128
  (set @entity.alertEnabled ?enabled)
@@ -114,6 +114,23 @@ orbital TagTaxonomyOrbital {
114
114
  }
115
115
 
116
116
  state browsing {
117
+ INIT -> loading
118
+ (fetch Tag {
119
+ emit: { failure: TagLoadFailed, success: TagLoaded }
120
+ })
121
+ (render-ui main {
122
+ align: center
123
+ children: [{ type: spinner }, {
124
+ color: muted
125
+ content: "Loading categories…"
126
+ type: typography
127
+ variant: caption
128
+ }]
129
+ className: py-12
130
+ direction: vertical
131
+ gap: md
132
+ type: stack
133
+ })
117
134
  SELECT_TAG -> editing
118
135
  (set @entity.id ?tagId)
119
136
  (emit TagSelected { tagId: ?tagId })
@@ -3,16 +3,6 @@ app std-wizard "3.0.1"
3
3
  type ObjectSpec = { id : string, label : string, value : string }
4
4
  type StepSpec = { label : string!, key : string, icon : string, description : string, fields : [string], allowedRoles : [string] }
5
5
  orbital WizardOrbital {
6
- uses Icon from "std/behaviors/ui-icon"
7
- uses Typography from "std/behaviors/ui-typography"
8
- uses Button from "std/behaviors/ui-button"
9
- uses Card from "std/behaviors/ui-card"
10
- uses LoadingState from "std/behaviors/ui-loading-state"
11
- uses ErrorState from "std/behaviors/ui-error-state"
12
- uses WizardProgress from "std/behaviors/ui-wizard-progress"
13
- uses FormSection from "std/behaviors/ui-form-section"
14
- uses WizardNavigation from "std/behaviors/ui-wizard-navigation"
15
-
16
6
  type WizardStep = { id : string!, title : string!, description : string }
17
7
 
18
8
  type WizardLoaded = Event { data : [ObjectSpec] } "Fired when wizard context finishes loading"
@@ -46,240 +36,6 @@ orbital WizardOrbital {
46
36
  errorMessage : string @description "Error message displayed when a process fails." @synonyms "error, fault, problem" = ""
47
37
  }
48
38
 
49
- trait Icon_ListChecks = Icon.traits.IconRender -> WizardView {
50
- config {
51
- name: list-checks
52
- }
53
- }
54
-
55
- trait Icon_CheckCircle = Icon.traits.IconRender -> WizardView {
56
- config {
57
- name: check-circle
58
- }
59
- }
60
-
61
- trait Icon_XCircle = Icon.traits.IconRender -> WizardView {
62
- config {
63
- name: x-circle
64
- }
65
- }
66
-
67
- trait Icon_CurrentStep = Icon.traits.IconRender -> WizardView {
68
- config {
69
- name: @entity.currentStepIcon
70
- size: lg
71
- }
72
- }
73
-
74
- trait Icon_ChevronLeft = Icon.traits.IconRender -> WizardView {
75
- config {
76
- name: chevron-left
77
- }
78
- }
79
-
80
- trait Icon_X = Icon.traits.IconRender -> WizardView {
81
- config {
82
- name: x
83
- }
84
- }
85
-
86
- trait Icon_ChevronRight = Icon.traits.IconRender -> WizardView {
87
- config {
88
- name: chevron-right
89
- }
90
- }
91
-
92
- trait Icon_RotateCcw = Icon.traits.IconRender -> WizardView {
93
- config {
94
- name: rotate-ccw
95
- }
96
- }
97
-
98
- trait Typography_Title = Typography.traits.TypographyRender -> WizardView {
99
- config {
100
- content: @config.title
101
- variant: h3
102
- }
103
- }
104
-
105
- trait Typography_CurrentStepLabel = Typography.traits.TypographyRender -> WizardView {
106
- config {
107
- content: @entity.currentStepLabel
108
- variant: h2
109
- }
110
- }
111
-
112
- trait Typography_CurrentStepDescription = Typography.traits.TypographyRender -> WizardView {
113
- config {
114
- color: muted
115
- content: @entity.currentStepDescription
116
- variant: body
117
- }
118
- }
119
-
120
- trait Typography_Complete = Typography.traits.TypographyRender -> WizardView {
121
- config {
122
- align: center
123
- content: Complete
124
- variant: h2
125
- }
126
- }
127
-
128
- trait Typography_CompleteMessage = Typography.traits.TypographyRender -> WizardView {
129
- config {
130
- align: center
131
- color: muted
132
- content: @entity.completionMessage
133
- variant: body
134
- }
135
- }
136
-
137
- trait Typography_Cancelled = Typography.traits.TypographyRender -> WizardView {
138
- config {
139
- align: center
140
- content: Cancelled
141
- variant: h2
142
- }
143
- }
144
-
145
- trait Typography_CancelledMessage = Typography.traits.TypographyRender -> WizardView {
146
- config {
147
- align: center
148
- color: muted
149
- content: "The wizard was cancelled. No data was submitted."
150
- variant: body
151
- }
152
- }
153
-
154
- trait Typography_SignUp = Typography.traits.TypographyRender -> WizardView {
155
- config {
156
- content: Sign-up
157
- variant: h3
158
- }
159
- }
160
-
161
- trait Button_Back = Button.traits.ButtonRender -> WizardView {
162
- config {
163
- action: RETREAT
164
- disabled: @entity.isFirstStep
165
- icon: chevron-left
166
- label: Back
167
- variant: ghost
168
- }
169
- }
170
-
171
- trait Button_CancelWizard = Button.traits.ButtonRender -> WizardView {
172
- config {
173
- action: CANCEL
174
- icon: x
175
- label: "Cancel wizard"
176
- variant: ghost
177
- }
178
- }
179
-
180
- trait Button_Advance = Button.traits.ButtonRender -> WizardView {
181
- config {
182
- action: ADVANCE
183
- icon: @entity.primaryActionIcon
184
- label: @entity.primaryActionLabel
185
- variant: primary
186
- }
187
- }
188
-
189
- trait Button_Restart = Button.traits.ButtonRender -> WizardView {
190
- config {
191
- action: RESTART
192
- icon: rotate-ccw
193
- label: "Start a new wizard"
194
- variant: secondary
195
- }
196
- }
197
-
198
- trait Button_RestartGhost = Button.traits.ButtonRender -> WizardView {
199
- config {
200
- action: RESTART
201
- icon: rotate-ccw
202
- label: "Start a new wizard"
203
- variant: ghost
204
- }
205
- }
206
-
207
- trait WizardProgress_Main = WizardProgress.traits.WizardProgressRender -> WizardView {
208
- config {
209
- allowNavigation: false
210
- currentStep: @entity.currentStepIndex
211
- steps: @entity.wizardSteps
212
- }
213
- }
214
-
215
- trait WizardProgress_TotalSteps = WizardProgress.traits.WizardProgressRender -> WizardView {
216
- config {
217
- allowNavigation: false
218
- currentStep: @entity.totalSteps
219
- steps: @entity.wizardSteps
220
- }
221
- }
222
-
223
- trait FormSection_Main = FormSection.traits.FormSectionRender -> WizardView {
224
- config {
225
- cancelEvent: CANCEL
226
- fields: @entity.currentFields
227
- mode: edit
228
- showCancel: false
229
- showSubmit: false
230
- submitEvent: ADVANCE
231
- }
232
- }
233
-
234
- trait WizardNavigation_Main = WizardNavigation.traits.WizardNavigationRender -> WizardView {
235
- config {
236
- currentStep: 0
237
- onNext: NEXT
238
- showBack: false
239
- showComplete: false
240
- showNext: true
241
- totalSteps: 3
242
- }
243
- }
244
-
245
- trait LoadingState_Loading = LoadingState.traits.LoadingStateRender -> WizardView {
246
- config {
247
- title: "Loading wizard…"
248
- }
249
- }
250
-
251
- trait LoadingState_Refreshing = LoadingState.traits.LoadingStateRender -> WizardView {
252
- config {
253
- title: "Refreshing…"
254
- }
255
- }
256
-
257
- trait LoadingState_Restarting = LoadingState.traits.LoadingStateRender -> WizardView {
258
- config {
259
- title: "Restarting…"
260
- }
261
- }
262
-
263
- trait LoadingState_Retrying = LoadingState.traits.LoadingStateRender -> WizardView {
264
- config {
265
- title: "Retrying…"
266
- }
267
- }
268
-
269
- trait ErrorState_LoadFailed = ErrorState.traits.ErrorStateRender -> WizardView {
270
- config {
271
- message: @entity.errorMessage
272
- title: "Failed to load"
273
- }
274
- }
275
-
276
- trait ErrorState_SaveFailed = ErrorState.traits.ErrorStateRender -> WizardView {
277
- config {
278
- message: @entity.errorMessage
279
- title: "Save failed"
280
- }
281
- }
282
-
283
39
  trait WizardForm -> @rebindable WizardView [interaction, instance] {
284
40
  initial: loading
285
41
 
@@ -1,5 +1,5 @@
1
1
  app ui-aside "1.0.0"
2
- "Aside — a secondary side panel that hosts navigation links or supplementary content alongside a main content area."
2
+ "Aside — a secondary side panel that hosts navigation links or supplementary content alongside a main content area. — UI factory (1:1 with the @almadar/ui aside pattern)."
3
3
  ;; @capabilities "settings navigation sidebar, preferences menu panel, account settings nav, secondary panel, side navigation rail"
4
4
  orbital AsideOrbital {
5
5
  entity AsideItem [runtime] {
@@ -44,11 +44,11 @@ orbital TypographyOrbital {
44
44
  @label "Align"
45
45
  @description "Text alignment"
46
46
  @tier "presentation"
47
- weight : "light" | "normal" | "medium" | "semibold" | "bold" = light
47
+ weight : "none" | "light" | "normal" | "medium" | "semibold" | "bold" = none
48
48
  @label "Weight"
49
49
  @description "Font weight override"
50
50
  @tier "presentation"
51
- size : "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" = xs
51
+ size : "none" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" = none
52
52
  @label "Size"
53
53
  @description "Font size override"
54
54
  @tier "presentation"
@@ -10,7 +10,7 @@ orbital CodeBlockOrbital {
10
10
  type CodeBlockFilesItem = {
11
11
  label : string!
12
12
  code : string!
13
- language : "text" | "json" | "javascript" | "js" | "typescript" | "ts" | "jsx" | "tsx" | "css" | "markdown" | "md" | "bash" | "shell" | "sh" | "yaml" | "yml" | "rust" | "python" | "py" | "sql" | "diff" | "toml" | "go" | "graphql" | "html" | "xml" | "orb" | "lolo"
13
+ language : "text" | "json" | "javascript" | "js" | "typescript" | "ts" | "jsx" | "tsx" | "css" | "markdown" | "md" | "bash" | "shell" | "sh" | "yaml" | "yml" | "rust" | "python" | "py" | "sql" | "diff" | "toml" | "go" | "graphql" | "html" | "xml" | "clojure" | "clj" | "edn" | "haskell" | "hs" | "lisp" | "scheme" | "scala" | "elixir" | "ex" | "exs" | "erlang" | "erl" | "elm" | "fsharp" | "fs" | "fsx" | "ocaml" | "ml" | "java" | "c" | "cpp" | "c++" | "cc" | "cxx" | "hpp" | "h" | "csharp" | "cs" | "objectivec" | "objc" | "php" | "ruby" | "rb" | "swift" | "kotlin" | "kt" | "lua" | "r" | "dart" | "julia" | "fortran" | "f90" | "f95" | "perl" | "pl" | "powershell" | "ps1" | "makefile" | "make" | "nginx" | "ini" | "orb" | "lolo"
14
14
  }
15
15
  type CodeBlockActionsItem = {
16
16
  label : string!
@@ -107,9 +107,9 @@ orbital CodeBlockOrbital {
107
107
  @label "Code"
108
108
  @description "The code content to display"
109
109
  @tier "presentation"
110
- language : "text" | "json" | "javascript" | "js" | "typescript" | "ts" | "jsx" | "tsx" | "css" | "markdown" | "md" | "bash" | "shell" | "sh" | "yaml" | "yml" | "rust" | "python" | "py" | "sql" | "diff" | "toml" | "go" | "graphql" | "html" | "xml" | "orb" | "lolo" = text
110
+ language : string = text
111
111
  @label "Language"
112
- @description "Programming language for syntax highlighting"
112
+ @description "Programming language for syntax highlighting (any Prism id; loaded on demand if not pre-registered)"
113
113
  @tier "presentation"
114
114
  showCopyButton : boolean = true
115
115
  @label "Show Copy Button"
@@ -1,5 +1,5 @@
1
1
  app ui-data-grid "1.0.0"
2
- "DataGrid — structured records grid rendering rows over configurable columns, with sort, select, and drag-reorder."
2
+ "DataGrid — structured records grid rendering rows over configurable columns, with sort, select, and drag-reorder. — UI factory (1:1 with the @almadar/ui data-grid pattern)."
3
3
  ;; @capabilities "admin table, records grid, user list, CRUD list, manage-records view, spreadsheet-style data grid, sortable columns"
4
4
  orbital DataGridOrbital {
5
5
  type DataGridLoaded = Event { data : [DataGridItem] } "DataGrid rows finished loading; payload.data holds the collection"
@@ -21,7 +21,8 @@ orbital DataGridOrbital {
21
21
  }
22
22
  type DataGridItemActionsItem = {
23
23
  label : string!
24
- event : string!
24
+ event : string
25
+ navigatesTo : string
25
26
  icon : icon
26
27
  variant : "primary" | "secondary" | "ghost" | "danger"
27
28
  }
@@ -105,8 +106,6 @@ orbital DataGridOrbital {
105
106
  look: @config.look
106
107
  type: data-grid
107
108
  })
108
- VIEW -> idle
109
- (emit VIEW {})
110
109
  }
111
110
 
112
111
  emits {
@@ -18,7 +18,8 @@ orbital DataListOrbital {
18
18
  }
19
19
  type DataListItemActionsItem = {
20
20
  label : string!
21
- event : string!
21
+ event : string
22
+ navigatesTo : string
22
23
  icon : icon
23
24
  variant : "primary" | "secondary" | "ghost" | "danger"
24
25
  }
@@ -122,8 +123,6 @@ orbital DataListOrbital {
122
123
  look: @config.look
123
124
  type: data-list
124
125
  })
125
- VIEW -> idle
126
- (emit VIEW {})
127
126
  }
128
127
 
129
128
  emits {
@@ -65,9 +65,9 @@ orbital DrawerOrbital {
65
65
  @label "On Close"
66
66
  @description "Callback when drawer should close (injected by slot wrapper)"
67
67
  @tier "presentation"
68
- title : string
68
+ title : node
69
69
  @label "Title"
70
- @description "Drawer title"
70
+ @description "Drawer title (text or any node, e.g. a brand logo + name)."
71
71
  @tier "presentation"
72
72
  children : node
73
73
  @label "Children"
@@ -1,5 +1,5 @@
1
1
  app ui-filter-group "1.0.0"
2
- "FilterGroup — a panel of filter controls that narrows a collection by field values."
2
+ "FilterGroup — a panel of filter controls that narrows a collection by field values. — UI factory (1:1 with the @almadar/ui filter-group pattern)."
3
3
  ;; @capabilities "search refinement panel, facet filters, admin list filters, records filter sidebar, filter chips panel"
4
4
  orbital FilterGroupOrbital {
5
5
  type FilterGroupFiltersItem = {
@@ -1,5 +1,5 @@
1
1
  app ui-flip-card "1.0.0"
2
- "FlipCard — flip card that reveals a hidden back face on tap or click, toggling between a front and back content slot."
2
+ "FlipCard — flip card that reveals a hidden back face on tap or click, toggling between a front and back content slot. — UI factory (1:1 with the @almadar/ui flip-card pattern)."
3
3
  ;; @capabilities "flashcard, study deck, spaced-repetition review card, memorization drill, quiz reveal card, question/answer card, before/after reveal, term-and-definition card"
4
4
  orbital FlipCardOrbital {
5
5
  entity FlipCardItem [runtime] {
@@ -1,5 +1,5 @@
1
1
  app ui-quiz-block "1.0.0"
2
- "QuizBlock — a single quiz question with answer choices and submit/reveal feedback."
2
+ "QuizBlock — a single quiz question with answer choices and submit/reveal feedback. — UI factory (1:1 with the @almadar/ui quiz-block pattern)."
3
3
  ;; @capabilities "multiple-choice quiz, test question, exam item, assessment question, knowledge check, trivia question"
4
4
  orbital QuizBlockOrbital {
5
5
  entity QuizBlockItem [runtime] {
@@ -1,5 +1,5 @@
1
1
  app ui-repeatable-form-section "1.0.0"
2
- "RepeatableFormSection — a form section that repeats a fixed group of fields, letting the user add or remove entries."
2
+ "RepeatableFormSection — a form section that repeats a fixed group of fields, letting the user add or remove entries. — UI factory (1:1 with the @almadar/ui repeatable-form-section pattern)."
3
3
  ;; @capabilities "dynamic line items, repeatable field group, add/remove entry rows, multi-entry form block"
4
4
  orbital RepeatableFormSectionOrbital {
5
5
  type RepeatableFormSectionItemsItem = {
@@ -1,5 +1,5 @@
1
1
  app ui-signature-pad "1.0.0"
2
- "SignaturePad — a draw-to-sign canvas that captures a handwritten signature or initials."
2
+ "SignaturePad — a draw-to-sign canvas that captures a handwritten signature or initials. — UI factory (1:1 with the @almadar/ui signature-pad pattern)."
3
3
  ;; @capabilities "e-signature capture, sign-here field, consent signature, initial-here field, wet-signature substitute"
4
4
  orbital SignaturePadOrbital {
5
5
  type SignaturePadError = {
@@ -1,5 +1,5 @@
1
1
  app ui-sortable-list "1.0.0"
2
- "SortableList — a drag-and-drop reorderable list of items."
2
+ "SortableList — a drag-and-drop reorderable list of items. — UI factory (1:1 with the @almadar/ui sortable-list pattern)."
3
3
  ;; @capabilities "checklist, task list, to-do list, priority list, ranked list, drag-to-reorder queue"
4
4
  orbital SortableListOrbital {
5
5
  type SortableListLoaded = Event { data : [SortableListItem] } "SortableList rows finished loading; payload.data holds the collection"
@@ -1,5 +1,5 @@
1
1
  app ui-table-view "1.0.0"
2
- "TableView — sortable, selectable data table rendering rows over configurable columns, with inline row actions and grouping."
2
+ "TableView — sortable, selectable data table rendering rows over configurable columns, with inline row actions and grouping. — UI factory (1:1 with the @almadar/ui table-view pattern)."
3
3
  ;; @capabilities "admin console table, records list, CRUD data table, user list, manage-users grid, sortable columns, row selection with bulk actions, grouped list view"
4
4
  orbital TableViewOrbital {
5
5
  type TableViewLoaded = Event { data : [TableViewItem] } "TableView rows finished loading; payload.data holds the collection"
@@ -31,7 +31,8 @@ orbital TableViewOrbital {
31
31
  }
32
32
  type TableViewItemActionsItem = {
33
33
  label : string!
34
- event : string!
34
+ event : string
35
+ navigatesTo : string
35
36
  icon : icon
36
37
  variant : "primary" | "secondary" | "ghost" | "danger"
37
38
  }
@@ -111,8 +112,6 @@ orbital TableViewOrbital {
111
112
  look: @config.look
112
113
  type: table-view
113
114
  })
114
- VIEW -> idle
115
- (emit VIEW {})
116
115
  }
117
116
 
118
117
  emits {
@@ -96,8 +96,6 @@ orbital EntityCardsOrbital {
96
96
  imageField: @config.imageField
97
97
  type: entity-cards
98
98
  })
99
- VIEW -> idle
100
- (emit VIEW {})
101
99
  }
102
100
 
103
101
  emits {
@@ -74,8 +74,6 @@ orbital EntityListOrbital {
74
74
  fieldNames: @config.fieldNames
75
75
  type: entity-list
76
76
  })
77
- VIEW -> idle
78
- (emit VIEW {})
79
77
  }
80
78
 
81
79
  emits {