@almadar/std 16.211.0 → 16.213.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/agent/organisms/std-agent-rabit.lolo +1 -0
- package/behaviors/lolo/infra/atoms/std-approval-gate.lolo +3 -0
- package/behaviors/lolo/infra/atoms/std-cache-aside.lolo +6 -0
- package/behaviors/lolo/infra/atoms/std-calendar-sync.lolo +3 -0
- package/behaviors/lolo/infra/atoms/std-cascade-on-delete.lolo +1 -0
- package/behaviors/lolo/infra/atoms/std-circuit-breaker.lolo +2 -0
- package/behaviors/lolo/infra/atoms/std-cross-reference.lolo +2 -0
- package/behaviors/lolo/infra/atoms/std-data-erasure.lolo +3 -0
- package/behaviors/lolo/infra/atoms/std-lifecycle.lolo +2 -0
- package/behaviors/lolo/infra/atoms/std-migration-job.lolo +12 -0
- package/behaviors/lolo/infra/atoms/std-mod-queue.lolo +1 -0
- package/behaviors/lolo/infra/atoms/std-notification-center.lolo +21 -1
- package/behaviors/lolo/infra/atoms/std-notify-on-event.lolo +5 -0
- package/behaviors/lolo/infra/atoms/std-reminder-scheduler.lolo +2 -0
- package/behaviors/lolo/infra/atoms/std-status-lifecycle.lolo +1 -0
- package/behaviors/lolo/ml/atoms/std-ml-classify.lolo +1 -0
- package/behaviors/lolo/ml/atoms/std-ml-infer.lolo +1 -0
- package/behaviors/lolo/ui/core/atoms/std-board.lolo +6 -0
- package/behaviors/lolo/ui/core/atoms/std-browse.lolo +6 -1
- package/behaviors/lolo/ui/core/atoms/std-calendar.lolo +6 -1
- package/behaviors/lolo/ui/core/atoms/std-event-log.lolo +2 -0
- package/behaviors/lolo/ui/core/atoms/std-gallery.lolo +8 -1
- package/behaviors/lolo/ui/core/atoms/std-list.lolo +8 -1
- package/behaviors/lolo/ui/core/atoms/std-rating-review.lolo +214 -3
- package/behaviors/lolo/ui/core/atoms/std-selection.lolo +8 -1
- package/behaviors/lolo/ui/core/atoms/std-tag-strip.lolo +1 -0
- package/behaviors/lolo/ui/core/atoms/std-tag-taxonomy.lolo +16 -0
- package/behaviors/lolo/ui/core/atoms/std-wizard.lolo +36 -0
- package/behaviors/lolo/ui/core/atoms/ui-badge.lolo +1 -1
- package/behaviors/lolo/ui/core/atoms/ui-button.lolo +1 -1
- package/behaviors/lolo/ui/core/atoms/ui-checkbox.lolo +22 -2
- package/behaviors/lolo/ui/core/atoms/ui-game-icon.lolo +1 -1
- package/behaviors/lolo/ui/core/atoms/ui-select.lolo +6 -2
- package/behaviors/lolo/ui/core/atoms/ui-textarea.lolo +3 -1
- package/behaviors/lolo/ui/core/molecules/ui-command-palette.lolo +1 -1
- package/behaviors/lolo/ui/core/molecules/ui-data-grid.lolo +13 -0
- package/behaviors/lolo/ui/core/molecules/ui-data-list.lolo +13 -0
- package/behaviors/lolo/ui/core/molecules/ui-floating-toolbar.lolo +1 -1
- package/behaviors/lolo/ui/core/molecules/ui-import-preview-tree.lolo +1 -1
- package/behaviors/lolo/ui/core/molecules/ui-menu.lolo +1 -1
- package/behaviors/lolo/ui/core/molecules/ui-table-view.lolo +13 -0
- package/behaviors/lolo/ui/core/molecules/ui-tabs.lolo +2 -2
- package/behaviors/lolo/ui/core/organisms/ui-entity-table.lolo +13 -0
- package/behaviors/lolo/ui/game/atoms/std-tutorial-overlay.lolo +6 -0
- package/behaviors/lolo/ui/game/atoms/ui-action-palette.lolo +1 -1
- package/behaviors/lolo/ui/game/atoms/ui-action-tile.lolo +1 -1
- package/behaviors/lolo/ui/game/atoms/ui-canvas-2d.lolo +2 -2
- package/behaviors/lolo/ui/game/atoms/ui-canvas.lolo +2 -2
- package/behaviors/lolo/ui/game/atoms/ui-choice-button.lolo +1 -1
- package/behaviors/lolo/ui/game/atoms/ui-control-button.lolo +1 -1
- package/behaviors/lolo/ui/game/atoms/ui-control-grid.lolo +4 -4
- package/behaviors/lolo/ui/game/atoms/ui-dialogue-bubble.lolo +1 -1
- package/behaviors/lolo/ui/game/atoms/ui-draw-fx-layer.lolo +1 -1
- package/behaviors/lolo/ui/game/atoms/ui-draw-skinned-mesh.lolo +7 -2
- package/behaviors/lolo/ui/game/atoms/ui-draw-sprite-layer.lolo +1 -1
- package/behaviors/lolo/ui/game/atoms/ui-draw-sprite.lolo +1 -1
- package/behaviors/lolo/ui/game/atoms/ui-game-audio-toggle.lolo +2 -2
- package/behaviors/lolo/ui/game/atoms/ui-game-hud.lolo +5 -5
- package/behaviors/lolo/ui/game/atoms/ui-game-menu.lolo +1 -1
- package/behaviors/lolo/ui/game/atoms/ui-health-bar.lolo +2 -2
- package/behaviors/lolo/ui/game/atoms/ui-score-display.lolo +1 -1
- package/behaviors/lolo/ui/game/atoms/ui-sequence-bar.lolo +2 -2
- package/behaviors/lolo/ui/game/atoms/ui-stat-badge.lolo +2 -2
- package/behaviors/lolo/ui/game/atoms/ui-trait-slot.lolo +4 -4
- package/behaviors/lolo/ui/learning/atoms/ui-math-canvas.lolo +2 -2
- package/behaviors/registry/agent/organisms/std-agent-rabit.orb +8 -0
- package/behaviors/registry/infra/atoms/std-approval-gate.orb +56 -18
- package/behaviors/registry/infra/atoms/std-cache-aside.orb +76 -32
- package/behaviors/registry/infra/atoms/std-calendar-sync.orb +46 -0
- package/behaviors/registry/infra/atoms/std-cascade-on-delete.orb +20 -0
- package/behaviors/registry/infra/atoms/std-circuit-breaker.orb +40 -14
- package/behaviors/registry/infra/atoms/std-cross-reference.orb +41 -15
- package/behaviors/registry/infra/atoms/std-data-erasure.orb +52 -0
- package/behaviors/registry/infra/atoms/std-lifecycle.orb +36 -0
- package/behaviors/registry/infra/atoms/std-migration-job.orb +108 -0
- package/behaviors/registry/infra/atoms/std-mod-queue.orb +20 -0
- package/behaviors/registry/infra/atoms/std-notification-center.orb +208 -1
- package/behaviors/registry/infra/atoms/std-notify-on-event.orb +70 -0
- package/behaviors/registry/infra/atoms/std-reminder-scheduler.orb +36 -0
- package/behaviors/registry/infra/atoms/std-status-lifecycle.orb +20 -0
- package/behaviors/registry/ml/atoms/std-ml-classify.orb +18 -0
- package/behaviors/registry/ml/atoms/std-ml-infer.orb +18 -0
- package/behaviors/registry/ui/core/atoms/std-board.orb +58 -0
- package/behaviors/registry/ui/core/atoms/std-browse.orb +9 -1
- package/behaviors/registry/ui/core/atoms/std-calendar.orb +9 -1
- package/behaviors/registry/ui/core/atoms/std-event-log.orb +26 -0
- package/behaviors/registry/ui/core/atoms/std-gallery.orb +35 -1
- package/behaviors/registry/ui/core/atoms/std-list.orb +35 -1
- package/behaviors/registry/ui/core/atoms/std-rating-review.orb +443 -2
- package/behaviors/registry/ui/core/atoms/std-selection.orb +35 -1
- package/behaviors/registry/ui/core/atoms/std-tag-strip.orb +20 -0
- package/behaviors/registry/ui/core/atoms/std-tag-taxonomy.orb +56 -0
- package/behaviors/registry/ui/core/atoms/std-wizard.orb +77 -0
- package/behaviors/registry/ui/core/atoms/ui-badge.orb +4 -1
- package/behaviors/registry/ui/core/atoms/ui-button.orb +4 -1
- package/behaviors/registry/ui/core/atoms/ui-checkbox.orb +78 -2
- package/behaviors/registry/ui/core/atoms/ui-game-icon.orb +4 -1
- package/behaviors/registry/ui/core/atoms/ui-select.orb +28 -0
- package/behaviors/registry/ui/core/atoms/ui-textarea.orb +14 -0
- package/behaviors/registry/ui/core/molecules/ui-command-palette.orb +1 -28
- package/behaviors/registry/ui/core/molecules/ui-data-grid.orb +58 -0
- package/behaviors/registry/ui/core/molecules/ui-data-list.orb +58 -0
- package/behaviors/registry/ui/core/molecules/ui-floating-toolbar.orb +1 -20
- package/behaviors/registry/ui/core/molecules/ui-import-preview-tree.orb +1 -14
- package/behaviors/registry/ui/core/molecules/ui-menu.orb +1 -24
- package/behaviors/registry/ui/core/molecules/ui-table-view.orb +58 -0
- package/behaviors/registry/ui/core/molecules/ui-tabs.orb +8 -2
- package/behaviors/registry/ui/core/organisms/ui-entity-table.orb +58 -0
- package/behaviors/registry/ui/game/atoms/std-tutorial-overlay.orb +44 -0
- package/behaviors/registry/ui/game/atoms/ui-action-palette.orb +4 -1
- package/behaviors/registry/ui/game/atoms/ui-action-tile.orb +4 -1
- package/behaviors/registry/ui/game/atoms/ui-canvas-2d.orb +2 -2
- package/behaviors/registry/ui/game/atoms/ui-canvas.orb +2 -2
- package/behaviors/registry/ui/game/atoms/ui-choice-button.orb +4 -1
- package/behaviors/registry/ui/game/atoms/ui-control-button.orb +4 -1
- package/behaviors/registry/ui/game/atoms/ui-control-grid.orb +10 -4
- package/behaviors/registry/ui/game/atoms/ui-dialogue-bubble.orb +4 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-fx-layer.orb +4 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-skinned-mesh.orb +12 -2
- package/behaviors/registry/ui/game/atoms/ui-draw-sprite-layer.orb +4 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-sprite.orb +4 -1
- package/behaviors/registry/ui/game/atoms/ui-game-audio-toggle.orb +8 -2
- package/behaviors/registry/ui/game/atoms/ui-game-hud.orb +20 -5
- package/behaviors/registry/ui/game/atoms/ui-game-menu.orb +4 -1
- package/behaviors/registry/ui/game/atoms/ui-health-bar.orb +8 -2
- package/behaviors/registry/ui/game/atoms/ui-score-display.orb +4 -1
- package/behaviors/registry/ui/game/atoms/ui-sequence-bar.orb +4 -1
- package/behaviors/registry/ui/game/atoms/ui-stat-badge.orb +8 -2
- package/behaviors/registry/ui/game/atoms/ui-trait-slot.orb +8 -2
- package/behaviors/registry/ui/learning/atoms/ui-math-canvas.orb +2 -2
- package/dist/behaviors/exports-reader.js +1813 -283
- package/dist/behaviors/functions/index.d.ts +64 -19
- package/dist/behaviors/functions/index.js +1811 -284
- package/dist/behaviors/index.d.ts +1 -1
- package/dist/behaviors/index.js +1814 -284
- package/dist/behaviors/query.js +1813 -283
- package/dist/behaviors-embeddings.hash.json +3 -3
- package/dist/behaviors-embeddings.json +15 -15
- package/dist/behaviors-registry.json +827 -490
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1814 -284
- 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 +2 -2
|
@@ -881,9 +881,189 @@ orbital RatingReviewOrbital {
|
|
|
881
881
|
type: stack
|
|
882
882
|
})
|
|
883
883
|
MARK_HELPFUL -> viewing
|
|
884
|
+
(set @entity.reviews (array/map @entity.reviews (fn row (if ["=", (object/get @row id ""), ?id] (object/merge @row { helpful: ["+", (object/get @row helpful 0), 1] }) @row))))
|
|
885
|
+
(set @entity.reviewsSource (array/map @entity.reviewsSource (fn row (if ["=", (object/get @row id ""), ?id] (object/merge @row { helpful: ["+", (object/get @row helpful 0), 1] }) @row))))
|
|
884
886
|
(render-ui main {
|
|
885
|
-
|
|
886
|
-
|
|
887
|
+
children: [{
|
|
888
|
+
align: center
|
|
889
|
+
children: [{
|
|
890
|
+
children: [{
|
|
891
|
+
align: center
|
|
892
|
+
children: [{ name: star, type: icon }, {
|
|
893
|
+
content: Reviews
|
|
894
|
+
type: typography
|
|
895
|
+
variant: h3
|
|
896
|
+
}, {
|
|
897
|
+
color: muted
|
|
898
|
+
content: "·"
|
|
899
|
+
type: typography
|
|
900
|
+
}, {
|
|
901
|
+
content: @entity.averageRating
|
|
902
|
+
type: typography
|
|
903
|
+
variant: h3
|
|
904
|
+
}, {
|
|
905
|
+
color: warning
|
|
906
|
+
name: star
|
|
907
|
+
type: icon
|
|
908
|
+
}, {
|
|
909
|
+
color: muted
|
|
910
|
+
content: "·"
|
|
911
|
+
type: typography
|
|
912
|
+
}, {
|
|
913
|
+
color: muted
|
|
914
|
+
content: @entity.totalReviews
|
|
915
|
+
type: typography
|
|
916
|
+
variant: h4
|
|
917
|
+
}, {
|
|
918
|
+
color: muted
|
|
919
|
+
content: reviews
|
|
920
|
+
type: typography
|
|
921
|
+
variant: h4
|
|
922
|
+
}]
|
|
923
|
+
direction: horizontal
|
|
924
|
+
gap: sm
|
|
925
|
+
type: stack
|
|
926
|
+
}, {
|
|
927
|
+
color: muted
|
|
928
|
+
content: @config.subjectTitle
|
|
929
|
+
type: typography
|
|
930
|
+
variant: caption
|
|
931
|
+
}]
|
|
932
|
+
direction: vertical
|
|
933
|
+
gap: xs
|
|
934
|
+
type: stack
|
|
935
|
+
}, {
|
|
936
|
+
action: WRITE_REVIEW
|
|
937
|
+
icon: edit
|
|
938
|
+
label: @config.writeLabel
|
|
939
|
+
type: button
|
|
940
|
+
variant: primary
|
|
941
|
+
}]
|
|
942
|
+
direction: horizontal
|
|
943
|
+
gap: md
|
|
944
|
+
justify: between
|
|
945
|
+
type: stack
|
|
946
|
+
}, {
|
|
947
|
+
children: [{
|
|
948
|
+
children: [{
|
|
949
|
+
content: "Rating distribution"
|
|
950
|
+
type: typography
|
|
951
|
+
variant: h4
|
|
952
|
+
}, {
|
|
953
|
+
entity: @entity.starDistribution
|
|
954
|
+
fields: []
|
|
955
|
+
gap: sm
|
|
956
|
+
renderItem: (fn bar {
|
|
957
|
+
align: center
|
|
958
|
+
children: [{
|
|
959
|
+
content: @bar.label
|
|
960
|
+
type: typography
|
|
961
|
+
variant: caption
|
|
962
|
+
}, {
|
|
963
|
+
max: 100
|
|
964
|
+
type: progress-bar
|
|
965
|
+
value: @bar.percentage
|
|
966
|
+
variant: primary
|
|
967
|
+
}, {
|
|
968
|
+
color: muted
|
|
969
|
+
content: @bar.percentage
|
|
970
|
+
type: typography
|
|
971
|
+
variant: caption
|
|
972
|
+
}, {
|
|
973
|
+
color: muted
|
|
974
|
+
content: "%"
|
|
975
|
+
type: typography
|
|
976
|
+
variant: caption
|
|
977
|
+
}]
|
|
978
|
+
direction: horizontal
|
|
979
|
+
gap: md
|
|
980
|
+
type: stack
|
|
981
|
+
})
|
|
982
|
+
type: data-list
|
|
983
|
+
}]
|
|
984
|
+
direction: vertical
|
|
985
|
+
gap: sm
|
|
986
|
+
type: stack
|
|
987
|
+
}]
|
|
988
|
+
look: @config.cardLook
|
|
989
|
+
type: card
|
|
990
|
+
}, {
|
|
991
|
+
activeTab: @entity.currentSort
|
|
992
|
+
tabChangeEvent: CHANGE_SORT
|
|
993
|
+
tabs: @config.sortOptions
|
|
994
|
+
type: tabs
|
|
995
|
+
}, {
|
|
996
|
+
entity: @entity.reviews
|
|
997
|
+
fields: []
|
|
998
|
+
gap: md
|
|
999
|
+
renderItem: (fn review {
|
|
1000
|
+
children: [{
|
|
1001
|
+
children: [{
|
|
1002
|
+
align: center
|
|
1003
|
+
children: [{ name: @review.avatarIcon, type: icon }, {
|
|
1004
|
+
content: @review.authorName
|
|
1005
|
+
type: typography
|
|
1006
|
+
weight: bold
|
|
1007
|
+
}, {
|
|
1008
|
+
color: muted
|
|
1009
|
+
content: "·"
|
|
1010
|
+
type: typography
|
|
1011
|
+
}, {
|
|
1012
|
+
color: warning
|
|
1013
|
+
name: star
|
|
1014
|
+
type: icon
|
|
1015
|
+
}, {
|
|
1016
|
+
content: @review.rating
|
|
1017
|
+
type: typography
|
|
1018
|
+
weight: bold
|
|
1019
|
+
}, {
|
|
1020
|
+
color: muted
|
|
1021
|
+
content: "·"
|
|
1022
|
+
type: typography
|
|
1023
|
+
}, {
|
|
1024
|
+
color: muted
|
|
1025
|
+
content: @review.createdAt
|
|
1026
|
+
type: typography
|
|
1027
|
+
variant: caption
|
|
1028
|
+
}]
|
|
1029
|
+
direction: horizontal
|
|
1030
|
+
gap: sm
|
|
1031
|
+
type: stack
|
|
1032
|
+
}, {
|
|
1033
|
+
content: @review.comment
|
|
1034
|
+
type: typography
|
|
1035
|
+
variant: body
|
|
1036
|
+
}, {
|
|
1037
|
+
align: center
|
|
1038
|
+
children: [{
|
|
1039
|
+
action: MARK_HELPFUL
|
|
1040
|
+
actionPayload: { id: @review.id }
|
|
1041
|
+
icon: thumbs-up
|
|
1042
|
+
label: Helpful
|
|
1043
|
+
type: button
|
|
1044
|
+
variant: ghost
|
|
1045
|
+
}, {
|
|
1046
|
+
color: muted
|
|
1047
|
+
content: @review.helpful
|
|
1048
|
+
type: typography
|
|
1049
|
+
variant: caption
|
|
1050
|
+
}]
|
|
1051
|
+
direction: horizontal
|
|
1052
|
+
gap: sm
|
|
1053
|
+
type: stack
|
|
1054
|
+
}]
|
|
1055
|
+
direction: vertical
|
|
1056
|
+
gap: sm
|
|
1057
|
+
type: stack
|
|
1058
|
+
}]
|
|
1059
|
+
look: @config.cardLook
|
|
1060
|
+
type: card
|
|
1061
|
+
})
|
|
1062
|
+
type: data-list
|
|
1063
|
+
}]
|
|
1064
|
+
direction: vertical
|
|
1065
|
+
gap: lg
|
|
1066
|
+
type: stack
|
|
887
1067
|
})
|
|
888
1068
|
}
|
|
889
1069
|
|
|
@@ -1539,7 +1719,38 @@ orbital RatingReviewOrbital {
|
|
|
1539
1719
|
}
|
|
1540
1720
|
}
|
|
1541
1721
|
|
|
1542
|
-
|
|
1722
|
+
trait RatingReviewPageNav -> ReviewView [interaction, instance] {
|
|
1723
|
+
initial: ready
|
|
1724
|
+
|
|
1725
|
+
state ready {
|
|
1726
|
+
INIT -> ready
|
|
1727
|
+
(render-ui main {
|
|
1728
|
+
action: OPEN_REVIEW_FORM
|
|
1729
|
+
icon: external-link
|
|
1730
|
+
label: "Open review form"
|
|
1731
|
+
type: button
|
|
1732
|
+
variant: ghost
|
|
1733
|
+
})
|
|
1734
|
+
OPEN_REVIEW_FORM -> ready
|
|
1735
|
+
(navigate "/reviews/new")
|
|
1736
|
+
}
|
|
1737
|
+
|
|
1738
|
+
emits {
|
|
1739
|
+
OPEN_REVIEW_FORM
|
|
1740
|
+
@description "Opens the standalone review-submission page."
|
|
1741
|
+
@synonyms "open form, new page, direct link"
|
|
1742
|
+
@tier "presentation"
|
|
1743
|
+
}
|
|
1744
|
+
|
|
1745
|
+
listens {
|
|
1746
|
+
OPEN_REVIEW_FORM
|
|
1747
|
+
@description "Opens the standalone review-submission page in place of the inline composer."
|
|
1748
|
+
@synonyms "open form, new page, direct link"
|
|
1749
|
+
@tier "presentation"
|
|
1750
|
+
}
|
|
1751
|
+
}
|
|
1752
|
+
|
|
1753
|
+
page "/reviews" as RatingReviewPage -> RatingReviewBoard, RatingReviewPageNav
|
|
1543
1754
|
|
|
1544
1755
|
page "/reviews/new" as RatingReviewSubmitPage -> RatingReviewSubmit
|
|
1545
1756
|
}
|
|
@@ -145,7 +145,7 @@ orbital SelectableItemOrbital {
|
|
|
145
145
|
REFETCH_QUERY -> idle
|
|
146
146
|
(fetch SelectableItem {
|
|
147
147
|
emit: { failure: SelectableItemLoadFailed, success: SelectableItemLoaded }
|
|
148
|
-
filter: (or ["=", ?searchTerm, ""] (str/includes (object/get @entity
|
|
148
|
+
filter: (or ["=", ?searchTerm, ""] (str/includes (object/get @entity @config.searchField) ?searchTerm))
|
|
149
149
|
})
|
|
150
150
|
REFETCH_FILTER -> idle
|
|
151
151
|
(fetch SelectableItem {
|
|
@@ -166,6 +166,8 @@ orbital SelectableItemOrbital {
|
|
|
166
166
|
limit: @config.pageSize
|
|
167
167
|
offset: ["*", ["-", ?page, 1], @config.pageSize]
|
|
168
168
|
})
|
|
169
|
+
SelectableItemLoadFailed -> idle
|
|
170
|
+
(notify error (str/concat "Couldn't refresh the list — " ?error))
|
|
169
171
|
SelectableItemLoaded -> idle
|
|
170
172
|
(render-ui main {
|
|
171
173
|
children: [{
|
|
@@ -429,6 +431,11 @@ orbital SelectableItemOrbital {
|
|
|
429
431
|
@label "Table look"
|
|
430
432
|
@description "Layer 2 visual treatment for the data table rendered by this atom."
|
|
431
433
|
@tier "presentation"
|
|
434
|
+
searchField : string = "name"
|
|
435
|
+
@label "Which column does the search box match against?"
|
|
436
|
+
@description "Name the field on this entity the search box's str/includes filter matches against. Declared, never inferred: an entity with no `name` column must set this to a real field (e.g. title, label) or the search box can never match a row."
|
|
437
|
+
@synonyms "search column, search on field, match field, search key"
|
|
438
|
+
@tier "policy"
|
|
432
439
|
bodySearch : boolean = false
|
|
433
440
|
@label "Show the pick-list's own search box?"
|
|
434
441
|
@description "Embeds a search box above the pick-list. Set true only when the page has no other search affordance (e.g. no page-level std-search), so the surface shows one search box instead of two. False is the default — this atom has never had a search box (0 consumers today)."
|
|
@@ -35,6 +35,7 @@ orbital TagStripOrbital {
|
|
|
35
35
|
;; Pre-scope paint: the store is warm but no record is open yet.
|
|
36
36
|
TagStripOptions -> idle
|
|
37
37
|
TagStripLoadFailed -> idle
|
|
38
|
+
(notify error (str/concat "Couldn't load tags — " ?error))
|
|
38
39
|
SHOW_TAG_STRIP -> loading
|
|
39
40
|
(set @entity.docId ?id)
|
|
40
41
|
(set @entity.docTagIds (array/map ?tagIds (fn t (str/default (object/get @t id) @t))))
|
|
@@ -342,6 +342,22 @@ orbital TagTaxonomyOrbital {
|
|
|
342
342
|
type: stack
|
|
343
343
|
})
|
|
344
344
|
(emit LEVEL_RELOAD { tagId: @entity.id })
|
|
345
|
+
CLOSE -> loading
|
|
346
|
+
(render-ui modal null)
|
|
347
|
+
(render-ui main {
|
|
348
|
+
align: center
|
|
349
|
+
children: [{ type: spinner }, {
|
|
350
|
+
color: muted
|
|
351
|
+
content: "Loading…"
|
|
352
|
+
type: typography
|
|
353
|
+
variant: caption
|
|
354
|
+
}]
|
|
355
|
+
className: py-12
|
|
356
|
+
direction: vertical
|
|
357
|
+
gap: md
|
|
358
|
+
type: stack
|
|
359
|
+
})
|
|
360
|
+
(emit LEVEL_RELOAD { tagId: @entity.id })
|
|
345
361
|
;; Refetch the level the new tag landed on — its own parentId names it.
|
|
346
362
|
TagCreated -> loading
|
|
347
363
|
(render-ui modal null)
|
|
@@ -444,6 +444,42 @@ orbital WizardOrbital {
|
|
|
444
444
|
}
|
|
445
445
|
|
|
446
446
|
state completed {
|
|
447
|
+
WizardSaved -> completed
|
|
448
|
+
(render-ui main {
|
|
449
|
+
align: center
|
|
450
|
+
children: [{
|
|
451
|
+
name: check-circle
|
|
452
|
+
size: lg
|
|
453
|
+
type: icon
|
|
454
|
+
}, {
|
|
455
|
+
align: center
|
|
456
|
+
content: Complete
|
|
457
|
+
type: typography
|
|
458
|
+
variant: h2
|
|
459
|
+
}, {
|
|
460
|
+
align: center
|
|
461
|
+
color: muted
|
|
462
|
+
content: @entity.completionMessage
|
|
463
|
+
type: typography
|
|
464
|
+
variant: body
|
|
465
|
+
}, {
|
|
466
|
+
allowNavigation: false
|
|
467
|
+
currentStep: @entity.totalSteps
|
|
468
|
+
steps: @entity.wizardSteps
|
|
469
|
+
type: wizard-progress
|
|
470
|
+
}, {
|
|
471
|
+
action: RESTART
|
|
472
|
+
icon: rotate-ccw
|
|
473
|
+
label: "Start a new wizard"
|
|
474
|
+
type: button
|
|
475
|
+
variant: secondary
|
|
476
|
+
}]
|
|
477
|
+
direction: vertical
|
|
478
|
+
gap: lg
|
|
479
|
+
type: stack
|
|
480
|
+
})
|
|
481
|
+
WizardSaveFailed -> completed
|
|
482
|
+
(notify error (str/concat "Couldn't save the wizard — " ?error))
|
|
447
483
|
RESTART -> loading
|
|
448
484
|
(set @entity.currentStepIndex 0)
|
|
449
485
|
(set @entity.completionMessage "")
|
|
@@ -9,7 +9,7 @@ orbital BadgeOrbital {
|
|
|
9
9
|
style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
|
|
10
10
|
variant : string
|
|
11
11
|
dimension : "2d" | "3d"
|
|
12
|
-
aspect : "1:1" | "16:9" | "5:7" | "8:1"
|
|
12
|
+
aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
|
|
13
13
|
atlas : asset
|
|
14
14
|
sprite : string
|
|
15
15
|
name : string
|
|
@@ -9,7 +9,7 @@ orbital ButtonOrbital {
|
|
|
9
9
|
style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
|
|
10
10
|
variant : string
|
|
11
11
|
dimension : "2d" | "3d"
|
|
12
|
-
aspect : "1:1" | "16:9" | "5:7" | "8:1"
|
|
12
|
+
aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
|
|
13
13
|
atlas : asset
|
|
14
14
|
sprite : string
|
|
15
15
|
name : string
|
|
@@ -3,6 +3,7 @@ app ui-checkbox "1.0.0"
|
|
|
3
3
|
orbital CheckboxOrbital {
|
|
4
4
|
entity CheckboxItem [runtime] {
|
|
5
5
|
id : string!
|
|
6
|
+
checked : boolean @intrinsic
|
|
6
7
|
}
|
|
7
8
|
|
|
8
9
|
trait CheckboxRender -> @rebindable CheckboxItem [interaction, instance] {
|
|
@@ -10,9 +11,20 @@ orbital CheckboxOrbital {
|
|
|
10
11
|
|
|
11
12
|
state idle {
|
|
12
13
|
INIT -> idle
|
|
14
|
+
(set @entity.checked @config.checked)
|
|
13
15
|
(render-ui main {
|
|
14
16
|
className: @config.className
|
|
15
|
-
checked: @
|
|
17
|
+
checked: @entity.checked
|
|
18
|
+
defaultChecked: @config.defaultChecked
|
|
19
|
+
label: @config.label
|
|
20
|
+
onChange: @config.onChange
|
|
21
|
+
type: checkbox
|
|
22
|
+
})
|
|
23
|
+
CHANGE -> idle
|
|
24
|
+
(set @entity.checked ?checked)
|
|
25
|
+
(render-ui main {
|
|
26
|
+
className: @config.className
|
|
27
|
+
checked: @entity.checked
|
|
16
28
|
defaultChecked: @config.defaultChecked
|
|
17
29
|
label: @config.label
|
|
18
30
|
onChange: @config.onChange
|
|
@@ -21,11 +33,19 @@ orbital CheckboxOrbital {
|
|
|
21
33
|
}
|
|
22
34
|
|
|
23
35
|
emits {
|
|
24
|
-
@config.onChange -> external {
|
|
36
|
+
@config.onChange -> external {
|
|
37
|
+
checked : boolean!
|
|
38
|
+
}
|
|
25
39
|
@description "onChange handler or declarative event key for trait dispatch"
|
|
26
40
|
@tier "essential"
|
|
27
41
|
}
|
|
28
42
|
|
|
43
|
+
listens {
|
|
44
|
+
CHANGE {
|
|
45
|
+
checked : boolean!
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
29
49
|
config {
|
|
30
50
|
className : string
|
|
31
51
|
@label "Class Name"
|
|
@@ -9,7 +9,7 @@ orbital GameIconOrbital {
|
|
|
9
9
|
style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
|
|
10
10
|
variant : string
|
|
11
11
|
dimension : "2d" | "3d"
|
|
12
|
-
aspect : "1:1" | "16:9" | "5:7" | "8:1"
|
|
12
|
+
aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
|
|
13
13
|
atlas : asset
|
|
14
14
|
sprite : string
|
|
15
15
|
name : string
|
|
@@ -46,10 +46,14 @@ orbital SelectOrbital {
|
|
|
46
46
|
}
|
|
47
47
|
@description "Declarative event name for trait dispatch — emits `{ value }` on selection commit (same gestures as `onChange`)."
|
|
48
48
|
@tier "essential"
|
|
49
|
-
@config.onChange -> external {
|
|
49
|
+
@config.onChange -> external {
|
|
50
|
+
value : string!
|
|
51
|
+
}
|
|
50
52
|
@description "onChange handler (native ChangeEvent) or declarative event key for trait dispatch"
|
|
51
53
|
@tier "essential"
|
|
52
|
-
@config.onValueChange -> external {
|
|
54
|
+
@config.onValueChange -> external {
|
|
55
|
+
value : string!
|
|
56
|
+
}
|
|
53
57
|
@description "Value-based change: a React callback (internal use) OR a declarative event key that emits `{ value }` on the bus (render-ui / lolo authoring). Mirrors the `onChange` handler|event convention so it's an event-emitting prop, not a bare callback."
|
|
54
58
|
@tier "essential"
|
|
55
59
|
}
|
|
@@ -25,7 +25,9 @@ orbital TextareaOrbital {
|
|
|
25
25
|
@config.action -> external { }
|
|
26
26
|
@description "Declarative event name for trait dispatch"
|
|
27
27
|
@tier "essential"
|
|
28
|
-
@config.onChange -> external {
|
|
28
|
+
@config.onChange -> external {
|
|
29
|
+
value : string!
|
|
30
|
+
}
|
|
29
31
|
@description "onChange handler or declarative event key for trait dispatch"
|
|
30
32
|
@tier "essential"
|
|
31
33
|
}
|
|
@@ -89,7 +89,7 @@ orbital CommandPaletteOrbital {
|
|
|
89
89
|
@label "On Open Change"
|
|
90
90
|
@description "Called to open/close the overlay (Escape, overlay click, or a selection)"
|
|
91
91
|
@tier "presentation"
|
|
92
|
-
commands : [CommandPaletteCommandsItem] = [
|
|
92
|
+
commands : [CommandPaletteCommandsItem] = []
|
|
93
93
|
@label "Commands"
|
|
94
94
|
@description "Commands listed in the palette, filtered as the user types"
|
|
95
95
|
@tier "presentation"
|
|
@@ -32,6 +32,12 @@ orbital DataGridOrbital {
|
|
|
32
32
|
code : string
|
|
33
33
|
stack : string
|
|
34
34
|
}
|
|
35
|
+
type DataGridRelationsDataValueItem = {
|
|
36
|
+
value : string!
|
|
37
|
+
label : string!
|
|
38
|
+
description : string
|
|
39
|
+
disabled : boolean
|
|
40
|
+
}
|
|
35
41
|
|
|
36
42
|
entity DataGridItem [runtime] {
|
|
37
43
|
id : string!
|
|
@@ -72,6 +78,7 @@ orbital DataGridOrbital {
|
|
|
72
78
|
hasMore: @config.hasMore
|
|
73
79
|
pageSize: @config.pageSize
|
|
74
80
|
look: @config.look
|
|
81
|
+
relationsData: @config.relationsData
|
|
75
82
|
type: data-grid
|
|
76
83
|
})
|
|
77
84
|
INIT -> idle when (not @config.selfFetch)
|
|
@@ -104,6 +111,7 @@ orbital DataGridOrbital {
|
|
|
104
111
|
hasMore: @config.hasMore
|
|
105
112
|
pageSize: @config.pageSize
|
|
106
113
|
look: @config.look
|
|
114
|
+
relationsData: @config.relationsData
|
|
107
115
|
type: data-grid
|
|
108
116
|
})
|
|
109
117
|
DataGridLoaded -> idle
|
|
@@ -136,6 +144,7 @@ orbital DataGridOrbital {
|
|
|
136
144
|
hasMore: @config.hasMore
|
|
137
145
|
pageSize: @config.pageSize
|
|
138
146
|
look: @config.look
|
|
147
|
+
relationsData: @config.relationsData
|
|
139
148
|
type: data-grid
|
|
140
149
|
})
|
|
141
150
|
}
|
|
@@ -270,6 +279,10 @@ orbital DataGridOrbital {
|
|
|
270
279
|
@label "Look"
|
|
271
280
|
@description "Layer 2 visual treatment — mirrors the `entity-table` look enum so data-grid / data-list / entity-table share one knob name from authors."
|
|
272
281
|
@tier "presentation"
|
|
282
|
+
relationsData : Map string [DataGridRelationsDataValueItem] = {}
|
|
283
|
+
@label "Relations Data"
|
|
284
|
+
@description "Relation display data: { fieldName: [{value, label}] } — injected server-side by the runtime (relation-option injection) or bound by compiled codegen; resolves stored foreign ids to display names for a field whose type is relation. Same contract DetailPanel takes."
|
|
285
|
+
@tier "presentation"
|
|
273
286
|
selfFetch : boolean = true
|
|
274
287
|
@label "Fetch its own rows on mount?"
|
|
275
288
|
@description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's."
|
|
@@ -38,6 +38,12 @@ orbital DataListOrbital {
|
|
|
38
38
|
icon : icon
|
|
39
39
|
variant : "primary" | "secondary" | "danger" | "ghost"
|
|
40
40
|
}
|
|
41
|
+
type DataListRelationsDataValueItem = {
|
|
42
|
+
value : string!
|
|
43
|
+
label : string!
|
|
44
|
+
description : string
|
|
45
|
+
disabled : boolean
|
|
46
|
+
}
|
|
41
47
|
|
|
42
48
|
entity DataListItem [runtime] {
|
|
43
49
|
id : string!
|
|
@@ -87,6 +93,7 @@ orbital DataListOrbital {
|
|
|
87
93
|
sortBy: @config.sortBy
|
|
88
94
|
sortDirection: @config.sortDirection
|
|
89
95
|
look: @config.look
|
|
96
|
+
relationsData: @config.relationsData
|
|
90
97
|
type: data-list
|
|
91
98
|
})
|
|
92
99
|
INIT -> idle when (not @config.selfFetch)
|
|
@@ -128,6 +135,7 @@ orbital DataListOrbital {
|
|
|
128
135
|
sortBy: @config.sortBy
|
|
129
136
|
sortDirection: @config.sortDirection
|
|
130
137
|
look: @config.look
|
|
138
|
+
relationsData: @config.relationsData
|
|
131
139
|
type: data-list
|
|
132
140
|
})
|
|
133
141
|
DataListLoaded -> idle
|
|
@@ -169,6 +177,7 @@ orbital DataListOrbital {
|
|
|
169
177
|
sortBy: @config.sortBy
|
|
170
178
|
sortDirection: @config.sortDirection
|
|
171
179
|
look: @config.look
|
|
180
|
+
relationsData: @config.relationsData
|
|
172
181
|
type: data-list
|
|
173
182
|
})
|
|
174
183
|
}
|
|
@@ -352,6 +361,10 @@ orbital DataListOrbital {
|
|
|
352
361
|
@label "Look"
|
|
353
362
|
@description "Layer 2 visual treatment — mirrors the `entity-table` look enum so data-grid / data-list / entity-table share one knob name from authors."
|
|
354
363
|
@tier "presentation"
|
|
364
|
+
relationsData : Map string [DataListRelationsDataValueItem] = {}
|
|
365
|
+
@label "Relations Data"
|
|
366
|
+
@description "Relation display data: { fieldName: [{value, label}] } — injected server-side by the runtime (relation-option injection) or bound by compiled codegen; resolves stored foreign ids to display names for a field whose type is relation. Same contract DetailPanel takes."
|
|
367
|
+
@tier "presentation"
|
|
355
368
|
selfFetch : boolean = true
|
|
356
369
|
@label "Fetch its own rows on mount?"
|
|
357
370
|
@description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's."
|
|
@@ -32,7 +32,7 @@ orbital FloatingToolbarOrbital {
|
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
config {
|
|
35
|
-
items : [FloatingToolbarItemsItem] = [
|
|
35
|
+
items : [FloatingToolbarItemsItem] = []
|
|
36
36
|
@label "Items"
|
|
37
37
|
@description "Tool items rendered as icon buttons"
|
|
38
38
|
@tier "presentation"
|
|
@@ -56,7 +56,7 @@ orbital ImportPreviewTreeOrbital {
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
config {
|
|
59
|
-
units : [ImportPreviewTreeUnitsItem] = [
|
|
59
|
+
units : [ImportPreviewTreeUnitsItem] = []
|
|
60
60
|
@label "Units"
|
|
61
61
|
@description "Staged units to preview"
|
|
62
62
|
@tier "presentation"
|
|
@@ -39,7 +39,7 @@ orbital MenuOrbital {
|
|
|
39
39
|
@label "Trigger"
|
|
40
40
|
@description "Menu trigger element"
|
|
41
41
|
@tier "presentation"
|
|
42
|
-
items : [MenuItemsItem] = [
|
|
42
|
+
items : [MenuItemsItem] = []
|
|
43
43
|
@label "Items"
|
|
44
44
|
@description "Menu items"
|
|
45
45
|
@tier "presentation"
|
|
@@ -41,6 +41,12 @@ orbital TableViewOrbital {
|
|
|
41
41
|
code : string
|
|
42
42
|
stack : string
|
|
43
43
|
}
|
|
44
|
+
type TableViewRelationsDataValueItem = {
|
|
45
|
+
value : string!
|
|
46
|
+
label : string!
|
|
47
|
+
description : string
|
|
48
|
+
disabled : boolean
|
|
49
|
+
}
|
|
44
50
|
|
|
45
51
|
entity TableViewItem [runtime] {
|
|
46
52
|
id : string!
|
|
@@ -80,6 +86,7 @@ orbital TableViewOrbital {
|
|
|
80
86
|
groupBy: @config.groupBy
|
|
81
87
|
pageSize: @config.pageSize
|
|
82
88
|
look: @config.look
|
|
89
|
+
relationsData: @config.relationsData
|
|
83
90
|
type: table-view
|
|
84
91
|
})
|
|
85
92
|
INIT -> idle when (not @config.selfFetch)
|
|
@@ -111,6 +118,7 @@ orbital TableViewOrbital {
|
|
|
111
118
|
groupBy: @config.groupBy
|
|
112
119
|
pageSize: @config.pageSize
|
|
113
120
|
look: @config.look
|
|
121
|
+
relationsData: @config.relationsData
|
|
114
122
|
type: table-view
|
|
115
123
|
})
|
|
116
124
|
TableViewLoaded -> idle
|
|
@@ -142,6 +150,7 @@ orbital TableViewOrbital {
|
|
|
142
150
|
groupBy: @config.groupBy
|
|
143
151
|
pageSize: @config.pageSize
|
|
144
152
|
look: @config.look
|
|
153
|
+
relationsData: @config.relationsData
|
|
145
154
|
type: table-view
|
|
146
155
|
})
|
|
147
156
|
}
|
|
@@ -275,6 +284,10 @@ orbital TableViewOrbital {
|
|
|
275
284
|
@label "Look"
|
|
276
285
|
@description "Layer 2 visual treatment — mirrors the data-list / entity-table look enum so authors share one knob name across row renderers."
|
|
277
286
|
@tier "presentation"
|
|
287
|
+
relationsData : Map string [TableViewRelationsDataValueItem] = {}
|
|
288
|
+
@label "Relations Data"
|
|
289
|
+
@description "Relation display data: { fieldName: [{value, label}] } — injected server-side by the runtime (relation-option injection) or bound by compiled codegen; resolves stored foreign ids to display names for a column whose field is relation-typed. Same contract DetailPanel takes."
|
|
290
|
+
@tier "presentation"
|
|
278
291
|
selfFetch : boolean = true
|
|
279
292
|
@label "Fetch its own rows on mount?"
|
|
280
293
|
@description "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's."
|
|
@@ -21,7 +21,7 @@ orbital TabsOrbital {
|
|
|
21
21
|
style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
|
|
22
22
|
variant : string
|
|
23
23
|
dimension : "2d" | "3d"
|
|
24
|
-
aspect : "1:1" | "16:9" | "5:7" | "8:1"
|
|
24
|
+
aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
|
|
25
25
|
atlas : asset
|
|
26
26
|
sprite : string
|
|
27
27
|
name : string
|
|
@@ -47,7 +47,7 @@ orbital TabsOrbital {
|
|
|
47
47
|
style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
|
|
48
48
|
variant : string
|
|
49
49
|
dimension : "2d" | "3d"
|
|
50
|
-
aspect : "1:1" | "16:9" | "5:7" | "8:1"
|
|
50
|
+
aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
|
|
51
51
|
atlas : asset
|
|
52
52
|
sprite : string
|
|
53
53
|
name : string
|