@almadar/std 16.148.0 → 16.149.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 (34) hide show
  1. package/behaviors/lolo/ui/core/atoms/std-app-search.lolo +1 -1
  2. package/behaviors/lolo/ui/core/atoms/std-billable-hour.lolo +86 -41
  3. package/behaviors/lolo/ui/core/atoms/std-board.lolo +29 -16
  4. package/behaviors/lolo/ui/core/atoms/std-browse.lolo +187 -83
  5. package/behaviors/lolo/ui/core/atoms/std-dashboard-grid-embedded.lolo +8 -0
  6. package/behaviors/lolo/ui/core/atoms/std-file-store.lolo +1 -1
  7. package/behaviors/lolo/ui/core/atoms/std-stats.lolo +14 -10
  8. package/behaviors/lolo/ui/core/atoms/std-version-history.lolo +1 -29
  9. package/behaviors/registry/factory-signatures.json +9 -13
  10. package/behaviors/registry/ui/core/atoms/std-app-search.orb +9 -1
  11. package/behaviors/registry/ui/core/atoms/std-billable-hour.orb +242 -50
  12. package/behaviors/registry/ui/core/atoms/std-board.orb +86 -20
  13. package/behaviors/registry/ui/core/atoms/std-browse.orb +377 -119
  14. package/behaviors/registry/ui/core/atoms/std-dashboard-grid-embedded.orb +41 -29
  15. package/behaviors/registry/ui/core/atoms/std-file-store.orb +0 -3
  16. package/behaviors/registry/ui/core/atoms/std-stats.orb +267 -238
  17. package/behaviors/registry/ui/core/atoms/std-version-history.orb +1 -38
  18. package/dist/behaviors/behaviors-embeddings.json +475 -475
  19. package/dist/behaviors/behaviors-registry.json +10 -12
  20. package/dist/behaviors/knob-embeddings.json +1 -1
  21. package/dist/behaviors/registry/factory-signatures.json +9 -13
  22. package/dist/behaviors/registry/ui/core/atoms/std-app-search.orb +9 -1
  23. package/dist/behaviors/registry/ui/core/atoms/std-billable-hour.orb +242 -50
  24. package/dist/behaviors/registry/ui/core/atoms/std-board.orb +86 -20
  25. package/dist/behaviors/registry/ui/core/atoms/std-browse.orb +377 -119
  26. package/dist/behaviors/registry/ui/core/atoms/std-dashboard-grid-embedded.orb +41 -29
  27. package/dist/behaviors/registry/ui/core/atoms/std-file-store.orb +0 -3
  28. package/dist/behaviors/registry/ui/core/atoms/std-stats.orb +267 -238
  29. package/dist/behaviors/registry/ui/core/atoms/std-version-history.orb +1 -38
  30. package/dist/behaviors-embeddings.json +475 -475
  31. package/dist/behaviors-registry.json +10 -12
  32. package/dist/knob-embeddings.json +1 -1
  33. package/dist/registry/factory-signatures.json +9 -13
  34. package/package.json +8 -1
@@ -1,5 +1,5 @@
1
1
  {
2
- "description": "std-browse as a Function — single primitive: data-grid. Owns the fetch + REFETCH (query/filter/page) state machine. Consumers configure fields/imageField/itemActions/cols/gap/variant; the atom renders the grid. Each `fields[]` entry accepts `{ name, label, variant }` plus optional `referenceEntity` + `displayField` to render a foreign-key column as the joined entity's display value (data-grid resolves @list[referenceEntity] at render time when both keys are present). `browseLook` (table default / dense / feed / gallery) selects one of four render bodies; dense/feed/gallery were folded in from std-browse-dense/-feed/-gallery (Phase 5.B) and their consumers retarget by setting browseLook.",
2
+ "description": "std-browse as a Function — single primitive: data-grid. Owns the fetch + REFETCH (query/filter/page) state machine. Consumers configure fields/imageField/itemActions/cols/gap/variant; the atom renders the grid. Each `fields[]` entry accepts `{ name, label, variant }` plus optional `referenceEntity` + `displayField` to render a foreign-key column as the joined entity's display value (data-grid resolves @list[referenceEntity] at render time when both keys are present). `browseLook` (table default / dense / feed / gallery / master-detail / triage) selects one of six render bodies; dense/feed/gallery were folded in from std-browse-dense/-feed/-gallery (Phase 5.B); master-detail (split record view driven by the guarded VIEW/CLOSE self-transitions) and triage (inbox rows) were folded in 2026-07-26. Consumers retarget by setting browseLook.",
3
3
  "ledger": {
4
4
  "entries": {
5
5
  "ent_01KXG04FVGGWM52VJZVMAEG5H0": {
@@ -91,6 +91,15 @@
91
91
  "parent": "trt_01KXG04FVGGKHGXMTQZAJY1308",
92
92
  "renames": []
93
93
  },
94
+ "evt_01KYG176Z4DTZ2W62WXFKKSXJV": {
95
+ "bakedName": "CLOSE",
96
+ "curName": "CLOSE",
97
+ "id": "evt_01KYG176Z4DTZ2W62WXFKKSXJV",
98
+ "kind": "event",
99
+ "owner": "workspace",
100
+ "parent": "trt_01KXG04FVGGKHGXMTQZAJY1308",
101
+ "renames": []
102
+ },
94
103
  "orb_01KXG04FVG2QCHAX67XWPG65GZ": {
95
104
  "bakedName": "BrowseItemOrbital",
96
105
  "curName": "BrowseItemOrbital",
@@ -130,6 +139,14 @@
130
139
  "kind": "trait",
131
140
  "owner": "workspace",
132
141
  "renames": []
142
+ },
143
+ "trt_01KYG176Z400JFKWZ2XPKJ4798": {
144
+ "bakedName": "MasterListView",
145
+ "curName": "MasterListView",
146
+ "id": "trt_01KYG176Z400JFKWZ2XPKJ4798",
147
+ "kind": "trait",
148
+ "owner": "workspace",
149
+ "renames": []
133
150
  }
134
151
  },
135
152
  "schemaVersion": 1
@@ -216,6 +233,10 @@
216
233
  "default": "@config.itemActions",
217
234
  "type": "unknown"
218
235
  },
236
+ "maxInlineActions": {
237
+ "default": "@config.maxInlineActions",
238
+ "type": "unknown"
239
+ },
219
240
  "pageSize": {
220
241
  "default": "@config.displayPageSize",
221
242
  "type": "unknown"
@@ -264,7 +285,7 @@
264
285
  "type": "unknown"
265
286
  },
266
287
  "selectable": {
267
- "default": true,
288
+ "default": "@config.selectable",
268
289
  "type": "unknown"
269
290
  }
270
291
  },
@@ -284,6 +305,45 @@
284
305
  "name": "DenseTableView",
285
306
  "ref": "TableView.traits.TableViewRender"
286
307
  },
308
+ {
309
+ "config": {
310
+ "fields": {
311
+ "default": "@config.fields",
312
+ "type": "unknown"
313
+ },
314
+ "itemActions": {
315
+ "default": "@config.itemActions",
316
+ "type": "unknown"
317
+ },
318
+ "itemClickEvent": {
319
+ "default": "VIEW",
320
+ "type": "unknown"
321
+ },
322
+ "maxInlineActions": {
323
+ "default": "@config.maxInlineActions",
324
+ "type": "unknown"
325
+ },
326
+ "variant": {
327
+ "default": "compact",
328
+ "type": "unknown"
329
+ }
330
+ },
331
+ "id": "trt_01KYG176Z400JFKWZ2XPKJ4798",
332
+ "linkedEntity": "BrowseItem",
333
+ "linkedEntityId": "ent_01KXG04FVGGWM52VJZVMAEG5H0",
334
+ "listens": [
335
+ {
336
+ "event": "BrowseItemLoaded",
337
+ "source": {
338
+ "kind": "trait",
339
+ "trait": "BrowseItemBrowse"
340
+ },
341
+ "triggers": "DataListLoaded"
342
+ }
343
+ ],
344
+ "name": "MasterListView",
345
+ "ref": "DataList.traits.DataListRender"
346
+ },
287
347
  {
288
348
  "category": "interaction",
289
349
  "config": {
@@ -324,7 +384,7 @@
324
384
  },
325
385
  "browseLook": {
326
386
  "default": "table",
327
- "description": "Layer 2 visual treatment for the whole browse surface. table = the default data-grid (bodyContent); dense = spreadsheet-style sticky-header table with search bar (denseBodyContent); feed = chronological card stream (feedBodyContent); gallery = image-first responsive card grid (galleryBodyContent). Selecting a non-table look swaps which body tree renders after rows load; any of the four bodies may still be overridden directly at the call site for a one-off layout.",
387
+ "description": "Layer 2 visual treatment for the whole browse surface. table = the default data-grid (bodyContent); dense = spreadsheet-style table with toolbar search (denseBodyContent); feed = chronological card stream (feedBodyContent); gallery = image-first responsive card grid (galleryBodyContent); master-detail = record-work split view — dense list left, clicked record's detail right (masterDetailBodyContent); triage = inbox-register compact rows for queue work (triageBodyContent). Selecting a non-table look swaps which body tree renders after rows load; any body may still be overridden directly at the call site for a one-off layout.",
328
388
  "label": "Browse look",
329
389
  "tier": "presentation",
330
390
  "type": "string",
@@ -332,7 +392,9 @@
332
392
  "table",
333
393
  "dense",
334
394
  "feed",
335
- "gallery"
395
+ "gallery",
396
+ "master-detail",
397
+ "triage"
336
398
  ]
337
399
  },
338
400
  "categoryBinding": {
@@ -437,14 +499,14 @@
437
499
  {
438
500
  "children": [
439
501
  {
440
- "className": "w-full",
502
+ "className": "w-full max-w-md",
441
503
  "clearable": true,
442
504
  "event": "REFETCH_QUERY",
443
505
  "placeholder": "@config.searchPlaceholder",
444
506
  "type": "search-input"
445
507
  }
446
508
  ],
447
- "className": "w-full",
509
+ "className": "px-card-md py-card-sm border-b border-[var(--color-border)]",
448
510
  "direction": "horizontal",
449
511
  "gap": "sm",
450
512
  "type": "stack"
@@ -459,14 +521,15 @@
459
521
  "children": [
460
522
  "@trait.DenseTableView"
461
523
  ],
462
- "className": "rounded-lg border border-[var(--color-border)] overflow-x-auto bg-[var(--color-card)] shadow-sm",
524
+ "className": "overflow-x-auto",
463
525
  "direction": "vertical",
464
526
  "gap": "none",
465
527
  "type": "stack"
466
528
  }
467
529
  ],
530
+ "className": "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] shadow-sm overflow-hidden",
468
531
  "direction": "vertical",
469
- "gap": "sm",
532
+ "gap": "none",
470
533
  "type": "stack"
471
534
  },
472
535
  "description": "Render-ui SExpr rendered after rows load when browseLook = dense. Spreadsheet-style sticky-header data-table with a search bar; composes columns/itemActions/maxInlineActions/displayPageSize/searchPlaceholder. Folded from std-browse-dense (Phase 5.B).",
@@ -481,6 +544,22 @@
481
544
  "tier": "internal",
482
545
  "type": "string"
483
546
  },
547
+ "detailFields": {
548
+ "default": [
549
+ "name",
550
+ "description",
551
+ "status",
552
+ "createdAt"
553
+ ],
554
+ "description": "Field names shown in the detail panel when browseLook = master-detail; the first entry doubles as the pane title. Consumers overriding columns/fields should override this list to match their entity.",
555
+ "items": {
556
+ "type": "string"
557
+ },
558
+ "label": "Which fields appear in the master-detail record pane?",
559
+ "synonyms": "detail columns, record fields, detail pane fields",
560
+ "tier": "presentation",
561
+ "type": "[string]"
562
+ },
484
563
  "displayPageSize": {
485
564
  "default": 10.0,
486
565
  "description": "Rows visible per page before the pagination control appears.",
@@ -603,6 +682,7 @@
603
682
  ],
604
683
  "className": "rounded-lg bg-[var(--color-card)] border border-[var(--color-border)] shadow-sm transition-all duration-normal hover:shadow-main hover:border-[var(--color-border-strong)] hover:-translate-y-px",
605
684
  "look": "flat-bordered",
685
+ "padding": "none",
606
686
  "type": "card"
607
687
  }
608
688
  ],
@@ -732,7 +812,7 @@
732
812
  "type": "search-input"
733
813
  }
734
814
  ],
735
- "className": "sticky top-0 z-10 -mx-6 px-6 py-3 bg-[var(--color-surface)]/95 backdrop-blur border-b border-[var(--color-border)]",
815
+ "className": "sticky top-0 z-10 py-3 bg-[var(--color-surface)]/95 backdrop-blur",
736
816
  "direction": "horizontal",
737
817
  "gap": "sm",
738
818
  "type": "stack"
@@ -746,95 +826,12 @@
746
826
  {
747
827
  "className": "w-full",
748
828
  "entity": "@payload.data",
749
- "fields": [],
829
+ "fields": "@config.fields",
750
830
  "gap": "lg",
831
+ "imageField": "@config.imageField",
751
832
  "itemActions": "@config.itemActions",
752
833
  "maxInlineActions": "@config.maxInlineActions",
753
834
  "minCardWidth": 260.0,
754
- "renderItem": [
755
- "fn",
756
- "item",
757
- {
758
- "children": [
759
- {
760
- "align": "center",
761
- "children": [
762
- {
763
- "className": "text-muted-foreground opacity-50 transition-transform duration-normal group-hover:scale-105",
764
- "name": "image",
765
- "size": "lg",
766
- "type": "icon"
767
- },
768
- {
769
- "className": "px-2 text-center truncate max-w-full",
770
- "color": "muted",
771
- "content": "@config.imageLabelBinding",
772
- "type": "typography",
773
- "variant": "caption"
774
- },
775
- {
776
- "align": "center",
777
- "children": [
778
- {
779
- "label": "@config.priceBinding",
780
- "type": "badge",
781
- "variant": "primary"
782
- }
783
- ],
784
- "className": "absolute top-2 right-2",
785
- "direction": "horizontal",
786
- "gap": "xs",
787
- "type": "stack"
788
- },
789
- {
790
- "align": "center",
791
- "children": [
792
- {
793
- "label": "@config.badgeBinding",
794
- "type": "badge",
795
- "variant": "neutral"
796
- }
797
- ],
798
- "className": "absolute top-2 left-2",
799
- "direction": "horizontal",
800
- "gap": "xs",
801
- "type": "stack"
802
- }
803
- ],
804
- "className": "relative aspect-square w-full bg-muted overflow-hidden",
805
- "direction": "vertical",
806
- "gap": "xs",
807
- "justify": "center",
808
- "type": "stack"
809
- },
810
- {
811
- "children": [
812
- {
813
- "className": "truncate",
814
- "content": "@config.titleBinding",
815
- "type": "typography",
816
- "variant": "h4"
817
- },
818
- {
819
- "className": "line-clamp-2",
820
- "color": "muted",
821
- "content": "@config.descriptionBinding",
822
- "type": "typography",
823
- "variant": "caption"
824
- }
825
- ],
826
- "className": "p-card-md",
827
- "direction": "vertical",
828
- "gap": "xs",
829
- "type": "stack"
830
- }
831
- ],
832
- "className": "group rounded-lg overflow-hidden bg-[var(--color-card)] border border-[var(--color-border)] shadow-sm hover:shadow-hover hover:-translate-y-0.5 transition-all duration-normal cursor-pointer",
833
- "direction": "vertical",
834
- "gap": "sm",
835
- "type": "stack"
836
- }
837
- ],
838
835
  "type": "data-grid"
839
836
  }
840
837
  ],
@@ -843,7 +840,7 @@
843
840
  "gap": "lg",
844
841
  "type": "stack"
845
842
  },
846
- "description": "Render-ui SExpr rendered after rows load when browseLook = gallery. Image-first responsive card grid with auto-fit minCardWidth; composes titleBinding/descriptionBinding/badgeBinding/imageLabelBinding/priceBinding/searchPlaceholder. Folded from std-browse-gallery (Phase 5.B).",
843
+ "description": "Render-ui SExpr rendered after rows load when browseLook = gallery. Image-first responsive card grid (auto-fit minCardWidth) on the data-grid fields path: imageField renders the card photo when set (falsy-safe when empty), fields drive title/badges/meta. One tree, no renderItem lambda — lambdas do not survive inside (if) arms (2026-07-27).",
847
844
  "label": "Gallery look body",
848
845
  "tier": "internal",
849
846
  "type": "render-ui"
@@ -909,8 +906,115 @@
909
906
  "tier": "presentation",
910
907
  "type": "[ItemAction]"
911
908
  },
909
+ "masterDetailBodyContent": {
910
+ "default": {
911
+ "children": [
912
+ {
913
+ "children": [
914
+ {
915
+ "className": "w-full max-w-md",
916
+ "clearable": true,
917
+ "event": "REFETCH_QUERY",
918
+ "placeholder": "@config.searchPlaceholder",
919
+ "type": "search-input"
920
+ }
921
+ ],
922
+ "className": "px-card-md py-card-sm border-b border-[var(--color-border)]",
923
+ "direction": "horizontal",
924
+ "gap": "sm",
925
+ "type": "stack"
926
+ },
927
+ {
928
+ "detail": {
929
+ "children": [],
930
+ "gap": "none",
931
+ "type": "stack"
932
+ },
933
+ "emptyDetail": {
934
+ "description": "Select a record from the list to see its details.",
935
+ "icon": "mouse-pointer-click",
936
+ "title": "Nothing selected",
937
+ "type": "empty-state"
938
+ },
939
+ "hasSelection": false,
940
+ "master": {
941
+ "children": [
942
+ "@trait.MasterListView"
943
+ ],
944
+ "className": "overflow-y-auto",
945
+ "direction": "vertical",
946
+ "gap": "none",
947
+ "type": "stack"
948
+ },
949
+ "type": "master-detail-layout"
950
+ }
951
+ ],
952
+ "className": "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] shadow-sm overflow-hidden",
953
+ "direction": "vertical",
954
+ "gap": "none",
955
+ "type": "stack"
956
+ },
957
+ "description": "Render-ui SExpr rendered after rows load when browseLook = master-detail: record-work split view — toolbar search, dense list left, empty-state pane right until a row is opened. Opening a row renders masterDetailRecordBodyContent. The toolbar is always present in this look (bodySearch does not apply).",
958
+ "label": "Master-detail look body (no selection)",
959
+ "tier": "internal",
960
+ "type": "render-ui"
961
+ },
962
+ "masterDetailRecordBodyContent": {
963
+ "default": {
964
+ "children": [
965
+ {
966
+ "children": [
967
+ {
968
+ "className": "w-full max-w-md",
969
+ "clearable": true,
970
+ "event": "REFETCH_QUERY",
971
+ "placeholder": "@config.searchPlaceholder",
972
+ "type": "search-input"
973
+ }
974
+ ],
975
+ "className": "px-card-md py-card-sm border-b border-[var(--color-border)]",
976
+ "direction": "horizontal",
977
+ "gap": "sm",
978
+ "type": "stack"
979
+ },
980
+ {
981
+ "detail": {
982
+ "actions": [
983
+ {
984
+ "event": "CLOSE",
985
+ "label": "Close"
986
+ }
987
+ ],
988
+ "fieldNames": "@config.detailFields",
989
+ "initialData": "@payload.row",
990
+ "showActions": false,
991
+ "type": "detail-panel"
992
+ },
993
+ "hasSelection": true,
994
+ "master": {
995
+ "children": [
996
+ "@trait.MasterListView"
997
+ ],
998
+ "className": "overflow-y-auto",
999
+ "direction": "vertical",
1000
+ "gap": "none",
1001
+ "type": "stack"
1002
+ },
1003
+ "type": "master-detail-layout"
1004
+ }
1005
+ ],
1006
+ "className": "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] shadow-sm overflow-hidden",
1007
+ "direction": "vertical",
1008
+ "gap": "none",
1009
+ "type": "stack"
1010
+ },
1011
+ "description": "Render-ui SExpr rendered by the VIEW transition when browseLook = master-detail: the same split view with the clicked record's detail panel on the right, fed by the VIEW payload row and detailFields.",
1012
+ "label": "Master-detail look body (record open)",
1013
+ "tier": "internal",
1014
+ "type": "render-ui"
1015
+ },
912
1016
  "maxInlineActions": {
913
- "default": 99.0,
1017
+ "default": 3.0,
914
1018
  "description": "Actions beyond this count collapse into a '⋯' overflow menu. Set 2–3 for dense tables.",
915
1019
  "label": "How many row actions to show before collapsing?",
916
1020
  "synonyms": "inline actions limit, overflow threshold, max buttons per row",
@@ -954,6 +1058,14 @@
954
1058
  "tier": "presentation",
955
1059
  "type": "string"
956
1060
  },
1061
+ "selectable": {
1062
+ "default": false,
1063
+ "description": "Adds a checkbox column with select-all to the dense table. Enable only when the surface offers bulk actions — checkboxes with nothing to act on are a dead affordance.",
1064
+ "label": "Show row selection checkboxes?",
1065
+ "synonyms": "row checkboxes, multi-select, bulk select, selection column",
1066
+ "tier": "presentation",
1067
+ "type": "boolean"
1068
+ },
957
1069
  "titleBinding": {
958
1070
  "default": "@item.name",
959
1071
  "description": "Binding path for the card title slot (e.g. @item.dishName).",
@@ -961,6 +1073,60 @@
961
1073
  "tier": "internal",
962
1074
  "type": "string"
963
1075
  },
1076
+ "triageBodyContent": {
1077
+ "default": {
1078
+ "children": [
1079
+ [
1080
+ "if",
1081
+ "@config.bodySearch",
1082
+ {
1083
+ "children": [
1084
+ {
1085
+ "className": "w-full max-w-md",
1086
+ "clearable": true,
1087
+ "event": "REFETCH_QUERY",
1088
+ "placeholder": "@config.searchPlaceholder",
1089
+ "type": "search-input"
1090
+ }
1091
+ ],
1092
+ "className": "px-card-md py-card-sm border-b border-[var(--color-border)]",
1093
+ "direction": "horizontal",
1094
+ "gap": "sm",
1095
+ "type": "stack"
1096
+ },
1097
+ {
1098
+ "children": [],
1099
+ "gap": "none",
1100
+ "type": "stack"
1101
+ }
1102
+ ],
1103
+ {
1104
+ "children": [
1105
+ {
1106
+ "entity": "@payload.data",
1107
+ "fields": "@config.fields",
1108
+ "itemActions": "@config.itemActions",
1109
+ "maxInlineActions": "@config.maxInlineActions",
1110
+ "type": "data-list",
1111
+ "variant": "compact"
1112
+ }
1113
+ ],
1114
+ "className": "overflow-x-auto",
1115
+ "direction": "vertical",
1116
+ "gap": "none",
1117
+ "type": "stack"
1118
+ }
1119
+ ],
1120
+ "className": "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] shadow-sm overflow-hidden",
1121
+ "direction": "vertical",
1122
+ "gap": "none",
1123
+ "type": "stack"
1124
+ },
1125
+ "description": "Render-ui SExpr rendered after rows load when browseLook = triage. Inbox-register queue: one surface with a toolbar search and compact list rows (title + badges + inline meta) built for keyboard-pace queue work; row actions collapse per maxInlineActions. Composes fields/itemActions/searchPlaceholder/bodySearch.",
1126
+ "label": "Triage look body",
1127
+ "tier": "internal",
1128
+ "type": "render-ui"
1129
+ },
964
1130
  "viewPattern": {
965
1131
  "default": "data-grid",
966
1132
  "description": "UI pattern used to render the collection. Used by the default bodyContent tree; Layer 3 variants override bodyContent directly instead and may ignore this knob.",
@@ -1285,6 +1451,11 @@
1285
1451
  "synonyms": "display, show, update, render",
1286
1452
  "tier": "domain"
1287
1453
  },
1454
+ {
1455
+ "id": "evt_01KYG176Z4DTZ2W62WXFKKSXJV",
1456
+ "key": "CLOSE",
1457
+ "name": "Close"
1458
+ },
1288
1459
  {
1289
1460
  "description": "Signals a request to edit the selected item.",
1290
1461
  "id": "evt_01KXG04FVGRP1SF2QXKEBQ3GNQ",
@@ -1403,8 +1574,8 @@
1403
1574
  "render-ui",
1404
1575
  "main",
1405
1576
  {
1406
- "size": "sm",
1407
- "type": "spinner"
1577
+ "rows": 4.0,
1578
+ "type": "skeleton"
1408
1579
  }
1409
1580
  ]
1410
1581
  ],
@@ -1452,9 +1623,35 @@
1452
1623
  "@config.galleryBodyContent"
1453
1624
  ],
1454
1625
  [
1455
- "render-ui",
1456
- "main",
1457
- "@config.bodyContent"
1626
+ "if",
1627
+ [
1628
+ "=",
1629
+ "@config.browseLook",
1630
+ "master-detail"
1631
+ ],
1632
+ [
1633
+ "render-ui",
1634
+ "main",
1635
+ "@config.masterDetailBodyContent"
1636
+ ],
1637
+ [
1638
+ "if",
1639
+ [
1640
+ "=",
1641
+ "@config.browseLook",
1642
+ "triage"
1643
+ ],
1644
+ [
1645
+ "render-ui",
1646
+ "main",
1647
+ "@config.triageBodyContent"
1648
+ ],
1649
+ [
1650
+ "render-ui",
1651
+ "main",
1652
+ "@config.bodyContent"
1653
+ ]
1654
+ ]
1458
1655
  ]
1459
1656
  ]
1460
1657
  ]
@@ -1471,16 +1668,10 @@
1471
1668
  "render-ui",
1472
1669
  "main",
1473
1670
  {
1474
- "children": [
1475
- {
1476
- "color": "error",
1477
- "content": "@payload.error",
1478
- "type": "typography",
1479
- "variant": "caption"
1480
- }
1481
- ],
1482
- "direction": "vertical",
1483
- "type": "stack"
1671
+ "message": "@payload.error",
1672
+ "title": "Couldn't load this list",
1673
+ "type": "alert",
1674
+ "variant": "error"
1484
1675
  }
1485
1676
  ]
1486
1677
  ],
@@ -1507,8 +1698,8 @@
1507
1698
  "render-ui",
1508
1699
  "main",
1509
1700
  {
1510
- "size": "sm",
1511
- "type": "spinner"
1701
+ "rows": 4.0,
1702
+ "type": "skeleton"
1512
1703
  }
1513
1704
  ]
1514
1705
  ],
@@ -1619,6 +1810,42 @@
1619
1810
  "from": "browsing",
1620
1811
  "to": "browsing"
1621
1812
  },
1813
+ {
1814
+ "effects": [
1815
+ [
1816
+ "render-ui",
1817
+ "main",
1818
+ "@config.masterDetailRecordBodyContent"
1819
+ ]
1820
+ ],
1821
+ "event": "VIEW",
1822
+ "eventId": "evt_01KXG04FVGX3Q7N39AZ68VGPTJ",
1823
+ "from": "browsing",
1824
+ "guard": [
1825
+ "=",
1826
+ "@config.browseLook",
1827
+ "master-detail"
1828
+ ],
1829
+ "to": "browsing"
1830
+ },
1831
+ {
1832
+ "effects": [
1833
+ [
1834
+ "render-ui",
1835
+ "main",
1836
+ "@config.masterDetailBodyContent"
1837
+ ]
1838
+ ],
1839
+ "event": "CLOSE",
1840
+ "eventId": "evt_01KYG176Z4DTZ2W62WXFKKSXJV",
1841
+ "from": "browsing",
1842
+ "guard": [
1843
+ "=",
1844
+ "@config.browseLook",
1845
+ "master-detail"
1846
+ ],
1847
+ "to": "browsing"
1848
+ },
1622
1849
  {
1623
1850
  "effects": [
1624
1851
  [
@@ -1658,9 +1885,35 @@
1658
1885
  "@config.galleryBodyContent"
1659
1886
  ],
1660
1887
  [
1661
- "render-ui",
1662
- "main",
1663
- "@config.bodyContent"
1888
+ "if",
1889
+ [
1890
+ "=",
1891
+ "@config.browseLook",
1892
+ "master-detail"
1893
+ ],
1894
+ [
1895
+ "render-ui",
1896
+ "main",
1897
+ "@config.masterDetailBodyContent"
1898
+ ],
1899
+ [
1900
+ "if",
1901
+ [
1902
+ "=",
1903
+ "@config.browseLook",
1904
+ "triage"
1905
+ ],
1906
+ [
1907
+ "render-ui",
1908
+ "main",
1909
+ "@config.triageBodyContent"
1910
+ ],
1911
+ [
1912
+ "render-ui",
1913
+ "main",
1914
+ "@config.bodyContent"
1915
+ ]
1916
+ ]
1664
1917
  ]
1665
1918
  ]
1666
1919
  ]
@@ -1689,8 +1942,8 @@
1689
1942
  "render-ui",
1690
1943
  "main",
1691
1944
  {
1692
- "size": "sm",
1693
- "type": "spinner"
1945
+ "rows": 4.0,
1946
+ "type": "skeleton"
1694
1947
  }
1695
1948
  ]
1696
1949
  ],
@@ -1703,7 +1956,8 @@
1703
1956
  },
1704
1957
  "traitEmbedIds": {
1705
1958
  "DataGrid1": "trt_01KXZ44Y965J2Q55E5JN4JKVGR",
1706
- "DenseTableView": "trt_01KXZ44Y963YXRJDNR4F2M5QHX"
1959
+ "DenseTableView": "trt_01KXZ44Y963YXRJDNR4F2M5QHX",
1960
+ "MasterListView": "trt_01KYG176Z400JFKWZ2XPKJ4798"
1707
1961
  }
1708
1962
  }
1709
1963
  ],
@@ -1719,6 +1973,10 @@
1719
1973
  {
1720
1974
  "as": "TableView",
1721
1975
  "from": "std/behaviors/ui-table-view"
1976
+ },
1977
+ {
1978
+ "as": "DataList",
1979
+ "from": "std/behaviors/ui-data-list"
1722
1980
  }
1723
1981
  ]
1724
1982
  }