@growthub/cli 0.13.7 → 0.13.9
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/codex-sites/route.js +13 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/api/workspace/helper/query/route.js +98 -34
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/api/workspace/swarm-condition/route.js +106 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/components/WorkspaceActivationPanel.jsx +17 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/components/WorkspaceContributionGraph.jsx +119 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/components/WorkspaceHelperSetupModal.jsx +357 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/components/WorkspaceLensPanel.jsx +488 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/components/WorkspaceLensWalkthrough.jsx +69 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/data-model/components/DataModelShell.jsx +105 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/data-model/components/HelperSidecar.jsx +37 -2
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/globals.css +382 -32
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/settings/apps/codex-sites-data-model-card.jsx +81 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/settings/apps/page.jsx +31 -14
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/settings/apps/settings-accordion-section.jsx +50 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/workspace-builder.jsx +192 -7
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/workspace-lens/page.jsx +76 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/workspace-rail.jsx +140 -4
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/codex-sites-local-state.js +139 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/codex-sites-workspace-adapter.js +156 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/workspace-activation.js +1025 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/workspace-data-model.js +2 -3
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/workspace-helper-apply.js +24 -8
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/kit.json +5 -0
- package/dist/index.js +5224 -5225
- package/package.json +1 -1
package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/globals.css
CHANGED
|
@@ -445,46 +445,53 @@ body.workspace-rail-collapsed .workspace-builder.dm-workflow-page {
|
|
|
445
445
|
.workspace-rail.is-collapsed {
|
|
446
446
|
padding: 18px 10px;
|
|
447
447
|
align-items: center;
|
|
448
|
-
gap:
|
|
448
|
+
gap: 8px;
|
|
449
449
|
}
|
|
450
|
+
/* Collapsed rail = a single clean icon column. Every primary action stays
|
|
451
|
+
tracked as an icon (toggle, home, search, chat, builder, lens, management,
|
|
452
|
+
settings); only labels, folders, chat list, brand, helper pill, activation
|
|
453
|
+
panel, and the duplicate top-bar gear are hidden. Native title attributes
|
|
454
|
+
provide the hover tooltip of each item's name. */
|
|
450
455
|
.workspace-rail.is-collapsed .workspace-rail-brand-button,
|
|
451
456
|
.workspace-rail.is-collapsed .workspace-rail-folders,
|
|
452
|
-
.workspace-rail.is-collapsed .workspace-nav,
|
|
453
457
|
.workspace-rail.is-collapsed .workspace-rail-chat,
|
|
454
458
|
.workspace-rail.is-collapsed .workspace-rail-status,
|
|
455
|
-
.workspace-rail.is-collapsed .workspace-rail-helper-pill
|
|
459
|
+
.workspace-rail.is-collapsed .workspace-rail-helper-pill,
|
|
460
|
+
.workspace-rail.is-collapsed .workspace-rail-activation-slot,
|
|
461
|
+
.workspace-rail.is-collapsed .workspace-rail-icon-btn[aria-label="Workspace settings"],
|
|
462
|
+
.workspace-rail.is-collapsed .workspace-nav-label {
|
|
456
463
|
display: none;
|
|
457
464
|
}
|
|
458
|
-
.workspace-rail.is-collapsed .workspace-rail-topbar
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
}
|
|
463
|
-
.workspace-rail.is-collapsed .workspace-rail-topbar-actions {
|
|
465
|
+
.workspace-rail.is-collapsed .workspace-rail-topbar,
|
|
466
|
+
.workspace-rail.is-collapsed .workspace-rail-topbar-actions,
|
|
467
|
+
.workspace-rail.is-collapsed .workspace-rail-tabbar,
|
|
468
|
+
.workspace-rail.is-collapsed .workspace-rail-tabs {
|
|
464
469
|
display: contents;
|
|
465
470
|
}
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
}
|
|
469
|
-
.workspace-rail.is-collapsed .workspace-rail-
|
|
470
|
-
|
|
471
|
-
}
|
|
472
|
-
.workspace-rail.is-collapsed .workspace-
|
|
473
|
-
order: 4;
|
|
474
|
-
}
|
|
471
|
+
/* Vertical order: toggle · home · search · chat · [nav: builder, lens,
|
|
472
|
+
management, settings]. */
|
|
473
|
+
.workspace-rail.is-collapsed .workspace-rail-icon-btn[aria-pressed="true"] { order: 1; }
|
|
474
|
+
.workspace-rail.is-collapsed .workspace-rail-tab[aria-label="Home"] { order: 2; }
|
|
475
|
+
.workspace-rail.is-collapsed .workspace-rail-icon-btn[data-rail-search] { order: 3; }
|
|
476
|
+
.workspace-rail.is-collapsed .workspace-rail-tab[aria-label="Helper conversations"] { order: 4; }
|
|
477
|
+
.workspace-rail.is-collapsed .workspace-nav { order: 5; }
|
|
475
478
|
.workspace-rail.is-collapsed .workspace-rail-icon-btn[aria-pressed="true"] svg {
|
|
476
479
|
transform: rotate(180deg);
|
|
477
480
|
}
|
|
478
|
-
.workspace-rail.is-collapsed .workspace-
|
|
481
|
+
.workspace-rail.is-collapsed .workspace-nav {
|
|
479
482
|
display: flex;
|
|
480
|
-
justify-content: center;
|
|
481
|
-
width: 100%;
|
|
482
|
-
order: 2;
|
|
483
|
-
}
|
|
484
|
-
.workspace-rail.is-collapsed .workspace-rail-tabs {
|
|
485
483
|
flex-direction: column;
|
|
484
|
+
align-items: center;
|
|
486
485
|
gap: 8px;
|
|
486
|
+
width: 100%;
|
|
487
|
+
}
|
|
488
|
+
.workspace-rail.is-collapsed .workspace-nav a,
|
|
489
|
+
.workspace-rail.is-collapsed .workspace-nav .workspace-nav-button {
|
|
490
|
+
justify-content: center;
|
|
491
|
+
gap: 0;
|
|
487
492
|
padding: 0;
|
|
493
|
+
width: 34px;
|
|
494
|
+
height: 34px;
|
|
488
495
|
}
|
|
489
496
|
.workspace-rail.is-collapsed .workspace-rail-tab,
|
|
490
497
|
.workspace-rail.is-collapsed .workspace-rail-icon-btn {
|
|
@@ -525,12 +532,31 @@ body.workspace-rail-collapsed .workspace-builder.dm-workflow-page {
|
|
|
525
532
|
margin-top: 2px;
|
|
526
533
|
}
|
|
527
534
|
.workspace-nav a,
|
|
528
|
-
.workspace-nav-static
|
|
535
|
+
.workspace-nav-static,
|
|
536
|
+
.workspace-nav .workspace-nav-button {
|
|
537
|
+
display: flex;
|
|
538
|
+
align-items: center;
|
|
539
|
+
gap: 10px;
|
|
529
540
|
border-radius: 6px;
|
|
530
541
|
color: #686868;
|
|
531
542
|
font-size: 13px;
|
|
532
543
|
padding: 8px 9px;
|
|
533
544
|
text-decoration: none;
|
|
545
|
+
width: 100%;
|
|
546
|
+
}
|
|
547
|
+
.workspace-nav a > svg,
|
|
548
|
+
.workspace-nav .workspace-nav-button > svg {
|
|
549
|
+
flex-shrink: 0;
|
|
550
|
+
color: #9a9a9a;
|
|
551
|
+
}
|
|
552
|
+
.workspace-nav a.active > svg,
|
|
553
|
+
.workspace-nav .workspace-nav-button.active > svg {
|
|
554
|
+
color: #2c2c2c;
|
|
555
|
+
}
|
|
556
|
+
.workspace-nav-label {
|
|
557
|
+
white-space: nowrap;
|
|
558
|
+
overflow: hidden;
|
|
559
|
+
text-overflow: ellipsis;
|
|
534
560
|
}
|
|
535
561
|
.workspace-nav-static {
|
|
536
562
|
cursor: default;
|
|
@@ -831,7 +857,8 @@ body.workspace-rail-collapsed .workspace-builder.dm-workflow-page {
|
|
|
831
857
|
.workspace-dashboard-title {
|
|
832
858
|
min-width: 0;
|
|
833
859
|
}
|
|
834
|
-
.workspace-dashboard-title button
|
|
860
|
+
.workspace-dashboard-title button,
|
|
861
|
+
.workspace-dashboard-title a {
|
|
835
862
|
min-width: 0;
|
|
836
863
|
display: inline-flex;
|
|
837
864
|
align-items: center;
|
|
@@ -844,6 +871,7 @@ body.workspace-rail-collapsed .workspace-builder.dm-workflow-page {
|
|
|
844
871
|
overflow: hidden;
|
|
845
872
|
padding: 0;
|
|
846
873
|
text-align: left;
|
|
874
|
+
text-decoration: none;
|
|
847
875
|
text-overflow: ellipsis;
|
|
848
876
|
white-space: nowrap;
|
|
849
877
|
}
|
|
@@ -927,17 +955,24 @@ body.workspace-rail-collapsed .workspace-builder.dm-workflow-page {
|
|
|
927
955
|
background: #ffffff;
|
|
928
956
|
box-shadow: 0 12px 30px rgba(15, 23, 42, .16);
|
|
929
957
|
}
|
|
930
|
-
.workspace-row-action-menu button
|
|
958
|
+
.workspace-row-action-menu button,
|
|
959
|
+
.workspace-row-action-menu a {
|
|
931
960
|
width: 100%;
|
|
932
961
|
min-height: 30px;
|
|
962
|
+
display: inline-flex;
|
|
963
|
+
align-items: center;
|
|
933
964
|
justify-content: flex-start;
|
|
934
965
|
border: 0;
|
|
935
966
|
border-radius: 6px;
|
|
936
967
|
background: transparent;
|
|
937
968
|
color: #344054;
|
|
969
|
+
font: inherit;
|
|
970
|
+
font-size: 12px;
|
|
938
971
|
padding: 0 9px;
|
|
972
|
+
text-decoration: none;
|
|
939
973
|
}
|
|
940
|
-
.workspace-row-action-menu button:hover
|
|
974
|
+
.workspace-row-action-menu button:hover,
|
|
975
|
+
.workspace-row-action-menu a:hover {
|
|
941
976
|
background: #f5f5f5;
|
|
942
977
|
border-color: transparent;
|
|
943
978
|
}
|
|
@@ -3053,6 +3088,55 @@ body.workspace-rail-collapsed .workspace-builder.dm-workflow-page {
|
|
|
3053
3088
|
border-top: 1px solid #eeeeec;
|
|
3054
3089
|
padding: 20px 0;
|
|
3055
3090
|
}
|
|
3091
|
+
.workspace-settings-accordion {
|
|
3092
|
+
gap: 12px;
|
|
3093
|
+
}
|
|
3094
|
+
.workspace-settings-accordion-trigger {
|
|
3095
|
+
width: 100%;
|
|
3096
|
+
min-height: 34px;
|
|
3097
|
+
display: flex;
|
|
3098
|
+
align-items: center;
|
|
3099
|
+
justify-content: space-between;
|
|
3100
|
+
gap: 14px;
|
|
3101
|
+
border: 0;
|
|
3102
|
+
background: transparent;
|
|
3103
|
+
color: inherit;
|
|
3104
|
+
cursor: pointer;
|
|
3105
|
+
font: inherit;
|
|
3106
|
+
padding: 0;
|
|
3107
|
+
text-align: left;
|
|
3108
|
+
}
|
|
3109
|
+
.workspace-settings-accordion-trigger > span {
|
|
3110
|
+
min-width: 0;
|
|
3111
|
+
display: grid;
|
|
3112
|
+
gap: 3px;
|
|
3113
|
+
}
|
|
3114
|
+
.workspace-settings-accordion-trigger h3 {
|
|
3115
|
+
margin: 0;
|
|
3116
|
+
}
|
|
3117
|
+
.workspace-settings-accordion-trigger em {
|
|
3118
|
+
min-width: 0;
|
|
3119
|
+
display: block;
|
|
3120
|
+
color: #888;
|
|
3121
|
+
font-size: 12px;
|
|
3122
|
+
font-style: normal;
|
|
3123
|
+
overflow: hidden;
|
|
3124
|
+
text-overflow: ellipsis;
|
|
3125
|
+
white-space: nowrap;
|
|
3126
|
+
}
|
|
3127
|
+
.workspace-settings-accordion-trigger svg {
|
|
3128
|
+
flex: 0 0 auto;
|
|
3129
|
+
color: #777;
|
|
3130
|
+
transition: transform .16s ease;
|
|
3131
|
+
}
|
|
3132
|
+
.workspace-settings-accordion.is-open .workspace-settings-accordion-trigger svg {
|
|
3133
|
+
transform: rotate(180deg);
|
|
3134
|
+
}
|
|
3135
|
+
.workspace-settings-accordion-body {
|
|
3136
|
+
min-height: 0;
|
|
3137
|
+
display: grid;
|
|
3138
|
+
gap: 12px;
|
|
3139
|
+
}
|
|
3056
3140
|
.workspace-apps-linkage-section {
|
|
3057
3141
|
flex: 0 0 auto;
|
|
3058
3142
|
padding-bottom: 16px;
|
|
@@ -3063,6 +3147,9 @@ body.workspace-rail-collapsed .workspace-builder.dm-workflow-page {
|
|
|
3063
3147
|
grid-template-rows: auto minmax(0, 1fr);
|
|
3064
3148
|
padding-bottom: 0;
|
|
3065
3149
|
}
|
|
3150
|
+
.workspace-apps-list-section .workspace-settings-accordion-body {
|
|
3151
|
+
min-height: 0;
|
|
3152
|
+
}
|
|
3066
3153
|
.workspace-settings-section:first-of-type {
|
|
3067
3154
|
border-top: 0;
|
|
3068
3155
|
padding-top: 0;
|
|
@@ -3551,6 +3638,52 @@ body.workspace-rail-collapsed .workspace-builder.dm-workflow-page {
|
|
|
3551
3638
|
font-size: 12px;
|
|
3552
3639
|
line-height: 1.4;
|
|
3553
3640
|
}
|
|
3641
|
+
.workspace-settings-action {
|
|
3642
|
+
min-height: 32px;
|
|
3643
|
+
display: inline-flex;
|
|
3644
|
+
align-items: center;
|
|
3645
|
+
gap: 6px;
|
|
3646
|
+
border: 1px solid #dedede;
|
|
3647
|
+
border-radius: 6px;
|
|
3648
|
+
background: #fff;
|
|
3649
|
+
color: #333;
|
|
3650
|
+
font: inherit;
|
|
3651
|
+
font-size: 12px;
|
|
3652
|
+
padding: 0 10px;
|
|
3653
|
+
}
|
|
3654
|
+
.workspace-settings-codex-sites-list {
|
|
3655
|
+
display: grid;
|
|
3656
|
+
gap: 6px;
|
|
3657
|
+
padding: 0 14px 0;
|
|
3658
|
+
}
|
|
3659
|
+
.workspace-settings-codex-sites-list a,
|
|
3660
|
+
.workspace-settings-codex-sites-list button {
|
|
3661
|
+
min-height: 34px;
|
|
3662
|
+
display: grid;
|
|
3663
|
+
grid-template-columns: minmax(0, 1fr) minmax(0, .8fr) auto;
|
|
3664
|
+
gap: 10px;
|
|
3665
|
+
align-items: center;
|
|
3666
|
+
border: 1px solid #ececea;
|
|
3667
|
+
border-radius: 6px;
|
|
3668
|
+
background: #fff;
|
|
3669
|
+
color: #333;
|
|
3670
|
+
font: inherit;
|
|
3671
|
+
font-size: 12px;
|
|
3672
|
+
text-align: left;
|
|
3673
|
+
text-decoration: none;
|
|
3674
|
+
padding: 0 10px;
|
|
3675
|
+
}
|
|
3676
|
+
.workspace-settings-codex-sites-list span,
|
|
3677
|
+
.workspace-settings-codex-sites-list em {
|
|
3678
|
+
min-width: 0;
|
|
3679
|
+
overflow: hidden;
|
|
3680
|
+
text-overflow: ellipsis;
|
|
3681
|
+
white-space: nowrap;
|
|
3682
|
+
}
|
|
3683
|
+
.workspace-settings-codex-sites-list em {
|
|
3684
|
+
color: #777;
|
|
3685
|
+
font-style: normal;
|
|
3686
|
+
}
|
|
3554
3687
|
|
|
3555
3688
|
/* Source picker */
|
|
3556
3689
|
.workspace-source-list {
|
|
@@ -4613,7 +4746,7 @@ body.workspace-rail-collapsed .workspace-builder.dm-workflow-page {
|
|
|
4613
4746
|
.dm-detail-v2-title h2 { margin: 0; font-size: 15px; font-weight: 600; color: #111827; flex: 1; }
|
|
4614
4747
|
.dm-detail-v2-meta { display: flex; align-items: center; gap: 10px; padding-left: 21px; font-size: 12px; color: #9ca3af; }
|
|
4615
4748
|
.dm-detail-v2-meta code { font-size: 11px; color: #6b7280; background: #f3f4f6; border-radius: 4px; padding: 2px 6px; }
|
|
4616
|
-
.dm-detail-v3 { border: 1px solid #e5e7eb; border-radius: 12px; background: #fff; overflow:
|
|
4749
|
+
.dm-detail-v3 { border: 1px solid #e5e7eb; border-radius: 12px; background: #fff; overflow: visible; }
|
|
4617
4750
|
.dm-picker { position: relative; min-width: 280px; }
|
|
4618
4751
|
.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; }
|
|
4619
4752
|
.dm-picker.open .dm-picker-trigger { border-color: #94a3b8; box-shadow: 0 0 0 4px rgba(148,163,184,.14); }
|
|
@@ -4654,6 +4787,7 @@ body.workspace-rail-collapsed .workspace-builder.dm-workflow-page {
|
|
|
4654
4787
|
.workspace-toolbar-actions .dm-picker-popover {
|
|
4655
4788
|
left: auto;
|
|
4656
4789
|
right: 0;
|
|
4790
|
+
z-index: 220;
|
|
4657
4791
|
}
|
|
4658
4792
|
|
|
4659
4793
|
/* Active-object title block in the workspace toolbar — replaces the
|
|
@@ -4703,13 +4837,13 @@ body.workspace-rail-collapsed .workspace-builder.dm-workflow-page {
|
|
|
4703
4837
|
font-weight: 400;
|
|
4704
4838
|
color: #6b7280;
|
|
4705
4839
|
}
|
|
4706
|
-
.dm-picker-popover { position: absolute; top: calc(100% + 8px); left: 0; z-index:
|
|
4840
|
+
.dm-picker-popover { position: absolute; top: calc(100% + 8px); left: 0; z-index: 220; width: min(360px, calc(100vw - 32px)); max-height: min(520px, calc(100vh - 120px)); 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-y: auto; overflow-x: visible; }
|
|
4707
4841
|
.dm-picker-tabs { display: inline-flex; gap: 6px; padding: 4px; border-radius: 999px; background: #f8fafc; }
|
|
4708
4842
|
.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; }
|
|
4709
4843
|
.dm-picker-tabs button.active { background: #fff; color: #111827; box-shadow: 0 1px 2px rgba(15,23,42,.08); }
|
|
4710
4844
|
.dm-picker-section { display: grid; gap: 8px; }
|
|
4711
4845
|
.dm-picker-section > p { margin: 0; font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .06em; }
|
|
4712
|
-
.dm-picker-scroll { display: grid; gap: 4px; max-height:
|
|
4846
|
+
.dm-picker-scroll { display: grid; gap: 4px; max-height: none; overflow: visible; padding-right: 10px; scrollbar-gutter: stable; }
|
|
4713
4847
|
.dm-picker-item { position: relative; display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 8px; align-items: center; }
|
|
4714
4848
|
.dm-picker-row { width: 100%; display: inline-flex; align-items: center; gap: 8px; min-width: 0; min-height: 34px; border: 0; border-radius: 9px; background: transparent; color: #334155; font: inherit; font-size: 12px; font-weight: 500; padding: 0 10px; cursor: pointer; text-align: left; }
|
|
4715
4849
|
.dm-picker-row:hover, .dm-picker-item.active .dm-picker-row { background: #f1f5f9; color: #111827; }
|
|
@@ -4720,7 +4854,7 @@ body.workspace-rail-collapsed .workspace-builder.dm-workflow-page {
|
|
|
4720
4854
|
.dm-picker-icon-btn:hover { color: #111827; border-color: #cbd5e1; }
|
|
4721
4855
|
.dm-picker-icon-btn.danger:hover { color: #b91c1c; border-color: #fecaca; background: #fef2f2; }
|
|
4722
4856
|
.dm-picker-lock { margin-left: auto; color: #94a3b8; }
|
|
4723
|
-
.dm-picker-menu { position: absolute; top: calc(100% + 6px); right: 0; z-index:
|
|
4857
|
+
.dm-picker-menu { position: absolute; top: calc(100% + 6px); right: 0; z-index: 240; display: grid; gap: 4px; min-width: 156px; padding: 8px; border: 1px solid #dbe2ea; border-radius: 10px; background: #fff; box-shadow: 0 20px 44px rgba(15,23,42,.2), 0 4px 12px rgba(15,23,42,.08); }
|
|
4724
4858
|
.dm-picker-menu button { display: inline-flex; align-items: center; gap: 8px; height: 30px; border: 0; border-radius: 7px; background: transparent; color: #334155; font: inherit; font-size: 12px; padding: 0 10px; cursor: pointer; text-align: left; }
|
|
4725
4859
|
.dm-picker-menu button:hover { background: #f1f5f9; color: #111827; }
|
|
4726
4860
|
.dm-picker-menu button.danger:hover { background: #fef2f2; color: #b91c1c; }
|
|
@@ -8656,6 +8790,222 @@ body.workspace-rail-collapsed .workspace-builder.dm-workflow-page {
|
|
|
8656
8790
|
.workspace-activation-helper-btn { display: inline-flex; align-items: center; gap: 6px; background: transparent; border: 1px dashed #c7d2fe; color: #4338ca; font-size: 12px; padding: 6px 10px; border-radius: 6px; cursor: pointer; }
|
|
8657
8791
|
.workspace-activation-helper-btn:hover { background: #eef2ff; }
|
|
8658
8792
|
|
|
8793
|
+
/* Activation → Workspace Lens handoff teaser (shown once setup completes). */
|
|
8794
|
+
.workspace-activation-lens-teaser { margin-top: 14px; border-top: 1px solid #eef0f2; padding-top: 12px; display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
|
|
8795
|
+
.workspace-activation-lens-teaser-text { font-size: 12px; color: #4b5563; line-height: 1.45; }
|
|
8796
|
+
.workspace-activation-lens-teaser-link { font-size: 12px; font-weight: 600; color: #374151; text-decoration: none; white-space: nowrap; }
|
|
8797
|
+
.workspace-activation-lens-teaser-link:hover { text-decoration: underline; }
|
|
8798
|
+
|
|
8799
|
+
/* Locked rail nav affordance (Workspace Lens before setup completes). */
|
|
8800
|
+
.workspace-nav-button.is-locked { opacity: 0.45; cursor: default; }
|
|
8801
|
+
|
|
8802
|
+
/* ── Workspace Lens — post-activation operating surface ─────────────────────
|
|
8803
|
+
Neutral, calm, aggregate-first. No semantic color overload, no icon spam. */
|
|
8804
|
+
body.workspace-rail-collapsed .workspace-builder.workspace-lens-page,
|
|
8805
|
+
.workspace-builder.workspace-lens-page { grid-template-columns: var(--workspace-rail-width) minmax(0, 1fr); height: 100vh; overflow: hidden; }
|
|
8806
|
+
.workspace-lens-surface { width: 100%; padding: 0; background: #f7f7f8; overflow-y: auto; overflow-x: hidden; }
|
|
8807
|
+
.workspace-lens-shell { width: 100%; max-width: none; margin: 0; padding: 24px 28px 32px; }
|
|
8808
|
+
.workspace-lens-locked { border: 1px solid #e5e7eb; border-radius: 10px; background: #fff; padding: 28px; max-width: 560px; margin: 48px auto; display: flex; flex-direction: column; gap: 8px; }
|
|
8809
|
+
.workspace-lens-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 16px; }
|
|
8810
|
+
.workspace-lens-title { font-size: 18px; font-weight: 600; color: #111827; margin: 0; }
|
|
8811
|
+
.workspace-lens-subtitle { font-size: 13px; color: #6b7280; margin: 4px 0 0; }
|
|
8812
|
+
.workspace-lens-score { font-size: 12px; color: #4b5563; font-variant-numeric: tabular-nums; margin: 2px 0 0; }
|
|
8813
|
+
.workspace-lens-controls.workspace-builder-filterbar { margin: 0 0 14px; border: 1px solid #e8edf3; border-radius: 8px; background: #fff; }
|
|
8814
|
+
.workspace-lens-filters.workspace-builder-filterbar__segments { max-width: 100%; overflow-x: auto; }
|
|
8815
|
+
.workspace-lens-filter { white-space: nowrap; }
|
|
8816
|
+
.workspace-lens-filter.is-active { background: #fff; color: #111827; box-shadow: 0 1px 2px rgba(15, 23, 42, .08); }
|
|
8817
|
+
.workspace-lens-search-wrap { flex-shrink: 0; }
|
|
8818
|
+
.workspace-lens-search { width: 100%; min-width: 0; border: 0; outline: 0; background: transparent; color: #111827; font: inherit; font-size: 12px; padding: 0; }
|
|
8819
|
+
.workspace-lens-control-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin: 0 0 22px; }
|
|
8820
|
+
.workspace-lens-control-card { border: 1px solid #e5e7eb; border-radius: 8px; background: #ffffff; min-height: 184px; padding: 14px; box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04); display: flex; flex-direction: column; gap: 12px; }
|
|
8821
|
+
.workspace-lens-control-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
|
|
8822
|
+
.workspace-lens-control-card-head h2 { margin: 0; color: #111827; font-size: 13px; font-weight: 600; line-height: 1.3; }
|
|
8823
|
+
.workspace-lens-control-card-head span { color: #6b7280; font-size: 12px; }
|
|
8824
|
+
.workspace-lens-icon-btn { width: 28px; height: 28px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid transparent; border-radius: 6px; background: transparent; color: #6b7280; cursor: pointer; }
|
|
8825
|
+
.workspace-lens-icon-btn:hover { border-color: #e5e7eb; background: #f9fafb; color: #111827; }
|
|
8826
|
+
.workspace-lens-checklist { display: flex; flex-direction: column; gap: 6px; }
|
|
8827
|
+
.workspace-lens-check-item { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 32px; border-radius: 6px; background: #f3f4f6; color: #374151; padding: 0 10px; text-decoration: none; font-size: 12px; }
|
|
8828
|
+
.workspace-lens-check-item:hover { background: #e5e7eb; }
|
|
8829
|
+
.workspace-lens-check-item.is-complete { background: #dcfce7; color: #15803d; text-decoration: line-through; box-shadow: inset 3px 0 0 #22c55e; }
|
|
8830
|
+
.workspace-lens-check-item.is-complete svg { color: #16a34a; }
|
|
8831
|
+
.workspace-lens-stat-list { display: flex; flex-direction: column; gap: 0; margin-top: 14px; }
|
|
8832
|
+
.workspace-lens-stat-row { display: grid; grid-template-columns: minmax(0, 1fr) 64px; align-items: center; gap: 12px; min-height: 31px; border-bottom: 1px solid #eef0f2; color: #6b7280; font-size: 12px; }
|
|
8833
|
+
.workspace-lens-stat-row:last-child { border-bottom: 0; }
|
|
8834
|
+
.workspace-lens-stat-row strong { color: #111827; font-size: 13px; font-weight: 500; text-align: left; font-variant-numeric: tabular-nums; }
|
|
8835
|
+
.workspace-lens-helper-card-body { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; text-align: center; color: #4b5563; }
|
|
8836
|
+
.workspace-lens-helper-card-body svg { color: #111827; }
|
|
8837
|
+
.workspace-lens-helper-card-body strong { color: #111827; font-size: 13px; }
|
|
8838
|
+
.workspace-lens-helper-card-body p { margin: 0; color: #6b7280; font-size: 12px; line-height: 1.45; max-width: 260px; }
|
|
8839
|
+
.workspace-lens-helper-card-body button { margin-top: 4px; border: 1px solid #d1d5db; border-radius: 6px; background: #fff; color: #111827; font-size: 12px; font-weight: 500; padding: 7px 12px; cursor: pointer; }
|
|
8840
|
+
.workspace-lens-helper-card-body button:hover { background: #f9fafb; }
|
|
8841
|
+
.workspace-lens-branches { margin: 24px 0 32px; }
|
|
8842
|
+
.workspace-lens-branches-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 0 0 12px; }
|
|
8843
|
+
.workspace-lens-branches-head h2 { margin: 0; color: #111827; font-size: 18px; font-weight: 600; }
|
|
8844
|
+
.workspace-lens-branches-head span { display: inline-flex; align-items: center; justify-content: center; border-radius: 999px; background: #e5e7eb; color: #374151; padding: 2px 8px; font-size: 11px; font-weight: 600; }
|
|
8845
|
+
.workspace-lens-branches-table { border: 1px solid #e5e7eb; border-radius: 8px; background: #ffffff; overflow: visible; box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04); }
|
|
8846
|
+
.workspace-lens-branch-row { position: relative; display: grid; grid-template-columns: minmax(240px, 1fr) auto; align-items: center; gap: 16px; min-height: 46px; border-bottom: 1px solid #eef0f2; padding: 0 16px; }
|
|
8847
|
+
.workspace-lens-branch-row:last-child { border-bottom: 0; }
|
|
8848
|
+
.workspace-lens-branch-name { display: inline-flex; align-items: center; gap: 8px; min-width: 0; color: #111827; font-size: 13px; font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace); }
|
|
8849
|
+
.workspace-lens-branch-name span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
8850
|
+
.workspace-lens-branch-name svg { color: #4b5563; flex-shrink: 0; }
|
|
8851
|
+
.workspace-lens-branch-actions { position: relative; display: inline-flex; align-items: center; justify-content: flex-end; gap: 8px; min-width: 0; }
|
|
8852
|
+
.workspace-lens-preview-pill,
|
|
8853
|
+
.workspace-lens-progress-pill,
|
|
8854
|
+
.workspace-lens-owner-pill { display: inline-flex; align-items: center; gap: 5px; min-height: 24px; border: 1px solid #e5e7eb; border-radius: 999px; background: #ffffff; color: #4b5563; padding: 0 9px; text-decoration: none; font-size: 11px; white-space: nowrap; }
|
|
8855
|
+
.workspace-lens-preview-pill:hover { background: #f9fafb; color: #111827; }
|
|
8856
|
+
.workspace-lens-owner-pill { border-color: transparent; color: #4b5563; }
|
|
8857
|
+
.workspace-lens-branch-summary,
|
|
8858
|
+
.workspace-lens-branch-next { display: none; grid-column: 1 / -1; margin: -6px 0 10px 22px; color: #6b7280; font-size: 12px; line-height: 1.4; }
|
|
8859
|
+
.workspace-lens-branch-next { margin-top: -8px; color: #374151; font-weight: 500; }
|
|
8860
|
+
.workspace-lens-action-menu { position: absolute; z-index: 80; top: 34px; right: 0; width: 190px; border: 1px solid #e5e7eb; border-radius: 8px; background: #ffffff; box-shadow: 0 12px 28px rgba(15, 23, 42, 0.16); padding: 6px; display: flex; flex-direction: column; gap: 2px; }
|
|
8861
|
+
.workspace-lens-action-menu button,
|
|
8862
|
+
.workspace-lens-action-menu a { display: flex; align-items: center; justify-content: space-between; gap: 8px; width: 100%; border: 0; border-radius: 6px; background: transparent; color: #111827; padding: 9px 8px; text-align: left; text-decoration: none; font-size: 12px; cursor: pointer; }
|
|
8863
|
+
.workspace-lens-action-menu button:hover,
|
|
8864
|
+
.workspace-lens-action-menu a:hover { background: #f3f4f6; }
|
|
8865
|
+
@media (max-width: 1100px) {
|
|
8866
|
+
.workspace-lens-control-grid { grid-template-columns: 1fr; }
|
|
8867
|
+
.workspace-lens-branch-row { grid-template-columns: 1fr; align-items: flex-start; padding: 10px 12px; gap: 8px; }
|
|
8868
|
+
.workspace-lens-branch-actions { justify-content: flex-start; flex-wrap: wrap; }
|
|
8869
|
+
.workspace-lens-branch-summary,
|
|
8870
|
+
.workspace-lens-branch-next { margin-left: 22px; }
|
|
8871
|
+
}
|
|
8872
|
+
.workspace-lens-stream { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
|
|
8873
|
+
.workspace-lens-card { border: 1px solid #e8edf3; border-radius: 10px; background: #fff; padding: 12px 14px; }
|
|
8874
|
+
.workspace-lens-card.is-ready { opacity: 0.7; }
|
|
8875
|
+
.workspace-lens-card-head { display: flex; align-items: center; gap: 10px; width: 100%; background: none; border: none; padding: 0; cursor: pointer; text-align: left; }
|
|
8876
|
+
.workspace-lens-card-title { font-size: 13px; font-weight: 600; color: #111827; flex: 1; }
|
|
8877
|
+
.workspace-lens-chip { font-size: 10px; text-transform: uppercase; letter-spacing: 0.04em; color: #6b7280; border: 1px solid #e5e7eb; border-radius: 999px; padding: 1px 8px; }
|
|
8878
|
+
.workspace-lens-chip.is-blocked { color: #374151; border-color: #d1d5db; background: #f3f4f6; }
|
|
8879
|
+
.workspace-lens-card-progress { font-size: 11px; color: #6b7280; font-variant-numeric: tabular-nums; }
|
|
8880
|
+
.workspace-lens-caret { color: #9ca3af; transition: transform 120ms ease; }
|
|
8881
|
+
.workspace-lens-caret.is-open { transform: rotate(180deg); }
|
|
8882
|
+
.workspace-lens-card-headline { font-size: 12px; color: #4b5563; line-height: 1.45; margin: 8px 0 0; }
|
|
8883
|
+
.workspace-lens-card-next { display: flex; align-items: baseline; gap: 6px; margin-top: 8px; font-size: 12px; }
|
|
8884
|
+
.workspace-lens-next-label { color: #9ca3af; }
|
|
8885
|
+
.workspace-lens-next-link { color: #374151; font-weight: 600; text-decoration: none; }
|
|
8886
|
+
.workspace-lens-next-link:hover { text-decoration: underline; }
|
|
8887
|
+
.workspace-lens-card-detail { margin-top: 12px; border-top: 1px solid #f1f5f9; padding-top: 10px; display: flex; flex-direction: column; gap: 10px; }
|
|
8888
|
+
.workspace-lens-steps { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
|
|
8889
|
+
.workspace-lens-step { display: flex; align-items: baseline; gap: 8px; font-size: 12px; color: #4b5563; }
|
|
8890
|
+
.workspace-lens-step-label { flex: 1; }
|
|
8891
|
+
.workspace-lens-step-status { font-size: 10px; text-transform: uppercase; letter-spacing: 0.04em; color: #9ca3af; }
|
|
8892
|
+
.workspace-lens-step.is-blocked .workspace-lens-step-status { color: #6b7280; font-weight: 600; }
|
|
8893
|
+
.workspace-lens-step-hint { flex-basis: 100%; font-size: 11px; color: #9ca3af; }
|
|
8894
|
+
.workspace-lens-blocked { font-size: 12px; color: #374151; margin: 0; }
|
|
8895
|
+
.workspace-lens-agent { border: 1px solid #f1f5f9; border-radius: 8px; background: #fafbfc; padding: 10px; }
|
|
8896
|
+
.workspace-lens-agent-title { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; color: #6b7280; margin: 0 0 6px; }
|
|
8897
|
+
.workspace-lens-agent-row { display: flex; gap: 8px; font-size: 12px; color: #4b5563; margin: 2px 0; }
|
|
8898
|
+
.workspace-lens-agent-row > span { color: #9ca3af; min-width: 84px; }
|
|
8899
|
+
.workspace-lens-empty { font-size: 12px; color: #9ca3af; padding: 16px; text-align: center; }
|
|
8900
|
+
|
|
8901
|
+
/* Workspace contribution graph — neutral chrome, GitHub green cell scale. */
|
|
8902
|
+
.workspace-contrib { border: 1px solid #e8edf3; border-radius: 10px; background: #fff; padding: 14px 16px; margin-bottom: 16px; }
|
|
8903
|
+
.workspace-contrib-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 10px; flex-wrap: wrap; }
|
|
8904
|
+
.workspace-contrib-total { font-size: 12px; color: #4b5563; }
|
|
8905
|
+
.workspace-contrib-legend { display: inline-flex; align-items: center; gap: 3px; font-size: 11px; color: #9ca3af; }
|
|
8906
|
+
.workspace-contrib-grid-wrap { width: 100%; overflow: visible; }
|
|
8907
|
+
.workspace-contrib-months { display: grid; grid-template-columns: repeat(53, minmax(0, 1fr)); gap: 3px; margin-left: 38px; margin-bottom: 4px; }
|
|
8908
|
+
.workspace-contrib-month { font-size: 9px; color: #9ca3af; white-space: nowrap; }
|
|
8909
|
+
.workspace-contrib-body { display: grid; grid-template-columns: 30px minmax(0, 1fr); gap: 8px; align-items: stretch; }
|
|
8910
|
+
.workspace-contrib-weekdays { display: grid; grid-template-rows: repeat(7, minmax(0, 1fr)); gap: 3px; width: 30px; }
|
|
8911
|
+
.workspace-contrib-weekdays span { font-size: 9px; color: #9ca3af; line-height: 1; display: flex; align-items: center; }
|
|
8912
|
+
.workspace-contrib-weeks { display: grid; grid-template-columns: repeat(53, minmax(0, 1fr)); gap: 3px; min-width: 0; }
|
|
8913
|
+
.workspace-contrib-week { display: grid; grid-template-rows: repeat(7, minmax(0, 1fr)); gap: 3px; min-width: 0; }
|
|
8914
|
+
.workspace-contrib-cell { width: 100%; aspect-ratio: 1; min-height: 10px; max-height: 18px; border-radius: 3px; padding: 0; border: 1px solid rgba(27, 31, 35, 0.06); background: #ebedf0; cursor: pointer; }
|
|
8915
|
+
.workspace-contrib-cell:disabled { cursor: default; }
|
|
8916
|
+
.workspace-contrib-cell.lvl-0 { background: #ebedf0; }
|
|
8917
|
+
.workspace-contrib-cell.lvl-1 { background: #9be9a8; }
|
|
8918
|
+
.workspace-contrib-cell.lvl-2 { background: #40c463; }
|
|
8919
|
+
.workspace-contrib-cell.lvl-3 { background: #30a14e; }
|
|
8920
|
+
.workspace-contrib-cell.lvl-4 { background: #216e39; }
|
|
8921
|
+
.workspace-contrib-cell.has-count { border-color: rgba(27, 31, 35, 0.18); box-shadow: inset 0 0 0 1px rgba(255,255,255,0.18), 0 0 0 1px rgba(34,197,94,0.18); }
|
|
8922
|
+
.workspace-contrib-cell.has-count:hover { outline: 2px solid rgba(17, 24, 39, 0.75); outline-offset: 1px; }
|
|
8923
|
+
.workspace-contrib-cell.lvl-future { background: transparent; border-color: transparent; }
|
|
8924
|
+
.workspace-contrib-legend .workspace-contrib-cell { cursor: default; }
|
|
8925
|
+
.workspace-contrib-tooltip { position: fixed; transform: translate(-50%, calc(-100% - 8px)); z-index: 50; background: #111827; color: #fff; border-radius: 6px; padding: 6px 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.18); display: flex; flex-direction: column; gap: 2px; pointer-events: auto; }
|
|
8926
|
+
.workspace-contrib-tooltip-count { font-size: 11px; font-weight: 600; }
|
|
8927
|
+
.workspace-contrib-tooltip-date { font-size: 10px; color: #cbd5e1; }
|
|
8928
|
+
.workspace-contrib-tooltip-link { font-size: 10px; color: #9be9a8; text-decoration: none; margin-top: 2px; }
|
|
8929
|
+
.workspace-contrib-tooltip-link:hover { text-decoration: underline; }
|
|
8930
|
+
|
|
8931
|
+
/* Workspace Lens one-time walkthrough — calm white popover. */
|
|
8932
|
+
.workspace-rail-lens-nav { position: relative; }
|
|
8933
|
+
.workspace-lens-walkthrough { position: relative; width: 264px; background: #ffffff; border: 1px solid #d1d5db; border-radius: 5px; box-shadow: 0 6px 18px rgba(17, 24, 39, 0.12); padding: 12px 13px; }
|
|
8934
|
+
.workspace-lens-walkthrough.is-anchored,
|
|
8935
|
+
.workspace-lens-walkthrough.is-rail-reveal { position: fixed; z-index: 1200; }
|
|
8936
|
+
.workspace-lens-walkthrough.is-anchored::before,
|
|
8937
|
+
.workspace-lens-walkthrough.is-rail-reveal::before { content: ""; position: absolute; left: -6px; top: 16px; width: 10px; height: 10px; background: #ffffff; border-left: 1px solid #d1d5db; border-bottom: 1px solid #d1d5db; transform: rotate(45deg); }
|
|
8938
|
+
@media (max-width: 760px) {
|
|
8939
|
+
.workspace-lens-walkthrough.is-anchored,
|
|
8940
|
+
.workspace-lens-walkthrough.is-rail-reveal { right: 16px; width: auto; }
|
|
8941
|
+
.workspace-lens-walkthrough.is-anchored::before,
|
|
8942
|
+
.workspace-lens-walkthrough.is-rail-reveal::before { display: none; }
|
|
8943
|
+
}
|
|
8944
|
+
.workspace-lens-walkthrough.is-panel { width: 100%; max-width: 520px; margin: 0 0 16px; }
|
|
8945
|
+
.workspace-lens-walkthrough-x { position: absolute; top: 8px; right: 8px; display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; border: none; background: transparent; color: #9ca3af; border-radius: 5px; cursor: pointer; }
|
|
8946
|
+
.workspace-lens-walkthrough-x:hover { background: #f3f4f6; color: #4b5563; }
|
|
8947
|
+
.workspace-lens-walkthrough-eyebrow { margin: 0 0 4px; font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; color: #9ca3af; }
|
|
8948
|
+
.workspace-lens-walkthrough-title { margin: 0 0 5px; font-size: 13px; font-weight: 600; color: #111827; padding-right: 18px; }
|
|
8949
|
+
.workspace-lens-walkthrough-body { margin: 0 0 12px; font-size: 12px; line-height: 1.5; color: #4b5563; }
|
|
8950
|
+
.workspace-lens-walkthrough-footer { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
|
|
8951
|
+
.workspace-lens-walkthrough-steps { font-size: 11px; color: #9ca3af; font-variant-numeric: tabular-nums; }
|
|
8952
|
+
.workspace-lens-walkthrough-next { font-size: 12px; font-weight: 600; color: #ffffff; background: #111827; border: none; border-radius: 6px; padding: 6px 12px; cursor: pointer; }
|
|
8953
|
+
.workspace-lens-walkthrough-next:hover { background: #1f2937; }
|
|
8954
|
+
|
|
8955
|
+
/* Helper handoff — one callout, one helper widget, one sandbox config. */
|
|
8956
|
+
.workspace-lens-helper-callout { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; border: 1px solid #e5e7eb; border-radius: 8px; background: #fafbfc; padding: 12px 14px; margin: 0 0 16px; }
|
|
8957
|
+
.workspace-lens-helper-callout-text { min-width: 0; }
|
|
8958
|
+
.workspace-lens-helper-callout-title { margin: 0 0 3px; font-size: 13px; font-weight: 600; color: #111827; }
|
|
8959
|
+
.workspace-lens-helper-callout-body { margin: 0; font-size: 12px; line-height: 1.5; color: #6b7280; max-width: 560px; }
|
|
8960
|
+
.workspace-lens-helper-callout-btn { flex-shrink: 0; font-size: 12px; font-weight: 600; color: #111827; background: #ffffff; border: 1px solid #d1d5db; border-radius: 6px; padding: 7px 12px; cursor: pointer; }
|
|
8961
|
+
.workspace-lens-helper-callout-btn:hover:not(:disabled) { background: #f3f4f6; }
|
|
8962
|
+
.workspace-lens-helper-callout-btn:disabled { opacity: 0.6; cursor: default; }
|
|
8963
|
+
.workspace-helper-setup-modal-backdrop { position: fixed; inset: 0; z-index: 1400; display: flex; align-items: center; justify-content: center; padding: 24px; background: rgba(17, 24, 39, 0.42); backdrop-filter: blur(3px); }
|
|
8964
|
+
.workspace-helper-setup-modal { position: relative; width: min(620px, 100%); max-height: min(720px, calc(100vh - 48px)); overflow: auto; background: #ffffff; border: 1px solid #d1d5db; border-radius: 8px; box-shadow: 0 24px 70px rgba(17, 24, 39, 0.28); padding: 18px; }
|
|
8965
|
+
.workspace-helper-setup-modal-close { position: absolute; top: 12px; right: 12px; width: 28px; height: 28px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid #e5e7eb; border-radius: 6px; background: #fff; color: #6b7280; cursor: pointer; }
|
|
8966
|
+
.workspace-helper-setup-modal-close:hover { background: #f9fafb; color: #111827; }
|
|
8967
|
+
.workspace-helper-setup-breadcrumbs { display: flex; gap: 8px; flex-wrap: wrap; padding-right: 36px; margin-bottom: 16px; font-size: 12px; color: #9ca3af; }
|
|
8968
|
+
.workspace-helper-setup-breadcrumbs span { border: 1px solid #e5e7eb; border-radius: 999px; padding: 4px 9px; background: #f9fafb; }
|
|
8969
|
+
.workspace-helper-setup-breadcrumbs span.active { color: #111827; border-color: #111827; background: #fff; font-weight: 600; }
|
|
8970
|
+
.workspace-helper-setup-step { display: flex; flex-direction: column; gap: 12px; }
|
|
8971
|
+
.workspace-helper-setup-step h2 { margin: 0; font-size: 18px; line-height: 1.25; color: #111827; }
|
|
8972
|
+
.workspace-helper-setup-step p { margin: 0; font-size: 13px; line-height: 1.55; color: #4b5563; }
|
|
8973
|
+
.workspace-helper-setup-eyebrow { font-size: 11px !important; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: #6b7280 !important; }
|
|
8974
|
+
.workspace-helper-setup-target { border: 1px solid #e5e7eb; border-radius: 8px; padding: 12px; display: grid; gap: 4px; background: #fafafa; }
|
|
8975
|
+
.workspace-helper-setup-target span, .workspace-helper-setup-target small { font-size: 12px; color: #6b7280; }
|
|
8976
|
+
.workspace-helper-setup-target strong { font-size: 14px; color: #111827; }
|
|
8977
|
+
.workspace-helper-setup-card-grid { display: grid; gap: 8px; }
|
|
8978
|
+
.workspace-helper-setup-toggle { display: flex !important; align-items: flex-start; gap: 10px; border: 1px solid #e5e7eb; border-radius: 8px; background: #fff; padding: 11px 12px; cursor: pointer; }
|
|
8979
|
+
.workspace-helper-setup-toggle:hover { background: #f9fafb; }
|
|
8980
|
+
.workspace-helper-setup-toggle input { width: 16px !important; height: 16px; margin: 2px 0 0; padding: 0 !important; accent-color: #111827; flex-shrink: 0; }
|
|
8981
|
+
.workspace-helper-setup-toggle span { display: grid; gap: 3px; min-width: 0; }
|
|
8982
|
+
.workspace-helper-setup-toggle strong { color: #111827; font-size: 13px; }
|
|
8983
|
+
.workspace-helper-setup-toggle small { color: #6b7280; font-size: 12px; line-height: 1.35; }
|
|
8984
|
+
.workspace-helper-setup-radio-group { border: 1px solid #e5e7eb; border-radius: 8px; padding: 12px; display: grid; gap: 8px; background: #fafafa; }
|
|
8985
|
+
.workspace-helper-setup-radio-group > span { font-size: 12px; font-weight: 700; color: #374151; }
|
|
8986
|
+
.workspace-helper-setup-radio-group label { display: flex !important; align-items: center; gap: 8px; font-size: 13px; color: #111827; font-weight: 600; }
|
|
8987
|
+
.workspace-helper-setup-radio-group input { width: 15px !important; height: 15px; margin: 0; padding: 0 !important; accent-color: #111827; }
|
|
8988
|
+
.workspace-helper-setup-radio-group small { color: #9ca3af; font-size: 12px; line-height: 1.4; }
|
|
8989
|
+
.workspace-helper-setup-field-stack { display: grid; gap: 10px; }
|
|
8990
|
+
.workspace-helper-agent-options { display: grid; gap: 8px; }
|
|
8991
|
+
.workspace-helper-agent-options button { display: grid; gap: 3px; text-align: left; border: 1px solid #e5e7eb; border-radius: 8px; background: #fff; padding: 10px 12px; cursor: pointer; }
|
|
8992
|
+
.workspace-helper-agent-options button:hover { background: #f9fafb; }
|
|
8993
|
+
.workspace-helper-agent-options button.active { border-color: #111827; box-shadow: inset 3px 0 0 #111827; }
|
|
8994
|
+
.workspace-helper-agent-options strong { font-size: 13px; color: #111827; }
|
|
8995
|
+
.workspace-helper-agent-options span { font-size: 12px; line-height: 1.4; color: #6b7280; }
|
|
8996
|
+
.workspace-helper-setup-two-col { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
|
|
8997
|
+
.workspace-helper-setup-step label { display: grid; gap: 6px; font-size: 12px; font-weight: 600; color: #374151; }
|
|
8998
|
+
.workspace-helper-setup-step input, .workspace-helper-setup-step select { width: 100%; border: 1px solid #d1d5db; border-radius: 7px; padding: 9px 10px; font-size: 13px; color: #111827; background: #fff; }
|
|
8999
|
+
.workspace-helper-setup-review { display: grid; gap: 8px; margin: 0; }
|
|
9000
|
+
.workspace-helper-setup-review div { display: grid; grid-template-columns: 120px 1fr; gap: 12px; border-bottom: 1px solid #f3f4f6; padding-bottom: 8px; }
|
|
9001
|
+
.workspace-helper-setup-review dt { font-size: 12px; color: #6b7280; }
|
|
9002
|
+
.workspace-helper-setup-review dd { margin: 0; min-width: 0; overflow-wrap: anywhere; font-size: 12px; color: #111827; }
|
|
9003
|
+
.workspace-helper-setup-error { color: #b91c1c !important; }
|
|
9004
|
+
.workspace-helper-setup-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 18px; }
|
|
9005
|
+
.workspace-helper-setup-actions button { border: 1px solid #d1d5db; border-radius: 7px; background: #fff; color: #111827; padding: 8px 12px; font-size: 13px; font-weight: 600; cursor: pointer; }
|
|
9006
|
+
.workspace-helper-setup-actions button.primary { background: #111827; border-color: #111827; color: #fff; }
|
|
9007
|
+
.workspace-helper-setup-actions button:disabled { opacity: 0.55; cursor: default; }
|
|
9008
|
+
|
|
8659
9009
|
/* Compact rail variant — slim activation chip in WorkspaceRail Home */
|
|
8660
9010
|
.workspace-activation-panel.is-compact { padding: 12px 14px; margin: 0 0 12px; gap: 10px; border-radius: 8px; }
|
|
8661
9011
|
.workspace-activation-panel.is-compact .workspace-activation-head { gap: 8px; }
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { ExternalLink, Rocket } from "lucide-react";
|
|
4
|
+
import {
|
|
5
|
+
CODEX_SITES_OBJECT_ID,
|
|
6
|
+
ensureCodexSitesDataModel,
|
|
7
|
+
isCodexSiteUrl
|
|
8
|
+
} from "@/lib/codex-sites-workspace-adapter";
|
|
9
|
+
import { SettingsAccordionSection } from "./settings-accordion-section.jsx";
|
|
10
|
+
|
|
11
|
+
function CodexSitesDataModelCard({ apps, dataModel }) {
|
|
12
|
+
const objects = Array.isArray(dataModel?.objects) ? dataModel.objects : [];
|
|
13
|
+
const object = objects.find((item) => item?.id === CODEX_SITES_OBJECT_ID) || null;
|
|
14
|
+
const rows = Array.isArray(object?.rows) ? object.rows : [];
|
|
15
|
+
const liveRows = rows.filter((row) => {
|
|
16
|
+
const status = String(row?.status || "").toLowerCase();
|
|
17
|
+
return isCodexSiteUrl(row?.url) && (status === "live" || status === "active");
|
|
18
|
+
});
|
|
19
|
+
const liveCount = liveRows.length;
|
|
20
|
+
const appCount = new Set(rows.map((row) => row?.app).filter(Boolean)).size;
|
|
21
|
+
|
|
22
|
+
async function openDataModel() {
|
|
23
|
+
if (!object) {
|
|
24
|
+
const nextDataModel = ensureCodexSitesDataModel(dataModel, apps);
|
|
25
|
+
const response = await fetch("/api/workspace", {
|
|
26
|
+
method: "PATCH",
|
|
27
|
+
headers: { "content-type": "application/json" },
|
|
28
|
+
body: JSON.stringify({ dataModel: nextDataModel })
|
|
29
|
+
});
|
|
30
|
+
if (!response.ok) {
|
|
31
|
+
const payload = await response.json().catch(() => ({}));
|
|
32
|
+
window.alert(payload.error || "Failed to create Codex Sites object.");
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
window.location.href = `/data-model?object=${encodeURIComponent(CODEX_SITES_OBJECT_ID)}`;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return <SettingsAccordionSection
|
|
40
|
+
id="codex-sites"
|
|
41
|
+
title="Codex Sites"
|
|
42
|
+
summary={`${rows.length} site${rows.length === 1 ? "" : "s"} · ${liveCount} live · ${appCount || apps?.length || 0} app${(appCount || apps?.length || 0) === 1 ? "" : "s"}`}
|
|
43
|
+
className="workspace-apps-linkage-section workspace-codex-sites-section"
|
|
44
|
+
>
|
|
45
|
+
<div className="workspace-app-row">
|
|
46
|
+
<span className="workspace-provider-mark"><Rocket size={15} /></span>
|
|
47
|
+
<div>
|
|
48
|
+
<strong>Codex Sites</strong>
|
|
49
|
+
<p>Manage Codex-hosted site URLs as a governed custom Data Model object attached to workspace apps and clients.</p>
|
|
50
|
+
<div className="workspace-integration-meta">
|
|
51
|
+
<span>{object ? "configured" : "not configured"}</span>
|
|
52
|
+
<span>{rows.length} site{rows.length === 1 ? "" : "s"}</span>
|
|
53
|
+
<span>{liveCount} live</span>
|
|
54
|
+
<span>{appCount || apps?.length || 0} app{(appCount || apps?.length || 0) === 1 ? "" : "s"}</span>
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
<button type="button" className="workspace-settings-action" onClick={openDataModel}>
|
|
58
|
+
<ExternalLink size={14} />{object ? "Manage" : "Set up"}
|
|
59
|
+
</button>
|
|
60
|
+
</div>
|
|
61
|
+
{rows.length ? <div className="workspace-settings-codex-sites-list">
|
|
62
|
+
{rows.slice(0, 4).map((row, index) => isCodexSiteUrl(row?.url) ? (
|
|
63
|
+
<a key={row.id || row.Name || index} href={row.url} target="_blank" rel="noreferrer">
|
|
64
|
+
<span>{row.Name || `Site ${index + 1}`}</span>
|
|
65
|
+
<em>{row.client || "Workspace"} · {row.app || "apps/workspace"}</em>
|
|
66
|
+
<ExternalLink size={13} />
|
|
67
|
+
</a>
|
|
68
|
+
) : (
|
|
69
|
+
<button key={row.id || row.Name || index} type="button" onClick={openDataModel}>
|
|
70
|
+
<span>{row.Name || `Site ${index + 1}`}</span>
|
|
71
|
+
<em>{row.client || "Workspace"} · {row.status || "draft"}</em>
|
|
72
|
+
</button>
|
|
73
|
+
))}
|
|
74
|
+
</div> : null}
|
|
75
|
+
</SettingsAccordionSection>;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export {
|
|
79
|
+
CODEX_SITES_OBJECT_ID,
|
|
80
|
+
CodexSitesDataModelCard
|
|
81
|
+
};
|