@jay-framework/aiditor 0.19.6 → 0.19.7
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.
- package/dist/actions/cancel-agent-task.jay-action +9 -0
- package/dist/actions/cancel-agent-task.jay-action.d.ts +8 -0
- package/dist/actions/check-aiditor-publish.jay-action +7 -0
- package/dist/actions/check-aiditor-publish.jay-action.d.ts +5 -0
- package/dist/actions/run-aiditor-publish.jay-action +7 -0
- package/dist/actions/run-aiditor-publish.jay-action.d.ts +5 -0
- package/dist/index.client.d.ts +165 -186
- package/dist/index.client.js +2672 -1120
- package/dist/index.d.ts +48 -3
- package/dist/index.js +246 -28
- package/dist/pages/aiditor/page.css +746 -67
- package/dist/pages/aiditor/page.jay-html +1573 -520
- package/package.json +10 -6
- package/plugin.yaml +6 -0
|
@@ -29,11 +29,15 @@
|
|
|
29
29
|
--harmony-shadow-sm: 0 1px 4px rgba(22, 45, 61, 0.06);
|
|
30
30
|
--harmony-shadow-md: 0 4px 24px rgba(22, 45, 61, 0.1);
|
|
31
31
|
--harmony-shadow-lg: 0 8px 40px rgba(22, 45, 61, 0.12);
|
|
32
|
+
--harmony-shadow-add-btn:
|
|
33
|
+
0 1px 2px rgba(22, 45, 61, 0.05),
|
|
34
|
+
0 4px 14px rgba(22, 45, 61, 0.1),
|
|
35
|
+
0 10px 28px rgba(22, 45, 61, 0.08);
|
|
32
36
|
--harmony-radius-sm: 6px;
|
|
33
37
|
--harmony-radius-md: 10px;
|
|
34
38
|
--harmony-radius-lg: 16px;
|
|
35
39
|
--harmony-radius-pill: 999px;
|
|
36
|
-
--harmony-sidebar-width:
|
|
40
|
+
--harmony-sidebar-width: 72px;
|
|
37
41
|
--harmony-global-bar-height: 52px;
|
|
38
42
|
--harmony-secondary-bar-height: 44px;
|
|
39
43
|
--harmony-font: 'Madefor', 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
|
@@ -146,25 +150,69 @@
|
|
|
146
150
|
flex: 1;
|
|
147
151
|
display: flex;
|
|
148
152
|
flex-direction: column;
|
|
153
|
+
align-items: center;
|
|
149
154
|
min-height: 0;
|
|
150
|
-
padding: 20px
|
|
151
|
-
overflow:
|
|
155
|
+
padding: 20px 40px 72px;
|
|
156
|
+
overflow-x: visible;
|
|
157
|
+
overflow-y: hidden;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.canvas-stage-shell {
|
|
161
|
+
position: relative;
|
|
162
|
+
flex: 1;
|
|
163
|
+
display: flex;
|
|
164
|
+
flex-direction: column;
|
|
165
|
+
min-height: 0;
|
|
166
|
+
max-width: 100%;
|
|
167
|
+
align-self: center;
|
|
152
168
|
}
|
|
153
169
|
|
|
154
170
|
.canvas-window {
|
|
171
|
+
position: relative;
|
|
155
172
|
flex: 1;
|
|
156
173
|
display: flex;
|
|
157
174
|
flex-direction: column;
|
|
158
175
|
min-height: 0;
|
|
159
|
-
max-width: 1280px;
|
|
160
176
|
width: 100%;
|
|
161
|
-
|
|
177
|
+
max-width: 100%;
|
|
162
178
|
background: var(--harmony-bg-surface);
|
|
163
179
|
border: 1px solid var(--harmony-border);
|
|
164
180
|
border-radius: var(--harmony-radius-lg);
|
|
165
181
|
box-shadow: var(--harmony-shadow-md);
|
|
166
182
|
overflow: hidden;
|
|
167
183
|
}
|
|
184
|
+
.stage-resize-handle {
|
|
185
|
+
position: absolute;
|
|
186
|
+
top: 50%;
|
|
187
|
+
z-index: 12;
|
|
188
|
+
width: 10px;
|
|
189
|
+
height: 56px;
|
|
190
|
+
border: 1px solid var(--harmony-border-strong);
|
|
191
|
+
border-radius: var(--harmony-radius-pill);
|
|
192
|
+
background: var(--harmony-bg-surface);
|
|
193
|
+
box-shadow: var(--harmony-shadow-sm);
|
|
194
|
+
cursor: col-resize;
|
|
195
|
+
touch-action: none;
|
|
196
|
+
}
|
|
197
|
+
.stage-resize-handle::before {
|
|
198
|
+
content: "";
|
|
199
|
+
position: absolute;
|
|
200
|
+
top: 50%;
|
|
201
|
+
left: 50%;
|
|
202
|
+
width: 2px;
|
|
203
|
+
height: 20px;
|
|
204
|
+
margin: -10px 0 0 -1px;
|
|
205
|
+
border-radius: 1px;
|
|
206
|
+
background: var(--harmony-border-strong);
|
|
207
|
+
}
|
|
208
|
+
.stage-resize-handle-left {
|
|
209
|
+
left: 0;
|
|
210
|
+
transform: translate(calc(-100% - 8px), -50%);
|
|
211
|
+
}
|
|
212
|
+
.stage-resize-handle-right {
|
|
213
|
+
right: 0;
|
|
214
|
+
transform: translate(calc(100% + 8px), -50%);
|
|
215
|
+
}
|
|
168
216
|
|
|
169
217
|
.canvas-chrome {
|
|
170
218
|
flex-shrink: 0;
|
|
@@ -185,30 +233,63 @@
|
|
|
185
233
|
}
|
|
186
234
|
|
|
187
235
|
/* Floating annotation toolbar — centered at bottom of canvas stage */
|
|
188
|
-
.annotate-dock {
|
|
236
|
+
.annotate-dock-wrap {
|
|
189
237
|
position: absolute;
|
|
190
238
|
bottom: 20px;
|
|
191
239
|
left: 50%;
|
|
192
240
|
transform: translateX(-50%);
|
|
193
241
|
z-index: 60;
|
|
194
242
|
display: flex;
|
|
243
|
+
flex-direction: column;
|
|
195
244
|
align-items: center;
|
|
196
|
-
gap:
|
|
197
|
-
|
|
245
|
+
gap: 8px;
|
|
246
|
+
pointer-events: none;
|
|
247
|
+
}
|
|
248
|
+
.annotate-dock-wrap > * { pointer-events: auto; }
|
|
249
|
+
.clear-markers-confirm {
|
|
250
|
+
display: flex;
|
|
251
|
+
align-items: center;
|
|
252
|
+
gap: 10px;
|
|
253
|
+
padding: 8px 14px;
|
|
198
254
|
background: var(--harmony-bg-surface);
|
|
199
255
|
border: 1px solid var(--harmony-border);
|
|
200
256
|
border-radius: var(--harmony-radius-pill);
|
|
201
257
|
box-shadow: 0 6px 28px rgba(22, 45, 61, 0.14), 0 2px 6px rgba(22, 45, 61, 0.06);
|
|
202
|
-
|
|
258
|
+
font-size: 13px;
|
|
259
|
+
color: var(--harmony-text);
|
|
260
|
+
white-space: nowrap;
|
|
203
261
|
}
|
|
204
|
-
.
|
|
262
|
+
.clear-markers-confirm-msg { color: var(--harmony-text-secondary); }
|
|
263
|
+
.clear-markers-cancel-btn,
|
|
264
|
+
.clear-markers-confirm-btn {
|
|
265
|
+
border-radius: var(--harmony-radius-pill);
|
|
266
|
+
padding: 5px 12px;
|
|
205
267
|
font-size: 12px;
|
|
206
268
|
font-weight: 600;
|
|
207
|
-
|
|
208
|
-
padding: 0 8px 0 4px;
|
|
269
|
+
cursor: pointer;
|
|
209
270
|
white-space: nowrap;
|
|
210
|
-
|
|
211
|
-
|
|
271
|
+
}
|
|
272
|
+
.clear-markers-cancel-btn {
|
|
273
|
+
background: var(--harmony-bg-surface);
|
|
274
|
+
color: var(--harmony-text);
|
|
275
|
+
border: 1px solid var(--harmony-border);
|
|
276
|
+
}
|
|
277
|
+
.clear-markers-cancel-btn:hover { background: var(--harmony-bg-hover); }
|
|
278
|
+
.clear-markers-confirm-btn {
|
|
279
|
+
background: var(--harmony-danger, #d64545);
|
|
280
|
+
color: #fff;
|
|
281
|
+
border: none;
|
|
282
|
+
}
|
|
283
|
+
.clear-markers-confirm-btn:hover { opacity: 0.9; }
|
|
284
|
+
.annotate-dock {
|
|
285
|
+
display: flex;
|
|
286
|
+
align-items: center;
|
|
287
|
+
gap: 2px;
|
|
288
|
+
padding: 5px 8px;
|
|
289
|
+
background: var(--harmony-bg-surface);
|
|
290
|
+
border: 1px solid var(--harmony-border);
|
|
291
|
+
border-radius: var(--harmony-radius-pill);
|
|
292
|
+
box-shadow: 0 6px 28px rgba(22, 45, 61, 0.14), 0 2px 6px rgba(22, 45, 61, 0.06);
|
|
212
293
|
}
|
|
213
294
|
|
|
214
295
|
/* ── Global top bar aliases (legacy class names) ── */
|
|
@@ -249,11 +330,187 @@
|
|
|
249
330
|
color: var(--harmony-text-secondary);
|
|
250
331
|
white-space: nowrap;
|
|
251
332
|
}
|
|
252
|
-
|
|
333
|
+
|
|
334
|
+
/* Harmony-style nav button (routes / snapshots picker trigger) */
|
|
335
|
+
.harmony-nav-btn {
|
|
336
|
+
display: inline-flex;
|
|
337
|
+
align-items: center;
|
|
338
|
+
gap: 4px;
|
|
339
|
+
max-width: min(320px, 42vw);
|
|
340
|
+
padding: 6px 10px;
|
|
341
|
+
background: transparent;
|
|
342
|
+
color: var(--harmony-text);
|
|
343
|
+
border: 1px solid transparent;
|
|
344
|
+
border-radius: var(--harmony-radius-sm);
|
|
345
|
+
font-size: 13px;
|
|
346
|
+
font-weight: 500;
|
|
347
|
+
font-family: var(--harmony-font);
|
|
348
|
+
cursor: pointer;
|
|
349
|
+
white-space: nowrap;
|
|
350
|
+
flex-shrink: 0;
|
|
351
|
+
}
|
|
352
|
+
.harmony-nav-btn:hover {
|
|
353
|
+
background: var(--harmony-bg-hover);
|
|
354
|
+
}
|
|
355
|
+
.harmony-nav-btn-active,
|
|
356
|
+
.harmony-nav-btn-active:hover {
|
|
357
|
+
background: var(--harmony-bg-hover);
|
|
358
|
+
border-color: var(--harmony-primary);
|
|
359
|
+
box-shadow: 0 0 0 3px var(--harmony-primary-soft);
|
|
360
|
+
}
|
|
361
|
+
.harmony-nav-btn-prefix {
|
|
362
|
+
color: var(--harmony-text-secondary);
|
|
363
|
+
font-weight: 600;
|
|
364
|
+
flex-shrink: 0;
|
|
365
|
+
}
|
|
366
|
+
.harmony-nav-btn-label {
|
|
367
|
+
overflow: hidden;
|
|
368
|
+
text-overflow: ellipsis;
|
|
369
|
+
font-family: var(--harmony-font);
|
|
370
|
+
font-size: 13px;
|
|
371
|
+
font-weight: 500;
|
|
372
|
+
}
|
|
373
|
+
.harmony-nav-btn-chevron {
|
|
374
|
+
flex-shrink: 0;
|
|
375
|
+
color: var(--harmony-text);
|
|
376
|
+
font-size: 11px;
|
|
377
|
+
line-height: 1;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
/* Floating routes panel (Harmony site-overview style) */
|
|
381
|
+
.harmony-routes-panel-overlay {
|
|
382
|
+
position: fixed;
|
|
383
|
+
inset: 0;
|
|
384
|
+
z-index: 220;
|
|
385
|
+
background: rgba(22, 45, 61, 0.12);
|
|
386
|
+
}
|
|
387
|
+
.harmony-routes-panel {
|
|
388
|
+
position: absolute;
|
|
389
|
+
top: 56px;
|
|
390
|
+
left: 16px;
|
|
391
|
+
width: min(380px, calc(100vw - 32px));
|
|
392
|
+
max-height: min(72vh, 620px);
|
|
393
|
+
display: flex;
|
|
394
|
+
flex-direction: column;
|
|
395
|
+
background: var(--harmony-bg-surface);
|
|
396
|
+
border: 1px solid var(--harmony-border);
|
|
397
|
+
border-radius: var(--harmony-radius-lg);
|
|
398
|
+
box-shadow: var(--harmony-shadow-lg);
|
|
399
|
+
overflow: hidden;
|
|
400
|
+
}
|
|
401
|
+
.harmony-routes-panel-header {
|
|
402
|
+
flex-shrink: 0;
|
|
403
|
+
display: flex;
|
|
404
|
+
align-items: center;
|
|
405
|
+
justify-content: space-between;
|
|
406
|
+
gap: 8px;
|
|
407
|
+
padding: 14px 16px;
|
|
408
|
+
border-bottom: 1px solid var(--harmony-border);
|
|
409
|
+
background: var(--harmony-bg-subtle, #f8f9fb);
|
|
410
|
+
}
|
|
411
|
+
.harmony-routes-panel-title {
|
|
412
|
+
font-size: 14px;
|
|
413
|
+
font-weight: 600;
|
|
414
|
+
color: var(--harmony-text);
|
|
415
|
+
}
|
|
416
|
+
.harmony-routes-panel-close {
|
|
417
|
+
background: none;
|
|
418
|
+
border: none;
|
|
419
|
+
color: var(--harmony-text-muted);
|
|
420
|
+
font-size: 20px;
|
|
421
|
+
cursor: pointer;
|
|
422
|
+
line-height: 1;
|
|
423
|
+
padding: 0 4px;
|
|
424
|
+
}
|
|
425
|
+
.harmony-routes-panel-close:hover { color: var(--harmony-text); }
|
|
426
|
+
.harmony-routes-panel-search-row {
|
|
427
|
+
flex-shrink: 0;
|
|
428
|
+
padding: 12px 16px;
|
|
429
|
+
border-bottom: 1px solid var(--harmony-border);
|
|
430
|
+
}
|
|
431
|
+
.harmony-routes-panel-search-input {
|
|
432
|
+
width: 100%;
|
|
433
|
+
box-sizing: border-box;
|
|
434
|
+
padding: 8px 12px;
|
|
435
|
+
font-size: 13px;
|
|
436
|
+
font-family: var(--harmony-font);
|
|
437
|
+
color: var(--harmony-text);
|
|
438
|
+
background: var(--harmony-bg-surface);
|
|
439
|
+
border: 1px solid var(--harmony-border);
|
|
440
|
+
border-radius: var(--harmony-radius-sm);
|
|
441
|
+
outline: none;
|
|
442
|
+
}
|
|
443
|
+
.harmony-routes-panel-search-input:focus {
|
|
444
|
+
border-color: var(--harmony-primary);
|
|
445
|
+
box-shadow: 0 0 0 3px var(--harmony-primary-soft);
|
|
446
|
+
}
|
|
447
|
+
.harmony-routes-panel-search-input::placeholder {
|
|
448
|
+
color: var(--harmony-text-muted);
|
|
449
|
+
}
|
|
450
|
+
.harmony-routes-panel-body {
|
|
451
|
+
flex: 1;
|
|
452
|
+
min-height: 0;
|
|
453
|
+
overflow-y: auto;
|
|
454
|
+
padding: 8px 0;
|
|
455
|
+
}
|
|
456
|
+
.harmony-routes-panel-section-title {
|
|
457
|
+
margin: 0;
|
|
458
|
+
padding: 10px 16px 6px;
|
|
459
|
+
font-size: 11px;
|
|
460
|
+
font-weight: 600;
|
|
461
|
+
letter-spacing: 0.04em;
|
|
462
|
+
text-transform: uppercase;
|
|
463
|
+
color: var(--harmony-text-muted);
|
|
464
|
+
}
|
|
465
|
+
.harmony-routes-panel-section-title + .harmony-routes-panel-item,
|
|
466
|
+
.harmony-routes-panel-item + .harmony-routes-panel-section-title {
|
|
467
|
+
margin-top: 4px;
|
|
468
|
+
padding-top: 14px;
|
|
469
|
+
border-top: 1px solid var(--harmony-border);
|
|
470
|
+
}
|
|
471
|
+
.harmony-routes-panel-item {
|
|
253
472
|
display: flex;
|
|
254
473
|
align-items: center;
|
|
255
474
|
gap: 8px;
|
|
475
|
+
width: 100%;
|
|
476
|
+
box-sizing: border-box;
|
|
477
|
+
padding: 9px 16px;
|
|
478
|
+
border: none;
|
|
479
|
+
background: transparent;
|
|
480
|
+
color: var(--harmony-text);
|
|
481
|
+
font-size: 13px;
|
|
482
|
+
font-family: var(--harmony-mono);
|
|
483
|
+
text-align: left;
|
|
484
|
+
cursor: pointer;
|
|
485
|
+
}
|
|
486
|
+
.harmony-routes-panel-item:hover {
|
|
487
|
+
background: var(--harmony-bg-hover);
|
|
488
|
+
}
|
|
489
|
+
.harmony-routes-panel-item--selected {
|
|
490
|
+
background: var(--harmony-primary-soft);
|
|
491
|
+
color: var(--harmony-primary);
|
|
492
|
+
font-weight: 600;
|
|
493
|
+
}
|
|
494
|
+
.harmony-routes-panel-check {
|
|
495
|
+
flex-shrink: 0;
|
|
496
|
+
width: 16px;
|
|
497
|
+
font-size: 13px;
|
|
498
|
+
line-height: 1;
|
|
499
|
+
text-align: center;
|
|
500
|
+
}
|
|
501
|
+
.harmony-routes-panel-item-label {
|
|
502
|
+
flex: 1;
|
|
256
503
|
min-width: 0;
|
|
504
|
+
overflow: hidden;
|
|
505
|
+
text-overflow: ellipsis;
|
|
506
|
+
white-space: nowrap;
|
|
507
|
+
}
|
|
508
|
+
.harmony-routes-panel-empty {
|
|
509
|
+
margin: 0;
|
|
510
|
+
padding: 16px;
|
|
511
|
+
font-size: 13px;
|
|
512
|
+
color: var(--harmony-text-secondary);
|
|
513
|
+
text-align: center;
|
|
257
514
|
}
|
|
258
515
|
|
|
259
516
|
.aiditor-logo {
|
|
@@ -290,8 +547,7 @@
|
|
|
290
547
|
.aiditor-dropdown option { background: #fff; color: var(--harmony-text); }
|
|
291
548
|
.harmony-page-select { flex: 1; min-width: 160px; }
|
|
292
549
|
.preview-path-select { flex: 1; min-width: 0; max-width: 400px; }
|
|
293
|
-
.
|
|
294
|
-
.params-loading-hint { font-size: 11px; color: var(--harmony-text-muted); white-space: nowrap; flex-shrink: 0; }
|
|
550
|
+
.freeze-select { min-width: 140px; max-width: 220px; font-family: var(--harmony-font); }
|
|
295
551
|
|
|
296
552
|
/* Harmony buttons */
|
|
297
553
|
.harmony-btn-primary {
|
|
@@ -308,6 +564,7 @@
|
|
|
308
564
|
}
|
|
309
565
|
.harmony-btn-primary:hover { background: var(--harmony-primary-hover); }
|
|
310
566
|
.harmony-btn-primary:disabled { opacity: 0.5; cursor: not-allowed; }
|
|
567
|
+
.aiditor-publish-btn { min-width: 88px; border-radius: var(--harmony-radius-sm); }
|
|
311
568
|
|
|
312
569
|
.harmony-btn-secondary {
|
|
313
570
|
background: var(--harmony-bg-surface);
|
|
@@ -328,69 +585,255 @@
|
|
|
328
585
|
.add-page-from-brief-btn { /* inherits harmony-btn-secondary */ }
|
|
329
586
|
.project-settings-btn { /* inherits harmony-btn-secondary */ }
|
|
330
587
|
|
|
331
|
-
.harmony-editor-body
|
|
332
|
-
.harmony-sidebar,
|
|
333
|
-
.harmony-secondary-bar { display: none !important; }
|
|
334
|
-
.harmony-workspace { display: contents; }
|
|
335
|
-
.preview-visual-tools { display: flex; flex-shrink: 0; gap: 2px; align-items: center; }
|
|
336
|
-
|
|
337
|
-
.visual-tool-btn {
|
|
338
|
-
background: transparent;
|
|
339
|
-
color: var(--harmony-text-secondary);
|
|
340
|
-
border: none;
|
|
341
|
-
border-radius: var(--harmony-radius-sm);
|
|
342
|
-
padding: 7px 10px;
|
|
343
|
-
font-size: 12px;
|
|
344
|
-
cursor: pointer;
|
|
345
|
-
line-height: 1;
|
|
346
|
-
display: inline-flex;
|
|
347
|
-
align-items: center;
|
|
348
|
-
justify-content: center;
|
|
349
|
-
min-width: 34px;
|
|
350
|
-
min-height: 34px;
|
|
351
|
-
}
|
|
352
|
-
.visual-tool-btn:hover { background: var(--harmony-bg-hover); color: var(--harmony-text); }
|
|
353
|
-
.visual-tool-on {
|
|
354
|
-
background: var(--harmony-primary-soft) !important;
|
|
355
|
-
color: var(--harmony-primary) !important;
|
|
356
|
-
}
|
|
357
|
-
.tool-group-sep {
|
|
358
|
-
width: 1px;
|
|
359
|
-
background: var(--harmony-border);
|
|
360
|
-
align-self: stretch;
|
|
361
|
-
margin: 0 4px;
|
|
362
|
-
flex-shrink: 0;
|
|
363
|
-
}
|
|
364
|
-
|
|
365
|
-
/* Canvas aliases */
|
|
366
|
-
.harmony-canvas-area,
|
|
367
|
-
.canvas-workspace {
|
|
588
|
+
.harmony-editor-body {
|
|
368
589
|
flex: 1;
|
|
369
590
|
display: flex;
|
|
370
|
-
flex-direction: column;
|
|
371
591
|
min-height: 0;
|
|
372
|
-
padding: 20px 28px 72px;
|
|
373
|
-
gap: 10px;
|
|
374
592
|
overflow: hidden;
|
|
593
|
+
position: relative;
|
|
375
594
|
}
|
|
376
|
-
.harmony-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
595
|
+
.harmony-float-rail {
|
|
596
|
+
position: absolute;
|
|
597
|
+
inset: 0;
|
|
598
|
+
z-index: 30;
|
|
599
|
+
pointer-events: none;
|
|
600
|
+
}
|
|
601
|
+
.harmony-add-btn {
|
|
602
|
+
position: absolute;
|
|
603
|
+
top: 16px;
|
|
604
|
+
left: 16px;
|
|
605
|
+
display: inline-flex;
|
|
606
|
+
align-items: center;
|
|
607
|
+
justify-content: center;
|
|
608
|
+
gap: 4px;
|
|
609
|
+
padding: 8px 14px;
|
|
382
610
|
background: var(--harmony-bg-surface);
|
|
611
|
+
color: var(--harmony-text);
|
|
383
612
|
border: 1px solid var(--harmony-border);
|
|
384
|
-
border-radius: var(--harmony-radius-
|
|
385
|
-
box-shadow: var(--harmony-shadow-
|
|
386
|
-
|
|
613
|
+
border-radius: var(--harmony-radius-md);
|
|
614
|
+
box-shadow: var(--harmony-shadow-add-btn);
|
|
615
|
+
font-size: 13px;
|
|
616
|
+
font-weight: 600;
|
|
617
|
+
font-family: var(--harmony-font);
|
|
618
|
+
cursor: pointer;
|
|
619
|
+
white-space: nowrap;
|
|
620
|
+
line-height: 1.2;
|
|
621
|
+
pointer-events: auto;
|
|
387
622
|
}
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
623
|
+
.harmony-add-btn:hover {
|
|
624
|
+
background: var(--harmony-bg-hover);
|
|
625
|
+
border-color: var(--harmony-border-strong);
|
|
626
|
+
box-shadow:
|
|
627
|
+
0 2px 4px rgba(22, 45, 61, 0.06),
|
|
628
|
+
0 6px 18px rgba(22, 45, 61, 0.12),
|
|
629
|
+
0 12px 32px rgba(22, 45, 61, 0.09);
|
|
630
|
+
}
|
|
631
|
+
.harmony-add-btn:disabled { opacity: 0.5; cursor: not-allowed; }
|
|
632
|
+
.harmony-add-btn-open {
|
|
633
|
+
background: var(--harmony-bg-hover);
|
|
634
|
+
border-color: var(--harmony-border-strong);
|
|
635
|
+
box-shadow:
|
|
636
|
+
inset 0 1px 2px rgba(22, 45, 61, 0.06),
|
|
637
|
+
0 1px 2px rgba(22, 45, 61, 0.04);
|
|
638
|
+
}
|
|
639
|
+
.harmony-stage-icon-btn {
|
|
640
|
+
position: absolute;
|
|
641
|
+
left: 20px;
|
|
642
|
+
bottom: 20px;
|
|
643
|
+
z-index: 25;
|
|
391
644
|
display: flex;
|
|
392
645
|
align-items: center;
|
|
393
|
-
|
|
646
|
+
justify-content: center;
|
|
647
|
+
width: auto;
|
|
648
|
+
height: auto;
|
|
649
|
+
padding: 4px;
|
|
650
|
+
background: none;
|
|
651
|
+
border: none;
|
|
652
|
+
box-shadow: none;
|
|
653
|
+
color: var(--harmony-text);
|
|
654
|
+
font-size: 22px;
|
|
655
|
+
line-height: 1;
|
|
656
|
+
cursor: pointer;
|
|
657
|
+
opacity: 0.72;
|
|
658
|
+
}
|
|
659
|
+
.harmony-stage-icon-btn:hover { opacity: 1; color: var(--harmony-text); }
|
|
660
|
+
.harmony-stage-icon-btn:disabled { opacity: 0.35; cursor: not-allowed; }
|
|
661
|
+
.harmony-add-flyout-backdrop { display: none; position: fixed; inset: 0; z-index: 34; background: transparent; }
|
|
662
|
+
.harmony-add-flyout-backdrop.harmony-add-flyout-visible { display: block; }
|
|
663
|
+
.harmony-add-flyout {
|
|
664
|
+
display: none;
|
|
665
|
+
position: absolute;
|
|
666
|
+
top: 56px;
|
|
667
|
+
left: 16px;
|
|
668
|
+
z-index: 35;
|
|
669
|
+
flex-direction: column;
|
|
670
|
+
gap: 8px;
|
|
671
|
+
padding: 0;
|
|
672
|
+
background: transparent;
|
|
673
|
+
border: none;
|
|
674
|
+
box-shadow: none;
|
|
675
|
+
min-width: 0;
|
|
676
|
+
}
|
|
677
|
+
.harmony-add-flyout.harmony-add-flyout-visible { display: flex; }
|
|
678
|
+
.harmony-add-flyout-item {
|
|
679
|
+
display: flex;
|
|
680
|
+
align-items: center;
|
|
681
|
+
gap: 12px;
|
|
682
|
+
width: 220px;
|
|
683
|
+
padding: 10px 12px;
|
|
684
|
+
background: var(--harmony-bg-surface);
|
|
685
|
+
color: var(--harmony-text);
|
|
686
|
+
border: 1px solid var(--harmony-border);
|
|
687
|
+
border-radius: var(--harmony-radius-md);
|
|
688
|
+
box-shadow: var(--harmony-shadow-md);
|
|
689
|
+
cursor: pointer;
|
|
690
|
+
text-align: left;
|
|
691
|
+
font-family: var(--harmony-font);
|
|
692
|
+
}
|
|
693
|
+
.harmony-add-flyout-item:hover { border-color: var(--harmony-border-strong); box-shadow: var(--harmony-shadow-lg); }
|
|
694
|
+
.harmony-add-flyout-thumb {
|
|
695
|
+
flex-shrink: 0;
|
|
696
|
+
width: 40px;
|
|
697
|
+
height: 40px;
|
|
698
|
+
border-radius: var(--harmony-radius-sm);
|
|
699
|
+
border: 1px solid var(--harmony-border);
|
|
700
|
+
background-size: 24px 24px;
|
|
701
|
+
background-position: center;
|
|
702
|
+
background-repeat: no-repeat;
|
|
703
|
+
}
|
|
704
|
+
.harmony-add-flyout-thumb-pages {
|
|
705
|
+
background-color: #e8f0ff;
|
|
706
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' viewBox='0 0 24 24'%3E%3Crect x='4' y='3' width='16' height='18' rx='2' stroke='%23116dff' stroke-width='1.5'/%3E%3Cpath d='M8 8h8M8 12h8M8 16h5' stroke='%23116dff' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");
|
|
707
|
+
}
|
|
708
|
+
.harmony-add-flyout-thumb-elements {
|
|
709
|
+
background-color: #fff4e8;
|
|
710
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' viewBox='0 0 24 24'%3E%3Crect x='4' y='4' width='7' height='7' rx='1.5' stroke='%23f5a623' stroke-width='1.5'/%3E%3Crect x='13' y='4' width='7' height='7' rx='1.5' stroke='%23f5a623' stroke-width='1.5'/%3E%3Crect x='4' y='13' width='7' height='7' rx='1.5' stroke='%23f5a623' stroke-width='1.5'/%3E%3Crect x='13' y='13' width='7' height='7' rx='1.5' stroke='%23f5a623' stroke-width='1.5'/%3E%3C/svg%3E");
|
|
711
|
+
}
|
|
712
|
+
.harmony-add-flyout-label { font-size: 14px; font-weight: 500; color: var(--harmony-text); }
|
|
713
|
+
.harmony-elements-panel {
|
|
714
|
+
position: absolute;
|
|
715
|
+
top: 0;
|
|
716
|
+
left: 0;
|
|
717
|
+
bottom: 0;
|
|
718
|
+
z-index: 32;
|
|
719
|
+
width: 280px;
|
|
720
|
+
display: flex;
|
|
721
|
+
flex-direction: column;
|
|
722
|
+
background: var(--harmony-bg-surface);
|
|
723
|
+
border-right: 1px solid var(--harmony-border);
|
|
724
|
+
box-shadow: var(--harmony-shadow-md);
|
|
725
|
+
}
|
|
726
|
+
.harmony-elements-panel-header {
|
|
727
|
+
flex-shrink: 0;
|
|
728
|
+
display: flex;
|
|
729
|
+
align-items: center;
|
|
730
|
+
justify-content: space-between;
|
|
731
|
+
gap: 8px;
|
|
732
|
+
padding: 14px 16px;
|
|
733
|
+
border-bottom: 1px solid var(--harmony-border);
|
|
734
|
+
}
|
|
735
|
+
.harmony-elements-panel-title { font-size: 14px; font-weight: 600; color: var(--harmony-text); }
|
|
736
|
+
.harmony-elements-panel-close { background: none; border: none; color: var(--harmony-text-muted); font-size: 20px; cursor: pointer; line-height: 1; padding: 0 4px; }
|
|
737
|
+
.harmony-elements-panel-close:hover { color: var(--harmony-text); }
|
|
738
|
+
.harmony-elements-panel-body { flex: 1; min-height: 0; overflow-y: auto; padding: 12px; display: flex; flex-direction: column; gap: 8px; }
|
|
739
|
+
.harmony-elements-panel-hint { margin: 0; font-size: 12px; color: var(--harmony-text-secondary); line-height: 1.45; }
|
|
740
|
+
.harmony-secondary-bar { display: none !important; }
|
|
741
|
+
.harmony-workspace { flex: 1; display: flex; flex-direction: column; min-width: 0; min-height: 0; overflow: hidden; }
|
|
742
|
+
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
|
|
743
|
+
.preview-visual-tools { display: flex; flex-shrink: 0; gap: 2px; align-items: center; }
|
|
744
|
+
|
|
745
|
+
.visual-tool-btn {
|
|
746
|
+
background: transparent;
|
|
747
|
+
color: var(--harmony-text-secondary);
|
|
748
|
+
border: none;
|
|
749
|
+
border-radius: var(--harmony-radius-sm);
|
|
750
|
+
padding: 7px 10px;
|
|
751
|
+
font-size: 12px;
|
|
752
|
+
cursor: pointer;
|
|
753
|
+
line-height: 1;
|
|
754
|
+
display: inline-flex;
|
|
755
|
+
align-items: center;
|
|
756
|
+
justify-content: center;
|
|
757
|
+
min-width: 34px;
|
|
758
|
+
min-height: 34px;
|
|
759
|
+
}
|
|
760
|
+
.visual-tool-btn:hover { background: var(--harmony-bg-hover); color: var(--harmony-text); }
|
|
761
|
+
.visual-tool-btn:disabled { opacity: 0.45; cursor: not-allowed; }
|
|
762
|
+
.visual-tool-btn:disabled:hover { background: transparent; color: var(--harmony-text-secondary); }
|
|
763
|
+
.send-to-agent-btn { color: var(--harmony-primary) !important; }
|
|
764
|
+
.send-to-agent-btn:disabled { color: var(--harmony-text-secondary) !important; }
|
|
765
|
+
.tool-send-icon { display: block; }
|
|
766
|
+
.tool-glyph {
|
|
767
|
+
font-family: var(--harmony-font);
|
|
768
|
+
font-size: 17px;
|
|
769
|
+
line-height: 1;
|
|
770
|
+
display: inline-block;
|
|
771
|
+
user-select: none;
|
|
772
|
+
}
|
|
773
|
+
.tool-rec-label {
|
|
774
|
+
font-family: var(--harmony-font);
|
|
775
|
+
font-size: 10px;
|
|
776
|
+
font-weight: 700;
|
|
777
|
+
letter-spacing: 0.05em;
|
|
778
|
+
line-height: 1;
|
|
779
|
+
display: inline-block;
|
|
780
|
+
user-select: none;
|
|
781
|
+
}
|
|
782
|
+
.visual-tool-on {
|
|
783
|
+
background: var(--harmony-primary-soft) !important;
|
|
784
|
+
color: var(--harmony-primary) !important;
|
|
785
|
+
}
|
|
786
|
+
.tool-group-sep {
|
|
787
|
+
width: 1px;
|
|
788
|
+
background: var(--harmony-border);
|
|
789
|
+
align-self: stretch;
|
|
790
|
+
margin: 0 4px;
|
|
791
|
+
flex-shrink: 0;
|
|
792
|
+
}
|
|
793
|
+
|
|
794
|
+
/* Canvas aliases */
|
|
795
|
+
.harmony-canvas-area,
|
|
796
|
+
.canvas-workspace {
|
|
797
|
+
flex: 1;
|
|
798
|
+
display: flex;
|
|
799
|
+
flex-direction: column;
|
|
800
|
+
align-items: center;
|
|
801
|
+
min-height: 0;
|
|
802
|
+
padding: 20px 40px 72px;
|
|
803
|
+
gap: 10px;
|
|
804
|
+
overflow-x: visible;
|
|
805
|
+
overflow-y: hidden;
|
|
806
|
+
}
|
|
807
|
+
.canvas-stage-shell {
|
|
808
|
+
position: relative;
|
|
809
|
+
flex: 1;
|
|
810
|
+
display: flex;
|
|
811
|
+
flex-direction: column;
|
|
812
|
+
min-height: 0;
|
|
813
|
+
max-width: 100%;
|
|
814
|
+
align-self: center;
|
|
815
|
+
}
|
|
816
|
+
.harmony-canvas-window,
|
|
817
|
+
.canvas-window {
|
|
818
|
+
position: relative;
|
|
819
|
+
flex: 1;
|
|
820
|
+
display: flex;
|
|
821
|
+
flex-direction: column;
|
|
822
|
+
min-height: 0;
|
|
823
|
+
width: 100%;
|
|
824
|
+
max-width: 100%;
|
|
825
|
+
background: var(--harmony-bg-surface);
|
|
826
|
+
border: 1px solid var(--harmony-border);
|
|
827
|
+
border-radius: var(--harmony-radius-lg);
|
|
828
|
+
box-shadow: var(--harmony-shadow-md);
|
|
829
|
+
overflow: hidden;
|
|
830
|
+
}
|
|
831
|
+
|
|
832
|
+
.harmony-canvas-chrome {
|
|
833
|
+
flex-shrink: 0;
|
|
834
|
+
display: flex;
|
|
835
|
+
align-items: center;
|
|
836
|
+
gap: 12px;
|
|
394
837
|
padding: 10px 16px;
|
|
395
838
|
background: var(--harmony-bg-subtle);
|
|
396
839
|
border-bottom: 1px solid var(--harmony-border);
|
|
@@ -441,8 +884,6 @@
|
|
|
441
884
|
}
|
|
442
885
|
.harmony-canvas-content { flex: 1; }
|
|
443
886
|
.preview-frame { width: 100%; height: 100%; min-height: 360px; border: none; display: block; }
|
|
444
|
-
.preview-frame-tablet { align-self: center; width: 768px; max-width: 100%; }
|
|
445
|
-
.preview-frame-mobile { align-self: center; width: 390px; max-width: 100%; }
|
|
446
887
|
|
|
447
888
|
/* ── Visual annotations ── */
|
|
448
889
|
.visual-overlay { position: absolute; inset: 0; z-index: 2; }
|
|
@@ -456,6 +897,18 @@
|
|
|
456
897
|
background: var(--harmony-primary);
|
|
457
898
|
border: 2px solid #fff;
|
|
458
899
|
box-shadow: var(--harmony-shadow-sm);
|
|
900
|
+
pointer-events: auto;
|
|
901
|
+
cursor: pointer;
|
|
902
|
+
z-index: 3;
|
|
903
|
+
}
|
|
904
|
+
.point-marker.marker-edit-mode {
|
|
905
|
+
cursor: grab;
|
|
906
|
+
}
|
|
907
|
+
.point-marker.marker-edit-mode:active {
|
|
908
|
+
cursor: grabbing;
|
|
909
|
+
}
|
|
910
|
+
.point-marker-open {
|
|
911
|
+
box-shadow: 0 0 0 3px var(--harmony-primary-soft), var(--harmony-shadow-sm);
|
|
459
912
|
}
|
|
460
913
|
.point-marker-idx {
|
|
461
914
|
position: absolute;
|
|
@@ -477,7 +930,39 @@
|
|
|
477
930
|
position: absolute;
|
|
478
931
|
border: 2px dashed var(--harmony-primary);
|
|
479
932
|
background: var(--harmony-primary-soft);
|
|
480
|
-
pointer-events:
|
|
933
|
+
pointer-events: auto;
|
|
934
|
+
cursor: pointer;
|
|
935
|
+
z-index: 2;
|
|
936
|
+
}
|
|
937
|
+
.area-rect.marker-edit-mode {
|
|
938
|
+
cursor: grab;
|
|
939
|
+
}
|
|
940
|
+
.area-rect.marker-edit-mode:active {
|
|
941
|
+
cursor: grabbing;
|
|
942
|
+
}
|
|
943
|
+
.area-resize-handle {
|
|
944
|
+
position: absolute;
|
|
945
|
+
width: 8px;
|
|
946
|
+
height: 8px;
|
|
947
|
+
margin: -4px 0 0 -4px;
|
|
948
|
+
border-radius: 2px;
|
|
949
|
+
background: #fff;
|
|
950
|
+
border: 1px solid var(--harmony-primary);
|
|
951
|
+
box-shadow: var(--harmony-shadow-sm);
|
|
952
|
+
pointer-events: auto;
|
|
953
|
+
z-index: 2;
|
|
954
|
+
}
|
|
955
|
+
.area-resize-nw { left: 0; top: 0; cursor: nwse-resize; }
|
|
956
|
+
.area-resize-n { left: 50%; top: 0; cursor: ns-resize; }
|
|
957
|
+
.area-resize-ne { left: 100%; top: 0; cursor: nesw-resize; }
|
|
958
|
+
.area-resize-e { left: 100%; top: 50%; cursor: ew-resize; }
|
|
959
|
+
.area-resize-se { left: 100%; top: 100%; cursor: nwse-resize; }
|
|
960
|
+
.area-resize-s { left: 50%; top: 100%; cursor: ns-resize; }
|
|
961
|
+
.area-resize-sw { left: 0; top: 100%; cursor: nesw-resize; }
|
|
962
|
+
.area-resize-w { left: 0; top: 50%; cursor: ew-resize; }
|
|
963
|
+
.area-rect-open {
|
|
964
|
+
border-style: solid;
|
|
965
|
+
box-shadow: 0 0 0 2px var(--harmony-primary-soft);
|
|
481
966
|
}
|
|
482
967
|
.area-marker-idx {
|
|
483
968
|
position: absolute;
|
|
@@ -497,37 +982,6 @@
|
|
|
497
982
|
z-index: 1;
|
|
498
983
|
}
|
|
499
984
|
.area-rect-draft { border-style: solid; border-color: var(--harmony-primary); background: var(--harmony-primary-soft); }
|
|
500
|
-
.arrow-pending-dot {
|
|
501
|
-
position: absolute;
|
|
502
|
-
width: 10px;
|
|
503
|
-
height: 10px;
|
|
504
|
-
margin: -5px 0 0 -5px;
|
|
505
|
-
border-radius: 50%;
|
|
506
|
-
background: var(--harmony-primary);
|
|
507
|
-
border: 2px solid #fff;
|
|
508
|
-
box-shadow: var(--harmony-shadow-sm);
|
|
509
|
-
pointer-events: none;
|
|
510
|
-
}
|
|
511
|
-
.arrow-svg { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
|
|
512
|
-
.arrow-svg line { stroke: var(--harmony-primary); stroke-width: 2; marker-end: url(#aiditor-arrowhead); }
|
|
513
|
-
.arrow-end-pin {
|
|
514
|
-
position: absolute;
|
|
515
|
-
width: 22px;
|
|
516
|
-
height: 22px;
|
|
517
|
-
margin: -11px 0 0 -11px;
|
|
518
|
-
border-radius: 50%;
|
|
519
|
-
background: var(--harmony-primary);
|
|
520
|
-
color: #fff;
|
|
521
|
-
border: 2px solid #fff;
|
|
522
|
-
box-shadow: var(--harmony-shadow-sm);
|
|
523
|
-
font-size: 11px;
|
|
524
|
-
font-weight: 700;
|
|
525
|
-
display: flex;
|
|
526
|
-
align-items: center;
|
|
527
|
-
justify-content: center;
|
|
528
|
-
pointer-events: none;
|
|
529
|
-
z-index: 3;
|
|
530
|
-
}
|
|
531
985
|
.visual-popovers { position: absolute; inset: 0; z-index: 4; pointer-events: none; }
|
|
532
986
|
.visual-popover {
|
|
533
987
|
position: absolute;
|
|
@@ -537,7 +991,7 @@
|
|
|
537
991
|
display: flex;
|
|
538
992
|
flex-direction: column;
|
|
539
993
|
gap: 8px;
|
|
540
|
-
padding: 12px 14px;
|
|
994
|
+
padding: 12px 14px 44px;
|
|
541
995
|
background: var(--harmony-bg-surface);
|
|
542
996
|
border: 1px solid var(--harmony-border);
|
|
543
997
|
border-radius: var(--harmony-radius-md);
|
|
@@ -549,6 +1003,10 @@
|
|
|
549
1003
|
overflow-x: hidden;
|
|
550
1004
|
min-height: 0;
|
|
551
1005
|
}
|
|
1006
|
+
.visual-popover-hidden {
|
|
1007
|
+
display: none !important;
|
|
1008
|
+
pointer-events: none;
|
|
1009
|
+
}
|
|
552
1010
|
.visual-popover-flip-x { transform: translate(calc(-100% - 14px), 10px); }
|
|
553
1011
|
.visual-popover-flip-y { transform: translate(10px, calc(-100% - 14px)); }
|
|
554
1012
|
.visual-popover-flip-x.visual-popover-flip-y { transform: translate(calc(-100% - 14px), calc(-100% - 14px)); }
|
|
@@ -565,18 +1023,19 @@
|
|
|
565
1023
|
cursor: pointer;
|
|
566
1024
|
}
|
|
567
1025
|
.visual-annotation-remove:hover { color: var(--harmony-danger); border-color: var(--harmony-danger); }
|
|
568
|
-
.visual-annotation-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
1026
|
+
.visual-annotation-minimize {
|
|
1027
|
+
display: inline-flex;
|
|
1028
|
+
align-items: center;
|
|
1029
|
+
justify-content: center;
|
|
1030
|
+
background: transparent;
|
|
1031
|
+
color: var(--harmony-text-muted);
|
|
1032
|
+
border: 1px solid var(--harmony-border);
|
|
572
1033
|
border-radius: var(--harmony-radius-sm);
|
|
573
|
-
padding: 4px
|
|
574
|
-
font-size: 11px;
|
|
575
|
-
font-weight: 600;
|
|
1034
|
+
padding: 4px 6px;
|
|
576
1035
|
cursor: pointer;
|
|
1036
|
+
line-height: 0;
|
|
577
1037
|
}
|
|
578
|
-
.visual-annotation-
|
|
579
|
-
.visual-annotation-run:disabled { opacity: 0.45; cursor: not-allowed; }
|
|
1038
|
+
.visual-annotation-minimize:hover { color: var(--harmony-primary); border-color: var(--harmony-primary); }
|
|
580
1039
|
.visual-annotation-instruction {
|
|
581
1040
|
width: 100%;
|
|
582
1041
|
min-height: 48px;
|
|
@@ -592,6 +1051,34 @@
|
|
|
592
1051
|
}
|
|
593
1052
|
.visual-annotation-instruction:focus { border-color: var(--harmony-primary); box-shadow: 0 0 0 3px var(--harmony-primary-soft); }
|
|
594
1053
|
.visual-annotation-files { display: flex; flex-direction: column; gap: 6px; margin-top: 4px; }
|
|
1054
|
+
.visual-annotation-quick-send {
|
|
1055
|
+
position: absolute;
|
|
1056
|
+
right: 10px;
|
|
1057
|
+
bottom: 10px;
|
|
1058
|
+
display: inline-flex;
|
|
1059
|
+
align-items: center;
|
|
1060
|
+
justify-content: center;
|
|
1061
|
+
width: 32px;
|
|
1062
|
+
height: 32px;
|
|
1063
|
+
padding: 0;
|
|
1064
|
+
border: 1px solid var(--harmony-border);
|
|
1065
|
+
border-radius: var(--harmony-radius-sm);
|
|
1066
|
+
background: var(--harmony-bg-surface);
|
|
1067
|
+
color: var(--harmony-primary);
|
|
1068
|
+
cursor: pointer;
|
|
1069
|
+
box-shadow: 0 2px 8px rgba(22, 45, 61, 0.1);
|
|
1070
|
+
z-index: 3;
|
|
1071
|
+
line-height: 0;
|
|
1072
|
+
}
|
|
1073
|
+
.visual-annotation-quick-send:hover:not(:disabled) {
|
|
1074
|
+
background: var(--harmony-primary-soft);
|
|
1075
|
+
border-color: var(--harmony-primary);
|
|
1076
|
+
}
|
|
1077
|
+
.visual-annotation-quick-send:disabled {
|
|
1078
|
+
opacity: 0.45;
|
|
1079
|
+
cursor: not-allowed;
|
|
1080
|
+
color: var(--harmony-text-secondary);
|
|
1081
|
+
}
|
|
595
1082
|
.visual-attach-row { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
|
|
596
1083
|
.visual-attach-btn {
|
|
597
1084
|
background: var(--harmony-bg-subtle);
|
|
@@ -625,7 +1112,7 @@
|
|
|
625
1112
|
.visual-submit-error { font-size: 12px; color: var(--harmony-danger); margin: 0; padding: 0 2px; }
|
|
626
1113
|
.visual-submit-progress { font-size: 12px; color: var(--harmony-primary); margin: 0; padding: 0 2px; }
|
|
627
1114
|
|
|
628
|
-
.video-record-btn {
|
|
1115
|
+
.video-record-btn { color: var(--harmony-primary) !important; }
|
|
629
1116
|
.video-record-active { animation: pulse-rec 1.2s ease-in-out infinite; }
|
|
630
1117
|
@keyframes pulse-rec { 0%,100% { opacity: 1; } 50% { opacity: 0.55; } }
|
|
631
1118
|
|
|
@@ -641,9 +1128,24 @@
|
|
|
641
1128
|
height: 200px;
|
|
642
1129
|
box-shadow: 0 -2px 12px rgba(22, 45, 61, 0.06);
|
|
643
1130
|
}
|
|
644
|
-
.bottom-panel-collapsed {
|
|
1131
|
+
.bottom-panel-collapsed {
|
|
1132
|
+
height: auto !important;
|
|
1133
|
+
max-height: none;
|
|
1134
|
+
overflow: visible;
|
|
1135
|
+
}
|
|
1136
|
+
.bottom-panel-collapsed .bottom-panel-resize,
|
|
1137
|
+
.bottom-panel-collapsed .bottom-panel-body {
|
|
1138
|
+
display: none;
|
|
1139
|
+
}
|
|
645
1140
|
.bottom-panel-resize { height: 4px; cursor: ns-resize; background: transparent; flex-shrink: 0; }
|
|
646
1141
|
.bottom-panel-resize:hover, .bottom-panel-resize:active { background: var(--harmony-primary); }
|
|
1142
|
+
.bottom-panel-body {
|
|
1143
|
+
display: flex;
|
|
1144
|
+
flex-direction: column;
|
|
1145
|
+
flex: 1;
|
|
1146
|
+
min-height: 0;
|
|
1147
|
+
overflow: hidden;
|
|
1148
|
+
}
|
|
647
1149
|
.bottom-panel-header {
|
|
648
1150
|
display: flex;
|
|
649
1151
|
align-items: center;
|
|
@@ -676,6 +1178,40 @@
|
|
|
676
1178
|
.bottom-panel-spacer { flex: 1; }
|
|
677
1179
|
.bottom-panel-clear { background: none; border: none; color: var(--harmony-text-muted); font-size: 11px; cursor: pointer; padding: 2px 6px; }
|
|
678
1180
|
.bottom-panel-clear:hover { color: var(--harmony-text); }
|
|
1181
|
+
.bottom-panel-stop {
|
|
1182
|
+
background: var(--harmony-danger-soft, rgba(220, 38, 38, 0.12));
|
|
1183
|
+
border: 1px solid var(--harmony-danger, #dc2626);
|
|
1184
|
+
color: var(--harmony-danger, #dc2626);
|
|
1185
|
+
font-size: 11px;
|
|
1186
|
+
font-weight: 600;
|
|
1187
|
+
cursor: pointer;
|
|
1188
|
+
padding: 2px 8px;
|
|
1189
|
+
border-radius: 4px;
|
|
1190
|
+
margin-right: 6px;
|
|
1191
|
+
}
|
|
1192
|
+
.bottom-panel-stop:hover { background: var(--harmony-danger, #dc2626); color: #fff; }
|
|
1193
|
+
.bottom-panel-stop-hidden {
|
|
1194
|
+
visibility: hidden;
|
|
1195
|
+
pointer-events: none;
|
|
1196
|
+
}
|
|
1197
|
+
.bottom-panel-header-actions {
|
|
1198
|
+
display: flex;
|
|
1199
|
+
align-items: center;
|
|
1200
|
+
gap: 0;
|
|
1201
|
+
flex-shrink: 0;
|
|
1202
|
+
}
|
|
1203
|
+
.agent-stop-confirm-anchor {
|
|
1204
|
+
position: relative;
|
|
1205
|
+
display: flex;
|
|
1206
|
+
align-items: center;
|
|
1207
|
+
}
|
|
1208
|
+
.agent-stop-confirm-float {
|
|
1209
|
+
position: absolute;
|
|
1210
|
+
right: 0;
|
|
1211
|
+
bottom: calc(100% + 8px);
|
|
1212
|
+
z-index: 30;
|
|
1213
|
+
pointer-events: auto;
|
|
1214
|
+
}
|
|
679
1215
|
.output-panel {
|
|
680
1216
|
overflow-y: auto;
|
|
681
1217
|
padding: 8px 16px;
|
|
@@ -690,12 +1226,28 @@
|
|
|
690
1226
|
}
|
|
691
1227
|
.chunk { color: var(--harmony-text); }
|
|
692
1228
|
.chunk-status { color: var(--harmony-text-muted); font-style: italic; }
|
|
1229
|
+
.chunk-stopped-user {
|
|
1230
|
+
color: var(--harmony-warning, #b45309);
|
|
1231
|
+
font-weight: 700;
|
|
1232
|
+
margin-top: 14px;
|
|
1233
|
+
padding-top: 10px;
|
|
1234
|
+
border-top: 1px dashed var(--harmony-border);
|
|
1235
|
+
}
|
|
693
1236
|
.chunk-tool { color: var(--harmony-primary); }
|
|
694
1237
|
.chunk-error { color: var(--harmony-danger); }
|
|
695
1238
|
.chunk-thinking { color: var(--harmony-text-muted); font-style: italic; }
|
|
696
1239
|
.chunk-result { color: var(--harmony-success); }
|
|
697
1240
|
.chunk-user { color: var(--harmony-text); }
|
|
698
1241
|
.chunk-user-prefix { color: var(--harmony-text-muted); }
|
|
1242
|
+
.chunk-divider {
|
|
1243
|
+
color: var(--harmony-text-muted);
|
|
1244
|
+
font-size: 11px;
|
|
1245
|
+
font-style: italic;
|
|
1246
|
+
text-align: center;
|
|
1247
|
+
border-top: 1px solid var(--harmony-border);
|
|
1248
|
+
margin: 12px 0 8px;
|
|
1249
|
+
padding-top: 10px;
|
|
1250
|
+
}
|
|
699
1251
|
.agent-chat-row {
|
|
700
1252
|
display: flex;
|
|
701
1253
|
gap: 8px;
|
|
@@ -909,54 +1461,410 @@
|
|
|
909
1461
|
overflow: hidden;
|
|
910
1462
|
border: 1px solid var(--harmony-border);
|
|
911
1463
|
}
|
|
912
|
-
.snapshot-img { max-width: 100%; max-height: 100%; object-fit: contain; display: block; user-select: none; -webkit-user-drag: none; }
|
|
913
|
-
.snapshot-img-overlay { position: absolute; inset: 0; z-index: 2; }
|
|
914
|
-
.snapshot-img-overlay-none { pointer-events: none; }
|
|
915
|
-
.snapshot-annotations-panel { flex: 1; min-width: 220px; max-width: 340px; display: flex; flex-direction: column; gap: 8px; overflow-y: auto; }
|
|
916
|
-
.snapshot-annotation-card {
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
border
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
1464
|
+
.snapshot-img { max-width: 100%; max-height: 100%; object-fit: contain; display: block; user-select: none; -webkit-user-drag: none; }
|
|
1465
|
+
.snapshot-img-overlay { position: absolute; inset: 0; z-index: 2; }
|
|
1466
|
+
.snapshot-img-overlay-none { pointer-events: none; }
|
|
1467
|
+
.snapshot-annotations-panel { flex: 1; min-width: 220px; max-width: 340px; display: flex; flex-direction: column; gap: 8px; overflow-y: auto; }
|
|
1468
|
+
.snapshot-annotation-card {
|
|
1469
|
+
position: relative;
|
|
1470
|
+
background: var(--harmony-bg-subtle);
|
|
1471
|
+
border: 1px solid var(--harmony-border);
|
|
1472
|
+
border-radius: var(--harmony-radius-md);
|
|
1473
|
+
padding: 10px 12px 44px;
|
|
1474
|
+
display: flex;
|
|
1475
|
+
flex-direction: column;
|
|
1476
|
+
gap: 6px;
|
|
1477
|
+
}
|
|
1478
|
+
.snapshot-annotation-card-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
|
|
1479
|
+
.snapshot-annotation-kind { font-size: 11px; color: var(--harmony-primary); font-weight: 600; }
|
|
1480
|
+
.snapshot-annotation-remove {
|
|
1481
|
+
background: transparent;
|
|
1482
|
+
color: var(--harmony-text-muted);
|
|
1483
|
+
border: 1px solid var(--harmony-border);
|
|
1484
|
+
border-radius: var(--harmony-radius-sm);
|
|
1485
|
+
padding: 4px 8px;
|
|
1486
|
+
font-size: 11px;
|
|
1487
|
+
cursor: pointer;
|
|
1488
|
+
}
|
|
1489
|
+
.snapshot-annotation-remove:hover { color: var(--harmony-danger); border-color: var(--harmony-danger); }
|
|
1490
|
+
.snapshot-empty-hint { color: var(--harmony-text-muted); font-size: 12px; font-style: italic; padding: 8px 0; }
|
|
1491
|
+
.snapshot-discard-confirm { display: flex; align-items: center; gap: 10px; font-size: 13px; color: var(--harmony-danger); }
|
|
1492
|
+
.snapshot-discard-confirm-msg { flex: 1; }
|
|
1493
|
+
|
|
1494
|
+
/* ── Add Page modal (Harmony-style centered dialog) ── */
|
|
1495
|
+
.add-page-overlay {
|
|
1496
|
+
position: fixed;
|
|
1497
|
+
inset: 0;
|
|
1498
|
+
z-index: 300;
|
|
1499
|
+
background: rgba(255, 255, 255, 0.72);
|
|
1500
|
+
backdrop-filter: blur(14px);
|
|
1501
|
+
-webkit-backdrop-filter: blur(14px);
|
|
1502
|
+
display: flex;
|
|
1503
|
+
align-items: center;
|
|
1504
|
+
justify-content: center;
|
|
1505
|
+
padding: 40px 48px;
|
|
1506
|
+
box-sizing: border-box;
|
|
1507
|
+
}
|
|
1508
|
+
.project-settings-overlay {
|
|
1509
|
+
position: fixed;
|
|
1510
|
+
inset: 0;
|
|
1511
|
+
z-index: 350;
|
|
1512
|
+
background: rgba(22, 45, 61, 0.4);
|
|
1513
|
+
display: flex;
|
|
1514
|
+
align-items: center;
|
|
1515
|
+
justify-content: center;
|
|
1516
|
+
padding: 24px;
|
|
1517
|
+
box-sizing: border-box;
|
|
1518
|
+
}
|
|
1519
|
+
.add-menu-picker-overlay {
|
|
1520
|
+
position: fixed;
|
|
1521
|
+
inset: 0;
|
|
1522
|
+
z-index: 360;
|
|
1523
|
+
background: rgba(22, 45, 61, 0.45);
|
|
1524
|
+
display: flex;
|
|
1525
|
+
align-items: center;
|
|
1526
|
+
justify-content: center;
|
|
1527
|
+
padding: 24px;
|
|
1528
|
+
box-sizing: border-box;
|
|
1529
|
+
}
|
|
1530
|
+
.add-menu-picker-dialog {
|
|
1531
|
+
background: var(--harmony-bg-surface);
|
|
1532
|
+
border: 1px solid var(--harmony-border);
|
|
1533
|
+
border-radius: var(--harmony-radius-lg);
|
|
1534
|
+
width: min(480px, 100%);
|
|
1535
|
+
max-height: min(80vh, 640px);
|
|
1536
|
+
display: flex;
|
|
1537
|
+
flex-direction: column;
|
|
1538
|
+
overflow: hidden;
|
|
1539
|
+
box-shadow: var(--harmony-shadow-lg);
|
|
1540
|
+
}
|
|
1541
|
+
.add-menu-picker-dialog--browse {
|
|
1542
|
+
width: min(720px, 100%);
|
|
1543
|
+
max-height: min(85vh, 720px);
|
|
1544
|
+
}
|
|
1545
|
+
.add-menu-picker-header {
|
|
1546
|
+
display: flex;
|
|
1547
|
+
align-items: center;
|
|
1548
|
+
gap: 8px;
|
|
1549
|
+
padding: 14px 16px;
|
|
1550
|
+
border-bottom: 1px solid var(--harmony-border);
|
|
1551
|
+
background: var(--harmony-bg-subtle);
|
|
1552
|
+
}
|
|
1553
|
+
.add-menu-picker-title {
|
|
1554
|
+
flex: 1;
|
|
1555
|
+
font-size: 14px;
|
|
1556
|
+
font-weight: 600;
|
|
1557
|
+
color: var(--harmony-text);
|
|
1558
|
+
}
|
|
1559
|
+
.add-menu-picker-back,
|
|
1560
|
+
.add-menu-picker-close {
|
|
1561
|
+
background: none;
|
|
1562
|
+
border: none;
|
|
1563
|
+
color: var(--harmony-text-muted);
|
|
1564
|
+
font-size: 13px;
|
|
1565
|
+
cursor: pointer;
|
|
1566
|
+
line-height: 1;
|
|
1567
|
+
padding: 4px 6px;
|
|
1568
|
+
}
|
|
1569
|
+
.add-menu-picker-close { font-size: 20px; }
|
|
1570
|
+
.add-menu-picker-back:hover,
|
|
1571
|
+
.add-menu-picker-close:hover { color: var(--harmony-text); }
|
|
1572
|
+
.add-menu-picker-body {
|
|
1573
|
+
padding: 12px 16px 16px;
|
|
1574
|
+
overflow: auto;
|
|
1575
|
+
display: flex;
|
|
1576
|
+
flex-direction: column;
|
|
1577
|
+
gap: 6px;
|
|
1578
|
+
flex: 1;
|
|
1579
|
+
min-height: 0;
|
|
1580
|
+
}
|
|
1581
|
+
.add-menu-picker-hint {
|
|
1582
|
+
font-size: 12px;
|
|
1583
|
+
color: var(--harmony-text-muted);
|
|
1584
|
+
margin: 0;
|
|
1585
|
+
}
|
|
1586
|
+
.add-menu-picker-plugin-btn,
|
|
1587
|
+
.add-menu-picker-component-card {
|
|
1588
|
+
display: flex;
|
|
1589
|
+
flex-direction: column;
|
|
1590
|
+
align-items: flex-start;
|
|
1591
|
+
gap: 2px;
|
|
1592
|
+
width: 100%;
|
|
1593
|
+
text-align: left;
|
|
1594
|
+
padding: 10px 12px;
|
|
1595
|
+
border: 1px solid var(--harmony-border);
|
|
1596
|
+
border-radius: var(--harmony-radius-md);
|
|
1597
|
+
background: var(--harmony-bg-surface);
|
|
1598
|
+
color: var(--harmony-text);
|
|
1599
|
+
font-family: var(--harmony-font);
|
|
1600
|
+
font-size: 13px;
|
|
1601
|
+
cursor: pointer;
|
|
1602
|
+
}
|
|
1603
|
+
.add-menu-picker-plugin-btn:hover,
|
|
1604
|
+
.add-menu-picker-component-card:hover {
|
|
1605
|
+
background: var(--harmony-bg-hover);
|
|
1606
|
+
border-color: var(--harmony-border-strong);
|
|
1607
|
+
}
|
|
1608
|
+
.add-menu-picker-plugin-meta,
|
|
1609
|
+
.add-menu-picker-component-sub {
|
|
1610
|
+
font-size: 11px;
|
|
1611
|
+
color: var(--harmony-text-muted);
|
|
1612
|
+
}
|
|
1613
|
+
.add-menu-picker-browse {
|
|
1614
|
+
flex: 1;
|
|
1615
|
+
min-height: 0;
|
|
1616
|
+
display: flex;
|
|
1617
|
+
flex-direction: column;
|
|
1618
|
+
gap: 10px;
|
|
1619
|
+
}
|
|
1620
|
+
.add-menu-picker-plugin-tabs {
|
|
1621
|
+
display: flex;
|
|
1622
|
+
flex-wrap: wrap;
|
|
1623
|
+
gap: 6px;
|
|
1624
|
+
}
|
|
1625
|
+
.add-menu-picker-plugin-tab {
|
|
1626
|
+
padding: 6px 12px;
|
|
1627
|
+
border: 1px solid var(--harmony-border);
|
|
1628
|
+
border-radius: 999px;
|
|
1629
|
+
background: var(--harmony-bg-surface);
|
|
1630
|
+
color: var(--harmony-text-muted);
|
|
1631
|
+
font-family: var(--harmony-font);
|
|
1632
|
+
font-size: 12px;
|
|
1633
|
+
cursor: pointer;
|
|
1634
|
+
}
|
|
1635
|
+
.add-menu-picker-plugin-tab:hover {
|
|
1636
|
+
background: var(--harmony-bg-hover);
|
|
1637
|
+
color: var(--harmony-text);
|
|
1638
|
+
}
|
|
1639
|
+
.add-menu-picker-plugin-tab--selected {
|
|
1640
|
+
background: var(--harmony-bg-subtle);
|
|
1641
|
+
color: var(--harmony-text);
|
|
1642
|
+
font-weight: 600;
|
|
1643
|
+
border-color: var(--harmony-border-strong);
|
|
1644
|
+
}
|
|
1645
|
+
.add-menu-picker-browse-layout {
|
|
1646
|
+
display: flex;
|
|
1647
|
+
gap: 0;
|
|
1648
|
+
flex: 1;
|
|
1649
|
+
min-height: 0;
|
|
1650
|
+
border: 1px solid var(--harmony-border);
|
|
1651
|
+
border-radius: var(--harmony-radius-md);
|
|
1652
|
+
overflow: hidden;
|
|
1653
|
+
}
|
|
1654
|
+
.add-menu-picker-sidebar {
|
|
1655
|
+
display: flex;
|
|
1656
|
+
flex-direction: column;
|
|
1657
|
+
width: 168px;
|
|
1658
|
+
flex-shrink: 0;
|
|
1659
|
+
border-right: 1px solid var(--harmony-border);
|
|
1660
|
+
background: var(--harmony-bg-subtle);
|
|
1661
|
+
overflow-y: auto;
|
|
1662
|
+
padding: 8px 6px;
|
|
1663
|
+
gap: 2px;
|
|
1664
|
+
}
|
|
1665
|
+
.add-menu-picker-category-btn {
|
|
1666
|
+
display: flex;
|
|
1667
|
+
align-items: center;
|
|
1668
|
+
justify-content: space-between;
|
|
1669
|
+
gap: 8px;
|
|
1670
|
+
width: 100%;
|
|
1671
|
+
text-align: left;
|
|
1672
|
+
padding: 8px 10px;
|
|
1673
|
+
border: none;
|
|
1674
|
+
border-radius: var(--harmony-radius-md);
|
|
1675
|
+
background: transparent;
|
|
1676
|
+
color: var(--harmony-text);
|
|
1677
|
+
font-family: var(--harmony-font);
|
|
1678
|
+
font-size: 13px;
|
|
1679
|
+
cursor: pointer;
|
|
1680
|
+
}
|
|
1681
|
+
.add-menu-picker-category-btn:hover {
|
|
1682
|
+
background: var(--harmony-bg-hover);
|
|
1683
|
+
}
|
|
1684
|
+
.add-menu-picker-category-btn--selected {
|
|
1685
|
+
background: var(--harmony-bg-surface);
|
|
1686
|
+
font-weight: 600;
|
|
1687
|
+
box-shadow: inset 0 0 0 1px var(--harmony-border);
|
|
1688
|
+
}
|
|
1689
|
+
.add-menu-picker-category-count {
|
|
1690
|
+
font-size: 11px;
|
|
1691
|
+
color: var(--harmony-text-muted);
|
|
1692
|
+
}
|
|
1693
|
+
.add-menu-picker-main {
|
|
1694
|
+
flex: 1;
|
|
1695
|
+
min-width: 0;
|
|
1696
|
+
display: flex;
|
|
1697
|
+
flex-direction: column;
|
|
1698
|
+
padding: 14px 16px 16px;
|
|
1699
|
+
overflow: hidden;
|
|
1700
|
+
}
|
|
1701
|
+
.add-menu-picker-main-title {
|
|
1702
|
+
margin: 0 0 12px;
|
|
1703
|
+
font-size: 18px;
|
|
1704
|
+
font-weight: 600;
|
|
1705
|
+
color: var(--harmony-text);
|
|
1706
|
+
}
|
|
1707
|
+
.add-menu-picker-subcategories {
|
|
1708
|
+
display: flex;
|
|
1709
|
+
flex-wrap: nowrap;
|
|
1710
|
+
gap: 8px;
|
|
1711
|
+
overflow-x: auto;
|
|
1712
|
+
flex: 1;
|
|
1713
|
+
min-width: 0;
|
|
1714
|
+
scrollbar-width: none;
|
|
1715
|
+
-webkit-overflow-scrolling: touch;
|
|
1716
|
+
}
|
|
1717
|
+
.add-menu-picker-subcategories::-webkit-scrollbar { display: none; }
|
|
1718
|
+
.add-menu-picker-subcategory-scroll {
|
|
1719
|
+
display: flex;
|
|
1720
|
+
align-items: center;
|
|
1721
|
+
gap: 6px;
|
|
1722
|
+
margin-bottom: 14px;
|
|
1723
|
+
min-width: 0;
|
|
1724
|
+
}
|
|
1725
|
+
.add-menu-picker-subcategory-scroll-btn {
|
|
1726
|
+
flex-shrink: 0;
|
|
1727
|
+
width: 28px;
|
|
1728
|
+
height: 28px;
|
|
1729
|
+
border: 1px solid var(--harmony-border);
|
|
1730
|
+
border-radius: var(--harmony-radius-sm);
|
|
1731
|
+
background: var(--harmony-bg-surface);
|
|
1732
|
+
color: var(--harmony-text-muted);
|
|
1733
|
+
font-size: 16px;
|
|
1734
|
+
line-height: 1;
|
|
1735
|
+
cursor: pointer;
|
|
1736
|
+
padding: 0;
|
|
1737
|
+
}
|
|
1738
|
+
.add-menu-picker-subcategory-scroll-btn:hover {
|
|
1739
|
+
color: var(--harmony-text);
|
|
1740
|
+
background: var(--harmony-bg-hover);
|
|
1741
|
+
}
|
|
1742
|
+
.add-menu-picker-subcategory-btn {
|
|
1743
|
+
display: inline-flex;
|
|
1744
|
+
align-items: center;
|
|
1745
|
+
gap: 6px;
|
|
1746
|
+
flex-shrink: 0;
|
|
1747
|
+
padding: 6px 12px;
|
|
1748
|
+
border: none;
|
|
1749
|
+
border-radius: 999px;
|
|
1750
|
+
background: transparent;
|
|
1751
|
+
color: var(--harmony-text-muted);
|
|
1752
|
+
font-family: var(--harmony-font);
|
|
1753
|
+
font-size: 13px;
|
|
1754
|
+
cursor: pointer;
|
|
1755
|
+
white-space: nowrap;
|
|
1756
|
+
}
|
|
1757
|
+
.add-menu-picker-subcategory-btn:hover {
|
|
1758
|
+
color: var(--harmony-text);
|
|
1759
|
+
background: var(--harmony-bg-hover);
|
|
1760
|
+
}
|
|
1761
|
+
.add-menu-picker-subcategory-btn--selected {
|
|
1762
|
+
background: var(--harmony-bg-subtle);
|
|
1763
|
+
color: var(--harmony-text);
|
|
1764
|
+
font-weight: 600;
|
|
1765
|
+
box-shadow: inset 0 0 0 1px var(--harmony-border);
|
|
1766
|
+
}
|
|
1767
|
+
.add-menu-picker-subcategory-count {
|
|
1768
|
+
font-size: 12px;
|
|
1769
|
+
color: var(--harmony-text-muted);
|
|
1770
|
+
font-weight: 400;
|
|
1771
|
+
}
|
|
1772
|
+
.add-menu-picker-search-row {
|
|
1773
|
+
display: flex;
|
|
1774
|
+
align-items: center;
|
|
1775
|
+
gap: 8px;
|
|
1776
|
+
margin-bottom: 10px;
|
|
1777
|
+
min-width: 0;
|
|
1778
|
+
}
|
|
1779
|
+
.add-menu-picker-search-field {
|
|
1780
|
+
flex: 1;
|
|
1781
|
+
min-width: 0;
|
|
1782
|
+
display: flex;
|
|
1783
|
+
align-items: center;
|
|
1784
|
+
gap: 8px;
|
|
1785
|
+
padding: 8px 12px;
|
|
1786
|
+
border: 1px solid var(--harmony-border);
|
|
1787
|
+
border-radius: 999px;
|
|
1788
|
+
background: var(--harmony-bg-surface);
|
|
1789
|
+
}
|
|
1790
|
+
.add-menu-picker-search-icon {
|
|
1791
|
+
color: var(--harmony-text-muted);
|
|
1792
|
+
font-size: 14px;
|
|
1793
|
+
line-height: 1;
|
|
1794
|
+
flex-shrink: 0;
|
|
1795
|
+
}
|
|
1796
|
+
.add-menu-picker-search-input {
|
|
1797
|
+
flex: 1;
|
|
1798
|
+
min-width: 0;
|
|
1799
|
+
border: none;
|
|
1800
|
+
background: transparent;
|
|
1801
|
+
color: var(--harmony-text);
|
|
1802
|
+
font-family: var(--harmony-font);
|
|
1803
|
+
font-size: 13px;
|
|
1804
|
+
outline: none;
|
|
1805
|
+
}
|
|
1806
|
+
.add-menu-picker-search-input::placeholder {
|
|
1807
|
+
color: var(--harmony-text-muted);
|
|
1808
|
+
}
|
|
1809
|
+
.add-menu-picker-search-clear {
|
|
1810
|
+
flex-shrink: 0;
|
|
1811
|
+
background: none;
|
|
1812
|
+
border: none;
|
|
1813
|
+
color: var(--harmony-text-muted);
|
|
1814
|
+
font-size: 16px;
|
|
1815
|
+
line-height: 1;
|
|
1816
|
+
cursor: pointer;
|
|
1817
|
+
padding: 0 2px;
|
|
1818
|
+
}
|
|
1819
|
+
.add-menu-picker-search-clear:hover { color: var(--harmony-text); }
|
|
1820
|
+
.add-menu-picker-search-summary {
|
|
1821
|
+
margin: 0 0 12px;
|
|
1822
|
+
font-size: 13px;
|
|
1823
|
+
color: var(--harmony-text-muted);
|
|
1824
|
+
}
|
|
1825
|
+
.add-menu-picker-browse-layout--search {
|
|
1826
|
+
border: none;
|
|
1827
|
+
}
|
|
1828
|
+
.add-menu-picker-browse-layout--search .add-menu-picker-main {
|
|
1829
|
+
padding-top: 0;
|
|
1830
|
+
}
|
|
1831
|
+
.add-menu-picker-browse-content {
|
|
1832
|
+
display: grid;
|
|
1833
|
+
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
|
|
1834
|
+
gap: 10px;
|
|
1835
|
+
overflow-y: auto;
|
|
1836
|
+
flex: 1;
|
|
1837
|
+
min-height: 0;
|
|
1838
|
+
align-content: start;
|
|
1839
|
+
}
|
|
1840
|
+
.add-menu-picker-browse-row {
|
|
1841
|
+
display: contents;
|
|
924
1842
|
}
|
|
925
|
-
.
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
1843
|
+
.add-menu-picker-section-title {
|
|
1844
|
+
margin: 8px 0 4px;
|
|
1845
|
+
font-size: 13px;
|
|
1846
|
+
font-weight: 600;
|
|
929
1847
|
color: var(--harmony-text-muted);
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
font-size: 11px;
|
|
934
|
-
cursor: pointer;
|
|
1848
|
+
text-transform: uppercase;
|
|
1849
|
+
letter-spacing: 0.04em;
|
|
1850
|
+
grid-column: 1 / -1;
|
|
935
1851
|
}
|
|
936
|
-
.
|
|
937
|
-
|
|
938
|
-
.snapshot-discard-confirm { display: flex; align-items: center; gap: 10px; font-size: 13px; color: var(--harmony-danger); }
|
|
939
|
-
.snapshot-discard-confirm-msg { flex: 1; }
|
|
940
|
-
|
|
941
|
-
/* ── Add Page slideover ── */
|
|
942
|
-
.add-page-overlay {
|
|
943
|
-
position: fixed;
|
|
944
|
-
inset: 0;
|
|
945
|
-
z-index: 300;
|
|
946
|
-
background: rgba(22, 45, 61, 0.35);
|
|
947
|
-
display: flex;
|
|
948
|
-
justify-content: flex-end;
|
|
1852
|
+
.add-menu-picker-browse-content .add-menu-picker-component-card {
|
|
1853
|
+
width: auto;
|
|
949
1854
|
}
|
|
950
|
-
.
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
1855
|
+
.add-menu-picker-component-card {
|
|
1856
|
+
min-height: 72px;
|
|
1857
|
+
}
|
|
1858
|
+
.add-menu-picker-component-card--browse-only {
|
|
1859
|
+
opacity: 0.6;
|
|
1860
|
+
cursor: default;
|
|
1861
|
+
}
|
|
1862
|
+
.add-menu-picker-component-title {
|
|
1863
|
+
font-weight: 500;
|
|
1864
|
+
overflow: hidden;
|
|
1865
|
+
text-overflow: ellipsis;
|
|
1866
|
+
white-space: nowrap;
|
|
1867
|
+
max-width: 100%;
|
|
960
1868
|
}
|
|
961
1869
|
.project-settings-dialog {
|
|
962
1870
|
background: var(--harmony-bg-surface);
|
|
@@ -981,28 +1889,33 @@
|
|
|
981
1889
|
.project-settings-close { background: none; border: none; color: var(--harmony-text-muted); font-size: 20px; cursor: pointer; line-height: 1; }
|
|
982
1890
|
.project-settings-body { padding: 14px 16px; overflow: auto; display: flex; flex-direction: column; gap: 12px; }
|
|
983
1891
|
.add-page-slideover {
|
|
984
|
-
width: min(
|
|
985
|
-
height:
|
|
1892
|
+
width: min(920px, 100%);
|
|
1893
|
+
max-height: min(88vh, 860px);
|
|
1894
|
+
height: auto;
|
|
986
1895
|
background: var(--harmony-bg-surface);
|
|
987
|
-
border
|
|
1896
|
+
border: 1px solid var(--harmony-border);
|
|
1897
|
+
border-radius: var(--harmony-radius-lg);
|
|
988
1898
|
display: flex;
|
|
989
1899
|
flex-direction: column;
|
|
990
|
-
box-shadow:
|
|
1900
|
+
box-shadow:
|
|
1901
|
+
0 24px 80px rgba(22, 45, 61, 0.16),
|
|
1902
|
+
0 8px 24px rgba(22, 45, 61, 0.08);
|
|
991
1903
|
position: relative;
|
|
1904
|
+
overflow: hidden;
|
|
992
1905
|
}
|
|
993
1906
|
.add-page-header {
|
|
994
1907
|
display: flex;
|
|
995
1908
|
align-items: center;
|
|
996
|
-
gap:
|
|
997
|
-
padding:
|
|
1909
|
+
gap: 12px;
|
|
1910
|
+
padding: 20px 28px;
|
|
998
1911
|
border-bottom: 1px solid var(--harmony-border);
|
|
999
1912
|
flex-shrink: 0;
|
|
1000
|
-
background: var(--harmony-bg-
|
|
1913
|
+
background: var(--harmony-bg-surface);
|
|
1001
1914
|
}
|
|
1002
|
-
.add-page-title { font-size:
|
|
1003
|
-
.add-page-close { background: none; border: none; color: var(--harmony-text-muted); font-size:
|
|
1004
|
-
.add-page-close:hover { color: var(--harmony-text); }
|
|
1005
|
-
.add-page-body { flex: 1; overflow: auto; padding:
|
|
1915
|
+
.add-page-title { font-size: 20px; font-weight: 700; color: var(--harmony-text); flex: 1; letter-spacing: -0.02em; }
|
|
1916
|
+
.add-page-close { background: none; border: none; color: var(--harmony-text-muted); font-size: 22px; cursor: pointer; line-height: 1; padding: 4px; border-radius: var(--harmony-radius-sm); }
|
|
1917
|
+
.add-page-close:hover { color: var(--harmony-text); background: var(--harmony-bg-hover); }
|
|
1918
|
+
.add-page-body { flex: 1; overflow: auto; padding: 24px 28px; display: flex; flex-direction: column; gap: 20px; min-height: 0; }
|
|
1006
1919
|
.add-page-section-label { font-size: 11px; font-weight: 600; color: var(--harmony-text-muted); text-transform: uppercase; letter-spacing: 0.4px; margin-bottom: 6px; }
|
|
1007
1920
|
.add-page-section-header-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 6px; }
|
|
1008
1921
|
.add-page-section-header-row .add-page-section-label { margin-bottom: 0; flex: 1; }
|
|
@@ -1037,11 +1950,13 @@
|
|
|
1037
1950
|
position: absolute;
|
|
1038
1951
|
inset: 0;
|
|
1039
1952
|
z-index: 10;
|
|
1040
|
-
background: rgba(
|
|
1953
|
+
background: rgba(255, 255, 255, 0.6);
|
|
1954
|
+
backdrop-filter: blur(8px);
|
|
1955
|
+
-webkit-backdrop-filter: blur(8px);
|
|
1041
1956
|
display: flex;
|
|
1042
1957
|
align-items: center;
|
|
1043
1958
|
justify-content: center;
|
|
1044
|
-
padding:
|
|
1959
|
+
padding: 24px;
|
|
1045
1960
|
box-sizing: border-box;
|
|
1046
1961
|
}
|
|
1047
1962
|
.add-page-brief-fill-panel {
|
|
@@ -1190,6 +2105,10 @@
|
|
|
1190
2105
|
.add-menu-panel .add-page-plugins-zone-title { flex-shrink: 0; }
|
|
1191
2106
|
.add-menu-panel .add-menu-panel-attached { flex: 0 1 auto; min-height: 0; max-height: 120px; overflow-y: auto; overflow-x: hidden; -webkit-overflow-scrolling: touch; }
|
|
1192
2107
|
.add-menu-panel .add-page-plugin-chips { margin-top: 0; }
|
|
2108
|
+
.annotation-add-menu-panel .add-page-plugin-chips,
|
|
2109
|
+
.add-menu-panel .add-page-plugin-chips { align-items: stretch; }
|
|
2110
|
+
.annotation-add-menu-panel .add-page-plugin-chip,
|
|
2111
|
+
.add-menu-panel .add-page-plugin-chip { width: 100%; max-width: 100%; box-sizing: border-box; }
|
|
1193
2112
|
.add-menu-panel .add-page-btn,
|
|
1194
2113
|
.add-menu-panel .add-page-manage-link,
|
|
1195
2114
|
.add-menu-panel .add-page-hint,
|
|
@@ -1231,9 +2150,26 @@
|
|
|
1231
2150
|
padding: 2px 6px;
|
|
1232
2151
|
font-size: 10px;
|
|
1233
2152
|
color: var(--harmony-text-secondary);
|
|
1234
|
-
display: flex;
|
|
2153
|
+
display: inline-flex;
|
|
1235
2154
|
align-items: center;
|
|
1236
2155
|
gap: 4px;
|
|
2156
|
+
max-width: 100%;
|
|
2157
|
+
min-width: 0;
|
|
2158
|
+
}
|
|
2159
|
+
.add-page-plugin-chip-text {
|
|
2160
|
+
flex: 1 1 auto;
|
|
2161
|
+
min-width: 0;
|
|
2162
|
+
overflow: hidden;
|
|
2163
|
+
text-overflow: ellipsis;
|
|
2164
|
+
white-space: nowrap;
|
|
2165
|
+
}
|
|
2166
|
+
.add-page-plugin-chip-sub {
|
|
2167
|
+
color: var(--harmony-text-muted);
|
|
2168
|
+
margin-left: 4px;
|
|
2169
|
+
}
|
|
2170
|
+
.add-page-plugin-chip-remove,
|
|
2171
|
+
.add-page-plugin-chip-at {
|
|
2172
|
+
flex-shrink: 0;
|
|
1237
2173
|
}
|
|
1238
2174
|
.add-page-plugin-chip-remove { background: none; border: none; color: var(--harmony-text-muted); cursor: pointer; padding: 0 2px; }
|
|
1239
2175
|
.add-page-plugins-warn { font-size: 11px; color: var(--harmony-warning); margin-top: 4px; }
|
|
@@ -1330,8 +2266,17 @@
|
|
|
1330
2266
|
cursor: pointer;
|
|
1331
2267
|
align-self: flex-start;
|
|
1332
2268
|
}
|
|
1333
|
-
.add-page-footer {
|
|
1334
|
-
|
|
2269
|
+
.add-page-footer {
|
|
2270
|
+
display: flex;
|
|
2271
|
+
gap: 12px;
|
|
2272
|
+
justify-content: flex-end;
|
|
2273
|
+
padding: 16px 28px 20px;
|
|
2274
|
+
border-top: 1px solid var(--harmony-border);
|
|
2275
|
+
flex-shrink: 0;
|
|
2276
|
+
background: var(--harmony-bg-surface);
|
|
2277
|
+
}
|
|
2278
|
+
.add-page-footer .add-page-btn { flex: 0 0 auto; min-width: 120px; }
|
|
2279
|
+
.add-page-btn { padding: 10px 20px; border-radius: var(--harmony-radius-pill); font-size: 13px; font-weight: 600; cursor: pointer; border: 1px solid var(--harmony-border); }
|
|
1335
2280
|
.add-page-btn-cancel { background: var(--harmony-bg-surface); color: var(--harmony-text-secondary); }
|
|
1336
2281
|
.add-page-btn-primary { background: var(--harmony-primary); color: #fff; border-color: var(--harmony-primary); }
|
|
1337
2282
|
.add-page-btn-primary:disabled { opacity: 0.45; cursor: not-allowed; }
|
|
@@ -1354,7 +2299,6 @@
|
|
|
1354
2299
|
}
|
|
1355
2300
|
.reset-btn:hover { color: var(--harmony-text); border-color: var(--harmony-border-strong); }
|
|
1356
2301
|
.route-picker-stack { display: contents; }
|
|
1357
|
-
.arrow-svg defs polygon { fill: #116dff; }
|
|
1358
2302
|
</style>
|
|
1359
2303
|
<script type="application/jay-data">
|
|
1360
2304
|
data:
|
|
@@ -1368,11 +2312,13 @@ data:
|
|
|
1368
2312
|
hasImage: boolean
|
|
1369
2313
|
isRunning: boolean
|
|
1370
2314
|
chunks:
|
|
1371
|
-
-
|
|
2315
|
+
- id: string
|
|
2316
|
+
text: string
|
|
1372
2317
|
cssClass: string
|
|
1373
2318
|
filePath: string
|
|
1374
2319
|
toolName: string
|
|
1375
2320
|
showUserPrefix: boolean
|
|
2321
|
+
isDivider: boolean
|
|
1376
2322
|
agentChatMessage: string
|
|
1377
2323
|
showAgentChatInput: boolean
|
|
1378
2324
|
agentChatInputDisabled: boolean
|
|
@@ -1383,16 +2329,85 @@ data:
|
|
|
1383
2329
|
pageSelectOptions:
|
|
1384
2330
|
- url: string
|
|
1385
2331
|
label: string
|
|
1386
|
-
selectedRouteSelectValue: string
|
|
1387
2332
|
hasPages: boolean
|
|
2333
|
+
showPagesPanel: boolean
|
|
2334
|
+
pageNavBtnClass: string
|
|
2335
|
+
pageNavBtnLabel: string
|
|
2336
|
+
pagesPanelSearchQuery: string
|
|
2337
|
+
filteredPageRouteRows:
|
|
2338
|
+
- url: string
|
|
2339
|
+
label: string
|
|
2340
|
+
isSelected: boolean
|
|
2341
|
+
checkGlyph: string
|
|
2342
|
+
cssClass: string
|
|
2343
|
+
filteredUrlInstanceRows:
|
|
2344
|
+
- path: string
|
|
2345
|
+
isSelected: boolean
|
|
2346
|
+
checkGlyph: string
|
|
2347
|
+
cssClass: string
|
|
2348
|
+
showRoutesPanelUrlInstances: boolean
|
|
2349
|
+
showPagesPanelEmptySearch: boolean
|
|
2350
|
+
showSnapshotNav: boolean
|
|
2351
|
+
showSnapshotPanel: boolean
|
|
2352
|
+
snapshotNavBtnClass: string
|
|
2353
|
+
snapshotNavBtnLabel: string
|
|
2354
|
+
snapshotPanelSearchQuery: string
|
|
2355
|
+
filteredSnapshotRows:
|
|
2356
|
+
- value: string
|
|
2357
|
+
label: string
|
|
2358
|
+
isSelected: boolean
|
|
2359
|
+
checkGlyph: string
|
|
2360
|
+
cssClass: string
|
|
2361
|
+
showSnapshotPanelEmptySearch: boolean
|
|
2362
|
+
showAddMenuPickerModal: boolean
|
|
2363
|
+
showAddMenuPickerLoading: boolean
|
|
2364
|
+
showAddMenuPickerEmpty: boolean
|
|
2365
|
+
showAddMenuPickerBrowse: boolean
|
|
2366
|
+
showAddMenuPickerBrowseLayout: boolean
|
|
2367
|
+
showAddMenuPickerSearchMode: boolean
|
|
2368
|
+
showAddMenuPickerSearchBack: boolean
|
|
2369
|
+
showAddMenuPickerSearchClear: boolean
|
|
2370
|
+
showAddMenuPickerBrowseTitle: boolean
|
|
2371
|
+
showAddMenuPickerSearchSummary: boolean
|
|
2372
|
+
showAddMenuPickerSubCategoryFilters: boolean
|
|
2373
|
+
showAddMenuPickerSubCategoryScrollPrev: boolean
|
|
2374
|
+
showAddMenuPickerSubCategoryScrollNext: boolean
|
|
2375
|
+
showAddMenuPickerComponents: boolean
|
|
2376
|
+
showAddMenuPickerNoComponents: boolean
|
|
2377
|
+
showAddMenuPickerNoSearchResults: boolean
|
|
2378
|
+
addMenuPickerDialogClass: string
|
|
2379
|
+
addMenuPickerHeaderTitle: string
|
|
2380
|
+
addMenuPickerBrowseCategoryTitle: string
|
|
2381
|
+
addMenuPickerSearchSummary: string
|
|
2382
|
+
addMenuPickerSearchQuery: string
|
|
2383
|
+
addMenuPickerBrowseLayoutClass: string
|
|
2384
|
+
addMenuPickerLeftNavRows:
|
|
2385
|
+
- rowKey: string
|
|
2386
|
+
navKey: string
|
|
2387
|
+
label: string
|
|
2388
|
+
itemCount: number
|
|
2389
|
+
isSelected: boolean
|
|
2390
|
+
cssClass: string
|
|
2391
|
+
addMenuPickerSubCategoryFilterRows:
|
|
2392
|
+
- rowKey: string
|
|
2393
|
+
navKey: string
|
|
2394
|
+
label: string
|
|
2395
|
+
itemCount: number
|
|
2396
|
+
showCount: boolean
|
|
2397
|
+
isSelected: boolean
|
|
2398
|
+
cssClass: string
|
|
2399
|
+
addMenuPickerBrowseRows:
|
|
2400
|
+
- rowKey: string
|
|
2401
|
+
isSectionHeader: boolean
|
|
2402
|
+
label: string
|
|
2403
|
+
itemId: string
|
|
2404
|
+
isPickable: boolean
|
|
2405
|
+
showPickable: boolean
|
|
2406
|
+
showBrowseOnly: boolean
|
|
1388
2407
|
isPreviewMode: boolean
|
|
1389
2408
|
previewUrlBar: string
|
|
1390
2409
|
previewLoading: boolean
|
|
1391
|
-
paramsLoadingHint: string
|
|
1392
2410
|
previewError: string
|
|
1393
|
-
showPathSelect: boolean
|
|
1394
|
-
previewPathOptions:
|
|
1395
|
-
- path: string
|
|
1396
2411
|
selectedPreviewPath: string
|
|
1397
2412
|
showPreviewIframe: boolean
|
|
1398
2413
|
previewSrc: string
|
|
@@ -1402,6 +2417,8 @@ data:
|
|
|
1402
2417
|
bottomPanelClass: string
|
|
1403
2418
|
bottomPanelToggleGlyph: string
|
|
1404
2419
|
showBottomPanelRunning: boolean
|
|
2420
|
+
showAgentStopConfirm: boolean
|
|
2421
|
+
agentStopBtnClass: string
|
|
1405
2422
|
showFilePreview: boolean
|
|
1406
2423
|
filePreviewPath: string
|
|
1407
2424
|
filePreviewContent: string
|
|
@@ -1409,15 +2426,21 @@ data:
|
|
|
1409
2426
|
filePreviewImageSrc: string
|
|
1410
2427
|
filePreviewLoading: boolean
|
|
1411
2428
|
showVisualToolbar: boolean
|
|
2429
|
+
showClearMarkersConfirm: boolean
|
|
2430
|
+
clearMarkersConfirmText: string
|
|
1412
2431
|
visualToolNoneOn: boolean
|
|
1413
2432
|
visualToolPointOn: boolean
|
|
1414
2433
|
visualToolAreaOn: boolean
|
|
1415
|
-
|
|
2434
|
+
visualMarkerToolsDisabled: boolean
|
|
2435
|
+
visualPointMarkerTooltip: string
|
|
2436
|
+
visualAreaMarkerTooltip: string
|
|
1416
2437
|
visualPointDisplayItems:
|
|
1417
2438
|
- id: string
|
|
1418
2439
|
leftPct: number
|
|
1419
2440
|
topPct: number
|
|
1420
2441
|
indexLabel: string
|
|
2442
|
+
markerOpen: boolean
|
|
2443
|
+
markerEditMode: boolean
|
|
1421
2444
|
showVisualPointMarkers: boolean
|
|
1422
2445
|
visualAreaDisplayItems:
|
|
1423
2446
|
- id: string
|
|
@@ -1426,32 +2449,20 @@ data:
|
|
|
1426
2449
|
widthPct: number
|
|
1427
2450
|
heightPct: number
|
|
1428
2451
|
indexLabel: string
|
|
2452
|
+
markerOpen: boolean
|
|
2453
|
+
markerEditMode: boolean
|
|
1429
2454
|
showVisualAreaItems: boolean
|
|
1430
2455
|
areaDraftLeftPct: number
|
|
1431
2456
|
areaDraftTopPct: number
|
|
1432
2457
|
areaDraftWidthPct: number
|
|
1433
2458
|
areaDraftHeightPct: number
|
|
1434
2459
|
showAreaDraftRect: boolean
|
|
1435
|
-
visualArrowDisplayItems:
|
|
1436
|
-
- id: string
|
|
1437
|
-
x1Pct: number
|
|
1438
|
-
y1Pct: number
|
|
1439
|
-
x2Pct: number
|
|
1440
|
-
y2Pct: number
|
|
1441
|
-
visualArrowPinItems:
|
|
1442
|
-
- id: string
|
|
1443
|
-
leftPct: number
|
|
1444
|
-
topPct: number
|
|
1445
|
-
indexLabel: string
|
|
1446
|
-
hasVisualArrowLines: boolean
|
|
1447
|
-
showArrowPending: boolean
|
|
1448
|
-
arrowPendingLeftPct: number
|
|
1449
|
-
arrowPendingTopPct: number
|
|
1450
2460
|
visualAnnotationRows:
|
|
1451
2461
|
- id: string
|
|
1452
2462
|
kindLabel: string
|
|
1453
2463
|
instruction: string
|
|
1454
|
-
|
|
2464
|
+
showPopover: boolean
|
|
2465
|
+
quickSendDisabled: boolean
|
|
1455
2466
|
leftPct: number
|
|
1456
2467
|
topPct: number
|
|
1457
2468
|
popoverFlipX: boolean
|
|
@@ -1470,15 +2481,6 @@ data:
|
|
|
1470
2481
|
itemId: string
|
|
1471
2482
|
title: string
|
|
1472
2483
|
subtitle: string
|
|
1473
|
-
addMenuSelectedCategory: string
|
|
1474
|
-
showAddMenuItemPicker: boolean
|
|
1475
|
-
markerPickerNavRows:
|
|
1476
|
-
- rowKey: string
|
|
1477
|
-
label: string
|
|
1478
|
-
value: string
|
|
1479
|
-
kind: enum (category | subCategory | item)
|
|
1480
|
-
showMarkerPickerLoading: boolean
|
|
1481
|
-
showMarkerPickerCatalogEmpty: boolean
|
|
1482
2484
|
crAddMenuParamCollisionWarning: string
|
|
1483
2485
|
crAddMenuRouteParamHint: string
|
|
1484
2486
|
showCrAddMenuRouteParams: boolean
|
|
@@ -1514,9 +2516,11 @@ data:
|
|
|
1514
2516
|
visualOverlayPointerNone: boolean
|
|
1515
2517
|
showVideoRecordUi: boolean
|
|
1516
2518
|
isVideoRecording: boolean
|
|
1517
|
-
|
|
2519
|
+
videoRecordTooltip: string
|
|
1518
2520
|
videoRecordDisabled: boolean
|
|
1519
2521
|
freezeDisabled: boolean
|
|
2522
|
+
sendToAgentDisabled: boolean
|
|
2523
|
+
sendToAgentTooltip: string
|
|
1520
2524
|
showVideoReviewModal: boolean
|
|
1521
2525
|
videoReviewPreparing: boolean
|
|
1522
2526
|
videoReviewReady: boolean
|
|
@@ -1526,7 +2530,6 @@ data:
|
|
|
1526
2530
|
videoModalToolNoneOn: boolean
|
|
1527
2531
|
videoModalToolPointOn: boolean
|
|
1528
2532
|
videoModalToolAreaOn: boolean
|
|
1529
|
-
videoModalToolArrowOn: boolean
|
|
1530
2533
|
videoPointDisplayItems:
|
|
1531
2534
|
- id: string
|
|
1532
2535
|
leftPct: number
|
|
@@ -1546,26 +2549,12 @@ data:
|
|
|
1546
2549
|
videoAreaDraftWidthPct: number
|
|
1547
2550
|
videoAreaDraftHeightPct: number
|
|
1548
2551
|
showVideoAreaDraftRect: boolean
|
|
1549
|
-
videoArrowDisplayItems:
|
|
1550
|
-
- id: string
|
|
1551
|
-
x1Pct: number
|
|
1552
|
-
y1Pct: number
|
|
1553
|
-
x2Pct: number
|
|
1554
|
-
y2Pct: number
|
|
1555
|
-
videoArrowPinItems:
|
|
1556
|
-
- id: string
|
|
1557
|
-
leftPct: number
|
|
1558
|
-
topPct: number
|
|
1559
|
-
indexLabel: string
|
|
1560
|
-
hasVideoArrowLines: boolean
|
|
1561
|
-
showVideoArrowPending: boolean
|
|
1562
|
-
videoArrowPendingLeftPct: number
|
|
1563
|
-
videoArrowPendingTopPct: number
|
|
1564
2552
|
videoAnnotationRows:
|
|
1565
2553
|
- id: string
|
|
1566
2554
|
kindLabel: string
|
|
1567
2555
|
instruction: string
|
|
1568
2556
|
runDisabled: boolean
|
|
2557
|
+
quickSendDisabled: boolean
|
|
1569
2558
|
leftPct: number
|
|
1570
2559
|
topPct: number
|
|
1571
2560
|
popoverFlipX: boolean
|
|
@@ -1584,15 +2573,6 @@ data:
|
|
|
1584
2573
|
itemId: string
|
|
1585
2574
|
title: string
|
|
1586
2575
|
subtitle: string
|
|
1587
|
-
addMenuSelectedCategory: string
|
|
1588
|
-
showAddMenuItemPicker: boolean
|
|
1589
|
-
markerPickerNavRows:
|
|
1590
|
-
- rowKey: string
|
|
1591
|
-
label: string
|
|
1592
|
-
value: string
|
|
1593
|
-
kind: enum (category | subCategory | item)
|
|
1594
|
-
showMarkerPickerLoading: boolean
|
|
1595
|
-
showMarkerPickerCatalogEmpty: boolean
|
|
1596
2576
|
crAddMenuParamCollisionWarning: string
|
|
1597
2577
|
crAddMenuRouteParamHint: string
|
|
1598
2578
|
showCrAddMenuRouteParams: boolean
|
|
@@ -1621,12 +2601,12 @@ data:
|
|
|
1621
2601
|
breakpointDesktopOn: boolean
|
|
1622
2602
|
breakpointTabletOn: boolean
|
|
1623
2603
|
breakpointMobileOn: boolean
|
|
2604
|
+
stageWidthPx: number
|
|
1624
2605
|
showSnapshotModal: boolean
|
|
1625
2606
|
snapshotImageSrc: string
|
|
1626
2607
|
snapshotToolNoneOn: boolean
|
|
1627
2608
|
snapshotToolPointOn: boolean
|
|
1628
2609
|
snapshotToolAreaOn: boolean
|
|
1629
|
-
snapshotToolArrowOn: boolean
|
|
1630
2610
|
snapshotCanSubmit: boolean
|
|
1631
2611
|
snapshotShowDiscardConfirm: boolean
|
|
1632
2612
|
snapshotOverlayPointerNone: boolean
|
|
@@ -1635,6 +2615,7 @@ data:
|
|
|
1635
2615
|
leftPct: number
|
|
1636
2616
|
topPct: number
|
|
1637
2617
|
indexLabel: string
|
|
2618
|
+
markerEditMode: boolean
|
|
1638
2619
|
showSnapshotPointMarkers: boolean
|
|
1639
2620
|
snapshotAreaDisplayItems:
|
|
1640
2621
|
- id: string
|
|
@@ -1643,32 +2624,19 @@ data:
|
|
|
1643
2624
|
widthPct: number
|
|
1644
2625
|
heightPct: number
|
|
1645
2626
|
indexLabel: string
|
|
2627
|
+
markerEditMode: boolean
|
|
1646
2628
|
showSnapshotAreaItems: boolean
|
|
1647
2629
|
snapshotAreaDraftLeftPct: number
|
|
1648
2630
|
snapshotAreaDraftTopPct: number
|
|
1649
2631
|
snapshotAreaDraftWidthPct: number
|
|
1650
2632
|
snapshotAreaDraftHeightPct: number
|
|
1651
2633
|
showSnapshotAreaDraft: boolean
|
|
1652
|
-
snapshotArrowDisplayItems:
|
|
1653
|
-
- id: string
|
|
1654
|
-
x1Pct: number
|
|
1655
|
-
y1Pct: number
|
|
1656
|
-
x2Pct: number
|
|
1657
|
-
y2Pct: number
|
|
1658
|
-
snapshotArrowPinItems:
|
|
1659
|
-
- id: string
|
|
1660
|
-
leftPct: number
|
|
1661
|
-
topPct: number
|
|
1662
|
-
indexLabel: string
|
|
1663
|
-
hasSnapshotArrowLines: boolean
|
|
1664
|
-
showSnapshotArrowPending: boolean
|
|
1665
|
-
snapshotArrowPendingLeftPct: number
|
|
1666
|
-
snapshotArrowPendingTopPct: number
|
|
1667
2634
|
snapshotAnnotationItems:
|
|
1668
2635
|
- id: string
|
|
1669
2636
|
indexLabel: string
|
|
1670
2637
|
kindLabel: string
|
|
1671
2638
|
instruction: string
|
|
2639
|
+
quickSendDisabled: boolean
|
|
1672
2640
|
kind: string
|
|
1673
2641
|
leftPct: number
|
|
1674
2642
|
topPct: number
|
|
@@ -1688,15 +2656,6 @@ data:
|
|
|
1688
2656
|
itemId: string
|
|
1689
2657
|
title: string
|
|
1690
2658
|
subtitle: string
|
|
1691
|
-
addMenuSelectedCategory: string
|
|
1692
|
-
showAddMenuItemPicker: boolean
|
|
1693
|
-
markerPickerNavRows:
|
|
1694
|
-
- rowKey: string
|
|
1695
|
-
label: string
|
|
1696
|
-
value: string
|
|
1697
|
-
kind: enum (category | subCategory | item)
|
|
1698
|
-
showMarkerPickerLoading: boolean
|
|
1699
|
-
showMarkerPickerCatalogEmpty: boolean
|
|
1700
2659
|
crAddMenuParamCollisionWarning: string
|
|
1701
2660
|
crAddMenuRouteParamHint: string
|
|
1702
2661
|
showCrAddMenuRouteParams: boolean
|
|
@@ -1780,25 +2739,14 @@ data:
|
|
|
1780
2739
|
subtitle: string
|
|
1781
2740
|
annotationId?: string
|
|
1782
2741
|
showAddMenuEmptyHint: boolean
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
value: string
|
|
1788
|
-
kind: enum (category | subCategory | item)
|
|
1789
|
-
addMenuSelectedCategory: string
|
|
1790
|
-
showMarkerAddMenuPopover: boolean
|
|
1791
|
-
markerAddMenuPopoverLeftPct: number
|
|
1792
|
-
markerAddMenuPopoverTopPct: number
|
|
1793
|
-
markerAddMenuPickerAnnotationId: string
|
|
1794
|
-
markerAddMenuNavRows:
|
|
2742
|
+
addMenuParamCollisionWarning: string
|
|
2743
|
+
addMenuRouteParamHint: string
|
|
2744
|
+
showAddMenuRouteParams: boolean
|
|
2745
|
+
addMenuRouteParamRows:
|
|
1795
2746
|
- rowKey: string
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
markerAddMenuSelectedCategory: string
|
|
1800
|
-
showMarkerAddMenuPickerLoading: boolean
|
|
1801
|
-
showMarkerAddMenuPickerCatalogEmpty: boolean
|
|
2747
|
+
name: string
|
|
2748
|
+
showAddMenuRouteParamConfirm: boolean
|
|
2749
|
+
addMenuPendingRouteParamTitle: string
|
|
1802
2750
|
crAddMenuParamCollisionWarning: string
|
|
1803
2751
|
crAddMenuRouteParamHint: string
|
|
1804
2752
|
showCrAddMenuRouteParams: boolean
|
|
@@ -1809,20 +2757,17 @@ data:
|
|
|
1809
2757
|
crPendingRouteParamTitle: string
|
|
1810
2758
|
showCrPlannedRoutePanel: boolean
|
|
1811
2759
|
crPlannedRoute: string
|
|
1812
|
-
addMenuParamCollisionWarning: string
|
|
1813
|
-
addMenuRouteParamHint: string
|
|
1814
|
-
showAddMenuRouteParams: boolean
|
|
1815
|
-
addMenuRouteParamRows:
|
|
1816
|
-
- rowKey: string
|
|
1817
|
-
name: string
|
|
1818
|
-
showAddMenuRouteParamConfirm: boolean
|
|
1819
|
-
addMenuPendingRouteParamTitle: string
|
|
1820
2760
|
showAddPageResultBanner: boolean
|
|
1821
2761
|
addPageResultBannerClass: string
|
|
1822
2762
|
addPageResultBannerMessage: string
|
|
1823
2763
|
showAddPageRetry: boolean
|
|
1824
2764
|
showAddPageFixWithAiditor: boolean
|
|
1825
2765
|
showAddPageFromBriefBtn: boolean
|
|
2766
|
+
hasPublishScript: boolean
|
|
2767
|
+
publishDisabled: boolean
|
|
2768
|
+
publishTooltip: string
|
|
2769
|
+
publishBtnLabel: string
|
|
2770
|
+
isPublishing: boolean
|
|
1826
2771
|
showBriefFillPopover: boolean
|
|
1827
2772
|
briefFillContextNotes: string
|
|
1828
2773
|
briefFillPopoverError: string
|
|
@@ -1860,36 +2805,151 @@ data:
|
|
|
1860
2805
|
<div class="editor-topbar-left harmony-global-left">
|
|
1861
2806
|
<span class="aiditor-logo"><span class="aiditor-logo-ai">AI</span>ditor</span>
|
|
1862
2807
|
<div class="harmony-page-select-wrap">
|
|
1863
|
-
<span class="harmony-page-label">
|
|
1864
|
-
<
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
aria-label="
|
|
2808
|
+
<span class="harmony-page-label">Routes</span>
|
|
2809
|
+
<button
|
|
2810
|
+
type="button"
|
|
2811
|
+
class="{pageNavBtnClass}"
|
|
2812
|
+
ref="pageNavBtn"
|
|
2813
|
+
aria-label="Select route"
|
|
2814
|
+
aria-expanded="{showPagesPanel}"
|
|
2815
|
+
aria-haspopup="dialog"
|
|
1869
2816
|
>
|
|
1870
|
-
<
|
|
1871
|
-
<
|
|
1872
|
-
</
|
|
2817
|
+
<span class="harmony-nav-btn-label">{pageNavBtnLabel}</span>
|
|
2818
|
+
<span class="harmony-nav-btn-chevron" aria-hidden="true">▾</span>
|
|
2819
|
+
</button>
|
|
1873
2820
|
</div>
|
|
1874
|
-
<div class="
|
|
1875
|
-
<
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
2821
|
+
<div class="harmony-page-select-wrap" if="showSnapshotNav">
|
|
2822
|
+
<span class="harmony-page-label">Snapshots</span>
|
|
2823
|
+
<button
|
|
2824
|
+
type="button"
|
|
2825
|
+
class="{snapshotNavBtnClass}"
|
|
2826
|
+
ref="snapshotNavBtn"
|
|
2827
|
+
aria-label="Select snapshot"
|
|
2828
|
+
aria-expanded="{showSnapshotPanel}"
|
|
2829
|
+
aria-haspopup="dialog"
|
|
1880
2830
|
>
|
|
1881
|
-
<
|
|
1882
|
-
|
|
1883
|
-
|
|
2831
|
+
<span class="harmony-nav-btn-label">{snapshotNavBtnLabel}</span>
|
|
2832
|
+
<span class="harmony-nav-btn-chevron" aria-hidden="true">▾</span>
|
|
2833
|
+
</button>
|
|
1884
2834
|
</div>
|
|
1885
2835
|
</div>
|
|
1886
2836
|
<div class="editor-topbar-right harmony-global-right">
|
|
1887
|
-
<button type="button" class="harmony-btn-secondary project-settings-btn" ref="projectSettingsBtn" disabled="isRunning">Settings</button>
|
|
1888
|
-
<button type="button" class="harmony-btn-primary add-page-open-btn" ref="addPageOpenBtn" disabled="isRunning">+ Add Page</button>
|
|
1889
2837
|
<button type="button" class="harmony-btn-secondary add-page-from-brief-btn" ref="addPageFromBriefBtn" if="showAddPageFromBriefBtn" disabled="isRunning">Page Briefs</button>
|
|
2838
|
+
<button
|
|
2839
|
+
type="button"
|
|
2840
|
+
class="harmony-btn-primary aiditor-publish-btn"
|
|
2841
|
+
ref="publishBtn"
|
|
2842
|
+
disabled="publishDisabled"
|
|
2843
|
+
title="{publishTooltip}"
|
|
2844
|
+
aria-label="{publishTooltip}"
|
|
2845
|
+
>{publishBtnLabel}</button>
|
|
1890
2846
|
</div>
|
|
1891
2847
|
</header>
|
|
1892
2848
|
|
|
2849
|
+
<div
|
|
2850
|
+
class="harmony-routes-panel-overlay"
|
|
2851
|
+
if="showPagesPanel"
|
|
2852
|
+
ref="pagesPanelOverlay"
|
|
2853
|
+
role="dialog"
|
|
2854
|
+
aria-modal="true"
|
|
2855
|
+
aria-label="Routes"
|
|
2856
|
+
>
|
|
2857
|
+
<div class="harmony-routes-panel" ref="pagesPanelDialog">
|
|
2858
|
+
<div class="harmony-routes-panel-header">
|
|
2859
|
+
<span class="harmony-routes-panel-title">Routes</span>
|
|
2860
|
+
<button type="button" class="harmony-routes-panel-close" ref="pagesPanelCloseBtn" aria-label="Close">×</button>
|
|
2861
|
+
</div>
|
|
2862
|
+
<div class="harmony-routes-panel-search-row">
|
|
2863
|
+
<input
|
|
2864
|
+
type="search"
|
|
2865
|
+
class="harmony-routes-panel-search-input"
|
|
2866
|
+
ref="pagesPanelSearchInput"
|
|
2867
|
+
value="{pagesPanelSearchQuery}"
|
|
2868
|
+
placeholder="Search routes and URL instances…"
|
|
2869
|
+
aria-label="Search routes and URL instances"
|
|
2870
|
+
/>
|
|
2871
|
+
</div>
|
|
2872
|
+
<div class="harmony-routes-panel-body">
|
|
2873
|
+
<p class="harmony-routes-panel-empty" if="showPagesPanelEmptySearch">No routes or URL instances match your search.</p>
|
|
2874
|
+
<button
|
|
2875
|
+
type="button"
|
|
2876
|
+
forEach="filteredPageRouteRows"
|
|
2877
|
+
trackBy="url"
|
|
2878
|
+
class="{cssClass}"
|
|
2879
|
+
data-route-url="{url}"
|
|
2880
|
+
data-routes-panel-route=""
|
|
2881
|
+
>
|
|
2882
|
+
<span class="harmony-routes-panel-check">{checkGlyph}</span>
|
|
2883
|
+
<span class="harmony-routes-panel-item-label">{label}</span>
|
|
2884
|
+
</button>
|
|
2885
|
+
<p class="harmony-routes-panel-section-title" if="showRoutesPanelUrlInstances">URL instances</p>
|
|
2886
|
+
<button
|
|
2887
|
+
type="button"
|
|
2888
|
+
forEach="filteredUrlInstanceRows"
|
|
2889
|
+
trackBy="path"
|
|
2890
|
+
class="{cssClass}"
|
|
2891
|
+
data-preview-path="{path}"
|
|
2892
|
+
data-routes-panel-url-instance=""
|
|
2893
|
+
>
|
|
2894
|
+
<span class="harmony-routes-panel-check">{checkGlyph}</span>
|
|
2895
|
+
<span class="harmony-routes-panel-item-label">{path}</span>
|
|
2896
|
+
</button>
|
|
2897
|
+
</div>
|
|
2898
|
+
</div>
|
|
2899
|
+
</div>
|
|
2900
|
+
|
|
2901
|
+
<div
|
|
2902
|
+
class="harmony-routes-panel-overlay"
|
|
2903
|
+
if="showSnapshotPanel"
|
|
2904
|
+
ref="snapshotPanelOverlay"
|
|
2905
|
+
role="dialog"
|
|
2906
|
+
aria-modal="true"
|
|
2907
|
+
aria-label="Snapshots"
|
|
2908
|
+
>
|
|
2909
|
+
<div class="harmony-routes-panel" ref="snapshotPanelDialog">
|
|
2910
|
+
<div class="harmony-routes-panel-header">
|
|
2911
|
+
<span class="harmony-routes-panel-title">Snapshots</span>
|
|
2912
|
+
<button type="button" class="harmony-routes-panel-close" ref="snapshotPanelCloseBtn" aria-label="Close">×</button>
|
|
2913
|
+
</div>
|
|
2914
|
+
<div class="harmony-routes-panel-search-row">
|
|
2915
|
+
<input
|
|
2916
|
+
type="search"
|
|
2917
|
+
class="harmony-routes-panel-search-input"
|
|
2918
|
+
ref="snapshotPanelSearchInput"
|
|
2919
|
+
value="{snapshotPanelSearchQuery}"
|
|
2920
|
+
placeholder="Search snapshots…"
|
|
2921
|
+
aria-label="Search snapshots"
|
|
2922
|
+
/>
|
|
2923
|
+
</div>
|
|
2924
|
+
<div class="harmony-routes-panel-body">
|
|
2925
|
+
<p class="harmony-routes-panel-empty" if="showSnapshotPanelEmptySearch">No snapshots match your search.</p>
|
|
2926
|
+
<button
|
|
2927
|
+
type="button"
|
|
2928
|
+
forEach="filteredSnapshotRows"
|
|
2929
|
+
trackBy="value"
|
|
2930
|
+
class="{cssClass}"
|
|
2931
|
+
data-snapshot-value="{value}"
|
|
2932
|
+
data-snapshot-panel-item=""
|
|
2933
|
+
>
|
|
2934
|
+
<span class="harmony-routes-panel-check">{checkGlyph}</span>
|
|
2935
|
+
<span class="harmony-routes-panel-item-label">{label}</span>
|
|
2936
|
+
</button>
|
|
2937
|
+
</div>
|
|
2938
|
+
</div>
|
|
2939
|
+
</div>
|
|
2940
|
+
|
|
2941
|
+
<div class="harmony-editor-body">
|
|
2942
|
+
<div class="harmony-float-rail" aria-label="Editor tools">
|
|
2943
|
+
<button
|
|
2944
|
+
type="button"
|
|
2945
|
+
class="harmony-add-btn harmony-add-page-btn"
|
|
2946
|
+
ref="harmonyAddPageBtn"
|
|
2947
|
+
disabled="isRunning"
|
|
2948
|
+
aria-label="Add Page"
|
|
2949
|
+
>Add Page</button>
|
|
2950
|
+
</div>
|
|
2951
|
+
|
|
2952
|
+
<div class="harmony-workspace">
|
|
1893
2953
|
<input
|
|
1894
2954
|
type="file"
|
|
1895
2955
|
class="file-input-hidden"
|
|
@@ -1899,13 +2959,13 @@ data:
|
|
|
1899
2959
|
|
|
1900
2960
|
<div class="editor-stage">
|
|
1901
2961
|
<div class="canvas-workspace harmony-canvas-area" if="isPreviewMode">
|
|
1902
|
-
<div class="preview-loading" if="previewLoading">
|
|
2962
|
+
<div class="preview-loading" if="previewLoading">Loading…</div>
|
|
1903
2963
|
<div class="preview-error" if="previewError">{previewError}</div>
|
|
1904
|
-
<div class="canvas-
|
|
2964
|
+
<div class="canvas-stage-shell" if="showPreviewIframe" style="width: {stageWidthPx}px;">
|
|
2965
|
+
<div class="stage-resize-handle stage-resize-handle-left" ref="stageResizeLeft" title="Drag to resize stage" aria-label="Resize stage width"></div>
|
|
2966
|
+
<div class="stage-resize-handle stage-resize-handle-right" ref="stageResizeRight" title="Drag to resize stage" aria-label="Resize stage width"></div>
|
|
2967
|
+
<div class="canvas-window harmony-canvas-window">
|
|
1905
2968
|
<div class="canvas-chrome harmony-canvas-chrome">
|
|
1906
|
-
<div class="canvas-chrome-left harmony-canvas-chrome-left">
|
|
1907
|
-
<span class="canvas-page-badge harmony-canvas-page-badge">Preview</span>
|
|
1908
|
-
</div>
|
|
1909
2969
|
<div class="url-bar-wrap harmony-url-bar-wrap">
|
|
1910
2970
|
<div class="url-bar">{previewUrlBar}</div>
|
|
1911
2971
|
</div>
|
|
@@ -1915,54 +2975,42 @@ data:
|
|
|
1915
2975
|
<button type="button" class="{breakpointMobileOn ? visual-tool-on} visual-tool-btn" ref="breakpointMobileBtn" title="Mobile (390px)"><svg width="8" height="14" viewBox="0 0 8 14" fill="none"><rect x="0.7" y="0.7" width="6.6" height="12.6" rx="1.1" stroke="currentColor" stroke-width="1.4"/><line x1="2.5" y1="11.5" x2="5.5" y2="11.5" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/></svg></button>
|
|
1916
2976
|
</div>
|
|
1917
2977
|
</div>
|
|
1918
|
-
<div class="
|
|
2978
|
+
<div class="preview-frame-wrap harmony-canvas-content" ref="previewCaptureRoot">
|
|
1919
2979
|
<iframe class="preview-frame" ref="previewIframe" src="{previewSrc}" title="Page preview"></iframe>
|
|
1920
2980
|
<div class="{visualOverlayPointerNone ? visual-overlay-none} visual-overlay" ref="visualOverlay">
|
|
1921
2981
|
<div
|
|
1922
|
-
class="point-marker"
|
|
2982
|
+
class="{markerOpen ? point-marker-open} {markerEditMode ? marker-edit-mode} point-marker"
|
|
1923
2983
|
forEach="visualPointDisplayItems"
|
|
1924
2984
|
trackBy="id"
|
|
2985
|
+
ref="visualAnnotationMarker"
|
|
2986
|
+
data-visual-annotation-marker="{id}"
|
|
1925
2987
|
style="left: {leftPct}%; top: {topPct}%;"
|
|
1926
2988
|
>
|
|
1927
2989
|
<span class="point-marker-idx">{indexLabel}</span>
|
|
1928
2990
|
</div>
|
|
1929
2991
|
<div
|
|
1930
|
-
class="area-rect"
|
|
2992
|
+
class="{markerOpen ? area-rect-open} {markerEditMode ? marker-edit-mode} area-rect"
|
|
1931
2993
|
forEach="visualAreaDisplayItems"
|
|
1932
2994
|
trackBy="id"
|
|
2995
|
+
ref="visualAnnotationMarker"
|
|
2996
|
+
data-visual-annotation-marker="{id}"
|
|
1933
2997
|
style="left: {leftPct}%; top: {topPct}%; width: {widthPct}%; height: {heightPct}%;"
|
|
1934
|
-
|
|
2998
|
+
>
|
|
2999
|
+
<span class="area-marker-idx">{indexLabel}</span>
|
|
3000
|
+
<div if="markerEditMode" class="area-resize-handle area-resize-nw" data-area-resize-handle="nw"></div>
|
|
3001
|
+
<div if="markerEditMode" class="area-resize-handle area-resize-n" data-area-resize-handle="n"></div>
|
|
3002
|
+
<div if="markerEditMode" class="area-resize-handle area-resize-ne" data-area-resize-handle="ne"></div>
|
|
3003
|
+
<div if="markerEditMode" class="area-resize-handle area-resize-e" data-area-resize-handle="e"></div>
|
|
3004
|
+
<div if="markerEditMode" class="area-resize-handle area-resize-se" data-area-resize-handle="se"></div>
|
|
3005
|
+
<div if="markerEditMode" class="area-resize-handle area-resize-s" data-area-resize-handle="s"></div>
|
|
3006
|
+
<div if="markerEditMode" class="area-resize-handle area-resize-sw" data-area-resize-handle="sw"></div>
|
|
3007
|
+
<div if="markerEditMode" class="area-resize-handle area-resize-w" data-area-resize-handle="w"></div>
|
|
3008
|
+
</div>
|
|
1935
3009
|
<div
|
|
1936
3010
|
class="area-rect area-rect-draft"
|
|
1937
3011
|
if="showAreaDraftRect"
|
|
1938
3012
|
style="left: {areaDraftLeftPct}%; top: {areaDraftTopPct}%; width: {areaDraftWidthPct}%; height: {areaDraftHeightPct}%;"
|
|
1939
3013
|
></div>
|
|
1940
|
-
<div
|
|
1941
|
-
class="arrow-pending-dot"
|
|
1942
|
-
if="showArrowPending"
|
|
1943
|
-
style="left: {arrowPendingLeftPct}%; top: {arrowPendingTopPct}%;"
|
|
1944
|
-
></div>
|
|
1945
|
-
<svg class="arrow-svg" if="hasVisualArrowLines" viewBox="0 0 100 100" preserveAspectRatio="none">
|
|
1946
|
-
<defs>
|
|
1947
|
-
<marker id="aiditor-arrowhead" markerWidth="8" markerHeight="8" refX="6" refY="4" orient="auto">
|
|
1948
|
-
<polygon points="0 0, 8 4, 0 8" fill="#116dff" />
|
|
1949
|
-
</marker>
|
|
1950
|
-
</defs>
|
|
1951
|
-
<line
|
|
1952
|
-
forEach="visualArrowDisplayItems"
|
|
1953
|
-
trackBy="id"
|
|
1954
|
-
x1="{x1Pct}"
|
|
1955
|
-
y1="{y1Pct}"
|
|
1956
|
-
x2="{x2Pct}"
|
|
1957
|
-
y2="{y2Pct}"
|
|
1958
|
-
/>
|
|
1959
|
-
</svg>
|
|
1960
|
-
<div
|
|
1961
|
-
class="arrow-end-pin"
|
|
1962
|
-
forEach="visualArrowPinItems"
|
|
1963
|
-
trackBy="id"
|
|
1964
|
-
style="left: {leftPct}%; top: {topPct}%;"
|
|
1965
|
-
>{indexLabel}</div>
|
|
1966
3014
|
</div>
|
|
1967
3015
|
<div class="visual-popovers" if="showVisualAnnotationsPanel">
|
|
1968
3016
|
<div
|
|
@@ -2011,7 +3059,7 @@ data:
|
|
|
2011
3059
|
</div>
|
|
2012
3060
|
</div>
|
|
2013
3061
|
<div
|
|
2014
|
-
class="{popoverFlipX ? visual-popover-flip-x} {popoverFlipY ? visual-popover-flip-y} visual-popover"
|
|
3062
|
+
class="{!showPopover ? visual-popover-hidden} {popoverFlipX ? visual-popover-flip-x} {popoverFlipY ? visual-popover-flip-y} visual-popover"
|
|
2015
3063
|
forEach="visualAnnotationRows"
|
|
2016
3064
|
trackBy="id"
|
|
2017
3065
|
ref="annotationRow"
|
|
@@ -2024,10 +3072,10 @@ data:
|
|
|
2024
3072
|
<button type="button" class="visual-annotation-remove" title="Remove annotation">Remove</button>
|
|
2025
3073
|
<button
|
|
2026
3074
|
type="button"
|
|
2027
|
-
class="visual-annotation-
|
|
2028
|
-
|
|
2029
|
-
|
|
2030
|
-
|
|
3075
|
+
class="visual-annotation-minimize"
|
|
3076
|
+
title="Minimize comment"
|
|
3077
|
+
aria-label="Minimize comment"
|
|
3078
|
+
><svg width="14" height="14" viewBox="0 0 14 14" fill="none" aria-hidden="true"><path d="M4 6l3 3 3-3" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
|
|
2031
3079
|
</div>
|
|
2032
3080
|
</div>
|
|
2033
3081
|
<textarea
|
|
@@ -2037,18 +3085,16 @@ data:
|
|
|
2037
3085
|
value="{instruction}"
|
|
2038
3086
|
></textarea>
|
|
2039
3087
|
<div class="annotation-add-menu">
|
|
2040
|
-
<
|
|
2041
|
-
<div class="annotation-add-menu-panel add-menu-panel" if="showAddMenuControls">
|
|
3088
|
+
<div class="annotation-add-menu-panel add-menu-panel">
|
|
2042
3089
|
<div class="add-menu-panel-attached">
|
|
2043
3090
|
<div if="showMarkerAddMenuChips">
|
|
2044
3091
|
<div class="add-page-plugins-zone-title">Add Menu on this marker</div>
|
|
2045
3092
|
<div class="add-page-plugin-chips">
|
|
2046
|
-
<span class="add-page-plugin-chip" forEach="markerAddMenuChips" trackBy="rowKey">{title}<span class="add-page-plugin-chip-sub">{subtitle}</span><button type="button" class="add-page-plugin-chip-remove" data-marker-add-menu-remove="1" data-item-id="{itemId}" title="Remove">×</button></span>
|
|
3093
|
+
<span class="add-page-plugin-chip" forEach="markerAddMenuChips" trackBy="rowKey"><span class="add-page-plugin-chip-text" title="{title}">{title}<span class="add-page-plugin-chip-sub">{subtitle}</span></span><button type="button" class="add-page-plugin-chip-remove" data-marker-add-menu-remove="1" data-item-id="{itemId}" title="Remove">×</button><button type="button" class="add-page-plugin-chip-at" data-marker-add-menu-at-title="1" data-title="{title}" title="Insert @Title">@</button></span>
|
|
2047
3094
|
</div>
|
|
2048
3095
|
</div>
|
|
2049
3096
|
<p class="add-page-hint" if="showMarkerAddMenuEmptyHint">No resources attached on this marker — click + Add to pick from the catalog.</p>
|
|
2050
3097
|
<button type="button" class="add-page-btn add-page-btn-cancel" data-marker-add-menu-open="1">+ Add</button>
|
|
2051
|
-
<button type="button" class="add-page-manage-link" data-marker-add-menu-manage="1">Manage plugins…</button>
|
|
2052
3098
|
<p class="add-page-field-error" if="crAddMenuParamCollisionWarning">{crAddMenuParamCollisionWarning}</p>
|
|
2053
3099
|
<p class="add-page-hint" if="crAddMenuRouteParamHint">{crAddMenuRouteParamHint}</p>
|
|
2054
3100
|
<div class="add-menu-route-params" if="showCrAddMenuRouteParams">
|
|
@@ -2065,22 +3111,6 @@ data:
|
|
|
2065
3111
|
<button type="button" class="add-page-btn add-page-btn-cancel" data-cr-route-param-cancel="1">Cancel</button>
|
|
2066
3112
|
</div>
|
|
2067
3113
|
</div>
|
|
2068
|
-
<div class="add-menu-popover" if="showAddMenuItemPicker">
|
|
2069
|
-
<div class="add-menu-popover-header">
|
|
2070
|
-
<span if="!addMenuSelectedCategory">Pick a category</span>
|
|
2071
|
-
<span if="addMenuSelectedCategory">Pick an item</span>
|
|
2072
|
-
<button type="button" data-marker-add-menu-close="1">×</button>
|
|
2073
|
-
</div>
|
|
2074
|
-
<p class="add-page-hint" if="showMarkerPickerLoading">Loading catalog…</p>
|
|
2075
|
-
<p class="add-page-hint" if="showMarkerPickerCatalogEmpty">Add Menu catalog is empty. Run <code>yarn setup ui-kit --force</code> (and other plugins) in the project, then click + Add again.</p>
|
|
2076
|
-
<div class="add-menu-nav">
|
|
2077
|
-
<div class="add-menu-nav-row" forEach="markerPickerNavRows" trackBy="rowKey">
|
|
2078
|
-
<button type="button" class="add-menu-nav-btn" if="kind===category" data-marker-add-menu-category="1" data-category="{value}">{label}</button>
|
|
2079
|
-
<button type="button" class="add-menu-nav-btn" if="kind===subCategory" data-marker-add-menu-subcategory="1" data-subcategory="{value}">{label}</button>
|
|
2080
|
-
<button type="button" class="add-menu-item-btn" if="kind===item" data-marker-add-menu-pick="1" data-item-id="{value}">{label}</button>
|
|
2081
|
-
</div>
|
|
2082
|
-
</div>
|
|
2083
|
-
</div>
|
|
2084
3114
|
</div>
|
|
2085
3115
|
</div>
|
|
2086
3116
|
<div class="visual-annotation-files">
|
|
@@ -2103,35 +3133,82 @@ data:
|
|
|
2103
3133
|
</div>
|
|
2104
3134
|
</div>
|
|
2105
3135
|
</div>
|
|
3136
|
+
<button
|
|
3137
|
+
type="button"
|
|
3138
|
+
class="visual-annotation-quick-send"
|
|
3139
|
+
disabled="quickSendDisabled"
|
|
3140
|
+
title="Send comments to agent"
|
|
3141
|
+
aria-label="Send comments to agent"
|
|
3142
|
+
><svg class="tool-send-icon" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="M14 2L7 9" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/><path d="M14 2L9.5 14L7 9L2 6.5L14 2Z" stroke="currentColor" stroke-width="1.4" stroke-linejoin="round"/></svg></button>
|
|
2106
3143
|
</div>
|
|
2107
3144
|
</div>
|
|
2108
3145
|
</div>
|
|
2109
|
-
</div>
|
|
2110
3146
|
<p class="visual-submit-error" if="showVisualSubmitError">{visualSubmitError}</p>
|
|
2111
|
-
|
|
3147
|
+
</div>
|
|
3148
|
+
</div>
|
|
2112
3149
|
|
|
2113
|
-
<div class="annotate-dock
|
|
2114
|
-
<
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
3150
|
+
<div class="annotate-dock-wrap" if="isPreviewMode && showVisualToolbar">
|
|
3151
|
+
<div class="clear-markers-confirm" if="showClearMarkersConfirm" role="alertdialog" aria-live="polite" aria-label="Confirm remove all markers">
|
|
3152
|
+
<span class="clear-markers-confirm-msg">{clearMarkersConfirmText}</span>
|
|
3153
|
+
<button type="button" class="clear-markers-cancel-btn" ref="clearMarkersCancelBtn">Cancel</button>
|
|
3154
|
+
<button type="button" class="clear-markers-confirm-btn" ref="clearMarkersConfirmBtn">Remove all</button>
|
|
3155
|
+
</div>
|
|
3156
|
+
<div class="annotate-dock preview-visual-tools">
|
|
3157
|
+
<button type="button" class="{visualToolNoneOn ? visual-tool-on} visual-tool-btn" ref="visualToolNoneBtn" title="Clear all markers and return to normal preview" aria-label="Clear all markers and return to normal preview"><span class="tool-glyph" aria-hidden="true">☒</span></button>
|
|
3158
|
+
<span class="tool-group-sep"></span>
|
|
3159
|
+
<button
|
|
3160
|
+
type="button"
|
|
3161
|
+
class="{visualToolPointOn ? visual-tool-on} visual-tool-btn"
|
|
3162
|
+
ref="visualToolPointBtn"
|
|
3163
|
+
disabled="visualMarkerToolsDisabled"
|
|
3164
|
+
title="{visualPointMarkerTooltip}"
|
|
3165
|
+
aria-label="{visualPointMarkerTooltip}"
|
|
3166
|
+
><span class="tool-glyph" aria-hidden="true">⊚</span></button>
|
|
3167
|
+
<button
|
|
3168
|
+
type="button"
|
|
3169
|
+
class="{visualToolAreaOn ? visual-tool-on} visual-tool-btn"
|
|
3170
|
+
ref="visualToolAreaBtn"
|
|
3171
|
+
disabled="visualMarkerToolsDisabled"
|
|
3172
|
+
title="{visualAreaMarkerTooltip}"
|
|
3173
|
+
aria-label="{visualAreaMarkerTooltip}"
|
|
3174
|
+
><span class="tool-glyph" aria-hidden="true">▢</span></button>
|
|
2119
3175
|
<span class="tool-group-sep"></span>
|
|
2120
3176
|
<button
|
|
2121
3177
|
type="button"
|
|
2122
3178
|
class="{isVideoRecording ? video-record-active} video-record-btn visual-tool-btn"
|
|
2123
3179
|
ref="videoRecordBtn"
|
|
2124
3180
|
disabled="videoRecordDisabled"
|
|
2125
|
-
title="
|
|
2126
|
-
|
|
3181
|
+
title="{videoRecordTooltip}"
|
|
3182
|
+
aria-label="{videoRecordTooltip}"
|
|
3183
|
+
><span class="tool-rec-label" if="!isVideoRecording" aria-hidden="true">REC</span><span class="tool-rec-label" if="isVideoRecording" aria-hidden="true">⏹</span></button>
|
|
2127
3184
|
<button
|
|
2128
3185
|
type="button"
|
|
2129
3186
|
class="visual-tool-btn freeze-btn"
|
|
2130
3187
|
ref="freezeBtn"
|
|
2131
3188
|
disabled="freezeDisabled"
|
|
2132
|
-
title="Freeze page state"
|
|
2133
|
-
|
|
3189
|
+
title="Freeze the current page state"
|
|
3190
|
+
aria-label="Freeze the current page state"
|
|
3191
|
+
><span class="tool-glyph" aria-hidden="true">❄</span></button>
|
|
3192
|
+
<span class="tool-group-sep"></span>
|
|
3193
|
+
<button
|
|
3194
|
+
type="button"
|
|
3195
|
+
class="visual-tool-btn send-to-agent-btn"
|
|
3196
|
+
ref="sendToAgentBtn"
|
|
3197
|
+
disabled="sendToAgentDisabled"
|
|
3198
|
+
title="{sendToAgentTooltip}"
|
|
3199
|
+
aria-label="{sendToAgentTooltip}"
|
|
3200
|
+
><svg class="tool-send-icon" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="M14 2L7 9" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/><path d="M14 2L9.5 14L7 9L2 6.5L14 2Z" stroke="currentColor" stroke-width="1.4" stroke-linejoin="round"/></svg></button>
|
|
3201
|
+
</div>
|
|
2134
3202
|
</div>
|
|
3203
|
+
</div>
|
|
3204
|
+
<button
|
|
3205
|
+
type="button"
|
|
3206
|
+
class="harmony-stage-icon-btn project-settings-btn"
|
|
3207
|
+
ref="projectSettingsBtn"
|
|
3208
|
+
disabled="isRunning"
|
|
3209
|
+
aria-label="Project settings"
|
|
3210
|
+
title="Project settings"
|
|
3211
|
+
>⚙</button>
|
|
2135
3212
|
</div>
|
|
2136
3213
|
<div class="add-page-result-slot" ref="addPageResultBannerSlot">
|
|
2137
3214
|
<div class="{addPageResultBannerClass} add-page-result-banner" if="showAddPageResultBanner">
|
|
@@ -2145,19 +3222,86 @@ data:
|
|
|
2145
3222
|
<div class="{bottomPanelClass}">
|
|
2146
3223
|
<div class="bottom-panel-resize" ref="bottomPanelResize"></div>
|
|
2147
3224
|
<div class="bottom-panel-header" ref="bottomPanelHeader">
|
|
2148
|
-
<span class="bottom-panel-title">AI
|
|
3225
|
+
<span class="bottom-panel-title">AI Agent</span>
|
|
2149
3226
|
<span class="bottom-panel-running" if="showBottomPanelRunning"></span>
|
|
2150
3227
|
<span class="bottom-panel-spacer"></span>
|
|
2151
|
-
<
|
|
2152
|
-
|
|
3228
|
+
<div class="bottom-panel-header-actions">
|
|
3229
|
+
<div class="agent-stop-confirm-anchor">
|
|
3230
|
+
<div class="clear-markers-confirm agent-stop-confirm-float" if="showAgentStopConfirm" ref="agentStopConfirmDialog" role="alertdialog" aria-live="polite" aria-label="Confirm stop agent">
|
|
3231
|
+
<span class="clear-markers-confirm-msg">Stop the agent? Work in progress will be cancelled.</span>
|
|
3232
|
+
<button type="button" class="clear-markers-cancel-btn" ref="agentStopCancelBtn">Cancel</button>
|
|
3233
|
+
<button type="button" class="clear-markers-confirm-btn" ref="agentStopConfirmBtn">Stop</button>
|
|
3234
|
+
</div>
|
|
3235
|
+
<button type="button" class="{agentStopBtnClass}" ref="agentStopBtn" if="showBottomPanelRunning">Stop</button>
|
|
3236
|
+
</div>
|
|
3237
|
+
<button type="button" class="bottom-panel-clear" ref="bottomPanelClearBtn">Clear</button>
|
|
3238
|
+
<button type="button" class="bottom-panel-toggle" ref="bottomPanelToggleBtn">{bottomPanelToggleGlyph}</button>
|
|
3239
|
+
</div>
|
|
2153
3240
|
</div>
|
|
3241
|
+
<div class="bottom-panel-body">
|
|
2154
3242
|
<div class="output-panel" ref="outputScroll">
|
|
2155
|
-
<div
|
|
3243
|
+
<div forEach="chunks" trackBy="id">
|
|
3244
|
+
<div if="isDivider" class="chunk chunk-divider">{text}</div>
|
|
3245
|
+
<div if="!isDivider" class="{cssClass}"><span if="showUserPrefix" class="chunk-user-prefix">You: </span><span if="filePath" class="chunk-tool-prefix">> {toolName} </span><a if="filePath" class="file-link" href="#" data-path="{filePath}">{filePath}</a><span if="!filePath">{text}</span></div>
|
|
3246
|
+
</div>
|
|
2156
3247
|
</div>
|
|
2157
3248
|
<div class="agent-chat-row" if="showAgentChatInput">
|
|
2158
3249
|
<textarea class="agent-chat-input" ref="agentChatInput" rows="1" value="{agentChatMessage}" placeholder="{agentChatPlaceholder}" disabled="agentChatInputDisabled" aria-label="Message to agent"></textarea>
|
|
2159
3250
|
<button type="button" class="agent-chat-send" ref="agentChatSendBtn" disabled="agentChatSendDisabled" aria-label="Send message">Send</button>
|
|
2160
3251
|
</div>
|
|
3252
|
+
</div>
|
|
3253
|
+
</div>
|
|
3254
|
+
</div>
|
|
3255
|
+
</div>
|
|
3256
|
+
|
|
3257
|
+
<div class="add-menu-picker-overlay" if="showAddMenuPickerModal" ref="addMenuPickerOverlay" role="dialog" aria-modal="true" aria-label="Add elements">
|
|
3258
|
+
<div class="{addMenuPickerDialogClass}" ref="addMenuPickerDialog">
|
|
3259
|
+
<div class="add-menu-picker-header">
|
|
3260
|
+
<span class="add-menu-picker-title">{addMenuPickerHeaderTitle}</span>
|
|
3261
|
+
<button type="button" class="add-menu-picker-close" ref="addMenuPickerCloseBtn" aria-label="Close">×</button>
|
|
3262
|
+
</div>
|
|
3263
|
+
<div class="add-menu-picker-body">
|
|
3264
|
+
<p class="add-menu-picker-hint" if="showAddMenuPickerLoading">Loading plugin catalog…</p>
|
|
3265
|
+
<p class="add-menu-picker-hint" if="showAddMenuPickerEmpty">No Add Menu items yet. Install plugins in Project settings, then try again.</p>
|
|
3266
|
+
<div class="add-menu-picker-browse" if="showAddMenuPickerBrowse">
|
|
3267
|
+
<div class="add-menu-picker-search-row">
|
|
3268
|
+
<button type="button" class="add-menu-picker-back" if="showAddMenuPickerSearchBack" data-add-menu-picker-search-back="1" aria-label="Back to browse">‹</button>
|
|
3269
|
+
<div class="add-menu-picker-search-field">
|
|
3270
|
+
<span class="add-menu-picker-search-icon" aria-hidden="true">⌕</span>
|
|
3271
|
+
<input type="search" class="add-menu-picker-search-input" ref="addMenuPickerSearchInput" placeholder="Search elements…" value="{addMenuPickerSearchQuery}" />
|
|
3272
|
+
<button type="button" class="add-menu-picker-search-clear" if="showAddMenuPickerSearchClear" data-add-menu-picker-search-clear="1" aria-label="Clear search">×</button>
|
|
3273
|
+
</div>
|
|
3274
|
+
</div>
|
|
3275
|
+
<div class="{addMenuPickerBrowseLayoutClass}">
|
|
3276
|
+
<nav class="add-menu-picker-sidebar" if="showAddMenuPickerBrowseLayout" aria-label="Categories">
|
|
3277
|
+
<button type="button" class="{cssClass}" forEach="addMenuPickerLeftNavRows" trackBy="rowKey" data-add-menu-picker-left-nav="1" data-nav-key="{navKey}">
|
|
3278
|
+
<span class="add-menu-picker-category-label">{label}</span>
|
|
3279
|
+
<span class="add-menu-picker-category-count">{itemCount}</span>
|
|
3280
|
+
</button>
|
|
3281
|
+
</nav>
|
|
3282
|
+
<div class="add-menu-picker-main">
|
|
3283
|
+
<h2 class="add-menu-picker-main-title" if="showAddMenuPickerBrowseTitle">{addMenuPickerBrowseCategoryTitle}</h2>
|
|
3284
|
+
<p class="add-menu-picker-search-summary" if="showAddMenuPickerSearchSummary">{addMenuPickerSearchSummary}</p>
|
|
3285
|
+
<div class="add-menu-picker-subcategory-scroll" if="showAddMenuPickerSubCategoryFilters">
|
|
3286
|
+
<button type="button" class="add-menu-picker-subcategory-scroll-btn" if="showAddMenuPickerSubCategoryScrollPrev" data-add-menu-picker-subcategory-scroll="1" data-direction="prev" aria-label="Scroll filters left">‹</button>
|
|
3287
|
+
<div class="add-menu-picker-subcategories" ref="addMenuPickerSubCategoryFilters">
|
|
3288
|
+
<button type="button" class="{cssClass}" forEach="addMenuPickerSubCategoryFilterRows" trackBy="rowKey" data-add-menu-picker-subcategory-filter="1" data-nav-key="{navKey}"><span>{label}</span><span class="add-menu-picker-subcategory-count" if="showCount">{itemCount}</span></button>
|
|
3289
|
+
</div>
|
|
3290
|
+
<button type="button" class="add-menu-picker-subcategory-scroll-btn" if="showAddMenuPickerSubCategoryScrollNext" data-add-menu-picker-subcategory-scroll="1" data-direction="next" aria-label="Scroll filters right">›</button>
|
|
3291
|
+
</div>
|
|
3292
|
+
<div class="add-menu-picker-browse-content" if="showAddMenuPickerComponents">
|
|
3293
|
+
<div class="add-menu-picker-browse-row" forEach="addMenuPickerBrowseRows" trackBy="rowKey">
|
|
3294
|
+
<h3 class="add-menu-picker-section-title" if="isSectionHeader">{label}</h3>
|
|
3295
|
+
<button type="button" class="add-menu-picker-component-card" if="showPickable" data-add-menu-picker-item="1" data-item-id="{itemId}" title="{label}"><span class="add-menu-picker-component-title">{label}</span></button>
|
|
3296
|
+
<div class="add-menu-picker-component-card add-menu-picker-component-card--browse-only" if="showBrowseOnly"><span class="add-menu-picker-component-title" title="{label}">{label}</span></div>
|
|
3297
|
+
</div>
|
|
3298
|
+
</div>
|
|
3299
|
+
<p class="add-menu-picker-hint" if="showAddMenuPickerNoComponents">No components in this group.</p>
|
|
3300
|
+
<p class="add-menu-picker-hint" if="showAddMenuPickerNoSearchResults">No elements match your search.</p>
|
|
3301
|
+
</div>
|
|
3302
|
+
</div>
|
|
3303
|
+
</div>
|
|
3304
|
+
</div>
|
|
2161
3305
|
</div>
|
|
2162
3306
|
</div>
|
|
2163
3307
|
|
|
@@ -2250,28 +3394,13 @@ data:
|
|
|
2250
3394
|
<div class="add-menu-panel-attached">
|
|
2251
3395
|
<div if="showAddMenuChips" class="add-page-plugin-chips">
|
|
2252
3396
|
<span class="add-page-plugin-chip" forEach="addMenuChipRows" trackBy="rowKey">
|
|
2253
|
-
{title}<span class="add-page-plugin-chip-sub">{subtitle}</span>
|
|
3397
|
+
<span class="add-page-plugin-chip-text" title="{title}">{title}<span class="add-page-plugin-chip-sub">{subtitle}</span></span>
|
|
2254
3398
|
<button type="button" class="add-page-plugin-chip-remove" data-add-menu-remove-chip="1" data-item-id="{itemId}" title="Remove">×</button>
|
|
2255
3399
|
<button type="button" class="add-page-plugin-chip-at" data-add-menu-at-title="1" data-title="{title}" title="Insert @Title">@</button>
|
|
2256
3400
|
</span>
|
|
2257
3401
|
</div>
|
|
2258
3402
|
<p class="add-page-hint" if="showAddMenuEmptyHint">Install plugins in Project settings to unlock Add Menu items.</p>
|
|
2259
3403
|
<button type="button" class="add-page-btn add-page-btn-cancel" data-add-menu-open="1">+ Add</button>
|
|
2260
|
-
<button type="button" class="add-page-manage-link" data-add-menu-manage-plugins="1">Manage plugins…</button>
|
|
2261
|
-
</div>
|
|
2262
|
-
<div class="add-menu-popover" if="showAddMenuPopover">
|
|
2263
|
-
<div class="add-menu-popover-header">
|
|
2264
|
-
<span if="!addMenuSelectedCategory">Pick a category</span>
|
|
2265
|
-
<span if="addMenuSelectedCategory">Pick an item</span>
|
|
2266
|
-
<button type="button" data-add-menu-close="1">×</button>
|
|
2267
|
-
</div>
|
|
2268
|
-
<div class="add-menu-nav">
|
|
2269
|
-
<div class="add-menu-nav-row" forEach="addMenuNavRows" trackBy="rowKey">
|
|
2270
|
-
<button type="button" class="add-menu-nav-btn" if="kind===category" data-add-menu-category="1" data-category="{value}">{label}</button>
|
|
2271
|
-
<button type="button" class="add-menu-nav-btn" if="kind===subCategory" data-add-menu-subcategory="1" data-subcategory="{value}">{label}</button>
|
|
2272
|
-
<button type="button" class="add-menu-item-btn" if="kind===item" data-add-menu-pick="1" data-item-id="{value}">{label}</button>
|
|
2273
|
-
</div>
|
|
2274
|
-
</div>
|
|
2275
3404
|
</div>
|
|
2276
3405
|
<div class="add-menu-route-confirm" if="showAddMenuRouteParamConfirm">
|
|
2277
3406
|
<p><strong>This component needs a dynamic page route</strong></p>
|
|
@@ -2342,23 +3471,6 @@ data:
|
|
|
2342
3471
|
</div>
|
|
2343
3472
|
</div>
|
|
2344
3473
|
</div>
|
|
2345
|
-
<div class="{bottomPanelClass}">
|
|
2346
|
-
<div class="bottom-panel-resize" ref="bottomPanelResize"></div>
|
|
2347
|
-
<div class="bottom-panel-header" ref="bottomPanelHeader">
|
|
2348
|
-
<span class="bottom-panel-title">AI Assistant</span>
|
|
2349
|
-
<span class="bottom-panel-running" if="showBottomPanelRunning"></span>
|
|
2350
|
-
<span class="bottom-panel-spacer"></span>
|
|
2351
|
-
<button type="button" class="bottom-panel-clear" ref="bottomPanelClearBtn">Clear</button>
|
|
2352
|
-
<button type="button" class="bottom-panel-toggle" ref="bottomPanelToggleBtn">{bottomPanelToggleGlyph}</button>
|
|
2353
|
-
</div>
|
|
2354
|
-
<div class="output-panel" ref="outputScroll">
|
|
2355
|
-
<div class="{cssClass}" forEach="chunks" trackBy="text"><span if="showUserPrefix" class="chunk-user-prefix">You: </span><span if="filePath" class="chunk-tool-prefix">> {toolName} </span><a if="filePath" class="file-link" href="#" data-path="{filePath}">{filePath}</a><span if="!filePath">{text}</span></div>
|
|
2356
|
-
</div>
|
|
2357
|
-
<div class="agent-chat-row" if="showAgentChatInput">
|
|
2358
|
-
<textarea class="agent-chat-input" ref="agentChatInput" rows="1" value="{agentChatMessage}" placeholder="{agentChatPlaceholder}" disabled="agentChatInputDisabled" aria-label="Message to agent"></textarea>
|
|
2359
|
-
<button type="button" class="agent-chat-send" ref="agentChatSendBtn" disabled="agentChatSendDisabled" aria-label="Send message">Send</button>
|
|
2360
|
-
</div>
|
|
2361
|
-
</div>
|
|
2362
3474
|
</div>
|
|
2363
3475
|
|
|
2364
3476
|
<div class="file-preview-overlay" if="showFilePreview" ref="filePreviewBackdrop">
|
|
@@ -2389,10 +3501,10 @@ data:
|
|
|
2389
3501
|
<!-- Must mount while preparing: refs.videoReviewPlayer must exist before videoReviewReady flips true. -->
|
|
2390
3502
|
<div if="videoReviewPreparing || videoReviewReady">
|
|
2391
3503
|
<div class="video-review-tools">
|
|
2392
|
-
<button type="button" class="{videoModalToolNoneOn ? visual-tool-on} visual-tool-btn" ref="videoModalToolNoneBtn" title="Select"
|
|
2393
|
-
<
|
|
2394
|
-
<button type="button" class="{
|
|
2395
|
-
<button type="button" class="{
|
|
3504
|
+
<button type="button" class="{videoModalToolNoneOn ? visual-tool-on} visual-tool-btn" ref="videoModalToolNoneBtn" title="Select and pan the video" aria-label="Select and pan the video"><span class="tool-glyph" aria-hidden="true">☒</span></button>
|
|
3505
|
+
<span class="tool-group-sep"></span>
|
|
3506
|
+
<button type="button" class="{videoModalToolPointOn ? visual-tool-on} visual-tool-btn" ref="videoModalToolPointBtn" title="Add a point marker" aria-label="Add a point marker"><span class="tool-glyph" aria-hidden="true">⊚</span></button>
|
|
3507
|
+
<button type="button" class="{videoModalToolAreaOn ? visual-tool-on} visual-tool-btn" ref="videoModalToolAreaBtn" title="Add an area marker" aria-label="Add an area marker"><span class="tool-glyph" aria-hidden="true">▢</span></button>
|
|
2396
3508
|
</div>
|
|
2397
3509
|
<input type="file" class="file-input-hidden" ref="videoReviewAttachFileInput" multiple />
|
|
2398
3510
|
<div class="preview-frame-wrap video-review-capture-root" ref="videoReviewCaptureRoot">
|
|
@@ -2424,32 +3536,6 @@ data:
|
|
|
2424
3536
|
if="showVideoAreaDraftRect"
|
|
2425
3537
|
style="left: {videoAreaDraftLeftPct}%; top: {videoAreaDraftTopPct}%; width: {videoAreaDraftWidthPct}%; height: {videoAreaDraftHeightPct}%;"
|
|
2426
3538
|
></div>
|
|
2427
|
-
<div
|
|
2428
|
-
class="arrow-pending-dot"
|
|
2429
|
-
if="showVideoArrowPending"
|
|
2430
|
-
style="left: {videoArrowPendingLeftPct}%; top: {videoArrowPendingTopPct}%;"
|
|
2431
|
-
></div>
|
|
2432
|
-
<svg class="arrow-svg" if="hasVideoArrowLines" viewBox="0 0 100 100" preserveAspectRatio="none">
|
|
2433
|
-
<defs>
|
|
2434
|
-
<marker id="aiditor-video-arrowhead" markerWidth="8" markerHeight="8" refX="6" refY="4" orient="auto">
|
|
2435
|
-
<polygon points="0 0, 8 4, 0 8" fill="#116dff" />
|
|
2436
|
-
</marker>
|
|
2437
|
-
</defs>
|
|
2438
|
-
<line
|
|
2439
|
-
forEach="videoArrowDisplayItems"
|
|
2440
|
-
trackBy="id"
|
|
2441
|
-
x1="{x1Pct}"
|
|
2442
|
-
y1="{y1Pct}"
|
|
2443
|
-
x2="{x2Pct}"
|
|
2444
|
-
y2="{y2Pct}"
|
|
2445
|
-
/>
|
|
2446
|
-
</svg>
|
|
2447
|
-
<div
|
|
2448
|
-
class="arrow-end-pin"
|
|
2449
|
-
forEach="videoArrowPinItems"
|
|
2450
|
-
trackBy="id"
|
|
2451
|
-
style="left: {leftPct}%; top: {topPct}%;"
|
|
2452
|
-
>{indexLabel}</div>
|
|
2453
3539
|
</div>
|
|
2454
3540
|
<div class="visual-popovers" if="showVideoAnnotationPopoversAtPlayhead">
|
|
2455
3541
|
<div
|
|
@@ -2473,18 +3559,16 @@ data:
|
|
|
2473
3559
|
value="{instruction}"
|
|
2474
3560
|
></textarea>
|
|
2475
3561
|
<div class="annotation-add-menu">
|
|
2476
|
-
<
|
|
2477
|
-
<div class="annotation-add-menu-panel add-menu-panel" if="showAddMenuControls">
|
|
3562
|
+
<div class="annotation-add-menu-panel add-menu-panel">
|
|
2478
3563
|
<div class="add-menu-panel-attached">
|
|
2479
3564
|
<div if="showMarkerAddMenuChips">
|
|
2480
3565
|
<div class="add-page-plugins-zone-title">Add Menu on this marker</div>
|
|
2481
3566
|
<div class="add-page-plugin-chips">
|
|
2482
|
-
<span class="add-page-plugin-chip" forEach="markerAddMenuChips" trackBy="rowKey">{title}<span class="add-page-plugin-chip-sub">{subtitle}</span><button type="button" class="add-page-plugin-chip-remove" data-marker-add-menu-remove="1" data-item-id="{itemId}" title="Remove">×</button></span>
|
|
3567
|
+
<span class="add-page-plugin-chip" forEach="markerAddMenuChips" trackBy="rowKey"><span class="add-page-plugin-chip-text" title="{title}">{title}<span class="add-page-plugin-chip-sub">{subtitle}</span></span><button type="button" class="add-page-plugin-chip-remove" data-marker-add-menu-remove="1" data-item-id="{itemId}" title="Remove">×</button><button type="button" class="add-page-plugin-chip-at" data-marker-add-menu-at-title="1" data-title="{title}" title="Insert @Title">@</button></span>
|
|
2483
3568
|
</div>
|
|
2484
3569
|
</div>
|
|
2485
3570
|
<p class="add-page-hint" if="showMarkerAddMenuEmptyHint">No resources attached on this marker — click + Add to pick from the catalog.</p>
|
|
2486
3571
|
<button type="button" class="add-page-btn add-page-btn-cancel" data-marker-add-menu-open="1">+ Add</button>
|
|
2487
|
-
<button type="button" class="add-page-manage-link" data-marker-add-menu-manage="1">Manage plugins…</button>
|
|
2488
3572
|
<p class="add-page-field-error" if="crAddMenuParamCollisionWarning">{crAddMenuParamCollisionWarning}</p>
|
|
2489
3573
|
<p class="add-page-hint" if="crAddMenuRouteParamHint">{crAddMenuRouteParamHint}</p>
|
|
2490
3574
|
<div class="add-menu-route-params" if="showCrAddMenuRouteParams">
|
|
@@ -2501,22 +3585,6 @@ data:
|
|
|
2501
3585
|
<button type="button" class="add-page-btn add-page-btn-cancel" data-cr-route-param-cancel="1">Cancel</button>
|
|
2502
3586
|
</div>
|
|
2503
3587
|
</div>
|
|
2504
|
-
<div class="add-menu-popover" if="showAddMenuItemPicker">
|
|
2505
|
-
<div class="add-menu-popover-header">
|
|
2506
|
-
<span if="!addMenuSelectedCategory">Pick a category</span>
|
|
2507
|
-
<span if="addMenuSelectedCategory">Pick an item</span>
|
|
2508
|
-
<button type="button" data-marker-add-menu-close="1">×</button>
|
|
2509
|
-
</div>
|
|
2510
|
-
<p class="add-page-hint" if="showMarkerPickerLoading">Loading catalog…</p>
|
|
2511
|
-
<p class="add-page-hint" if="showMarkerPickerCatalogEmpty">Add Menu catalog is empty. Run <code>yarn setup ui-kit --force</code> (and other plugins) in the project, then click + Add again.</p>
|
|
2512
|
-
<div class="add-menu-nav">
|
|
2513
|
-
<div class="add-menu-nav-row" forEach="markerPickerNavRows" trackBy="rowKey">
|
|
2514
|
-
<button type="button" class="add-menu-nav-btn" if="kind===category" data-marker-add-menu-category="1" data-category="{value}">{label}</button>
|
|
2515
|
-
<button type="button" class="add-menu-nav-btn" if="kind===subCategory" data-marker-add-menu-subcategory="1" data-subcategory="{value}">{label}</button>
|
|
2516
|
-
<button type="button" class="add-menu-item-btn" if="kind===item" data-marker-add-menu-pick="1" data-item-id="{value}">{label}</button>
|
|
2517
|
-
</div>
|
|
2518
|
-
</div>
|
|
2519
|
-
</div>
|
|
2520
3588
|
</div>
|
|
2521
3589
|
</div>
|
|
2522
3590
|
<div class="visual-annotation-files">
|
|
@@ -2539,6 +3607,13 @@ data:
|
|
|
2539
3607
|
</div>
|
|
2540
3608
|
</div>
|
|
2541
3609
|
</div>
|
|
3610
|
+
<button
|
|
3611
|
+
type="button"
|
|
3612
|
+
class="visual-annotation-quick-send"
|
|
3613
|
+
disabled="quickSendDisabled"
|
|
3614
|
+
title="Send comments to agent"
|
|
3615
|
+
aria-label="Send comments to agent"
|
|
3616
|
+
><svg class="tool-send-icon" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="M14 2L7 9" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/><path d="M14 2L9.5 14L7 9L2 6.5L14 2Z" stroke="currentColor" stroke-width="1.4" stroke-linejoin="round"/></svg></button>
|
|
2542
3617
|
</div>
|
|
2543
3618
|
</div>
|
|
2544
3619
|
</div>
|
|
@@ -2576,13 +3651,13 @@ data:
|
|
|
2576
3651
|
<button type="button" class="snapshot-close" ref="snapshotCloseBtn" aria-label="Close">✕</button>
|
|
2577
3652
|
</div>
|
|
2578
3653
|
<div class="snapshot-tools">
|
|
2579
|
-
<button type="button" class="{
|
|
2580
|
-
<button type="button" class="{snapshotToolAreaOn ? visual-tool-on} visual-tool-btn" ref="snapshotToolAreaBtn" title="Area" aria-label="Area tool">▢</button>
|
|
2581
|
-
<button type="button" class="{snapshotToolArrowOn ? visual-tool-on} visual-tool-btn" ref="snapshotToolArrowBtn" title="Arrow" aria-label="Arrow tool">↗</button>
|
|
2582
|
-
<button type="button" class="{snapshotToolNoneOn ? visual-tool-on} visual-tool-btn" ref="snapshotToolNoneBtn" title="Select" aria-label="Select tool">⤢</button>
|
|
3654
|
+
<button type="button" class="{snapshotToolNoneOn ? visual-tool-on} visual-tool-btn" ref="snapshotToolNoneBtn" title="Select and pan the snapshot" aria-label="Select and pan the snapshot"><span class="tool-glyph" aria-hidden="true">☒</span></button>
|
|
2583
3655
|
<span class="tool-group-sep"></span>
|
|
2584
|
-
<button type="button" class="visual-tool-btn" ref="
|
|
2585
|
-
<button type="button" class="visual-tool-btn" ref="
|
|
3656
|
+
<button type="button" class="{snapshotToolPointOn ? visual-tool-on} visual-tool-btn" ref="snapshotToolPointBtn" title="Add a point marker" aria-label="Add a point marker"><span class="tool-glyph" aria-hidden="true">⊚</span></button>
|
|
3657
|
+
<button type="button" class="{snapshotToolAreaOn ? visual-tool-on} visual-tool-btn" ref="snapshotToolAreaBtn" title="Add an area marker" aria-label="Add an area marker"><span class="tool-glyph" aria-hidden="true">▢</span></button>
|
|
3658
|
+
<span class="tool-group-sep"></span>
|
|
3659
|
+
<button type="button" class="visual-tool-btn" ref="snapshotUndoBtn" title="Undo last marker" aria-label="Undo last marker"><span class="tool-glyph" aria-hidden="true">↩</span></button>
|
|
3660
|
+
<button type="button" class="visual-tool-btn" ref="snapshotClearBtn" title="Clear all markers" aria-label="Clear all markers"><span class="tool-glyph" aria-hidden="true">✕</span></button>
|
|
2586
3661
|
</div>
|
|
2587
3662
|
<input type="file" class="file-input-hidden" ref="snapshotAttachFileInput" multiple />
|
|
2588
3663
|
<div class="snapshot-body">
|
|
@@ -2590,50 +3665,38 @@ data:
|
|
|
2590
3665
|
<img class="snapshot-img" ref="snapshotImg" src="{snapshotImageSrc}" alt="Captured snapshot" draggable="false" />
|
|
2591
3666
|
<div class="{snapshotOverlayPointerNone ? snapshot-img-overlay-none} snapshot-img-overlay" ref="snapshotOverlay">
|
|
2592
3667
|
<div
|
|
2593
|
-
class="point-marker"
|
|
3668
|
+
class="{markerEditMode ? marker-edit-mode} point-marker"
|
|
2594
3669
|
forEach="snapshotPointDisplayItems"
|
|
2595
3670
|
trackBy="id"
|
|
3671
|
+
data-snapshot-annotation-marker="{id}"
|
|
3672
|
+
data-snapshot-annotation-kind="point"
|
|
2596
3673
|
style="left: {leftPct}%; top: {topPct}%;"
|
|
2597
3674
|
>
|
|
2598
3675
|
<span class="point-marker-idx">{indexLabel}</span>
|
|
2599
3676
|
</div>
|
|
2600
3677
|
<div
|
|
2601
|
-
class="area-rect"
|
|
3678
|
+
class="{markerEditMode ? marker-edit-mode} area-rect"
|
|
2602
3679
|
forEach="snapshotAreaDisplayItems"
|
|
2603
3680
|
trackBy="id"
|
|
3681
|
+
data-snapshot-annotation-marker="{id}"
|
|
3682
|
+
data-snapshot-annotation-kind="area"
|
|
2604
3683
|
style="left: {leftPct}%; top: {topPct}%; width: {widthPct}%; height: {heightPct}%;"
|
|
2605
|
-
|
|
3684
|
+
>
|
|
3685
|
+
<span class="area-marker-idx">{indexLabel}</span>
|
|
3686
|
+
<div if="markerEditMode" class="area-resize-handle area-resize-nw" data-area-resize-handle="nw"></div>
|
|
3687
|
+
<div if="markerEditMode" class="area-resize-handle area-resize-n" data-area-resize-handle="n"></div>
|
|
3688
|
+
<div if="markerEditMode" class="area-resize-handle area-resize-ne" data-area-resize-handle="ne"></div>
|
|
3689
|
+
<div if="markerEditMode" class="area-resize-handle area-resize-e" data-area-resize-handle="e"></div>
|
|
3690
|
+
<div if="markerEditMode" class="area-resize-handle area-resize-se" data-area-resize-handle="se"></div>
|
|
3691
|
+
<div if="markerEditMode" class="area-resize-handle area-resize-s" data-area-resize-handle="s"></div>
|
|
3692
|
+
<div if="markerEditMode" class="area-resize-handle area-resize-sw" data-area-resize-handle="sw"></div>
|
|
3693
|
+
<div if="markerEditMode" class="area-resize-handle area-resize-w" data-area-resize-handle="w"></div>
|
|
3694
|
+
</div>
|
|
2606
3695
|
<div
|
|
2607
3696
|
class="area-rect area-rect-draft"
|
|
2608
3697
|
if="showSnapshotAreaDraft"
|
|
2609
3698
|
style="left: {snapshotAreaDraftLeftPct}%; top: {snapshotAreaDraftTopPct}%; width: {snapshotAreaDraftWidthPct}%; height: {snapshotAreaDraftHeightPct}%;"
|
|
2610
3699
|
></div>
|
|
2611
|
-
<div
|
|
2612
|
-
class="arrow-pending-dot"
|
|
2613
|
-
if="showSnapshotArrowPending"
|
|
2614
|
-
style="left: {snapshotArrowPendingLeftPct}%; top: {snapshotArrowPendingTopPct}%;"
|
|
2615
|
-
></div>
|
|
2616
|
-
<svg class="arrow-svg" if="hasSnapshotArrowLines" viewBox="0 0 100 100" preserveAspectRatio="none">
|
|
2617
|
-
<defs>
|
|
2618
|
-
<marker id="aiditor-snapshot-arrowhead" markerWidth="8" markerHeight="8" refX="6" refY="4" orient="auto">
|
|
2619
|
-
<polygon points="0 0, 8 4, 0 8" fill="#116dff" />
|
|
2620
|
-
</marker>
|
|
2621
|
-
</defs>
|
|
2622
|
-
<line
|
|
2623
|
-
forEach="snapshotArrowDisplayItems"
|
|
2624
|
-
trackBy="id"
|
|
2625
|
-
x1="{x1Pct}"
|
|
2626
|
-
y1="{y1Pct}"
|
|
2627
|
-
x2="{x2Pct}"
|
|
2628
|
-
y2="{y2Pct}"
|
|
2629
|
-
/>
|
|
2630
|
-
</svg>
|
|
2631
|
-
<div
|
|
2632
|
-
class="arrow-end-pin"
|
|
2633
|
-
forEach="snapshotArrowPinItems"
|
|
2634
|
-
trackBy="id"
|
|
2635
|
-
style="left: {leftPct}%; top: {topPct}%;"
|
|
2636
|
-
>{indexLabel}</div>
|
|
2637
3700
|
</div>
|
|
2638
3701
|
</div>
|
|
2639
3702
|
<div class="snapshot-annotations-panel">
|
|
@@ -2656,18 +3719,16 @@ data:
|
|
|
2656
3719
|
value="{instruction}"
|
|
2657
3720
|
></textarea>
|
|
2658
3721
|
<div class="annotation-add-menu">
|
|
2659
|
-
<
|
|
2660
|
-
<div class="annotation-add-menu-panel add-menu-panel" if="showAddMenuControls">
|
|
3722
|
+
<div class="annotation-add-menu-panel add-menu-panel">
|
|
2661
3723
|
<div class="add-menu-panel-attached">
|
|
2662
3724
|
<div if="showMarkerAddMenuChips">
|
|
2663
3725
|
<div class="add-page-plugins-zone-title">Add Menu on this marker</div>
|
|
2664
3726
|
<div class="add-page-plugin-chips">
|
|
2665
|
-
<span class="add-page-plugin-chip" forEach="markerAddMenuChips" trackBy="rowKey">{title}<span class="add-page-plugin-chip-sub">{subtitle}</span><button type="button" class="add-page-plugin-chip-remove" data-marker-add-menu-remove="1" data-item-id="{itemId}" title="Remove">×</button></span>
|
|
3727
|
+
<span class="add-page-plugin-chip" forEach="markerAddMenuChips" trackBy="rowKey"><span class="add-page-plugin-chip-text" title="{title}">{title}<span class="add-page-plugin-chip-sub">{subtitle}</span></span><button type="button" class="add-page-plugin-chip-remove" data-marker-add-menu-remove="1" data-item-id="{itemId}" title="Remove">×</button><button type="button" class="add-page-plugin-chip-at" data-marker-add-menu-at-title="1" data-title="{title}" title="Insert @Title">@</button></span>
|
|
2666
3728
|
</div>
|
|
2667
3729
|
</div>
|
|
2668
3730
|
<p class="add-page-hint" if="showMarkerAddMenuEmptyHint">No resources attached on this marker — click + Add to pick from the catalog.</p>
|
|
2669
3731
|
<button type="button" class="add-page-btn add-page-btn-cancel" data-marker-add-menu-open="1">+ Add</button>
|
|
2670
|
-
<button type="button" class="add-page-manage-link" data-marker-add-menu-manage="1">Manage plugins…</button>
|
|
2671
3732
|
<p class="add-page-field-error" if="crAddMenuParamCollisionWarning">{crAddMenuParamCollisionWarning}</p>
|
|
2672
3733
|
<p class="add-page-hint" if="crAddMenuRouteParamHint">{crAddMenuRouteParamHint}</p>
|
|
2673
3734
|
<div class="add-menu-route-params" if="showCrAddMenuRouteParams">
|
|
@@ -2684,22 +3745,6 @@ data:
|
|
|
2684
3745
|
<button type="button" class="add-page-btn add-page-btn-cancel" data-cr-route-param-cancel="1">Cancel</button>
|
|
2685
3746
|
</div>
|
|
2686
3747
|
</div>
|
|
2687
|
-
<div class="add-menu-popover" if="showAddMenuItemPicker">
|
|
2688
|
-
<div class="add-menu-popover-header">
|
|
2689
|
-
<span if="!addMenuSelectedCategory">Pick a category</span>
|
|
2690
|
-
<span if="addMenuSelectedCategory">Pick an item</span>
|
|
2691
|
-
<button type="button" data-marker-add-menu-close="1">×</button>
|
|
2692
|
-
</div>
|
|
2693
|
-
<p class="add-page-hint" if="showMarkerPickerLoading">Loading catalog…</p>
|
|
2694
|
-
<p class="add-page-hint" if="showMarkerPickerCatalogEmpty">Add Menu catalog is empty. Run <code>yarn setup ui-kit --force</code> (and other plugins) in the project, then click + Add again.</p>
|
|
2695
|
-
<div class="add-menu-nav">
|
|
2696
|
-
<div class="add-menu-nav-row" forEach="markerPickerNavRows" trackBy="rowKey">
|
|
2697
|
-
<button type="button" class="add-menu-nav-btn" if="kind===category" data-marker-add-menu-category="1" data-category="{value}">{label}</button>
|
|
2698
|
-
<button type="button" class="add-menu-nav-btn" if="kind===subCategory" data-marker-add-menu-subcategory="1" data-subcategory="{value}">{label}</button>
|
|
2699
|
-
<button type="button" class="add-menu-item-btn" if="kind===item" data-marker-add-menu-pick="1" data-item-id="{value}">{label}</button>
|
|
2700
|
-
</div>
|
|
2701
|
-
</div>
|
|
2702
|
-
</div>
|
|
2703
3748
|
</div>
|
|
2704
3749
|
</div>
|
|
2705
3750
|
<div class="visual-annotation-files">
|
|
@@ -2722,6 +3767,13 @@ data:
|
|
|
2722
3767
|
</div>
|
|
2723
3768
|
</div>
|
|
2724
3769
|
</div>
|
|
3770
|
+
<button
|
|
3771
|
+
type="button"
|
|
3772
|
+
class="visual-annotation-quick-send"
|
|
3773
|
+
disabled="quickSendDisabled"
|
|
3774
|
+
title="Send comments to agent"
|
|
3775
|
+
aria-label="Send comments to agent"
|
|
3776
|
+
><svg class="tool-send-icon" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="M14 2L7 9" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/><path d="M14 2L9.5 14L7 9L2 6.5L14 2Z" stroke="currentColor" stroke-width="1.4" stroke-linejoin="round"/></svg></button>
|
|
2725
3777
|
</div>
|
|
2726
3778
|
</div>
|
|
2727
3779
|
</div>
|
|
@@ -2738,6 +3790,7 @@ data:
|
|
|
2738
3790
|
</div>
|
|
2739
3791
|
</div>
|
|
2740
3792
|
|
|
3793
|
+
</div>
|
|
2741
3794
|
</div>
|
|
2742
3795
|
</body>
|
|
2743
3796
|
</html>
|