@mevdragon/vidfarm-devcli 0.2.11 → 0.2.13

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 (199) hide show
  1. package/.env.example +37 -1
  2. package/README.md +27 -183
  3. package/SKILL.director.md +293 -0
  4. package/SKILL.platform.md +312 -0
  5. package/auto-create-hyperframe-templates/AUTO_CREATE_HYPERFRAME_TEMPLATES.md +275 -0
  6. package/auto-create-hyperframe-templates/extractor-system-prompt.md +128 -0
  7. package/auto-create-hyperframe-templates/input-manifest.schema.json +56 -0
  8. package/auto-create-hyperframe-templates/lambda-memory-estimator.md +118 -0
  9. package/auto-create-hyperframe-templates/production-graph.schema.json +314 -0
  10. package/auto-create-hyperframe-templates/runbook.md +198 -0
  11. package/auto-create-hyperframe-templates/scripts/create-hyperframe-template.mjs +368 -0
  12. package/auto-create-hyperframe-templates/template-plan.schema.json +311 -0
  13. package/auto-create-hyperframe-templates/template-planner-prompt.md +144 -0
  14. package/auto-create-templates/AUTO_CREATE_TEMPLATES.md +124 -0
  15. package/auto-create-templates/extractor-system-prompt.md +8 -2
  16. package/auto-create-templates/template-plan.schema.json +73 -2
  17. package/auto-create-templates/template-planner-prompt.md +63 -1
  18. package/dist/src/account-pages-legacy.js +361 -89
  19. package/dist/src/account-pages-legacy.js.map +1 -0
  20. package/dist/src/account-pages.js +13 -3
  21. package/dist/src/account-pages.js.map +1 -0
  22. package/dist/src/app.js +7060 -946
  23. package/dist/src/app.js.map +1 -0
  24. package/dist/src/cli.js +111 -29
  25. package/dist/src/cli.js.map +1 -0
  26. package/dist/src/composition-runtime.js +581 -0
  27. package/dist/src/composition-runtime.js.map +1 -0
  28. package/dist/src/config.js +69 -11
  29. package/dist/src/config.js.map +1 -0
  30. package/dist/src/context.js +280 -21
  31. package/dist/src/context.js.map +1 -0
  32. package/dist/src/dev-app-legacy.js +18 -17
  33. package/dist/src/dev-app-legacy.js.map +1 -0
  34. package/dist/src/dev-app.js +1 -0
  35. package/dist/src/dev-app.js.map +1 -0
  36. package/dist/src/domain.js +2 -1
  37. package/dist/src/domain.js.map +1 -0
  38. package/dist/src/editor-chat-history.js +10 -0
  39. package/dist/src/editor-chat-history.js.map +1 -0
  40. package/dist/src/editor-chat.js +133 -24
  41. package/dist/src/editor-chat.js.map +1 -0
  42. package/dist/src/frontend/flockposter-cache-store.js +10 -2
  43. package/dist/src/frontend/flockposter-cache-store.js.map +1 -0
  44. package/dist/src/frontend/homepage-client.js +6 -3
  45. package/dist/src/frontend/homepage-client.js.map +1 -0
  46. package/dist/src/frontend/homepage-shared.js +1 -0
  47. package/dist/src/frontend/homepage-shared.js.map +1 -0
  48. package/dist/src/frontend/homepage-store.js +1 -0
  49. package/dist/src/frontend/homepage-store.js.map +1 -0
  50. package/dist/src/frontend/homepage-view.js +131 -18
  51. package/dist/src/frontend/homepage-view.js.map +1 -0
  52. package/dist/src/frontend/page-runtime-client.js +5 -2
  53. package/dist/src/frontend/page-runtime-client.js.map +1 -0
  54. package/dist/src/frontend/page-runtime-store.js +1 -0
  55. package/dist/src/frontend/page-runtime-store.js.map +1 -0
  56. package/dist/src/frontend/sentry.js +42 -0
  57. package/dist/src/frontend/sentry.js.map +1 -0
  58. package/dist/src/frontend/template-editor-chat.js +1719 -213
  59. package/dist/src/frontend/template-editor-chat.js.map +1 -0
  60. package/dist/src/help-page.js +333 -0
  61. package/dist/src/help-page.js.map +1 -0
  62. package/dist/src/homepage.js +169 -47
  63. package/dist/src/homepage.js.map +1 -0
  64. package/dist/src/hyperframes/composition.js +180 -0
  65. package/dist/src/hyperframes/composition.js.map +1 -0
  66. package/dist/src/index.js +1 -0
  67. package/dist/src/index.js.map +1 -0
  68. package/dist/src/instrument.js +30 -0
  69. package/dist/src/instrument.js.map +1 -0
  70. package/dist/src/lib/crypto.js +1 -0
  71. package/dist/src/lib/crypto.js.map +1 -0
  72. package/dist/src/lib/dev-log.js +54 -0
  73. package/dist/src/lib/dev-log.js.map +1 -0
  74. package/dist/src/lib/display-name.js +11 -0
  75. package/dist/src/lib/display-name.js.map +1 -0
  76. package/dist/src/lib/ids.js +21 -1
  77. package/dist/src/lib/ids.js.map +1 -0
  78. package/dist/src/lib/images.js +1 -0
  79. package/dist/src/lib/images.js.map +1 -0
  80. package/dist/src/lib/json.js +1 -0
  81. package/dist/src/lib/json.js.map +1 -0
  82. package/dist/src/lib/template-dna.js +1 -0
  83. package/dist/src/lib/template-dna.js.map +1 -0
  84. package/dist/src/lib/template-paths.js +1 -0
  85. package/dist/src/lib/template-paths.js.map +1 -0
  86. package/dist/src/lib/template-style-options.js +40 -2
  87. package/dist/src/lib/template-style-options.js.map +1 -0
  88. package/dist/src/lib/time.js +1 -0
  89. package/dist/src/lib/time.js.map +1 -0
  90. package/dist/src/lib/video-quality-harness.js +60 -0
  91. package/dist/src/lib/video-quality-harness.js.map +1 -0
  92. package/dist/src/page-runtime.js +1 -0
  93. package/dist/src/page-runtime.js.map +1 -0
  94. package/dist/src/page-shell.js +1501 -49
  95. package/dist/src/page-shell.js.map +1 -0
  96. package/dist/src/primitive-context.js +144 -8
  97. package/dist/src/primitive-context.js.map +1 -0
  98. package/dist/src/primitive-registry.js +1919 -78
  99. package/dist/src/primitive-registry.js.map +1 -0
  100. package/dist/src/primitive-sdk.js +1 -0
  101. package/dist/src/primitive-sdk.js.map +1 -0
  102. package/dist/src/primitives/remotion/html-image.js +3 -1
  103. package/dist/src/primitives/remotion/html-image.js.map +1 -0
  104. package/dist/src/primitives/remotion/media-slideshow.js +60 -0
  105. package/dist/src/primitives/remotion/media-slideshow.js.map +1 -0
  106. package/dist/src/react-page-shell.js +1 -0
  107. package/dist/src/react-page-shell.js.map +1 -0
  108. package/dist/src/ready-post-schedule-component.js +1 -0
  109. package/dist/src/ready-post-schedule-component.js.map +1 -0
  110. package/dist/src/registry.js +237 -24
  111. package/dist/src/registry.js.map +1 -0
  112. package/dist/src/runtime.js +3 -0
  113. package/dist/src/runtime.js.map +1 -0
  114. package/dist/src/services/api-call-history.js +4 -0
  115. package/dist/src/services/api-call-history.js.map +1 -0
  116. package/dist/src/services/auth.js +40 -50
  117. package/dist/src/services/auth.js.map +1 -0
  118. package/dist/src/services/billing.js +20 -44
  119. package/dist/src/services/billing.js.map +1 -0
  120. package/dist/src/services/chat-threads.js +10 -6
  121. package/dist/src/services/chat-threads.js.map +1 -0
  122. package/dist/src/services/fork-access.js +94 -0
  123. package/dist/src/services/fork-access.js.map +1 -0
  124. package/dist/src/services/ghostcut.js +132 -0
  125. package/dist/src/services/ghostcut.js.map +1 -0
  126. package/dist/src/services/hyperframes.js +1014 -0
  127. package/dist/src/services/hyperframes.js.map +1 -0
  128. package/dist/src/services/job-capacity.js +14 -0
  129. package/dist/src/services/job-capacity.js.map +1 -0
  130. package/dist/src/services/job-logs.js +4 -0
  131. package/dist/src/services/job-logs.js.map +1 -0
  132. package/dist/src/services/jobs.js +99 -91
  133. package/dist/src/services/jobs.js.map +1 -0
  134. package/dist/src/services/media-processing.js +743 -0
  135. package/dist/src/services/media-processing.js.map +1 -0
  136. package/dist/src/services/primitive-media-lambda.js +280 -0
  137. package/dist/src/services/primitive-media-lambda.js.map +1 -0
  138. package/dist/src/services/providers.js +1560 -178
  139. package/dist/src/services/providers.js.map +1 -0
  140. package/dist/src/services/rate-limits.js +3 -2
  141. package/dist/src/services/rate-limits.js.map +1 -0
  142. package/dist/src/services/remotion.js +495 -92
  143. package/dist/src/services/remotion.js.map +1 -0
  144. package/dist/src/services/serverless-auth.js +374 -0
  145. package/dist/src/services/serverless-auth.js.map +1 -0
  146. package/dist/src/services/serverless-jobs.js +1074 -0
  147. package/dist/src/services/serverless-jobs.js.map +1 -0
  148. package/dist/src/services/serverless-provider-keys.js +401 -0
  149. package/dist/src/services/serverless-provider-keys.js.map +1 -0
  150. package/dist/src/services/serverless-records.js +1086 -0
  151. package/dist/src/services/serverless-records.js.map +1 -0
  152. package/dist/src/services/serverless-template-configs.js +67 -0
  153. package/dist/src/services/serverless-template-configs.js.map +1 -0
  154. package/dist/src/services/storage.js +170 -35
  155. package/dist/src/services/storage.js.map +1 -0
  156. package/dist/src/services/template-certification.js +295 -3
  157. package/dist/src/services/template-certification.js.map +1 -0
  158. package/dist/src/services/template-loader.js +45 -1
  159. package/dist/src/services/template-loader.js.map +1 -0
  160. package/dist/src/services/template-runtime-bundles.js +217 -0
  161. package/dist/src/services/template-runtime-bundles.js.map +1 -0
  162. package/dist/src/services/template-sources.js +452 -87
  163. package/dist/src/services/template-sources.js.map +1 -0
  164. package/dist/src/services/video-normalization.js +2 -0
  165. package/dist/src/services/video-normalization.js.map +1 -0
  166. package/dist/src/services/webhooks.js +7 -6
  167. package/dist/src/services/webhooks.js.map +1 -0
  168. package/dist/src/template-editor-pages.js +5637 -1322
  169. package/dist/src/template-editor-pages.js.map +1 -0
  170. package/dist/src/template-editor-shell.js +1376 -170
  171. package/dist/src/template-editor-shell.js.map +1 -0
  172. package/dist/src/template-sdk.js +1 -0
  173. package/dist/src/template-sdk.js.map +1 -0
  174. package/dist/src/worker.js +11 -226
  175. package/dist/src/worker.js.map +1 -0
  176. package/package.json +47 -12
  177. package/public/assets/homepage-client-app.js +34 -8
  178. package/public/assets/page-runtime-client-app.js +44 -18
  179. package/readme.secret.md +89 -0
  180. package/templates/vidfarm_template_0000/README.md +106 -0
  181. package/templates/vidfarm_template_0000/SKILL.md +266 -0
  182. package/templates/vidfarm_template_0000/assets/Abel-Regular.ttf +0 -0
  183. package/templates/vidfarm_template_0000/assets/DMSerifDisplay-Regular.ttf +0 -0
  184. package/templates/vidfarm_template_0000/assets/Montserrat[wght].ttf +0 -0
  185. package/templates/vidfarm_template_0000/assets/SourceCodePro[wght].ttf +0 -0
  186. package/templates/vidfarm_template_0000/assets/TikTokSans-SemiBold.ttf +0 -0
  187. package/templates/vidfarm_template_0000/assets/Yesteryear-Regular.ttf +0 -0
  188. package/templates/vidfarm_template_0000/composition.json +11 -0
  189. package/templates/vidfarm_template_0000/src/lib/images.js +221 -0
  190. package/templates/vidfarm_template_0000/src/remotion/Root.js +33 -0
  191. package/templates/vidfarm_template_0000/src/remotion/index.js +3 -0
  192. package/templates/vidfarm_template_0000/src/sdk.js +3 -0
  193. package/templates/vidfarm_template_0000/src/style-options.js +200 -0
  194. package/templates/vidfarm_template_0000/src/template-dna.js +9 -0
  195. package/templates/vidfarm_template_0000/src/template.js +1566 -0
  196. package/templates/vidfarm_template_0000/template.config.json +21 -0
  197. package/GETTING_STARTED.developers.md +0 -87
  198. package/SKILL.developer.md +0 -1177
  199. package/dist/src/db.js +0 -2007
@@ -1,9 +1,9 @@
1
- import { escapeAttribute, escapeHtml } from "./page-shell.js";
1
+ import { escapeAttribute, escapeHtml, resolveAccountDisplayName } from "./page-shell.js";
2
2
  export const TEMPLATE_EDITOR_SHELL_STYLES = `
3
3
  .editor-workbench {
4
4
  min-height: 100%;
5
5
  height: 100%;
6
- padding: 96px 432px 28px 0;
6
+ padding: 96px 0 28px 432px;
7
7
  overflow: hidden;
8
8
  min-width: 0;
9
9
  box-sizing: border-box;
@@ -15,14 +15,14 @@ export const TEMPLATE_EDITOR_SHELL_STYLES = `
15
15
  overflow-x: hidden;
16
16
  overflow-y: auto;
17
17
  overflow: auto;
18
- padding-right: 10px;
18
+ padding-left: 10px;
19
19
  }
20
20
 
21
21
  .editor-floating-nav {
22
22
  position: fixed;
23
23
  top: 20px;
24
- left: 20px;
25
- right: 452px;
24
+ left: 452px;
25
+ right: 20px;
26
26
  z-index: 60;
27
27
  display: flex;
28
28
  flex-wrap: wrap;
@@ -55,18 +55,40 @@ export const TEMPLATE_EDITOR_SHELL_STYLES = `
55
55
 
56
56
  .editor-nav-title {
57
57
  min-width: 0;
58
+ flex: 1 1 auto;
58
59
  margin: 0 4px 0 2px;
59
60
  font-family: "Instrument Serif", serif;
60
61
  font-size: 1.4rem;
61
62
  line-height: 0.95;
62
63
  letter-spacing: -0.04em;
63
64
  color: #1f2635;
65
+ overflow: hidden;
66
+ text-overflow: ellipsis;
67
+ white-space: nowrap;
68
+ }
69
+
70
+ .editor-nav-account {
71
+ min-width: 0;
72
+ max-width: min(42vw, 460px);
73
+ margin-left: auto;
74
+ color: rgba(116, 130, 156, 0.78);
75
+ font-size: 0.94rem;
76
+ line-height: 1.2;
77
+ font-weight: 500;
78
+ letter-spacing: -0.01em;
79
+ overflow: hidden;
80
+ text-overflow: ellipsis;
81
+ white-space: nowrap;
82
+ }
83
+
84
+ .editor-nav-account span {
85
+ color: rgba(116, 130, 156, 0.62);
64
86
  }
65
87
 
66
88
  .editor-right-rail {
67
89
  position: fixed;
68
90
  top: 0;
69
- right: 0;
91
+ left: 0;
70
92
  bottom: 0;
71
93
  z-index: 30;
72
94
  width: 432px;
@@ -78,7 +100,7 @@ export const TEMPLATE_EDITOR_SHELL_STYLES = `
78
100
  min-width: 0;
79
101
  display: flex;
80
102
  overflow: hidden;
81
- border-left: 1px solid rgba(255, 255, 255, 0.84);
103
+ border-right: 1px solid rgba(255, 255, 255, 0.84);
82
104
  background: rgba(255, 252, 247, 0.92);
83
105
  }
84
106
 
@@ -96,6 +118,184 @@ export const TEMPLATE_EDITOR_SHELL_STYLES = `
96
118
  width: 100%;
97
119
  }
98
120
 
121
+ .vf-editor-chat-body {
122
+ flex: 1 1 auto;
123
+ display: flex;
124
+ min-height: 0;
125
+ min-width: 0;
126
+ width: 100%;
127
+ }
128
+
129
+ .vf-editor-chat-shell[data-layout="brainstorm"] {
130
+ height: 100%;
131
+ min-height: 0;
132
+ }
133
+
134
+ .vf-editor-chat-brainstorm-layout {
135
+ position: relative;
136
+ flex: 1 1 auto;
137
+ display: grid;
138
+ grid-template-columns: 284px minmax(0, 1fr);
139
+ min-height: 0;
140
+ height: 100%;
141
+ width: 100%;
142
+ }
143
+
144
+ .vf-editor-chat-history-pane {
145
+ display: grid;
146
+ grid-template-rows: auto auto auto minmax(0, 1fr);
147
+ gap: 10px;
148
+ min-height: 0;
149
+ padding: 14px 12px 12px;
150
+ border-right: 1px solid rgba(191, 164, 109, 0.14);
151
+ background:
152
+ radial-gradient(circle at top left, rgba(219, 193, 122, 0.14), transparent 34%),
153
+ linear-gradient(180deg, rgba(255, 251, 244, 0.96), rgba(250, 246, 238, 0.94));
154
+ }
155
+
156
+ .vf-editor-chat-history-header {
157
+ display: flex;
158
+ align-items: center;
159
+ justify-content: space-between;
160
+ gap: 10px;
161
+ }
162
+
163
+ .vf-editor-chat-history-header-main {
164
+ display: flex;
165
+ align-items: center;
166
+ gap: 10px;
167
+ min-width: 0;
168
+ }
169
+
170
+ .vf-editor-chat-history-kicker {
171
+ color: #8d99ae;
172
+ font-size: 0.72rem;
173
+ font-weight: 800;
174
+ letter-spacing: 0.18em;
175
+ text-transform: uppercase;
176
+ }
177
+
178
+ .vf-editor-chat-new-thread-sidebar {
179
+ justify-self: start;
180
+ min-height: 34px;
181
+ padding: 0 12px;
182
+ border-radius: 999px;
183
+ }
184
+
185
+ .vf-editor-chat-history-close,
186
+ .vf-editor-chat-history-toggle,
187
+ .vf-editor-chat-back-button {
188
+ all: unset;
189
+ display: inline-flex;
190
+ align-items: center;
191
+ justify-content: center;
192
+ min-height: 34px;
193
+ padding: 0 12px;
194
+ border: 1px solid rgba(191, 164, 109, 0.28);
195
+ border-radius: 999px;
196
+ background: rgba(255, 255, 255, 0.88);
197
+ color: #243041;
198
+ font-size: 0.8rem;
199
+ font-weight: 800;
200
+ line-height: 1;
201
+ white-space: nowrap;
202
+ }
203
+
204
+ .vf-editor-chat-history-close {
205
+ display: none;
206
+ width: 34px;
207
+ min-width: 34px;
208
+ padding: 0;
209
+ font-size: 1rem;
210
+ }
211
+
212
+ .vf-editor-chat-history-toggle {
213
+ display: none;
214
+ }
215
+
216
+ .vf-editor-chat-thread-list-sidebar {
217
+ display: flex;
218
+ flex-direction: column;
219
+ align-items: stretch;
220
+ gap: 8px;
221
+ margin-top: 4px;
222
+ min-height: 0;
223
+ overflow-y: auto;
224
+ overflow-x: hidden;
225
+ padding: 2px 2px 6px 0;
226
+ }
227
+
228
+ .vf-editor-chat-thread-list-sidebar::-webkit-scrollbar {
229
+ width: 6px;
230
+ }
231
+
232
+ .vf-editor-chat-thread-list-sidebar::-webkit-scrollbar-thumb {
233
+ border-radius: 999px;
234
+ background: rgba(191, 164, 109, 0.42);
235
+ }
236
+
237
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-thread-chip {
238
+ display: flex;
239
+ width: 100%;
240
+ max-width: none;
241
+ min-width: 0;
242
+ padding: 6px 6px 6px 8px;
243
+ border-radius: 14px;
244
+ background: rgba(255, 255, 255, 0.78);
245
+ }
246
+
247
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-thread-chip-main {
248
+ display: block;
249
+ flex: 1 1 auto;
250
+ width: 100%;
251
+ max-width: none;
252
+ padding: 1px 0;
253
+ }
254
+
255
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-thread-chip-title {
256
+ font-size: 0.8rem;
257
+ }
258
+
259
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-thread-chip-tracers {
260
+ font-size: 0.64rem;
261
+ }
262
+
263
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-thread {
264
+ border-left: 0;
265
+ display: grid;
266
+ grid-template-rows: auto minmax(0, 1fr) auto;
267
+ }
268
+
269
+ .vf-editor-chat-brainstorm-topbar {
270
+ display: flex;
271
+ align-items: center;
272
+ justify-content: space-between;
273
+ gap: 12px;
274
+ }
275
+
276
+ .vf-editor-chat-brainstorm-topbar-left {
277
+ display: flex;
278
+ align-items: center;
279
+ gap: 10px;
280
+ min-width: 0;
281
+ }
282
+
283
+ .vf-editor-chat-brainstorm-title {
284
+ color: #1f2635;
285
+ font-family: "Instrument Serif", serif;
286
+ font-size: 1.8rem;
287
+ line-height: 0.96;
288
+ letter-spacing: -0.05em;
289
+ }
290
+
291
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-header {
292
+ padding: 10px 12px 8px;
293
+ }
294
+
295
+ .vf-editor-chat-history-scrim {
296
+ display: none;
297
+ }
298
+
99
299
  .vf-editor-chat-mobile-fab,
100
300
  .vf-editor-chat-minimize {
101
301
  display: none;
@@ -160,6 +360,48 @@ export const TEMPLATE_EDITOR_SHELL_STYLES = `
160
360
  white-space: nowrap;
161
361
  }
162
362
 
363
+ .vf-editor-chat-history-icon {
364
+ all: unset;
365
+ display: inline-flex;
366
+ align-items: center;
367
+ justify-content: center;
368
+ width: 32px;
369
+ height: 32px;
370
+ min-width: 32px;
371
+ border-radius: 999px;
372
+ border: 1px solid rgba(191, 164, 109, 0.34);
373
+ background: rgba(255, 255, 255, 0.92);
374
+ color: #5c6a82;
375
+ cursor: pointer;
376
+ }
377
+
378
+ .vf-editor-chat-history-icon[aria-pressed="true"] {
379
+ border-color: rgba(219, 193, 122, 0.9);
380
+ background: rgba(219, 193, 122, 0.16);
381
+ color: #8a6b1b;
382
+ }
383
+
384
+ .vf-editor-chat-history-icon svg {
385
+ width: 18px;
386
+ height: 18px;
387
+ }
388
+
389
+ .vf-editor-chat-history-panel {
390
+ display: grid;
391
+ grid-template-rows: auto minmax(0, 1fr);
392
+ gap: 10px;
393
+ min-height: 0;
394
+ height: 100%;
395
+ padding: 12px 4px;
396
+ }
397
+
398
+ .vf-editor-chat-history-panel-header {
399
+ display: flex;
400
+ align-items: center;
401
+ justify-content: space-between;
402
+ gap: 10px;
403
+ }
404
+
163
405
  .vf-editor-chat-thread-list {
164
406
  display: flex;
165
407
  flex-wrap: nowrap;
@@ -450,6 +692,11 @@ export const TEMPLATE_EDITOR_SHELL_STYLES = `
450
692
  padding: 8px 8px 10px;
451
693
  }
452
694
 
695
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-viewport {
696
+ height: 100%;
697
+ align-self: stretch;
698
+ }
699
+
453
700
  .vf-editor-chat-empty,
454
701
  .vf-editor-chat-disabled {
455
702
  display: grid;
@@ -468,6 +715,28 @@ export const TEMPLATE_EDITOR_SHELL_STYLES = `
468
715
  line-height: 1.7;
469
716
  }
470
717
 
718
+ .vf-editor-chat-empty-prompts {
719
+ display: grid;
720
+ gap: 6px;
721
+ margin-top: 2px;
722
+ }
723
+
724
+ .vf-editor-chat-empty-prompts div {
725
+ padding: 8px 10px;
726
+ border: 1px solid rgba(141, 153, 174, 0.22);
727
+ border-radius: 8px;
728
+ background: rgba(248, 250, 252, 0.84);
729
+ color: #334155;
730
+ font-size: 0.78rem;
731
+ line-height: 1.35;
732
+ }
733
+
734
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-empty,
735
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-disabled {
736
+ padding: 16px;
737
+ border-radius: 16px;
738
+ }
739
+
471
740
  .vf-editor-chat-message {
472
741
  display: flex;
473
742
  flex-direction: column;
@@ -603,74 +872,275 @@ export const TEMPLATE_EDITOR_SHELL_STYLES = `
603
872
  width: 100%;
604
873
  }
605
874
 
606
- .vf-editor-chat-http-card {
875
+ .vf-editor-chat-json-list {
876
+ display: grid;
877
+ gap: 8px;
607
878
  width: 100%;
608
- border-radius: 8px;
879
+ }
880
+
881
+ .vf-editor-chat-json-card {
882
+ width: min(100%, 860px);
883
+ border-radius: 12px;
609
884
  border: 1px solid rgba(191, 164, 109, 0.18);
610
- background: rgba(248, 244, 235, 0.82);
885
+ background: rgba(251, 247, 238, 0.92);
611
886
  overflow: hidden;
612
887
  }
613
888
 
614
- .vf-editor-chat-http-card-header {
615
- all: unset;
889
+ .vf-editor-chat-json-card-head {
616
890
  display: flex;
617
- align-items: center;
618
- gap: 6px;
619
- min-width: 0;
620
- width: 100%;
621
- box-sizing: border-box;
622
- padding: 6px 8px;
623
- cursor: pointer;
891
+ align-items: flex-start;
892
+ justify-content: space-between;
893
+ gap: 12px;
894
+ padding: 10px 12px;
624
895
  }
625
896
 
626
- .vf-editor-chat-http-pill,
627
- .vf-editor-chat-http-status {
628
- display: inline-flex;
629
- align-items: center;
630
- min-height: 18px;
631
- padding: 0 6px;
632
- border-radius: 999px;
633
- font-size: 0.62rem;
897
+ .vf-editor-chat-json-card-kicker {
898
+ color: #8a6b1b;
899
+ font-size: 0.64rem;
634
900
  font-weight: 800;
635
- letter-spacing: 0.04em;
636
- background: rgba(255, 255, 255, 0.92);
637
- color: #3f4a5d;
638
- flex: 0 0 auto;
639
- }
640
-
641
- .vf-editor-chat-http-status[data-error="true"] {
642
- color: #a33c32;
643
- background: rgba(245, 213, 208, 0.92);
901
+ letter-spacing: 0.08em;
902
+ text-transform: uppercase;
644
903
  }
645
904
 
646
- .vf-editor-chat-http-status[data-success="true"] {
647
- color: #1f6a3a;
648
- background: rgba(214, 240, 222, 0.96);
905
+ .vf-editor-chat-json-card-title {
906
+ color: #243041;
907
+ font-size: 0.92rem;
908
+ font-weight: 800;
909
+ line-height: 1.3;
649
910
  }
650
911
 
651
- .vf-editor-chat-http-url {
652
- min-width: 0;
653
- flex: 1 1 auto;
654
- color: #526179;
655
- font-size: 0.68rem;
656
- line-height: 1.25;
657
- white-space: nowrap;
658
- overflow: hidden;
659
- text-overflow: ellipsis;
912
+ .vf-editor-chat-json-card-actions {
913
+ display: inline-flex;
914
+ align-items: center;
915
+ gap: 8px;
916
+ flex: 0 0 auto;
660
917
  }
661
918
 
662
- .vf-editor-chat-http-expand {
919
+ .vf-editor-chat-json-card-action {
920
+ all: unset;
663
921
  display: inline-flex;
664
922
  align-items: center;
665
923
  justify-content: center;
666
- width: 16px;
667
- min-width: 16px;
668
- height: 16px;
924
+ min-height: 30px;
925
+ padding: 0 11px;
669
926
  border-radius: 999px;
670
927
  background: rgba(255, 255, 255, 0.92);
671
928
  color: #617087;
672
- font-size: 0.8rem;
673
- line-height: 1;
929
+ font-size: 0.76rem;
930
+ font-weight: 800;
931
+ cursor: pointer;
932
+ }
933
+
934
+ .vf-editor-chat-json-card-action.is-strong {
935
+ background: rgba(225, 201, 136, 0.36);
936
+ color: #7a5d19;
937
+ }
938
+
939
+ .vf-editor-chat-json-card-body {
940
+ padding: 0 12px 12px;
941
+ }
942
+
943
+ .vf-editor-chat-json-state {
944
+ padding: 12px;
945
+ border-radius: 10px;
946
+ background: rgba(255, 255, 255, 0.9);
947
+ color: #526179;
948
+ font-size: 0.78rem;
949
+ }
950
+
951
+ .vf-editor-chat-json-state.is-error {
952
+ color: #a14444;
953
+ }
954
+
955
+ .vf-editor-chat-json-viewer {
956
+ border-radius: 12px;
957
+ border: 1px solid rgba(191, 164, 109, 0.16);
958
+ background: rgba(255, 255, 255, 0.9);
959
+ overflow: hidden;
960
+ }
961
+
962
+ .vf-editor-chat-json-toolbar {
963
+ display: flex;
964
+ align-items: center;
965
+ justify-content: space-between;
966
+ gap: 12px;
967
+ padding: 10px 12px;
968
+ border-bottom: 1px solid rgba(191, 164, 109, 0.12);
969
+ background: rgba(250, 245, 236, 0.88);
970
+ }
971
+
972
+ .vf-editor-chat-json-file,
973
+ .vf-editor-chat-json-copy-state {
974
+ color: #617087;
975
+ font-size: 0.7rem;
976
+ font-weight: 700;
977
+ line-height: 1.35;
978
+ }
979
+
980
+ .vf-editor-chat-json-copy-state[data-state="done"] {
981
+ color: #2f7d4f;
982
+ }
983
+
984
+ .vf-editor-chat-json-copy-state[data-state="error"] {
985
+ color: #a14444;
986
+ }
987
+
988
+ .vf-editor-chat-json-scroll {
989
+ max-height: 320px;
990
+ overflow: auto;
991
+ padding: 10px 0;
992
+ }
993
+
994
+ .vf-editor-chat-json-toggle-row {
995
+ display: flex;
996
+ align-items: flex-start;
997
+ gap: 2px;
998
+ }
999
+
1000
+ .vf-editor-chat-json-toggle-icon {
1001
+ all: unset;
1002
+ display: inline-flex;
1003
+ align-items: center;
1004
+ justify-content: center;
1005
+ width: 24px;
1006
+ min-width: 24px;
1007
+ height: 26px;
1008
+ margin-left: 6px;
1009
+ color: #7b879b;
1010
+ cursor: pointer;
1011
+ }
1012
+
1013
+ .vf-editor-chat-json-toggle-icon svg {
1014
+ width: 14px;
1015
+ height: 14px;
1016
+ transition: transform 120ms ease;
1017
+ }
1018
+
1019
+ .vf-editor-chat-json-line {
1020
+ position: relative;
1021
+ display: flex;
1022
+ align-items: flex-start;
1023
+ width: 100%;
1024
+ min-height: 24px;
1025
+ box-sizing: border-box;
1026
+ padding-right: 12px;
1027
+ }
1028
+
1029
+ .vf-editor-chat-json-line:hover {
1030
+ background: rgba(138, 107, 27, 0.05);
1031
+ }
1032
+
1033
+ .vf-editor-chat-json-line-text {
1034
+ display: block;
1035
+ width: 100%;
1036
+ color: #2c3748;
1037
+ font-size: 0.78rem;
1038
+ line-height: 1.5;
1039
+ white-space: pre-wrap;
1040
+ word-break: break-word;
1041
+ user-select: text;
1042
+ font-family: "SFMono-Regular", "Menlo", monospace;
1043
+ }
1044
+
1045
+ .vf-editor-chat-json-copy {
1046
+ all: unset;
1047
+ position: absolute;
1048
+ left: 0;
1049
+ top: 3px;
1050
+ width: 20px;
1051
+ height: 20px;
1052
+ border-radius: 6px;
1053
+ background: rgba(255, 255, 255, 0.96);
1054
+ color: #7b879b;
1055
+ opacity: 0;
1056
+ box-shadow: 0 8px 18px rgba(15, 23, 42, 0.08);
1057
+ cursor: pointer;
1058
+ transition: opacity 120ms ease, color 120ms ease;
1059
+ }
1060
+
1061
+ .vf-editor-chat-json-line:hover .vf-editor-chat-json-copy,
1062
+ .vf-editor-chat-json-copy:focus-visible {
1063
+ opacity: 1;
1064
+ }
1065
+
1066
+ .vf-editor-chat-json-copy:hover {
1067
+ color: #8a6b1b;
1068
+ }
1069
+
1070
+ .vf-editor-chat-json-copy svg {
1071
+ width: 14px;
1072
+ height: 14px;
1073
+ margin: 3px;
1074
+ }
1075
+
1076
+ .vf-editor-chat-http-card {
1077
+ width: 100%;
1078
+ border-radius: 8px;
1079
+ border: 1px solid rgba(191, 164, 109, 0.18);
1080
+ background: rgba(248, 244, 235, 0.82);
1081
+ overflow: hidden;
1082
+ }
1083
+
1084
+ .vf-editor-chat-http-card-header {
1085
+ all: unset;
1086
+ display: flex;
1087
+ align-items: center;
1088
+ gap: 6px;
1089
+ min-width: 0;
1090
+ width: 100%;
1091
+ box-sizing: border-box;
1092
+ padding: 6px 8px;
1093
+ cursor: pointer;
1094
+ }
1095
+
1096
+ .vf-editor-chat-http-pill,
1097
+ .vf-editor-chat-http-status {
1098
+ display: inline-flex;
1099
+ align-items: center;
1100
+ min-height: 18px;
1101
+ padding: 0 6px;
1102
+ border-radius: 999px;
1103
+ font-size: 0.62rem;
1104
+ font-weight: 800;
1105
+ letter-spacing: 0.04em;
1106
+ background: rgba(255, 255, 255, 0.92);
1107
+ color: #3f4a5d;
1108
+ flex: 0 0 auto;
1109
+ }
1110
+
1111
+ .vf-editor-chat-http-status[data-error="true"] {
1112
+ color: #a33c32;
1113
+ background: rgba(245, 213, 208, 0.92);
1114
+ }
1115
+
1116
+ .vf-editor-chat-http-status[data-success="true"] {
1117
+ color: #1f6a3a;
1118
+ background: rgba(214, 240, 222, 0.96);
1119
+ }
1120
+
1121
+ .vf-editor-chat-http-url {
1122
+ min-width: 0;
1123
+ flex: 1 1 auto;
1124
+ color: #526179;
1125
+ font-size: 0.68rem;
1126
+ line-height: 1.25;
1127
+ white-space: nowrap;
1128
+ overflow: hidden;
1129
+ text-overflow: ellipsis;
1130
+ }
1131
+
1132
+ .vf-editor-chat-http-expand {
1133
+ display: inline-flex;
1134
+ align-items: center;
1135
+ justify-content: center;
1136
+ width: 16px;
1137
+ min-width: 16px;
1138
+ height: 16px;
1139
+ border-radius: 999px;
1140
+ background: rgba(255, 255, 255, 0.92);
1141
+ color: #617087;
1142
+ font-size: 0.8rem;
1143
+ line-height: 1;
674
1144
  flex: 0 0 auto;
675
1145
  }
676
1146
 
@@ -885,151 +1355,798 @@ export const TEMPLATE_EDITOR_SHELL_STYLES = `
885
1355
  border: 1px solid rgba(191, 164, 109, 0.22);
886
1356
  }
887
1357
 
888
- .vf-editor-chat-message-thumb-button.is-image .vf-editor-chat-message-attachment-thumb {
889
- width: 86px;
890
- max-width: 86px;
891
- height: 86px;
892
- max-height: 86px;
1358
+ .vf-editor-chat-message-thumb-button.is-image .vf-editor-chat-message-attachment-thumb {
1359
+ width: 86px;
1360
+ max-width: 86px;
1361
+ height: 86px;
1362
+ max-height: 86px;
1363
+ border-radius: 8px;
1364
+ object-fit: cover;
1365
+ }
1366
+
1367
+ .vf-editor-chat-message-image-rail {
1368
+ display: flex;
1369
+ gap: 8px;
1370
+ width: 100%;
1371
+ max-width: 100%;
1372
+ min-width: 0;
1373
+ overflow-x: auto;
1374
+ overflow-y: hidden;
1375
+ padding: 1px 2px 5px;
1376
+ scrollbar-width: thin;
1377
+ }
1378
+
1379
+ .vf-editor-chat-message-thumb-fallback {
1380
+ display: flex;
1381
+ align-items: center;
1382
+ justify-content: center;
1383
+ box-sizing: border-box;
1384
+ width: 86px;
1385
+ height: 86px;
1386
+ padding: 8px;
1387
+ border: 1px dashed rgba(141, 153, 174, 0.5);
1388
+ border-radius: 8px;
1389
+ background: rgba(248, 244, 235, 0.9);
1390
+ color: #7b879b;
1391
+ font-size: 0.66rem;
1392
+ font-weight: 800;
1393
+ line-height: 1.15;
1394
+ text-align: center;
1395
+ }
1396
+
1397
+ .vf-editor-chat-message-video-thumb {
1398
+ background: rgba(255, 255, 255, 0.96);
1399
+ }
1400
+
1401
+ .vf-editor-chat-message-video-play {
1402
+ position: absolute;
1403
+ left: 50%;
1404
+ top: 50%;
1405
+ width: 38px;
1406
+ height: 38px;
1407
+ transform: translate(-50%, -50%);
1408
+ display: inline-flex;
1409
+ align-items: center;
1410
+ justify-content: center;
1411
+ border-radius: 999px;
1412
+ background: rgba(18, 24, 34, 0.74);
1413
+ box-shadow: 0 10px 26px rgba(12, 18, 28, 0.24);
1414
+ pointer-events: none;
1415
+ }
1416
+
1417
+ .vf-editor-chat-message-video-play::before {
1418
+ content: "";
1419
+ display: block;
1420
+ width: 0;
1421
+ height: 0;
1422
+ margin-left: 3px;
1423
+ border-top: 8px solid transparent;
1424
+ border-bottom: 8px solid transparent;
1425
+ border-left: 12px solid #fff8ee;
1426
+ }
1427
+
1428
+ .vf-editor-chat-media-modal-backdrop {
1429
+ position: fixed;
1430
+ inset: 0;
1431
+ z-index: 125;
1432
+ display: flex;
1433
+ align-items: center;
1434
+ justify-content: center;
1435
+ padding: 20px;
1436
+ background: rgba(31, 38, 53, 0.58);
1437
+ backdrop-filter: blur(10px);
1438
+ }
1439
+
1440
+ .vf-editor-chat-media-modal {
1441
+ width: min(920px, calc(100vw - 40px));
1442
+ max-height: min(88vh, 980px);
1443
+ overflow: hidden;
1444
+ border-radius: 20px;
1445
+ border: 1px solid rgba(191, 164, 109, 0.24);
1446
+ background: rgba(255, 251, 244, 0.99);
1447
+ box-shadow: 0 28px 64px rgba(15, 23, 42, 0.28);
1448
+ }
1449
+
1450
+ .vf-editor-chat-json-modal {
1451
+ width: min(1080px, calc(100vw - 40px));
1452
+ max-height: min(88vh, 980px);
1453
+ overflow: hidden;
1454
+ border-radius: 20px;
1455
+ border: 1px solid rgba(191, 164, 109, 0.24);
1456
+ background: rgba(255, 251, 244, 0.99);
1457
+ box-shadow: 0 28px 64px rgba(15, 23, 42, 0.28);
1458
+ }
1459
+
1460
+ .vf-editor-chat-json-modal-body {
1461
+ padding: 18px;
1462
+ max-height: calc(88vh - 76px);
1463
+ background: linear-gradient(180deg, rgba(255, 251, 244, 0.98), rgba(248, 242, 231, 0.96));
1464
+ }
1465
+
1466
+ .vf-editor-chat-json-modal-body .vf-editor-chat-json-scroll {
1467
+ max-height: calc(88vh - 164px);
1468
+ }
1469
+
1470
+ .vf-editor-chat-doc-viewer {
1471
+ max-height: calc(88vh - 164px);
1472
+ overflow: auto;
1473
+ padding: 16px 18px;
1474
+ border-radius: 12px;
1475
+ border: 1px solid rgba(191, 164, 109, 0.16);
1476
+ background: rgba(255, 255, 255, 0.92);
1477
+ }
1478
+
1479
+ .vf-editor-chat-doc-viewer.is-inline {
1480
+ max-height: 320px;
1481
+ }
1482
+
1483
+ .vf-editor-chat-doc-pre {
1484
+ margin: 0;
1485
+ white-space: pre-wrap;
1486
+ word-break: break-word;
1487
+ color: #2c3748;
1488
+ font-size: 0.8rem;
1489
+ line-height: 1.55;
1490
+ font-family: "SFMono-Regular", "Menlo", monospace;
1491
+ }
1492
+
1493
+ .vf-editor-chat-doc-markdown {
1494
+ color: #334155;
1495
+ font-size: 0.92rem;
1496
+ line-height: 1.65;
1497
+ }
1498
+
1499
+ .vf-editor-chat-doc-markdown > :first-child {
1500
+ margin-top: 0;
1501
+ }
1502
+
1503
+ .vf-editor-chat-doc-markdown > :last-child {
1504
+ margin-bottom: 0;
1505
+ }
1506
+
1507
+ .vf-editor-chat-doc-markdown h1,
1508
+ .vf-editor-chat-doc-markdown h2,
1509
+ .vf-editor-chat-doc-markdown h3 {
1510
+ color: #243041;
1511
+ line-height: 1.2;
1512
+ margin: 0 0 0.7rem;
1513
+ }
1514
+
1515
+ .vf-editor-chat-doc-markdown p,
1516
+ .vf-editor-chat-doc-markdown ul,
1517
+ .vf-editor-chat-doc-markdown ol,
1518
+ .vf-editor-chat-doc-markdown blockquote,
1519
+ .vf-editor-chat-doc-markdown pre {
1520
+ margin: 0 0 0.85rem;
1521
+ }
1522
+
1523
+ .vf-editor-chat-doc-markdown ul,
1524
+ .vf-editor-chat-doc-markdown ol {
1525
+ padding-left: 1.2rem;
1526
+ }
1527
+
1528
+ .vf-editor-chat-doc-markdown blockquote {
1529
+ margin-left: 0;
1530
+ padding-left: 0.9rem;
1531
+ border-left: 3px solid rgba(191, 164, 109, 0.34);
1532
+ color: #617087;
1533
+ }
1534
+
1535
+ .vf-editor-chat-doc-markdown a {
1536
+ color: #8a6b1b;
1537
+ text-decoration: underline;
1538
+ text-underline-offset: 0.16em;
1539
+ word-break: break-word;
1540
+ }
1541
+
1542
+ .vf-editor-chat-media-modal-header {
1543
+ display: flex;
1544
+ align-items: center;
1545
+ justify-content: space-between;
1546
+ gap: 12px;
1547
+ padding: 14px 16px;
1548
+ border-bottom: 1px solid rgba(191, 164, 109, 0.14);
1549
+ }
1550
+
1551
+ .vf-editor-chat-media-modal-link {
1552
+ min-width: 0;
1553
+ flex: 1 1 auto;
1554
+ color: #8a6b1b;
1555
+ font-size: 0.92rem;
1556
+ font-weight: 700;
1557
+ line-height: 1.35;
1558
+ word-break: break-word;
1559
+ overflow-wrap: anywhere;
1560
+ }
1561
+
1562
+ .vf-editor-chat-media-modal-actions {
1563
+ display: inline-flex;
1564
+ align-items: center;
1565
+ gap: 8px;
1566
+ flex: 0 0 auto;
1567
+ }
1568
+
1569
+ .vf-editor-chat-media-modal-control {
1570
+ all: unset;
1571
+ display: inline-flex;
1572
+ align-items: center;
1573
+ justify-content: center;
1574
+ width: 32px;
1575
+ min-width: 32px;
1576
+ height: 32px;
1577
+ border-radius: 999px;
1578
+ background: rgba(36, 48, 65, 0.08);
1579
+ color: #617087;
1580
+ font-size: 1.2rem;
1581
+ line-height: 1;
1582
+ cursor: pointer;
1583
+ }
1584
+
1585
+ a.vf-editor-chat-media-modal-control {
1586
+ text-decoration: none;
1587
+ }
1588
+
1589
+ .vf-editor-chat-media-modal-control:hover,
1590
+ .vf-editor-chat-media-modal-control:focus-visible {
1591
+ background: rgba(138, 107, 27, 0.14);
1592
+ color: #8a6b1b;
1593
+ }
1594
+
1595
+ .vf-editor-chat-media-modal-control[data-state="done"] {
1596
+ background: rgba(56, 142, 91, 0.14);
1597
+ color: #2f7d4f;
1598
+ }
1599
+
1600
+ .vf-editor-chat-media-modal-control[data-state="error"] {
1601
+ background: rgba(161, 68, 68, 0.12);
1602
+ color: #a14444;
1603
+ }
1604
+
1605
+ .vf-editor-chat-media-modal-control svg {
1606
+ width: 18px;
1607
+ height: 18px;
1608
+ }
1609
+
1610
+ .vf-editor-chat-media-modal-body {
1611
+ display: flex;
1612
+ align-items: center;
1613
+ justify-content: center;
1614
+ padding: 18px;
1615
+ max-height: calc(88vh - 76px);
1616
+ background: linear-gradient(180deg, rgba(255, 251, 244, 0.98), rgba(248, 242, 231, 0.96));
1617
+ }
1618
+
1619
+ .vf-editor-chat-media-modal-image,
1620
+ .vf-editor-chat-media-modal-video {
1621
+ width: auto;
1622
+ max-width: 100%;
1623
+ max-height: calc(88vh - 112px);
1624
+ border-radius: 16px;
1625
+ border: 1px solid rgba(191, 164, 109, 0.18);
1626
+ background: rgba(255, 255, 255, 0.96);
1627
+ object-fit: contain;
1628
+ }
1629
+
1630
+ .vf-editor-upload-drawer-backdrop {
1631
+ position: fixed;
1632
+ inset: 0;
1633
+ z-index: 124;
1634
+ background: transparent;
1635
+ pointer-events: none;
1636
+ }
1637
+
1638
+ .vf-editor-upload-drawer {
1639
+ box-sizing: border-box;
1640
+ width: min(420px, 100vw);
1641
+ height: 100vh;
1642
+ display: grid;
1643
+ grid-template-rows: auto auto minmax(0, 1fr) auto;
1644
+ border-right: 1px solid rgba(191, 164, 109, 0.24);
1645
+ background: rgba(255, 251, 244, 0.99);
1646
+ box-shadow: 24px 0 48px rgba(15, 23, 42, 0.22);
1647
+ pointer-events: auto;
1648
+ }
1649
+
1650
+ .vf-editor-upload-header,
1651
+ .vf-editor-upload-footer {
1652
+ display: flex;
1653
+ align-items: center;
1654
+ justify-content: space-between;
1655
+ gap: 10px;
1656
+ padding: 14px;
1657
+ border-bottom: 1px solid rgba(191, 164, 109, 0.14);
1658
+ }
1659
+
1660
+ .vf-editor-upload-footer {
1661
+ border-top: 1px solid rgba(191, 164, 109, 0.14);
1662
+ border-bottom: 0;
1663
+ }
1664
+
1665
+ .vf-editor-upload-footer-confirm {
1666
+ display: inline-flex;
1667
+ align-items: center;
1668
+ gap: 10px;
1669
+ color: #7b879b;
1670
+ font-size: 0.78rem;
1671
+ font-weight: 850;
1672
+ }
1673
+
1674
+ .vf-editor-upload-title {
1675
+ color: #243041;
1676
+ font-size: 1rem;
1677
+ font-weight: 800;
1678
+ }
1679
+
1680
+ .vf-editor-upload-subtitle {
1681
+ margin-top: 2px;
1682
+ color: #7b879b;
1683
+ font-size: 0.76rem;
1684
+ font-weight: 700;
1685
+ }
1686
+
1687
+ .vf-editor-upload-close,
1688
+ .vf-editor-upload-file-actions button,
1689
+ .vf-editor-upload-file-actions a {
1690
+ all: unset;
1691
+ display: inline-flex;
1692
+ align-items: center;
1693
+ justify-content: center;
1694
+ width: 30px;
1695
+ min-width: 30px;
1696
+ height: 30px;
1697
+ border-radius: 8px;
1698
+ background: rgba(36, 48, 65, 0.08);
1699
+ color: #617087;
1700
+ font-size: 0.94rem;
1701
+ font-weight: 800;
1702
+ text-decoration: none;
1703
+ cursor: pointer;
1704
+ }
1705
+
1706
+ .vf-editor-upload-tabs {
1707
+ display: grid;
1708
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1709
+ gap: 6px;
1710
+ padding: 10px 12px;
1711
+ border-bottom: 1px solid rgba(191, 164, 109, 0.14);
1712
+ }
1713
+
1714
+ .vf-editor-upload-tabs button,
1715
+ .vf-editor-upload-browser button,
1716
+ .vf-editor-upload-footer button,
1717
+ .vf-editor-upload-popconfirm button,
1718
+ .vf-editor-upload-more {
1719
+ all: unset;
1720
+ box-sizing: border-box;
1721
+ display: inline-flex;
1722
+ align-items: center;
1723
+ justify-content: center;
1724
+ min-height: 30px;
1725
+ padding: 0 10px;
1726
+ border: 1px solid rgba(191, 164, 109, 0.24);
1727
+ border-radius: 8px;
1728
+ background: rgba(255, 255, 255, 0.86);
1729
+ color: #4b5568;
1730
+ font-size: 0.76rem;
1731
+ font-weight: 800;
1732
+ cursor: pointer;
1733
+ }
1734
+
1735
+ .vf-editor-upload-tabs button[data-active="true"],
1736
+ .vf-editor-upload-confirm {
1737
+ background: #d7b84f;
1738
+ border-color: rgba(138, 107, 27, 0.36);
1739
+ color: #243041;
1740
+ }
1741
+
1742
+ .vf-editor-upload-footer button:disabled,
1743
+ .vf-editor-upload-more:disabled {
1744
+ opacity: 0.52;
1745
+ cursor: not-allowed;
1746
+ }
1747
+
1748
+ .vf-editor-upload-more {
1749
+ width: 100%;
1750
+ }
1751
+
1752
+ .vf-editor-upload-body {
1753
+ display: grid;
1754
+ align-content: start;
1755
+ gap: 10px;
1756
+ min-height: 0;
1757
+ overflow: auto;
1758
+ padding: 12px;
1759
+ }
1760
+
1761
+ .vf-editor-upload-status {
1762
+ padding: 9px 10px;
1763
+ border-radius: 8px;
1764
+ background: rgba(36, 48, 65, 0.07);
1765
+ color: #4b5568;
1766
+ font-size: 0.76rem;
1767
+ font-weight: 800;
1768
+ }
1769
+
1770
+ .vf-editor-upload-status[data-tone="error"] {
1771
+ background: rgba(155, 45, 45, 0.08);
1772
+ color: #8b1e1e;
1773
+ }
1774
+
1775
+ .vf-editor-upload-drop {
1776
+ all: unset;
1777
+ display: grid;
1778
+ gap: 4px;
1779
+ place-items: center;
1780
+ min-height: 66px;
1781
+ padding: 10px 12px;
1782
+ border: 1px dashed rgba(138, 107, 27, 0.36);
1783
+ border-radius: 10px;
1784
+ background: rgba(255, 255, 255, 0.78);
1785
+ color: #243041;
1786
+ font-size: 0.92rem;
1787
+ font-weight: 850;
1788
+ cursor: pointer;
1789
+ }
1790
+
1791
+ .vf-editor-upload-drop span {
1792
+ color: #7b879b;
1793
+ font-size: 0.74rem;
1794
+ font-weight: 700;
1795
+ }
1796
+
1797
+ .vf-editor-upload-browser {
1798
+ display: grid;
1799
+ gap: 8px;
1800
+ }
1801
+
1802
+ .vf-editor-upload-browser-toolbar {
1803
+ display: grid;
1804
+ grid-template-columns: minmax(0, 1fr) auto;
1805
+ align-items: center;
1806
+ gap: 6px;
1807
+ }
1808
+
1809
+ .vf-editor-upload-browser-toolbar button:disabled {
1810
+ opacity: 0.5;
1811
+ cursor: not-allowed;
1812
+ }
1813
+
1814
+ .vf-editor-upload-breadcrumb {
1815
+ display: flex;
1816
+ align-items: center;
1817
+ min-width: 0;
1818
+ overflow-x: auto;
1819
+ gap: 2px;
1820
+ padding-bottom: 1px;
1821
+ color: #7b879b;
1822
+ font-size: 0.78rem;
1823
+ font-weight: 850;
1824
+ }
1825
+
1826
+ .vf-editor-upload-breadcrumb button {
1827
+ all: unset;
1828
+ flex: 0 0 auto;
1829
+ max-width: 120px;
1830
+ padding: 3px 7px;
1831
+ border-radius: 6px;
1832
+ overflow: hidden;
1833
+ text-overflow: ellipsis;
1834
+ white-space: nowrap;
1835
+ color: #4b5568;
1836
+ cursor: pointer;
1837
+ }
1838
+
1839
+ .vf-editor-upload-breadcrumb-segment {
1840
+ display: inline-flex;
1841
+ align-items: center;
1842
+ gap: 2px;
1843
+ min-width: 0;
1844
+ }
1845
+
1846
+ .vf-editor-upload-folder-grid {
1847
+ display: grid;
1848
+ gap: 6px;
1849
+ }
1850
+
1851
+ .vf-editor-upload-folder-row {
1852
+ position: relative;
1853
+ display: grid;
1854
+ grid-template-columns: minmax(0, 1fr) auto;
1855
+ align-items: center;
1856
+ gap: 10px;
1857
+ padding: 9px 10px;
1858
+ border: 1px solid rgba(191, 164, 109, 0.18);
1859
+ border-radius: 8px;
1860
+ background: rgba(255, 255, 255, 0.72);
1861
+ }
1862
+
1863
+ .vf-editor-upload-folder-open {
1864
+ justify-content: flex-start !important;
1865
+ gap: 10px;
1866
+ min-width: 0;
1867
+ border: 0 !important;
1868
+ background: transparent !important;
1869
+ padding: 0 !important;
1870
+ color: #243041 !important;
1871
+ }
1872
+
1873
+ .vf-editor-upload-folder-open span:last-child {
1874
+ min-width: 0;
1875
+ overflow: hidden;
1876
+ text-overflow: ellipsis;
1877
+ white-space: nowrap;
1878
+ }
1879
+
1880
+ .vf-editor-upload-folder-icon {
1881
+ position: relative;
1882
+ display: inline-flex;
1883
+ align-items: center;
1884
+ justify-content: center;
1885
+ width: 34px;
1886
+ min-width: 34px;
1887
+ height: 25px;
1888
+ border-radius: 4px;
1889
+ background: #dbc17a;
1890
+ box-shadow: inset 0 -1px 0 rgba(138, 107, 27, 0.18);
1891
+ }
1892
+
1893
+ .vf-editor-upload-folder-icon::before {
1894
+ content: "";
1895
+ position: absolute;
1896
+ left: 4px;
1897
+ top: -6px;
1898
+ width: 16px;
1899
+ height: 8px;
1900
+ border-radius: 4px 4px 0 0;
1901
+ background: #e4cd88;
1902
+ }
1903
+
1904
+ .vf-editor-upload-folder-menu-button {
1905
+ width: auto;
1906
+ min-width: 34px;
1907
+ padding-left: 9px !important;
1908
+ padding-right: 9px !important;
1909
+ }
1910
+
1911
+ .vf-editor-upload-folder-menu {
1912
+ position: absolute;
1913
+ right: 8px;
1914
+ top: calc(100% - 2px);
1915
+ z-index: 3;
1916
+ display: grid;
1917
+ gap: 4px;
1918
+ min-width: 132px;
1919
+ padding: 6px;
1920
+ border: 1px solid rgba(191, 164, 109, 0.2);
1921
+ border-radius: 10px;
1922
+ background: #fffbf4;
1923
+ box-shadow: 0 12px 28px rgba(15, 23, 42, 0.16);
1924
+ }
1925
+
1926
+ .vf-editor-upload-folder-menu button {
1927
+ justify-content: flex-start;
1928
+ }
1929
+
1930
+ .vf-editor-upload-folder-menu button[data-danger="true"] {
1931
+ color: #8b1e1e;
1932
+ }
1933
+
1934
+ .vf-editor-upload-folder-dialog {
1935
+ display: grid;
1936
+ gap: 9px;
1937
+ padding: 10px;
1938
+ border: 1px solid rgba(191, 164, 109, 0.22);
1939
+ border-radius: 10px;
1940
+ background: rgba(255, 255, 255, 0.86);
1941
+ box-shadow: 0 10px 24px rgba(15, 23, 42, 0.08);
1942
+ }
1943
+
1944
+ .vf-editor-upload-folder-dialog-title {
1945
+ color: #243041;
1946
+ font-size: 0.82rem;
1947
+ font-weight: 850;
1948
+ }
1949
+
1950
+ .vf-editor-upload-folder-dialog-copy {
1951
+ color: #4b5568;
1952
+ font-size: 0.78rem;
1953
+ font-weight: 750;
1954
+ line-height: 1.35;
1955
+ overflow-wrap: anywhere;
1956
+ }
1957
+
1958
+ .vf-editor-upload-folder-dialog input {
1959
+ box-sizing: border-box;
1960
+ width: 100%;
1961
+ height: 34px;
1962
+ padding: 0 9px;
1963
+ border: 1px solid rgba(191, 164, 109, 0.24);
893
1964
  border-radius: 8px;
894
- object-fit: cover;
895
- }
1965
+ background: #fff;
1966
+ color: #243041;
1967
+ font-size: 0.8rem;
1968
+ font-weight: 750;
1969
+ }
896
1970
 
897
- .vf-editor-chat-message-image-rail {
1971
+ .vf-editor-upload-folder-dialog-actions {
898
1972
  display: flex;
899
- gap: 8px;
900
- width: 100%;
901
- max-width: 100%;
902
- min-width: 0;
903
- overflow-x: auto;
904
- overflow-y: hidden;
905
- padding: 1px 2px 5px;
906
- scrollbar-width: thin;
907
- }
1973
+ justify-content: flex-end;
1974
+ gap: 6px;
1975
+ }
908
1976
 
909
- .vf-editor-chat-message-thumb-fallback {
910
- display: flex;
1977
+ .vf-editor-upload-folder-dialog-actions button {
1978
+ all: unset;
1979
+ box-sizing: border-box;
1980
+ display: inline-flex;
911
1981
  align-items: center;
912
1982
  justify-content: center;
913
- box-sizing: border-box;
914
- width: 86px;
915
- height: 86px;
916
- padding: 8px;
917
- border: 1px dashed rgba(141, 153, 174, 0.5);
1983
+ min-height: 30px;
1984
+ padding: 0 10px;
1985
+ border: 1px solid rgba(191, 164, 109, 0.24);
918
1986
  border-radius: 8px;
919
- background: rgba(248, 244, 235, 0.9);
920
- color: #7b879b;
921
- font-size: 0.66rem;
1987
+ background: rgba(255, 255, 255, 0.86);
1988
+ color: #4b5568;
1989
+ font-size: 0.76rem;
922
1990
  font-weight: 800;
923
- line-height: 1.15;
924
- text-align: center;
925
- }
1991
+ cursor: pointer;
1992
+ }
926
1993
 
927
- .vf-editor-chat-message-video-thumb {
928
- background: rgba(255, 255, 255, 0.96);
929
- }
1994
+ .vf-editor-upload-folder-dialog-actions button[data-danger="true"] {
1995
+ border-color: rgba(155, 45, 45, 0.22);
1996
+ background: rgba(155, 45, 45, 0.08);
1997
+ color: #8b1e1e;
1998
+ }
930
1999
 
931
- .vf-editor-chat-message-video-play {
932
- position: absolute;
933
- left: 50%;
934
- top: 50%;
935
- width: 38px;
936
- height: 38px;
937
- transform: translate(-50%, -50%);
938
- display: inline-flex;
2000
+ .vf-editor-upload-list {
2001
+ display: grid;
2002
+ gap: 8px;
2003
+ }
2004
+
2005
+ .vf-editor-upload-file-card {
2006
+ position: relative;
2007
+ display: grid;
2008
+ grid-template-columns: minmax(0, 1fr) auto;
939
2009
  align-items: center;
940
- justify-content: center;
941
- border-radius: 999px;
942
- background: rgba(18, 24, 34, 0.74);
943
- box-shadow: 0 10px 26px rgba(12, 18, 28, 0.24);
944
- pointer-events: none;
945
- }
2010
+ gap: 8px;
2011
+ min-width: 0;
2012
+ padding: 8px;
2013
+ border: 1px solid rgba(191, 164, 109, 0.18);
2014
+ border-radius: 10px;
2015
+ background: rgba(255, 255, 255, 0.82);
2016
+ }
946
2017
 
947
- .vf-editor-chat-message-video-play::before {
948
- content: "";
949
- display: block;
950
- width: 0;
951
- height: 0;
952
- margin-left: 3px;
953
- border-top: 8px solid transparent;
954
- border-bottom: 8px solid transparent;
955
- border-left: 12px solid #fff8ee;
956
- }
2018
+ .vf-editor-upload-file-card[data-selected="true"] {
2019
+ border-color: rgba(138, 107, 27, 0.72);
2020
+ background: rgba(255, 248, 226, 0.94);
2021
+ box-shadow: inset 0 0 0 2px rgba(215, 184, 79, 0.44);
2022
+ }
957
2023
 
958
- .vf-editor-chat-media-modal-backdrop {
959
- position: fixed;
960
- inset: 0;
961
- z-index: 125;
962
- display: flex;
2024
+ .vf-editor-upload-file-select {
2025
+ all: unset;
2026
+ display: grid;
2027
+ grid-template-columns: auto minmax(0, 1fr);
963
2028
  align-items: center;
964
- justify-content: center;
965
- padding: 20px;
966
- background: rgba(31, 38, 53, 0.58);
967
- backdrop-filter: blur(10px);
2029
+ gap: 9px;
2030
+ min-width: 0;
2031
+ cursor: pointer;
968
2032
  }
969
2033
 
970
- .vf-editor-chat-media-modal {
971
- width: min(920px, calc(100vw - 40px));
972
- max-height: min(88vh, 980px);
973
- overflow: hidden;
974
- border-radius: 20px;
975
- border: 1px solid rgba(191, 164, 109, 0.24);
976
- background: rgba(255, 251, 244, 0.99);
977
- box-shadow: 0 28px 64px rgba(15, 23, 42, 0.28);
2034
+ .vf-editor-upload-file-thumb,
2035
+ .vf-editor-upload-file-icon {
2036
+ width: 44px;
2037
+ min-width: 44px;
2038
+ height: 44px;
2039
+ border-radius: 8px;
2040
+ border: 1px solid rgba(191, 164, 109, 0.2);
2041
+ background: rgba(252, 248, 240, 0.94);
978
2042
  }
979
2043
 
980
- .vf-editor-chat-media-modal-header {
981
- display: flex;
2044
+ .vf-editor-upload-file-thumb {
2045
+ object-fit: cover;
2046
+ }
2047
+
2048
+ .vf-editor-upload-file-icon {
2049
+ display: inline-flex;
982
2050
  align-items: center;
983
- justify-content: space-between;
984
- gap: 12px;
985
- padding: 14px 16px;
986
- border-bottom: 1px solid rgba(191, 164, 109, 0.14);
2051
+ justify-content: center;
2052
+ color: #617087;
2053
+ font-weight: 850;
987
2054
  }
988
2055
 
989
- .vf-editor-chat-media-modal-link {
2056
+ .vf-editor-upload-file-main {
2057
+ display: grid;
2058
+ gap: 3px;
990
2059
  min-width: 0;
991
- color: #8a6b1b;
992
- font-size: 0.92rem;
2060
+ }
2061
+
2062
+ .vf-editor-upload-file-name,
2063
+ .vf-editor-upload-file-meta {
2064
+ min-width: 0;
2065
+ overflow: hidden;
2066
+ text-overflow: ellipsis;
2067
+ white-space: nowrap;
2068
+ }
2069
+
2070
+ .vf-editor-upload-file-name {
2071
+ color: #243041;
2072
+ font-size: 0.8rem;
2073
+ font-weight: 850;
2074
+ }
2075
+
2076
+ .vf-editor-upload-file-meta {
2077
+ color: #7b879b;
2078
+ font-size: 0.7rem;
993
2079
  font-weight: 700;
994
- line-height: 1.35;
995
- word-break: break-word;
996
- overflow-wrap: anywhere;
997
2080
  }
998
2081
 
999
- .vf-editor-chat-media-modal-close {
1000
- all: unset;
2082
+ .vf-editor-upload-file-actions {
1001
2083
  display: inline-flex;
1002
2084
  align-items: center;
1003
- justify-content: center;
1004
- width: 32px;
1005
- min-width: 32px;
1006
- height: 32px;
1007
- border-radius: 999px;
1008
- background: rgba(36, 48, 65, 0.08);
1009
- color: #617087;
1010
- font-size: 1.2rem;
1011
- line-height: 1;
1012
- cursor: pointer;
2085
+ gap: 4px;
1013
2086
  }
1014
2087
 
1015
- .vf-editor-chat-media-modal-body {
1016
- display: flex;
2088
+ .vf-editor-upload-file-actions svg {
2089
+ width: 18px;
2090
+ height: 18px;
2091
+ fill: none;
2092
+ stroke: currentColor;
2093
+ stroke-width: 2;
2094
+ stroke-linecap: round;
2095
+ stroke-linejoin: round;
2096
+ }
2097
+
2098
+ .vf-editor-upload-selection-indicator {
2099
+ display: inline-flex;
1017
2100
  align-items: center;
1018
2101
  justify-content: center;
1019
- padding: 18px;
1020
- max-height: calc(88vh - 76px);
1021
- background: linear-gradient(180deg, rgba(255, 251, 244, 0.98), rgba(248, 242, 231, 0.96));
2102
+ width: 26px;
2103
+ min-width: 26px;
2104
+ height: 26px;
2105
+ border: 2px solid rgba(123, 135, 155, 0.42);
2106
+ border-radius: 7px;
2107
+ color: #243041;
2108
+ font-size: 0.9rem;
2109
+ font-weight: 900;
2110
+ background: rgba(255, 255, 255, 0.82);
1022
2111
  }
1023
2112
 
1024
- .vf-editor-chat-media-modal-image,
1025
- .vf-editor-chat-media-modal-video {
1026
- width: auto;
1027
- max-width: 100%;
1028
- max-height: calc(88vh - 112px);
1029
- border-radius: 16px;
1030
- border: 1px solid rgba(191, 164, 109, 0.18);
1031
- background: rgba(255, 255, 255, 0.96);
1032
- object-fit: contain;
2113
+ .vf-editor-upload-selection-indicator[data-selected="true"] {
2114
+ border-color: rgba(138, 107, 27, 0.72);
2115
+ background: #d7b84f;
2116
+ }
2117
+
2118
+ .vf-editor-upload-popconfirm {
2119
+ position: absolute;
2120
+ right: 8px;
2121
+ top: calc(100% - 2px);
2122
+ z-index: 2;
2123
+ display: grid;
2124
+ gap: 6px;
2125
+ min-width: 180px;
2126
+ padding: 8px;
2127
+ border: 1px solid rgba(191, 164, 109, 0.2);
2128
+ border-radius: 10px;
2129
+ background: #fffbf4;
2130
+ box-shadow: 0 12px 28px rgba(15, 23, 42, 0.16);
2131
+ color: #4b5568;
2132
+ font-size: 0.76rem;
2133
+ font-weight: 800;
2134
+ }
2135
+
2136
+ .vf-editor-upload-popconfirm button[data-danger="true"] {
2137
+ border-color: rgba(155, 45, 45, 0.22);
2138
+ background: rgba(155, 45, 45, 0.08);
2139
+ color: #8b1e1e;
2140
+ }
2141
+
2142
+ .vf-editor-upload-empty {
2143
+ padding: 20px 10px;
2144
+ border: 1px dashed rgba(191, 164, 109, 0.24);
2145
+ border-radius: 10px;
2146
+ color: #7b879b;
2147
+ font-size: 0.8rem;
2148
+ font-weight: 800;
2149
+ text-align: center;
1033
2150
  }
1034
2151
 
1035
2152
  .vf-editor-chat-attachment {
@@ -1303,7 +2420,7 @@ export const TEMPLATE_EDITOR_SHELL_STYLES = `
1303
2420
  }
1304
2421
  }
1305
2422
 
1306
- @media (max-width: 767px) {
2423
+ @media (max-width: 1024px) {
1307
2424
  .editor-workbench {
1308
2425
  padding-bottom: 12px;
1309
2426
  }
@@ -1314,6 +2431,7 @@ export const TEMPLATE_EDITOR_SHELL_STYLES = `
1314
2431
  gap: 8px;
1315
2432
  padding: 8px;
1316
2433
  border-radius: 18px;
2434
+ flex-wrap: nowrap;
1317
2435
  }
1318
2436
 
1319
2437
  .editor-nav-title {
@@ -1323,6 +2441,10 @@ export const TEMPLATE_EDITOR_SHELL_STYLES = `
1323
2441
  white-space: nowrap;
1324
2442
  }
1325
2443
 
2444
+ .editor-nav-account {
2445
+ display: none;
2446
+ }
2447
+
1326
2448
  .editor-right-rail {
1327
2449
  position: fixed !important;
1328
2450
  inset: 0;
@@ -1466,6 +2588,83 @@ export const TEMPLATE_EDITOR_SHELL_STYLES = `
1466
2588
  .vf-editor-chat-thread-chip {
1467
2589
  max-width: 72vw;
1468
2590
  }
2591
+
2592
+ .vf-editor-chat-shell[data-layout="brainstorm"] {
2593
+ pointer-events: auto;
2594
+ }
2595
+
2596
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-mobile-fab {
2597
+ display: none;
2598
+ }
2599
+
2600
+ .vf-editor-chat-shell[data-layout="brainstorm"] .editor-chat-panel,
2601
+ .vf-editor-chat-shell[data-layout="brainstorm"] {
2602
+ background: transparent;
2603
+ }
2604
+
2605
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-brainstorm-layout {
2606
+ grid-template-columns: minmax(0, 1fr);
2607
+ }
2608
+
2609
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-thread {
2610
+ position: relative;
2611
+ inset: auto;
2612
+ display: grid;
2613
+ grid-template-rows: auto minmax(0, 1fr) auto;
2614
+ width: 100%;
2615
+ height: 100%;
2616
+ min-height: 0;
2617
+ border-radius: 0;
2618
+ }
2619
+
2620
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-history-scrim {
2621
+ position: fixed;
2622
+ inset: 0;
2623
+ z-index: 25;
2624
+ display: block;
2625
+ border: 0;
2626
+ background: rgba(31, 38, 53, 0.42);
2627
+ opacity: 0;
2628
+ pointer-events: none;
2629
+ transition: opacity 160ms ease;
2630
+ }
2631
+
2632
+ .vf-editor-chat-shell[data-layout="brainstorm"][data-mobile-open="true"] .vf-editor-chat-history-scrim {
2633
+ opacity: 1;
2634
+ pointer-events: auto;
2635
+ }
2636
+
2637
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-history-pane {
2638
+ position: fixed;
2639
+ top: 0;
2640
+ left: 0;
2641
+ bottom: 0;
2642
+ z-index: 26;
2643
+ width: min(84vw, 320px);
2644
+ transform: translateX(-104%);
2645
+ transition: transform 180ms ease;
2646
+ box-shadow: 18px 0 34px rgba(37, 45, 61, 0.18);
2647
+ }
2648
+
2649
+ .vf-editor-chat-shell[data-layout="brainstorm"][data-mobile-open="true"] .vf-editor-chat-history-pane {
2650
+ transform: translateX(0);
2651
+ }
2652
+
2653
+ .vf-editor-chat-history-close,
2654
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-history-toggle {
2655
+ display: inline-flex;
2656
+ }
2657
+
2658
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-viewport {
2659
+ padding-left: 12px;
2660
+ padding-right: 12px;
2661
+ }
2662
+ }
2663
+
2664
+ @media (min-width: 1025px) {
2665
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-history-toggle {
2666
+ display: none;
2667
+ }
1469
2668
  }
1470
2669
  `;
1471
2670
  export const TEMPLATE_EDITOR_SHELL_SCRIPT = `
@@ -1495,13 +2694,20 @@ export const TEMPLATE_EDITOR_SHELL_SCRIPT = `
1495
2694
  });
1496
2695
  `;
1497
2696
  export function renderTemplateEditorChrome(input) {
2697
+ const email = input.account?.email?.trim() || "";
2698
+ const displayName = resolveAccountDisplayName(input.account);
2699
+ const accountMeta = email
2700
+ ? `<div class="editor-nav-account">${escapeHtml(displayName)} <span>(${escapeHtml(email)})</span></div>`
2701
+ : "";
1498
2702
  return `
1499
- <nav class="editor-floating-nav" aria-label="Template editor">
1500
- <a class="editor-back-link" href="${escapeAttribute(input.backHref)}">Back</a>
2703
+ <nav class="editor-floating-nav" aria-label="HyperFrames workspace">
2704
+ <a class="editor-back-link" href="${escapeAttribute(input.backHref)}">Back to Studio</a>
1501
2705
  <div class="editor-nav-title">${escapeHtml(input.templateTitle)}</div>
2706
+ ${accountMeta}
1502
2707
  </nav>
1503
- <aside class="editor-right-rail" aria-label="Chat panel">
2708
+ <aside class="editor-right-rail" aria-label="Layer copilot panel">
1504
2709
  <div class="editor-chat-panel" data-template-editor-chat-root></div>
1505
2710
  </aside>
1506
2711
  `;
1507
2712
  }
2713
+ //# sourceMappingURL=template-editor-shell.js.map