@almadar/std 16.191.0 → 16.192.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 (103) hide show
  1. package/behaviors/lolo/infra/atoms/std-approval-gate.lolo +184 -18
  2. package/behaviors/lolo/infra/atoms/std-status-lifecycle.lolo +16 -3
  3. package/behaviors/lolo/ui/core/atoms/std-billable-hour.lolo +1 -0
  4. package/behaviors/lolo/ui/core/atoms/std-browse.lolo +3 -0
  5. package/behaviors/lolo/ui/core/atoms/std-image-upload-multi.lolo +37 -4
  6. package/behaviors/lolo/ui/core/atoms/std-record-detail.lolo +37 -0
  7. package/behaviors/lolo/ui/core/atoms/std-tag-taxonomy.lolo +176 -4
  8. package/behaviors/lolo/ui/core/atoms/std-version-history.lolo +3 -1
  9. package/behaviors/lolo/ui/core/molecules/ui-calendar-grid.lolo +25 -1
  10. package/behaviors/lolo/ui/core/molecules/ui-data-grid.lolo +37 -1
  11. package/behaviors/lolo/ui/core/molecules/ui-data-list.lolo +46 -1
  12. package/behaviors/lolo/ui/core/molecules/ui-document-details.lolo +30 -2
  13. package/behaviors/lolo/ui/core/molecules/ui-document-panel.lolo +14 -0
  14. package/behaviors/lolo/ui/core/molecules/ui-positioned-canvas.lolo +19 -1
  15. package/behaviors/lolo/ui/core/molecules/ui-reply-tree.lolo +21 -1
  16. package/behaviors/lolo/ui/core/molecules/ui-sortable-list.lolo +15 -1
  17. package/behaviors/lolo/ui/core/molecules/ui-table-view.lolo +36 -1
  18. package/behaviors/lolo/ui/core/organisms/ui-detail-panel.lolo +41 -1
  19. package/behaviors/lolo/ui/core/organisms/ui-entity-cards.lolo +34 -1
  20. package/behaviors/lolo/ui/core/organisms/ui-entity-list.lolo +30 -1
  21. package/behaviors/lolo/ui/core/organisms/ui-entity-table.lolo +36 -1
  22. package/behaviors/lolo/ui/core/organisms/ui-form-section.lolo +39 -1
  23. package/behaviors/lolo/ui/core/organisms/ui-form.lolo +39 -1
  24. package/behaviors/lolo/ui/core/organisms/ui-master-detail.lolo +24 -1
  25. package/behaviors/lolo/ui/core/organisms/ui-media-gallery.lolo +30 -1
  26. package/behaviors/lolo/ui/core/organisms/ui-stat-card.lolo +37 -1
  27. package/behaviors/lolo/ui/core/organisms/ui-timeline.lolo +18 -1
  28. package/behaviors/lolo/ui/core/templates/ui-counter-template.lolo +21 -1
  29. package/behaviors/lolo/ui/core/templates/ui-generic-app-template.lolo +16 -1
  30. package/behaviors/lolo/ui/marketing/organisms/ui-book-chapter-view.lolo +12 -1
  31. package/behaviors/lolo/ui/marketing/organisms/ui-book-table-of-contents.lolo +13 -1
  32. package/behaviors/lolo/ui/marketing/organisms/ui-book-viewer.lolo +23 -1
  33. package/behaviors/lolo/ui/marketing/organisms/ui-case-study-organism.lolo +23 -1
  34. package/behaviors/lolo/ui/marketing/organisms/ui-feature-grid-organism.lolo +24 -1
  35. package/behaviors/lolo/ui/marketing/organisms/ui-hero-organism.lolo +22 -1
  36. package/behaviors/lolo/ui/marketing/organisms/ui-pricing-organism.lolo +23 -1
  37. package/behaviors/lolo/ui/marketing/organisms/ui-showcase-organism.lolo +24 -1
  38. package/behaviors/lolo/ui/marketing/organisms/ui-stats-organism.lolo +22 -1
  39. package/behaviors/lolo/ui/marketing/organisms/ui-step-flow-organism.lolo +25 -1
  40. package/behaviors/lolo/ui/marketing/organisms/ui-team-organism.lolo +23 -1
  41. package/behaviors/lolo/ui/marketing/templates/ui-about-page-template.lolo +11 -1
  42. package/behaviors/lolo/ui/marketing/templates/ui-feature-detail-page-template.lolo +11 -1
  43. package/behaviors/lolo/ui/marketing/templates/ui-landing-page-template.lolo +13 -1
  44. package/behaviors/lolo/ui/marketing/templates/ui-pricing-page-template.lolo +11 -1
  45. package/behaviors/registry/infra/atoms/std-approval-gate.orb +717 -45
  46. package/behaviors/registry/infra/atoms/std-status-lifecycle.orb +85 -10
  47. package/behaviors/registry/ui/core/atoms/std-billable-hour.orb +5 -2
  48. package/behaviors/registry/ui/core/atoms/std-browse.orb +12 -0
  49. package/behaviors/registry/ui/core/atoms/std-image-upload-multi.orb +129 -7
  50. package/behaviors/registry/ui/core/atoms/std-record-detail.orb +316 -0
  51. package/behaviors/registry/ui/core/atoms/std-tag-taxonomy.orb +539 -1
  52. package/behaviors/registry/ui/core/atoms/std-version-history.orb +5 -1
  53. package/behaviors/registry/ui/core/molecules/ui-calendar-grid.orb +43 -0
  54. package/behaviors/registry/ui/core/molecules/ui-data-grid.orb +55 -0
  55. package/behaviors/registry/ui/core/molecules/ui-data-list.orb +64 -0
  56. package/behaviors/registry/ui/core/molecules/ui-document-details.orb +106 -1
  57. package/behaviors/registry/ui/core/molecules/ui-document-panel.orb +18 -0
  58. package/behaviors/registry/ui/core/molecules/ui-positioned-canvas.orb +37 -0
  59. package/behaviors/registry/ui/core/molecules/ui-reply-tree.orb +39 -0
  60. package/behaviors/registry/ui/core/molecules/ui-sortable-list.orb +45 -0
  61. package/behaviors/registry/ui/core/molecules/ui-table-view.orb +54 -0
  62. package/behaviors/registry/ui/core/organisms/ui-detail-panel.orb +59 -0
  63. package/behaviors/registry/ui/core/organisms/ui-entity-cards.orb +52 -0
  64. package/behaviors/registry/ui/core/organisms/ui-entity-list.orb +48 -0
  65. package/behaviors/registry/ui/core/organisms/ui-entity-table.orb +54 -0
  66. package/behaviors/registry/ui/core/organisms/ui-form-section.orb +57 -0
  67. package/behaviors/registry/ui/core/organisms/ui-form.orb +57 -0
  68. package/behaviors/registry/ui/core/organisms/ui-master-detail.orb +42 -0
  69. package/behaviors/registry/ui/core/organisms/ui-media-gallery.orb +48 -0
  70. package/behaviors/registry/ui/core/organisms/ui-stat-card.orb +55 -0
  71. package/behaviors/registry/ui/core/organisms/ui-timeline.orb +36 -0
  72. package/behaviors/registry/ui/core/templates/ui-counter-template.orb +39 -0
  73. package/behaviors/registry/ui/core/templates/ui-generic-app-template.orb +34 -0
  74. package/behaviors/registry/ui/marketing/organisms/ui-book-chapter-view.orb +30 -0
  75. package/behaviors/registry/ui/marketing/organisms/ui-book-table-of-contents.orb +31 -0
  76. package/behaviors/registry/ui/marketing/organisms/ui-book-viewer.orb +41 -0
  77. package/behaviors/registry/ui/marketing/organisms/ui-case-study-organism.orb +41 -0
  78. package/behaviors/registry/ui/marketing/organisms/ui-feature-grid-organism.orb +42 -0
  79. package/behaviors/registry/ui/marketing/organisms/ui-hero-organism.orb +40 -0
  80. package/behaviors/registry/ui/marketing/organisms/ui-pricing-organism.orb +41 -0
  81. package/behaviors/registry/ui/marketing/organisms/ui-showcase-organism.orb +42 -0
  82. package/behaviors/registry/ui/marketing/organisms/ui-stats-organism.orb +40 -0
  83. package/behaviors/registry/ui/marketing/organisms/ui-step-flow-organism.orb +43 -0
  84. package/behaviors/registry/ui/marketing/organisms/ui-team-organism.orb +41 -0
  85. package/behaviors/registry/ui/marketing/templates/ui-about-page-template.orb +29 -0
  86. package/behaviors/registry/ui/marketing/templates/ui-feature-detail-page-template.orb +29 -0
  87. package/behaviors/registry/ui/marketing/templates/ui-landing-page-template.orb +31 -0
  88. package/behaviors/registry/ui/marketing/templates/ui-pricing-page-template.orb +29 -0
  89. package/dist/behaviors/exports-reader.js +2566 -44
  90. package/dist/behaviors/functions/index.d.ts +134 -11
  91. package/dist/behaviors/functions/index.js +2565 -45
  92. package/dist/behaviors/index.d.ts +1 -1
  93. package/dist/behaviors/index.js +2567 -45
  94. package/dist/behaviors/query.js +2566 -44
  95. package/dist/behaviors-embeddings.hash.json +3 -3
  96. package/dist/behaviors-embeddings.json +11 -11
  97. package/dist/behaviors-registry.json +96 -53
  98. package/dist/index.d.ts +1 -1
  99. package/dist/index.js +2567 -45
  100. package/dist/knob-embeddings.hash.json +3 -3
  101. package/dist/knob-embeddings.json +1 -1
  102. package/dist/registry/factory-signatures.json +1 -1
  103. package/package.json +2 -2
@@ -64,6 +64,60 @@
64
64
  "parent": "trt_01KXG04HRH1T6RA6R9NY1XQC4J",
65
65
  "renames": []
66
66
  },
67
+ "evt_01M169QR0DBCS40K2H653NK3BC": {
68
+ "bakedName": "CANCEL_TAG",
69
+ "curName": "CANCEL_TAG",
70
+ "id": "evt_01M169QR0DBCS40K2H653NK3BC",
71
+ "kind": "event",
72
+ "owner": "workspace",
73
+ "parent": "trt_01KXG04HRH1T6RA6R9NY1XQC4J",
74
+ "renames": []
75
+ },
76
+ "evt_01M169QR0DBSS6H2VC2G50TM37": {
77
+ "bakedName": "COMMIT_TAG",
78
+ "curName": "COMMIT_TAG",
79
+ "id": "evt_01M169QR0DBSS6H2VC2G50TM37",
80
+ "kind": "event",
81
+ "owner": "workspace",
82
+ "parent": "trt_01KXG04HRH1T6RA6R9NY1XQC4J",
83
+ "renames": []
84
+ },
85
+ "evt_01M169QR0DC8SC439BREC46BQN": {
86
+ "bakedName": "TagCreateFailed",
87
+ "curName": "TagCreateFailed",
88
+ "id": "evt_01M169QR0DC8SC439BREC46BQN",
89
+ "kind": "event",
90
+ "owner": "workspace",
91
+ "parent": "trt_01KXG04HRH1T6RA6R9NY1XQC4J",
92
+ "renames": []
93
+ },
94
+ "evt_01M169QR0DYJMCCP7409YMSH6A": {
95
+ "bakedName": "NEW_TAG",
96
+ "curName": "NEW_TAG",
97
+ "id": "evt_01M169QR0DYJMCCP7409YMSH6A",
98
+ "kind": "event",
99
+ "owner": "workspace",
100
+ "parent": "trt_01KXG04HRH1T6RA6R9NY1XQC4J",
101
+ "renames": []
102
+ },
103
+ "evt_01M169QR0DZVZ04SDSQ1PSM3HR": {
104
+ "bakedName": "TagCreated",
105
+ "curName": "TagCreated",
106
+ "id": "evt_01M169QR0DZVZ04SDSQ1PSM3HR",
107
+ "kind": "event",
108
+ "owner": "workspace",
109
+ "parent": "trt_01KXG04HRH1T6RA6R9NY1XQC4J",
110
+ "renames": []
111
+ },
112
+ "evt_01M169RXDREJ5T7B8PWGVZEPP8": {
113
+ "bakedName": "LEVEL_RELOAD",
114
+ "curName": "LEVEL_RELOAD",
115
+ "id": "evt_01M169RXDREJ5T7B8PWGVZEPP8",
116
+ "kind": "event",
117
+ "owner": "workspace",
118
+ "parent": "trt_01KXG04HRH1T6RA6R9NY1XQC4J",
119
+ "renames": []
120
+ },
67
121
  "orb_01KXG04HRHG7GH6G42W4QW139F": {
68
122
  "bakedName": "TagTaxonomyOrbital",
69
123
  "curName": "TagTaxonomyOrbital",
@@ -169,7 +223,7 @@
169
223
  "config": {
170
224
  "allowEdit": {
171
225
  "default": false,
172
- "description": "Show inline controls to create or rename tags",
226
+ "description": "Render the New-category affordance: creations land at the level currently open (top level, or inside the drilled-into category). Rename is a follow-up (ledgered).",
173
227
  "label": "Allow editing",
174
228
  "tier": "domain",
175
229
  "type": "boolean"
@@ -254,6 +308,119 @@
254
308
  ],
255
309
  "synonyms": "chosen, picked, activated, highlighted",
256
310
  "tier": "domain"
311
+ },
312
+ {
313
+ "description": "Opens the new-category form (rendered only when allowEdit is on); the creation lands at the level currently open.",
314
+ "event": "NEW_TAG",
315
+ "eventId": "evt_01M169QR0DYJMCCP7409YMSH6A",
316
+ "synonyms": "add tag, create category, new category",
317
+ "tier": "domain"
318
+ },
319
+ {
320
+ "description": "The new-category form committed; data carries the name and the parent level.",
321
+ "event": "COMMIT_TAG",
322
+ "eventId": "evt_01M169QR0DBSS6H2VC2G50TM37",
323
+ "payloadSchema": [
324
+ {
325
+ "name": "data",
326
+ "properties": [
327
+ {
328
+ "name": "name",
329
+ "required": true,
330
+ "type": "string"
331
+ },
332
+ {
333
+ "name": "parentId",
334
+ "type": "string"
335
+ }
336
+ ],
337
+ "type": "object"
338
+ }
339
+ ],
340
+ "synonyms": "save tag, create tag",
341
+ "tier": "internal"
342
+ },
343
+ {
344
+ "description": "The new-category form was dismissed without creating.",
345
+ "event": "CANCEL_TAG",
346
+ "eventId": "evt_01M169QR0DBCS40K2H653NK3BC",
347
+ "synonyms": "cancel, back",
348
+ "tier": "internal"
349
+ },
350
+ {
351
+ "description": "Internal hop that refetches the open level after the new-category form closes (a fetch filter cannot read trait state, so the level travels by payload).",
352
+ "event": "LEVEL_RELOAD",
353
+ "eventId": "evt_01M169RXDREJ5T7B8PWGVZEPP8",
354
+ "payloadSchema": [
355
+ {
356
+ "name": "tagId",
357
+ "type": "string"
358
+ }
359
+ ],
360
+ "synonyms": "reload level, refresh",
361
+ "tier": "internal"
362
+ },
363
+ {
364
+ "description": "A new tag row persisted; the open level refetches to show it.",
365
+ "event": "TagCreated",
366
+ "eventId": "evt_01M169QR0DZVZ04SDSQ1PSM3HR",
367
+ "payloadSchema": [
368
+ {
369
+ "name": "row",
370
+ "properties": [
371
+ {
372
+ "name": "id",
373
+ "required": true,
374
+ "type": "string"
375
+ },
376
+ {
377
+ "name": "name",
378
+ "required": true,
379
+ "type": "string"
380
+ },
381
+ {
382
+ "name": "parentId",
383
+ "type": "Tag"
384
+ },
385
+ {
386
+ "name": "slug",
387
+ "type": "string"
388
+ },
389
+ {
390
+ "name": "color",
391
+ "type": "string"
392
+ },
393
+ {
394
+ "name": "count",
395
+ "type": "number"
396
+ },
397
+ {
398
+ "name": "createdAt",
399
+ "type": "string"
400
+ }
401
+ ],
402
+ "type": "object"
403
+ }
404
+ ],
405
+ "synonyms": "created, added",
406
+ "tier": "internal"
407
+ },
408
+ {
409
+ "description": "The tag create failed.",
410
+ "event": "TagCreateFailed",
411
+ "eventId": "evt_01M169QR0DC8SC439BREC46BQN",
412
+ "payloadSchema": [
413
+ {
414
+ "name": "error",
415
+ "type": "string"
416
+ },
417
+ {
418
+ "name": "code",
419
+ "type": "string"
420
+ }
421
+ ],
422
+ "synonyms": "error, failure",
423
+ "tier": "internal"
257
424
  }
258
425
  ],
259
426
  "entityRefIds": {
@@ -266,6 +433,20 @@
266
433
  "scope": "collection",
267
434
  "stateMachine": {
268
435
  "events": [
436
+ {
437
+ "description": "Internal hop that refetches the open level after the new-category form closes (a fetch filter cannot read trait state, so the level travels by payload).",
438
+ "id": "evt_01M169RXDREJ5T7B8PWGVZEPP8",
439
+ "key": "LEVEL_RELOAD",
440
+ "name": "Level Reload",
441
+ "payloadSchema": [
442
+ {
443
+ "name": "tagId",
444
+ "type": "string"
445
+ }
446
+ ],
447
+ "synonyms": "reload level, refresh",
448
+ "tier": "internal"
449
+ },
269
450
  {
270
451
  "id": "evt_01KXG04HRHZ7R8AVV6NCG6FC0S",
271
452
  "key": "INIT",
@@ -323,6 +504,79 @@
323
504
  "key": "SHOW_ROOT",
324
505
  "name": "Show Root"
325
506
  },
507
+ {
508
+ "description": "Opens the new-category form (rendered only when allowEdit is on); the creation lands at the level currently open.",
509
+ "id": "evt_01M169QR0DYJMCCP7409YMSH6A",
510
+ "key": "NEW_TAG",
511
+ "name": "New Tag",
512
+ "synonyms": "add tag, create category, new category",
513
+ "tier": "domain"
514
+ },
515
+ {
516
+ "description": "The new-category form committed; data carries the name and the parent level.",
517
+ "id": "evt_01M169QR0DBSS6H2VC2G50TM37",
518
+ "key": "COMMIT_TAG",
519
+ "name": "Commit Tag",
520
+ "payloadSchema": [
521
+ {
522
+ "name": "data",
523
+ "properties": [
524
+ {
525
+ "name": "name",
526
+ "required": true,
527
+ "type": "string"
528
+ },
529
+ {
530
+ "name": "parentId",
531
+ "type": "string"
532
+ }
533
+ ],
534
+ "type": "object"
535
+ }
536
+ ],
537
+ "synonyms": "save tag, create tag",
538
+ "tier": "internal"
539
+ },
540
+ {
541
+ "description": "The new-category form was dismissed without creating.",
542
+ "id": "evt_01M169QR0DBCS40K2H653NK3BC",
543
+ "key": "CANCEL_TAG",
544
+ "name": "Cancel Tag",
545
+ "synonyms": "cancel, back",
546
+ "tier": "internal"
547
+ },
548
+ {
549
+ "description": "A new tag row persisted; the open level refetches to show it.",
550
+ "id": "evt_01M169QR0DZVZ04SDSQ1PSM3HR",
551
+ "key": "TagCreated",
552
+ "name": "Tag created",
553
+ "payloadSchema": [
554
+ {
555
+ "name": "row",
556
+ "type": "Tag"
557
+ }
558
+ ],
559
+ "synonyms": "created, added",
560
+ "tier": "internal"
561
+ },
562
+ {
563
+ "description": "The tag create failed.",
564
+ "id": "evt_01M169QR0DC8SC439BREC46BQN",
565
+ "key": "TagCreateFailed",
566
+ "name": "Tag create failed",
567
+ "payloadSchema": [
568
+ {
569
+ "name": "error",
570
+ "type": "string"
571
+ },
572
+ {
573
+ "name": "code",
574
+ "type": "string"
575
+ }
576
+ ],
577
+ "synonyms": "error, failure",
578
+ "tier": "internal"
579
+ },
326
580
  {
327
581
  "description": "Signals a tag has been chosen for further exploration.",
328
582
  "id": "evt_01KXG04HRKGA5B1JAYP300FR4C",
@@ -347,6 +601,9 @@
347
601
  {
348
602
  "name": "browsing"
349
603
  },
604
+ {
605
+ "name": "creating"
606
+ },
350
607
  {
351
608
  "name": "editing"
352
609
  },
@@ -355,6 +612,37 @@
355
612
  }
356
613
  ],
357
614
  "transitions": [
615
+ {
616
+ "effects": [
617
+ [
618
+ "fetch",
619
+ "Tag",
620
+ {
621
+ "emit": {
622
+ "failure": "TagLoadFailed",
623
+ "success": "TagLoaded"
624
+ },
625
+ "filter": [
626
+ "=",
627
+ [
628
+ "object/get",
629
+ "@entity",
630
+ "parentId"
631
+ ],
632
+ [
633
+ "str/default",
634
+ "@payload.tagId",
635
+ ""
636
+ ]
637
+ ]
638
+ }
639
+ ]
640
+ ],
641
+ "event": "LEVEL_RELOAD",
642
+ "eventId": "evt_01M169RXDREJ5T7B8PWGVZEPP8",
643
+ "from": "loading",
644
+ "to": "loading"
645
+ },
358
646
  {
359
647
  "effects": [
360
648
  [
@@ -444,6 +732,19 @@
444
732
  "type": "typography",
445
733
  "variant": "h3"
446
734
  },
735
+ [
736
+ "if",
737
+ "@config.allowEdit",
738
+ {
739
+ "action": "NEW_TAG",
740
+ "icon": "plus",
741
+ "label": "New category",
742
+ "size": "sm",
743
+ "type": "button",
744
+ "variant": "secondary"
745
+ },
746
+ null
747
+ ],
447
748
  {
448
749
  "entity": "@payload.data",
449
750
  "fields": [],
@@ -761,6 +1062,19 @@
761
1062
  "type": "typography",
762
1063
  "variant": "h3"
763
1064
  },
1065
+ [
1066
+ "if",
1067
+ "@config.allowEdit",
1068
+ {
1069
+ "action": "NEW_TAG",
1070
+ "icon": "plus",
1071
+ "label": "New category",
1072
+ "size": "sm",
1073
+ "type": "button",
1074
+ "variant": "secondary"
1075
+ },
1076
+ null
1077
+ ],
764
1078
  {
765
1079
  "entity": "@payload.data",
766
1080
  "fields": [],
@@ -847,6 +1161,61 @@
847
1161
  "from": "browsing",
848
1162
  "to": "browsing"
849
1163
  },
1164
+ {
1165
+ "effects": [
1166
+ [
1167
+ "render-ui",
1168
+ "modal",
1169
+ {
1170
+ "children": [
1171
+ {
1172
+ "content": "New category",
1173
+ "type": "typography",
1174
+ "variant": "h3"
1175
+ },
1176
+ {
1177
+ "color": "muted",
1178
+ "content": [
1179
+ "if",
1180
+ [
1181
+ "!=",
1182
+ "@entity.id",
1183
+ ""
1184
+ ],
1185
+ "Created inside the open category.",
1186
+ "Created at the top level."
1187
+ ],
1188
+ "type": "typography",
1189
+ "variant": "caption"
1190
+ },
1191
+ {
1192
+ "type": "divider"
1193
+ },
1194
+ {
1195
+ "cancelEvent": "CANCEL_TAG",
1196
+ "entity": {
1197
+ "parentId": "@entity.id"
1198
+ },
1199
+ "fields": [
1200
+ "name"
1201
+ ],
1202
+ "mode": "create",
1203
+ "submitEvent": "COMMIT_TAG",
1204
+ "type": "form-section"
1205
+ }
1206
+ ],
1207
+ "direction": "vertical",
1208
+ "gap": "md",
1209
+ "type": "stack"
1210
+ }
1211
+ ]
1212
+ ],
1213
+ "event": "NEW_TAG",
1214
+ "eventId": "evt_01M169QR0DYJMCCP7409YMSH6A",
1215
+ "from": "browsing",
1216
+ "guard": "@config.allowEdit",
1217
+ "to": "creating"
1218
+ },
850
1219
  {
851
1220
  "effects": [
852
1221
  [
@@ -864,6 +1233,162 @@
864
1233
  "from": "browsing",
865
1234
  "to": "error"
866
1235
  },
1236
+ {
1237
+ "effects": [
1238
+ [
1239
+ "persist",
1240
+ "create",
1241
+ "Tag",
1242
+ {
1243
+ "name": [
1244
+ "object/get",
1245
+ "@payload.data",
1246
+ "name"
1247
+ ],
1248
+ "parentId": [
1249
+ "str/default",
1250
+ [
1251
+ "object/get",
1252
+ "@payload.data",
1253
+ "parentId"
1254
+ ],
1255
+ ""
1256
+ ]
1257
+ },
1258
+ {
1259
+ "emit": {
1260
+ "failure": "TagCreateFailed",
1261
+ "success": "TagCreated"
1262
+ }
1263
+ }
1264
+ ]
1265
+ ],
1266
+ "event": "COMMIT_TAG",
1267
+ "eventId": "evt_01M169QR0DBSS6H2VC2G50TM37",
1268
+ "from": "creating",
1269
+ "to": "creating"
1270
+ },
1271
+ {
1272
+ "effects": [
1273
+ [
1274
+ "render-ui",
1275
+ "modal",
1276
+ null
1277
+ ],
1278
+ [
1279
+ "render-ui",
1280
+ "main",
1281
+ {
1282
+ "align": "center",
1283
+ "children": [
1284
+ {
1285
+ "type": "spinner"
1286
+ },
1287
+ {
1288
+ "color": "muted",
1289
+ "content": "Loading categories…",
1290
+ "type": "typography",
1291
+ "variant": "caption"
1292
+ }
1293
+ ],
1294
+ "className": "py-12",
1295
+ "direction": "vertical",
1296
+ "gap": "md",
1297
+ "type": "stack"
1298
+ }
1299
+ ],
1300
+ [
1301
+ "emit",
1302
+ "LEVEL_RELOAD",
1303
+ {
1304
+ "tagId": "@entity.id"
1305
+ }
1306
+ ]
1307
+ ],
1308
+ "event": "CANCEL_TAG",
1309
+ "eventId": "evt_01M169QR0DBCS40K2H653NK3BC",
1310
+ "from": "creating",
1311
+ "to": "loading"
1312
+ },
1313
+ {
1314
+ "effects": [
1315
+ [
1316
+ "render-ui",
1317
+ "modal",
1318
+ null
1319
+ ],
1320
+ [
1321
+ "render-ui",
1322
+ "main",
1323
+ {
1324
+ "align": "center",
1325
+ "children": [
1326
+ {
1327
+ "type": "spinner"
1328
+ },
1329
+ {
1330
+ "color": "muted",
1331
+ "content": "Loading categories…",
1332
+ "type": "typography",
1333
+ "variant": "caption"
1334
+ }
1335
+ ],
1336
+ "className": "py-12",
1337
+ "direction": "vertical",
1338
+ "gap": "md",
1339
+ "type": "stack"
1340
+ }
1341
+ ],
1342
+ [
1343
+ "fetch",
1344
+ "Tag",
1345
+ {
1346
+ "emit": {
1347
+ "failure": "TagLoadFailed",
1348
+ "success": "TagLoaded"
1349
+ },
1350
+ "filter": [
1351
+ "=",
1352
+ [
1353
+ "object/get",
1354
+ "@entity",
1355
+ "parentId"
1356
+ ],
1357
+ [
1358
+ "str/default",
1359
+ [
1360
+ "object/get",
1361
+ "@payload.row",
1362
+ "parentId"
1363
+ ],
1364
+ ""
1365
+ ]
1366
+ ]
1367
+ }
1368
+ ]
1369
+ ],
1370
+ "event": "TagCreated",
1371
+ "eventId": "evt_01M169QR0DZVZ04SDSQ1PSM3HR",
1372
+ "from": "creating",
1373
+ "to": "loading"
1374
+ },
1375
+ {
1376
+ "effects": [
1377
+ [
1378
+ "render-ui",
1379
+ "modal",
1380
+ {
1381
+ "message": "@payload.error",
1382
+ "type": "alert",
1383
+ "variant": "error"
1384
+ }
1385
+ ]
1386
+ ],
1387
+ "event": "TagCreateFailed",
1388
+ "eventId": "evt_01M169QR0DC8SC439BREC46BQN",
1389
+ "from": "creating",
1390
+ "to": "creating"
1391
+ },
867
1392
  {
868
1393
  "effects": [
869
1394
  [
@@ -996,6 +1521,19 @@
996
1521
  "type": "typography",
997
1522
  "variant": "h3"
998
1523
  },
1524
+ [
1525
+ "if",
1526
+ "@config.allowEdit",
1527
+ {
1528
+ "action": "NEW_TAG",
1529
+ "icon": "plus",
1530
+ "label": "New category",
1531
+ "size": "sm",
1532
+ "type": "button",
1533
+ "variant": "secondary"
1534
+ },
1535
+ null
1536
+ ],
999
1537
  {
1000
1538
  "entity": "@payload.data",
1001
1539
  "fields": [],
@@ -1244,7 +1244,11 @@
1244
1244
  "label": "Document",
1245
1245
  "look": "@config.statLook",
1246
1246
  "type": "stat-display",
1247
- "value": "@entity.documentId"
1247
+ "value": [
1248
+ "str/default",
1249
+ "@entity.summary",
1250
+ ""
1251
+ ]
1248
1252
  },
1249
1253
  {
1250
1254
  "icon": "layers",
@@ -224,6 +224,13 @@
224
224
  "tier": "presentation",
225
225
  "type": "string"
226
226
  },
227
+ "selfFetch": {
228
+ "default": true,
229
+ "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.",
230
+ "label": "Fetch its own rows on mount?",
231
+ "tier": "internal",
232
+ "type": "boolean"
233
+ },
227
234
  "startField": {
228
235
  "default": "startTime",
229
236
  "description": "Row field holding the start timestamp (ISO or epoch). Defaults to `startTime`.",
@@ -540,6 +547,42 @@
540
547
  "event": "INIT",
541
548
  "eventId": "evt_01KXG04MY9M975Q1NST2R49XDA",
542
549
  "from": "idle",
550
+ "guard": "@config.selfFetch",
551
+ "to": "idle"
552
+ },
553
+ {
554
+ "effects": [
555
+ [
556
+ "render-ui",
557
+ "main",
558
+ {
559
+ "className": "@config.className",
560
+ "colorField": "@config.colorField",
561
+ "dayWindow": "@config.dayWindow",
562
+ "endField": "@config.endField",
563
+ "events": "@entity",
564
+ "longPressEvent": "@config.longPressEvent",
565
+ "longPressPayload": "@config.longPressPayload",
566
+ "onDayClick": "@config.onDayClick",
567
+ "onEventClick": "@config.onEventClick",
568
+ "onSlotClick": "@config.onSlotClick",
569
+ "startField": "@config.startField",
570
+ "swipeLeftEvent": "@config.swipeLeftEvent",
571
+ "swipeRightEvent": "@config.swipeRightEvent",
572
+ "timeSlots": "@config.timeSlots",
573
+ "titleField": "@config.titleField",
574
+ "type": "calendar-grid",
575
+ "weekStart": "@config.weekStart"
576
+ }
577
+ ]
578
+ ],
579
+ "event": "INIT",
580
+ "eventId": "evt_01KXG04MY9M975Q1NST2R49XDA",
581
+ "from": "idle",
582
+ "guard": [
583
+ "not",
584
+ "@config.selfFetch"
585
+ ],
543
586
  "to": "idle"
544
587
  },
545
588
  {