@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.
- package/behaviors/lolo/ui/avl/molecules/ui-module-card.lolo +1 -1
- package/behaviors/lolo/ui/core/atoms/std-app-layout.lolo +1 -1
- package/behaviors/lolo/ui/core/atoms/std-app-search.lolo +22 -1
- package/behaviors/lolo/ui/core/atoms/std-browse.lolo +11 -1
- package/behaviors/lolo/ui/core/atoms/std-file-store.lolo +1 -1
- package/behaviors/lolo/ui/core/atoms/std-filter.lolo +3 -0
- package/behaviors/lolo/ui/core/atoms/std-image-upload-multi.lolo +17 -0
- package/behaviors/lolo/ui/core/atoms/std-saved-search.lolo +17 -0
- package/behaviors/lolo/ui/core/atoms/std-tag-taxonomy.lolo +17 -0
- package/behaviors/lolo/ui/core/atoms/std-wizard.lolo +0 -244
- package/behaviors/lolo/ui/core/atoms/ui-aside.lolo +1 -1
- package/behaviors/lolo/ui/core/atoms/ui-typography.lolo +2 -2
- package/behaviors/lolo/ui/core/molecules/ui-code-block.lolo +3 -3
- package/behaviors/lolo/ui/core/molecules/ui-data-grid.lolo +3 -4
- package/behaviors/lolo/ui/core/molecules/ui-data-list.lolo +2 -3
- package/behaviors/lolo/ui/core/molecules/ui-drawer.lolo +2 -2
- package/behaviors/lolo/ui/core/molecules/ui-filter-group.lolo +1 -1
- package/behaviors/lolo/ui/core/molecules/ui-flip-card.lolo +1 -1
- package/behaviors/lolo/ui/core/molecules/ui-quiz-block.lolo +1 -1
- package/behaviors/lolo/ui/core/molecules/ui-repeatable-form-section.lolo +1 -1
- package/behaviors/lolo/ui/core/molecules/ui-signature-pad.lolo +1 -1
- package/behaviors/lolo/ui/core/molecules/ui-sortable-list.lolo +1 -1
- package/behaviors/lolo/ui/core/molecules/ui-table-view.lolo +3 -4
- package/behaviors/lolo/ui/core/organisms/ui-entity-cards.lolo +0 -2
- package/behaviors/lolo/ui/core/organisms/ui-entity-list.lolo +0 -2
- package/behaviors/lolo/ui/core/organisms/ui-entity-table.lolo +0 -2
- package/behaviors/lolo/ui/core/organisms/ui-segment-renderer.lolo +2 -12
- package/behaviors/lolo/ui/core/organisms/ui-timeline.lolo +0 -2
- package/behaviors/lolo/ui/marketing/atoms/ui-marketing-stat-card.lolo +1 -1
- package/behaviors/lolo/ui/marketing/molecules/ui-case-study-card.lolo +1 -1
- package/behaviors/lolo/ui/marketing/molecules/ui-feature-card.lolo +1 -1
- package/behaviors/lolo/ui/marketing/molecules/ui-pricing-card.lolo +1 -1
- package/behaviors/registry/factory-signatures.json +286 -3335
- package/behaviors/registry/ui/avl/molecules/ui-module-card.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-app-layout.orb +6 -1
- package/behaviors/registry/ui/core/atoms/std-app-search.orb +83 -0
- package/behaviors/registry/ui/core/atoms/std-browse.orb +30 -5
- package/behaviors/registry/ui/core/atoms/std-file-store.orb +12 -2
- package/behaviors/registry/ui/core/atoms/std-filter.orb +3 -0
- package/behaviors/registry/ui/core/atoms/std-image-upload-multi.orb +40 -0
- package/behaviors/registry/ui/core/atoms/std-saved-search.orb +40 -0
- package/behaviors/registry/ui/core/atoms/std-tag-taxonomy.orb +40 -0
- package/behaviors/registry/ui/core/atoms/std-wizard.orb +0 -912
- package/behaviors/registry/ui/core/atoms/ui-aside.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-typography.orb +4 -2
- package/behaviors/registry/ui/core/molecules/ui-code-block.orb +54 -32
- package/behaviors/registry/ui/core/molecules/ui-data-grid.orb +13 -26
- package/behaviors/registry/ui/core/molecules/ui-data-list.orb +13 -26
- package/behaviors/registry/ui/core/molecules/ui-drawer.orb +2 -2
- package/behaviors/registry/ui/core/molecules/ui-filter-group.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-flip-card.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-quiz-block.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-repeatable-form-section.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-signature-pad.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-sortable-list.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-table-view.orb +13 -26
- package/behaviors/registry/ui/core/organisms/ui-entity-cards.orb +0 -13
- package/behaviors/registry/ui/core/organisms/ui-entity-list.orb +8 -21
- package/behaviors/registry/ui/core/organisms/ui-entity-table.orb +0 -13
- package/behaviors/registry/ui/core/organisms/ui-segment-renderer.orb +4 -47
- package/behaviors/registry/ui/core/organisms/ui-timeline.orb +0 -13
- package/behaviors/registry/ui/marketing/atoms/ui-marketing-stat-card.orb +1 -1
- package/behaviors/registry/ui/marketing/molecules/ui-case-study-card.orb +1 -1
- package/behaviors/registry/ui/marketing/molecules/ui-feature-card.orb +1 -1
- package/behaviors/registry/ui/marketing/molecules/ui-pricing-card.orb +1 -1
- package/dist/behaviors/behaviors-embeddings.json +463 -463
- package/dist/behaviors/behaviors-registry.json +35 -26
- package/dist/behaviors/exports-reader.js +25 -518
- package/dist/behaviors/functions/index.d.ts +80 -119
- package/dist/behaviors/functions/index.js +23 -486
- package/dist/behaviors/index.d.ts +1 -1
- package/dist/behaviors/index.js +26 -519
- package/dist/behaviors/knob-embeddings.json +1 -1
- package/dist/behaviors/query.js +25 -518
- package/dist/behaviors/registry/factory-signatures.json +286 -3335
- package/dist/behaviors/registry/ui/avl/molecules/ui-module-card.orb +1 -1
- package/dist/behaviors/registry/ui/core/atoms/std-app-layout.orb +6 -1
- package/dist/behaviors/registry/ui/core/atoms/std-app-search.orb +83 -0
- package/dist/behaviors/registry/ui/core/atoms/std-browse.orb +30 -5
- package/dist/behaviors/registry/ui/core/atoms/std-file-store.orb +12 -2
- package/dist/behaviors/registry/ui/core/atoms/std-filter.orb +3 -0
- package/dist/behaviors/registry/ui/core/atoms/std-image-upload-multi.orb +40 -0
- package/dist/behaviors/registry/ui/core/atoms/std-saved-search.orb +40 -0
- package/dist/behaviors/registry/ui/core/atoms/std-tag-taxonomy.orb +40 -0
- package/dist/behaviors/registry/ui/core/atoms/std-wizard.orb +0 -912
- package/dist/behaviors/registry/ui/core/atoms/ui-aside.orb +1 -1
- package/dist/behaviors/registry/ui/core/atoms/ui-typography.orb +4 -2
- package/dist/behaviors/registry/ui/core/molecules/ui-code-block.orb +54 -32
- package/dist/behaviors/registry/ui/core/molecules/ui-data-grid.orb +13 -26
- package/dist/behaviors/registry/ui/core/molecules/ui-data-list.orb +13 -26
- package/dist/behaviors/registry/ui/core/molecules/ui-drawer.orb +2 -2
- package/dist/behaviors/registry/ui/core/molecules/ui-filter-group.orb +1 -1
- package/dist/behaviors/registry/ui/core/molecules/ui-flip-card.orb +1 -1
- package/dist/behaviors/registry/ui/core/molecules/ui-quiz-block.orb +1 -1
- package/dist/behaviors/registry/ui/core/molecules/ui-repeatable-form-section.orb +1 -1
- package/dist/behaviors/registry/ui/core/molecules/ui-signature-pad.orb +1 -1
- package/dist/behaviors/registry/ui/core/molecules/ui-sortable-list.orb +1 -1
- package/dist/behaviors/registry/ui/core/molecules/ui-table-view.orb +13 -26
- package/dist/behaviors/registry/ui/core/organisms/ui-entity-cards.orb +0 -13
- package/dist/behaviors/registry/ui/core/organisms/ui-entity-list.orb +8 -21
- package/dist/behaviors/registry/ui/core/organisms/ui-entity-table.orb +0 -13
- package/dist/behaviors/registry/ui/core/organisms/ui-segment-renderer.orb +4 -47
- package/dist/behaviors/registry/ui/core/organisms/ui-timeline.orb +0 -13
- package/dist/behaviors/registry/ui/marketing/atoms/ui-marketing-stat-card.orb +1 -1
- package/dist/behaviors/registry/ui/marketing/molecules/ui-case-study-card.orb +1 -1
- package/dist/behaviors/registry/ui/marketing/molecules/ui-feature-card.orb +1 -1
- package/dist/behaviors/registry/ui/marketing/molecules/ui-pricing-card.orb +1 -1
- package/dist/behaviors-embeddings.json +463 -463
- package/dist/behaviors-registry.json +35 -26
- package/dist/index.d.ts +2 -2
- package/dist/index.js +37 -519
- package/dist/knob-embeddings.json +1 -1
- package/dist/registry/factory-signatures.json +286 -3335
- package/dist/registry.d.ts +9 -1
- package/dist/registry.js +12 -1
- 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
|
|
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
|
|
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
|
|
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" =
|
|
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" =
|
|
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 :
|
|
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 :
|
|
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 {
|