@growthub/cli 0.10.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/api/workspace/helper/apply/route.js +307 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/api/workspace/helper/query/route.js +372 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/api/workspace/helper/receipts/route.js +47 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/data-model/components/DataModelShell.jsx +664 -82
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/data-model/components/HelperSidecar.jsx +1371 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/globals.css +1383 -24
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/settings/integrations/page.jsx +7 -21
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/settings/ownership/ownership-panel.jsx +222 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/settings/ownership/page.jsx +19 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/settings/settings-shell.jsx +2 -1
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/workspace-builder.jsx +116 -24
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/workspace-rail.jsx +497 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/growthub.config.json +20 -4
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/adapters/sandboxes/default-local-intelligence.js +19 -4
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/workspace-data-model.js +23 -5
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/workspace-helper-apply.js +473 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/workspace-helper.js +583 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/package-lock.json +34 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/package.json +3 -1
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/helpers/export-training-traces.mjs +144 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/helpers/grade-raw-pairs.mjs +279 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/helpers/harvest-cursor-traces.mjs +288 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/helpers/upload-graded-traces.mjs +128 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/kit.json +19 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/templates/seeded-configs/alignment-loop.config.json +264 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/workers/custom-workspace-operator/CLAUDE.md +38 -0
- package/dist/index.js +1416 -2627
- package/package.json +1 -1
package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/globals.css
CHANGED
|
@@ -398,12 +398,12 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
|
|
|
398
398
|
.workspace-builder {
|
|
399
399
|
min-height: 100vh;
|
|
400
400
|
display: grid;
|
|
401
|
-
grid-template-columns:
|
|
401
|
+
grid-template-columns: 264px minmax(0, 1fr) 320px;
|
|
402
402
|
background: #fafafa;
|
|
403
403
|
color: #252525;
|
|
404
404
|
}
|
|
405
405
|
.workspace-settings-page {
|
|
406
|
-
grid-template-columns:
|
|
406
|
+
grid-template-columns: 264px minmax(0, 1fr);
|
|
407
407
|
}
|
|
408
408
|
.workspace-rail,
|
|
409
409
|
.workspace-widget-panel {
|
|
@@ -416,6 +416,15 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
|
|
|
416
416
|
gap: 18px;
|
|
417
417
|
border-right: 1px solid #e8e8e8;
|
|
418
418
|
padding: 18px 14px;
|
|
419
|
+
/* Lock rail to viewport height so the bottom status pill never
|
|
420
|
+
scrolls off the device fold (long thread lists scroll inside
|
|
421
|
+
.workspace-rail-thread-scroll instead of stretching the rail). */
|
|
422
|
+
height: 100vh;
|
|
423
|
+
max-height: 100vh;
|
|
424
|
+
min-height: 0;
|
|
425
|
+
position: sticky;
|
|
426
|
+
top: 0;
|
|
427
|
+
overflow: hidden;
|
|
419
428
|
}
|
|
420
429
|
.workspace-brand {
|
|
421
430
|
display: flex;
|
|
@@ -425,8 +434,8 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
|
|
|
425
434
|
font-weight: 650;
|
|
426
435
|
}
|
|
427
436
|
.workspace-mark {
|
|
428
|
-
width:
|
|
429
|
-
height:
|
|
437
|
+
width: 28px;
|
|
438
|
+
height: 28px;
|
|
430
439
|
display: grid;
|
|
431
440
|
place-items: center;
|
|
432
441
|
border: 1px solid #dedede;
|
|
@@ -435,6 +444,7 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
|
|
|
435
444
|
color: #555;
|
|
436
445
|
font-size: 12px;
|
|
437
446
|
overflow: hidden;
|
|
447
|
+
flex-shrink: 0;
|
|
438
448
|
}
|
|
439
449
|
.workspace-mark img {
|
|
440
450
|
width: 100%;
|
|
@@ -478,7 +488,12 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
|
|
|
478
488
|
}
|
|
479
489
|
.workspace-surface {
|
|
480
490
|
min-width: 0;
|
|
491
|
+
min-height: 0;
|
|
492
|
+
max-height: 100vh;
|
|
481
493
|
padding: 16px;
|
|
494
|
+
display: flex;
|
|
495
|
+
flex-direction: column;
|
|
496
|
+
overflow: hidden;
|
|
482
497
|
}
|
|
483
498
|
.workspace-toolbar {
|
|
484
499
|
min-height: 48px;
|
|
@@ -508,8 +523,11 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
|
|
|
508
523
|
justify-content: flex-end;
|
|
509
524
|
gap: 8px;
|
|
510
525
|
}
|
|
511
|
-
|
|
512
|
-
.workspace-toolbar-actions
|
|
526
|
+
/* Direct-child scoping — must NOT cascade into nested popovers/pickers
|
|
527
|
+
rendered inside .workspace-toolbar-actions (e.g. the picker row spans
|
|
528
|
+
would otherwise get treated as 30px pills with their own border). */
|
|
529
|
+
.workspace-toolbar-actions > a,
|
|
530
|
+
.workspace-toolbar-actions > span {
|
|
513
531
|
min-height: 30px;
|
|
514
532
|
display: inline-flex;
|
|
515
533
|
align-items: center;
|
|
@@ -527,21 +545,32 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
|
|
|
527
545
|
.workspace-add-widget {
|
|
528
546
|
font: inherit;
|
|
529
547
|
}
|
|
530
|
-
|
|
531
|
-
|
|
548
|
+
/* Direct-child scoping — the unified toolbar button treatment must NOT
|
|
549
|
+
cascade into nested popovers, dropdowns, or pickers rendered inside
|
|
550
|
+
.workspace-toolbar-actions (those carry their own styling). */
|
|
551
|
+
.workspace-toolbar-actions > button,
|
|
552
|
+
.workspace-tabs > button {
|
|
532
553
|
min-height: 30px;
|
|
533
554
|
display: inline-flex;
|
|
534
555
|
align-items: center;
|
|
535
556
|
justify-content: center;
|
|
536
557
|
gap: 6px;
|
|
537
|
-
border: 1px solid #
|
|
558
|
+
border: 1px solid #e5e7eb;
|
|
538
559
|
border-radius: 6px;
|
|
539
560
|
background: #ffffff;
|
|
540
561
|
color: #4f4f4f;
|
|
541
562
|
padding: 0 10px;
|
|
563
|
+
box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
|
|
564
|
+
transition: background .12s ease, border-color .12s ease, box-shadow .12s ease;
|
|
565
|
+
}
|
|
566
|
+
.workspace-toolbar-actions > button:hover,
|
|
567
|
+
.workspace-tabs > button:hover {
|
|
568
|
+
background: #fafafa;
|
|
569
|
+
border-color: #d1d5db;
|
|
570
|
+
box-shadow: 0 1px 3px rgba(15, 23, 42, 0.07);
|
|
542
571
|
}
|
|
543
|
-
.workspace-toolbar-actions button svg,
|
|
544
|
-
.workspace-tabs button svg {
|
|
572
|
+
.workspace-toolbar-actions > button svg,
|
|
573
|
+
.workspace-tabs > button svg {
|
|
545
574
|
flex: 0 0 auto;
|
|
546
575
|
}
|
|
547
576
|
.workspace-table,
|
|
@@ -549,7 +578,14 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
|
|
|
549
578
|
border: 1px solid #e7e7e7;
|
|
550
579
|
border-radius: 8px;
|
|
551
580
|
background: #ffffff;
|
|
552
|
-
|
|
581
|
+
/* Bounded height with internal scroll — the 16-row × 52px grid
|
|
582
|
+
(832px+) was being clipped on most laptop viewports. Reserves
|
|
583
|
+
~210px above for the workspace toolbar + dashboard tabs + page
|
|
584
|
+
padding so the rail's bottom status pill stays above the fold. */
|
|
585
|
+
max-height: calc(100vh - 210px);
|
|
586
|
+
overflow-y: auto;
|
|
587
|
+
overscroll-behavior: contain;
|
|
588
|
+
scrollbar-gutter: stable;
|
|
553
589
|
}
|
|
554
590
|
.workspace-table {
|
|
555
591
|
margin-bottom: 14px;
|
|
@@ -1870,7 +1906,7 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
|
|
|
1870
1906
|
}
|
|
1871
1907
|
.template-mini-widget.kind-chart { background: #dbeafe; }
|
|
1872
1908
|
.template-mini-widget.kind-view { background: #fef3c7; }
|
|
1873
|
-
.template-mini-widget.kind-iframe { background: #
|
|
1909
|
+
.template-mini-widget.kind-iframe { background: #e0f2fe; }
|
|
1874
1910
|
.template-mini-widget.kind-rich-text { background: #dcfce7; }
|
|
1875
1911
|
.template-card-meta {
|
|
1876
1912
|
display: flex;
|
|
@@ -3544,10 +3580,34 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
|
|
|
3544
3580
|
box-shadow: inset 0 0 0 1px #38bdf8;
|
|
3545
3581
|
}
|
|
3546
3582
|
|
|
3547
|
-
/* Chart config
|
|
3583
|
+
/* Chart config — condensed grammar to match the helper Setup tab
|
|
3584
|
+
rhythm. Tighter gaps + smaller labels keeps the chart panel from
|
|
3585
|
+
bleeding past the fold while preserving every existing control. */
|
|
3548
3586
|
.workspace-chart-config {
|
|
3549
3587
|
display: grid;
|
|
3550
|
-
gap:
|
|
3588
|
+
gap: 8px;
|
|
3589
|
+
}
|
|
3590
|
+
.workspace-chart-config > section,
|
|
3591
|
+
.workspace-chart-config > div { padding: 4px 0; }
|
|
3592
|
+
.workspace-chart-config h3,
|
|
3593
|
+
.workspace-chart-config h4 {
|
|
3594
|
+
margin: 4px 0 4px;
|
|
3595
|
+
font-size: 11px;
|
|
3596
|
+
font-weight: 600;
|
|
3597
|
+
color: #6b7280;
|
|
3598
|
+
text-transform: uppercase;
|
|
3599
|
+
letter-spacing: 0.04em;
|
|
3600
|
+
}
|
|
3601
|
+
.workspace-chart-config label {
|
|
3602
|
+
font-size: 11.5px;
|
|
3603
|
+
color: #4b5563;
|
|
3604
|
+
}
|
|
3605
|
+
.workspace-chart-config select,
|
|
3606
|
+
.workspace-chart-config input[type="text"],
|
|
3607
|
+
.workspace-chart-config input[type="number"] {
|
|
3608
|
+
height: 28px;
|
|
3609
|
+
font-size: 12px;
|
|
3610
|
+
padding: 0 8px;
|
|
3551
3611
|
}
|
|
3552
3612
|
.workspace-chart-type-tabs {
|
|
3553
3613
|
display: grid;
|
|
@@ -3960,19 +4020,105 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
|
|
|
3960
4020
|
|
|
3961
4021
|
/* Detail panel v2 */
|
|
3962
4022
|
.dm-detail-v2 { display: flex; flex-direction: column; min-width: 0; }
|
|
3963
|
-
|
|
4023
|
+
/* dm-detail-v2-head / dm-detail-v2-title are kept for legacy callers, but the
|
|
4024
|
+
data-model surface no longer renders that band — the picker moved into the
|
|
4025
|
+
workspace toolbar and the dm-db-toolbar is now the top band of the table
|
|
4026
|
+
surface. */
|
|
4027
|
+
.dm-detail-v2-head { padding: 14px 18px 10px; }
|
|
3964
4028
|
.dm-detail-v2-title { display: flex; align-items: center; gap: 7px; margin-bottom: 4px; }
|
|
3965
4029
|
.dm-detail-v2-title h2 { margin: 0; font-size: 15px; font-weight: 600; color: #111827; flex: 1; }
|
|
3966
4030
|
.dm-detail-v2-meta { display: flex; align-items: center; gap: 10px; padding-left: 21px; font-size: 12px; color: #9ca3af; }
|
|
3967
4031
|
.dm-detail-v2-meta code { font-size: 11px; color: #6b7280; background: #f3f4f6; border-radius: 4px; padding: 2px 6px; }
|
|
3968
|
-
.dm-detail-v3 { border: 1px solid #e5e7eb; border-radius: 12px; background: #fff; overflow:
|
|
3969
|
-
.dm-detail-v3-head { padding-bottom: 14px; }
|
|
4032
|
+
.dm-detail-v3 { border: 1px solid #e5e7eb; border-radius: 12px; background: #fff; overflow: hidden; }
|
|
3970
4033
|
.dm-picker { position: relative; min-width: 280px; }
|
|
3971
4034
|
.dm-picker-trigger { width: min(420px, 100%); display: inline-flex; align-items: center; gap: 10px; min-height: 40px; border: 1px solid #dbe2ea; border-radius: 10px; background: #fff; color: #0f172a; box-shadow: 0 1px 2px rgba(15,23,42,.05); font: inherit; padding: 0 12px; cursor: pointer; text-align: left; }
|
|
3972
4035
|
.dm-picker.open .dm-picker-trigger { border-color: #94a3b8; box-shadow: 0 0 0 4px rgba(148,163,184,.14); }
|
|
3973
4036
|
.dm-picker-trigger-copy { display: grid; min-width: 0; flex: 1; }
|
|
3974
4037
|
.dm-picker-trigger-copy strong { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; font-weight: 650; color: #111827; }
|
|
3975
4038
|
.dm-picker-trigger-copy em { font-style: normal; font-size: 11px; color: #94a3b8; }
|
|
4039
|
+
|
|
4040
|
+
/* Workspace-toolbar variant — only the picker TRIGGER is re-skinned to
|
|
4041
|
+
match the other 30px toolbar buttons. The popover and everything
|
|
4042
|
+
inside it keep their default .dm-picker-* styles untouched. */
|
|
4043
|
+
.workspace-toolbar-actions .dm-picker {
|
|
4044
|
+
min-width: 0;
|
|
4045
|
+
}
|
|
4046
|
+
.workspace-toolbar-actions .dm-picker-trigger {
|
|
4047
|
+
width: auto;
|
|
4048
|
+
min-width: 0;
|
|
4049
|
+
min-height: 30px;
|
|
4050
|
+
height: 30px;
|
|
4051
|
+
padding: 0 10px;
|
|
4052
|
+
border-radius: 6px;
|
|
4053
|
+
border-color: #e5e7eb;
|
|
4054
|
+
box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
|
|
4055
|
+
}
|
|
4056
|
+
.workspace-toolbar-actions .dm-picker-trigger:hover {
|
|
4057
|
+
background: #fafafa;
|
|
4058
|
+
border-color: #d1d5db;
|
|
4059
|
+
box-shadow: 0 1px 3px rgba(15, 23, 42, 0.07);
|
|
4060
|
+
}
|
|
4061
|
+
.workspace-toolbar-actions .dm-picker.open .dm-picker-trigger {
|
|
4062
|
+
border-color: #9ca3af;
|
|
4063
|
+
box-shadow: 0 0 0 3px rgba(148, 163, 184, 0.18);
|
|
4064
|
+
}
|
|
4065
|
+
/* Hide the field/record meta inside the trigger — the workspace toolbar
|
|
4066
|
+
title block already carries that info, so the trigger only needs the
|
|
4067
|
+
object label + chevron. */
|
|
4068
|
+
.workspace-toolbar-actions .dm-picker-trigger-copy em { display: none; }
|
|
4069
|
+
.workspace-toolbar-actions .dm-picker-trigger-copy strong { font-size: 12px; }
|
|
4070
|
+
.workspace-toolbar-actions .dm-picker-popover {
|
|
4071
|
+
left: auto;
|
|
4072
|
+
right: 0;
|
|
4073
|
+
}
|
|
4074
|
+
|
|
4075
|
+
/* Active-object title block in the workspace toolbar — replaces the
|
|
4076
|
+
hardcoded "WORKSPACE / Data Model" eyebrow. The object icon sits in a
|
|
4077
|
+
small white-card chip BEFORE the title (light grey border, slight
|
|
4078
|
+
dropshadow); generous spacing between chip and title; bold object
|
|
4079
|
+
label on top; regular-weight Fields/Records meta below. */
|
|
4080
|
+
.workspace-toolbar-object {
|
|
4081
|
+
display: flex;
|
|
4082
|
+
flex-direction: column;
|
|
4083
|
+
gap: 4px;
|
|
4084
|
+
min-width: 0;
|
|
4085
|
+
}
|
|
4086
|
+
.workspace-toolbar-object-title {
|
|
4087
|
+
display: inline-flex;
|
|
4088
|
+
align-items: center;
|
|
4089
|
+
gap: 12px;
|
|
4090
|
+
min-width: 0;
|
|
4091
|
+
}
|
|
4092
|
+
.workspace-toolbar-object-icon {
|
|
4093
|
+
display: inline-flex;
|
|
4094
|
+
align-items: center;
|
|
4095
|
+
justify-content: center;
|
|
4096
|
+
width: 28px;
|
|
4097
|
+
height: 28px;
|
|
4098
|
+
border: 1px solid #e5e7eb;
|
|
4099
|
+
border-radius: 7px;
|
|
4100
|
+
background: #ffffff;
|
|
4101
|
+
color: #6b7280;
|
|
4102
|
+
box-shadow: 0 1px 2px rgba(15, 23, 42, 0.05);
|
|
4103
|
+
flex-shrink: 0;
|
|
4104
|
+
}
|
|
4105
|
+
.workspace-toolbar-object-title h1 {
|
|
4106
|
+
margin: 0;
|
|
4107
|
+
font-size: 17px;
|
|
4108
|
+
font-weight: 650;
|
|
4109
|
+
color: #111827;
|
|
4110
|
+
line-height: 1.2;
|
|
4111
|
+
white-space: nowrap;
|
|
4112
|
+
overflow: hidden;
|
|
4113
|
+
text-overflow: ellipsis;
|
|
4114
|
+
}
|
|
4115
|
+
.workspace-toolbar-object-meta {
|
|
4116
|
+
margin: 0;
|
|
4117
|
+
padding-left: 40px; /* 28px icon chip + 12px gap → sits under the title text */
|
|
4118
|
+
font-size: 12px;
|
|
4119
|
+
font-weight: 400;
|
|
4120
|
+
color: #6b7280;
|
|
4121
|
+
}
|
|
3976
4122
|
.dm-picker-popover { position: absolute; top: calc(100% + 8px); left: 0; z-index: 50; width: 360px; display: grid; gap: 10px; padding: 12px; border: 1px solid #dbe2ea; border-radius: 14px; background: #fff; box-shadow: 0 28px 80px rgba(15,23,42,.24); overflow: visible; }
|
|
3977
4123
|
.dm-picker-tabs { display: inline-flex; gap: 6px; padding: 4px; border-radius: 999px; background: #f8fafc; }
|
|
3978
4124
|
.dm-picker-tabs button { height: 28px; border: 0; border-radius: 999px; background: transparent; color: #64748b; font: inherit; font-size: 12px; padding: 0 10px; cursor: pointer; }
|
|
@@ -4056,28 +4202,79 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
|
|
|
4056
4202
|
|
|
4057
4203
|
/* Data Model database grid */
|
|
4058
4204
|
.dm-db-surface { display: flex; flex-direction: column; gap: 10px; padding: 14px; min-height: 0; flex: 1; background: #fff; overflow: visible; }
|
|
4059
|
-
|
|
4205
|
+
/* Top band of the data-model table surface: action buttons (left) and
|
|
4206
|
+
filter chips (right, only when filters are active) live ABOVE the
|
|
4207
|
+
divider line. The divider is the toolbar's own bottom border,
|
|
4208
|
+
separating the action band from the table rows below.
|
|
4209
|
+
The DOM order is (chips, actions); flex `order` swaps them visually
|
|
4210
|
+
so chips sit right-aligned under the picker dropdown (which holds
|
|
4211
|
+
the Views selector) and action buttons run left-aligned. */
|
|
4212
|
+
.dm-db-toolbar {
|
|
4213
|
+
display: flex;
|
|
4214
|
+
align-items: center;
|
|
4215
|
+
justify-content: space-between;
|
|
4216
|
+
gap: 12px;
|
|
4217
|
+
overflow: visible;
|
|
4218
|
+
padding: 12px 16px;
|
|
4219
|
+
border-bottom: 1px solid #efefef;
|
|
4220
|
+
background: #fff;
|
|
4221
|
+
}
|
|
4222
|
+
.dm-db-toolbar + * { padding-top: 4px; }
|
|
4223
|
+
.dm-db-toolbar .dm-records-actions {
|
|
4224
|
+
order: 1;
|
|
4225
|
+
margin-left: 0;
|
|
4226
|
+
margin-right: auto;
|
|
4227
|
+
justify-content: flex-start;
|
|
4228
|
+
}
|
|
4229
|
+
.dm-db-toolbar .dm-filter-chip-row {
|
|
4230
|
+
order: 2;
|
|
4231
|
+
justify-content: flex-end;
|
|
4232
|
+
margin-left: auto;
|
|
4233
|
+
}
|
|
4060
4234
|
.dm-db-toolbar-title { display: flex; align-items: baseline; gap: 8px; min-width: 0; }
|
|
4061
4235
|
.dm-db-toolbar-title strong { font-size: 13px; color: #111827; font-weight: 650; }
|
|
4062
4236
|
.dm-db-toolbar-title span { font-size: 12px; color: #9ca3af; }
|
|
4063
4237
|
.dm-inline-panel { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 10px 12px; border: 1px solid #dfe3e8; border-radius: 10px; background: #fbfdff; }
|
|
4064
4238
|
.dm-inline-panel input { height: 32px; border: 1px solid #cbd5e1; border-radius: 8px; background: #fff; color: #111827; font: inherit; font-size: 12px; padding: 0 10px; }
|
|
4065
|
-
.dm-filter-chip-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; min-height:
|
|
4239
|
+
.dm-filter-chip-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; min-height: 0; }
|
|
4066
4240
|
.dm-filter-chip { display: inline-flex; align-items: center; gap: 6px; height: 30px; border: 1px solid #c7d2fe; border-radius: 8px; background: #eef2ff; color: #3730a3; font: inherit; font-size: 12px; padding: 0 10px; cursor: pointer; }
|
|
4241
|
+
.dm-selection-count { border-color: #d1d5db; background: #fff; color: #475569; cursor: default; }
|
|
4067
4242
|
.dm-filter-chip span { max-width: 240px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
4068
4243
|
.dm-filter-popover { position: absolute; z-index: 40; display: grid; gap: 8px; width: 320px; padding: 10px; border: 1px solid #dbe2ea; border-radius: 10px; background: #fff; box-shadow: 0 18px 42px rgba(15,23,42,.18), 0 3px 10px rgba(15,23,42,.08); }
|
|
4069
4244
|
.dm-filter-popover input { height: 32px; border: 1px solid #cbd5e1; border-radius: 8px; background: #fff; color: #111827; font: inherit; font-size: 12px; padding: 0 10px; }
|
|
4070
|
-
.dm-filter-
|
|
4245
|
+
.dm-filter-anchor { position: relative; display: inline-flex; }
|
|
4246
|
+
.dm-filter-popover-toolbar { top: calc(100% + 6px); left: 0; right: auto; }
|
|
4071
4247
|
.dm-filter-popover-column { top: calc(100% + 6px); left: 0; }
|
|
4072
4248
|
.dm-filter-popover-actions { display: flex; justify-content: flex-end; gap: 8px; }
|
|
4073
|
-
.dm-db-grid-wrap { flex: 1; min-height: 420px; overflow:
|
|
4249
|
+
.dm-db-grid-wrap { display: flex; flex: 1; min-height: 420px; flex-direction: column; overflow: hidden; border: 1px solid #dfe3e8; border-radius: 7px; background: #fff; }
|
|
4250
|
+
.dm-db-grid-wrap > .dm-db-grid-scroll { flex: 1 1 auto; overflow: auto; }
|
|
4074
4251
|
.dm-db-grid { width: 100%; border-collapse: separate; border-spacing: 0; font-size: 12px; color: #1f2937; }
|
|
4075
4252
|
.dm-db-grid th { position: sticky; top: 0; z-index: 1; height: 32px; background: #f8fafc; color: #475569; border-bottom: 1px solid #dfe3e8; border-right: 1px solid #edf0f3; padding: 0; text-align: left; font-weight: 650; white-space: nowrap; }
|
|
4076
4253
|
.dm-db-grid td { height: 32px; max-width: 260px; border-bottom: 1px solid #f1f5f9; border-right: 1px solid #f1f5f9; padding: 0 10px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; cursor: pointer; }
|
|
4077
4254
|
.dm-db-grid tbody tr:hover td { background: #f8fafc; }
|
|
4078
4255
|
.dm-db-grid tbody tr.selected td { background: #eef2ff; }
|
|
4256
|
+
.dm-db-grid tbody tr.multi-selected td { background: #f8fafc; }
|
|
4079
4257
|
.dm-db-head-btn { display: inline-flex; align-items: center; justify-content: flex-start; width: 100%; height: 32px; gap: 6px; border: 0; background: transparent; color: inherit; font: inherit; font-size: 12px; font-weight: inherit; padding: 0 10px; cursor: pointer; }
|
|
4080
4258
|
.dm-db-rownum { width: 42px; min-width: 42px; text-align: center !important; color: #94a3b8 !important; background: #f8fafc; font-variant-numeric: tabular-nums; }
|
|
4259
|
+
.dm-row-select { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 100%; height: 32px; border: 0; background: transparent; color: inherit; font: inherit; cursor: pointer; }
|
|
4260
|
+
.dm-row-select-box { position: relative; display: none; width: 16px; height: 16px; border: 1px solid #d1d5db; border-radius: 5px; background: #fff; box-sizing: border-box; }
|
|
4261
|
+
.dm-row-select:hover .dm-row-select-box, .dm-row-select[aria-pressed="true"] .dm-row-select-box { border-color: #cbd5e1; background: #fff; box-shadow: 0 1px 3px rgba(15,23,42,.14); }
|
|
4262
|
+
.dm-row-select[aria-pressed="true"] .dm-row-select-box { display: inline-flex; }
|
|
4263
|
+
.dm-row-select[aria-pressed="true"] .dm-row-select-box::after { content: ""; position: absolute; left: 5px; top: 3px; width: 4px; height: 7px; border: solid #334155; border-width: 0 1.5px 1.5px 0; transform: rotate(45deg); }
|
|
4264
|
+
.dm-db-grid tbody tr:hover .dm-row-select-box { display: inline-flex; }
|
|
4265
|
+
.dm-row-select[aria-pressed="true"] .dm-row-number, .dm-db-grid tbody tr:hover .dm-row-select .dm-row-number { display: none; }
|
|
4266
|
+
.dm-db-rownum-head { position: sticky; overflow: visible; z-index: 4 !important; }
|
|
4267
|
+
.dm-row-select-head-wrap { position: relative; display: flex; align-items: center; justify-content: center; height: 32px; }
|
|
4268
|
+
.dm-row-select-all { width: 26px; flex: 0 0 26px; }
|
|
4269
|
+
.dm-row-select-menu-btn { display: none; }
|
|
4270
|
+
.dm-db-rownum-head:hover .dm-row-select-menu-btn, .dm-row-select-menu-btn[aria-expanded="true"] { display: none; }
|
|
4271
|
+
.dm-row-select-menu-btn:hover { background: #eef2f7; color: #475569; }
|
|
4272
|
+
.dm-db-rownum-head:hover .dm-row-select-all .dm-row-select-box, .dm-row-select-all[aria-pressed="true"] .dm-row-select-box { display: inline-flex; }
|
|
4273
|
+
.dm-db-rownum-head:hover .dm-row-select-all .dm-row-number, .dm-row-select-all[aria-pressed="true"] .dm-row-number { display: none; }
|
|
4274
|
+
.dm-row-select-menu { position: absolute; top: calc(100% + 6px); left: 6px; z-index: 50; display: grid; gap: 3px; min-width: 150px; padding: 6px; border: 1px solid #dbe2ea; border-radius: 8px; background: #fff; box-shadow: 0 14px 34px rgba(15,23,42,.16), 0 2px 8px rgba(15,23,42,.08); }
|
|
4275
|
+
.dm-row-select-menu button { display: flex; align-items: center; height: 28px; border: 0; border-radius: 6px; background: transparent; color: #334155; font: inherit; font-size: 12px; padding: 0 8px; text-align: left; cursor: pointer; }
|
|
4276
|
+
.dm-row-select-menu button:hover { background: #f1f5f9; }
|
|
4277
|
+
.dm-row-select-menu button:disabled { opacity: .45; cursor: not-allowed; }
|
|
4081
4278
|
.dm-db-field-type { display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px; margin-right: 5px; border-radius: 4px; color: #64748b; background: #eef2f7; vertical-align: middle; }
|
|
4082
4279
|
.dm-db-add-field { position: relative; min-width: 118px; }
|
|
4083
4280
|
.dm-db-add-field button { display: inline-flex; align-items: center; gap: 4px; border: 0; background: transparent; color: #64748b; font: inherit; font-size: 12px; cursor: pointer; }
|
|
@@ -4094,6 +4291,15 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
|
|
|
4094
4291
|
.dm-field-creator-actions { display: flex; justify-content: flex-end; gap: 8px; }
|
|
4095
4292
|
.dm-db-empty-cell { background: #fbfdff; }
|
|
4096
4293
|
.dm-db-new-row td { color: #64748b; background: #fbfdff; font-weight: 600; }
|
|
4294
|
+
.dm-pagination-bar { display: flex; flex: 0 0 auto; align-items: center; justify-content: space-between; gap: 12px; min-height: 36px; padding: 8px 14px; background: #fff; color: #64748b; font-size: 12px; border-top: 1px solid #edf0f3; }
|
|
4295
|
+
.dm-pagination-summary { white-space: nowrap; }
|
|
4296
|
+
.dm-pagination-controls { display: inline-flex; align-items: center; gap: 8px; }
|
|
4297
|
+
.dm-page-size-control { display: inline-flex; align-items: center; gap: 6px; color: #64748b; }
|
|
4298
|
+
.dm-page-size-control select { height: 28px; border: 1px solid #dbe2ea; border-radius: 6px; background: #fff; color: #334155; font: inherit; font-size: 12px; padding: 0 22px 0 8px; }
|
|
4299
|
+
.dm-pagination-btn { height: 28px; border: 1px solid #dbe2ea; border-radius: 6px; background: #fff; color: #334155; font: inherit; font-size: 12px; padding: 0 10px; cursor: pointer; }
|
|
4300
|
+
.dm-pagination-btn:hover:not(:disabled) { background: #f8fafc; border-color: #cbd5e1; }
|
|
4301
|
+
.dm-pagination-btn:disabled { opacity: .45; cursor: not-allowed; }
|
|
4302
|
+
.dm-pagination-page { min-width: 44px; text-align: center; color: #64748b; }
|
|
4097
4303
|
.dm-db-status { display: inline-flex; align-items: center; gap: 5px; height: 20px; border: 1px solid #e2e8f0; border-radius: 999px; padding: 0 8px; background: #f8fafc; color: #64748b; font-size: 11px; font-weight: 650; }
|
|
4098
4304
|
.dm-db-status span { width: 6px; height: 6px; border-radius: 50%; background: #94a3b8; }
|
|
4099
4305
|
.dm-db-status.ok { border-color: #bbf7d0; background: #f0fdf4; color: #166534; }
|
|
@@ -4291,6 +4497,1159 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
|
|
|
4291
4497
|
.dm-resolver-no-targets { display: flex; align-items: center; gap: 7px; padding: 8px 10px; background: #fffbeb; border: 1px solid #fde68a; border-radius: 6px; font-size: 12px; color: #92400e; }
|
|
4292
4498
|
.dm-detail-icon { color: #6b7280; }
|
|
4293
4499
|
|
|
4500
|
+
|
|
4501
|
+
/* ─── Workspace Helper Sidecar ─────────────────────────────────────────────── */
|
|
4502
|
+
.dm-sidecar-backdrop { position: fixed; inset: 0; z-index: 79; }
|
|
4503
|
+
.dm-helper-sidecar { position: fixed; top: 0; right: 0; bottom: 0; z-index: 80; background: #fff; border-left: 1px solid #e5e7eb; box-shadow: -8px 0 40px rgba(15,23,42,.13); display: flex; flex-direction: column; min-width: 320px; max-width: 80vw; }
|
|
4504
|
+
.dm-sidecar-drag-handle { position: absolute; left: 0; top: 0; bottom: 0; width: 6px; cursor: ew-resize; z-index: 2; background: transparent; }
|
|
4505
|
+
.dm-sidecar-drag-handle:hover { background: rgba(63,104,255,.12); }
|
|
4506
|
+
.dm-sidecar-header { display: flex; align-items: center; justify-content: space-between; padding: 14px 16px 14px 18px; border-bottom: 1px solid #e5e7eb; flex-shrink: 0; }
|
|
4507
|
+
.dm-sidecar-header-left { display: flex; align-items: center; gap: 8px; }
|
|
4508
|
+
.dm-sidecar-icon { color: #3f68ff; }
|
|
4509
|
+
.dm-sidecar-title { font-size: 14px; font-weight: 600; color: #111827; }
|
|
4510
|
+
/* Header-right action cluster — single source for gear (Setup toggle) and
|
|
4511
|
+
close (X), replaces the old full-width Assistant/Setup tab strip. */
|
|
4512
|
+
.dm-sidecar-header-right {
|
|
4513
|
+
display: inline-flex;
|
|
4514
|
+
align-items: center;
|
|
4515
|
+
gap: 2px;
|
|
4516
|
+
}
|
|
4517
|
+
.dm-sidecar-icon-btn {
|
|
4518
|
+
display: inline-flex;
|
|
4519
|
+
align-items: center;
|
|
4520
|
+
justify-content: center;
|
|
4521
|
+
width: 28px;
|
|
4522
|
+
height: 28px;
|
|
4523
|
+
border: 1px solid #e5e7eb;
|
|
4524
|
+
border-radius: 6px;
|
|
4525
|
+
background: #ffffff;
|
|
4526
|
+
color: #6b7280;
|
|
4527
|
+
cursor: pointer;
|
|
4528
|
+
box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
|
|
4529
|
+
transition: background .12s ease, color .12s ease, border-color .12s ease, box-shadow .12s ease;
|
|
4530
|
+
}
|
|
4531
|
+
.dm-sidecar-icon-btn:hover {
|
|
4532
|
+
background: #fafafa;
|
|
4533
|
+
border-color: #d1d5db;
|
|
4534
|
+
color: #111827;
|
|
4535
|
+
box-shadow: 0 1px 3px rgba(15, 23, 42, 0.07);
|
|
4536
|
+
}
|
|
4537
|
+
/* No persistent active state — the icon itself swaps to ArrowLeft when
|
|
4538
|
+
the Setup surface is open, which is the user's cue. */
|
|
4539
|
+
.dm-sidecar-icon-btn:focus-visible {
|
|
4540
|
+
outline: 2px solid #bfdbfe;
|
|
4541
|
+
outline-offset: 1px;
|
|
4542
|
+
}
|
|
4543
|
+
/* Legacy `.dm-sidecar-tabs` / `.dm-sidecar-tab` / `.dm-sidecar-close`
|
|
4544
|
+
rules retired — the header cluster above owns both affordances now. */
|
|
4545
|
+
.dm-sidecar-body { flex: 1; overflow-y: auto; padding: 16px; display: grid; gap: 12px; align-content: start; }
|
|
4546
|
+
|
|
4547
|
+
/* Streaming surface */
|
|
4548
|
+
.dm-helper-stream { padding: 12px 14px; background: #f9fafb; border: 1px solid #e5e7eb; border-radius: 8px; font-size: 13px; color: #374151; line-height: 1.6; white-space: pre-wrap; word-break: break-word; }
|
|
4549
|
+
@keyframes blink { 0%,100% { opacity: 1; } 50% { opacity: 0; } }
|
|
4550
|
+
.dm-stream-cursor { display: inline-block; width: 2px; height: 1em; background: #3f68ff; vertical-align: text-bottom; margin-left: 1px; animation: blink 1s step-end infinite; }
|
|
4551
|
+
|
|
4552
|
+
/* Proposals */
|
|
4553
|
+
.dm-helper-result { display: grid; gap: 10px; }
|
|
4554
|
+
.dm-helper-summary { display: flex; align-items: flex-start; gap: 8px; padding: 10px 12px; background: #eff6ff; border: 1px solid #bfdbfe; border-radius: 8px; font-size: 13px; color: #1e40af; }
|
|
4555
|
+
.dm-helper-warnings { display: grid; gap: 4px; }
|
|
4556
|
+
.dm-helper-warning { display: flex; align-items: flex-start; gap: 6px; padding: 7px 10px; background: #fffbeb; border: 1px solid #fde68a; border-radius: 6px; font-size: 12px; color: #92400e; }
|
|
4557
|
+
.dm-helper-error { display: flex; align-items: flex-start; gap: 6px; padding: 9px 12px; background: #fef2f2; border: 1px solid #fecaca; border-radius: 7px; font-size: 13px; color: #dc2626; margin-top: 4px; }
|
|
4558
|
+
.dm-helper-proposals-header { display: flex; align-items: center; justify-content: space-between; }
|
|
4559
|
+
.dm-helper-proposals { display: grid; gap: 6px; }
|
|
4560
|
+
.dm-helper-proposal { display: flex; align-items: flex-start; gap: 10px; padding: 10px 12px; border: 1px solid #e5e7eb; border-radius: 8px; background: #fff; cursor: pointer; transition: border-color .1s, background .1s; }
|
|
4561
|
+
.dm-helper-proposal:hover { background: #f9fafb; border-color: #d1d5db; }
|
|
4562
|
+
.dm-helper-proposal.accepted { border-color: #3f68ff; background: #eff6ff; }
|
|
4563
|
+
.dm-helper-proposal input[type=checkbox] { margin-top: 2px; flex-shrink: 0; accent-color: #3f68ff; }
|
|
4564
|
+
.dm-helper-proposal-body { display: grid; gap: 2px; }
|
|
4565
|
+
.dm-helper-proposal-type { font-size: 12px; font-weight: 600; color: #111827; font-family: monospace; }
|
|
4566
|
+
.dm-helper-proposal-field { font-size: 11px; color: #6b7280; }
|
|
4567
|
+
.dm-helper-proposal-rationale { margin: 0; font-size: 12px; color: #4b5563; line-height: 1.4; }
|
|
4568
|
+
.dm-helper-apply-result { display: flex; align-items: center; gap: 8px; padding: 10px 12px; border: 1px solid #d1fae5; background: #ecfdf5; border-radius: 8px; font-size: 13px; color: #065f46; }
|
|
4569
|
+
.dm-helper-apply-result.is-error { border-color: #fecaca; background: #fef2f2; color: #b91c1c; }
|
|
4570
|
+
.dm-helper-empty-hint { padding: 12px 14px; border: 1px dashed #e5e7eb; border-radius: 8px; background: #fafafa; color: #6b7280; font-size: 12px; line-height: 1.5; }
|
|
4571
|
+
.dm-helper-empty-hint p { margin: 0; }
|
|
4572
|
+
.dm-helper-proposal-row { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
|
|
4573
|
+
.dm-helper-proposal-payload { margin: 0; font-size: 11px; color: #374151; background: #f3f4f6; border-radius: 5px; padding: 3px 7px; display: inline-block; font-family: monospace; line-height: 1.4; word-break: break-all; }
|
|
4574
|
+
.dm-helper-proposal-confidence { display: inline-flex; align-items: center; height: 18px; padding: 0 6px; border-radius: 99px; background: #eff6ff; border: 1px solid #bfdbfe; font-size: 11px; font-weight: 600; color: #1e40af; }
|
|
4575
|
+
.dm-helper-skipped { display: grid; gap: 4px; padding: 10px 12px; border: 1px solid #fde68a; background: #fffbeb; border-radius: 8px; }
|
|
4576
|
+
.dm-helper-skipped-row { display: flex; align-items: baseline; gap: 6px; font-size: 11px; color: #92400e; }
|
|
4577
|
+
.dm-helper-skipped-reason { color: #b45309; }
|
|
4578
|
+
.dm-thread-open-link { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 500; color: #3f68ff; background: transparent; border: 0; padding: 0; cursor: pointer; text-decoration: underline; text-underline-offset: 2px; }
|
|
4579
|
+
.dm-thread-open-link:hover { color: #1e40af; }
|
|
4580
|
+
.dm-thread-open-link:focus-visible { outline: 2px solid #bfdbfe; outline-offset: 2px; border-radius: 3px; }
|
|
4581
|
+
|
|
4582
|
+
/* Helper sidecar — intent pills (4 primary + More dropdown). Visible only
|
|
4583
|
+
on a brand-new thread, before the user has sent any messages. */
|
|
4584
|
+
.dm-helper-intent-pills { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
|
|
4585
|
+
.dm-helper-pill { display: inline-flex; align-items: center; gap: 4px; height: 26px; padding: 0 10px; border-radius: 99px; border: 1px solid #e5e7eb; background: #fff; color: #374151; font-size: 12px; font-weight: 500; cursor: pointer; transition: background .1s, border-color .1s, color .1s; }
|
|
4586
|
+
.dm-helper-pill:hover:not(:disabled) { background: #f9fafb; border-color: #d1d5db; }
|
|
4587
|
+
.dm-helper-pill.active { background: #eff6ff; border-color: #bfdbfe; color: #1e40af; }
|
|
4588
|
+
.dm-helper-pill:focus-visible { outline: 2px solid #bfdbfe; outline-offset: 1px; }
|
|
4589
|
+
.dm-helper-pill:disabled { opacity: .55; cursor: not-allowed; }
|
|
4590
|
+
.dm-helper-pill-more-wrap { position: relative; display: inline-flex; }
|
|
4591
|
+
.dm-helper-pill-more { padding-right: 6px; }
|
|
4592
|
+
.dm-helper-pill-menu { position: absolute; top: calc(100% + 4px); left: 0; min-width: 180px; background: #fff; border: 1px solid #e5e7eb; border-radius: 8px; box-shadow: 0 8px 24px rgba(15, 23, 42, 0.10); padding: 4px; display: flex; flex-direction: column; gap: 1px; z-index: 90; }
|
|
4593
|
+
.dm-helper-pill-menu-item { display: flex; align-items: center; height: 28px; padding: 0 10px; font-size: 12px; color: #374151; background: transparent; border: 0; border-radius: 5px; cursor: pointer; text-align: left; }
|
|
4594
|
+
.dm-helper-pill-menu-item:hover { background: #f9fafb; color: #111827; }
|
|
4595
|
+
.dm-helper-pill-menu-item.active { background: #eff6ff; color: #1e40af; }
|
|
4596
|
+
|
|
4597
|
+
/* Active-mode indicator — shown after the thread has activated, replaces
|
|
4598
|
+
the pill row. Compact, non-cluttering. */
|
|
4599
|
+
.dm-helper-mode-row { display: inline-flex; align-items: center; gap: 6px; padding: 3px 9px; border-radius: 99px; background: #f3f4f6; border: 1px solid #e5e7eb; align-self: flex-start; }
|
|
4600
|
+
.dm-helper-mode-label { font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; color: #6b7280; }
|
|
4601
|
+
.dm-helper-mode-value { font-size: 12px; font-weight: 600; color: #111827; }
|
|
4602
|
+
|
|
4603
|
+
/* Conversation list inside the sidecar. User turns right-aligned, assistant
|
|
4604
|
+
turns left-aligned. Pending assistant turn uses the existing blink cursor. */
|
|
4605
|
+
/* Multi-turn conversation — ChatGPT-grade simple. User bubble on the
|
|
4606
|
+
right (grey rounded chip, fits-content); assistant bubble on the left
|
|
4607
|
+
as a transparent full-width markdown block. Subtle horizontal divider
|
|
4608
|
+
between consecutive turns keeps the rhythm. */
|
|
4609
|
+
.dm-helper-messages { display: flex; flex-direction: column; gap: 0; }
|
|
4610
|
+
.dm-helper-turn {
|
|
4611
|
+
display: flex;
|
|
4612
|
+
flex-direction: column;
|
|
4613
|
+
padding: 12px 2px;
|
|
4614
|
+
border-bottom: 1px solid #f3f4f6;
|
|
4615
|
+
}
|
|
4616
|
+
.dm-helper-turn:last-child { border-bottom: 0; }
|
|
4617
|
+
.dm-helper-turn.role-user { align-items: flex-end; }
|
|
4618
|
+
.dm-helper-turn.role-assistant { align-items: stretch; }
|
|
4619
|
+
.dm-helper-turn.role-system { align-items: stretch; }
|
|
4620
|
+
|
|
4621
|
+
.dm-helper-bubble-user {
|
|
4622
|
+
max-width: 88%;
|
|
4623
|
+
padding: 7px 12px;
|
|
4624
|
+
border-radius: 14px;
|
|
4625
|
+
background: #f1f1f1;
|
|
4626
|
+
color: #2c2c2c;
|
|
4627
|
+
font-size: 13px;
|
|
4628
|
+
line-height: 1.5;
|
|
4629
|
+
white-space: pre-wrap;
|
|
4630
|
+
word-break: break-word;
|
|
4631
|
+
}
|
|
4632
|
+
|
|
4633
|
+
.dm-helper-bubble-assistant {
|
|
4634
|
+
width: 100%;
|
|
4635
|
+
color: #1f2937;
|
|
4636
|
+
font-size: 13.5px;
|
|
4637
|
+
line-height: 1.55;
|
|
4638
|
+
word-break: break-word;
|
|
4639
|
+
}
|
|
4640
|
+
.dm-helper-bubble-assistant > *:first-child { margin-top: 0; }
|
|
4641
|
+
.dm-helper-bubble-assistant > *:last-child { margin-bottom: 0; }
|
|
4642
|
+
.dm-helper-bubble-assistant p { margin: 0 0 8px; }
|
|
4643
|
+
.dm-helper-bubble-assistant h1,
|
|
4644
|
+
.dm-helper-bubble-assistant h2,
|
|
4645
|
+
.dm-helper-bubble-assistant h3,
|
|
4646
|
+
.dm-helper-bubble-assistant h4 {
|
|
4647
|
+
margin: 14px 0 6px;
|
|
4648
|
+
font-weight: 650;
|
|
4649
|
+
color: #111827;
|
|
4650
|
+
line-height: 1.3;
|
|
4651
|
+
}
|
|
4652
|
+
.dm-helper-bubble-assistant h1 { font-size: 16px; }
|
|
4653
|
+
.dm-helper-bubble-assistant h2 { font-size: 15px; }
|
|
4654
|
+
.dm-helper-bubble-assistant h3 { font-size: 14px; }
|
|
4655
|
+
.dm-helper-bubble-assistant h4 { font-size: 13px; }
|
|
4656
|
+
.dm-helper-bubble-assistant ul,
|
|
4657
|
+
.dm-helper-bubble-assistant ol { margin: 4px 0 8px; padding-left: 20px; }
|
|
4658
|
+
.dm-helper-bubble-assistant li { margin: 2px 0; }
|
|
4659
|
+
.dm-helper-bubble-assistant strong { font-weight: 650; color: #111827; }
|
|
4660
|
+
.dm-helper-bubble-assistant em { font-style: italic; }
|
|
4661
|
+
.dm-helper-bubble-assistant a { color: #1e40af; text-decoration: underline; text-underline-offset: 2px; }
|
|
4662
|
+
.dm-helper-bubble-assistant a:hover { color: #1e3a8a; }
|
|
4663
|
+
.dm-helper-bubble-assistant code {
|
|
4664
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
4665
|
+
font-size: 12.5px;
|
|
4666
|
+
padding: 1px 5px;
|
|
4667
|
+
border-radius: 4px;
|
|
4668
|
+
background: #f3f4f6;
|
|
4669
|
+
color: #111827;
|
|
4670
|
+
}
|
|
4671
|
+
.dm-helper-bubble-assistant pre {
|
|
4672
|
+
margin: 6px 0 10px;
|
|
4673
|
+
padding: 10px 12px;
|
|
4674
|
+
background: #0b1220;
|
|
4675
|
+
color: #e5e7eb;
|
|
4676
|
+
border-radius: 8px;
|
|
4677
|
+
overflow-x: auto;
|
|
4678
|
+
font-size: 12.5px;
|
|
4679
|
+
line-height: 1.55;
|
|
4680
|
+
}
|
|
4681
|
+
.dm-helper-bubble-assistant pre code {
|
|
4682
|
+
background: transparent;
|
|
4683
|
+
color: inherit;
|
|
4684
|
+
padding: 0;
|
|
4685
|
+
}
|
|
4686
|
+
.dm-helper-bubble-assistant blockquote {
|
|
4687
|
+
margin: 6px 0 10px;
|
|
4688
|
+
padding: 4px 12px;
|
|
4689
|
+
border-left: 3px solid #d1d5db;
|
|
4690
|
+
color: #4b5563;
|
|
4691
|
+
font-style: normal;
|
|
4692
|
+
}
|
|
4693
|
+
.dm-helper-bubble-assistant hr {
|
|
4694
|
+
margin: 10px 0;
|
|
4695
|
+
border: 0;
|
|
4696
|
+
border-top: 1px solid #e5e7eb;
|
|
4697
|
+
}
|
|
4698
|
+
.dm-helper-bubble-assistant table {
|
|
4699
|
+
border-collapse: collapse;
|
|
4700
|
+
width: 100%;
|
|
4701
|
+
margin: 6px 0 10px;
|
|
4702
|
+
font-size: 12.5px;
|
|
4703
|
+
}
|
|
4704
|
+
.dm-helper-bubble-assistant th,
|
|
4705
|
+
.dm-helper-bubble-assistant td {
|
|
4706
|
+
padding: 6px 8px;
|
|
4707
|
+
border: 1px solid #e5e7eb;
|
|
4708
|
+
text-align: left;
|
|
4709
|
+
vertical-align: top;
|
|
4710
|
+
}
|
|
4711
|
+
.dm-helper-bubble-assistant th { background: #f9fafb; font-weight: 600; color: #111827; }
|
|
4712
|
+
|
|
4713
|
+
.dm-helper-bubble-pending { color: #6b7280; font-style: normal; min-height: 24px; display: inline-flex; align-items: center; }
|
|
4714
|
+
|
|
4715
|
+
/* Three-dot typing indicator used while the assistant is streaming. */
|
|
4716
|
+
/* Tool-call card — one per applied proposal. Thin agnostic component:
|
|
4717
|
+
icon + dynamic title + chevron-accordion JSON + Open navigation.
|
|
4718
|
+
Closes the no-code success loop in the user's mental model. */
|
|
4719
|
+
.dm-helper-toolcall-stack {
|
|
4720
|
+
display: flex;
|
|
4721
|
+
flex-direction: column;
|
|
4722
|
+
gap: 6px;
|
|
4723
|
+
margin-top: 6px;
|
|
4724
|
+
}
|
|
4725
|
+
.dm-helper-toolcall {
|
|
4726
|
+
width: 100%;
|
|
4727
|
+
border: 1px solid #e5e7eb;
|
|
4728
|
+
border-radius: 5px;
|
|
4729
|
+
background: #ffffff;
|
|
4730
|
+
box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
|
|
4731
|
+
overflow: hidden;
|
|
4732
|
+
}
|
|
4733
|
+
.dm-helper-toolcall-row {
|
|
4734
|
+
width: 100%;
|
|
4735
|
+
min-height: 36px;
|
|
4736
|
+
display: grid;
|
|
4737
|
+
grid-template-columns: 20px 1fr auto;
|
|
4738
|
+
align-items: center;
|
|
4739
|
+
gap: 8px;
|
|
4740
|
+
padding: 8px 12px;
|
|
4741
|
+
background: transparent;
|
|
4742
|
+
border: 0;
|
|
4743
|
+
cursor: pointer;
|
|
4744
|
+
font: inherit;
|
|
4745
|
+
text-align: left;
|
|
4746
|
+
color: #111827;
|
|
4747
|
+
transition: background .12s ease;
|
|
4748
|
+
}
|
|
4749
|
+
.dm-helper-toolcall-row:hover { background: #fafafa; }
|
|
4750
|
+
.dm-helper-toolcall-icon { color: #9ca3af; flex-shrink: 0; }
|
|
4751
|
+
.dm-helper-toolcall-title {
|
|
4752
|
+
font-size: 13px;
|
|
4753
|
+
font-weight: 500;
|
|
4754
|
+
color: #2c2c2c;
|
|
4755
|
+
white-space: nowrap;
|
|
4756
|
+
overflow: hidden;
|
|
4757
|
+
text-overflow: ellipsis;
|
|
4758
|
+
}
|
|
4759
|
+
.dm-helper-toolcall-chevron {
|
|
4760
|
+
color: #9ca3af;
|
|
4761
|
+
transition: transform .15s ease;
|
|
4762
|
+
flex-shrink: 0;
|
|
4763
|
+
}
|
|
4764
|
+
.dm-helper-toolcall-chevron.is-open { transform: rotate(180deg); }
|
|
4765
|
+
.dm-helper-toolcall-body {
|
|
4766
|
+
background: #f9fafb;
|
|
4767
|
+
border-top: 1px solid #e5e7eb;
|
|
4768
|
+
padding: 8px 10px;
|
|
4769
|
+
box-shadow: inset 0 1px 2px rgba(15, 23, 42, 0.04);
|
|
4770
|
+
}
|
|
4771
|
+
.dm-helper-toolcall-content {
|
|
4772
|
+
margin: 0 0 8px;
|
|
4773
|
+
padding: 6px 8px;
|
|
4774
|
+
background: #ffffff;
|
|
4775
|
+
border: 1px solid #e5e7eb;
|
|
4776
|
+
border-radius: 4px;
|
|
4777
|
+
font-size: 12px;
|
|
4778
|
+
line-height: 1.5;
|
|
4779
|
+
color: #4b5563;
|
|
4780
|
+
white-space: pre-wrap;
|
|
4781
|
+
word-break: break-word;
|
|
4782
|
+
max-height: 140px;
|
|
4783
|
+
overflow-y: auto;
|
|
4784
|
+
}
|
|
4785
|
+
.dm-helper-toolcall-json {
|
|
4786
|
+
margin: 0;
|
|
4787
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
4788
|
+
font-size: 11.5px;
|
|
4789
|
+
line-height: 1.5;
|
|
4790
|
+
color: #374151;
|
|
4791
|
+
white-space: pre-wrap;
|
|
4792
|
+
word-break: break-word;
|
|
4793
|
+
max-height: 240px;
|
|
4794
|
+
overflow-y: auto;
|
|
4795
|
+
}
|
|
4796
|
+
.dm-helper-toolcall-open {
|
|
4797
|
+
display: inline-flex;
|
|
4798
|
+
align-items: center;
|
|
4799
|
+
gap: 4px;
|
|
4800
|
+
height: 24px;
|
|
4801
|
+
padding: 0 9px;
|
|
4802
|
+
margin: 6px 10px 8px;
|
|
4803
|
+
border: 1px solid #d1d5db;
|
|
4804
|
+
border-radius: 5px;
|
|
4805
|
+
background: #ffffff;
|
|
4806
|
+
color: #2c2c2c;
|
|
4807
|
+
font: inherit;
|
|
4808
|
+
font-size: 11.5px;
|
|
4809
|
+
font-weight: 500;
|
|
4810
|
+
cursor: pointer;
|
|
4811
|
+
transition: background .12s ease, border-color .12s ease;
|
|
4812
|
+
}
|
|
4813
|
+
.dm-helper-toolcall-open:hover {
|
|
4814
|
+
background: #f5f5f5;
|
|
4815
|
+
border-color: #9ca3af;
|
|
4816
|
+
}
|
|
4817
|
+
|
|
4818
|
+
.dm-helper-typing {
|
|
4819
|
+
display: inline-flex;
|
|
4820
|
+
align-items: center;
|
|
4821
|
+
gap: 4px;
|
|
4822
|
+
padding: 2px 0;
|
|
4823
|
+
}
|
|
4824
|
+
.dm-helper-typing-dot {
|
|
4825
|
+
width: 6px;
|
|
4826
|
+
height: 6px;
|
|
4827
|
+
border-radius: 50%;
|
|
4828
|
+
background: #9ca3af;
|
|
4829
|
+
animation: dm-helper-typing-bounce 1.1s infinite ease-in-out both;
|
|
4830
|
+
}
|
|
4831
|
+
.dm-helper-typing-dot:nth-child(1) { animation-delay: -0.32s; }
|
|
4832
|
+
.dm-helper-typing-dot:nth-child(2) { animation-delay: -0.16s; }
|
|
4833
|
+
.dm-helper-typing-dot:nth-child(3) { animation-delay: 0s; }
|
|
4834
|
+
@keyframes dm-helper-typing-bounce {
|
|
4835
|
+
0%, 80%, 100% { transform: scale(0.72); opacity: 0.55; }
|
|
4836
|
+
40% { transform: scale(1); opacity: 1; }
|
|
4837
|
+
}
|
|
4838
|
+
|
|
4839
|
+
.dm-helper-bubble-system {
|
|
4840
|
+
display: inline-block;
|
|
4841
|
+
padding: 4px 10px;
|
|
4842
|
+
border-radius: 99px;
|
|
4843
|
+
background: #f3f4f6;
|
|
4844
|
+
color: #6b7280;
|
|
4845
|
+
border: 1px solid #e5e7eb;
|
|
4846
|
+
font-size: 11.5px;
|
|
4847
|
+
font-weight: 500;
|
|
4848
|
+
}
|
|
4849
|
+
|
|
4850
|
+
/* ─── HelperSidecar — Setup tab (state-driven, editable, ChatGPT-clean) ── */
|
|
4851
|
+
.dm-helper-setup-body {
|
|
4852
|
+
display: flex;
|
|
4853
|
+
flex-direction: column;
|
|
4854
|
+
gap: 14px;
|
|
4855
|
+
padding: 16px;
|
|
4856
|
+
overflow-y: auto;
|
|
4857
|
+
}
|
|
4858
|
+
.dm-helper-setup-intro {
|
|
4859
|
+
margin: 0;
|
|
4860
|
+
font-size: 12.5px;
|
|
4861
|
+
color: #6b7280;
|
|
4862
|
+
line-height: 1.5;
|
|
4863
|
+
}
|
|
4864
|
+
|
|
4865
|
+
.dm-helper-setup-status {
|
|
4866
|
+
display: flex;
|
|
4867
|
+
flex-direction: column;
|
|
4868
|
+
gap: 4px;
|
|
4869
|
+
padding: 12px 14px;
|
|
4870
|
+
border: 1px solid #e5e7eb;
|
|
4871
|
+
border-radius: 10px;
|
|
4872
|
+
background: #fafafa;
|
|
4873
|
+
transition: background .12s ease, border-color .12s ease;
|
|
4874
|
+
}
|
|
4875
|
+
.dm-helper-setup-status.state-connected { background: #f0fdf4; border-color: #bbf7d0; }
|
|
4876
|
+
.dm-helper-setup-status.state-unreachable { background: #fffbeb; border-color: #fde68a; }
|
|
4877
|
+
.dm-helper-setup-status.state-unconfigured { background: #f5f3ff; border-color: #ddd6fe; }
|
|
4878
|
+
.dm-helper-setup-status.state-checking { background: #f9fafb; border-color: #e5e7eb; }
|
|
4879
|
+
|
|
4880
|
+
.dm-helper-setup-status-row {
|
|
4881
|
+
display: flex;
|
|
4882
|
+
align-items: center;
|
|
4883
|
+
gap: 8px;
|
|
4884
|
+
}
|
|
4885
|
+
.dm-helper-setup-status-label {
|
|
4886
|
+
flex: 1;
|
|
4887
|
+
font-size: 13px;
|
|
4888
|
+
font-weight: 600;
|
|
4889
|
+
color: #111827;
|
|
4890
|
+
}
|
|
4891
|
+
.dm-helper-setup-status-meta {
|
|
4892
|
+
font-size: 12px;
|
|
4893
|
+
color: #4b5563;
|
|
4894
|
+
line-height: 1.5;
|
|
4895
|
+
padding-left: 16px;
|
|
4896
|
+
}
|
|
4897
|
+
.dm-helper-setup-status.state-connected .dm-helper-setup-status-meta {
|
|
4898
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
4899
|
+
font-size: 11.5px;
|
|
4900
|
+
color: #15803d;
|
|
4901
|
+
}
|
|
4902
|
+
|
|
4903
|
+
.dm-helper-setup-recheck {
|
|
4904
|
+
height: 26px;
|
|
4905
|
+
padding: 0 10px;
|
|
4906
|
+
border: 1px solid #d1d5db;
|
|
4907
|
+
border-radius: 6px;
|
|
4908
|
+
background: #fff;
|
|
4909
|
+
color: #2c2c2c;
|
|
4910
|
+
font: inherit;
|
|
4911
|
+
font-size: 12px;
|
|
4912
|
+
cursor: pointer;
|
|
4913
|
+
transition: background .12s ease, border-color .12s ease;
|
|
4914
|
+
}
|
|
4915
|
+
.dm-helper-setup-recheck:hover:not(:disabled) {
|
|
4916
|
+
background: #f9fafb;
|
|
4917
|
+
border-color: #9ca3af;
|
|
4918
|
+
}
|
|
4919
|
+
.dm-helper-setup-recheck:disabled { opacity: .55; cursor: not-allowed; }
|
|
4920
|
+
|
|
4921
|
+
.dm-helper-setup-section {
|
|
4922
|
+
display: flex;
|
|
4923
|
+
flex-direction: column;
|
|
4924
|
+
gap: 6px;
|
|
4925
|
+
}
|
|
4926
|
+
.dm-helper-setup-label {
|
|
4927
|
+
margin: 0;
|
|
4928
|
+
font-size: 12px;
|
|
4929
|
+
font-weight: 600;
|
|
4930
|
+
color: #374151;
|
|
4931
|
+
}
|
|
4932
|
+
.dm-helper-setup-input,
|
|
4933
|
+
.dm-helper-setup-select {
|
|
4934
|
+
width: 100%;
|
|
4935
|
+
height: 34px;
|
|
4936
|
+
padding: 0 10px;
|
|
4937
|
+
border: 1px solid #d1d5db;
|
|
4938
|
+
border-radius: 7px;
|
|
4939
|
+
background: #ffffff;
|
|
4940
|
+
color: #111827;
|
|
4941
|
+
font: inherit;
|
|
4942
|
+
font-size: 13px;
|
|
4943
|
+
box-sizing: border-box;
|
|
4944
|
+
transition: border-color .12s ease, box-shadow .12s ease;
|
|
4945
|
+
}
|
|
4946
|
+
.dm-helper-setup-input::placeholder { color: #9ca3af; }
|
|
4947
|
+
.dm-helper-setup-input:focus,
|
|
4948
|
+
.dm-helper-setup-select:focus {
|
|
4949
|
+
outline: none;
|
|
4950
|
+
border-color: #6b7280;
|
|
4951
|
+
box-shadow: 0 0 0 3px rgba(0,0,0,.06);
|
|
4952
|
+
}
|
|
4953
|
+
.dm-helper-setup-input:disabled,
|
|
4954
|
+
.dm-helper-setup-select:disabled {
|
|
4955
|
+
background: #f9fafb;
|
|
4956
|
+
color: #6b7280;
|
|
4957
|
+
cursor: not-allowed;
|
|
4958
|
+
}
|
|
4959
|
+
.dm-helper-setup-select {
|
|
4960
|
+
appearance: none;
|
|
4961
|
+
-webkit-appearance: none;
|
|
4962
|
+
background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");
|
|
4963
|
+
background-repeat: no-repeat;
|
|
4964
|
+
background-position: right 10px center;
|
|
4965
|
+
padding-right: 32px;
|
|
4966
|
+
}
|
|
4967
|
+
|
|
4968
|
+
.dm-helper-setup-quick-row {
|
|
4969
|
+
display: flex;
|
|
4970
|
+
flex-wrap: wrap;
|
|
4971
|
+
align-items: center;
|
|
4972
|
+
gap: 4px;
|
|
4973
|
+
margin-top: 2px;
|
|
4974
|
+
}
|
|
4975
|
+
.dm-helper-setup-quick-label {
|
|
4976
|
+
font-size: 11px;
|
|
4977
|
+
color: #6b7280;
|
|
4978
|
+
margin-right: 4px;
|
|
4979
|
+
}
|
|
4980
|
+
.dm-helper-setup-quick-pill {
|
|
4981
|
+
height: 22px;
|
|
4982
|
+
padding: 0 8px;
|
|
4983
|
+
border: 1px solid #e5e7eb;
|
|
4984
|
+
border-radius: 99px;
|
|
4985
|
+
background: #fff;
|
|
4986
|
+
color: #4b5563;
|
|
4987
|
+
font: inherit;
|
|
4988
|
+
font-size: 11px;
|
|
4989
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
4990
|
+
cursor: pointer;
|
|
4991
|
+
transition: background .12s ease, border-color .12s ease, color .12s ease;
|
|
4992
|
+
}
|
|
4993
|
+
.dm-helper-setup-quick-pill:hover {
|
|
4994
|
+
background: #f9fafb;
|
|
4995
|
+
border-color: #d1d5db;
|
|
4996
|
+
color: #111827;
|
|
4997
|
+
}
|
|
4998
|
+
.dm-helper-setup-quick-pill.active {
|
|
4999
|
+
background: #eef2ff;
|
|
5000
|
+
border-color: #c7d2fe;
|
|
5001
|
+
color: #1e3a8a;
|
|
5002
|
+
}
|
|
5003
|
+
|
|
5004
|
+
.dm-helper-setup-helper-text {
|
|
5005
|
+
font-size: 11.5px;
|
|
5006
|
+
color: #6b7280;
|
|
5007
|
+
}
|
|
5008
|
+
.dm-helper-setup-helper-text strong { color: #111827; font-weight: 600; }
|
|
5009
|
+
|
|
5010
|
+
.dm-helper-setup-actions {
|
|
5011
|
+
display: flex;
|
|
5012
|
+
align-items: center;
|
|
5013
|
+
gap: 10px;
|
|
5014
|
+
flex-wrap: wrap;
|
|
5015
|
+
padding-top: 2px;
|
|
5016
|
+
}
|
|
5017
|
+
.dm-helper-setup-save {
|
|
5018
|
+
height: 34px;
|
|
5019
|
+
padding: 0 14px;
|
|
5020
|
+
border: 0;
|
|
5021
|
+
border-radius: 7px;
|
|
5022
|
+
background: #111827;
|
|
5023
|
+
color: #fff;
|
|
5024
|
+
font: inherit;
|
|
5025
|
+
font-size: 13px;
|
|
5026
|
+
font-weight: 500;
|
|
5027
|
+
cursor: pointer;
|
|
5028
|
+
transition: background .12s ease, opacity .12s ease;
|
|
5029
|
+
}
|
|
5030
|
+
.dm-helper-setup-save:hover:not(:disabled) { background: #000; }
|
|
5031
|
+
.dm-helper-setup-save:focus-visible { outline: 2px solid #bfdbfe; outline-offset: 2px; }
|
|
5032
|
+
.dm-helper-setup-save:disabled {
|
|
5033
|
+
background: #d1d5db;
|
|
5034
|
+
color: #fff;
|
|
5035
|
+
cursor: not-allowed;
|
|
5036
|
+
}
|
|
5037
|
+
.dm-helper-setup-save-ok {
|
|
5038
|
+
font-size: 12px;
|
|
5039
|
+
color: #15803d;
|
|
5040
|
+
font-weight: 500;
|
|
5041
|
+
}
|
|
5042
|
+
.dm-helper-setup-save-error {
|
|
5043
|
+
font-size: 12px;
|
|
5044
|
+
color: #b91c1c;
|
|
5045
|
+
}
|
|
5046
|
+
|
|
5047
|
+
.dm-helper-setup-guide {
|
|
5048
|
+
display: flex;
|
|
5049
|
+
flex-direction: column;
|
|
5050
|
+
gap: 6px;
|
|
5051
|
+
margin-top: 4px;
|
|
5052
|
+
padding-top: 12px;
|
|
5053
|
+
border-top: 1px solid #f3f4f6;
|
|
5054
|
+
}
|
|
5055
|
+
.dm-helper-setup-command {
|
|
5056
|
+
margin: 0;
|
|
5057
|
+
padding: 10px 12px;
|
|
5058
|
+
background: #0b1220;
|
|
5059
|
+
color: #e5e7eb;
|
|
5060
|
+
border-radius: 7px;
|
|
5061
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
5062
|
+
font-size: 12.5px;
|
|
5063
|
+
overflow-x: auto;
|
|
5064
|
+
white-space: pre;
|
|
5065
|
+
}
|
|
5066
|
+
.dm-helper-setup-copy {
|
|
5067
|
+
align-self: flex-start;
|
|
5068
|
+
height: 28px;
|
|
5069
|
+
padding: 0 12px;
|
|
5070
|
+
border: 1px solid #d1d5db;
|
|
5071
|
+
border-radius: 6px;
|
|
5072
|
+
background: #fff;
|
|
5073
|
+
color: #2c2c2c;
|
|
5074
|
+
font: inherit;
|
|
5075
|
+
font-size: 12px;
|
|
5076
|
+
cursor: pointer;
|
|
5077
|
+
transition: background .12s ease, border-color .12s ease;
|
|
5078
|
+
}
|
|
5079
|
+
.dm-helper-setup-copy:hover {
|
|
5080
|
+
background: #f9fafb;
|
|
5081
|
+
border-color: #9ca3af;
|
|
5082
|
+
}
|
|
5083
|
+
|
|
5084
|
+
/* Setup tab */
|
|
5085
|
+
.dm-helper-setup-section { display: grid; gap: 4px; padding: 10px 0; border-bottom: 1px solid #f3f4f6; }
|
|
5086
|
+
.dm-helper-setup-section:last-child { border-bottom: none; }
|
|
5087
|
+
.dm-helper-setup-value { display: block; font-size: 12px; color: #374151; background: #f3f4f6; border-radius: 5px; padding: 6px 10px; word-break: break-all; font-family: monospace; }
|
|
5088
|
+
.dm-helper-setup-badge { display: inline-flex; align-items: center; height: 22px; padding: 0 10px; border-radius: 99px; background: #f3f4f6; color: #374151; font-size: 12px; font-weight: 600; }
|
|
5089
|
+
.dm-helper-setup-command { margin: 0; padding: 10px 12px; background: #1e293b; color: #e2e8f0; border-radius: 8px; font-size: 13px; font-family: monospace; white-space: pre; }
|
|
5090
|
+
.dm-helper-connection-row { display: flex; align-items: center; gap: 8px; }
|
|
5091
|
+
.dm-helper-connection-label { font-size: 13px; color: #374151; flex: 1; }
|
|
5092
|
+
.dm-helper-recheck { font-size: 12px !important; padding: 3px 8px !important; height: 26px !important; }
|
|
5093
|
+
.dm-connection-dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; }
|
|
5094
|
+
.dm-connection-ok { background: #22c55e; }
|
|
5095
|
+
.dm-connection-amber { background: #f59e0b; }
|
|
5096
|
+
.dm-connection-checking { background: #d1d5db; animation: blink 1s step-end infinite; }
|
|
5097
|
+
|
|
5098
|
+
/* NavRail helper toggle */
|
|
5099
|
+
/* Legacy rail-helper-toggle classes removed in the rail unification:
|
|
5100
|
+
the Ask helper trigger now lives in the tab row as a pill that mirrors
|
|
5101
|
+
Twenty's "+ New chat" pill. See `app/workspace-rail.jsx`. */
|
|
5102
|
+
|
|
5103
|
+
/* ─── Workspace rail — top row (brand + utility actions) ─────────────── */
|
|
5104
|
+
.workspace-rail-topbar {
|
|
5105
|
+
display: flex;
|
|
5106
|
+
align-items: center;
|
|
5107
|
+
justify-content: space-between;
|
|
5108
|
+
gap: 8px;
|
|
5109
|
+
min-height: 32px;
|
|
5110
|
+
}
|
|
5111
|
+
.workspace-rail-brand-button {
|
|
5112
|
+
display: inline-flex;
|
|
5113
|
+
align-items: center;
|
|
5114
|
+
gap: 8px;
|
|
5115
|
+
padding: 4px 6px;
|
|
5116
|
+
margin-left: -4px;
|
|
5117
|
+
border: 1px solid transparent;
|
|
5118
|
+
border-radius: 6px;
|
|
5119
|
+
background: transparent;
|
|
5120
|
+
color: inherit;
|
|
5121
|
+
font: inherit;
|
|
5122
|
+
font-size: 14px;
|
|
5123
|
+
font-weight: 650;
|
|
5124
|
+
cursor: pointer;
|
|
5125
|
+
min-width: 0;
|
|
5126
|
+
}
|
|
5127
|
+
.workspace-rail-brand-button:hover { background: #f3f4f6; }
|
|
5128
|
+
.workspace-rail-brand-button .workspace-brand-label {
|
|
5129
|
+
white-space: nowrap;
|
|
5130
|
+
overflow: hidden;
|
|
5131
|
+
text-overflow: ellipsis;
|
|
5132
|
+
max-width: 130px;
|
|
5133
|
+
}
|
|
5134
|
+
.workspace-brand-caret { color: #9ca3af; flex-shrink: 0; }
|
|
5135
|
+
.workspace-rail-topbar-actions { display: inline-flex; gap: 2px; flex-shrink: 0; }
|
|
5136
|
+
.workspace-rail-icon-btn {
|
|
5137
|
+
width: 26px;
|
|
5138
|
+
height: 26px;
|
|
5139
|
+
display: grid;
|
|
5140
|
+
place-items: center;
|
|
5141
|
+
border: 1px solid transparent;
|
|
5142
|
+
border-radius: 6px;
|
|
5143
|
+
background: transparent;
|
|
5144
|
+
color: #6b7280;
|
|
5145
|
+
cursor: pointer;
|
|
5146
|
+
transition: background .12s ease, color .12s ease, border-color .12s ease;
|
|
5147
|
+
}
|
|
5148
|
+
.workspace-rail-icon-btn:hover { background: #f3f4f6; color: #111827; }
|
|
5149
|
+
.workspace-rail-icon-btn:focus-visible { outline: 2px solid #bfdbfe; outline-offset: 1px; }
|
|
5150
|
+
|
|
5151
|
+
/* ─── Workspace rail — tab row (Home/Chat tabs + Ask helper pill) ────── */
|
|
5152
|
+
.workspace-rail-tabbar {
|
|
5153
|
+
display: flex;
|
|
5154
|
+
align-items: center;
|
|
5155
|
+
justify-content: space-between;
|
|
5156
|
+
gap: 8px;
|
|
5157
|
+
margin-top: -4px;
|
|
5158
|
+
}
|
|
5159
|
+
.workspace-rail-tabs {
|
|
5160
|
+
display: inline-flex;
|
|
5161
|
+
align-items: center;
|
|
5162
|
+
gap: 2px;
|
|
5163
|
+
padding: 2px;
|
|
5164
|
+
border-radius: 8px;
|
|
5165
|
+
background: transparent;
|
|
5166
|
+
}
|
|
5167
|
+
.workspace-rail-tab {
|
|
5168
|
+
width: 28px;
|
|
5169
|
+
height: 28px;
|
|
5170
|
+
display: grid;
|
|
5171
|
+
place-items: center;
|
|
5172
|
+
border: 1px solid transparent;
|
|
5173
|
+
border-radius: 6px;
|
|
5174
|
+
background: transparent;
|
|
5175
|
+
color: #9ca3af;
|
|
5176
|
+
cursor: pointer;
|
|
5177
|
+
transition: background .12s ease, color .12s ease;
|
|
5178
|
+
}
|
|
5179
|
+
.workspace-rail-tab:hover { background: #f3f4f6; color: #374151; }
|
|
5180
|
+
.workspace-rail-tab.active {
|
|
5181
|
+
background: #f1f1f1;
|
|
5182
|
+
color: #111827;
|
|
5183
|
+
}
|
|
5184
|
+
.workspace-rail-tab:focus-visible { outline: 2px solid #bfdbfe; outline-offset: 1px; }
|
|
5185
|
+
|
|
5186
|
+
.workspace-rail-helper-pill {
|
|
5187
|
+
display: inline-flex;
|
|
5188
|
+
align-items: center;
|
|
5189
|
+
gap: 6px;
|
|
5190
|
+
height: 28px;
|
|
5191
|
+
padding: 0 12px;
|
|
5192
|
+
border: 1px solid #e5e7eb;
|
|
5193
|
+
border-radius: 5px;
|
|
5194
|
+
background: #fff;
|
|
5195
|
+
color: #111827;
|
|
5196
|
+
font: inherit;
|
|
5197
|
+
font-size: 12px;
|
|
5198
|
+
font-weight: 500;
|
|
5199
|
+
cursor: pointer;
|
|
5200
|
+
box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
|
|
5201
|
+
transition: background .12s ease, border-color .12s ease, box-shadow .12s ease;
|
|
5202
|
+
flex-shrink: 0;
|
|
5203
|
+
}
|
|
5204
|
+
.workspace-rail-helper-pill:hover {
|
|
5205
|
+
background: #fafafa;
|
|
5206
|
+
border-color: #d1d5db;
|
|
5207
|
+
box-shadow: 0 1px 3px rgba(15, 23, 42, 0.06);
|
|
5208
|
+
}
|
|
5209
|
+
.workspace-rail-helper-pill.active {
|
|
5210
|
+
background: #f3f4f6;
|
|
5211
|
+
border-color: #d1d5db;
|
|
5212
|
+
}
|
|
5213
|
+
.workspace-rail-helper-pill:focus-visible { outline: 2px solid #bfdbfe; outline-offset: 1px; }
|
|
5214
|
+
.workspace-rail-helper-pill svg { color: #6b7280; }
|
|
5215
|
+
|
|
5216
|
+
/* ─── Workspace rail — chat tab body (Latest + thread list) ──────────── */
|
|
5217
|
+
.workspace-rail-chat {
|
|
5218
|
+
display: flex;
|
|
5219
|
+
flex-direction: column;
|
|
5220
|
+
gap: 4px;
|
|
5221
|
+
min-height: 0;
|
|
5222
|
+
flex: 1;
|
|
5223
|
+
}
|
|
5224
|
+
|
|
5225
|
+
/* Chat search bar — sits above the Latest label. Light, compact, inline */
|
|
5226
|
+
.workspace-rail-chat-search {
|
|
5227
|
+
display: flex;
|
|
5228
|
+
align-items: center;
|
|
5229
|
+
gap: 6px;
|
|
5230
|
+
height: 28px;
|
|
5231
|
+
padding: 0 8px;
|
|
5232
|
+
border: 1px solid #e5e7eb;
|
|
5233
|
+
border-radius: 7px;
|
|
5234
|
+
background: #fafafa;
|
|
5235
|
+
color: #6b7280;
|
|
5236
|
+
margin: 2px 0 4px;
|
|
5237
|
+
}
|
|
5238
|
+
.workspace-rail-chat-search:focus-within {
|
|
5239
|
+
background: #ffffff;
|
|
5240
|
+
border-color: #9ca3af;
|
|
5241
|
+
box-shadow: 0 0 0 3px rgba(0,0,0,.04);
|
|
5242
|
+
}
|
|
5243
|
+
.workspace-rail-chat-search-input {
|
|
5244
|
+
flex: 1;
|
|
5245
|
+
min-width: 0;
|
|
5246
|
+
height: 22px;
|
|
5247
|
+
padding: 0;
|
|
5248
|
+
border: 0;
|
|
5249
|
+
background: transparent;
|
|
5250
|
+
outline: none;
|
|
5251
|
+
color: #111827;
|
|
5252
|
+
font: inherit;
|
|
5253
|
+
font-size: 12.5px;
|
|
5254
|
+
}
|
|
5255
|
+
.workspace-rail-chat-search-input::placeholder { color: #9ca3af; }
|
|
5256
|
+
.workspace-rail-chat-search-clear {
|
|
5257
|
+
width: 18px;
|
|
5258
|
+
height: 18px;
|
|
5259
|
+
display: grid;
|
|
5260
|
+
place-items: center;
|
|
5261
|
+
border: 0;
|
|
5262
|
+
border-radius: 4px;
|
|
5263
|
+
background: transparent;
|
|
5264
|
+
color: #9ca3af;
|
|
5265
|
+
cursor: pointer;
|
|
5266
|
+
}
|
|
5267
|
+
.workspace-rail-chat-search-clear:hover { background: #ececec; color: #4b5563; }
|
|
5268
|
+
|
|
5269
|
+
/* Truncated state: hug the 10 visible rows, no fade-mask, no scroll —
|
|
5270
|
+
the "Show N more" pill is the affordance. Expanded state: bounded
|
|
5271
|
+
height + auto scroll so the list never bleeds past the fold. */
|
|
5272
|
+
.workspace-rail-thread-scroll {
|
|
5273
|
+
position: relative;
|
|
5274
|
+
flex: 1 1 auto;
|
|
5275
|
+
min-height: 0;
|
|
5276
|
+
max-height: calc(100vh - 260px);
|
|
5277
|
+
overflow-y: auto;
|
|
5278
|
+
scrollbar-gutter: stable;
|
|
5279
|
+
}
|
|
5280
|
+
.workspace-rail-thread-scroll.is-truncated {
|
|
5281
|
+
flex: 0 0 auto;
|
|
5282
|
+
max-height: none;
|
|
5283
|
+
overflow: visible;
|
|
5284
|
+
-webkit-mask-image: none;
|
|
5285
|
+
mask-image: none;
|
|
5286
|
+
}
|
|
5287
|
+
.workspace-rail-chat-show-more {
|
|
5288
|
+
align-self: center;
|
|
5289
|
+
height: 22px;
|
|
5290
|
+
padding: 0 12px;
|
|
5291
|
+
border: 1px solid #e5e7eb;
|
|
5292
|
+
border-radius: 99px;
|
|
5293
|
+
background: #fff;
|
|
5294
|
+
color: #4b5563;
|
|
5295
|
+
font: inherit;
|
|
5296
|
+
font-size: 11.5px;
|
|
5297
|
+
cursor: pointer;
|
|
5298
|
+
margin-top: 0;
|
|
5299
|
+
}
|
|
5300
|
+
.workspace-rail-chat-show-more:hover {
|
|
5301
|
+
background: #fafafa;
|
|
5302
|
+
border-color: #d1d5db;
|
|
5303
|
+
color: #111827;
|
|
5304
|
+
}
|
|
5305
|
+
.workspace-rail-section-label {
|
|
5306
|
+
font-size: 11px;
|
|
5307
|
+
font-weight: 600;
|
|
5308
|
+
letter-spacing: 0.02em;
|
|
5309
|
+
color: #9ca3af;
|
|
5310
|
+
text-transform: none;
|
|
5311
|
+
padding: 4px 8px 2px;
|
|
5312
|
+
}
|
|
5313
|
+
.workspace-rail-chat-empty {
|
|
5314
|
+
margin: 0;
|
|
5315
|
+
padding: 12px 10px;
|
|
5316
|
+
font-size: 12px;
|
|
5317
|
+
color: #6b7280;
|
|
5318
|
+
line-height: 1.45;
|
|
5319
|
+
}
|
|
5320
|
+
.workspace-rail-thread-list {
|
|
5321
|
+
list-style: none;
|
|
5322
|
+
margin: 0;
|
|
5323
|
+
padding: 0;
|
|
5324
|
+
display: flex;
|
|
5325
|
+
flex-direction: column;
|
|
5326
|
+
gap: 1px;
|
|
5327
|
+
overflow-y: auto;
|
|
5328
|
+
}
|
|
5329
|
+
.workspace-rail-thread-row {
|
|
5330
|
+
position: relative;
|
|
5331
|
+
display: flex;
|
|
5332
|
+
align-items: center;
|
|
5333
|
+
border-radius: 6px;
|
|
5334
|
+
transition: background .12s ease;
|
|
5335
|
+
}
|
|
5336
|
+
.workspace-rail-thread-row:hover { background: #f5f5f5; }
|
|
5337
|
+
.workspace-rail-thread-row:hover .workspace-rail-thread-menu-btn { opacity: 1; pointer-events: auto; }
|
|
5338
|
+
.workspace-rail-thread-row.is-active { background: #ececec; }
|
|
5339
|
+
|
|
5340
|
+
.workspace-rail-thread-main {
|
|
5341
|
+
flex: 1;
|
|
5342
|
+
display: grid;
|
|
5343
|
+
grid-template-columns: auto 1fr auto;
|
|
5344
|
+
align-items: center;
|
|
5345
|
+
gap: 8px;
|
|
5346
|
+
padding: 7px 8px 7px 9px;
|
|
5347
|
+
background: transparent;
|
|
5348
|
+
border: 0;
|
|
5349
|
+
cursor: pointer;
|
|
5350
|
+
color: inherit;
|
|
5351
|
+
font: inherit;
|
|
5352
|
+
text-align: left;
|
|
5353
|
+
min-width: 0;
|
|
5354
|
+
border-radius: 6px;
|
|
5355
|
+
}
|
|
5356
|
+
.workspace-rail-thread-icon { color: #6b7280; flex-shrink: 0; }
|
|
5357
|
+
.workspace-rail-thread-title {
|
|
5358
|
+
font-size: 13px;
|
|
5359
|
+
font-weight: 500;
|
|
5360
|
+
color: #2c2c2c;
|
|
5361
|
+
white-space: nowrap;
|
|
5362
|
+
overflow: hidden;
|
|
5363
|
+
text-overflow: ellipsis;
|
|
5364
|
+
min-width: 0;
|
|
5365
|
+
}
|
|
5366
|
+
.workspace-rail-thread-time {
|
|
5367
|
+
font-size: 11px;
|
|
5368
|
+
color: #9ca3af;
|
|
5369
|
+
flex-shrink: 0;
|
|
5370
|
+
margin-right: 2px;
|
|
5371
|
+
}
|
|
5372
|
+
.workspace-rail-thread-rename {
|
|
5373
|
+
flex: 1;
|
|
5374
|
+
min-width: 0;
|
|
5375
|
+
height: 22px;
|
|
5376
|
+
padding: 0 6px;
|
|
5377
|
+
border: 1px solid #d1d5db;
|
|
5378
|
+
border-radius: 5px;
|
|
5379
|
+
background: #fff;
|
|
5380
|
+
color: #111827;
|
|
5381
|
+
font: inherit;
|
|
5382
|
+
font-size: 13px;
|
|
5383
|
+
outline: none;
|
|
5384
|
+
}
|
|
5385
|
+
.workspace-rail-thread-rename:focus { border-color: #9ca3af; box-shadow: 0 0 0 3px rgba(0,0,0,.06); }
|
|
5386
|
+
|
|
5387
|
+
.workspace-rail-thread-menu-wrap {
|
|
5388
|
+
position: relative;
|
|
5389
|
+
display: inline-flex;
|
|
5390
|
+
align-items: center;
|
|
5391
|
+
padding-right: 4px;
|
|
5392
|
+
}
|
|
5393
|
+
.workspace-rail-thread-menu-btn {
|
|
5394
|
+
width: 24px;
|
|
5395
|
+
height: 24px;
|
|
5396
|
+
display: grid;
|
|
5397
|
+
place-items: center;
|
|
5398
|
+
border: 0;
|
|
5399
|
+
border-radius: 5px;
|
|
5400
|
+
background: transparent;
|
|
5401
|
+
color: #6b7280;
|
|
5402
|
+
cursor: pointer;
|
|
5403
|
+
opacity: 0;
|
|
5404
|
+
pointer-events: none;
|
|
5405
|
+
transition: opacity .12s ease, background .12s ease;
|
|
5406
|
+
}
|
|
5407
|
+
.workspace-rail-thread-menu-btn:hover { background: #e5e7eb; color: #111827; }
|
|
5408
|
+
.workspace-rail-thread-menu-btn:focus-visible { opacity: 1; pointer-events: auto; outline: 2px solid #bfdbfe; outline-offset: 1px; }
|
|
5409
|
+
|
|
5410
|
+
.workspace-rail-thread-menu {
|
|
5411
|
+
position: absolute;
|
|
5412
|
+
top: calc(100% + 4px);
|
|
5413
|
+
right: 0;
|
|
5414
|
+
min-width: 160px;
|
|
5415
|
+
background: #fff;
|
|
5416
|
+
border: 1px solid #e5e7eb;
|
|
5417
|
+
border-radius: 8px;
|
|
5418
|
+
box-shadow: 0 8px 28px rgba(15, 23, 42, 0.12);
|
|
5419
|
+
padding: 4px;
|
|
5420
|
+
display: flex;
|
|
5421
|
+
flex-direction: column;
|
|
5422
|
+
gap: 1px;
|
|
5423
|
+
z-index: 90;
|
|
5424
|
+
}
|
|
5425
|
+
.workspace-rail-thread-menu-item {
|
|
5426
|
+
display: inline-flex;
|
|
5427
|
+
align-items: center;
|
|
5428
|
+
gap: 8px;
|
|
5429
|
+
height: 30px;
|
|
5430
|
+
padding: 0 10px;
|
|
5431
|
+
font-size: 13px;
|
|
5432
|
+
color: #2c2c2c;
|
|
5433
|
+
background: transparent;
|
|
5434
|
+
border: 0;
|
|
5435
|
+
border-radius: 5px;
|
|
5436
|
+
cursor: pointer;
|
|
5437
|
+
text-align: left;
|
|
5438
|
+
}
|
|
5439
|
+
.workspace-rail-thread-menu-item:hover { background: #f5f5f5; }
|
|
5440
|
+
.workspace-rail-thread-menu-item.is-destructive { color: #b91c1c; }
|
|
5441
|
+
.workspace-rail-thread-menu-item.is-destructive:hover { background: #fef2f2; }
|
|
5442
|
+
|
|
5443
|
+
/* ─── HelperSidecar — clean light textarea (fix the dark-UA fallback) ─── */
|
|
5444
|
+
.dm-field-textarea {
|
|
5445
|
+
width: 100%;
|
|
5446
|
+
min-height: 72px;
|
|
5447
|
+
padding: 8px 10px;
|
|
5448
|
+
border: 1px solid #d1d5db;
|
|
5449
|
+
border-radius: 7px;
|
|
5450
|
+
background: #ffffff;
|
|
5451
|
+
color: #111827;
|
|
5452
|
+
font: inherit;
|
|
5453
|
+
font-size: 13px;
|
|
5454
|
+
line-height: 1.5;
|
|
5455
|
+
resize: vertical;
|
|
5456
|
+
box-sizing: border-box;
|
|
5457
|
+
transition: border-color .12s ease, box-shadow .12s ease;
|
|
5458
|
+
}
|
|
5459
|
+
.dm-field-textarea::placeholder { color: #9ca3af; }
|
|
5460
|
+
.dm-field-textarea:focus {
|
|
5461
|
+
outline: none;
|
|
5462
|
+
border-color: #6b7280;
|
|
5463
|
+
box-shadow: 0 0 0 3px rgba(0,0,0,.06);
|
|
5464
|
+
}
|
|
5465
|
+
.dm-field-textarea:disabled {
|
|
5466
|
+
background: #f9fafb;
|
|
5467
|
+
color: #6b7280;
|
|
5468
|
+
cursor: not-allowed;
|
|
5469
|
+
}
|
|
5470
|
+
|
|
5471
|
+
/* ─── HelperSidecar — composer-at-bottom layout (Twenty Ask AI parity) ── */
|
|
5472
|
+
.dm-helper-body {
|
|
5473
|
+
display: flex;
|
|
5474
|
+
flex-direction: column;
|
|
5475
|
+
gap: 0;
|
|
5476
|
+
padding: 0;
|
|
5477
|
+
min-height: 0;
|
|
5478
|
+
height: 100%;
|
|
5479
|
+
overflow: hidden; /* let the conversation scroll, not the body */
|
|
5480
|
+
}
|
|
5481
|
+
.dm-helper-conversation {
|
|
5482
|
+
flex: 1 1 auto;
|
|
5483
|
+
display: flex;
|
|
5484
|
+
flex-direction: column;
|
|
5485
|
+
gap: 10px;
|
|
5486
|
+
padding: 14px 16px;
|
|
5487
|
+
min-height: 0; /* unlocks flex children to scroll */
|
|
5488
|
+
overflow-y: auto; /* the canonical scroller for long threads */
|
|
5489
|
+
overscroll-behavior: contain;
|
|
5490
|
+
scrollbar-gutter: stable;
|
|
5491
|
+
}
|
|
5492
|
+
.dm-helper-conversation:empty { padding: 0; }
|
|
5493
|
+
|
|
5494
|
+
.dm-helper-composer {
|
|
5495
|
+
display: flex;
|
|
5496
|
+
flex-direction: column;
|
|
5497
|
+
gap: 8px;
|
|
5498
|
+
padding: 12px 14px 14px;
|
|
5499
|
+
border-top: 1px solid #eaeaea;
|
|
5500
|
+
background: #fcfcfc;
|
|
5501
|
+
flex-shrink: 0;
|
|
5502
|
+
}
|
|
5503
|
+
.dm-helper-composer-prompt {
|
|
5504
|
+
margin: 0;
|
|
5505
|
+
font-size: 13px;
|
|
5506
|
+
font-weight: 600;
|
|
5507
|
+
color: #111827;
|
|
5508
|
+
}
|
|
5509
|
+
|
|
5510
|
+
/* Empty-state chip stack — one chip per row, Twenty "Create a dashboard"
|
|
5511
|
+
grammar (icon-left, plain label, full-width, light hover). */
|
|
5512
|
+
.dm-helper-chip-stack {
|
|
5513
|
+
display: flex;
|
|
5514
|
+
flex-direction: column;
|
|
5515
|
+
gap: 2px;
|
|
5516
|
+
margin-bottom: 4px;
|
|
5517
|
+
}
|
|
5518
|
+
.dm-helper-chip {
|
|
5519
|
+
display: inline-flex;
|
|
5520
|
+
align-items: center;
|
|
5521
|
+
gap: 10px;
|
|
5522
|
+
width: 100%;
|
|
5523
|
+
height: 34px;
|
|
5524
|
+
padding: 0 10px;
|
|
5525
|
+
border: 1px solid transparent;
|
|
5526
|
+
border-radius: 7px;
|
|
5527
|
+
background: transparent;
|
|
5528
|
+
color: #2c2c2c;
|
|
5529
|
+
font: inherit;
|
|
5530
|
+
font-size: 13px;
|
|
5531
|
+
font-weight: 500;
|
|
5532
|
+
cursor: pointer;
|
|
5533
|
+
text-align: left;
|
|
5534
|
+
transition: background .12s ease, border-color .12s ease;
|
|
5535
|
+
}
|
|
5536
|
+
.dm-helper-chip:hover:not(:disabled) { background: #f3f4f6; }
|
|
5537
|
+
.dm-helper-chip.active { background: #eef2ff; border-color: #c7d2fe; color: #1e3a8a; }
|
|
5538
|
+
.dm-helper-chip:focus-visible { outline: 2px solid #bfdbfe; outline-offset: 1px; }
|
|
5539
|
+
.dm-helper-chip:disabled { opacity: .55; cursor: not-allowed; }
|
|
5540
|
+
.dm-helper-chip svg { color: #6b7280; flex-shrink: 0; }
|
|
5541
|
+
.dm-helper-chip.active svg { color: #1e40af; }
|
|
5542
|
+
|
|
5543
|
+
.dm-helper-chip-more-wrap { position: relative; display: block; }
|
|
5544
|
+
.dm-helper-chip-more {
|
|
5545
|
+
justify-content: space-between;
|
|
5546
|
+
}
|
|
5547
|
+
|
|
5548
|
+
/* Composer input — textarea + bottom action row in one rounded container. */
|
|
5549
|
+
.dm-helper-composer-input {
|
|
5550
|
+
display: flex;
|
|
5551
|
+
flex-direction: column;
|
|
5552
|
+
gap: 0;
|
|
5553
|
+
border: 1px solid #d1d5db;
|
|
5554
|
+
border-radius: 10px;
|
|
5555
|
+
background: #ffffff;
|
|
5556
|
+
transition: border-color .12s ease, box-shadow .12s ease;
|
|
5557
|
+
}
|
|
5558
|
+
.dm-helper-composer-input:focus-within {
|
|
5559
|
+
border-color: #9ca3af;
|
|
5560
|
+
box-shadow: 0 0 0 3px rgba(0,0,0,.06);
|
|
5561
|
+
}
|
|
5562
|
+
.dm-helper-composer-textarea {
|
|
5563
|
+
width: 100%;
|
|
5564
|
+
min-height: 56px;
|
|
5565
|
+
padding: 10px 12px 6px;
|
|
5566
|
+
border: 0;
|
|
5567
|
+
border-radius: 10px 10px 0 0;
|
|
5568
|
+
background: transparent;
|
|
5569
|
+
color: #111827;
|
|
5570
|
+
font: inherit;
|
|
5571
|
+
font-size: 13px;
|
|
5572
|
+
line-height: 1.5;
|
|
5573
|
+
resize: none;
|
|
5574
|
+
outline: none;
|
|
5575
|
+
box-sizing: border-box;
|
|
5576
|
+
}
|
|
5577
|
+
.dm-helper-composer-textarea::placeholder { color: #9ca3af; }
|
|
5578
|
+
.dm-helper-composer-textarea:disabled { color: #6b7280; cursor: not-allowed; }
|
|
5579
|
+
|
|
5580
|
+
.dm-helper-composer-actions {
|
|
5581
|
+
display: flex;
|
|
5582
|
+
align-items: center;
|
|
5583
|
+
justify-content: space-between;
|
|
5584
|
+
gap: 6px;
|
|
5585
|
+
padding: 6px 8px 8px;
|
|
5586
|
+
}
|
|
5587
|
+
.dm-helper-composer-actions-right {
|
|
5588
|
+
display: inline-flex;
|
|
5589
|
+
align-items: center;
|
|
5590
|
+
gap: 6px;
|
|
5591
|
+
}
|
|
5592
|
+
.dm-helper-composer-attach {
|
|
5593
|
+
width: 26px;
|
|
5594
|
+
height: 26px;
|
|
5595
|
+
display: grid;
|
|
5596
|
+
place-items: center;
|
|
5597
|
+
border: 0;
|
|
5598
|
+
border-radius: 5px;
|
|
5599
|
+
background: transparent;
|
|
5600
|
+
color: #6b7280;
|
|
5601
|
+
cursor: pointer;
|
|
5602
|
+
transition: background .12s ease, color .12s ease;
|
|
5603
|
+
}
|
|
5604
|
+
.dm-helper-composer-attach:hover:not(:disabled) { background: #f3f4f6; color: #111827; }
|
|
5605
|
+
.dm-helper-composer-attach:disabled { opacity: .45; cursor: not-allowed; }
|
|
5606
|
+
|
|
5607
|
+
.dm-helper-composer-mode-pill {
|
|
5608
|
+
display: inline-flex;
|
|
5609
|
+
align-items: center;
|
|
5610
|
+
gap: 4px;
|
|
5611
|
+
height: 22px;
|
|
5612
|
+
padding: 0 8px;
|
|
5613
|
+
border: 1px solid #e5e7eb;
|
|
5614
|
+
border-radius: 99px;
|
|
5615
|
+
background: #f9fafb;
|
|
5616
|
+
color: #4b5563;
|
|
5617
|
+
font-size: 11px;
|
|
5618
|
+
font-weight: 500;
|
|
5619
|
+
}
|
|
5620
|
+
|
|
5621
|
+
.dm-helper-composer-send {
|
|
5622
|
+
width: 26px;
|
|
5623
|
+
height: 26px;
|
|
5624
|
+
display: grid;
|
|
5625
|
+
place-items: center;
|
|
5626
|
+
border: 0;
|
|
5627
|
+
border-radius: 6px;
|
|
5628
|
+
background: #111827;
|
|
5629
|
+
color: #ffffff;
|
|
5630
|
+
cursor: pointer;
|
|
5631
|
+
transition: background .12s ease, opacity .12s ease;
|
|
5632
|
+
}
|
|
5633
|
+
.dm-helper-composer-send:hover:not(:disabled) { background: #000000; }
|
|
5634
|
+
.dm-helper-composer-send:focus-visible { outline: 2px solid #bfdbfe; outline-offset: 1px; }
|
|
5635
|
+
.dm-helper-composer-send:disabled {
|
|
5636
|
+
background: #d1d5db;
|
|
5637
|
+
color: #ffffff;
|
|
5638
|
+
cursor: not-allowed;
|
|
5639
|
+
}
|
|
5640
|
+
|
|
5641
|
+
.dm-helper-composer-hint {
|
|
5642
|
+
margin: 0;
|
|
5643
|
+
font-size: 11px;
|
|
5644
|
+
color: #6b7280;
|
|
5645
|
+
line-height: 1.45;
|
|
5646
|
+
}
|
|
5647
|
+
|
|
5648
|
+
/* data-helper-trigger button inside table header */
|
|
5649
|
+
.dm-detail-helper-trigger { display: flex; align-items: center; padding: 0 8px; }
|
|
5650
|
+
.dm-helper-row-btn { display: flex; align-items: center; gap: 5px; font-size: 12px !important; padding: 4px 10px !important; height: 28px !important; }
|
|
5651
|
+
.dm-page-empty-actions { display: flex; gap: 8px; align-items: center; justify-content: center; margin-top: 4px; }
|
|
5652
|
+
|
|
4294
5653
|
@media (max-width: 900px) {
|
|
4295
5654
|
.dm-layout-v2 { grid-template-columns: 1fr; }
|
|
4296
5655
|
.dm-obj-col { border-right: 0; border-bottom: 1px solid #e5e7eb; }
|
|
@@ -4314,7 +5673,7 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
|
|
|
4314
5673
|
.source-dropdown-item .source-dropdown-item-live { color: #555; }
|
|
4315
5674
|
.source-dropdown-integration-badge { display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px; font-size: 10px; font-weight: 700; background: #f1f5f9; border: 1px solid #e2e8f0; border-radius: 4px; color: #374151; flex-shrink: 0; margin-left: auto; cursor: default; }
|
|
4316
5675
|
.source-dropdown-empty { padding: 12px 8px 4px; font-size: 12px; color: #9ca3af; display: grid; gap: 4px; }
|
|
4317
|
-
.source-dropdown-hint { font-size: 11px; color: #
|
|
5676
|
+
.source-dropdown-hint { font-size: 11px; color: #9ca3af; }
|
|
4318
5677
|
.source-dropdown-footer { display: flex; align-items: center; gap: 4px; padding: 8px 8px 6px; border-top: 1px solid #f1f5f9; margin-top: 4px; font-size: 11px; color: #9ca3af; }
|
|
4319
5678
|
.source-dropdown-footer strong { color: #333; }
|
|
4320
5679
|
|
|
@@ -4324,7 +5683,7 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
|
|
|
4324
5683
|
.workspace-source-search-wrap:focus-within { border-color: #555; }
|
|
4325
5684
|
.workspace-source-object-list { display: grid; gap: 2px; }
|
|
4326
5685
|
.workspace-source-object-row { display: flex; align-items: center; gap: 10px; width: 100%; padding: 9px 10px; background: #fff; border: 1px solid #e5e7eb; border-radius: 7px; cursor: pointer; text-align: left; font: inherit; }
|
|
4327
|
-
.workspace-source-object-row:hover { background: #f9fafb; border-color: #
|
|
5686
|
+
.workspace-source-object-row:hover { background: #f9fafb; border-color: #bfdbfe; }
|
|
4328
5687
|
.workspace-source-object-row.active { background: #f0f0f0; border-color: #aaa; }
|
|
4329
5688
|
.workspace-source-object-icon { display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 6px; background: #f3f4f6; color: #374151; flex-shrink: 0; }
|
|
4330
5689
|
.workspace-source-object-row.active .workspace-source-object-icon { background: #e0e0e0; color: #222; }
|