@almadar/std 16.243.0 → 16.244.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/behaviors-registry.json +4470 -513
- package/behaviors/lolo/agent/atoms/std-agent-context.lolo +24 -4
- package/behaviors/lolo/agent/atoms/std-agent-memory.lolo +20 -5
- package/behaviors/lolo/agent/atoms/std-agent-proposal.lolo +550 -0
- package/behaviors/lolo/agent/atoms/std-agent-session.lolo +284 -25
- package/behaviors/lolo/agent/atoms/std-agent-suggestions.lolo +841 -0
- package/behaviors/lolo/agent/atoms/std-agent-tool-loop.lolo +58 -8
- package/behaviors/lolo/agent/organisms/std-agent-assistant.lolo +1 -0
- package/behaviors/lolo/infra/atoms/std-page-treat.lolo +28 -1
- package/behaviors/lolo/ui/avl/atoms/ui-avl-state-machine.lolo +22 -0
- package/behaviors/lolo/ui/avl/atoms/ui-avl-transition-explainer.lolo +175 -0
- package/behaviors/lolo/ui/avl/atoms/ui-module-card.lolo +22 -0
- package/behaviors/lolo/ui/core/atoms/std-app-layout.lolo +23 -4
- package/behaviors/lolo/ui/core/atoms/std-hero.lolo +72 -33
- package/behaviors/lolo/ui/core/molecules/ui-agent-chat-feed.lolo +1 -1
- package/behaviors/lolo/ui/core/molecules/ui-markdown-content.lolo +54 -0
- package/behaviors/lolo/ui/core/molecules/ui-upload-drop-zone.lolo +5 -0
- package/behaviors/lolo/ui/core/organisms/ui-segment-renderer.lolo +127 -3
- package/behaviors/lolo/ui/core/organisms/ui-state-machine-view.lolo +22 -0
- package/behaviors/lolo/ui/core/templates/ui-dashboard-layout.lolo +2 -2
- package/behaviors/lolo/ui/learning/atoms/std-learn-arrangement.lolo +87 -17
- package/behaviors/lolo/ui/learning/atoms/std-learn-classify.lolo +172 -37
- package/behaviors/lolo/ui/learning/atoms/std-learn-coupled-sim.lolo +183 -70
- package/behaviors/lolo/ui/learning/atoms/std-learn-derivation.lolo +78 -13
- package/behaviors/lolo/ui/learning/atoms/std-learn-diagram.lolo +58 -2
- package/behaviors/lolo/ui/learning/atoms/std-learn-doser.lolo +107 -12
- package/behaviors/lolo/ui/learning/atoms/std-learn-estimate.lolo +83 -10
- package/behaviors/lolo/ui/learning/atoms/std-learn-goal-seek.lolo +130 -9
- package/behaviors/lolo/ui/learning/atoms/std-learn-grid-sim.lolo +143 -59
- package/behaviors/lolo/ui/learning/atoms/std-learn-hotspot.lolo +96 -22
- package/behaviors/lolo/ui/learning/atoms/std-learn-live-sim.lolo +66 -5
- package/behaviors/lolo/ui/learning/atoms/std-learn-predict.lolo +84 -6
- package/behaviors/lolo/ui/learning/atoms/std-learn-sandbox.lolo +80 -14
- package/behaviors/lolo/ui/learning/atoms/std-learn-scatter-fit.lolo +99 -5
- package/behaviors/lolo/ui/learning/atoms/std-learn-scenario.lolo +81 -7
- package/behaviors/lolo/ui/learning/atoms/std-learn-speed-drill.lolo +83 -7
- package/behaviors/lolo/ui/learning/atoms/std-learn-stepper.lolo +224 -99
- package/behaviors/lolo/ui/learning/atoms/std-learn-tour-3d.lolo +63 -2
- package/behaviors/lolo/ui/learning/atoms/std-learn-trace-player.lolo +99 -38
- package/behaviors/lolo/ui/learning/atoms/std-learn-transport.lolo +7 -7
- package/behaviors/lolo/ui/learning/atoms/std-learn-tree.lolo +69 -4
- package/behaviors/lolo-behavior-contracts.json +1 -1
- package/behaviors/registry/agent/atoms/std-agent-context.orb +205 -6
- package/behaviors/registry/agent/atoms/std-agent-memory.orb +146 -4
- package/behaviors/registry/agent/atoms/std-agent-proposal.orb +1972 -0
- package/behaviors/registry/agent/atoms/std-agent-session.orb +2021 -597
- package/behaviors/registry/agent/atoms/std-agent-suggestions.orb +5079 -0
- package/behaviors/registry/agent/atoms/std-agent-tool-loop.orb +287 -5
- package/behaviors/registry/agent/organisms/std-agent-assistant.orb +7 -0
- package/behaviors/registry/factory-signatures.json +1 -1
- package/behaviors/registry/infra/atoms/std-page-treat.orb +327 -2
- package/behaviors/registry/ui/avl/atoms/ui-avl-state-machine.orb +134 -0
- package/behaviors/registry/ui/avl/atoms/ui-avl-transition-explainer.orb +678 -0
- package/behaviors/registry/ui/avl/atoms/ui-module-card.orb +122 -0
- package/behaviors/registry/ui/core/atoms/std-app-layout.orb +73 -4
- package/behaviors/registry/ui/core/atoms/std-hero.orb +174 -97
- package/behaviors/registry/ui/core/molecules/ui-markdown-content.orb +204 -1
- package/behaviors/registry/ui/core/molecules/ui-upload-drop-zone.orb +12 -0
- package/behaviors/registry/ui/core/organisms/ui-segment-renderer.orb +683 -30
- package/behaviors/registry/ui/learning/atoms/std-learn-arrangement.orb +748 -21
- package/behaviors/registry/ui/learning/atoms/std-learn-classify.orb +1429 -41
- package/behaviors/registry/ui/learning/atoms/std-learn-coupled-sim.orb +1031 -185
- package/behaviors/registry/ui/learning/atoms/std-learn-derivation.orb +807 -132
- package/behaviors/registry/ui/learning/atoms/std-learn-diagram.orb +553 -6
- package/behaviors/registry/ui/learning/atoms/std-learn-doser.orb +987 -21
- package/behaviors/registry/ui/learning/atoms/std-learn-estimate.orb +582 -16
- package/behaviors/registry/ui/learning/atoms/std-learn-goal-seek.orb +954 -13
- package/behaviors/registry/ui/learning/atoms/std-learn-grid-sim.orb +828 -88
- package/behaviors/registry/ui/learning/atoms/std-learn-hotspot.orb +730 -28
- package/behaviors/registry/ui/learning/atoms/std-learn-live-sim.orb +479 -9
- package/behaviors/registry/ui/learning/atoms/std-learn-predict.orb +797 -46
- package/behaviors/registry/ui/learning/atoms/std-learn-sandbox.orb +757 -58
- package/behaviors/registry/ui/learning/atoms/std-learn-scatter-fit.orb +1176 -164
- package/behaviors/registry/ui/learning/atoms/std-learn-scenario.orb +599 -12
- package/behaviors/registry/ui/learning/atoms/std-learn-speed-drill.orb +832 -150
- package/behaviors/registry/ui/learning/atoms/std-learn-stepper.orb +1561 -127
- package/behaviors/registry/ui/learning/atoms/std-learn-tour-3d.orb +655 -6
- package/behaviors/registry/ui/learning/atoms/std-learn-trace-player.orb +634 -43
- package/behaviors/registry/ui/learning/atoms/std-learn-transport.orb +85 -31
- package/behaviors/registry/ui/learning/atoms/std-learn-tree.orb +425 -9
- package/canonical-operators.json +45 -2
- package/dist/behaviors/exports-reader.js +16667 -7868
- package/dist/behaviors/functions/index.d.ts +711 -32
- package/dist/behaviors/functions/index.js +16651 -7869
- package/dist/behaviors/index.d.ts +1 -1
- package/dist/behaviors/index.js +16668 -7869
- package/dist/behaviors/query.js +16667 -7868
- package/dist/behaviors-embeddings.hash.json +3 -3
- package/dist/behaviors-embeddings.json +77 -53
- package/dist/behaviors-registry.json +4470 -513
- package/dist/index.d.ts +3 -3
- package/dist/index.js +16101 -7275
- package/dist/knob-embeddings.hash.json +3 -3
- package/dist/knob-embeddings.json +1309 -685
- package/dist/modules/anim.d.ts +1 -1
- package/dist/modules/array.d.ts +1 -1
- package/dist/modules/async.d.ts +1 -1
- package/dist/modules/behavior.d.ts +1 -1
- package/dist/modules/browser.d.ts +1 -1
- package/dist/modules/composition.d.ts +1 -1
- package/dist/modules/contract.d.ts +1 -1
- package/dist/modules/core.d.ts +1 -1
- package/dist/modules/core.js +29 -2
- package/dist/modules/data.d.ts +1 -1
- package/dist/modules/ease.d.ts +1 -1
- package/dist/modules/format.d.ts +1 -1
- package/dist/modules/geo.d.ts +1 -1
- package/dist/modules/graph.d.ts +1 -1
- package/dist/modules/grid.d.ts +1 -1
- package/dist/modules/i18n.d.ts +1 -1
- package/dist/modules/index.d.ts +1 -1
- package/dist/modules/index.js +29 -2
- package/dist/modules/integration.d.ts +1 -1
- package/dist/modules/json.d.ts +1 -1
- package/dist/modules/llm.d.ts +1 -1
- package/dist/modules/math.d.ts +1 -1
- package/dist/modules/memory.d.ts +1 -1
- package/dist/modules/nn.d.ts +1 -1
- package/dist/modules/noise.d.ts +1 -1
- package/dist/modules/object.d.ts +1 -1
- package/dist/modules/os.d.ts +1 -1
- package/dist/modules/path.d.ts +1 -1
- package/dist/modules/prob.d.ts +1 -1
- package/dist/modules/session.d.ts +1 -1
- package/dist/modules/str.d.ts +1 -1
- package/dist/modules/tensor.d.ts +1 -1
- package/dist/modules/time.d.ts +1 -1
- package/dist/modules/trace.d.ts +1 -1
- package/dist/modules/train.d.ts +1 -1
- package/dist/modules/validate.d.ts +1 -1
- package/dist/modules/vector.d.ts +1 -1
- package/dist/modules/workspace.d.ts +1 -1
- package/dist/registry/factory-signatures.json +1 -1
- package/dist/registry.d.ts +2 -2
- package/dist/registry.js +29 -2
- package/dist/{types-Cdb321uM.d.ts → types-Y-yYWEOX.d.ts} +1 -1
- package/i18n/ar.json +3 -1
- package/i18n/en.json +2 -0
- package/i18n/sl.json +3 -1
- package/package.json +3 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
app std-hero "1.0.0"
|
|
2
|
-
"std-hero — the headline block at the top of a page, or a call-to-action banner further down. Optional eyebrow badge, headline, supporting text, up to two link actions, an optional copyable command,
|
|
2
|
+
"std-hero — the headline block at the top of a page, or a call-to-action banner further down. Optional eyebrow badge, headline, supporting text, up to two link actions, an optional copyable command, optional media below or beside the copy, and an optional backdrop scene behind it all. `look: banner` turns it into a contained call-to-action card. Links follow `href` (in-app path, #anchor, or absolute URL); each click also emits CTA_PRIMARY / CTA_SECONDARY with the href. Pick for landing, product, pricing and campaign pages."
|
|
3
3
|
orbital HeroOrbital {
|
|
4
4
|
entity HeroView [runtime] {
|
|
5
5
|
id : string!
|
|
@@ -109,6 +109,17 @@ orbital HeroOrbital {
|
|
|
109
109
|
@label "Surface"
|
|
110
110
|
@description "Background behind the block"
|
|
111
111
|
@tier "presentation"
|
|
112
|
+
height : "auto" | "tall" = auto
|
|
113
|
+
@label "Height"
|
|
114
|
+
@description "auto fits the copy; tall fills most of the screen with the copy centred, for a hero over a backdrop scene"
|
|
115
|
+
@tier "presentation"
|
|
116
|
+
backdropContent : render-ui = {
|
|
117
|
+
type: box
|
|
118
|
+
className: "hidden"
|
|
119
|
+
}
|
|
120
|
+
@label "Backdrop"
|
|
121
|
+
@description "A scene behind the whole block, such as an animated canvas; it fills the block, never takes clicks, and the copy stays on top. Empty by default."
|
|
122
|
+
@tier "presentation"
|
|
112
123
|
copyContent : render-ui = {
|
|
113
124
|
type: stack
|
|
114
125
|
direction: vertical
|
|
@@ -189,24 +200,38 @@ orbital HeroOrbital {
|
|
|
189
200
|
paddingY: (if (== @config.look banner) xl "2xl")
|
|
190
201
|
bg: (if (== @config.surface muted) muted transparent)
|
|
191
202
|
fullWidth: true
|
|
203
|
+
position: relative
|
|
204
|
+
overflow: hidden
|
|
205
|
+
className: (if (== @config.height tall) "flex min-h-[80vh] items-center" "")
|
|
192
206
|
children: [{
|
|
193
|
-
type:
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
207
|
+
type: box
|
|
208
|
+
position: absolute
|
|
209
|
+
className: "inset-0 pointer-events-none"
|
|
210
|
+
aria-hidden: true
|
|
211
|
+
children: [@config.backdropContent]
|
|
212
|
+
}, {
|
|
213
|
+
type: box
|
|
214
|
+
position: relative
|
|
215
|
+
fullWidth: true
|
|
197
216
|
children: [{
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
217
|
+
type: container
|
|
218
|
+
size: xl
|
|
219
|
+
maxWidth: xl
|
|
220
|
+
padding: lg
|
|
221
|
+
children: [{
|
|
222
|
+
type: box
|
|
223
|
+
padding: (if (== @config.look banner) xl none)
|
|
224
|
+
rounded: (if (== @config.look banner) "2xl" none)
|
|
225
|
+
border: (== @config.look banner)
|
|
226
|
+
bg: (if (== @config.look banner) muted transparent)
|
|
227
|
+
children: [{
|
|
228
|
+
type: stack
|
|
229
|
+
direction: vertical
|
|
230
|
+
gap: "2xl"
|
|
231
|
+
align: (if (== @config.alignment center) center stretch)
|
|
232
|
+
children: [@config.copyContent, @config.mediaContent]
|
|
233
|
+
}]
|
|
234
|
+
}]
|
|
210
235
|
}]
|
|
211
236
|
}]
|
|
212
237
|
}
|
|
@@ -217,24 +242,38 @@ orbital HeroOrbital {
|
|
|
217
242
|
paddingY: (if (== @config.look banner) xl "2xl")
|
|
218
243
|
bg: (if (== @config.surface muted) muted transparent)
|
|
219
244
|
fullWidth: true
|
|
245
|
+
position: relative
|
|
246
|
+
overflow: hidden
|
|
247
|
+
className: (if (== @config.height tall) "flex min-h-[80vh] items-center" "")
|
|
220
248
|
children: [{
|
|
221
|
-
type:
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
249
|
+
type: box
|
|
250
|
+
position: absolute
|
|
251
|
+
className: "inset-0 pointer-events-none"
|
|
252
|
+
aria-hidden: true
|
|
253
|
+
children: [@config.backdropContent]
|
|
254
|
+
}, {
|
|
255
|
+
type: box
|
|
256
|
+
position: relative
|
|
257
|
+
fullWidth: true
|
|
225
258
|
children: [{
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
259
|
+
type: container
|
|
260
|
+
size: xl
|
|
261
|
+
maxWidth: xl
|
|
262
|
+
padding: lg
|
|
263
|
+
children: [{
|
|
264
|
+
type: box
|
|
265
|
+
padding: (if (== @config.look banner) xl none)
|
|
266
|
+
rounded: (if (== @config.look banner) "2xl" none)
|
|
267
|
+
border: (== @config.look banner)
|
|
268
|
+
bg: (if (== @config.look banner) muted transparent)
|
|
269
|
+
children: [{
|
|
270
|
+
type: split
|
|
271
|
+
ratio: "1:1"
|
|
272
|
+
gap: xl
|
|
273
|
+
align: center
|
|
274
|
+
children: [@config.copyContent, @config.mediaContent]
|
|
275
|
+
}]
|
|
276
|
+
}]
|
|
238
277
|
}]
|
|
239
278
|
}]
|
|
240
279
|
}
|
|
@@ -202,7 +202,7 @@ orbital AgentChatFeedOrbital {
|
|
|
202
202
|
@tier "presentation"
|
|
203
203
|
idPrefix : string = ""
|
|
204
204
|
@label "Id Prefix"
|
|
205
|
-
@description "Prefix for the
|
|
205
|
+
@description "Prefix for the scroller test id and the switch's element id."
|
|
206
206
|
@tier "presentation"
|
|
207
207
|
working : boolean = false
|
|
208
208
|
@label "Working"
|
|
@@ -2,6 +2,12 @@ app ui-markdown-content "1.0.0"
|
|
|
2
2
|
"MarkdownContent — UI factory (1:1 with the @almadar/ui markdown-content pattern)."
|
|
3
3
|
;; @pattern "markdown-content"
|
|
4
4
|
orbital MarkdownContentOrbital {
|
|
5
|
+
type MarkdownContentAnnotationsItem = {
|
|
6
|
+
id : string!
|
|
7
|
+
text : string!
|
|
8
|
+
kind : "question" | "note"!
|
|
9
|
+
}
|
|
10
|
+
|
|
5
11
|
entity MarkdownContentItem [runtime] {
|
|
6
12
|
id : string!
|
|
7
13
|
}
|
|
@@ -14,6 +20,12 @@ orbital MarkdownContentOrbital {
|
|
|
14
20
|
(render-ui main {
|
|
15
21
|
content: @config.content
|
|
16
22
|
direction: @config.direction
|
|
23
|
+
askEvent: @config.askEvent
|
|
24
|
+
noteEvent: @config.noteEvent
|
|
25
|
+
askLabel: @config.askLabel
|
|
26
|
+
noteLabel: @config.noteLabel
|
|
27
|
+
annotations: @config.annotations
|
|
28
|
+
annotationEvent: @config.annotationEvent
|
|
17
29
|
className: @config.className
|
|
18
30
|
enter: @config.enter
|
|
19
31
|
enterDelay: @config.enterDelay
|
|
@@ -36,6 +48,24 @@ orbital MarkdownContentOrbital {
|
|
|
36
48
|
})
|
|
37
49
|
}
|
|
38
50
|
|
|
51
|
+
emits {
|
|
52
|
+
@config.askEvent -> external {
|
|
53
|
+
selectedText : string!
|
|
54
|
+
}
|
|
55
|
+
@description "Event emitted when the reader picks Ask on selected text (as `UI:<askEvent>`)"
|
|
56
|
+
@tier "essential"
|
|
57
|
+
@config.noteEvent -> external {
|
|
58
|
+
selectedText : string!
|
|
59
|
+
}
|
|
60
|
+
@description "Event emitted when the reader picks Note on selected text (as `UI:<noteEvent>`)"
|
|
61
|
+
@tier "essential"
|
|
62
|
+
@config.annotationEvent -> external {
|
|
63
|
+
annotationId : string
|
|
64
|
+
}
|
|
65
|
+
@description "Event emitted when a highlighted passage is clicked (as `UI:<annotationEvent>`)"
|
|
66
|
+
@tier "essential"
|
|
67
|
+
}
|
|
68
|
+
|
|
39
69
|
config {
|
|
40
70
|
content : string = ""
|
|
41
71
|
@label "Content"
|
|
@@ -45,6 +75,30 @@ orbital MarkdownContentOrbital {
|
|
|
45
75
|
@label "Direction"
|
|
46
76
|
@description "Text direction (defaults to ltr; `ltr` is first so the generated config seeds it)"
|
|
47
77
|
@tier "presentation"
|
|
78
|
+
askEvent : event = "ASK"
|
|
79
|
+
@label "Ask Event"
|
|
80
|
+
@description "Event emitted when the reader picks Ask on selected text (as `UI:<askEvent>`)"
|
|
81
|
+
@tier "presentation"
|
|
82
|
+
noteEvent : event = "NOTE"
|
|
83
|
+
@label "Note Event"
|
|
84
|
+
@description "Event emitted when the reader picks Note on selected text (as `UI:<noteEvent>`)"
|
|
85
|
+
@tier "presentation"
|
|
86
|
+
askLabel : string
|
|
87
|
+
@label "Ask Label"
|
|
88
|
+
@description "Ask action label (default: translated)"
|
|
89
|
+
@tier "presentation"
|
|
90
|
+
noteLabel : string
|
|
91
|
+
@label "Note Label"
|
|
92
|
+
@description "Note action label (default: translated)"
|
|
93
|
+
@tier "presentation"
|
|
94
|
+
annotations : [MarkdownContentAnnotationsItem] = []
|
|
95
|
+
@label "Annotations"
|
|
96
|
+
@description "Passages to highlight. Each `text` is matched exactly, first occurrence in document order inside a single rendered text node (outside code); a passage that spans formatting boundaries is not highlighted."
|
|
97
|
+
@tier "presentation"
|
|
98
|
+
annotationEvent : event = "ANNOTATION"
|
|
99
|
+
@label "Annotation Event"
|
|
100
|
+
@description "Event emitted when a highlighted passage is clicked (as `UI:<annotationEvent>`)"
|
|
101
|
+
@tier "presentation"
|
|
48
102
|
className : string
|
|
49
103
|
@label "Class Name"
|
|
50
104
|
@description "Additional CSS classes"
|
|
@@ -26,6 +26,7 @@ orbital UploadDropZoneOrbital {
|
|
|
26
26
|
description: @config.description
|
|
27
27
|
icon: @config.icon
|
|
28
28
|
disabled: @config.disabled
|
|
29
|
+
readAs: @config.readAs
|
|
29
30
|
action: @config.action
|
|
30
31
|
actionPayload: @config.actionPayload
|
|
31
32
|
className: @config.className
|
|
@@ -87,6 +88,10 @@ orbital UploadDropZoneOrbital {
|
|
|
87
88
|
@label "Disabled"
|
|
88
89
|
@description "Disabled state"
|
|
89
90
|
@tier "presentation"
|
|
91
|
+
readAs : "dataUrl" | "text" = dataUrl
|
|
92
|
+
@label "Read As"
|
|
93
|
+
@description "How the file is read into `content`: a base64 data URL (default) or its UTF-8 text"
|
|
94
|
+
@tier "presentation"
|
|
90
95
|
action : event = "ACTION"
|
|
91
96
|
@label "Action"
|
|
92
97
|
@description "Declarative event name for file selection"
|
|
@@ -2,11 +2,50 @@ app ui-segment-renderer "1.0.0"
|
|
|
2
2
|
"SegmentRenderer — UI factory (1:1 with the @almadar/ui segment-renderer pattern)."
|
|
3
3
|
;; @pattern "segment-renderer"
|
|
4
4
|
orbital SegmentRendererOrbital {
|
|
5
|
-
type SegmentRendererSegmentsItem =
|
|
5
|
+
type SegmentRendererSegmentsItem = SegmentRendererSegmentsItemMarkdown | SegmentRendererSegmentsItemCode | SegmentRendererSegmentsItemQuiz | SegmentRendererSegmentsItemActivate | SegmentRendererSegmentsItemConnect | SegmentRendererSegmentsItemReflect | SegmentRendererSegmentsItemBloom | SegmentRendererSegmentsItemVisualization
|
|
6
|
+
type SegmentRendererSegmentsItemMarkdown = {
|
|
7
|
+
type : "markdown"!
|
|
8
|
+
content : string!
|
|
9
|
+
}
|
|
10
|
+
type SegmentRendererSegmentsItemCode = {
|
|
11
|
+
type : "code"!
|
|
12
|
+
language : string!
|
|
13
|
+
content : string!
|
|
14
|
+
runnable : boolean
|
|
15
|
+
}
|
|
16
|
+
type SegmentRendererSegmentsItemQuiz = {
|
|
6
17
|
type : "quiz"!
|
|
7
18
|
question : string!
|
|
8
19
|
answer : string!
|
|
9
20
|
}
|
|
21
|
+
type SegmentRendererSegmentsItemActivate = {
|
|
22
|
+
type : "activate"!
|
|
23
|
+
question : string!
|
|
24
|
+
}
|
|
25
|
+
type SegmentRendererSegmentsItemConnect = {
|
|
26
|
+
type : "connect"!
|
|
27
|
+
content : string!
|
|
28
|
+
}
|
|
29
|
+
type SegmentRendererSegmentsItemReflect = {
|
|
30
|
+
type : "reflect"!
|
|
31
|
+
prompt : string!
|
|
32
|
+
}
|
|
33
|
+
type SegmentRendererSegmentsItemBloom = {
|
|
34
|
+
type : "bloom"!
|
|
35
|
+
level : "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create"!
|
|
36
|
+
question : string!
|
|
37
|
+
answer : string!
|
|
38
|
+
}
|
|
39
|
+
type SegmentRendererSegmentsItemVisualization = {
|
|
40
|
+
type : "visualization"!
|
|
41
|
+
visualizationType : "algorithms" | "math" | "physics" | "biology" | "chemistry" | "probability"!
|
|
42
|
+
description : string!
|
|
43
|
+
}
|
|
44
|
+
type SegmentRendererAnnotationsItem = {
|
|
45
|
+
id : string!
|
|
46
|
+
text : string!
|
|
47
|
+
kind : "question" | "note"!
|
|
48
|
+
}
|
|
10
49
|
type SegmentRendererUserProgress = {
|
|
11
50
|
activationResponse : string
|
|
12
51
|
reflectionNotes : [string]
|
|
@@ -24,6 +63,16 @@ orbital SegmentRendererOrbital {
|
|
|
24
63
|
INIT -> idle
|
|
25
64
|
(render-ui main {
|
|
26
65
|
segments: @config.segments
|
|
66
|
+
lesson: @config.lesson
|
|
67
|
+
activationSaveEvent: @config.activationSaveEvent
|
|
68
|
+
reflectionSaveEvent: @config.reflectionSaveEvent
|
|
69
|
+
bloomAnswerEvent: @config.bloomAnswerEvent
|
|
70
|
+
askEvent: @config.askEvent
|
|
71
|
+
noteEvent: @config.noteEvent
|
|
72
|
+
askLabel: @config.askLabel
|
|
73
|
+
noteLabel: @config.noteLabel
|
|
74
|
+
annotations: @config.annotations
|
|
75
|
+
annotationEvent: @config.annotationEvent
|
|
27
76
|
className: @config.className
|
|
28
77
|
containerClassName: @config.containerClassName
|
|
29
78
|
userProgress: @config.userProgress
|
|
@@ -48,10 +97,85 @@ orbital SegmentRendererOrbital {
|
|
|
48
97
|
})
|
|
49
98
|
}
|
|
50
99
|
|
|
100
|
+
emits {
|
|
101
|
+
@config.activationSaveEvent -> external {
|
|
102
|
+
response : string!
|
|
103
|
+
}
|
|
104
|
+
@description "Event emitted when the activation prompt is saved or skipped (as `UI:<activationSaveEvent>`)"
|
|
105
|
+
@tier "essential"
|
|
106
|
+
@config.reflectionSaveEvent -> external {
|
|
107
|
+
index : number!
|
|
108
|
+
note : string!
|
|
109
|
+
}
|
|
110
|
+
@description "Event emitted when a reflection note is saved (as `UI:<reflectionSaveEvent>`)"
|
|
111
|
+
@tier "essential"
|
|
112
|
+
@config.bloomAnswerEvent -> external {
|
|
113
|
+
index : number!
|
|
114
|
+
level : "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create"!
|
|
115
|
+
}
|
|
116
|
+
@description "Event emitted on the first reveal of a Bloom question (as `UI:<bloomAnswerEvent>`)"
|
|
117
|
+
@tier "essential"
|
|
118
|
+
@config.askEvent -> external {
|
|
119
|
+
selectedText : string!
|
|
120
|
+
}
|
|
121
|
+
@description "Event emitted when the reader picks Ask on selected text (as `UI:<askEvent>`)"
|
|
122
|
+
@tier "essential"
|
|
123
|
+
@config.noteEvent -> external {
|
|
124
|
+
selectedText : string!
|
|
125
|
+
}
|
|
126
|
+
@description "Event emitted when the reader picks Note on selected text (as `UI:<noteEvent>`)"
|
|
127
|
+
@tier "essential"
|
|
128
|
+
@config.annotationEvent -> external {
|
|
129
|
+
annotationId : string
|
|
130
|
+
}
|
|
131
|
+
@description "Event emitted when a highlighted passage is clicked (as `UI:<annotationEvent>`)"
|
|
132
|
+
@tier "essential"
|
|
133
|
+
}
|
|
134
|
+
|
|
51
135
|
config {
|
|
52
|
-
segments : [SegmentRendererSegmentsItem] = [
|
|
136
|
+
segments : [SegmentRendererSegmentsItem] = []
|
|
53
137
|
@label "Segments"
|
|
54
|
-
@description "Parsed lesson segments (see `parseLessonSegments`)"
|
|
138
|
+
@description "Parsed lesson segments (see `parseLessonSegments`). Ignored when `lesson` is given."
|
|
139
|
+
@tier "presentation"
|
|
140
|
+
lesson : string
|
|
141
|
+
@label "Lesson"
|
|
142
|
+
@description "Raw lesson markdown with learning tags; parsed with `parseLessonSegments` and rendered"
|
|
143
|
+
@tier "presentation"
|
|
144
|
+
activationSaveEvent : event = "ACTIVATION_SAVE"
|
|
145
|
+
@label "Activation Save Event"
|
|
146
|
+
@description "Event emitted when the activation prompt is saved or skipped (as `UI:<activationSaveEvent>`)"
|
|
147
|
+
@tier "presentation"
|
|
148
|
+
reflectionSaveEvent : event = "REFLECTION_SAVE"
|
|
149
|
+
@label "Reflection Save Event"
|
|
150
|
+
@description "Event emitted when a reflection note is saved (as `UI:<reflectionSaveEvent>`)"
|
|
151
|
+
@tier "presentation"
|
|
152
|
+
bloomAnswerEvent : event = "BLOOM_ANSWER"
|
|
153
|
+
@label "Bloom Answer Event"
|
|
154
|
+
@description "Event emitted on the first reveal of a Bloom question (as `UI:<bloomAnswerEvent>`)"
|
|
155
|
+
@tier "presentation"
|
|
156
|
+
askEvent : event = "ASK"
|
|
157
|
+
@label "Ask Event"
|
|
158
|
+
@description "Event emitted when the reader picks Ask on selected text (as `UI:<askEvent>`)"
|
|
159
|
+
@tier "presentation"
|
|
160
|
+
noteEvent : event = "NOTE"
|
|
161
|
+
@label "Note Event"
|
|
162
|
+
@description "Event emitted when the reader picks Note on selected text (as `UI:<noteEvent>`)"
|
|
163
|
+
@tier "presentation"
|
|
164
|
+
askLabel : string
|
|
165
|
+
@label "Ask Label"
|
|
166
|
+
@description "Ask action label (default: translated)"
|
|
167
|
+
@tier "presentation"
|
|
168
|
+
noteLabel : string
|
|
169
|
+
@label "Note Label"
|
|
170
|
+
@description "Note action label (default: translated)"
|
|
171
|
+
@tier "presentation"
|
|
172
|
+
annotations : [SegmentRendererAnnotationsItem] = []
|
|
173
|
+
@label "Annotations"
|
|
174
|
+
@description "Passages to highlight. Each `text` is matched exactly against the markdown segments, first segment whose source contains it, first occurrence inside one rendered text node (outside code); one that spans formatting is not highlighted."
|
|
175
|
+
@tier "presentation"
|
|
176
|
+
annotationEvent : event = "ANNOTATION"
|
|
177
|
+
@label "Annotation Event"
|
|
178
|
+
@description "Event emitted when a highlighted passage is clicked (as `UI:<annotationEvent>`)"
|
|
55
179
|
@tier "presentation"
|
|
56
180
|
className : string
|
|
57
181
|
@label "Class Name"
|
|
@@ -2,6 +2,23 @@ app ui-state-machine-view "1.0.0"
|
|
|
2
2
|
"StateMachineView — UI factory (1:1 with the @almadar/ui state-machine-view pattern)."
|
|
3
3
|
;; @pattern "state-machine-view"
|
|
4
4
|
orbital StateMachineViewOrbital {
|
|
5
|
+
type StateMachineViewAnnotations = {
|
|
6
|
+
states : Map string StateMachineViewAnnotationsStatesValue
|
|
7
|
+
transitions : Map string StateMachineViewAnnotationsTransitionsValue
|
|
8
|
+
effects : Map string StateMachineViewAnnotationsEffectsValue
|
|
9
|
+
}
|
|
10
|
+
type StateMachineViewAnnotationsStatesValue = {
|
|
11
|
+
title : string
|
|
12
|
+
body : string!
|
|
13
|
+
}
|
|
14
|
+
type StateMachineViewAnnotationsTransitionsValue = {
|
|
15
|
+
title : string
|
|
16
|
+
body : string!
|
|
17
|
+
}
|
|
18
|
+
type StateMachineViewAnnotationsEffectsValue = {
|
|
19
|
+
title : string
|
|
20
|
+
body : string!
|
|
21
|
+
}
|
|
5
22
|
type StateMachineViewTrait = {
|
|
6
23
|
name : string!
|
|
7
24
|
linkedEntity : string!
|
|
@@ -62,6 +79,7 @@ orbital StateMachineViewOrbital {
|
|
|
62
79
|
entityFields: @config.entityFields
|
|
63
80
|
direction: @config.direction
|
|
64
81
|
showHeader: @config.showHeader
|
|
82
|
+
annotations: @config.annotations
|
|
65
83
|
className: @config.className
|
|
66
84
|
trait: @config.traitProp
|
|
67
85
|
isLoading: @config.isLoading
|
|
@@ -153,6 +171,10 @@ orbital StateMachineViewOrbital {
|
|
|
153
171
|
@label "Show Header"
|
|
154
172
|
@description "Show the trait header (name, entity, listens/emits). @default true"
|
|
155
173
|
@tier "presentation"
|
|
174
|
+
annotations : StateMachineViewAnnotations = { states: { pending: { title: "Unpaid", body: "Every order starts here." } }, transitions: { PAY: { body: "Only fires when the amount is positive." } }, effects: { persist: { body: "Saves the order." } } }
|
|
175
|
+
@label "Annotations"
|
|
176
|
+
@description "Author explanations shown in a popover on hover: a note per state name, per transition event and per effect type."
|
|
177
|
+
@tier "presentation"
|
|
156
178
|
className : string
|
|
157
179
|
@label "Class Name"
|
|
158
180
|
@description "className prop"
|
|
@@ -152,9 +152,9 @@ orbital DashboardLayoutOrbital {
|
|
|
152
152
|
@label "On Sign Out"
|
|
153
153
|
@description "Callback when user clicks sign out (optional - uses auth context signOut if not provided)"
|
|
154
154
|
@tier "presentation"
|
|
155
|
-
layoutMode : "sidebar" | "topnav" | "bottomnav" | "minimal" = sidebar
|
|
155
|
+
layoutMode : "sidebar" | "topnav" | "bottomnav" | "minimal" | "drawer" = sidebar
|
|
156
156
|
@label "Layout Mode"
|
|
157
|
-
@description "Layout mode. Default `'sidebar'`. - `sidebar`: Left sidebar nav + top header (classic dashboard) - `topnav`: Horizontal nav in header, no sidebar - `bottomnav`: Bottom tab bar, no sidebar - `minimal`: No nav chrome, content only"
|
|
157
|
+
@description "Layout mode. Default `'sidebar'`. - `sidebar`: Left sidebar nav + top header (classic dashboard) - `topnav`: Horizontal nav in header, no sidebar - `bottomnav`: Bottom tab bar, no sidebar - `minimal`: No nav chrome, content only - `drawer`: Sidebar nav behind a menu button at every width; content gets the full width"
|
|
158
158
|
@tier "presentation"
|
|
159
159
|
children : node
|
|
160
160
|
@label "Children"
|