@almadar/std 16.236.0 → 16.237.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/behaviors/behaviors-registry.json +1389 -265
  2. package/behaviors/lolo/infra/atoms/std-approval-gate.lolo +7 -0
  3. package/behaviors/lolo/infra/atoms/std-migration-job.lolo +2 -2
  4. package/behaviors/lolo/infra/atoms/std-notification-preferences.lolo +5 -0
  5. package/behaviors/lolo/infra/atoms/std-permission-matrix.lolo +5 -0
  6. package/behaviors/lolo/ui/core/atoms/std-browse.lolo +32 -5
  7. package/behaviors/lolo/ui/core/atoms/std-event-log.lolo +32 -0
  8. package/behaviors/lolo/ui/core/atoms/std-file-store.lolo +8 -1
  9. package/behaviors/lolo/ui/core/atoms/std-gantt-schedule.lolo +8 -1
  10. package/behaviors/lolo/ui/core/atoms/std-image-upload-multi.lolo +2 -2
  11. package/behaviors/lolo/ui/core/atoms/std-list.lolo +7 -0
  12. package/behaviors/lolo/ui/core/atoms/std-multi-party-flow.lolo +24 -0
  13. package/behaviors/lolo/ui/core/atoms/std-record-detail.lolo +13 -1
  14. package/behaviors/lolo/ui/core/atoms/std-recurrence.lolo +4 -0
  15. package/behaviors/lolo/ui/core/atoms/std-saved-search.lolo +6 -0
  16. package/behaviors/lolo/ui/core/atoms/std-selection.lolo +7 -0
  17. package/behaviors/lolo/ui/core/atoms/std-version-history.lolo +7 -1
  18. package/behaviors/lolo/ui/core/atoms/ui-time-slot-cell.lolo +36 -0
  19. package/behaviors/lolo/ui/core/atoms/ui-typography.lolo +5 -0
  20. package/behaviors/lolo/ui/core/molecules/ui-alert.lolo +5 -0
  21. package/behaviors/lolo/ui/core/molecules/ui-animated-counter.lolo +1 -1
  22. package/behaviors/lolo/ui/core/molecules/ui-command-palette.lolo +4 -4
  23. package/behaviors/lolo/ui/core/molecules/ui-data-grid.lolo +19 -2
  24. package/behaviors/lolo/ui/core/molecules/ui-data-list.lolo +6 -0
  25. package/behaviors/lolo/ui/core/molecules/ui-date-range-picker.lolo +3 -3
  26. package/behaviors/lolo/ui/core/molecules/ui-document-details.lolo +1 -0
  27. package/behaviors/lolo/ui/core/molecules/ui-emoji-picker.lolo +1 -1
  28. package/behaviors/lolo/ui/core/molecules/ui-feature-card.lolo +1 -1
  29. package/behaviors/lolo/ui/core/molecules/ui-gantt.lolo +9 -1
  30. package/behaviors/lolo/ui/core/molecules/ui-import-preview-tree.lolo +3 -2
  31. package/behaviors/lolo/ui/core/molecules/ui-likert-scale.lolo +1 -1
  32. package/behaviors/lolo/ui/core/molecules/ui-menu.lolo +1 -0
  33. package/behaviors/lolo/ui/core/molecules/ui-table-view.lolo +16 -2
  34. package/behaviors/lolo/ui/core/organisms/ui-detail-panel.lolo +21 -4
  35. package/behaviors/lolo/ui/core/organisms/ui-entity-cards.lolo +28 -7
  36. package/behaviors/lolo/ui/core/organisms/ui-entity-list.lolo +37 -5
  37. package/behaviors/lolo/ui/core/organisms/ui-entity-table.lolo +18 -1
  38. package/behaviors/lolo/ui/core/organisms/ui-form-section.lolo +2 -0
  39. package/behaviors/lolo/ui/core/organisms/ui-form.lolo +2 -0
  40. package/behaviors/lolo/ui/core/organisms/ui-media-gallery.lolo +14 -0
  41. package/behaviors/lolo/ui/core/organisms/ui-stat-card.lolo +6 -0
  42. package/behaviors/lolo/ui/core/organisms/ui-timeline.lolo +30 -2
  43. package/behaviors/lolo/ui/core/templates/ui-auth-layout.lolo +1 -1
  44. package/behaviors/lolo/ui/core/templates/ui-counter-template.lolo +1 -1
  45. package/behaviors/lolo/ui/core/templates/ui-dashboard-layout.lolo +1 -1
  46. package/behaviors/lolo/ui/game/.hand-authored.json +2 -2
  47. package/behaviors/lolo/ui/game/atoms/ui-choice-button.lolo +1 -1
  48. package/behaviors/lolo/ui/game/atoms/ui-dialogue-bubble.lolo +2 -2
  49. package/behaviors/lolo/ui/game/atoms/ui-game-menu.lolo +1 -1
  50. package/behaviors/lolo/ui/game/atoms/ui-score-display.lolo +1 -1
  51. package/behaviors/lolo-behavior-contracts.json +1 -1
  52. package/behaviors/registry/factory-signatures.json +1 -1
  53. package/behaviors/registry/infra/atoms/std-approval-gate.orb +70 -0
  54. package/behaviors/registry/infra/atoms/std-migration-job.orb +26 -1
  55. package/behaviors/registry/infra/atoms/std-notification-preferences.orb +9 -0
  56. package/behaviors/registry/infra/atoms/std-permission-matrix.orb +9 -0
  57. package/behaviors/registry/ui/core/atoms/std-browse.orb +204 -8
  58. package/behaviors/registry/ui/core/atoms/std-event-log.orb +44 -0
  59. package/behaviors/registry/ui/core/atoms/std-file-store.orb +12 -1
  60. package/behaviors/registry/ui/core/atoms/std-gantt-schedule.orb +25 -1
  61. package/behaviors/registry/ui/core/atoms/std-image-upload-multi.orb +4 -0
  62. package/behaviors/registry/ui/core/atoms/std-list.orb +11 -0
  63. package/behaviors/registry/ui/core/atoms/std-multi-party-flow.orb +24 -0
  64. package/behaviors/registry/ui/core/atoms/std-record-detail.orb +71 -3
  65. package/behaviors/registry/ui/core/atoms/std-recurrence.orb +4 -0
  66. package/behaviors/registry/ui/core/atoms/std-saved-search.orb +54 -0
  67. package/behaviors/registry/ui/core/atoms/std-selection.orb +39 -0
  68. package/behaviors/registry/ui/core/atoms/std-version-history.orb +11 -1
  69. package/behaviors/registry/ui/core/atoms/ui-time-slot-cell.orb +132 -0
  70. package/behaviors/registry/ui/core/atoms/ui-typography.orb +7 -0
  71. package/behaviors/registry/ui/core/molecules/ui-alert.orb +7 -0
  72. package/behaviors/registry/ui/core/molecules/ui-animated-counter.orb +1 -1
  73. package/behaviors/registry/ui/core/molecules/ui-command-palette.orb +2 -4
  74. package/behaviors/registry/ui/core/molecules/ui-data-grid.orb +108 -2
  75. package/behaviors/registry/ui/core/molecules/ui-data-list.orb +72 -0
  76. package/behaviors/registry/ui/core/molecules/ui-date-range-picker.orb +1 -3
  77. package/behaviors/registry/ui/core/molecules/ui-document-details.orb +12 -0
  78. package/behaviors/registry/ui/core/molecules/ui-emoji-picker.orb +0 -1
  79. package/behaviors/registry/ui/core/molecules/ui-feature-card.orb +0 -1
  80. package/behaviors/registry/ui/core/molecules/ui-gantt.orb +28 -1
  81. package/behaviors/registry/ui/core/molecules/ui-import-preview-tree.orb +9 -2
  82. package/behaviors/registry/ui/core/molecules/ui-likert-scale.orb +1 -1
  83. package/behaviors/registry/ui/core/molecules/ui-menu.orb +17 -0
  84. package/behaviors/registry/ui/core/molecules/ui-table-view.orb +148 -2
  85. package/behaviors/registry/ui/core/organisms/ui-detail-panel.orb +133 -13
  86. package/behaviors/registry/ui/core/organisms/ui-entity-cards.orb +210 -26
  87. package/behaviors/registry/ui/core/organisms/ui-entity-list.orb +166 -17
  88. package/behaviors/registry/ui/core/organisms/ui-entity-table.orb +122 -0
  89. package/behaviors/registry/ui/core/organisms/ui-form-section.orb +28 -0
  90. package/behaviors/registry/ui/core/organisms/ui-form.orb +28 -0
  91. package/behaviors/registry/ui/core/organisms/ui-media-gallery.orb +20 -0
  92. package/behaviors/registry/ui/core/organisms/ui-stat-card.orb +58 -0
  93. package/behaviors/registry/ui/core/organisms/ui-timeline.orb +38 -5
  94. package/behaviors/registry/ui/core/templates/ui-auth-layout.orb +0 -1
  95. package/behaviors/registry/ui/core/templates/ui-counter-template.orb +0 -1
  96. package/behaviors/registry/ui/core/templates/ui-dashboard-layout.orb +0 -1
  97. package/behaviors/registry/ui/game/atoms/ui-choice-button.orb +1 -1
  98. package/behaviors/registry/ui/game/atoms/ui-dialogue-bubble.orb +1 -2
  99. package/behaviors/registry/ui/game/atoms/ui-game-menu.orb +1 -1
  100. package/behaviors/registry/ui/game/atoms/ui-score-display.orb +0 -1
  101. package/dist/behaviors/exports-reader.js +1157 -61
  102. package/dist/behaviors/functions/index.d.ts +114 -32
  103. package/dist/behaviors/functions/index.js +1157 -61
  104. package/dist/behaviors/index.d.ts +1 -1
  105. package/dist/behaviors/index.js +1157 -61
  106. package/dist/behaviors/query.js +1157 -61
  107. package/dist/behaviors-embeddings.hash.json +3 -3
  108. package/dist/behaviors-embeddings.json +15 -15
  109. package/dist/behaviors-registry.json +1389 -265
  110. package/dist/index.d.ts +1 -1
  111. package/dist/index.js +1157 -61
  112. package/dist/knob-embeddings.hash.json +3 -3
  113. package/dist/knob-embeddings.json +165 -25
  114. package/dist/registry/factory-signatures.json +1 -1
  115. package/package.json +3 -3
@@ -19,6 +19,10 @@ orbital TimeSlotCellOrbital {
19
19
  className: @config.className
20
20
  children: @config.children
21
21
  isOccupied: @config.isOccupied
22
+ onPointerDown: @config.onPointerDown
23
+ onPointerUp: @config.onPointerUp
24
+ onPointerCancel: @config.onPointerCancel
25
+ onPointerLeave: @config.onPointerLeave
22
26
  type: time-slot-cell
23
27
  })
24
28
  CLICK -> idle
@@ -29,6 +33,10 @@ orbital TimeSlotCellOrbital {
29
33
  className: @config.className
30
34
  children: @config.children
31
35
  isOccupied: @config.isOccupied
36
+ onPointerDown: @config.onPointerDown
37
+ onPointerUp: @config.onPointerUp
38
+ onPointerCancel: @config.onPointerCancel
39
+ onPointerLeave: @config.onPointerLeave
32
40
  type: time-slot-cell
33
41
  })
34
42
  }
@@ -39,6 +47,18 @@ orbital TimeSlotCellOrbital {
39
47
  }
40
48
  @description "Called when the slot is clicked"
41
49
  @tier "essential"
50
+ @config.onPointerDown -> external { }
51
+ @description "onPointerDown prop"
52
+ @tier "essential"
53
+ @config.onPointerUp -> external { }
54
+ @description "onPointerUp prop"
55
+ @tier "essential"
56
+ @config.onPointerCancel -> external { }
57
+ @description "onPointerCancel prop"
58
+ @tier "essential"
59
+ @config.onPointerLeave -> external { }
60
+ @description "onPointerLeave prop"
61
+ @tier "essential"
42
62
  }
43
63
 
44
64
  listens {
@@ -68,6 +88,22 @@ orbital TimeSlotCellOrbital {
68
88
  @label "Is Occupied"
69
89
  @description "Whether this slot contains an event"
70
90
  @tier "presentation"
91
+ onPointerDown : event = "POINTER_DOWN"
92
+ @label "On Pointer Down"
93
+ @description "onPointerDown prop"
94
+ @tier "presentation"
95
+ onPointerUp : event = "POINTER_UP"
96
+ @label "On Pointer Up"
97
+ @description "onPointerUp prop"
98
+ @tier "presentation"
99
+ onPointerCancel : event = "POINTER_CANCEL"
100
+ @label "On Pointer Cancel"
101
+ @description "onPointerCancel prop"
102
+ @tier "presentation"
103
+ onPointerLeave : event = "POINTER_LEAVE"
104
+ @label "On Pointer Leave"
105
+ @description "onPointerLeave prop"
106
+ @tier "presentation"
71
107
  }
72
108
  }
73
109
 
@@ -22,6 +22,7 @@ orbital TypographyOrbital {
22
22
  overflow: @config.overflow
23
23
  className: @config.className
24
24
  style: @config.style
25
+ role: @config.role
25
26
  format: @config.format
26
27
  content: @config.content
27
28
  children: @config.children
@@ -70,6 +71,10 @@ orbital TypographyOrbital {
70
71
  @label "Style"
71
72
  @description "Inline style"
72
73
  @tier "presentation"
74
+ role : string
75
+ @label "Role"
76
+ @description "Accessibility role"
77
+ @tier "presentation"
73
78
  format : "none" | "date" | "time" | "datetime" | "number" | "currency" | "percent" = none
74
79
  @label "Format"
75
80
  @description "Value formatting applied to string/number/Date content — `none` (the default) renders content as-is. Covers the raw-ISO-date class: a bound datetime renders human-readable via `format='date'|'time'|'datetime'`."
@@ -20,6 +20,7 @@ orbital AlertOrbital {
20
20
  onDismiss: @config.onDismiss
21
21
  onClose: @config.onClose
22
22
  actions: @config.actions
23
+ icon: @config.icon
23
24
  className: @config.className
24
25
  dismissEvent: @config.dismissEvent
25
26
  type: alert
@@ -68,6 +69,10 @@ orbital AlertOrbital {
68
69
  @label "Actions"
69
70
  @description "actions prop"
70
71
  @tier "presentation"
72
+ icon : icon
73
+ @label "Icon"
74
+ @description "Icon shown instead of the variant's default (Lucide name or component)"
75
+ @tier "presentation"
71
76
  className : string
72
77
  @label "Class Name"
73
78
  @description "className prop"
@@ -46,7 +46,7 @@ orbital AnimatedCounterOrbital {
46
46
  @tier "presentation"
47
47
  format : string
48
48
  @label "Format"
49
- @description "'number' (locale grouping), 'currency' ($x.xx), 'percent' (rounded %). Unset keeps the value's own decimals."
49
+ @description "'number' (locale grouping), 'currency' (locale currency), 'percent' (rounded %). Unset keeps the value's own decimals."
50
50
  @tier "presentation"
51
51
  className : string
52
52
  @label "Class Name"
@@ -99,13 +99,13 @@ orbital CommandPaletteOrbital {
99
99
  @label "On Select"
100
100
  @description "Called with the selected command (click, or Enter on the highlighted row)"
101
101
  @tier "presentation"
102
- placeholder : string = "Type a command..."
102
+ placeholder : string
103
103
  @label "Placeholder"
104
- @description "Search field placeholder. Consumers own i18n — plain string prop, no package-internal translation (matches FloatingToolbar's convention)."
104
+ @description "Search field placeholder. Defaults to the translated 'Type a command...'."
105
105
  @tier "presentation"
106
- emptyLabel : string = "No matching commands"
106
+ emptyLabel : string
107
107
  @label "Empty Label"
108
- @description "Label shown when no command matches the query"
108
+ @description "Label shown when no command matches the query. Defaults to the translated message."
109
109
  @tier "presentation"
110
110
  className : string
111
111
  @label "Class Name"
@@ -14,16 +14,20 @@ orbital DataGridOrbital {
14
14
  icon : icon
15
15
  variant : "h3" | "h4" | "body" | "caption" | "badge" | "small" | "progress"
16
16
  format : "date" | "currency" | "number" | "boolean" | "percent"
17
- colorMap : Map string string
17
+ colorMap : Map string DataGridFieldsItemColorMapValue
18
+ labels : Map string string
18
19
  }
20
+ type DataGridFieldsItemColorMapValue = "default" | "primary" | "secondary" | "success" | "warning" | "danger" | "error" | "info" | "neutral" | "destructive"
19
21
  type DataGridColumnsItem = {
20
22
  name : string!
21
23
  label : string
22
24
  icon : icon
23
25
  variant : "h3" | "h4" | "body" | "caption" | "badge" | "small" | "progress"
24
26
  format : "date" | "currency" | "number" | "boolean" | "percent"
25
- colorMap : Map string string
27
+ colorMap : Map string DataGridColumnsItemColorMapValue
28
+ labels : Map string string
26
29
  }
30
+ type DataGridColumnsItemColorMapValue = "default" | "primary" | "secondary" | "success" | "warning" | "danger" | "error" | "info" | "neutral" | "destructive"
27
31
  type DataGridItemActionsItem = {
28
32
  label : string!
29
33
  event : event
@@ -73,6 +77,7 @@ orbital DataGridOrbital {
73
77
  fields: @config.fields
74
78
  columns: @config.columns
75
79
  itemActions: (array/filter @config.itemActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
80
+ itemClickEvent: @config.itemClickEvent
76
81
  maxInlineActions: @config.maxInlineActions
77
82
  scrollX: @config.scrollX
78
83
  cols: @config.cols
@@ -110,6 +115,7 @@ orbital DataGridOrbital {
110
115
  fields: @config.fields
111
116
  columns: @config.columns
112
117
  itemActions: (array/filter @config.itemActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
118
+ itemClickEvent: @config.itemClickEvent
113
119
  maxInlineActions: @config.maxInlineActions
114
120
  scrollX: @config.scrollX
115
121
  cols: @config.cols
@@ -147,6 +153,7 @@ orbital DataGridOrbital {
147
153
  fields: @config.fields
148
154
  columns: @config.columns
149
155
  itemActions: (array/filter @config.itemActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
156
+ itemClickEvent: @config.itemClickEvent
150
157
  maxInlineActions: @config.maxInlineActions
151
158
  scrollX: @config.scrollX
152
159
  cols: @config.cols
@@ -169,6 +176,12 @@ orbital DataGridOrbital {
169
176
  }
170
177
 
171
178
  emits {
179
+ @config.itemClickEvent -> external {
180
+ id : string!
181
+ row : @entity!
182
+ }
183
+ @description "When set, clicking a card emits UI:{itemClickEvent} with { id, row }. Omit = cards are not clickable."
184
+ @tier "essential"
172
185
  @config.selectionEvent -> external {
173
186
  selectedIds : [string]!
174
187
  }
@@ -250,6 +263,10 @@ orbital DataGridOrbital {
250
263
  @label "Item Actions"
251
264
  @description "Per-item action buttons"
252
265
  @tier "presentation"
266
+ itemClickEvent : event = "ITEM_CLICK"
267
+ @label "Item Click Event"
268
+ @description "When set, clicking a card emits UI:{itemClickEvent} with { id, row }. Omit = cards are not clickable."
269
+ @tier "presentation"
253
270
  maxInlineActions : number
254
271
  @label "Max Inline Actions"
255
272
  @description "Max inline primary action buttons before the rest collapse into a '⋯' overflow menu. Omit = all inline."
@@ -13,14 +13,20 @@ orbital DataListOrbital {
13
13
  icon : icon
14
14
  variant : "h3" | "h4" | "body" | "caption" | "badge" | "small" | "progress"
15
15
  format : "date" | "currency" | "number" | "boolean" | "percent"
16
+ colorMap : Map string DataListFieldsItemColorMapValue
17
+ labels : Map string string
16
18
  }
19
+ type DataListFieldsItemColorMapValue = "default" | "primary" | "secondary" | "success" | "warning" | "danger" | "error" | "info" | "neutral" | "destructive"
17
20
  type DataListColumnsItem = {
18
21
  name : string!
19
22
  label : string
20
23
  icon : icon
21
24
  variant : "h3" | "h4" | "body" | "caption" | "badge" | "small" | "progress"
22
25
  format : "date" | "currency" | "number" | "boolean" | "percent"
26
+ colorMap : Map string DataListColumnsItemColorMapValue
27
+ labels : Map string string
23
28
  }
29
+ type DataListColumnsItemColorMapValue = "default" | "primary" | "secondary" | "success" | "warning" | "danger" | "error" | "info" | "neutral" | "destructive"
24
30
  type DataListItemActionsItem = {
25
31
  label : string!
26
32
  event : event!
@@ -93,13 +93,13 @@ orbital DateRangePickerOrbital {
93
93
  @tier "presentation"
94
94
  presets : [DateRangePickerPresetsItem] = []
95
95
  @label "Presets"
96
- @description "Preset shortcuts. Defaults to the standard finance set (Last 7d / Last 30d / This Month / This Quarter / YTD). Pass an empty array to hide presets entirely."
96
+ @description "Preset shortcuts. Defaults to the translated standard finance set (Last 7d / Last 30d / This Month / This Quarter / YTD). Pass an empty array to hide presets entirely."
97
97
  @tier "presentation"
98
- fromLabel : string = From
98
+ fromLabel : string
99
99
  @label "From Label"
100
100
  @description "From-input label."
101
101
  @tier "presentation"
102
- toLabel : string = To
102
+ toLabel : string
103
103
  @label "To Label"
104
104
  @description "To-input label."
105
105
  @tier "presentation"
@@ -12,6 +12,7 @@ orbital DocumentDetailsOrbital {
12
12
  icon : icon
13
13
  kind : "text" | "boolean" | "select" | "readonly" | "image"
14
14
  options : [string]
15
+ labels : Map string string
15
16
  format : "date" | "currency" | "number" | "boolean" | "percent"
16
17
  type : string
17
18
  }
@@ -42,7 +42,7 @@ orbital EmojiPickerOrbital {
42
42
  @label "Trigger Icon"
43
43
  @description "Icon shown on the trigger button"
44
44
  @tier "presentation"
45
- triggerLabel : string = "Add emoji"
45
+ triggerLabel : string
46
46
  @label "Trigger Label"
47
47
  @description "Accessible label for the trigger button"
48
48
  @tier "presentation"
@@ -42,7 +42,7 @@ orbital FeatureCardOrbital {
42
42
  @label "Href"
43
43
  @description "Optional link URL"
44
44
  @tier "presentation"
45
- linkLabel : string = "Learn more"
45
+ linkLabel : string
46
46
  @label "Link Label"
47
47
  @description "Label for the link button"
48
48
  @tier "presentation"
@@ -8,6 +8,7 @@ orbital GanttOrbital {
8
8
  from : string!
9
9
  to : string!
10
10
  }
11
+ type GanttStatusColorMapValue = "default" | "primary" | "secondary" | "success" | "warning" | "danger" | "error" | "info" | "neutral" | "destructive"
11
12
  type GanttError = {
12
13
  message : string!
13
14
  name : string
@@ -33,6 +34,7 @@ orbital GanttOrbital {
33
34
  endField: @config.endField
34
35
  durationField: @config.durationField
35
36
  statusField: @config.statusField
37
+ statusColorMap: @config.statusColorMap
36
38
  groupField: @config.groupField
37
39
  rangeStart: @config.rangeStart
38
40
  rangeEnd: @config.rangeEnd
@@ -53,6 +55,7 @@ orbital GanttOrbital {
53
55
  endField: @config.endField
54
56
  durationField: @config.durationField
55
57
  statusField: @config.statusField
58
+ statusColorMap: @config.statusColorMap
56
59
  groupField: @config.groupField
57
60
  rangeStart: @config.rangeStart
58
61
  rangeEnd: @config.rangeEnd
@@ -73,6 +76,7 @@ orbital GanttOrbital {
73
76
  endField: @config.endField
74
77
  durationField: @config.durationField
75
78
  statusField: @config.statusField
79
+ statusColorMap: @config.statusColorMap
76
80
  groupField: @config.groupField
77
81
  rangeStart: @config.rangeStart
78
82
  rangeEnd: @config.rangeEnd
@@ -121,7 +125,11 @@ orbital GanttOrbital {
121
125
  @tier "presentation"
122
126
  statusField : string = status
123
127
  @label "Status Field"
124
- @description "Row field holding the bar status (drives bar colour). Defaults to `status`."
128
+ @description "Row field holding the bar status. Defaults to `status`."
129
+ @tier "presentation"
130
+ statusColorMap : Map string GanttStatusColorMapValue = { item: default }
131
+ @label "Status Color Map"
132
+ @description "Bar colour per exact status value; unmapped statuses are primary bars."
125
133
  @tier "presentation"
126
134
  groupField : string
127
135
  @label "Group Field"
@@ -5,6 +5,7 @@ orbital ImportPreviewTreeOrbital {
5
5
  type ImportPreviewTreeUnitsItem = {
6
6
  ref : string!
7
7
  targetEntity : string!
8
+ title : string
8
9
  fields : Map string ControlValue!
9
10
  parentRef : string
10
11
  }
@@ -77,11 +78,11 @@ orbital ImportPreviewTreeOrbital {
77
78
  @label "On Cancel"
78
79
  @description "Called when the user cancels the staged import"
79
80
  @tier "presentation"
80
- confirmLabel : string = "Confirm import"
81
+ confirmLabel : string
81
82
  @label "Confirm Label"
82
83
  @description "Confirm button label"
83
84
  @tier "presentation"
84
- cancelLabel : string = Cancel
85
+ cancelLabel : string
85
86
  @label "Cancel Label"
86
87
  @description "Cancel button label"
87
88
  @tier "presentation"
@@ -45,7 +45,7 @@ orbital LikertScaleOrbital {
45
45
  @tier "presentation"
46
46
  options : [LikertScaleOptionsItem] = []
47
47
  @label "Options"
48
- @description "Scale points (defaults to a 5-point agree/disagree set)"
48
+ @description "Scale points (defaults to a translated 5-point agree/disagree set)"
49
49
  @tier "presentation"
50
50
  value : scalar
51
51
  @label "Value"
@@ -3,6 +3,7 @@ app ui-menu "1.0.0"
3
3
  ;; @pattern "menu"
4
4
  orbital MenuOrbital {
5
5
  type MenuItemsItem = {
6
+ type : "item" | "divider"
6
7
  id : string
7
8
  label : string!
8
9
  icon : icon
@@ -18,9 +18,13 @@ orbital TableViewOrbital {
18
18
  className : string
19
19
  weight : "normal" | "medium" | "semibold"
20
20
  format : "badge" | "date" | "currency" | "number" | "percent" | "boolean"
21
+ colorMap : Map string TableViewColumnsItemColorMapValue
22
+ labels : Map string string
23
+ variant : "h3" | "h4"
21
24
  icon : icon
22
25
  sortable : boolean
23
26
  }
27
+ type TableViewColumnsItemColorMapValue = "default" | "primary" | "secondary" | "success" | "warning" | "danger" | "error" | "info" | "neutral" | "destructive"
24
28
  type TableViewFieldsItem = {
25
29
  key : string!
26
30
  field : string
@@ -31,9 +35,13 @@ orbital TableViewOrbital {
31
35
  className : string
32
36
  weight : "normal" | "medium" | "semibold"
33
37
  format : "badge" | "date" | "currency" | "number" | "percent" | "boolean"
38
+ colorMap : Map string TableViewFieldsItemColorMapValue
39
+ labels : Map string string
40
+ variant : "h3" | "h4"
34
41
  icon : icon
35
42
  sortable : boolean
36
43
  }
44
+ type TableViewFieldsItemColorMapValue = "default" | "primary" | "secondary" | "success" | "warning" | "danger" | "error" | "info" | "neutral" | "destructive"
37
45
  type TableViewItemActionsItem = {
38
46
  label : string!
39
47
  event : event!
@@ -175,6 +183,12 @@ orbital TableViewOrbital {
175
183
  }
176
184
 
177
185
  emits {
186
+ @config.itemClickEvent -> external {
187
+ id : string!
188
+ row : @entity!
189
+ }
190
+ @description "When set, the whole row is clickable and emits UI:{itemClickEvent} with { id, row } (action-button clicks stopPropagation so they still win). Mirrors DataList's contract. Omit = rows are not clickable."
191
+ @tier "essential"
178
192
  @config.selectEvent -> external {
179
193
  selectedIds : [string]!
180
194
  }
@@ -263,9 +277,9 @@ orbital TableViewOrbital {
263
277
  @label "Max Inline Actions"
264
278
  @description "maxInlineActions prop"
265
279
  @tier "presentation"
266
- itemClickEvent : event = ""
280
+ itemClickEvent : event = "ITEM_CLICK"
267
281
  @label "Item Click Event"
268
- @description "When set, the whole row is clickable and emits UI:{itemClickEvent} with { id, row } (action-button clicks stopPropagation so they still win). Mirrors DataList's contract. When OMITTED and `itemActions` exist, the row click defaults to the first non-danger item action (the view/open action by authoring convention) — a danger action never becomes the row default (destructive actions require intentional reach)."
282
+ @description "When set, the whole row is clickable and emits UI:{itemClickEvent} with { id, row } (action-button clicks stopPropagation so they still win). Mirrors DataList's contract. Omit = rows are not clickable."
269
283
  @tier "presentation"
270
284
  selectable : boolean = false
271
285
  @label "Selectable"
@@ -41,12 +41,18 @@ orbital DetailPanelOrbital {
41
41
  when : SExpr
42
42
  }
43
43
  type DetailPanelFieldsItem = {
44
- key : string!
45
- header : string
44
+ name : string!
45
+ label : string
46
+ icon : icon
47
+ variant : "h3" | "h4" | "body" | "caption" | "badge" | "small" | "progress"
48
+ format : "date" | "currency" | "number" | "boolean" | "percent"
49
+ colorMap : Map string DetailPanelFieldsItemColorMapValue
50
+ labels : Map string string
46
51
  type : string
47
52
  values : [string]
48
53
  relation : DetailPanelFieldsItemRelation
49
54
  }
55
+ type DetailPanelFieldsItemColorMapValue = "default" | "primary" | "secondary" | "success" | "warning" | "danger" | "error" | "info" | "neutral" | "destructive"
50
56
  type DetailPanelFieldsItemRelation = {
51
57
  entity : string!
52
58
  cardinality : "one" | "many" | "one-to-many" | "many-to-one" | "many-to-many"
@@ -90,6 +96,7 @@ orbital DetailPanelOrbital {
90
96
  actions: (array/filter @config.actions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
91
97
  maxInlineActions: @config.maxInlineActions
92
98
  backAction: @config.backAction
99
+ closeEvent: @config.closeEvent
93
100
  footer: @config.footer
94
101
  slideOver: @config.slideOver
95
102
  fields: @config.fields
@@ -126,6 +133,7 @@ orbital DetailPanelOrbital {
126
133
  actions: (array/filter @config.actions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
127
134
  maxInlineActions: @config.maxInlineActions
128
135
  backAction: @config.backAction
136
+ closeEvent: @config.closeEvent
129
137
  footer: @config.footer
130
138
  slideOver: @config.slideOver
131
139
  fields: @config.fields
@@ -165,6 +173,7 @@ orbital DetailPanelOrbital {
165
173
  actions: (array/filter @config.actions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
166
174
  maxInlineActions: @config.maxInlineActions
167
175
  backAction: @config.backAction
176
+ closeEvent: @config.closeEvent
168
177
  footer: @config.footer
169
178
  slideOver: @config.slideOver
170
179
  fields: @config.fields
@@ -201,6 +210,7 @@ orbital DetailPanelOrbital {
201
210
  actions: (array/filter @config.actions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
202
211
  maxInlineActions: @config.maxInlineActions
203
212
  backAction: @config.backAction
213
+ closeEvent: @config.closeEvent
204
214
  footer: @config.footer
205
215
  slideOver: @config.slideOver
206
216
  fields: @config.fields
@@ -217,6 +227,9 @@ orbital DetailPanelOrbital {
217
227
  }
218
228
 
219
229
  emits {
230
+ @config.closeEvent -> external { }
231
+ @description "The event of the declared action that dismisses the panel. The matching action renders as the header close ×; omitted, no × is drawn."
232
+ @tier "essential"
220
233
  DetailPanelLoaded
221
234
  @description "DetailPanel row finished loading; payload.data holds the single row."
222
235
  @synonyms "loaded, fetched, retrieved"
@@ -313,6 +326,10 @@ orbital DetailPanelOrbital {
313
326
  @label "Back Action"
314
327
  @description "Navigation-back affordance. Renders top-LEFT before the title (OS/back convention — Almadar_UX §8.4), spatially separated from the right-aligned action buttons + close X. Never inferred from actions[] labels."
315
328
  @tier "presentation"
329
+ closeEvent : event = "CLOSE"
330
+ @label "Close Event"
331
+ @description "The event of the declared action that dismisses the panel. The matching action renders as the header close ×; omitted, no × is drawn."
332
+ @tier "presentation"
316
333
  footer : node
317
334
  @label "Footer"
318
335
  @description "footer prop"
@@ -321,9 +338,9 @@ orbital DetailPanelOrbital {
321
338
  @label "Slide Over"
322
339
  @description "slideOver prop"
323
340
  @tier "presentation"
324
- fields : [DetailPanelFieldsItem] = [{ key: "Key", header: "Header", type: "Type", values: ["Item", "Item 2"], relation: { entity: "Entity", cardinality: one } }, { key: "Key 2", header: "Header 2", type: "Type 2", values: ["Item", "Item 2"], relation: { entity: "Entity 2", cardinality: many } }]
341
+ fields : [DetailPanelFieldsItem] = [{ name: "Name", label: "Label", icon: "circle", variant: h3, format: date, type: "Type", values: ["Item", "Item 2"], relation: { entity: "Entity", cardinality: one } }, { name: "Name 2", label: "Label 2", icon: "circle", variant: h4, format: currency, type: "Type 2", values: ["Item", "Item 2"], relation: { entity: "Entity 2", cardinality: many } }]
325
342
  @label "Fields"
326
- @description "Fields to display - accepts string[], {key, header}[], or DetailField[]"
343
+ @description "Fields to display: field names, or declared fields ({ name, label, variant, format, colorMap, labels })"
327
344
  @tier "presentation"
328
345
  fieldNames : [string] = []
329
346
  @label "Field Names"
@@ -10,17 +10,25 @@ orbital EntityCardsOrbital {
10
10
  stack : string
11
11
  }
12
12
  type EntityCardsFieldsItem = {
13
- key : string
14
- header : string
15
- name : string
13
+ name : string!
16
14
  label : string
15
+ icon : icon
16
+ variant : "h3" | "h4" | "body" | "caption" | "badge" | "small" | "progress"
17
+ format : "date" | "currency" | "number" | "boolean" | "percent"
18
+ colorMap : Map string EntityCardsFieldsItemColorMapValue
19
+ labels : Map string string
17
20
  }
21
+ type EntityCardsFieldsItemColorMapValue = "default" | "primary" | "secondary" | "success" | "warning" | "danger" | "error" | "info" | "neutral" | "destructive"
18
22
  type EntityCardsColumnsItem = {
19
- key : string
20
- header : string
21
- name : string
23
+ name : string!
22
24
  label : string
25
+ icon : icon
26
+ variant : "h3" | "h4" | "body" | "caption" | "badge" | "small" | "progress"
27
+ format : "date" | "currency" | "number" | "boolean" | "percent"
28
+ colorMap : Map string EntityCardsColumnsItemColorMapValue
29
+ labels : Map string string
23
30
  }
31
+ type EntityCardsColumnsItemColorMapValue = "default" | "primary" | "secondary" | "success" | "warning" | "danger" | "error" | "info" | "neutral" | "destructive"
24
32
  type EntityCardsItemActionsItem = {
25
33
  label : string!
26
34
  event : event
@@ -62,6 +70,7 @@ orbital EntityCardsOrbital {
62
70
  fields: @config.fields
63
71
  fieldNames: @config.fieldNames
64
72
  columns: @config.columns
73
+ itemClickEvent: @config.itemClickEvent
65
74
  itemActions: (array/filter @config.itemActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
66
75
  showTotal: @config.showTotal
67
76
  showAvatar: @config.showAvatar
@@ -91,6 +100,7 @@ orbital EntityCardsOrbital {
91
100
  fields: @config.fields
92
101
  fieldNames: @config.fieldNames
93
102
  columns: @config.columns
103
+ itemClickEvent: @config.itemClickEvent
94
104
  itemActions: (array/filter @config.itemActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
95
105
  showTotal: @config.showTotal
96
106
  showAvatar: @config.showAvatar
@@ -120,6 +130,7 @@ orbital EntityCardsOrbital {
120
130
  fields: @config.fields
121
131
  fieldNames: @config.fieldNames
122
132
  columns: @config.columns
133
+ itemClickEvent: @config.itemClickEvent
123
134
  itemActions: (array/filter @config.itemActions (fn action (or (= (array/len (object/get @action roles [])) 0) (array/includes (object/get @action roles []) @config.viewerRole))))
124
135
  showTotal: @config.showTotal
125
136
  showAvatar: @config.showAvatar
@@ -130,6 +141,12 @@ orbital EntityCardsOrbital {
130
141
  }
131
142
 
132
143
  emits {
144
+ @config.itemClickEvent -> external {
145
+ id : string!
146
+ row : @entity!
147
+ }
148
+ @description "When set, clicking a card emits UI:{itemClickEvent} with { id, row }. Omit = cards are not clickable."
149
+ @tier "essential"
133
150
  VIEW -> external {
134
151
  id : string!
135
152
  row : @entity!
@@ -208,7 +225,7 @@ orbital EntityCardsOrbital {
208
225
  @label "Children"
209
226
  @description "Children elements (cards) - optional when using entity prop"
210
227
  @tier "presentation"
211
- fields : [EntityCardsFieldsItem] = [{ key: "Key", header: "Header", name: "Name", label: "Label" }, { key: "Key 2", header: "Header 2", name: "Name 2", label: "Label 2" }]
228
+ fields : [EntityCardsFieldsItem] = [{ name: "Name", label: "Label", icon: "circle", variant: h3, format: date }, { name: "Name 2", label: "Label 2", icon: "circle", variant: h4, format: currency }]
212
229
  @label "Fields"
213
230
  @description "Fields to display - required for schema-driven rendering"
214
231
  @tier "presentation"
@@ -220,6 +237,10 @@ orbital EntityCardsOrbital {
220
237
  @label "Columns"
221
238
  @description "Alias for fields - backwards compatibility"
222
239
  @tier "presentation"
240
+ itemClickEvent : event = "ITEM_CLICK"
241
+ @label "Item Click Event"
242
+ @description "When set, clicking a card emits UI:{itemClickEvent} with { id, row }. Omit = cards are not clickable."
243
+ @tier "presentation"
223
244
  itemActions : [EntityCardsItemActionsItem] = [{ event: VIEW, label: View, variant: ghost }]
224
245
  @label "Item Actions"
225
246
  @description "Actions for each card item (schema-driven)"