@mgamadeus/ddd-agents 0.1.0-alpha.22 → 0.1.0-alpha.24

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 (164) hide show
  1. package/README.md +3 -2
  2. package/dist/chat.js +87 -893
  3. package/dist/chat.js.map +1 -1
  4. package/dist/chunks/ConversationMessageInputComposerWidgets-BxyaFBA6.js +631 -0
  5. package/dist/chunks/ConversationMessageInputComposerWidgets-BxyaFBA6.js.map +1 -0
  6. package/dist/chunks/{WebSearchResultsConversationWidget-BvnLWHyi.js → WebSearchResultsConversationWidget-as3p5bHw.js} +147 -1125
  7. package/dist/chunks/WebSearchResultsConversationWidget-as3p5bHw.js.map +1 -0
  8. package/dist/chunks/{canvas-behaviours-BRFR1ALE.js → canvas-behaviours-AvzKSYyv.js} +4 -4
  9. package/dist/chunks/{canvas-behaviours-BRFR1ALE.js.map → canvas-behaviours-AvzKSYyv.js.map} +1 -1
  10. package/dist/chunks/canvas-reducers-Bfp_i7lc.js +88 -0
  11. package/dist/chunks/canvas-reducers-Bfp_i7lc.js.map +1 -0
  12. package/dist/chunks/{canvasBodies-9SuF6NAB.js → canvasBodies-Cvu3l38p.js} +12 -6
  13. package/dist/chunks/canvasBodies-Cvu3l38p.js.map +1 -0
  14. package/dist/chunks/canvasStorage-EvQsGdto.js +65 -0
  15. package/dist/chunks/canvasStorage-EvQsGdto.js.map +1 -0
  16. package/dist/chunks/contract-BxmMxYPF.js +96 -0
  17. package/dist/chunks/contract-BxmMxYPF.js.map +1 -0
  18. package/dist/chunks/conversation-BEF0aesf.js +31 -0
  19. package/dist/chunks/conversation-BEF0aesf.js.map +1 -0
  20. package/dist/chunks/entity-detail-name-3A82gDAp.js +15 -0
  21. package/dist/chunks/entity-detail-name-3A82gDAp.js.map +1 -0
  22. package/dist/chunks/icon-names-Di6c4zLo.js +86 -0
  23. package/dist/chunks/icon-names-Di6c4zLo.js.map +1 -0
  24. package/dist/chunks/index-7Qc_3GbG.js +1046 -0
  25. package/dist/chunks/index-7Qc_3GbG.js.map +1 -0
  26. package/dist/chunks/{ConversationMarkdown-W7NHglmL.js → widget-click-signal-sources-DulRkNvZ.js} +54 -7
  27. package/dist/chunks/widget-click-signal-sources-DulRkNvZ.js.map +1 -0
  28. package/dist/chunks/{widget-image-readiness-signal-DeOuL89j.js → widget-image-readiness-signal-D3ci53xr.js} +2 -2
  29. package/dist/chunks/{widget-image-readiness-signal-DeOuL89j.js.map → widget-image-readiness-signal-D3ci53xr.js.map} +1 -1
  30. package/dist/chunks/{widget-name-resolver-DyIY6Zu4.js → widget-name-resolver-BGN3HpoG.js} +80 -117
  31. package/dist/chunks/widget-name-resolver-BGN3HpoG.js.map +1 -0
  32. package/dist/chunks/{withPollingChangeSubscription-BLDAWF-o.js → withPollingChangeSubscription-B16htQGd.js} +2 -2
  33. package/dist/chunks/{withPollingChangeSubscription-BLDAWF-o.js.map → withPollingChangeSubscription-B16htQGd.js.map} +1 -1
  34. package/dist/client-testing.js +91 -2
  35. package/dist/client-testing.js.map +1 -1
  36. package/dist/client.js +1 -1
  37. package/dist/contract.js +8 -27
  38. package/dist/contract.js.map +1 -1
  39. package/dist/files/chat/Conversation.module.scss +268 -0
  40. package/dist/files/chat/ConversationViewBody/ConversationViewBody.module.scss +336 -0
  41. package/dist/files/chat/_conversation-tokens.scss +37 -0
  42. package/dist/files/image-render/WidgetImageRender.module.scss +22 -0
  43. package/dist/files/kit/ComposedViewConversationWidget.md +59 -0
  44. package/dist/files/kit/components/data/data.preview-fixtures.json +3298 -0
  45. package/dist/files/kit/components/embedding/widget.preview-fixtures.json +147 -0
  46. package/dist/files/kit/components/entity/entity-link.preview-fixtures.json +340 -0
  47. package/dist/files/kit/components/form/form.preview-fixtures.json +319 -0
  48. package/dist/files/kit/components/inputs/button.preview-fixtures.json +301 -0
  49. package/dist/files/kit/components/inputs/checkbox.preview-fixtures.json +35 -0
  50. package/dist/files/kit/components/inputs/date-picker.preview-fixtures.json +36 -0
  51. package/dist/files/kit/components/inputs/input.preview-fixtures.json +55 -0
  52. package/dist/files/kit/components/inputs/radio-group.preview-fixtures.json +76 -0
  53. package/dist/files/kit/components/inputs/select.preview-fixtures.json +314 -0
  54. package/dist/files/kit/components/inputs/slider.preview-fixtures.json +178 -0
  55. package/dist/files/kit/components/inputs/tabs.preview-fixtures.json +304 -0
  56. package/dist/files/kit/components/inputs/textarea.preview-fixtures.json +37 -0
  57. package/dist/files/kit/components/layout/layout.preview-fixtures.json +892 -0
  58. package/dist/files/kit/components/map/map.preview-fixtures.json +339 -0
  59. package/dist/files/kit/components/media/image-group.preview-fixtures.json +228 -0
  60. package/dist/files/kit/components/media/image.preview-fixtures.json +61 -0
  61. package/dist/files/kit/components/media/video-card/video-card.preview-fixtures.json +121 -0
  62. package/dist/files/kit/components/media/video.preview-fixtures.json +68 -0
  63. package/dist/files/kit/components/rich/code.preview-fixtures.json +105 -0
  64. package/dist/files/kit/components/rich/diagram.preview-fixtures.json +89 -0
  65. package/dist/files/kit/components/rich/math.preview-fixtures.json +152 -0
  66. package/dist/files/kit/components/rich/svg.preview-fixtures.json +243 -0
  67. package/dist/files/kit/components/text/badge.preview-fixtures.json +44 -0
  68. package/dist/files/kit/components/text/caption.preview-fixtures.json +31 -0
  69. package/dist/files/kit/components/text/favicon.preview-fixtures.json +69 -0
  70. package/dist/files/kit/components/text/label.preview-fixtures.json +48 -0
  71. package/dist/files/kit/components/text/link.preview-fixtures.json +103 -0
  72. package/dist/files/kit/components/text/markdown.preview-fixtures.json +29 -0
  73. package/dist/files/kit/components/text/source-ref.preview-fixtures.json +51 -0
  74. package/dist/files/kit/components/text/text.preview-fixtures.json +106 -0
  75. package/dist/files/kit/components/text/title.preview-fixtures.json +172 -0
  76. package/dist/files/kit/composed-view-widget-contract.json +88 -0
  77. package/dist/files/kit/composed-view.preview-fixtures.json +376 -0
  78. package/dist/files/renderer/conversation-widget-layout.module.scss +47 -0
  79. package/dist/files/renderer/widget-tree/composed-node-schema.json +3428 -0
  80. package/dist/files/styles/_conversation-widget-container.scss +6 -0
  81. package/dist/files/styles/_media.scss +50 -0
  82. package/dist/files/styles/_spacings.scss +23 -0
  83. package/dist/files/styles/_surfaces.scss +28 -0
  84. package/dist/files/widgets/ClockConversationWidget/ClockConversationWidget.md +53 -0
  85. package/dist/files/widgets/ClockConversationWidget/clock.preview-fixtures.json +76 -0
  86. package/dist/files/widgets/ConceptExplainerConversationWidget/ConceptExplainerConversationWidget.md +86 -0
  87. package/dist/files/widgets/ConceptExplainerConversationWidget/concept-explainer.preview-fixtures.json +23 -0
  88. package/dist/files/widgets/ConversationSearchResultsConversationWidget/ConversationSearchResultsConversationWidget.md +59 -0
  89. package/dist/files/widgets/ConversationSearchResultsConversationWidget/conversation-search-results.preview-fixtures.json +85 -0
  90. package/dist/files/widgets/CurrencyConverterConversationWidget/CurrencyConverterConversationWidget.md +51 -0
  91. package/dist/files/widgets/CurrencyConverterConversationWidget/currency-converter.preview-fixtures.json +73 -0
  92. package/dist/files/widgets/CustomVisualizationConversationWidget/CustomVisualizationConversationWidget.md +83 -0
  93. package/dist/files/widgets/CustomVisualizationConversationWidget/custom-visualization.preview-fixtures.json +227 -0
  94. package/dist/files/widgets/CustomVisualizationConversationWidget/sandbox-frame/custom-visualization-frame.html +188 -0
  95. package/dist/files/widgets/EntityMentionConversationWidget/EntityMentionConversationWidget.md +55 -0
  96. package/dist/files/widgets/EntityMentionConversationWidget/entity-mention.preview-fixtures.json +55 -0
  97. package/dist/files/widgets/MultiChoiceConversationWidget/MultiChoiceConversationWidget.md +61 -0
  98. package/dist/files/widgets/MultiChoiceConversationWidget/multi-choice-widget-contract.json +43 -0
  99. package/dist/files/widgets/MultiChoiceConversationWidget/multi-choice.preview-fixtures.json +103 -0
  100. package/dist/files/widgets/QuickRepliesConversationWidget/QuickRepliesConversationWidget.md +65 -0
  101. package/dist/files/widgets/QuickRepliesConversationWidget/quick-replies-widget-contract.json +43 -0
  102. package/dist/files/widgets/QuickRepliesConversationWidget/quick-replies.preview-fixtures.json +45 -0
  103. package/dist/files/widgets/SuggestedActions/SuggestedActions.md +60 -0
  104. package/dist/files/widgets/SuggestedActions/suggested-actions.preview-fixtures.json +19 -0
  105. package/dist/files/widgets/ToolTraceConversationWidget/ToolTraceConversationWidget.md +48 -0
  106. package/dist/files/widgets/ToolTraceConversationWidget/tool-trace.preview-fixtures.json +32 -0
  107. package/dist/files/widgets/WebSearchResultsConversationWidget/WebSearchResultsConversationWidget.md +49 -0
  108. package/dist/files/widgets/WebSearchResultsConversationWidget/web-search-results.preview-fixtures.json +57 -0
  109. package/dist/files/widgets/WritingDraftConversationWidget/WritingDraftConversationWidget.md +66 -0
  110. package/dist/files/widgets/WritingDraftConversationWidget/writing-draft.preview-fixtures.json +129 -0
  111. package/dist/image-render.js +11 -10
  112. package/dist/image-render.js.map +1 -1
  113. package/dist/index.js +32 -27
  114. package/dist/index.js.map +1 -1
  115. package/dist/kit.js +11 -2
  116. package/dist/kit.js.map +1 -1
  117. package/dist/preview.js +47 -18
  118. package/dist/preview.js.map +1 -1
  119. package/dist/provider.js +71 -0
  120. package/dist/provider.js.map +1 -0
  121. package/dist/renderer.js +142 -62
  122. package/dist/renderer.js.map +1 -1
  123. package/dist/styles.css +86 -38
  124. package/dist/types/client/testing/test-conversation-widgets.d.ts +25 -0
  125. package/dist/types/client/testing/widget-hydration-stand-ins.d.ts +42 -0
  126. package/dist/types/entries/chat.d.ts +12 -0
  127. package/dist/types/entries/client-testing.d.ts +4 -0
  128. package/dist/types/entries/contract.d.ts +1 -0
  129. package/dist/types/entries/index.d.ts +4 -3
  130. package/dist/types/entries/kit.d.ts +7 -0
  131. package/dist/types/entries/preview.d.ts +2 -0
  132. package/dist/types/entries/provider.d.ts +1 -0
  133. package/dist/types/entries/renderer.d.ts +19 -1
  134. package/dist/types/entries/widgets.d.ts +13 -0
  135. package/dist/types/kit/components/data/apex-chart-component.d.ts +3 -0
  136. package/dist/types/kit/components/data/chart-model.d.ts +164 -0
  137. package/dist/types/kit/components/data/data-value-format.d.ts +44 -0
  138. package/dist/types/kit/components/data/use-chart-palette.d.ts +9 -0
  139. package/dist/types/kit/components/data/use-number-locale.d.ts +5 -0
  140. package/dist/types/kit/components/map/use-google-maps-auth-failure.d.ts +18 -0
  141. package/dist/types/kit/entity-detail/entity-detail-bodies.d.ts +2 -0
  142. package/dist/types/provider/index.d.ts +1 -0
  143. package/dist/types/renderer/_access/ConversationWidgetGateSkeleton.d.ts +6 -0
  144. package/dist/types/renderer/_agent-space/use-conversation-widget-agent-space-fallback.d.ts +16 -0
  145. package/dist/types/renderer/canvas/entity-detail-instance.d.ts +5 -3
  146. package/dist/types/renderer/canvas/use-anchor-widget-agent-space-key.d.ts +17 -0
  147. package/dist/types/renderer/conversationWidgetRegistry.d.ts +6 -0
  148. package/dist/types/renderer/read-conversation-widget-variant.d.ts +22 -0
  149. package/dist/types/renderer/widget-hydration/use-widget-hydration.d.ts +5 -0
  150. package/dist/types/widgets/EntityMentionConversationWidget/stories/EntityMentionAskFlowStory.d.ts +8 -0
  151. package/dist/types/widgets/_shared/CardFooter.d.ts +6 -0
  152. package/dist/types/widgets/_shared/WidgetLabel.d.ts +8 -0
  153. package/dist/types/widgets/_shared/entity-update-channel.d.ts +17 -0
  154. package/dist/types/widgets/_shared/use-element-visible.d.ts +6 -0
  155. package/dist/widgets.js +120 -27
  156. package/dist/widgets.js.map +1 -1
  157. package/package.json +74 -1
  158. package/public-api.json +779 -0
  159. package/dist/chunks/ConversationMarkdown-W7NHglmL.js.map +0 -1
  160. package/dist/chunks/WebSearchResultsConversationWidget-BvnLWHyi.js.map +0 -1
  161. package/dist/chunks/canvasBodies-9SuF6NAB.js.map +0 -1
  162. package/dist/chunks/decide-canvas-open-Ct-wnNEJ.js +0 -20
  163. package/dist/chunks/decide-canvas-open-Ct-wnNEJ.js.map +0 -1
  164. package/dist/chunks/widget-name-resolver-DyIY6Zu4.js.map +0 -1
@@ -0,0 +1,339 @@
1
+ {
2
+ "wireName": "ComposedView",
3
+ "fixtures": [
4
+ {
5
+ "name": "map-business-pins",
6
+ "description": "Map node — three cafés with rating pins and labels, no carousel; the expand control opens the full-screen map with the list (ChatGPT 07 → 02b).",
7
+ "payload": {
8
+ "title": "Cafés in Münster",
9
+ "view": {
10
+ "type": "Map",
11
+ "title": "Cafés in Münster",
12
+ "points": [
13
+ {
14
+ "label": "KAWENTSMANNs CAFE & TAGESBAR",
15
+ "lat": 51.9632,
16
+ "lng": 7.6268,
17
+ "rating": 4.7,
18
+ "subtitle": "Café",
19
+ "detail": "Closed",
20
+ "detailTone": "negative"
21
+ },
22
+ {
23
+ "label": "roestbar Rothenburg",
24
+ "lat": 51.9594,
25
+ "lng": 7.6262,
26
+ "rating": 4.6,
27
+ "subtitle": "Café",
28
+ "detail": "Closed",
29
+ "detailTone": "negative"
30
+ },
31
+ {
32
+ "label": "1648 CAFÉ | LOUNGE | GASTRONOMIE",
33
+ "lat": 51.9606,
34
+ "lng": 7.629,
35
+ "rating": 3.9,
36
+ "subtitle": "Restaurant",
37
+ "detail": "Closed",
38
+ "detailTone": "negative"
39
+ }
40
+ ],
41
+ "carousel": "hidden",
42
+ "minHeight": 420
43
+ }
44
+ },
45
+ "expectedState": "data",
46
+ "width": 720,
47
+ "interactions": [
48
+ {
49
+ "name": "open-full-screen",
50
+ "click": {
51
+ "selector": "[data-testid=map-expand]"
52
+ }
53
+ }
54
+ ]
55
+ },
56
+ {
57
+ "name": "map-business-location",
58
+ "description": "Map node — five restaurants with photo cards in the bottom carousel; a card click selects the point and opens its entity detail panel (ChatGPT 42, 21, 21b).",
59
+ "payload": {
60
+ "actions": {
61
+ "openRestaurant1": {
62
+ "type": "openEntity",
63
+ "ref": "call_maps_1:business:0",
64
+ "entity": {
65
+ "entityType": "business",
66
+ "entityId": "301",
67
+ "agentSpaceId": 7
68
+ }
69
+ },
70
+ "openRestaurant2": {
71
+ "type": "openEntity",
72
+ "ref": "call_maps_1:business:1",
73
+ "entity": {
74
+ "entityType": "business",
75
+ "entityId": "302",
76
+ "agentSpaceId": 7
77
+ }
78
+ },
79
+ "openRestaurant3": {
80
+ "type": "openEntity",
81
+ "ref": "call_maps_1:business:2",
82
+ "entity": {
83
+ "entityType": "business",
84
+ "entityId": "303",
85
+ "agentSpaceId": 7
86
+ }
87
+ },
88
+ "openRestaurant4": {
89
+ "type": "openEntity",
90
+ "ref": "call_maps_1:business:3",
91
+ "entity": {
92
+ "entityType": "business",
93
+ "entityId": "304",
94
+ "agentSpaceId": 7
95
+ }
96
+ },
97
+ "openRestaurant5": {
98
+ "type": "openEntity",
99
+ "ref": "call_maps_1:business:4",
100
+ "entity": {
101
+ "entityType": "business",
102
+ "entityId": "305",
103
+ "agentSpaceId": 7
104
+ }
105
+ }
106
+ },
107
+ "view": {
108
+ "type": "Map",
109
+ "title": "Restaurants in Münster's old town",
110
+ "points": [
111
+ {
112
+ "label": "Kleiner Kiepenkerl",
113
+ "lat": 51.9631,
114
+ "lng": 7.6264,
115
+ "rating": 4.3,
116
+ "subtitle": "Restaurant",
117
+ "detail": "Closed",
118
+ "image": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+PHJlY3Qgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiBmaWxsPSIjN2EzYjJlIi8+PHJlY3QgeD0iOCIgeT0iMzAiIHdpZHRoPSI0OCIgaGVpZ2h0PSIyNiIgcng9IjQiIGZpbGw9IiNjOWEyN2UiLz48Y2lyY2xlIGN4PSI0NiIgY3k9IjE4IiByPSI4IiBmaWxsPSIjYzlhMjdlIi8+PC9zdmc+",
119
+ "action": "openRestaurant1",
120
+ "detailTone": "negative"
121
+ },
122
+ {
123
+ "label": "Großer Kiepenkerl Gasthaus",
124
+ "lat": 51.9636,
125
+ "lng": 7.6255,
126
+ "rating": 4.2,
127
+ "subtitle": "Restaurant",
128
+ "detail": "Closed",
129
+ "image": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+PHJlY3Qgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiBmaWxsPSIjNWI0NjM2Ii8+PHJlY3QgeD0iOCIgeT0iMzAiIHdpZHRoPSI0OCIgaGVpZ2h0PSIyNiIgcng9IjQiIGZpbGw9IiNkOGMzYTUiLz48Y2lyY2xlIGN4PSI0NiIgY3k9IjE4IiByPSI4IiBmaWxsPSIjZDhjM2E1Ii8+PC9zdmc+",
130
+ "action": "openRestaurant2",
131
+ "detailTone": "negative"
132
+ },
133
+ {
134
+ "label": "Altes Gasthaus Leve",
135
+ "lat": 51.9617,
136
+ "lng": 7.6311,
137
+ "rating": 4.3,
138
+ "subtitle": "Restaurant",
139
+ "detail": "Closed",
140
+ "image": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+PHJlY3Qgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiBmaWxsPSIjM2U0YTNkIi8+PHJlY3QgeD0iOCIgeT0iMzAiIHdpZHRoPSI0OCIgaGVpZ2h0PSIyNiIgcng9IjQiIGZpbGw9IiNiNWEzNmIiLz48Y2lyY2xlIGN4PSI0NiIgY3k9IjE4IiByPSI4IiBmaWxsPSIjYjVhMzZiIi8+PC9zdmc+",
141
+ "action": "openRestaurant3",
142
+ "detailTone": "negative"
143
+ },
144
+ {
145
+ "label": "Gasthaus Stuhlmacher",
146
+ "lat": 51.9619,
147
+ "lng": 7.6283,
148
+ "rating": 4.1,
149
+ "subtitle": "Restaurant",
150
+ "detail": "Closed",
151
+ "image": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+PHJlY3Qgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiBmaWxsPSIjNGEzYjUyIi8+PHJlY3QgeD0iOCIgeT0iMzAiIHdpZHRoPSI0OCIgaGVpZ2h0PSIyNiIgcng9IjQiIGZpbGw9IiNjN2IzZDEiLz48Y2lyY2xlIGN4PSI0NiIgY3k9IjE4IiByPSI4IiBmaWxsPSIjYzdiM2QxIi8+PC9zdmc+",
152
+ "action": "openRestaurant4",
153
+ "detailTone": "negative"
154
+ },
155
+ {
156
+ "label": "Mocca d'or",
157
+ "lat": 51.9603,
158
+ "lng": 7.6266,
159
+ "rating": 3.6,
160
+ "subtitle": "Restaurant",
161
+ "detail": "Closed",
162
+ "image": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+PHJlY3Qgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiBmaWxsPSIjMmYzZDRmIi8+PHJlY3QgeD0iOCIgeT0iMzAiIHdpZHRoPSI0OCIgaGVpZ2h0PSIyNiIgcng9IjQiIGZpbGw9IiM5ZmI0YzciLz48Y2lyY2xlIGN4PSI0NiIgY3k9IjE4IiByPSI4IiBmaWxsPSIjOWZiNGM3Ii8+PC9zdmc+",
163
+ "action": "openRestaurant5",
164
+ "detailTone": "negative"
165
+ }
166
+ ],
167
+ "minHeight": 330
168
+ },
169
+ "title": "Business location map — five restaurants in Münster"
170
+ },
171
+ "expectedState": "data",
172
+ "width": 720,
173
+ "interactions": [
174
+ {
175
+ "name": "select-first-card",
176
+ "click": {
177
+ "selector": "[data-testid=map-point-card]"
178
+ }
179
+ },
180
+ {
181
+ "name": "open-full-screen",
182
+ "click": {
183
+ "selector": "[data-testid=map-expand]"
184
+ }
185
+ }
186
+ ]
187
+ },
188
+ {
189
+ "name": "map-route",
190
+ "description": "Map node — a route Münster → Köln: the travel-mode badge, the road line, numbered stops, the duration chip, the two stop cards and the distance / usual drive time tiles under the map (ChatGPT 40).",
191
+ "payload": {
192
+ "title": "Route Münster → Köln",
193
+ "view": {
194
+ "type": "Stack",
195
+ "gap": "medium",
196
+ "children": [
197
+ {
198
+ "type": "Stack",
199
+ "direction": "row",
200
+ "gap": "small",
201
+ "align": "center",
202
+ "children": [
203
+ {
204
+ "type": "Badge",
205
+ "text": "Car trip"
206
+ },
207
+ {
208
+ "type": "Text",
209
+ "text": "Münster to Köln",
210
+ "tone": "muted"
211
+ }
212
+ ]
213
+ },
214
+ {
215
+ "type": "Map",
216
+ "title": "Münster → Köln",
217
+ "points": [
218
+ {
219
+ "label": "48143 Münster, Nordrhein-Westfalen",
220
+ "lat": 51.9607,
221
+ "lng": 7.6261,
222
+ "subtitle": "Start here"
223
+ },
224
+ {
225
+ "label": "Köln",
226
+ "lat": 50.9375,
227
+ "lng": 6.9603,
228
+ "subtitle": "Car ~1 h 36 min",
229
+ "detail": "Visitor center",
230
+ "image": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+PHJlY3Qgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiBmaWxsPSIjNGI1ZDZiIi8+PHJlY3QgeD0iOCIgeT0iMzAiIHdpZHRoPSI0OCIgaGVpZ2h0PSIyNiIgcng9IjQiIGZpbGw9IiNjNGNjZDMiLz48Y2lyY2xlIGN4PSI0NiIgY3k9IjE4IiByPSI4IiBmaWxsPSIjYzRjY2QzIi8+PC9zdmc+"
231
+ }
232
+ ],
233
+ "route": true,
234
+ "routePath": [
235
+ {
236
+ "lat": 51.9607,
237
+ "lng": 7.6261
238
+ },
239
+ {
240
+ "lat": 51.8336,
241
+ "lng": 7.5838
242
+ },
243
+ {
244
+ "lat": 51.6597,
245
+ "lng": 7.5072
246
+ },
247
+ {
248
+ "lat": 51.5136,
249
+ "lng": 7.4653
250
+ },
251
+ {
252
+ "lat": 51.3946,
253
+ "lng": 7.329
254
+ },
255
+ {
256
+ "lat": 51.2562,
257
+ "lng": 7.1508
258
+ },
259
+ {
260
+ "lat": 51.0936,
261
+ "lng": 7.0305
262
+ },
263
+ {
264
+ "lat": 50.9375,
265
+ "lng": 6.9603
266
+ }
267
+ ],
268
+ "routeLabel": "1.6 hours",
269
+ "minHeight": 350
270
+ },
271
+ {
272
+ "type": "Grid",
273
+ "columns": 2,
274
+ "gap": "small",
275
+ "children": [
276
+ {
277
+ "type": "KpiTile",
278
+ "label": "Route length (ADAC)",
279
+ "value": 152,
280
+ "format": "number",
281
+ "unit": "km",
282
+ "detail": "approx.",
283
+ "source": "adac.de"
284
+ },
285
+ {
286
+ "type": "KpiTile",
287
+ "label": "Usual drive time",
288
+ "value": "1 h 47 min",
289
+ "detail": "without traffic jams",
290
+ "source": "adac.de"
291
+ }
292
+ ]
293
+ }
294
+ ]
295
+ }
296
+ },
297
+ "expectedState": "data",
298
+ "width": 720,
299
+ "interactions": [
300
+ {
301
+ "name": "select-destination",
302
+ "click": {
303
+ "selector": "[data-testid=map-point-card][data-point-key=point-1]"
304
+ }
305
+ }
306
+ ]
307
+ },
308
+ {
309
+ "name": "map-empty",
310
+ "description": "Map node without points — one muted line, the block reports empty.",
311
+ "payload": {
312
+ "view": {
313
+ "type": "Map",
314
+ "points": []
315
+ }
316
+ },
317
+ "expectedState": "empty",
318
+ "width": 528
319
+ },
320
+ {
321
+ "name": "map-loading",
322
+ "description": "Map node whose points wait for a tool result ($from pending) — the frame-shaped skeleton.",
323
+ "payload": {
324
+ "view": {
325
+ "type": "Map",
326
+ "points": {
327
+ "$from": {
328
+ "toolCall": "call_maps_1",
329
+ "path": "$.rows",
330
+ "state": "pending"
331
+ }
332
+ }
333
+ }
334
+ },
335
+ "expectedState": "loading",
336
+ "width": 528
337
+ }
338
+ ]
339
+ }
@@ -0,0 +1,228 @@
1
+ {
2
+ "wireName": "ComposedView",
3
+ "fixtures": [
4
+ {
5
+ "name": "image-group-grid",
6
+ "description": "The Cologne Cathedral gallery of ChatGPT (44): four tiles (two per row at the chat width — the 220px tile floor of the design checklist), the last one counting the hidden pictures; a tile opens the lightbox (Storybook — the preview page mounts no modal root).",
7
+ "payload": {
8
+ "title": "Kölner Dom",
9
+ "view": {
10
+ "type": "ImageGroup",
11
+ "images": [
12
+ {
13
+ "src": "https://thumb.wikimedia.org/wikipedia/commons/thumb/a/a1/K%C3%B6lner_Dom_nachts_2013.jpg/960px-K%C3%B6lner_Dom_nachts_2013.jpg",
14
+ "alt": "Cologne Cathedral lit up at night",
15
+ "title": "Außenfassade bei Nacht",
16
+ "source": {
17
+ "name": "commons.wikimedia.org",
18
+ "url": "https://commons.wikimedia.org"
19
+ }
20
+ },
21
+ {
22
+ "src": "https://thumb.wikimedia.org/wikipedia/commons/thumb/9/9f/Dom_%28Deutzer_Br%C3%BCcke%29.jpg/960px-Dom_%28Deutzer_Br%C3%BCcke%29.jpg",
23
+ "alt": "Cologne Cathedral seen from the Deutz bridge over the Rhine",
24
+ "title": "Blick von der Deutzer Brücke",
25
+ "source": {
26
+ "name": "commons.wikimedia.org",
27
+ "url": "https://commons.wikimedia.org"
28
+ }
29
+ },
30
+ {
31
+ "src": "https://thumb.wikimedia.org/wikipedia/commons/thumb/4/46/K%C3%B6lner_Dom_-_Westfassade-1091.jpg/960px-K%C3%B6lner_Dom_-_Westfassade-1091.jpg",
32
+ "alt": "The west front of Cologne Cathedral with its two spires",
33
+ "title": "Westfassade",
34
+ "source": {
35
+ "name": "commons.wikimedia.org",
36
+ "url": "https://commons.wikimedia.org"
37
+ }
38
+ },
39
+ {
40
+ "src": "https://thumb.wikimedia.org/wikipedia/commons/thumb/7/76/2025-06-10-Dom_Burgmauer-3409.jpg/960px-2025-06-10-Dom_Burgmauer-3409.jpg",
41
+ "alt": "Cologne Cathedral above the old city wall",
42
+ "title": "Dom und Burgmauer",
43
+ "source": {
44
+ "name": "commons.wikimedia.org",
45
+ "url": "https://commons.wikimedia.org"
46
+ }
47
+ },
48
+ {
49
+ "src": "https://thumb.wikimedia.org/wikipedia/commons/thumb/5/5a/M%C3%BCnster%2C_Prinzipalmarkt%2C_Stadtweinhaus_und_Rathaus_--_2023_--_7969-73.jpg/960px-M%C3%BCnster%2C_Prinzipalmarkt%2C_Stadtweinhaus_und_Rathaus_--_2023_--_7969-73.jpg",
50
+ "alt": "The Historic Town Hall on the Prinzipalmarkt in Münster",
51
+ "title": "Historisches Rathaus",
52
+ "source": {
53
+ "name": "commons.wikimedia.org",
54
+ "url": "https://commons.wikimedia.org"
55
+ }
56
+ },
57
+ {
58
+ "src": "https://thumb.wikimedia.org/wikipedia/commons/thumb/9/91/M%C3%BCnster%2C_Prinzipalmarkt%2C_Arkaden_--_2021_--_8931-3.jpg/960px-M%C3%BCnster%2C_Prinzipalmarkt%2C_Arkaden_--_2021_--_8931-3.jpg",
59
+ "alt": "The arcades of the Prinzipalmarkt in Münster",
60
+ "title": "Arkaden am Prinzipalmarkt",
61
+ "source": {
62
+ "name": "commons.wikimedia.org",
63
+ "url": "https://commons.wikimedia.org"
64
+ }
65
+ },
66
+ {
67
+ "src": "https://thumb.wikimedia.org/wikipedia/commons/thumb/a/a2/M%C3%BCnster%2C_Prinzipalmarkt%2C_Historisches_Rathaus%2C_Giebel_--_2021_--_9481.jpg/960px-M%C3%BCnster%2C_Prinzipalmarkt%2C_Historisches_Rathaus%2C_Giebel_--_2021_--_9481.jpg",
68
+ "alt": "The gable of the Historic Town Hall in Münster",
69
+ "title": "Rathausgiebel",
70
+ "source": {
71
+ "name": "commons.wikimedia.org",
72
+ "url": "https://commons.wikimedia.org"
73
+ }
74
+ }
75
+ ],
76
+ "layout": "grid",
77
+ "maxVisible": 4,
78
+ "aspectRatio": "4:3"
79
+ }
80
+ },
81
+ "expectedState": "data",
82
+ "width": 528,
83
+ "interactions": [
84
+ { "name": "open the lightbox", "click": { "selector": "button[aria-label^=\"Open the picture\"]" } }
85
+ ]
86
+ },
87
+ {
88
+ "name": "image-group-carousel",
89
+ "description": "The photo carousel of ChatGPT (09): one large picture with its text, previous / next and the position.",
90
+ "payload": {
91
+ "title": "Fotogalerien und Bilder-Karussells",
92
+ "view": {
93
+ "type": "ImageGroup",
94
+ "layout": "carousel",
95
+ "images": [
96
+ {
97
+ "src": "https://thumb.wikimedia.org/wikipedia/commons/thumb/5/5a/M%C3%BCnster%2C_Prinzipalmarkt%2C_Stadtweinhaus_und_Rathaus_--_2023_--_7969-73.jpg/960px-M%C3%BCnster%2C_Prinzipalmarkt%2C_Stadtweinhaus_und_Rathaus_--_2023_--_7969-73.jpg",
98
+ "alt": "The Historic Town Hall and the Stadtweinhaus on the Prinzipalmarkt in Münster",
99
+ "title": "Historisches Rathaus",
100
+ "caption": "Gotische Architektur am Prinzipalmarkt",
101
+ "source": {
102
+ "name": "commons.wikimedia.org",
103
+ "url": "https://commons.wikimedia.org"
104
+ }
105
+ },
106
+ {
107
+ "src": "https://thumb.wikimedia.org/wikipedia/commons/thumb/9/91/M%C3%BCnster%2C_Prinzipalmarkt%2C_Arkaden_--_2021_--_8931-3.jpg/960px-M%C3%BCnster%2C_Prinzipalmarkt%2C_Arkaden_--_2021_--_8931-3.jpg",
108
+ "alt": "The arcades of the Prinzipalmarkt in Münster",
109
+ "title": "Arkaden am Prinzipalmarkt",
110
+ "caption": "Die Bogengänge der Kaufmannshäuser",
111
+ "source": {
112
+ "name": "commons.wikimedia.org",
113
+ "url": "https://commons.wikimedia.org"
114
+ }
115
+ },
116
+ {
117
+ "src": "https://thumb.wikimedia.org/wikipedia/commons/thumb/a/a2/M%C3%BCnster%2C_Prinzipalmarkt%2C_Historisches_Rathaus%2C_Giebel_--_2021_--_9481.jpg/960px-M%C3%BCnster%2C_Prinzipalmarkt%2C_Historisches_Rathaus%2C_Giebel_--_2021_--_9481.jpg",
118
+ "alt": "The gable of the Historic Town Hall in Münster",
119
+ "title": "Rathausgiebel",
120
+ "caption": "Der Schaugiebel von 1395",
121
+ "source": {
122
+ "name": "commons.wikimedia.org",
123
+ "url": "https://commons.wikimedia.org"
124
+ }
125
+ }
126
+ ]
127
+ }
128
+ },
129
+ "expectedState": "data",
130
+ "width": 528,
131
+ "interactions": [
132
+ {
133
+ "name": "next picture",
134
+ "click": {
135
+ "selector": "button[aria-label=\"Next picture\"]"
136
+ }
137
+ },
138
+ {
139
+ "name": "next picture again",
140
+ "click": {
141
+ "selector": "button[aria-label=\"Next picture\"]"
142
+ }
143
+ },
144
+ {
145
+ "name": "previous picture",
146
+ "click": {
147
+ "selector": "button[aria-label=\"Previous picture\"]"
148
+ }
149
+ }
150
+ ]
151
+ },
152
+ {
153
+ "name": "image-group-magazine",
154
+ "description": "The NASA magazine layout of ChatGPT (15): one hero over two tiles, each with title, caption and source chip.",
155
+ "payload": {
156
+ "title": "NASA-Fotogalerie im Magazin-Layout",
157
+ "view": {
158
+ "type": "ImageGroup",
159
+ "layout": "magazine",
160
+ "images": [
161
+ {
162
+ "src": "https://thumb.wikimedia.org/wikipedia/commons/thumb/4/44/NASA%E2%80%99s_Webb_Reveals_Cosmic_Cliffs%2C_Glittering_Landscape_of_Star_Birth.jpg/960px-NASA%E2%80%99s_Webb_Reveals_Cosmic_Cliffs%2C_Glittering_Landscape_of_Star_Birth.jpg",
163
+ "alt": "The Cosmic Cliffs in the Carina Nebula, imaged by the James Webb Space Telescope",
164
+ "title": "Cosmic Cliffs – Carinanebel",
165
+ "caption": "Sternentstehungsregion in ungefähr 7.600 Lichtjahren Entfernung.",
166
+ "source": {
167
+ "name": "NASA Science",
168
+ "url": "https://science.nasa.gov"
169
+ }
170
+ },
171
+ {
172
+ "src": "https://thumb.wikimedia.org/wikipedia/commons/thumb/f/f1/Pillars_of_Creation_%28NIRCam_Image%29.jpg/960px-Pillars_of_Creation_%28NIRCam_Image%29.jpg",
173
+ "alt": "The Pillars of Creation in the Eagle Nebula, NIRCam image",
174
+ "title": "Pillars of Creation",
175
+ "caption": "Adlernebel · ESA/Webb",
176
+ "source": {
177
+ "name": "commons.wikimedia.org",
178
+ "url": "https://commons.wikimedia.org"
179
+ }
180
+ },
181
+ {
182
+ "src": "https://thumb.wikimedia.org/wikipedia/commons/thumb/2/29/Southern_Ring_Nebula_%28NIRCam_Image%29.png/960px-Southern_Ring_Nebula_%28NIRCam_Image%29.png",
183
+ "alt": "The Southern Ring planetary nebula, NIRCam image",
184
+ "title": "Southern Ring",
185
+ "caption": "Planetarischer Nebel · NASA",
186
+ "source": {
187
+ "name": "commons.wikimedia.org",
188
+ "url": "https://commons.wikimedia.org"
189
+ }
190
+ }
191
+ ]
192
+ }
193
+ },
194
+ "expectedState": "data",
195
+ "width": 528
196
+ },
197
+ {
198
+ "name": "image-group-loading",
199
+ "description": "The pictures are bound to a pending tool result: skeleton tiles in the tiles' shape.",
200
+ "payload": {
201
+ "view": {
202
+ "type": "ImageGroup",
203
+ "images": {
204
+ "$from": {
205
+ "toolCall": "call_preview_1",
206
+ "path": "$.images[*]",
207
+ "state": "pending"
208
+ }
209
+ }
210
+ }
211
+ },
212
+ "expectedState": "loading",
213
+ "width": 528
214
+ },
215
+ {
216
+ "name": "image-group-empty",
217
+ "description": "A gallery without pictures: one muted line, reported empty NO_DATA.",
218
+ "payload": {
219
+ "view": {
220
+ "type": "ImageGroup",
221
+ "images": []
222
+ }
223
+ },
224
+ "expectedState": "empty",
225
+ "width": 528
226
+ }
227
+ ]
228
+ }
@@ -0,0 +1,61 @@
1
+ {
2
+ "wireName": "ComposedView",
3
+ "fixtures": [
4
+ {
5
+ "name": "image-photo",
6
+ "description": "One real photo with title, caption and source chip — the hero of the ChatGPT photo gallery (09).",
7
+ "payload": {
8
+ "title": "Fotos aus Münster",
9
+ "view": {
10
+ "type": "Image",
11
+ "src": "https://thumb.wikimedia.org/wikipedia/commons/thumb/5/5a/M%C3%BCnster%2C_Prinzipalmarkt%2C_Stadtweinhaus_und_Rathaus_--_2023_--_7969-73.jpg/960px-M%C3%BCnster%2C_Prinzipalmarkt%2C_Stadtweinhaus_und_Rathaus_--_2023_--_7969-73.jpg",
12
+ "alt": "The Historic Town Hall and the Stadtweinhaus on the Prinzipalmarkt in Münster",
13
+ "title": "Historisches Rathaus",
14
+ "caption": "Gotische Architektur am Prinzipalmarkt",
15
+ "source": {
16
+ "name": "commons.wikimedia.org",
17
+ "url": "https://commons.wikimedia.org"
18
+ },
19
+ "aspectRatio": "4:3"
20
+ }
21
+ },
22
+ "expectedState": "data",
23
+ "width": 528
24
+ },
25
+ {
26
+ "name": "image-loading",
27
+ "description": "The picture is bound to a tool result that is still pending: the frame as a skeleton.",
28
+ "payload": {
29
+ "view": {
30
+ "type": "Image",
31
+ "src": {
32
+ "$from": {
33
+ "toolCall": "call_preview_1",
34
+ "path": "$.image.url",
35
+ "state": "pending"
36
+ }
37
+ },
38
+ "alt": "A pending photo"
39
+ }
40
+ },
41
+ "expectedState": "loading",
42
+ "width": 528
43
+ },
44
+ {
45
+ "name": "image-broken",
46
+ "description": "The picture does not load: the frame shows the alt text and the node reports failed RENDER_FAILED.",
47
+ "payload": {
48
+ "view": {
49
+ "type": "Image",
50
+ "src": "https://upload.wikimedia.org/wikipedia/commons/0/00/This_file_does_not_exist.jpg",
51
+ "alt": "The Historic Town Hall on the Prinzipalmarkt in Münster",
52
+ "title": "Historisches Rathaus",
53
+ "caption": "Gotische Architektur am Prinzipalmarkt"
54
+ }
55
+ },
56
+ "expectedState": "error",
57
+ "expectedFailedRequests": ["This_file_does_not_exist.jpg"],
58
+ "width": 528
59
+ }
60
+ ]
61
+ }