@almadar/std 16.199.0 → 16.201.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/atoms/ui-behavior-view.lolo +2 -2
- package/behaviors/lolo/ui/avl/atoms/ui-module-card.lolo +2 -2
- package/behaviors/lolo/ui/core/atoms/std-app-layout.lolo +1 -1
- package/behaviors/lolo/ui/core/atoms/std-file-store.lolo +1 -1
- package/behaviors/lolo/ui/core/atoms/ui-conditional-wrapper.lolo +11 -4
- package/behaviors/lolo/ui/core/atoms/ui-icon.lolo +1 -1
- package/behaviors/lolo/ui/core/atoms/ui-input.lolo +10 -4
- package/behaviors/lolo/ui/core/atoms/ui-select.lolo +6 -4
- package/behaviors/lolo/ui/core/molecules/ui-branching-logic-builder.lolo +5 -5
- package/behaviors/lolo/ui/core/molecules/ui-document-details.lolo +8 -1
- package/behaviors/lolo/ui/core/molecules/ui-drawer.lolo +1 -1
- package/behaviors/lolo/ui/core/molecules/ui-edge-decoration.lolo +1 -1
- package/behaviors/lolo/ui/core/molecules/ui-file-tree.lolo +5 -0
- package/behaviors/lolo/ui/core/molecules/ui-floating-action-button.lolo +1 -1
- package/behaviors/lolo/ui/core/molecules/ui-floating-toolbar.lolo +54 -0
- package/behaviors/lolo/ui/core/molecules/ui-gradient-divider.lolo +1 -1
- package/behaviors/lolo/ui/core/molecules/ui-import-preview-tree.lolo +8 -1
- package/behaviors/lolo/ui/core/molecules/ui-input-group.lolo +10 -4
- package/behaviors/lolo/ui/core/molecules/ui-orbital-visualization.lolo +3 -3
- package/behaviors/lolo/ui/core/molecules/ui-reply-tree.lolo +1 -1
- package/behaviors/lolo/ui/core/molecules/ui-swipeable-row.lolo +3 -3
- package/behaviors/lolo/ui/core/molecules/ui-wizard-container.lolo +23 -16
- package/behaviors/lolo/ui/core/organisms/ui-dock-layout.lolo +186 -0
- package/behaviors/lolo/ui/core/organisms/ui-entity-cards.lolo +2 -2
- package/behaviors/lolo/ui/core/organisms/ui-entity-list.lolo +1 -1
- package/behaviors/lolo/ui/core/organisms/ui-entity-table.lolo +2 -2
- package/behaviors/lolo/ui/core/organisms/ui-form-section.lolo +15 -8
- package/behaviors/lolo/ui/core/organisms/ui-form.lolo +15 -8
- package/behaviors/lolo/ui/core/organisms/ui-split-pane.lolo +37 -1
- package/behaviors/lolo/ui/core/organisms/ui-stat-card.lolo +1 -1
- package/behaviors/lolo/ui/core/organisms/ui-subagent-trace-panel.lolo +3 -3
- package/behaviors/lolo/ui/game/atoms/std-coef-pad.lolo +5 -3
- package/behaviors/lolo/ui/game/atoms/std-fx-narrative.lolo +126 -0
- package/behaviors/lolo/ui/game/atoms/std-pickup.lolo +104 -0
- package/behaviors/lolo/ui/game/atoms/std-platformer-body.lolo +50 -21
- package/behaviors/lolo/ui/game/atoms/ui-control-button.lolo +3 -3
- package/behaviors/lolo/ui/game/atoms/ui-control-grid.lolo +1 -1
- package/behaviors/lolo/ui/game/atoms/ui-game-hud.lolo +1 -1
- package/behaviors/lolo/ui/game/atoms/ui-game-menu.lolo +3 -3
- package/behaviors/lolo/ui/game/atoms/ui-stat-badge.lolo +3 -3
- package/behaviors/lolo/ui/learning/atoms/ui-math-canvas.lolo +12 -0
- package/behaviors/registry/infra/atoms/std-approval-gate.orb +20 -10
- package/behaviors/registry/infra/atoms/std-cache-aside.orb +62 -31
- package/behaviors/registry/infra/atoms/std-circuit-breaker.orb +32 -16
- package/behaviors/registry/infra/atoms/std-data-erasure.orb +16 -8
- package/behaviors/registry/infra/atoms/std-mod-queue.orb +16 -8
- package/behaviors/registry/infra/atoms/std-rate-limiter.orb +28 -14
- package/behaviors/registry/infra/organisms/std-status-lifecycle-control.orb +2 -1
- package/behaviors/registry/ml/organisms/std-escalating-decision.orb +10 -5
- package/behaviors/registry/ml/organisms/std-knowledge-tracing.orb +4 -2
- package/behaviors/registry/ui/avl/atoms/ui-behavior-view.orb +389 -3
- package/behaviors/registry/ui/avl/atoms/ui-module-card.orb +389 -3
- package/behaviors/registry/ui/core/atoms/std-app-layout.orb +93 -2
- package/behaviors/registry/ui/core/atoms/std-billable-hour.orb +2 -1
- package/behaviors/registry/ui/core/atoms/std-browse.orb +6 -3
- package/behaviors/registry/ui/core/atoms/std-dashboard-grid-embedded.orb +2 -1
- package/behaviors/registry/ui/core/atoms/std-esign-flow.orb +4 -2
- package/behaviors/registry/ui/core/atoms/std-esign-request.orb +6 -3
- package/behaviors/registry/ui/core/atoms/std-export.orb +4 -2
- package/behaviors/registry/ui/core/atoms/std-file-store.orb +101 -2
- package/behaviors/registry/ui/core/atoms/std-gallery.orb +18 -9
- package/behaviors/registry/ui/core/atoms/std-import.orb +4 -2
- package/behaviors/registry/ui/core/atoms/std-list.orb +6 -3
- package/behaviors/registry/ui/core/atoms/ui-atlas-image.orb +13 -1
- package/behaviors/registry/ui/core/atoms/ui-atlas-panel.orb +13 -1
- package/behaviors/registry/ui/core/atoms/ui-badge.orb +56 -1
- package/behaviors/registry/ui/core/atoms/ui-button.orb +56 -1
- package/behaviors/registry/ui/core/atoms/ui-conditional-wrapper.orb +277 -5
- package/behaviors/registry/ui/core/atoms/ui-game-icon.orb +56 -1
- package/behaviors/registry/ui/core/atoms/ui-icon.orb +1 -10
- package/behaviors/registry/ui/core/atoms/ui-input.orb +42 -7
- package/behaviors/registry/ui/core/atoms/ui-law-reference-tooltip.orb +27 -1
- package/behaviors/registry/ui/core/atoms/ui-select.orb +69 -9
- package/behaviors/registry/ui/core/molecules/ui-accordion.orb +30 -1
- package/behaviors/registry/ui/core/molecules/ui-branching-logic-builder.orb +76 -13
- package/behaviors/registry/ui/core/molecules/ui-breadcrumb.orb +30 -1
- package/behaviors/registry/ui/core/molecules/ui-chart-legend.orb +15 -1
- package/behaviors/registry/ui/core/molecules/ui-chart.orb +133 -1
- package/behaviors/registry/ui/core/molecules/ui-code-block.orb +77 -1
- package/behaviors/registry/ui/core/molecules/ui-confirm-dialog.orb +22 -1
- package/behaviors/registry/ui/core/molecules/ui-content-renderer.orb +34 -1
- package/behaviors/registry/ui/core/molecules/ui-data-grid.orb +99 -1
- package/behaviors/registry/ui/core/molecules/ui-data-list.orb +118 -1
- package/behaviors/registry/ui/core/molecules/ui-date-range-picker.orb +27 -1
- package/behaviors/registry/ui/core/molecules/ui-date-range-selector.orb +15 -1
- package/behaviors/registry/ui/core/molecules/ui-doc-breadcrumb.orb +14 -1
- package/behaviors/registry/ui/core/molecules/ui-doc-pagination.orb +35 -1
- package/behaviors/registry/ui/core/molecules/ui-doc-toc.orb +20 -1
- package/behaviors/registry/ui/core/molecules/ui-document-details.orb +65 -3
- package/behaviors/registry/ui/core/molecules/ui-document-panel.orb +22 -1
- package/behaviors/registry/ui/core/molecules/ui-document-viewer.orb +60 -1
- package/behaviors/registry/ui/core/molecules/ui-drawer.orb +1 -8
- package/behaviors/registry/ui/core/molecules/ui-edge-decoration.orb +1 -9
- package/behaviors/registry/ui/core/molecules/ui-feature-grid.orb +39 -1
- package/behaviors/registry/ui/core/molecules/ui-file-tree.orb +8 -0
- package/behaviors/registry/ui/core/molecules/ui-filter-group.orb +39 -1
- package/behaviors/registry/ui/core/molecules/ui-floating-action-button.orb +29 -10
- package/behaviors/registry/ui/core/molecules/ui-floating-toolbar.orb +274 -0
- package/behaviors/registry/ui/core/molecules/ui-form-actions.orb +85 -1
- package/behaviors/registry/ui/core/molecules/ui-form-layout.orb +22 -1
- package/behaviors/registry/ui/core/molecules/ui-fx-overlay.orb +76 -1
- package/behaviors/registry/ui/core/molecules/ui-gradient-divider.orb +1 -10
- package/behaviors/registry/ui/core/molecules/ui-graph-canvas.orb +421 -1
- package/behaviors/registry/ui/core/molecules/ui-graph-view.orb +92 -1
- package/behaviors/registry/ui/core/molecules/ui-header.orb +59 -1
- package/behaviors/registry/ui/core/molecules/ui-import-preview-tree.orb +125 -2
- package/behaviors/registry/ui/core/molecules/ui-import-progress.orb +17 -1
- package/behaviors/registry/ui/core/molecules/ui-import-source-picker.orb +39 -1
- package/behaviors/registry/ui/core/molecules/ui-input-group.orb +42 -7
- package/behaviors/registry/ui/core/molecules/ui-jazari-state-machine.orb +22 -1
- package/behaviors/registry/ui/core/molecules/ui-lightbox.orb +17 -1
- package/behaviors/registry/ui/core/molecules/ui-likert-scale.orb +15 -1
- package/behaviors/registry/ui/core/molecules/ui-line-chart.orb +18 -1
- package/behaviors/registry/ui/core/molecules/ui-map-view.orb +109 -1
- package/behaviors/registry/ui/core/molecules/ui-matrix-question.orb +27 -1
- package/behaviors/registry/ui/core/molecules/ui-meter.orb +57 -1
- package/behaviors/registry/ui/core/molecules/ui-option-constraint-group.orb +27 -1
- package/behaviors/registry/ui/core/molecules/ui-orbital-visualization.orb +78 -4
- package/behaviors/registry/ui/core/molecules/ui-page-header.orb +91 -1
- package/behaviors/registry/ui/core/molecules/ui-qr-scanner.orb +20 -1
- package/behaviors/registry/ui/core/molecules/ui-relation-select.orb +23 -1
- package/behaviors/registry/ui/core/molecules/ui-repeatable-form-section.orb +18 -1
- package/behaviors/registry/ui/core/molecules/ui-reply-tree.orb +5 -2
- package/behaviors/registry/ui/core/molecules/ui-section.orb +22 -1
- package/behaviors/registry/ui/core/molecules/ui-signature-pad.orb +22 -1
- package/behaviors/registry/ui/core/molecules/ui-social-proof.orb +18 -1
- package/behaviors/registry/ui/core/molecules/ui-split.orb +22 -1
- package/behaviors/registry/ui/core/molecules/ui-stat-display.orb +22 -1
- package/behaviors/registry/ui/core/molecules/ui-swipeable-row.orb +64 -4
- package/behaviors/registry/ui/core/molecules/ui-table-view.orb +136 -1
- package/behaviors/registry/ui/core/molecules/ui-tabs.orb +301 -1
- package/behaviors/registry/ui/core/molecules/ui-upload-drop-zone.orb +25 -1
- package/behaviors/registry/ui/core/molecules/ui-version-diff.orb +28 -1
- package/behaviors/registry/ui/core/molecules/ui-violation-alert.orb +46 -1
- package/behaviors/registry/ui/core/molecules/ui-wizard-container.orb +518 -102
- package/behaviors/registry/ui/core/molecules/ui-wizard-progress.orb +19 -1
- package/behaviors/registry/ui/core/organisms/ui-chat-bar.orb +22 -1
- package/behaviors/registry/ui/core/organisms/ui-dashboard-grid.orb +40 -1
- package/behaviors/registry/ui/core/organisms/ui-detail-panel.orb +196 -1
- package/behaviors/registry/ui/core/organisms/ui-dock-layout.orb +521 -0
- package/behaviors/registry/ui/core/organisms/ui-drawer-slot.orb +22 -1
- package/behaviors/registry/ui/core/organisms/ui-entity-cards.orb +83 -14
- package/behaviors/registry/ui/core/organisms/ui-entity-list.orb +64 -8
- package/behaviors/registry/ui/core/organisms/ui-entity-table.orb +152 -14
- package/behaviors/registry/ui/core/organisms/ui-form-section.orb +1140 -15
- package/behaviors/registry/ui/core/organisms/ui-form.orb +1140 -15
- package/behaviors/registry/ui/core/organisms/ui-master-detail.orb +22 -1
- package/behaviors/registry/ui/core/organisms/ui-media-gallery.orb +71 -1
- package/behaviors/registry/ui/core/organisms/ui-modal-slot.orb +22 -1
- package/behaviors/registry/ui/core/organisms/ui-segment-renderer.orb +29 -1
- package/behaviors/registry/ui/core/organisms/ui-split-pane.orb +109 -2
- package/behaviors/registry/ui/core/organisms/ui-stat-card.orb +61 -7
- package/behaviors/registry/ui/core/organisms/ui-state-machine-view.orb +22 -1
- package/behaviors/registry/ui/core/organisms/ui-subagent-trace-panel.orb +37 -7
- package/behaviors/registry/ui/core/organisms/ui-tabbed-container.orb +31 -1
- package/behaviors/registry/ui/core/organisms/ui-timeline.orb +73 -1
- package/behaviors/registry/ui/core/organisms/ui-toast-slot.orb +22 -1
- package/behaviors/registry/ui/game/atoms/std-coef-pad.orb +170 -4
- package/behaviors/registry/ui/game/atoms/std-fx-narrative.orb +695 -0
- package/behaviors/registry/ui/game/atoms/std-pickup.orb +835 -0
- package/behaviors/registry/ui/game/atoms/std-platformer-body.orb +1613 -1062
- package/behaviors/registry/ui/game/atoms/ui-action-palette.orb +269 -1
- package/behaviors/registry/ui/game/atoms/ui-action-tile.orb +288 -1
- package/behaviors/registry/ui/game/atoms/ui-canvas-2d.orb +54 -1
- package/behaviors/registry/ui/game/atoms/ui-canvas.orb +311 -1
- package/behaviors/registry/ui/game/atoms/ui-choice-button.orb +56 -1
- package/behaviors/registry/ui/game/atoms/ui-control-button.orb +59 -20
- package/behaviors/registry/ui/game/atoms/ui-control-grid.orb +186 -7
- package/behaviors/registry/ui/game/atoms/ui-dialogue-bubble.orb +56 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-fx-layer.orb +233 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-group.orb +137 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-mesh.orb +219 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-shape-layer.orb +951 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-shape.orb +512 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-sprite-layer.orb +270 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-sprite.orb +106 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-text-layer.orb +85 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-text.orb +19 -1
- package/behaviors/registry/ui/game/atoms/ui-game-audio-toggle.orb +128 -1
- package/behaviors/registry/ui/game/atoms/ui-game-hud.orb +168 -8
- package/behaviors/registry/ui/game/atoms/ui-game-menu.orb +151 -13
- package/behaviors/registry/ui/game/atoms/ui-health-bar.orb +109 -1
- package/behaviors/registry/ui/game/atoms/ui-score-display.orb +56 -1
- package/behaviors/registry/ui/game/atoms/ui-sequence-bar.orb +523 -1
- package/behaviors/registry/ui/game/atoms/ui-stat-badge.orb +112 -22
- package/behaviors/registry/ui/game/atoms/ui-state-graph.orb +24 -1
- package/behaviors/registry/ui/game/atoms/ui-state-json-view.orb +20 -1
- package/behaviors/registry/ui/game/atoms/ui-trait-slot.orb +849 -1
- package/behaviors/registry/ui/game/organisms/std-arcade-board-3d.orb +8 -4
- package/behaviors/registry/ui/game/organisms/std-crew-board-2d.orb +6 -3
- package/behaviors/registry/ui/game/organisms/std-dungeon-board-2d.orb +10 -5
- package/behaviors/registry/ui/game/organisms/std-market-board-3d.orb +8 -4
- package/behaviors/registry/ui/game/organisms/std-objective-board-3d.orb +8 -4
- package/behaviors/registry/ui/game/organisms/std-platformer-board-2d.orb +6 -3
- package/behaviors/registry/ui/game/organisms/std-survival-board-3d.orb +8 -4
- package/behaviors/registry/ui/game/organisms/std-tactics-board-2d.orb +12 -6
- package/behaviors/registry/ui/game/organisms/std-tactics-board-3d.orb +8 -4
- package/behaviors/registry/ui/game/organisms/std-worldmap-board-2d.orb +6 -3
- package/behaviors/registry/ui/learning/atoms/ui-algo-graph-canvas.orb +289 -1
- package/behaviors/registry/ui/learning/atoms/ui-algorithm-canvas.orb +424 -1
- package/behaviors/registry/ui/learning/atoms/ui-biology-canvas.orb +925 -1
- package/behaviors/registry/ui/learning/atoms/ui-chemistry-canvas.orb +970 -1
- package/behaviors/registry/ui/learning/atoms/ui-learning-canvas.orb +351 -1
- package/behaviors/registry/ui/learning/atoms/ui-math-canvas.orb +610 -1
- package/behaviors/registry/ui/learning/atoms/ui-physics-canvas.orb +1049 -1
- package/behaviors/registry/ui/marketing/atoms/std-marketing-article.orb +2 -1
- package/behaviors/registry/ui/marketing/atoms/std-marketing-footer.orb +2 -1
- package/behaviors/registry/ui/marketing/atoms/std-marketing-split.orb +2 -1
- package/behaviors/registry/ui/marketing/atoms/std-marketing-stats.orb +2 -1
- package/behaviors/registry/ui/marketing/atoms/std-marketing-steps.orb +2 -1
- package/behaviors/registry/ui/marketing/atoms/std-marketing-team.orb +2 -1
- package/behaviors/registry/ui/marketing/atoms/ui-community-links.orb +36 -1
- package/behaviors/registry/ui/marketing/atoms/ui-cta-banner.orb +27 -1
- package/behaviors/registry/ui/marketing/atoms/ui-hero-section.orb +39 -1
- package/behaviors/registry/ui/marketing/atoms/ui-marketing-footer.orb +55 -1
- package/behaviors/registry/ui/marketing/atoms/ui-pricing-card.orb +15 -1
- package/behaviors/registry/ui/marketing/atoms/ui-pricing-grid.orb +65 -1
- package/behaviors/registry/ui/marketing/atoms/ui-service-catalog.orb +19 -1
- package/behaviors/registry/ui/marketing/atoms/ui-showcase-card.orb +15 -1
- package/behaviors/registry/ui/marketing/atoms/ui-split-section.orb +15 -1
- package/behaviors/registry/ui/marketing/atoms/ui-stats-grid.orb +15 -1
- package/behaviors/registry/ui/marketing/atoms/ui-step-flow.orb +23 -1
- package/behaviors/registry/ui/marketing/atoms/ui-tag-cloud.orb +18 -1
- package/behaviors/registry/ui/marketing/organisms/ui-book-viewer.orb +84 -1
- package/behaviors/registry/ui/marketing/organisms/ui-case-study-organism.orb +22 -1
- package/behaviors/registry/ui/marketing/organisms/ui-feature-grid-organism.orb +22 -1
- package/behaviors/registry/ui/marketing/organisms/ui-hero-organism.orb +52 -1
- package/behaviors/registry/ui/marketing/organisms/ui-pricing-organism.orb +22 -1
- package/behaviors/registry/ui/marketing/organisms/ui-showcase-organism.orb +32 -1
- package/behaviors/registry/ui/marketing/organisms/ui-stats-organism.orb +22 -1
- package/behaviors/registry/ui/marketing/organisms/ui-step-flow-organism.orb +22 -1
- package/behaviors/registry/ui/marketing/organisms/ui-team-organism.orb +22 -1
- package/behaviors/registry/ui/marketing/templates/ui-about-page-template.orb +176 -1
- package/behaviors/registry/ui/marketing/templates/ui-feature-detail-page-template.orb +147 -1
- package/behaviors/registry/ui/marketing/templates/ui-landing-page-template.orb +260 -1
- package/behaviors/registry/ui/marketing/templates/ui-pricing-page-template.orb +98 -1
- package/dist/behaviors/exports-reader.js +3918 -2596
- package/dist/behaviors/functions/index.d.ts +469 -30
- package/dist/behaviors/functions/index.js +3906 -2597
- package/dist/behaviors/index.d.ts +2 -2
- package/dist/behaviors/index.js +3929 -2597
- package/dist/behaviors/query.d.ts +88 -4
- package/dist/behaviors/query.js +3929 -2597
- package/dist/behaviors-embeddings.hash.json +3 -3
- package/dist/behaviors-embeddings.json +19 -3
- package/dist/behaviors-registry.json +122305 -2637
- package/dist/index.d.ts +2 -2
- package/dist/index.js +3929 -2597
- package/dist/knob-embeddings.hash.json +3 -3
- package/dist/knob-embeddings.json +1 -1
- package/dist/registry/factory-signatures.json +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
app ui-dock-layout "1.0.0"
|
|
2
|
+
"DockLayout — UI factory (1:1 with the @almadar/ui dock-layout pattern)."
|
|
3
|
+
orbital DockLayoutOrbital {
|
|
4
|
+
entity DockLayoutItem [runtime] {
|
|
5
|
+
id : string!
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
trait DockLayoutRender -> @rebindable DockLayoutItem [interaction, instance] {
|
|
9
|
+
initial: idle
|
|
10
|
+
|
|
11
|
+
state idle {
|
|
12
|
+
INIT -> idle
|
|
13
|
+
(render-ui main {
|
|
14
|
+
rail: @config.rail
|
|
15
|
+
sidebar: @config.sidebar
|
|
16
|
+
main: @config.main
|
|
17
|
+
bottomPanel: @config.bottomPanel
|
|
18
|
+
statusBar: @config.statusBar
|
|
19
|
+
secondarySidebar: @config.secondarySidebar
|
|
20
|
+
railWidth: @config.railWidth
|
|
21
|
+
secondarySidebarWidth: @config.secondarySidebarWidth
|
|
22
|
+
sidebarCollapsed: @config.sidebarCollapsed
|
|
23
|
+
onSidebarCollapsedChange: @config.onSidebarCollapsedChange
|
|
24
|
+
sidebarWidth: @config.sidebarWidth
|
|
25
|
+
onSidebarWidthChange: @config.onSidebarWidthChange
|
|
26
|
+
sidebarMinSize: @config.sidebarMinSize
|
|
27
|
+
bottomPanelCollapsed: @config.bottomPanelCollapsed
|
|
28
|
+
onBottomPanelCollapsedChange: @config.onBottomPanelCollapsedChange
|
|
29
|
+
bottomPanelHeight: @config.bottomPanelHeight
|
|
30
|
+
onBottomPanelHeightChange: @config.onBottomPanelHeightChange
|
|
31
|
+
bottomPanelMinSize: @config.bottomPanelMinSize
|
|
32
|
+
secondarySidebarCollapsed: @config.secondarySidebarCollapsed
|
|
33
|
+
onSecondarySidebarCollapsedChange: @config.onSecondarySidebarCollapsedChange
|
|
34
|
+
className: @config.className
|
|
35
|
+
railClassName: @config.railClassName
|
|
36
|
+
sidebarClassName: @config.sidebarClassName
|
|
37
|
+
mainClassName: @config.mainClassName
|
|
38
|
+
bottomPanelClassName: @config.bottomPanelClassName
|
|
39
|
+
statusBarClassName: @config.statusBarClassName
|
|
40
|
+
secondarySidebarClassName: @config.secondarySidebarClassName
|
|
41
|
+
type: dock-layout
|
|
42
|
+
})
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
emits {
|
|
46
|
+
@config.onSidebarCollapsedChange -> external {
|
|
47
|
+
collapsed : boolean
|
|
48
|
+
}
|
|
49
|
+
@description "onSidebarCollapsedChange prop"
|
|
50
|
+
@tier "essential"
|
|
51
|
+
@config.onSidebarWidthChange -> external {
|
|
52
|
+
width : number
|
|
53
|
+
}
|
|
54
|
+
@description "onSidebarWidthChange prop"
|
|
55
|
+
@tier "essential"
|
|
56
|
+
@config.onBottomPanelCollapsedChange -> external {
|
|
57
|
+
collapsed : boolean
|
|
58
|
+
}
|
|
59
|
+
@description "onBottomPanelCollapsedChange prop"
|
|
60
|
+
@tier "essential"
|
|
61
|
+
@config.onBottomPanelHeightChange -> external {
|
|
62
|
+
height : number
|
|
63
|
+
}
|
|
64
|
+
@description "onBottomPanelHeightChange prop"
|
|
65
|
+
@tier "essential"
|
|
66
|
+
@config.onSecondarySidebarCollapsedChange -> external {
|
|
67
|
+
collapsed : boolean
|
|
68
|
+
}
|
|
69
|
+
@description "onSecondarySidebarCollapsedChange prop"
|
|
70
|
+
@tier "essential"
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
config {
|
|
74
|
+
rail : node
|
|
75
|
+
@label "Rail"
|
|
76
|
+
@description "Fixed-width far-left vertical strip (e.g. an icon nav rail)."
|
|
77
|
+
@tier "presentation"
|
|
78
|
+
sidebar : node
|
|
79
|
+
@label "Sidebar"
|
|
80
|
+
@description "Collapsible, resizable left sidebar."
|
|
81
|
+
@tier "presentation"
|
|
82
|
+
main : node = []
|
|
83
|
+
@label "Main"
|
|
84
|
+
@description "Required center region."
|
|
85
|
+
@tier "presentation"
|
|
86
|
+
bottomPanel : node
|
|
87
|
+
@label "Bottom Panel"
|
|
88
|
+
@description "Collapsible, resizable-height bottom panel."
|
|
89
|
+
@tier "presentation"
|
|
90
|
+
statusBar : node
|
|
91
|
+
@label "Status Bar"
|
|
92
|
+
@description "Slim strip pinned to the bottom of the frame, below the bottom panel."
|
|
93
|
+
@tier "presentation"
|
|
94
|
+
secondarySidebar : node
|
|
95
|
+
@label "Secondary Sidebar"
|
|
96
|
+
@description "Collapsible right sidebar."
|
|
97
|
+
@tier "presentation"
|
|
98
|
+
railWidth : number = 56
|
|
99
|
+
@label "Rail Width"
|
|
100
|
+
@description "Width of `rail` in pixels. @default 56"
|
|
101
|
+
@tier "presentation"
|
|
102
|
+
secondarySidebarWidth : number = 280
|
|
103
|
+
@label "Secondary Sidebar Width"
|
|
104
|
+
@description "Width of `secondarySidebar` in pixels (fixed — not resizable). @default 280"
|
|
105
|
+
@tier "presentation"
|
|
106
|
+
sidebarCollapsed : boolean = false
|
|
107
|
+
@label "Sidebar Collapsed"
|
|
108
|
+
@description "Whether `sidebar` is collapsed. @default false"
|
|
109
|
+
@tier "presentation"
|
|
110
|
+
onSidebarCollapsedChange : event = "SIDEBAR_COLLAPSED_CHANGE"
|
|
111
|
+
@label "On Sidebar Collapsed Change"
|
|
112
|
+
@description "onSidebarCollapsedChange prop"
|
|
113
|
+
@tier "presentation"
|
|
114
|
+
sidebarWidth : number = 20
|
|
115
|
+
@label "Sidebar Width"
|
|
116
|
+
@description "Sidebar size as a SplitPane ratio (0-100, percentage of the sidebar/main split). @default 20"
|
|
117
|
+
@tier "presentation"
|
|
118
|
+
onSidebarWidthChange : event = "SIDEBAR_WIDTH_CHANGE"
|
|
119
|
+
@label "On Sidebar Width Change"
|
|
120
|
+
@description "onSidebarWidthChange prop"
|
|
121
|
+
@tier "presentation"
|
|
122
|
+
sidebarMinSize : number = 160
|
|
123
|
+
@label "Sidebar Min Size"
|
|
124
|
+
@description "Minimum sidebar size in pixels, forwarded to SplitPane's `minSize`. @default 160"
|
|
125
|
+
@tier "presentation"
|
|
126
|
+
bottomPanelCollapsed : boolean = false
|
|
127
|
+
@label "Bottom Panel Collapsed"
|
|
128
|
+
@description "Whether `bottomPanel` is collapsed. @default false"
|
|
129
|
+
@tier "presentation"
|
|
130
|
+
onBottomPanelCollapsedChange : event = "BOTTOM_PANEL_COLLAPSED_CHANGE"
|
|
131
|
+
@label "On Bottom Panel Collapsed Change"
|
|
132
|
+
@description "onBottomPanelCollapsedChange prop"
|
|
133
|
+
@tier "presentation"
|
|
134
|
+
bottomPanelHeight : number = 30
|
|
135
|
+
@label "Bottom Panel Height"
|
|
136
|
+
@description "Bottom panel size as a SplitPane ratio (0-100, percentage given to the panel). @default 30"
|
|
137
|
+
@tier "presentation"
|
|
138
|
+
onBottomPanelHeightChange : event = "BOTTOM_PANEL_HEIGHT_CHANGE"
|
|
139
|
+
@label "On Bottom Panel Height Change"
|
|
140
|
+
@description "onBottomPanelHeightChange prop"
|
|
141
|
+
@tier "presentation"
|
|
142
|
+
bottomPanelMinSize : number = 120
|
|
143
|
+
@label "Bottom Panel Min Size"
|
|
144
|
+
@description "Minimum bottom panel size in pixels, forwarded to SplitPane's `minSize`. @default 120"
|
|
145
|
+
@tier "presentation"
|
|
146
|
+
secondarySidebarCollapsed : boolean = false
|
|
147
|
+
@label "Secondary Sidebar Collapsed"
|
|
148
|
+
@description "Whether `secondarySidebar` is collapsed. @default false"
|
|
149
|
+
@tier "presentation"
|
|
150
|
+
onSecondarySidebarCollapsedChange : event = "SECONDARY_SIDEBAR_COLLAPSED_CHANGE"
|
|
151
|
+
@label "On Secondary Sidebar Collapsed Change"
|
|
152
|
+
@description "onSecondarySidebarCollapsedChange prop"
|
|
153
|
+
@tier "presentation"
|
|
154
|
+
className : string
|
|
155
|
+
@label "Class Name"
|
|
156
|
+
@description "Additional CSS classes on the root frame."
|
|
157
|
+
@tier "presentation"
|
|
158
|
+
railClassName : string
|
|
159
|
+
@label "Rail Class Name"
|
|
160
|
+
@description "railClassName prop"
|
|
161
|
+
@tier "presentation"
|
|
162
|
+
sidebarClassName : string
|
|
163
|
+
@label "Sidebar Class Name"
|
|
164
|
+
@description "sidebarClassName prop"
|
|
165
|
+
@tier "presentation"
|
|
166
|
+
mainClassName : string
|
|
167
|
+
@label "Main Class Name"
|
|
168
|
+
@description "mainClassName prop"
|
|
169
|
+
@tier "presentation"
|
|
170
|
+
bottomPanelClassName : string
|
|
171
|
+
@label "Bottom Panel Class Name"
|
|
172
|
+
@description "bottomPanelClassName prop"
|
|
173
|
+
@tier "presentation"
|
|
174
|
+
statusBarClassName : string
|
|
175
|
+
@label "Status Bar Class Name"
|
|
176
|
+
@description "statusBarClassName prop"
|
|
177
|
+
@tier "presentation"
|
|
178
|
+
secondarySidebarClassName : string
|
|
179
|
+
@label "Secondary Sidebar Class Name"
|
|
180
|
+
@description "secondarySidebarClassName prop"
|
|
181
|
+
@tier "presentation"
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
page "/dock-layout" as DockLayoutPage -> DockLayoutRender
|
|
186
|
+
}
|
|
@@ -24,8 +24,8 @@ orbital EntityCardsOrbital {
|
|
|
24
24
|
label : string!
|
|
25
25
|
event : event
|
|
26
26
|
navigatesTo : string
|
|
27
|
-
placement :
|
|
28
|
-
variant :
|
|
27
|
+
placement : string
|
|
28
|
+
variant : string
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
entity EntityCardsItem [runtime] {
|
|
@@ -28,9 +28,9 @@ orbital EntityTableOrbital {
|
|
|
28
28
|
label : string!
|
|
29
29
|
event : event
|
|
30
30
|
navigatesTo : string
|
|
31
|
-
placement :
|
|
31
|
+
placement : string
|
|
32
32
|
icon : icon
|
|
33
|
-
variant :
|
|
33
|
+
variant : string
|
|
34
34
|
}
|
|
35
35
|
type EntityTableEmptyAction = {
|
|
36
36
|
label : string!
|
|
@@ -10,7 +10,7 @@ orbital FormSectionOrbital {
|
|
|
10
10
|
inputType : string
|
|
11
11
|
placeholder : string
|
|
12
12
|
required : boolean
|
|
13
|
-
defaultValue :
|
|
13
|
+
defaultValue : ControlValue
|
|
14
14
|
options : [FormSectionFieldsItemOptionsItem]
|
|
15
15
|
values : [string]
|
|
16
16
|
relation : FormSectionFieldsItemRelation
|
|
@@ -22,6 +22,13 @@ orbital FormSectionOrbital {
|
|
|
22
22
|
disabled : boolean
|
|
23
23
|
hint : string
|
|
24
24
|
}
|
|
25
|
+
type ControlValue = string | number | boolean | [string] | FileValue
|
|
26
|
+
type FileValue = {
|
|
27
|
+
name : string!
|
|
28
|
+
url : string!
|
|
29
|
+
mimeType : string!
|
|
30
|
+
sizeBytes : number!
|
|
31
|
+
}
|
|
25
32
|
type FormSectionFieldsItemOptionsItem = {
|
|
26
33
|
value : string!
|
|
27
34
|
label : string!
|
|
@@ -69,10 +76,10 @@ orbital FormSectionOrbital {
|
|
|
69
76
|
message : string!
|
|
70
77
|
}
|
|
71
78
|
type FormSectionEvaluationContext = {
|
|
72
|
-
formValues : Map string
|
|
73
|
-
globalVariables : Map string
|
|
74
|
-
localVariables : Map string
|
|
75
|
-
entity : Map string
|
|
79
|
+
formValues : Map string ControlValue!
|
|
80
|
+
globalVariables : Map string ControlValue!
|
|
81
|
+
localVariables : Map string ControlValue
|
|
82
|
+
entity : Map string ControlValue
|
|
76
83
|
}
|
|
77
84
|
type FormSectionSectionsItem = {
|
|
78
85
|
id : string!
|
|
@@ -89,7 +96,7 @@ orbital FormSectionOrbital {
|
|
|
89
96
|
inputType : string
|
|
90
97
|
placeholder : string
|
|
91
98
|
required : boolean
|
|
92
|
-
defaultValue :
|
|
99
|
+
defaultValue : ControlValue
|
|
93
100
|
options : [FormSectionSectionsItemFieldsItemOptionsItem]
|
|
94
101
|
values : [string]
|
|
95
102
|
relation : FormSectionSectionsItemFieldsItemRelation
|
|
@@ -116,7 +123,7 @@ orbital FormSectionOrbital {
|
|
|
116
123
|
type FormSectionFIELDCHANGEChange = {
|
|
117
124
|
fieldId : string!
|
|
118
125
|
value : string | number | boolean | [string] | FormSectionFIELDCHANGEChangeValue!
|
|
119
|
-
formValues : Map string
|
|
126
|
+
formValues : Map string ControlValue!
|
|
120
127
|
}
|
|
121
128
|
type FormSectionFIELDCHANGEChangeValue = {
|
|
122
129
|
name : string!
|
|
@@ -283,7 +290,7 @@ orbital FormSectionOrbital {
|
|
|
283
290
|
@label "Class Name"
|
|
284
291
|
@description "Additional CSS classes"
|
|
285
292
|
@tier "presentation"
|
|
286
|
-
mode :
|
|
293
|
+
mode : string
|
|
287
294
|
@label "Mode"
|
|
288
295
|
@description "Form mode — 'create' for new records, 'edit' for updating existing. Accepts `string` so schema-driven callers (whose `config.mode` is typed as `string` per the trait's declared config block) compile cleanly. The runtime treats anything other than 'edit' as 'create'."
|
|
289
296
|
@tier "presentation"
|
|
@@ -10,7 +10,7 @@ orbital FormOrbital {
|
|
|
10
10
|
inputType : string
|
|
11
11
|
placeholder : string
|
|
12
12
|
required : boolean
|
|
13
|
-
defaultValue :
|
|
13
|
+
defaultValue : ControlValue
|
|
14
14
|
options : [FormFieldsItemOptionsItem]
|
|
15
15
|
values : [string]
|
|
16
16
|
relation : FormFieldsItemRelation
|
|
@@ -22,6 +22,13 @@ orbital FormOrbital {
|
|
|
22
22
|
disabled : boolean
|
|
23
23
|
hint : string
|
|
24
24
|
}
|
|
25
|
+
type ControlValue = string | number | boolean | [string] | FileValue
|
|
26
|
+
type FileValue = {
|
|
27
|
+
name : string!
|
|
28
|
+
url : string!
|
|
29
|
+
mimeType : string!
|
|
30
|
+
sizeBytes : number!
|
|
31
|
+
}
|
|
25
32
|
type FormFieldsItemOptionsItem = {
|
|
26
33
|
value : string!
|
|
27
34
|
label : string!
|
|
@@ -69,10 +76,10 @@ orbital FormOrbital {
|
|
|
69
76
|
message : string!
|
|
70
77
|
}
|
|
71
78
|
type FormEvaluationContext = {
|
|
72
|
-
formValues : Map string
|
|
73
|
-
globalVariables : Map string
|
|
74
|
-
localVariables : Map string
|
|
75
|
-
entity : Map string
|
|
79
|
+
formValues : Map string ControlValue!
|
|
80
|
+
globalVariables : Map string ControlValue!
|
|
81
|
+
localVariables : Map string ControlValue
|
|
82
|
+
entity : Map string ControlValue
|
|
76
83
|
}
|
|
77
84
|
type FormSectionsItem = {
|
|
78
85
|
id : string!
|
|
@@ -89,7 +96,7 @@ orbital FormOrbital {
|
|
|
89
96
|
inputType : string
|
|
90
97
|
placeholder : string
|
|
91
98
|
required : boolean
|
|
92
|
-
defaultValue :
|
|
99
|
+
defaultValue : ControlValue
|
|
93
100
|
options : [FormSectionsItemFieldsItemOptionsItem]
|
|
94
101
|
values : [string]
|
|
95
102
|
relation : FormSectionsItemFieldsItemRelation
|
|
@@ -116,7 +123,7 @@ orbital FormOrbital {
|
|
|
116
123
|
type FormFIELDCHANGEChange = {
|
|
117
124
|
fieldId : string!
|
|
118
125
|
value : string | number | boolean | [string] | FormFIELDCHANGEChangeValue!
|
|
119
|
-
formValues : Map string
|
|
126
|
+
formValues : Map string ControlValue!
|
|
120
127
|
}
|
|
121
128
|
type FormFIELDCHANGEChangeValue = {
|
|
122
129
|
name : string!
|
|
@@ -283,7 +290,7 @@ orbital FormOrbital {
|
|
|
283
290
|
@label "Class Name"
|
|
284
291
|
@description "Additional CSS classes"
|
|
285
292
|
@tier "presentation"
|
|
286
|
-
mode :
|
|
293
|
+
mode : string
|
|
287
294
|
@label "Mode"
|
|
288
295
|
@description "Form mode — 'create' for new records, 'edit' for updating existing. Accepts `string` so schema-driven callers (whose `config.mode` is typed as `string` per the trait's declared config block) compile cleanly. The runtime treats anything other than 'edit' as 'create'."
|
|
289
296
|
@tier "presentation"
|
|
@@ -3,6 +3,7 @@ app ui-split-pane "1.0.0"
|
|
|
3
3
|
orbital SplitPaneOrbital {
|
|
4
4
|
entity SplitPaneItem [runtime] {
|
|
5
5
|
id : string!
|
|
6
|
+
ratio : number
|
|
6
7
|
}
|
|
7
8
|
|
|
8
9
|
trait SplitPaneRender -> @rebindable SplitPaneItem [interaction, instance] {
|
|
@@ -10,9 +11,10 @@ orbital SplitPaneOrbital {
|
|
|
10
11
|
|
|
11
12
|
state idle {
|
|
12
13
|
INIT -> idle
|
|
14
|
+
(set @entity.ratio @config.ratio)
|
|
13
15
|
(render-ui main {
|
|
14
16
|
direction: @config.direction
|
|
15
|
-
ratio: @
|
|
17
|
+
ratio: @entity.ratio
|
|
16
18
|
minSize: @config.minSize
|
|
17
19
|
resizable: @config.resizable
|
|
18
20
|
left: @config.left
|
|
@@ -20,8 +22,38 @@ orbital SplitPaneOrbital {
|
|
|
20
22
|
className: @config.className
|
|
21
23
|
leftClassName: @config.leftClassName
|
|
22
24
|
rightClassName: @config.rightClassName
|
|
25
|
+
onRatioChange: @config.onRatioChange
|
|
23
26
|
type: split-pane
|
|
24
27
|
})
|
|
28
|
+
RATIO_CHANGE -> idle
|
|
29
|
+
(set @entity.ratio ?ratio)
|
|
30
|
+
(render-ui main {
|
|
31
|
+
direction: @config.direction
|
|
32
|
+
ratio: @entity.ratio
|
|
33
|
+
minSize: @config.minSize
|
|
34
|
+
resizable: @config.resizable
|
|
35
|
+
left: @config.left
|
|
36
|
+
right: @config.right
|
|
37
|
+
className: @config.className
|
|
38
|
+
leftClassName: @config.leftClassName
|
|
39
|
+
rightClassName: @config.rightClassName
|
|
40
|
+
onRatioChange: @config.onRatioChange
|
|
41
|
+
type: split-pane
|
|
42
|
+
})
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
emits {
|
|
46
|
+
@config.onRatioChange -> external {
|
|
47
|
+
ratio : number
|
|
48
|
+
}
|
|
49
|
+
@description "Called with the new ratio while dragging. Providing this makes `ratio` controlled — the rendered split always tracks the prop instead of internal state, mirroring a controlled input. Omit for uncontrolled (self-tracked) behavior."
|
|
50
|
+
@tier "essential"
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
listens {
|
|
54
|
+
RATIO_CHANGE {
|
|
55
|
+
ratio : number
|
|
56
|
+
}
|
|
25
57
|
}
|
|
26
58
|
|
|
27
59
|
config {
|
|
@@ -61,6 +93,10 @@ orbital SplitPaneOrbital {
|
|
|
61
93
|
@label "Right Class Name"
|
|
62
94
|
@description "Class for right/bottom pane"
|
|
63
95
|
@tier "presentation"
|
|
96
|
+
onRatioChange : event = "RATIO_CHANGE"
|
|
97
|
+
@label "On Ratio Change"
|
|
98
|
+
@description "Called with the new ratio while dragging. Providing this makes `ratio` controlled — the rendered split always tracks the prop instead of internal state, mirroring a controlled input. Omit for uncontrolled (self-tracked) behavior."
|
|
99
|
+
@tier "presentation"
|
|
64
100
|
}
|
|
65
101
|
}
|
|
66
102
|
|
|
@@ -114,7 +114,7 @@ orbital SubagentTracePanelOrbital {
|
|
|
114
114
|
@label "Selected Ids"
|
|
115
115
|
@description "Currently selected item IDs"
|
|
116
116
|
@tier "presentation"
|
|
117
|
-
subagents : [
|
|
117
|
+
subagents : [Map string scalar] = []
|
|
118
118
|
@label "Subagents"
|
|
119
119
|
@description "All known subagents from the runner."
|
|
120
120
|
@tier "presentation"
|
|
@@ -134,11 +134,11 @@ orbital SubagentTracePanelOrbital {
|
|
|
134
134
|
@label "On Close"
|
|
135
135
|
@description "Optional dismiss handler."
|
|
136
136
|
@tier "presentation"
|
|
137
|
-
coordinatorActivities : [
|
|
137
|
+
coordinatorActivities : [Map string scalar] = []
|
|
138
138
|
@label "Coordinator Activities"
|
|
139
139
|
@description "Full coordinator activities (tool calls, results, messages, errors)."
|
|
140
140
|
@tier "presentation"
|
|
141
|
-
coordinatorMessages : [
|
|
141
|
+
coordinatorMessages : [Map string scalar] = []
|
|
142
142
|
@label "Coordinator Messages"
|
|
143
143
|
@description "Canonical Coordinator conversation — same shape live and on reload. When present, takes precedence over `coordinatorActivities` for the Coordinator section."
|
|
144
144
|
@tier "presentation"
|
|
@@ -5,6 +5,7 @@ orbital CoefPadOrbital {
|
|
|
5
5
|
x0 : number!
|
|
6
6
|
x1 : number!
|
|
7
7
|
a : number!
|
|
8
|
+
b : number
|
|
8
9
|
h : number!
|
|
9
10
|
k : number!
|
|
10
11
|
}
|
|
@@ -50,7 +51,7 @@ orbital CoefPadOrbital {
|
|
|
50
51
|
(let ((remaining (array/len (array/filter @entity.coefPads (fn c (and (== (object/get @c applied) false) (!= (object/get @c id) (object/get @p id))))))))
|
|
51
52
|
(do
|
|
52
53
|
(set @entity.coefPads (array/map @entity.coefPads (fn c (if (== (object/get @c id) (object/get @p id)) (object/merge @c { applied: true }) @c))))
|
|
53
|
-
(emit COEF_PAD_APPLIED { id: (object/get @p id), x: (object/get @p x), y: (object/get @p y), x0: (object/get @m x0), x1: (object/get @m x1), a: (object/get @m a), h: (object/get @m h), k: (object/get @m k), hint: (object/get @p hint), hop: (object/get @p hop), samples: (object/get @p samples) })
|
|
54
|
+
(emit COEF_PAD_APPLIED { id: (object/get @p id), x: (object/get @p x), y: (object/get @p y), x0: (object/get @m x0), x1: (object/get @m x1), a: (object/get @m a), b: (if (== (object/get @m b) null) 1 (object/get @m b)), h: (object/get @m h), k: (object/get @m k), hint: (object/get @p hint), hop: (object/get @p hop), samples: (object/get @p samples) })
|
|
54
55
|
(if (and (== @entity.coefCompleted false) (== @remaining 0))
|
|
55
56
|
(do
|
|
56
57
|
(set @entity.coefCompleted true)
|
|
@@ -71,13 +72,14 @@ orbital CoefPadOrbital {
|
|
|
71
72
|
x0 : number!
|
|
72
73
|
x1 : number!
|
|
73
74
|
a : number!
|
|
75
|
+
b : number
|
|
74
76
|
h : number!
|
|
75
77
|
k : number!
|
|
76
78
|
hint : string
|
|
77
79
|
hop : boolean
|
|
78
80
|
samples : [CoefModSample]
|
|
79
81
|
}
|
|
80
|
-
@description "The player stood on an unapplied coefficient pad; carries the pad position and the full mod (x0, x1, a, h, k) so the board appends it to the body authority's curveMods and hops the player onto the reshaped road. Fires once per pad per run."
|
|
82
|
+
@description "The player stood on an unapplied coefficient pad; carries the pad position and the full mod (x0, x1, a, b, h, k) so the board appends it to the body authority's curveMods and hops the player onto the reshaped road. Fires once per pad per run."
|
|
81
83
|
@tier "domain"
|
|
82
84
|
COEF_PAD_SET_COMPLETED -> external {
|
|
83
85
|
}
|
|
@@ -97,7 +99,7 @@ orbital CoefPadOrbital {
|
|
|
97
99
|
@tier "domain"
|
|
98
100
|
coefPads : [CoefPad] = []
|
|
99
101
|
@label "Coefficient Pads"
|
|
100
|
-
@description "One row per pad: id, center (x, y in world units), the mod applied to the road while inside x0..x1 (a scales slope+height, h shifts horizontally, k lifts), and the hint floated on apply, and hop (true = the board teleports the player onto the reshaped surface — use when the mod steps the road far from the pad; false = the skate snap carries the player, preserving speed). applied is stamped at runtime."
|
|
102
|
+
@description "One row per pad: id, center (x, y in world units), the mod applied to the road while inside x0..x1 (a scales slope+height, b compresses/stretch period, h shifts horizontally, k lifts), and the hint floated on apply, and hop (true = the board teleports the player onto the reshaped surface — use when the mod steps the road far from the pad; false = the skate snap carries the player, preserving speed). applied is stamped at runtime."
|
|
101
103
|
@tier "domain"
|
|
102
104
|
reachX : number = 0.7
|
|
103
105
|
@label "Reach X"
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
app std-fx-narrative "1.0.0"
|
|
2
|
+
"Headless pedagogy→fx translator for game boards and learning shells: turns high-level narrative events into big transient screen-space or world-space text effects consumed by std-fx-particles / fx-overlay. Levels emit NARRATE { text, style } and get a correctly styled, centered (or positioned) floating text burst without hand-rolling particle structs. Tutorials emit TUTORIAL_SHOW and the atom forwards SHOW to a composed std-tutorial-overlay trait. Renders nothing; centralizes the FX vocabulary so every level's teaching text looks and behaves the same."
|
|
3
|
+
|
|
4
|
+
orbital FxNarrativeOrbital {
|
|
5
|
+
type NarrativeCue = {
|
|
6
|
+
text : string!
|
|
7
|
+
style : "hint" | "fact" | "warn" | "celebrate"
|
|
8
|
+
x : number
|
|
9
|
+
y : number
|
|
10
|
+
ttl : number
|
|
11
|
+
space : "screen" | "world"
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
type FxParticle = {
|
|
15
|
+
id : string!
|
|
16
|
+
type : string!
|
|
17
|
+
x : number!
|
|
18
|
+
z : number
|
|
19
|
+
y : number
|
|
20
|
+
message : string
|
|
21
|
+
ttl : number!
|
|
22
|
+
maxTtl : number
|
|
23
|
+
bornAt : number
|
|
24
|
+
space : string
|
|
25
|
+
effect : string
|
|
26
|
+
color : string
|
|
27
|
+
size : number
|
|
28
|
+
vx : number
|
|
29
|
+
vy : number
|
|
30
|
+
vz : number
|
|
31
|
+
particleCount : number
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
type StyleDef = {
|
|
35
|
+
color : string!
|
|
36
|
+
size : number!
|
|
37
|
+
ttl : number!
|
|
38
|
+
effect : string!
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
entity FxNarrativeData [runtime, shared] {
|
|
42
|
+
id : string!
|
|
43
|
+
seq : number = 0
|
|
44
|
+
lastText : string = ""
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
trait FxNarrative -> @rebindable FxNarrativeData [lifecycle] {
|
|
48
|
+
initial: active
|
|
49
|
+
|
|
50
|
+
state active {
|
|
51
|
+
INIT -> active
|
|
52
|
+
(set @entity.seq 0)
|
|
53
|
+
(set @entity.lastText "")
|
|
54
|
+
|
|
55
|
+
NARRATE -> active when @config.running
|
|
56
|
+
(let ((styleKey (if (== (object/get @payload style) null) "fact" (object/get @payload style)))
|
|
57
|
+
(styleDef (object/get @config.styles @styleKey))
|
|
58
|
+
(ttl (if (== (object/get @payload ttl) null) (object/get @styleDef ttl) (object/get @payload ttl)))
|
|
59
|
+
(x (if (== (object/get @payload x) null) 0.5 (object/get @payload x)))
|
|
60
|
+
(y (if (== (object/get @payload y) null) 0.25 (object/get @payload y)))
|
|
61
|
+
(space (if (== (object/get @payload space) null) "world" (object/get @payload space)))
|
|
62
|
+
(text (object/get @payload text)))
|
|
63
|
+
(do
|
|
64
|
+
(set @entity.seq (+ @entity.seq 1))
|
|
65
|
+
(set @entity.lastText @text)
|
|
66
|
+
(emit BURST { particles: [ {
|
|
67
|
+
id: (str/concat "narrative-" @entity.seq),
|
|
68
|
+
type: "narrative",
|
|
69
|
+
x: @x,
|
|
70
|
+
z: @y,
|
|
71
|
+
y: 0,
|
|
72
|
+
message: @text,
|
|
73
|
+
ttl: @ttl,
|
|
74
|
+
maxTtl: @ttl,
|
|
75
|
+
bornAt: (time/now),
|
|
76
|
+
space: @space,
|
|
77
|
+
effect: (object/get @styleDef effect),
|
|
78
|
+
color: (object/get @styleDef color),
|
|
79
|
+
size: (object/get @styleDef size),
|
|
80
|
+
vx: 0,
|
|
81
|
+
vy: 0,
|
|
82
|
+
vz: 0,
|
|
83
|
+
particleCount: 1
|
|
84
|
+
} ] })))
|
|
85
|
+
|
|
86
|
+
TUTORIAL_SHOW -> active when @config.running
|
|
87
|
+
(emit SHOW { id: "tutorial" })
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
emits {
|
|
91
|
+
BURST -> external {
|
|
92
|
+
particles : [FxParticle]
|
|
93
|
+
}
|
|
94
|
+
@description "Styled floating-text particle batch for std-fx-particles / fx-overlay."
|
|
95
|
+
@tier "domain"
|
|
96
|
+
SHOW -> external {
|
|
97
|
+
id : string
|
|
98
|
+
}
|
|
99
|
+
@description "Forwarded to a composed std-tutorial-overlay to open the tutorial modal."
|
|
100
|
+
@tier "domain"
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
listens {
|
|
104
|
+
NARRATE { text : string!, style : "hint" | "fact" | "warn" | "celebrate", x : number, y : number, ttl : number, space : "screen" | "world" }
|
|
105
|
+
TUTORIAL_SHOW { text : string, title : string }
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
config {
|
|
109
|
+
running : boolean = true
|
|
110
|
+
@label "Running"
|
|
111
|
+
@description "When false all narrative events are ignored."
|
|
112
|
+
@tier "domain"
|
|
113
|
+
styles : Map string StyleDef = {
|
|
114
|
+
"fact": { color: "#38bdf8", size: 0.7, ttl: 3, effect: "float-text" },
|
|
115
|
+
"hint": { color: "#a78bfa", size: 0.6, ttl: 2, effect: "float-text" },
|
|
116
|
+
"warn": { color: "#f87171", size: 0.6, ttl: 1.5, effect: "shake" },
|
|
117
|
+
"celebrate": { color: "#facc15", size: 0.9, ttl: 3, effect: "sparkle" }
|
|
118
|
+
}
|
|
119
|
+
@label "Styles"
|
|
120
|
+
@description "Map of narrative style to color, size, ttl, and effect. Override per game theme."
|
|
121
|
+
@tier "presentation"
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
page "/fx-narrative" as FxNarrativePage -> FxNarrative
|
|
126
|
+
}
|