@mevdragon/vidfarm-devcli 0.2.12 → 0.2.14

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