@growthub/cli 0.9.8 → 0.9.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (19) hide show
  1. package/README.md +23 -5
  2. package/assets/worker-kits/growthub-custom-workspace-starter-v1/SKILL.md +8 -2
  3. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/.env.example +8 -8
  4. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/README.md +9 -7
  5. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/api/settings/integrations/route.js +2 -2
  6. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/api/workspace/route.js +4 -4
  7. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/globals.css +1264 -19
  8. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/settings/integrations/page.jsx +111 -77
  9. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/workspace-builder.jsx +1691 -138
  10. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/growthub.config.json +8 -3
  11. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/adapters/env.js +9 -7
  12. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/adapters/integrations/index.js +10 -10
  13. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/domain/integrations.js +2 -2
  14. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/workspace-config.js +62 -7
  15. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/workspace-schema.js +220 -2
  16. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/package-lock.json +10 -64
  17. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/package.json +1 -0
  18. package/assets/worker-kits/growthub-custom-workspace-starter-v1/kit.json +3 -0
  19. package/package.json +1 -1
@@ -358,6 +358,17 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
358
358
  .sidebar { position: static; height: auto; }
359
359
  .primitive-grid, .primitive-grid.adapter, .capability-board, .primitive-columns, .contract-panel, .hero-grid, .grid, .adapter, .ops-strip, .setup-grid, .results-panel, .results-metrics { grid-template-columns: 1fr; }
360
360
  .quick-actions { position: static; width: auto; margin: 20px 30px; }
361
+ .workspace-settings-page {
362
+ grid-template-columns: 1fr;
363
+ }
364
+ .workspace-settings-page .workspace-rail {
365
+ min-height: auto;
366
+ border-right: 0;
367
+ border-bottom: 1px solid #e8e8e8;
368
+ }
369
+ .workspace-integration-summary {
370
+ grid-template-columns: 1fr;
371
+ }
361
372
  }
362
373
 
363
374
  @media (max-width: 720px) {
@@ -366,6 +377,22 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
366
377
  .utility-actions { margin-top: 10px; }
367
378
  .integration-card-top { grid-template-columns: 34px minmax(0, 1fr); }
368
379
  .integration-card-top .status { grid-column: 2; width: fit-content; }
380
+ .workspace-toolbar,
381
+ .workspace-integration-toolbar,
382
+ .workspace-integration-section-heading {
383
+ display: block;
384
+ }
385
+ .workspace-toolbar-actions {
386
+ justify-content: flex-start;
387
+ margin-top: 10px;
388
+ }
389
+ .workspace-integration-row {
390
+ grid-template-columns: 32px minmax(0, 1fr);
391
+ }
392
+ .workspace-integration-status {
393
+ grid-column: 2;
394
+ width: fit-content;
395
+ }
369
396
  }
370
397
 
371
398
  .workspace-builder {
@@ -375,6 +402,9 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
375
402
  background: #fafafa;
376
403
  color: #252525;
377
404
  }
405
+ .workspace-settings-page {
406
+ grid-template-columns: 220px minmax(0, 1fr);
407
+ }
378
408
  .workspace-rail,
379
409
  .workspace-widget-panel {
380
410
  background: #ffffff;
@@ -409,18 +439,26 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
409
439
  display: grid;
410
440
  gap: 2px;
411
441
  }
412
- .workspace-nav a {
442
+ .workspace-nav a,
443
+ .workspace-nav-static {
413
444
  border-radius: 6px;
414
445
  color: #686868;
415
446
  font-size: 13px;
416
447
  padding: 8px 9px;
417
448
  text-decoration: none;
418
449
  }
450
+ .workspace-nav-static {
451
+ cursor: default;
452
+ }
419
453
  .workspace-nav a.active,
420
454
  .workspace-nav a:hover {
421
455
  background: #f1f1f1;
422
456
  color: #2c2c2c;
423
457
  }
458
+ .workspace-nav-button.active {
459
+ background: #f1f1f1;
460
+ color: #2c2c2c;
461
+ }
424
462
  .workspace-rail-status {
425
463
  margin-top: auto;
426
464
  display: flex;
@@ -457,8 +495,23 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
457
495
  }
458
496
  .workspace-toolbar-actions {
459
497
  display: flex;
498
+ flex-wrap: wrap;
499
+ justify-content: flex-end;
460
500
  gap: 8px;
461
501
  }
502
+ .workspace-toolbar-actions a,
503
+ .workspace-toolbar-actions span {
504
+ min-height: 30px;
505
+ display: inline-flex;
506
+ align-items: center;
507
+ border: 1px solid #dedede;
508
+ border-radius: 6px;
509
+ background: #ffffff;
510
+ color: #4f4f4f;
511
+ font-size: 12px;
512
+ padding: 0 10px;
513
+ text-decoration: none;
514
+ }
462
515
  .workspace-toolbar-actions button,
463
516
  .workspace-tabs button,
464
517
  .workspace-widget-panel button,
@@ -483,8 +536,11 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
483
536
  }
484
537
  .workspace-table {
485
538
  margin-bottom: 14px;
539
+ display: grid;
540
+ grid-template-columns: minmax(190px, 1.25fr) minmax(116px, 0.75fr) minmax(92px, 0.6fr) minmax(118px, 0.7fr) minmax(210px, 1fr);
486
541
  }
487
542
  .workspace-table-heading {
543
+ grid-column: 1 / -1;
488
544
  display: flex;
489
545
  align-items: center;
490
546
  gap: 8px;
@@ -499,28 +555,33 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
499
555
  font-size: 12px;
500
556
  }
501
557
  .workspace-table-row {
502
- display: grid;
503
- grid-template-columns: minmax(170px, 1.2fr) minmax(100px, 0.7fr) minmax(92px, 0.6fr) minmax(96px, 0.55fr) minmax(260px, 1.35fr);
504
- align-items: center;
505
- min-height: 34px;
506
- border-bottom: 1px solid #f0f0f0;
507
- }
508
- .workspace-table-row:last-child {
509
- border-bottom: 0;
558
+ display: contents;
510
559
  }
511
- .workspace-table-row span,
512
- .workspace-table-row code {
560
+ .workspace-table-row > span,
561
+ .workspace-table-row > code {
562
+ display: flex;
563
+ align-items: center;
513
564
  min-width: 0;
565
+ min-height: 48px;
566
+ border-bottom: 1px solid #f0f0f0;
514
567
  border-right: 1px solid #f0f0f0;
515
568
  color: #555;
516
569
  font-size: 12px;
517
570
  padding: 7px 10px;
518
571
  }
519
- .workspace-table-row span:last-child,
520
- .workspace-table-row code:last-child {
572
+ .workspace-table-head > span {
573
+ min-height: 36px;
574
+ background: #fbfbfb;
575
+ }
576
+ .workspace-table-row:last-child > span,
577
+ .workspace-table-row:last-child > code {
578
+ border-bottom: 0;
579
+ }
580
+ .workspace-table-row > span:last-child,
581
+ .workspace-table-row > code:last-child {
521
582
  border-right: 0;
522
583
  }
523
- .workspace-table-head span {
584
+ .workspace-table-head > span {
524
585
  color: #929292;
525
586
  font-weight: 600;
526
587
  }
@@ -535,6 +596,9 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
535
596
  align-items: center;
536
597
  gap: 6px;
537
598
  }
599
+ .workspace-dashboard-title {
600
+ min-width: 0;
601
+ }
538
602
  .workspace-dashboard-title button {
539
603
  min-width: 0;
540
604
  border: 0;
@@ -562,8 +626,33 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
562
626
  font: inherit;
563
627
  padding: 5px 7px;
564
628
  }
629
+ .workspace-dashboard-title-editor {
630
+ display: grid;
631
+ grid-template-columns: minmax(0, 1fr) 32px;
632
+ align-items: center;
633
+ gap: 6px;
634
+ width: 100%;
635
+ }
636
+ .workspace-dashboard-title-editor input {
637
+ min-height: 30px;
638
+ }
639
+ .workspace-dashboard-title-confirm {
640
+ min-height: 30px;
641
+ border: 1px solid #b8e0c2;
642
+ border-radius: 6px;
643
+ background: #ecfdf3;
644
+ color: #15803d;
645
+ cursor: pointer;
646
+ font: inherit;
647
+ font-weight: 800;
648
+ padding: 0;
649
+ }
650
+ .workspace-dashboard-title-confirm:hover {
651
+ background: #dcfce7;
652
+ }
565
653
  .workspace-dashboard-actions {
566
654
  flex-wrap: wrap;
655
+ justify-content: flex-start;
567
656
  }
568
657
  .workspace-dashboard-actions button {
569
658
  border: 1px solid #e1e1e1;
@@ -578,6 +667,149 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
578
667
  .workspace-dashboard-actions button:hover {
579
668
  background: #f0f0f0;
580
669
  }
670
+ .workspace-integration-summary {
671
+ display: grid;
672
+ grid-template-columns: repeat(3, minmax(0, 1fr));
673
+ gap: 12px;
674
+ margin-bottom: 14px;
675
+ }
676
+ .workspace-integration-summary article,
677
+ .workspace-integration-toolbar,
678
+ .workspace-integration-section,
679
+ .workspace-integration-row {
680
+ border: 1px solid #e7e7e7;
681
+ border-radius: 8px;
682
+ background: #ffffff;
683
+ }
684
+ .workspace-integration-summary article {
685
+ min-height: 118px;
686
+ padding: 14px;
687
+ }
688
+ .workspace-integration-summary span,
689
+ .workspace-integration-section-heading > span {
690
+ color: #888;
691
+ font-size: 11px;
692
+ font-weight: 700;
693
+ text-transform: uppercase;
694
+ }
695
+ .workspace-integration-summary strong {
696
+ display: block;
697
+ margin: 10px 0 12px;
698
+ color: #252525;
699
+ font-size: 20px;
700
+ line-height: 1.1;
701
+ }
702
+ .workspace-integration-summary div,
703
+ .workspace-integration-meta {
704
+ display: flex;
705
+ flex-wrap: wrap;
706
+ gap: 6px;
707
+ }
708
+ .workspace-integration-summary code,
709
+ .workspace-integration-meta span {
710
+ border: 1px solid #e1e1e1;
711
+ border-radius: 999px;
712
+ background: #fafafa;
713
+ color: #666;
714
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
715
+ font-size: 11px;
716
+ padding: 4px 7px;
717
+ }
718
+ .workspace-integration-toolbar {
719
+ display: flex;
720
+ justify-content: space-between;
721
+ gap: 12px;
722
+ align-items: center;
723
+ margin-bottom: 14px;
724
+ padding: 13px 14px;
725
+ }
726
+ .workspace-integration-toolbar strong {
727
+ display: block;
728
+ color: #252525;
729
+ font-size: 13px;
730
+ }
731
+ .workspace-integration-toolbar p,
732
+ .workspace-integration-section-heading p,
733
+ .workspace-integration-main p {
734
+ margin: 4px 0 0;
735
+ color: #777;
736
+ font-size: 12px;
737
+ line-height: 1.45;
738
+ }
739
+ .workspace-integration-board {
740
+ display: grid;
741
+ gap: 14px;
742
+ }
743
+ .workspace-integration-section {
744
+ overflow: hidden;
745
+ }
746
+ .workspace-integration-section-heading {
747
+ display: flex;
748
+ justify-content: space-between;
749
+ gap: 12px;
750
+ align-items: flex-start;
751
+ border-bottom: 1px solid #ececec;
752
+ padding: 13px 14px;
753
+ }
754
+ .workspace-integration-section-heading h2 {
755
+ margin: 0;
756
+ color: #252525;
757
+ font-size: 15px;
758
+ }
759
+ .workspace-integration-list {
760
+ display: grid;
761
+ }
762
+ .workspace-integration-row {
763
+ display: grid;
764
+ grid-template-columns: 38px minmax(0, 1fr) auto;
765
+ gap: 12px;
766
+ align-items: flex-start;
767
+ border-width: 0 0 1px;
768
+ border-radius: 0;
769
+ padding: 12px 14px;
770
+ }
771
+ .workspace-integration-row:last-child {
772
+ border-bottom: 0;
773
+ }
774
+ .workspace-provider-mark {
775
+ width: 32px;
776
+ height: 32px;
777
+ display: grid;
778
+ place-items: center;
779
+ border: 1px solid #dedede;
780
+ border-radius: 6px;
781
+ background: #f7f7f7;
782
+ color: #555;
783
+ font-size: 12px;
784
+ font-weight: 800;
785
+ }
786
+ .workspace-integration-main {
787
+ min-width: 0;
788
+ }
789
+ .workspace-integration-main strong {
790
+ display: block;
791
+ color: #303030;
792
+ font-size: 13px;
793
+ }
794
+ .workspace-integration-status {
795
+ white-space: nowrap;
796
+ border: 1px solid #e1e1e1;
797
+ border-radius: 999px;
798
+ background: #fafafa;
799
+ color: #777;
800
+ font-size: 11px;
801
+ padding: 4px 8px;
802
+ }
803
+ .workspace-integration-status.connected {
804
+ border-color: #b8e0c2;
805
+ background: #ecfdf3;
806
+ color: #15803d;
807
+ }
808
+ .workspace-integration-status.needs-connection {
809
+ border-color: #f6d58e;
810
+ background: #fff7e6;
811
+ color: #9a5b00;
812
+ }
581
813
  .workspace-tabs {
582
814
  display: flex;
583
815
  align-items: center;
@@ -626,11 +858,6 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
626
858
  .workspace-hidden-input {
627
859
  display: none;
628
860
  }
629
- .workspace-config-message {
630
- margin: -8px 0 10px;
631
- color: #777;
632
- font-size: 12px;
633
- }
634
861
  .workspace-grid {
635
862
  position: relative;
636
863
  display: grid;
@@ -699,6 +926,9 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
699
926
  cursor: pointer;
700
927
  overflow: hidden;
701
928
  }
929
+ .workspace-grid.moving-widget .workspace-widget-preview {
930
+ cursor: grabbing;
931
+ }
702
932
  .workspace-widget-preview.selected {
703
933
  border-color: #3f68ff;
704
934
  box-shadow: inset 0 0 0 1px rgba(63, 104, 255, 0.45);
@@ -745,6 +975,13 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
745
975
  color: #888;
746
976
  font-size: 11px;
747
977
  }
978
+ .workspace-widget-drag-handle {
979
+ cursor: grab;
980
+ user-select: none;
981
+ }
982
+ .workspace-grid.moving-widget .workspace-widget-drag-handle {
983
+ cursor: grabbing;
984
+ }
748
985
  .workspace-widget-preview-title strong {
749
986
  min-width: 0;
750
987
  flex: 1;
@@ -1162,6 +1399,15 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
1162
1399
  .template-card-actions button:hover {
1163
1400
  background: #f7f7f7;
1164
1401
  }
1402
+ .template-card-actions button.primary {
1403
+ border-color: #c7d2fe;
1404
+ background: #eef2ff;
1405
+ color: #273b8f;
1406
+ font-weight: 700;
1407
+ }
1408
+ .template-card-actions button.primary:hover {
1409
+ background: #e0e7ff;
1410
+ }
1165
1411
  .template-gallery-footer {
1166
1412
  display: flex;
1167
1413
  flex-direction: column;
@@ -1191,3 +1437,1002 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
1191
1437
  grid-template-columns: 1fr;
1192
1438
  }
1193
1439
  }
1440
+
1441
+ /*
1442
+ * Widget panel — Twenty-style action row, empty state, inline field hints.
1443
+ * Additive to the existing .workspace-widget-* vocabulary.
1444
+ */
1445
+ .workspace-widget-actions {
1446
+ display: flex;
1447
+ gap: 6px;
1448
+ margin-top: 10px;
1449
+ padding-bottom: 10px;
1450
+ border-bottom: 1px solid #ececec;
1451
+ }
1452
+ .workspace-widget-actions button {
1453
+ flex: 1;
1454
+ min-height: 30px;
1455
+ border: 1px solid #dedede;
1456
+ border-radius: 6px;
1457
+ background: #ffffff;
1458
+ color: #3d3d3d;
1459
+ cursor: pointer;
1460
+ font: inherit;
1461
+ font-size: 12px;
1462
+ padding: 0 8px;
1463
+ }
1464
+ .workspace-widget-actions button:hover {
1465
+ background: #f7f7f7;
1466
+ }
1467
+ .workspace-widget-actions button.danger {
1468
+ color: #b3261e;
1469
+ border-color: #f0c5c2;
1470
+ background: #fff7f6;
1471
+ }
1472
+ .workspace-widget-actions button.danger:hover {
1473
+ background: #fdeae8;
1474
+ }
1475
+ .workspace-widget-empty {
1476
+ display: grid;
1477
+ gap: 6px;
1478
+ margin-top: 14px;
1479
+ padding: 12px;
1480
+ border: 1px dashed #d8d8d8;
1481
+ border-radius: 8px;
1482
+ background: #fafafa;
1483
+ }
1484
+ .workspace-widget-empty strong {
1485
+ color: #2c2c2c;
1486
+ font-size: 13px;
1487
+ }
1488
+ .workspace-widget-empty p {
1489
+ margin: 0;
1490
+ color: #666;
1491
+ font-size: 12px;
1492
+ line-height: 1.5;
1493
+ }
1494
+ .workspace-field-with-hint {
1495
+ position: relative;
1496
+ }
1497
+ .workspace-field-hint {
1498
+ display: block;
1499
+ margin-top: 4px;
1500
+ color: #888;
1501
+ font-size: 11px;
1502
+ font-style: normal;
1503
+ }
1504
+ .workspace-field-hint.good {
1505
+ color: #15803d;
1506
+ }
1507
+ .workspace-field-hint.warn {
1508
+ color: #92400e;
1509
+ }
1510
+
1511
+ /*
1512
+ * Workspace Settings + Management overlays.
1513
+ * Inspect-only panels sourced from GET /api/workspace + describePersistenceMode().
1514
+ * Visual vocabulary mirrors .template-gallery (modal + backdrop + white panel)
1515
+ * and .workspace-* (light theme, thin borders, subtle muted text).
1516
+ */
1517
+ .workspace-nav-button {
1518
+ display: block;
1519
+ width: 100%;
1520
+ border: 0;
1521
+ border-radius: 6px;
1522
+ background: transparent;
1523
+ color: #686868;
1524
+ cursor: pointer;
1525
+ font: inherit;
1526
+ font-size: 13px;
1527
+ padding: 8px 9px;
1528
+ text-align: left;
1529
+ text-decoration: none;
1530
+ }
1531
+ .workspace-nav-button:hover,
1532
+ .workspace-nav-button:focus {
1533
+ background: #f1f1f1;
1534
+ color: #2c2c2c;
1535
+ outline: none;
1536
+ }
1537
+ .workspace-overlay {
1538
+ position: fixed;
1539
+ inset: 0;
1540
+ z-index: 60;
1541
+ display: flex;
1542
+ align-items: stretch;
1543
+ justify-content: center;
1544
+ }
1545
+ .workspace-overlay-backdrop {
1546
+ position: absolute;
1547
+ inset: 0;
1548
+ background: rgba(15, 15, 15, 0.42);
1549
+ }
1550
+ .workspace-overlay-panel {
1551
+ position: relative;
1552
+ margin: 32px auto;
1553
+ width: min(960px, calc(100vw - 32px));
1554
+ max-height: calc(100vh - 64px);
1555
+ overflow: auto;
1556
+ background: #ffffff;
1557
+ border: 1px solid #e3e3e3;
1558
+ border-radius: 12px;
1559
+ box-shadow: 0 20px 60px rgba(15, 15, 15, 0.18);
1560
+ padding: 18px 18px 14px;
1561
+ }
1562
+ .workspace-overlay-header {
1563
+ display: flex;
1564
+ align-items: center;
1565
+ justify-content: space-between;
1566
+ gap: 16px;
1567
+ margin-bottom: 12px;
1568
+ }
1569
+ .workspace-overlay-header p {
1570
+ margin: 0 0 2px;
1571
+ color: #888;
1572
+ font-size: 11px;
1573
+ text-transform: uppercase;
1574
+ letter-spacing: 0.04em;
1575
+ }
1576
+ .workspace-overlay-header h2 {
1577
+ margin: 0;
1578
+ font-size: 16px;
1579
+ line-height: 1.2;
1580
+ }
1581
+ .workspace-overlay-header button {
1582
+ min-height: 30px;
1583
+ min-width: 30px;
1584
+ border: 1px solid #dedede;
1585
+ border-radius: 6px;
1586
+ background: #ffffff;
1587
+ color: #4f4f4f;
1588
+ font: inherit;
1589
+ cursor: pointer;
1590
+ }
1591
+ .workspace-overlay-note {
1592
+ margin: 0 0 16px;
1593
+ padding: 10px 12px;
1594
+ border: 1px dashed #d8d8d8;
1595
+ border-radius: 8px;
1596
+ background: #fafafa;
1597
+ color: #555;
1598
+ font-size: 12px;
1599
+ line-height: 1.5;
1600
+ }
1601
+ .workspace-overlay-note code {
1602
+ background: #f4f4f4;
1603
+ border-radius: 4px;
1604
+ color: #444;
1605
+ font-size: 11px;
1606
+ padding: 1px 5px;
1607
+ }
1608
+ .workspace-readiness {
1609
+ display: grid;
1610
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1611
+ gap: 14px;
1612
+ }
1613
+ .workspace-readiness-section {
1614
+ display: grid;
1615
+ align-content: start;
1616
+ gap: 6px;
1617
+ border: 1px solid #e7e7e7;
1618
+ border-radius: 10px;
1619
+ background: #fcfcfc;
1620
+ padding: 14px;
1621
+ }
1622
+ .workspace-readiness-section h3 {
1623
+ margin: 0 0 4px;
1624
+ color: #333;
1625
+ font-size: 13px;
1626
+ font-weight: 700;
1627
+ }
1628
+ .workspace-readiness-row {
1629
+ display: grid;
1630
+ grid-template-columns: minmax(120px, 0.6fr) minmax(0, 1fr);
1631
+ gap: 10px;
1632
+ align-items: center;
1633
+ min-height: 28px;
1634
+ border-top: 1px solid #f0f0f0;
1635
+ padding: 6px 0;
1636
+ }
1637
+ .workspace-readiness-row:first-of-type {
1638
+ border-top: 0;
1639
+ padding-top: 0;
1640
+ }
1641
+ .workspace-readiness-row > span:first-child {
1642
+ color: #999;
1643
+ font-size: 11px;
1644
+ font-weight: 700;
1645
+ text-transform: uppercase;
1646
+ letter-spacing: 0.04em;
1647
+ }
1648
+ .workspace-readiness-row strong {
1649
+ min-width: 0;
1650
+ color: #2c2c2c;
1651
+ font-size: 13px;
1652
+ font-weight: 600;
1653
+ word-break: break-word;
1654
+ }
1655
+ .workspace-readiness-row em {
1656
+ min-width: 0;
1657
+ color: #666;
1658
+ font-size: 12px;
1659
+ font-style: normal;
1660
+ line-height: 1.45;
1661
+ word-break: break-word;
1662
+ }
1663
+ .workspace-readiness-row code {
1664
+ min-width: 0;
1665
+ background: #f4f4f4;
1666
+ border-radius: 4px;
1667
+ color: #555;
1668
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
1669
+ font-size: 11px;
1670
+ padding: 2px 6px;
1671
+ word-break: break-word;
1672
+ }
1673
+ .workspace-readiness-empty {
1674
+ grid-template-columns: 1fr;
1675
+ }
1676
+ .workspace-readiness-empty em {
1677
+ color: #888;
1678
+ }
1679
+ .workspace-readiness-badge {
1680
+ display: inline-flex;
1681
+ align-items: center;
1682
+ justify-content: center;
1683
+ border: 1px solid #e1e1e1;
1684
+ border-radius: 999px;
1685
+ background: #f5f5f5;
1686
+ color: #444;
1687
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
1688
+ font-size: 11px;
1689
+ font-weight: 600;
1690
+ padding: 3px 9px;
1691
+ white-space: nowrap;
1692
+ }
1693
+ .workspace-readiness-badge.good {
1694
+ background: rgba(34, 197, 94, 0.12);
1695
+ border-color: rgba(34, 197, 94, 0.45);
1696
+ color: #15803d;
1697
+ }
1698
+ .workspace-readiness-badge.warn {
1699
+ background: rgba(245, 158, 11, 0.12);
1700
+ border-color: rgba(245, 158, 11, 0.45);
1701
+ color: #92400e;
1702
+ }
1703
+ .workspace-readiness-badge.mode-filesystem {
1704
+ background: rgba(34, 197, 94, 0.12);
1705
+ border-color: rgba(34, 197, 94, 0.45);
1706
+ color: #15803d;
1707
+ }
1708
+ .workspace-readiness-badge.mode-read-only {
1709
+ background: rgba(245, 158, 11, 0.12);
1710
+ border-color: rgba(245, 158, 11, 0.45);
1711
+ color: #92400e;
1712
+ }
1713
+ .workspace-readiness-badge.mode-database {
1714
+ background: rgba(56, 189, 248, 0.12);
1715
+ border-color: rgba(56, 189, 248, 0.5);
1716
+ color: #075985;
1717
+ }
1718
+
1719
+ @media (max-width: 720px) {
1720
+ .workspace-overlay-panel {
1721
+ margin: 16px;
1722
+ width: calc(100vw - 32px);
1723
+ padding: 14px;
1724
+ }
1725
+ .workspace-readiness {
1726
+ grid-template-columns: 1fr;
1727
+ }
1728
+ }
1729
+
1730
+ /* === V1.1 builder extensions: sub-panel navigation, source/fields/sort/filter, chart, command palette === */
1731
+
1732
+ .workspace-widget-subpanel {
1733
+ display: grid;
1734
+ gap: 12px;
1735
+ padding-top: 8px;
1736
+ }
1737
+ .workspace-widget-subpanel-header {
1738
+ display: flex;
1739
+ align-items: center;
1740
+ gap: 10px;
1741
+ padding: 6px 0 8px;
1742
+ border-bottom: 1px solid #ececec;
1743
+ }
1744
+ .workspace-widget-subpanel-header div {
1745
+ display: flex;
1746
+ flex-direction: column;
1747
+ min-width: 0;
1748
+ }
1749
+ .workspace-widget-subpanel-header p {
1750
+ margin: 0;
1751
+ font-size: 11px;
1752
+ color: #999;
1753
+ text-transform: uppercase;
1754
+ letter-spacing: 0.04em;
1755
+ }
1756
+ .workspace-widget-subpanel-header strong {
1757
+ font-size: 14px;
1758
+ color: #444;
1759
+ white-space: nowrap;
1760
+ overflow: hidden;
1761
+ text-overflow: ellipsis;
1762
+ }
1763
+ .workspace-widget-subpanel-back {
1764
+ width: 26px;
1765
+ height: 26px;
1766
+ display: grid;
1767
+ place-items: center;
1768
+ border: 1px solid #e8e8e8;
1769
+ border-radius: 6px;
1770
+ background: #fff;
1771
+ color: #666;
1772
+ cursor: pointer;
1773
+ font-size: 16px;
1774
+ line-height: 1;
1775
+ }
1776
+ .workspace-widget-subpanel-back:hover {
1777
+ background: #f3f3f3;
1778
+ }
1779
+
1780
+ .workspace-panel-hint {
1781
+ margin: 2px 0 0;
1782
+ color: #999;
1783
+ font-size: 11px;
1784
+ line-height: 1.5;
1785
+ }
1786
+
1787
+ /* Settings row buttons (replace bare div on the root inspector list) */
1788
+ .workspace-settings-list .workspace-settings-row {
1789
+ width: 100%;
1790
+ display: flex;
1791
+ align-items: center;
1792
+ justify-content: space-between;
1793
+ min-height: 34px;
1794
+ border: 0;
1795
+ border-radius: 5px;
1796
+ background: transparent;
1797
+ color: #666;
1798
+ font: inherit;
1799
+ font-size: 13px;
1800
+ padding: 0 8px;
1801
+ text-align: left;
1802
+ cursor: pointer;
1803
+ }
1804
+ .workspace-settings-list .workspace-settings-row:hover:not([disabled]) {
1805
+ background: #f3f3f3;
1806
+ }
1807
+ .workspace-settings-list .workspace-settings-row[disabled] {
1808
+ cursor: default;
1809
+ color: #888;
1810
+ }
1811
+ .workspace-settings-list .workspace-settings-row code {
1812
+ color: #888;
1813
+ background: transparent;
1814
+ }
1815
+
1816
+ /* Source picker */
1817
+ .workspace-source-list {
1818
+ display: grid;
1819
+ gap: 4px;
1820
+ }
1821
+ .workspace-source-controls {
1822
+ display: grid;
1823
+ gap: 8px;
1824
+ margin-top: 8px;
1825
+ }
1826
+ .workspace-source-controls label {
1827
+ min-width: 0;
1828
+ min-height: 34px;
1829
+ display: grid;
1830
+ grid-template-columns: 18px minmax(0, 1fr) auto;
1831
+ align-items: center;
1832
+ gap: 8px;
1833
+ border: 1px solid #e5e5e5;
1834
+ border-radius: 7px;
1835
+ background: #ffffff;
1836
+ color: #777;
1837
+ padding: 0 9px;
1838
+ box-shadow: 0 1px 2px rgba(15, 15, 15, 0.04);
1839
+ }
1840
+ .workspace-source-controls input,
1841
+ .workspace-source-controls select {
1842
+ width: 100%;
1843
+ min-width: 0;
1844
+ height: 32px;
1845
+ border: 0;
1846
+ outline: 0;
1847
+ background: transparent;
1848
+ color: #333;
1849
+ font: inherit;
1850
+ font-size: 13px;
1851
+ padding: 0;
1852
+ }
1853
+ .workspace-source-controls select {
1854
+ appearance: none;
1855
+ cursor: pointer;
1856
+ }
1857
+ .workspace-source-controls label:focus-within {
1858
+ border-color: #8fb4ff;
1859
+ box-shadow: 0 0 0 2px rgba(63, 104, 255, 0.12);
1860
+ }
1861
+ .workspace-source-row {
1862
+ width: 100%;
1863
+ display: grid;
1864
+ grid-template-columns: 28px 1fr auto;
1865
+ align-items: center;
1866
+ gap: 10px;
1867
+ padding: 8px 10px;
1868
+ border: 1px solid #ececec;
1869
+ border-radius: 6px;
1870
+ background: #fff;
1871
+ color: #555;
1872
+ text-align: left;
1873
+ cursor: pointer;
1874
+ font: inherit;
1875
+ }
1876
+ .workspace-source-row:hover {
1877
+ border-color: #d0d0d0;
1878
+ background: #fafafa;
1879
+ }
1880
+ .workspace-source-row.active {
1881
+ border-color: #38bdf8;
1882
+ background: rgba(56, 189, 248, 0.06);
1883
+ }
1884
+ .workspace-source-icon {
1885
+ width: 26px;
1886
+ height: 26px;
1887
+ display: grid;
1888
+ place-items: center;
1889
+ border: 1px solid #e0e0e0;
1890
+ border-radius: 5px;
1891
+ background: #fafafa;
1892
+ color: #666;
1893
+ font-size: 13px;
1894
+ font-weight: 600;
1895
+ }
1896
+ .workspace-source-meta {
1897
+ display: flex;
1898
+ flex-direction: column;
1899
+ min-width: 0;
1900
+ }
1901
+ .workspace-source-meta strong {
1902
+ color: #333;
1903
+ font-size: 13px;
1904
+ font-weight: 600;
1905
+ white-space: nowrap;
1906
+ overflow: hidden;
1907
+ text-overflow: ellipsis;
1908
+ }
1909
+ .workspace-source-meta em {
1910
+ color: #999;
1911
+ font-size: 11px;
1912
+ font-style: normal;
1913
+ }
1914
+ .workspace-source-tick {
1915
+ color: #38bdf8;
1916
+ font-weight: 700;
1917
+ }
1918
+
1919
+ /* Fields manager */
1920
+ .workspace-field-rows {
1921
+ display: grid;
1922
+ gap: 3px;
1923
+ }
1924
+ .workspace-field-row {
1925
+ display: grid;
1926
+ grid-template-columns: 18px 22px 1fr auto;
1927
+ align-items: center;
1928
+ gap: 8px;
1929
+ padding: 4px 6px;
1930
+ border-radius: 5px;
1931
+ font-size: 13px;
1932
+ color: #444;
1933
+ }
1934
+ .workspace-field-row:hover {
1935
+ background: #f6f6f6;
1936
+ }
1937
+ .workspace-field-row-hidden {
1938
+ grid-template-columns: 22px 1fr auto;
1939
+ color: #999;
1940
+ }
1941
+ .workspace-field-row-handle {
1942
+ cursor: grab;
1943
+ color: #bbb;
1944
+ font-weight: 700;
1945
+ user-select: none;
1946
+ }
1947
+ .workspace-field-row-icon {
1948
+ display: grid;
1949
+ place-items: center;
1950
+ font-size: 12px;
1951
+ color: #777;
1952
+ }
1953
+ .workspace-field-row-name {
1954
+ white-space: nowrap;
1955
+ overflow: hidden;
1956
+ text-overflow: ellipsis;
1957
+ }
1958
+ .workspace-field-row-actions {
1959
+ display: inline-flex;
1960
+ gap: 2px;
1961
+ }
1962
+ .workspace-field-row-actions button {
1963
+ width: 24px;
1964
+ height: 24px;
1965
+ display: grid;
1966
+ place-items: center;
1967
+ border: 0;
1968
+ border-radius: 5px;
1969
+ background: transparent;
1970
+ color: #999;
1971
+ cursor: pointer;
1972
+ font-size: 12px;
1973
+ }
1974
+ .workspace-field-row-actions button:hover:not([disabled]) {
1975
+ background: #ececec;
1976
+ color: #444;
1977
+ }
1978
+ .workspace-field-row-actions button[disabled] {
1979
+ opacity: 0.4;
1980
+ cursor: not-allowed;
1981
+ }
1982
+ .workspace-hidden-fields-toggle {
1983
+ display: flex;
1984
+ align-items: center;
1985
+ justify-content: space-between;
1986
+ width: 100%;
1987
+ padding: 8px 6px;
1988
+ border: 0;
1989
+ border-top: 1px solid #ececec;
1990
+ background: transparent;
1991
+ color: #666;
1992
+ font: inherit;
1993
+ font-size: 12px;
1994
+ cursor: pointer;
1995
+ margin-top: 4px;
1996
+ }
1997
+ .workspace-hidden-fields-toggle:hover {
1998
+ background: #f6f6f6;
1999
+ }
2000
+ .workspace-hidden-fields {
2001
+ border-top: 0;
2002
+ }
2003
+ .workspace-field-add {
2004
+ display: grid;
2005
+ grid-template-columns: 1fr auto;
2006
+ gap: 6px;
2007
+ padding-top: 6px;
2008
+ border-top: 1px solid #ececec;
2009
+ }
2010
+ .workspace-field-add input {
2011
+ border: 1px solid #e5e5e5;
2012
+ border-radius: 6px;
2013
+ background: #fafafa;
2014
+ font: inherit;
2015
+ padding: 7px 9px;
2016
+ }
2017
+ .workspace-field-add button {
2018
+ border: 1px solid #d8d8d8;
2019
+ background: #fff;
2020
+ border-radius: 6px;
2021
+ padding: 0 12px;
2022
+ cursor: pointer;
2023
+ color: #444;
2024
+ font-size: 13px;
2025
+ }
2026
+ .workspace-field-add button:disabled {
2027
+ opacity: 0.5;
2028
+ cursor: not-allowed;
2029
+ }
2030
+
2031
+ /* Sort + Filter */
2032
+ .workspace-sort-list,
2033
+ .workspace-filter-list {
2034
+ display: grid;
2035
+ gap: 6px;
2036
+ }
2037
+ .workspace-sort-row {
2038
+ display: grid;
2039
+ grid-template-columns: 1fr 1fr auto;
2040
+ gap: 6px;
2041
+ align-items: center;
2042
+ }
2043
+ .workspace-filter-clause {
2044
+ display: grid;
2045
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) auto;
2046
+ gap: 6px;
2047
+ align-items: center;
2048
+ }
2049
+ .workspace-filter-clause-empty {
2050
+ color: #bbb;
2051
+ text-align: center;
2052
+ }
2053
+ .workspace-sort-row select,
2054
+ .workspace-filter-clause select,
2055
+ .workspace-filter-clause input {
2056
+ border: 1px solid #e5e5e5;
2057
+ border-radius: 6px;
2058
+ background: #fafafa;
2059
+ color: #444;
2060
+ font: inherit;
2061
+ padding: 6px 8px;
2062
+ }
2063
+ .workspace-sort-row button,
2064
+ .workspace-filter-clause button {
2065
+ width: 26px;
2066
+ height: 26px;
2067
+ border: 0;
2068
+ border-radius: 5px;
2069
+ background: transparent;
2070
+ color: #999;
2071
+ cursor: pointer;
2072
+ }
2073
+ .workspace-sort-row button:hover,
2074
+ .workspace-filter-clause button:hover {
2075
+ background: #ececec;
2076
+ color: #444;
2077
+ }
2078
+ .workspace-add-clause {
2079
+ display: inline-flex;
2080
+ align-items: center;
2081
+ gap: 4px;
2082
+ border: 1px dashed #d8d8d8;
2083
+ background: #fafafa;
2084
+ color: #555;
2085
+ border-radius: 6px;
2086
+ padding: 6px 10px;
2087
+ cursor: pointer;
2088
+ font: inherit;
2089
+ font-size: 12px;
2090
+ }
2091
+ .workspace-add-clause:hover:not(:disabled) {
2092
+ border-color: #38bdf8;
2093
+ color: #075985;
2094
+ background: rgba(56, 189, 248, 0.06);
2095
+ }
2096
+ .workspace-add-clause:disabled {
2097
+ opacity: 0.5;
2098
+ cursor: not-allowed;
2099
+ }
2100
+ .workspace-filter-op-toggle {
2101
+ display: inline-flex;
2102
+ border: 1px solid #e5e5e5;
2103
+ border-radius: 6px;
2104
+ overflow: hidden;
2105
+ width: fit-content;
2106
+ background: #fafafa;
2107
+ }
2108
+ .workspace-filter-op-toggle button {
2109
+ border: 0;
2110
+ background: transparent;
2111
+ color: #666;
2112
+ padding: 5px 12px;
2113
+ cursor: pointer;
2114
+ font: inherit;
2115
+ font-size: 12px;
2116
+ font-weight: 600;
2117
+ letter-spacing: 0.04em;
2118
+ }
2119
+ .workspace-filter-op-toggle button.active {
2120
+ background: #fff;
2121
+ color: #075985;
2122
+ box-shadow: inset 0 0 0 1px #38bdf8;
2123
+ }
2124
+
2125
+ /* Chart config */
2126
+ .workspace-chart-config {
2127
+ display: grid;
2128
+ gap: 12px;
2129
+ }
2130
+ .workspace-chart-type-tabs {
2131
+ display: grid;
2132
+ grid-template-columns: repeat(6, 1fr);
2133
+ gap: 2px;
2134
+ border: 1px solid #ececec;
2135
+ border-radius: 8px;
2136
+ padding: 3px;
2137
+ background: #fafafa;
2138
+ }
2139
+ .workspace-chart-type-tabs button {
2140
+ display: grid;
2141
+ place-items: center;
2142
+ gap: 2px;
2143
+ padding: 6px 4px;
2144
+ border: 0;
2145
+ border-radius: 5px;
2146
+ background: transparent;
2147
+ color: #888;
2148
+ font: inherit;
2149
+ cursor: pointer;
2150
+ }
2151
+ .workspace-chart-type-tabs button em {
2152
+ font-style: normal;
2153
+ font-size: 9px;
2154
+ font-weight: 600;
2155
+ text-transform: uppercase;
2156
+ letter-spacing: 0.04em;
2157
+ color: #999;
2158
+ }
2159
+ .workspace-chart-type-tabs button:hover {
2160
+ background: #fff;
2161
+ }
2162
+ .workspace-chart-type-tabs button.active {
2163
+ background: #fff;
2164
+ color: #075985;
2165
+ box-shadow: 0 0 0 1px #38bdf8;
2166
+ }
2167
+ .workspace-chart-type-tabs button.active em {
2168
+ color: #075985;
2169
+ }
2170
+ .workspace-axis-range {
2171
+ display: grid;
2172
+ grid-template-columns: 1fr 1fr;
2173
+ gap: 8px;
2174
+ }
2175
+ .workspace-toggle-row {
2176
+ display: flex !important;
2177
+ align-items: center;
2178
+ justify-content: space-between;
2179
+ flex-direction: row !important;
2180
+ padding: 4px 0;
2181
+ }
2182
+ .workspace-toggle-row span {
2183
+ color: #666 !important;
2184
+ font-size: 13px !important;
2185
+ font-weight: 500 !important;
2186
+ text-transform: none !important;
2187
+ }
2188
+ .workspace-toggle-row input[type="checkbox"] {
2189
+ width: 36px;
2190
+ height: 20px;
2191
+ appearance: none;
2192
+ border-radius: 999px;
2193
+ background: #d8d8d8;
2194
+ position: relative;
2195
+ cursor: pointer;
2196
+ transition: background 0.15s ease;
2197
+ }
2198
+ .workspace-toggle-row input[type="checkbox"]::after {
2199
+ content: "";
2200
+ position: absolute;
2201
+ top: 2px;
2202
+ left: 2px;
2203
+ width: 16px;
2204
+ height: 16px;
2205
+ border-radius: 50%;
2206
+ background: #fff;
2207
+ box-shadow: 0 1px 2px rgba(0,0,0,0.18);
2208
+ transition: left 0.15s ease;
2209
+ }
2210
+ .workspace-toggle-row input[type="checkbox"]:checked {
2211
+ background: #38bdf8;
2212
+ }
2213
+ .workspace-toggle-row input[type="checkbox"]:checked::after {
2214
+ left: 18px;
2215
+ }
2216
+
2217
+ /* Chart preview kind variants */
2218
+ .workspace-chart-preview.kind-bar-horizontal {
2219
+ flex-direction: column;
2220
+ align-items: stretch;
2221
+ justify-content: center;
2222
+ gap: 4px;
2223
+ padding: 8px;
2224
+ }
2225
+ .workspace-chart-preview .workspace-chart-bar-h {
2226
+ height: 12px;
2227
+ background: #38bdf8;
2228
+ border-radius: 3px;
2229
+ position: relative;
2230
+ }
2231
+ .workspace-chart-preview .workspace-chart-bar-h em {
2232
+ position: absolute;
2233
+ right: 4px;
2234
+ top: -2px;
2235
+ font-size: 10px;
2236
+ font-style: normal;
2237
+ color: #075985;
2238
+ }
2239
+ .workspace-chart-preview.kind-pie {
2240
+ display: grid;
2241
+ place-items: center;
2242
+ }
2243
+ .workspace-chart-preview .workspace-chart-pie {
2244
+ width: 60%;
2245
+ aspect-ratio: 1;
2246
+ border-radius: 50%;
2247
+ background: conic-gradient(#38bdf8 0 60%, #93c5fd 60% 85%, #cffafe 85% 100%);
2248
+ }
2249
+ .workspace-chart-preview.kind-line {
2250
+ display: grid;
2251
+ place-items: center;
2252
+ padding: 8px;
2253
+ }
2254
+ .workspace-chart-preview .workspace-chart-line {
2255
+ width: 90%;
2256
+ height: 60%;
2257
+ background: linear-gradient(180deg, transparent 0, transparent 100%);
2258
+ border-bottom: 2px solid #38bdf8;
2259
+ position: relative;
2260
+ }
2261
+ .workspace-chart-preview .workspace-chart-line::after {
2262
+ content: "";
2263
+ position: absolute;
2264
+ inset: 0;
2265
+ background: linear-gradient(135deg, transparent 30%, rgba(56,189,248,0.18) 60%, transparent 90%);
2266
+ }
2267
+ .workspace-chart-preview.kind-sum {
2268
+ display: grid;
2269
+ place-items: center;
2270
+ }
2271
+ .workspace-chart-preview .workspace-chart-sum {
2272
+ font-size: 28px;
2273
+ font-weight: 700;
2274
+ color: #075985;
2275
+ letter-spacing: -0.02em;
2276
+ }
2277
+ .workspace-chart-preview.kind-gauge {
2278
+ display: grid;
2279
+ place-items: center;
2280
+ }
2281
+ .workspace-chart-preview .workspace-chart-gauge {
2282
+ width: 72%;
2283
+ height: 36%;
2284
+ border-radius: 999px 999px 0 0;
2285
+ background:
2286
+ radial-gradient(circle at 50% 100%, transparent 56%, #38bdf8 56%, #38bdf8 var(--gauge-fill, 70%), #e5e5e5 var(--gauge-fill, 70%));
2287
+ position: relative;
2288
+ }
2289
+ .workspace-chart-preview span em {
2290
+ display: block;
2291
+ font-style: normal;
2292
+ text-align: center;
2293
+ font-size: 10px;
2294
+ color: #075985;
2295
+ }
2296
+
2297
+ /* Command palette */
2298
+ .workspace-command-palette {
2299
+ position: fixed;
2300
+ inset: 0;
2301
+ z-index: 60;
2302
+ display: grid;
2303
+ place-items: start center;
2304
+ padding-top: 12vh;
2305
+ }
2306
+ .workspace-command-palette .workspace-overlay-backdrop {
2307
+ position: absolute;
2308
+ inset: 0;
2309
+ background: rgba(8, 11, 18, 0.32);
2310
+ backdrop-filter: blur(2px);
2311
+ }
2312
+ .workspace-command-palette-panel {
2313
+ position: relative;
2314
+ width: min(540px, 92vw);
2315
+ background: #fff;
2316
+ border: 1px solid #e8e8e8;
2317
+ border-radius: 12px;
2318
+ box-shadow: 0 24px 48px rgba(8, 11, 18, 0.18);
2319
+ overflow: hidden;
2320
+ display: flex;
2321
+ flex-direction: column;
2322
+ }
2323
+ .workspace-command-palette-input {
2324
+ display: grid;
2325
+ grid-template-columns: 24px 1fr auto;
2326
+ align-items: center;
2327
+ gap: 10px;
2328
+ padding: 10px 14px;
2329
+ border-bottom: 1px solid #ececec;
2330
+ }
2331
+ .workspace-command-palette-input span {
2332
+ color: #888;
2333
+ font-size: 14px;
2334
+ }
2335
+ .workspace-command-palette-input input {
2336
+ border: 0;
2337
+ outline: 0;
2338
+ font: inherit;
2339
+ font-size: 14px;
2340
+ color: #333;
2341
+ background: transparent;
2342
+ width: 100%;
2343
+ }
2344
+ .workspace-command-palette-input kbd {
2345
+ font-size: 10px;
2346
+ font-family: inherit;
2347
+ background: #f3f3f3;
2348
+ border: 1px solid #e5e5e5;
2349
+ color: #888;
2350
+ padding: 1px 6px;
2351
+ border-radius: 4px;
2352
+ }
2353
+ .workspace-command-palette-list {
2354
+ max-height: min(60vh, 480px);
2355
+ overflow-y: auto;
2356
+ padding: 6px;
2357
+ }
2358
+ .workspace-command-palette-group {
2359
+ padding: 4px 0;
2360
+ }
2361
+ .workspace-command-palette-group .workspace-panel-label {
2362
+ margin: 6px 8px;
2363
+ color: #aaa;
2364
+ font-size: 10px;
2365
+ }
2366
+ .workspace-command-palette-item {
2367
+ display: grid;
2368
+ grid-template-columns: 22px 1fr auto;
2369
+ align-items: center;
2370
+ gap: 10px;
2371
+ width: 100%;
2372
+ border: 0;
2373
+ background: transparent;
2374
+ color: #444;
2375
+ font: inherit;
2376
+ font-size: 13px;
2377
+ padding: 7px 8px;
2378
+ border-radius: 6px;
2379
+ cursor: pointer;
2380
+ text-align: left;
2381
+ }
2382
+ .workspace-command-palette-item span:first-child {
2383
+ font-size: 14px;
2384
+ color: #888;
2385
+ }
2386
+ .workspace-command-palette-item.active {
2387
+ background: rgba(56, 189, 248, 0.1);
2388
+ color: #075985;
2389
+ }
2390
+ .workspace-command-palette-item.disabled {
2391
+ opacity: 0.45;
2392
+ cursor: not-allowed;
2393
+ }
2394
+ .workspace-command-palette-item kbd {
2395
+ font-size: 10px;
2396
+ font-family: inherit;
2397
+ background: #f3f3f3;
2398
+ border: 1px solid #e5e5e5;
2399
+ color: #888;
2400
+ padding: 1px 6px;
2401
+ border-radius: 4px;
2402
+ }
2403
+ .workspace-command-palette-footer {
2404
+ display: flex;
2405
+ gap: 12px;
2406
+ padding: 6px 12px;
2407
+ border-top: 1px solid #ececec;
2408
+ color: #aaa;
2409
+ font-size: 11px;
2410
+ }
2411
+
2412
+ /* Template gallery filters */
2413
+ .template-gallery-filters {
2414
+ display: grid;
2415
+ grid-template-columns: 1fr auto auto;
2416
+ gap: 8px;
2417
+ padding: 0 16px 12px;
2418
+ border-bottom: 1px solid #ececec;
2419
+ }
2420
+ .template-gallery-filters input,
2421
+ .template-gallery-filters select {
2422
+ border: 1px solid #e5e5e5;
2423
+ border-radius: 6px;
2424
+ background: #fafafa;
2425
+ font: inherit;
2426
+ font-size: 13px;
2427
+ padding: 7px 9px;
2428
+ color: #444;
2429
+ }
2430
+
2431
+ @media (max-width: 720px) {
2432
+ .workspace-chart-type-tabs {
2433
+ grid-template-columns: repeat(3, 1fr);
2434
+ }
2435
+ .template-gallery-filters {
2436
+ grid-template-columns: 1fr;
2437
+ }
2438
+ }