@bendyline/squisq-editor-react 1.6.1 → 1.6.2

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 (44) hide show
  1. package/dist/index.d.ts +87 -41
  2. package/dist/index.js +8263 -6705
  3. package/dist/index.js.map +1 -1
  4. package/dist/styles/index.css +841 -91
  5. package/package.json +4 -4
  6. package/src/BlockPropertiesPopover.tsx +23 -7
  7. package/src/EditorShell.tsx +65 -20
  8. package/src/MediaBin.tsx +171 -28
  9. package/src/PreviewControls.tsx +177 -44
  10. package/src/PreviewPanel.tsx +2 -0
  11. package/src/TemplateAnnotation.ts +22 -7
  12. package/src/TemplateContentPreview.tsx +56 -0
  13. package/src/TemplatePicker.tsx +295 -128
  14. package/src/ThemeCustomizerPanel.tsx +22 -15
  15. package/src/Toolbar.tsx +527 -207
  16. package/src/TransitionPicker.tsx +8 -1
  17. package/src/ViewSwitcher.tsx +4 -4
  18. package/src/WysiwygEditor.tsx +45 -3
  19. package/src/__tests__/buildPreviewDocTransition.test.ts +1 -2
  20. package/src/__tests__/editorShellProps.test.tsx +268 -1
  21. package/src/__tests__/headingTransition.test.ts +59 -9
  22. package/src/__tests__/imageEditorShell.test.tsx +23 -0
  23. package/src/__tests__/mediaReferences.test.ts +82 -0
  24. package/src/__tests__/previewControls.test.tsx +94 -1
  25. package/src/__tests__/templateAnnotationRoundTrip.test.ts +23 -2
  26. package/src/__tests__/templateContentPreview.test.ts +101 -0
  27. package/src/__tests__/tiptapBridge.test.ts +47 -0
  28. package/src/diagram/DiagramWidget.tsx +6 -4
  29. package/src/headingTransition.ts +96 -21
  30. package/src/index.ts +2 -1
  31. package/src/mediaReferences.ts +299 -0
  32. package/src/scene/Scene.tsx +53 -7
  33. package/src/scene/SceneBlockWidget.tsx +6 -3
  34. package/src/scene/SceneSelection.tsx +19 -15
  35. package/src/scene/SceneSideToolbar.tsx +89 -0
  36. package/src/scene/layers/DiagramEdges.tsx +4 -3
  37. package/src/scene/layers/edgeGeometry.ts +23 -4
  38. package/src/scene/scene.css +142 -2
  39. package/src/scene/tools/ConnectTool.ts +113 -24
  40. package/src/scene/tools/DrawingConnectTool.ts +86 -16
  41. package/src/scene/tools/SceneTool.ts +2 -0
  42. package/src/styles/editor.css +862 -101
  43. package/src/templateContentPreviewResolver.ts +353 -0
  44. package/src/tiptapBridge.ts +60 -33
@@ -7133,7 +7133,7 @@
7133
7133
  align-items: center;
7134
7134
  flex-wrap: nowrap;
7135
7135
  padding: 0 12px 0 0;
7136
- gap: 2px;
7136
+ gap: 1px;
7137
7137
  background: rgba(0, 0, 0, 0.07);
7138
7138
  container-type: inline-size;
7139
7139
  container-name: squisq-toolbar;
@@ -7162,6 +7162,9 @@
7162
7162
  flex: 1;
7163
7163
  min-width: 0;
7164
7164
  }
7165
+ .squisq-toolbar-contextual--clipped {
7166
+ visibility: hidden;
7167
+ }
7165
7168
  .squisq-toolbar-view-tab {
7166
7169
  padding: 8px 14px 4px;
7167
7170
  border: none;
@@ -7220,6 +7223,7 @@
7220
7223
  justify-content: center;
7221
7224
  width: 32px;
7222
7225
  height: 28px;
7226
+ flex-shrink: 0;
7223
7227
  border: none;
7224
7228
  border-radius: 4px;
7225
7229
  background: transparent;
@@ -7245,6 +7249,30 @@
7245
7249
  background: #bfdbfe;
7246
7250
  color: #1d4ed8;
7247
7251
  }
7252
+ .squisq-toolbar-files-toggle {
7253
+ position: relative;
7254
+ }
7255
+ .squisq-toolbar-files-badge {
7256
+ position: absolute;
7257
+ right: 1px;
7258
+ bottom: 1px;
7259
+ min-width: 14px;
7260
+ height: 14px;
7261
+ padding: 0 3px;
7262
+ border: 1.5px solid #e5e7eb;
7263
+ border-radius: 999px;
7264
+ background: #2563eb;
7265
+ color: #ffffff;
7266
+ box-sizing: border-box;
7267
+ display: inline-flex;
7268
+ align-items: center;
7269
+ justify-content: center;
7270
+ font-size: 9px;
7271
+ font-weight: 700;
7272
+ line-height: 1;
7273
+ pointer-events: none;
7274
+ z-index: 1;
7275
+ }
7248
7276
  .squisq-toolbar-button > i {
7249
7277
  font-size: 15px;
7250
7278
  line-height: 1;
@@ -7340,6 +7368,15 @@
7340
7368
  min-width: 0;
7341
7369
  max-width: 100%;
7342
7370
  }
7371
+ .squisq-toolbar-overflow-heading {
7372
+ padding: 4px 12px 2px;
7373
+ font-size: 11px;
7374
+ font-weight: 600;
7375
+ letter-spacing: 0.04em;
7376
+ text-transform: uppercase;
7377
+ color: #9ca3af;
7378
+ user-select: none;
7379
+ }
7343
7380
  .squisq-insert-menu {
7344
7381
  z-index: 100;
7345
7382
  min-width: 200px;
@@ -7462,18 +7499,349 @@
7462
7499
  color: #9ca3af;
7463
7500
  flex-shrink: 0;
7464
7501
  }
7502
+ .squisq-template-gallery-dialog {
7503
+ --squisq-template-gallery-backdrop: rgba(17, 24, 39, 0.34);
7504
+ --squisq-template-gallery-backdrop-blur: 1px;
7505
+ --squisq-template-gallery-panel-bg: #ffffff;
7506
+ --squisq-template-gallery-panel-border: #e5e7eb;
7507
+ --squisq-template-gallery-panel-shadow: 0 24px 70px rgba(15, 23, 42, 0.24), 0 8px 24px rgba(15, 23, 42, 0.16);
7508
+ --squisq-template-gallery-header-bg: #ffffff;
7509
+ --squisq-template-gallery-header-border: #e5e7eb;
7510
+ --squisq-template-gallery-title: #111827;
7511
+ --squisq-template-gallery-close-color: #64748b;
7512
+ --squisq-template-gallery-close-bg: rgba(255, 255, 255, 0.9);
7513
+ --squisq-template-gallery-close-border: #e2e8f0;
7514
+ --squisq-template-gallery-close-hover-color: #0f172a;
7515
+ --squisq-template-gallery-close-hover-border: #c7d2fe;
7516
+ --squisq-template-gallery-close-hover-shadow: 0 1px 4px rgba(99, 102, 241, 0.16);
7517
+ --squisq-template-gallery-bg: #ffffff;
7518
+ --squisq-template-gallery-text: #111827;
7519
+ --squisq-template-gallery-border: #e5e7eb;
7520
+ --squisq-template-gallery-shadow: 0 8px 24px rgba(0, 0, 0, 0.12), 0 2px 6px rgba(0, 0, 0, 0.06);
7521
+ --squisq-template-gallery-search-bg: #ffffff;
7522
+ --squisq-template-gallery-search-border: #f3f4f6;
7523
+ --squisq-template-gallery-search-icon: #9ca3af;
7524
+ --squisq-template-gallery-search-input: #111827;
7525
+ --squisq-template-gallery-search-placeholder: #9ca3af;
7526
+ --squisq-template-gallery-empty: #6b7280;
7527
+ --squisq-template-gallery-option-bg: #fbfdff;
7528
+ --squisq-template-gallery-option-border: #e5e7eb;
7529
+ --squisq-template-gallery-option-hover-bg: #f9fafb;
7530
+ --squisq-template-gallery-option-hover-border: #c7d2fe;
7531
+ --squisq-template-gallery-option-hover-shadow: 0 1px 3px rgba(99, 102, 241, 0.08);
7532
+ --squisq-template-gallery-card-bg: transparent;
7533
+ --squisq-template-gallery-card-border: #e5e7eb;
7534
+ --squisq-template-gallery-card-hover-bg: #f9fafb;
7535
+ --squisq-template-gallery-card-hover-border: #a5b4fc;
7536
+ --squisq-template-gallery-card-hover-shadow: 0 1px 4px rgba(99, 102, 241, 0.1);
7537
+ --squisq-template-gallery-selected-bg: #eef2ff;
7538
+ --squisq-template-gallery-selected-border: #6366f1;
7539
+ --squisq-template-gallery-selected-shadow: 0 0 0 2px rgba(99, 102, 241, 0.15);
7540
+ --squisq-template-gallery-card-icon-bg: #f8fafc;
7541
+ --squisq-template-gallery-card-icon-border: #e5e7eb;
7542
+ --squisq-template-gallery-content-preview-bg: #f1f5f9;
7543
+ --squisq-template-gallery-preview-warning-bg: rgba(17, 24, 39, 0.9);
7544
+ --squisq-template-gallery-preview-warning-border: rgba(255, 255, 255, 0.22);
7545
+ --squisq-template-gallery-preview-warning-text: #ffffff;
7546
+ --squisq-template-gallery-name: #111827;
7547
+ --squisq-template-gallery-description: #6b7280;
7548
+ --squisq-template-gallery-new-bg: #f5f3ff;
7549
+ --squisq-template-gallery-new-border: #a5b4fc;
7550
+ --squisq-template-gallery-new-hover-bg: #ede9fe;
7551
+ --squisq-template-gallery-new-hover-border: #818cf8;
7552
+ --squisq-template-gallery-new-plus-color: #6366f1;
7553
+ --squisq-template-gallery-new-plus-bg: #ffffff;
7554
+ --squisq-template-gallery-new-plus-border: #c4b5fd;
7555
+ --squisq-template-gallery-new-label: #4338ca;
7556
+ --squisq-template-gallery-new-desc: #6b7280;
7557
+ --squisq-template-gallery-section-border: #e5e7eb;
7558
+ --squisq-template-gallery-section-title: #6b7280;
7559
+ box-sizing: border-box;
7560
+ display: flex;
7561
+ align-items: center;
7562
+ justify-content: center;
7563
+ min-width: 0;
7564
+ min-height: 0;
7565
+ padding: 0;
7566
+ background: var(--squisq-template-gallery-backdrop);
7567
+ backdrop-filter: blur(var(--squisq-template-gallery-backdrop-blur));
7568
+ font-family: var( --squisq-ux-font, -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif );
7569
+ }
7570
+ .squisq-template-gallery-dialog-panel {
7571
+ position: relative;
7572
+ display: flex;
7573
+ flex-direction: column;
7574
+ width: min(90vw, calc(100% - 32px));
7575
+ height: calc(100% - 32px);
7576
+ max-height: calc(100% - 32px);
7577
+ min-width: 0;
7578
+ min-height: 0;
7579
+ overflow: hidden;
7580
+ background: var(--squisq-template-gallery-panel-bg);
7581
+ border: 1px solid var(--squisq-template-gallery-panel-border);
7582
+ border-radius: 12px;
7583
+ box-shadow: var(--squisq-template-gallery-panel-shadow);
7584
+ }
7585
+ .squisq-template-gallery-dialog-header {
7586
+ display: flex;
7587
+ align-items: center;
7588
+ justify-content: space-between;
7589
+ gap: 12px;
7590
+ flex: 0 0 auto;
7591
+ min-width: 0;
7592
+ padding: 12px 14px 12px 16px;
7593
+ background: var(--squisq-template-gallery-header-bg);
7594
+ border-bottom: 1px solid var(--squisq-template-gallery-header-border);
7595
+ }
7596
+ .squisq-template-gallery-dialog-title {
7597
+ min-width: 0;
7598
+ margin: 0;
7599
+ overflow: hidden;
7600
+ color: var(--squisq-template-gallery-title);
7601
+ font-size: 15px;
7602
+ font-weight: 700;
7603
+ line-height: 1.3;
7604
+ text-overflow: ellipsis;
7605
+ white-space: nowrap;
7606
+ }
7607
+ .squisq-template-gallery-dialog-close {
7608
+ display: inline-flex;
7609
+ align-items: center;
7610
+ justify-content: center;
7611
+ flex: 0 0 auto;
7612
+ width: 28px;
7613
+ height: 28px;
7614
+ padding: 0;
7615
+ color: var(--squisq-template-gallery-close-color);
7616
+ background: var(--squisq-template-gallery-close-bg);
7617
+ border: 1px solid var(--squisq-template-gallery-close-border);
7618
+ border-radius: 6px;
7619
+ cursor: pointer;
7620
+ }
7621
+ .squisq-template-gallery-dialog-close:hover {
7622
+ color: var(--squisq-template-gallery-close-hover-color);
7623
+ border-color: var(--squisq-template-gallery-close-hover-border);
7624
+ box-shadow: var(--squisq-template-gallery-close-hover-shadow);
7625
+ }
7626
+ .squisq-template-gallery-dialog-body {
7627
+ display: flex;
7628
+ flex: 1 1 auto;
7629
+ min-width: 0;
7630
+ min-height: 0;
7631
+ overflow: hidden;
7632
+ }
7465
7633
  .squisq-template-gallery {
7466
7634
  width: 420px;
7467
7635
  max-width: calc(100vw - 24px);
7468
7636
  max-height: calc(100vh - 72px);
7469
7637
  overflow-y: auto;
7470
- background: #fff;
7471
- border: 1px solid #e5e7eb;
7638
+ background: var(--squisq-template-gallery-bg, #fff);
7639
+ border: 1px solid var(--squisq-template-gallery-border, #e5e7eb);
7472
7640
  border-radius: 10px;
7473
- box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12), 0 2px 6px rgba(0, 0, 0, 0.06);
7641
+ box-shadow: var( --squisq-template-gallery-shadow, 0 8px 24px rgba(0, 0, 0, 0.12), 0 2px 6px rgba(0, 0, 0, 0.06) );
7474
7642
  padding: 8px;
7475
7643
  animation: squisq-gallery-appear 0.12s ease-out;
7476
7644
  }
7645
+ .squisq-template-gallery-dialog .squisq-template-gallery {
7646
+ flex: 1 1 auto;
7647
+ width: 100%;
7648
+ height: auto;
7649
+ max-width: none;
7650
+ max-height: none;
7651
+ min-height: 0;
7652
+ box-sizing: border-box;
7653
+ padding: 0 12px 12px;
7654
+ border: 0;
7655
+ border-radius: 0;
7656
+ box-shadow: none;
7657
+ animation: none;
7658
+ }
7659
+ .squisq-template-gallery-dialog .squisq-template-gallery-search {
7660
+ z-index: 3;
7661
+ margin: 0 -12px;
7662
+ padding: 2px 16px 26px;
7663
+ border-bottom: 0;
7664
+ }
7665
+ .squisq-template-gallery-dialog .squisq-template-gallery-search::after {
7666
+ content: "";
7667
+ position: absolute;
7668
+ left: 0;
7669
+ right: 0;
7670
+ bottom: 18px;
7671
+ height: 1px;
7672
+ background: var(--squisq-template-gallery-search-border, #f3f4f6);
7673
+ pointer-events: none;
7674
+ }
7675
+ .squisq-template-gallery-dialog .squisq-template-gallery-grid {
7676
+ grid-template-columns: repeat(auto-fill, minmax(170px, 1fr));
7677
+ }
7678
+ .squisq-template-gallery-dialog[data-theme=dark] {
7679
+ --squisq-template-gallery-backdrop: rgba(2, 6, 23, 0.64);
7680
+ --squisq-template-gallery-backdrop-blur: 2px;
7681
+ --squisq-template-gallery-panel-bg: #111827;
7682
+ --squisq-template-gallery-panel-border: #334155;
7683
+ --squisq-template-gallery-panel-shadow: 0 24px 70px rgba(0, 0, 0, 0.55), 0 8px 24px rgba(0, 0, 0, 0.35);
7684
+ --squisq-template-gallery-header-bg: #111827;
7685
+ --squisq-template-gallery-header-border: #334155;
7686
+ --squisq-template-gallery-title: #f3f4f6;
7687
+ --squisq-template-gallery-close-color: #cbd5e1;
7688
+ --squisq-template-gallery-close-bg: #0f172a;
7689
+ --squisq-template-gallery-close-border: #334155;
7690
+ --squisq-template-gallery-close-hover-color: #ffffff;
7691
+ --squisq-template-gallery-close-hover-border: #818cf8;
7692
+ --squisq-template-gallery-close-hover-shadow: 0 1px 6px rgba(129, 140, 248, 0.22);
7693
+ --squisq-template-gallery-bg: #111827;
7694
+ --squisq-template-gallery-text: #e5e7eb;
7695
+ --squisq-template-gallery-search-bg: #111827;
7696
+ --squisq-template-gallery-search-border: #334155;
7697
+ --squisq-template-gallery-search-icon: #64748b;
7698
+ --squisq-template-gallery-search-input: #f9fafb;
7699
+ --squisq-template-gallery-search-placeholder: #64748b;
7700
+ --squisq-template-gallery-empty: #94a3b8;
7701
+ --squisq-template-gallery-option-bg: #0f172a;
7702
+ --squisq-template-gallery-option-border: #334155;
7703
+ --squisq-template-gallery-option-hover-bg: #1e293b;
7704
+ --squisq-template-gallery-option-hover-border: #6366f1;
7705
+ --squisq-template-gallery-option-hover-shadow: 0 1px 5px rgba(99, 102, 241, 0.18);
7706
+ --squisq-template-gallery-card-bg: #0f172a;
7707
+ --squisq-template-gallery-card-border: #334155;
7708
+ --squisq-template-gallery-card-hover-bg: #1e293b;
7709
+ --squisq-template-gallery-card-hover-border: #6366f1;
7710
+ --squisq-template-gallery-card-hover-shadow: 0 1px 5px rgba(99, 102, 241, 0.18);
7711
+ --squisq-template-gallery-selected-bg: #1e1b4b;
7712
+ --squisq-template-gallery-selected-border: #818cf8;
7713
+ --squisq-template-gallery-selected-shadow: 0 0 0 2px rgba(129, 140, 248, 0.24);
7714
+ --squisq-template-gallery-card-icon-bg: #020617;
7715
+ --squisq-template-gallery-card-icon-border: #334155;
7716
+ --squisq-template-gallery-content-preview-bg: #020617;
7717
+ --squisq-template-gallery-preview-warning-bg: rgba(15, 23, 42, 0.94);
7718
+ --squisq-template-gallery-preview-warning-border: #475569;
7719
+ --squisq-template-gallery-preview-warning-text: #f8fafc;
7720
+ --squisq-template-gallery-name: #f3f4f6;
7721
+ --squisq-template-gallery-description: #94a3b8;
7722
+ --squisq-template-gallery-new-bg: #151437;
7723
+ --squisq-template-gallery-new-border: #4f46e5;
7724
+ --squisq-template-gallery-new-hover-bg: #1e1b4b;
7725
+ --squisq-template-gallery-new-hover-border: #818cf8;
7726
+ --squisq-template-gallery-new-plus-color: #c4b5fd;
7727
+ --squisq-template-gallery-new-plus-bg: #0f172a;
7728
+ --squisq-template-gallery-new-plus-border: #6366f1;
7729
+ --squisq-template-gallery-new-label: #f3f4f6;
7730
+ --squisq-template-gallery-new-desc: #94a3b8;
7731
+ --squisq-template-gallery-section-border: #334155;
7732
+ --squisq-template-gallery-section-title: #cbd5e1;
7733
+ background: var(--squisq-template-gallery-backdrop);
7734
+ backdrop-filter: blur(var(--squisq-template-gallery-backdrop-blur));
7735
+ }
7736
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-dialog-panel {
7737
+ background: var(--squisq-template-gallery-panel-bg);
7738
+ border-color: var(--squisq-template-gallery-panel-border);
7739
+ box-shadow: var(--squisq-template-gallery-panel-shadow);
7740
+ }
7741
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-dialog-header {
7742
+ background: var(--squisq-template-gallery-header-bg);
7743
+ border-bottom-color: var(--squisq-template-gallery-header-border);
7744
+ }
7745
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-dialog-title {
7746
+ color: var(--squisq-template-gallery-title);
7747
+ }
7748
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-dialog-close {
7749
+ color: var(--squisq-template-gallery-close-color);
7750
+ background: var(--squisq-template-gallery-close-bg);
7751
+ border-color: var(--squisq-template-gallery-close-border);
7752
+ }
7753
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-dialog-close:hover {
7754
+ color: var(--squisq-template-gallery-close-hover-color);
7755
+ border-color: var(--squisq-template-gallery-close-hover-border);
7756
+ box-shadow: var(--squisq-template-gallery-close-hover-shadow);
7757
+ }
7758
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery {
7759
+ background: var(--squisq-template-gallery-bg);
7760
+ color: var(--squisq-template-gallery-text);
7761
+ }
7762
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-search {
7763
+ background: var(--squisq-template-gallery-search-bg);
7764
+ border-bottom-color: var(--squisq-template-gallery-search-border);
7765
+ }
7766
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-search-icon {
7767
+ color: var(--squisq-template-gallery-search-icon);
7768
+ }
7769
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-search-input {
7770
+ color: var(--squisq-template-gallery-search-input);
7771
+ }
7772
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-search-input::placeholder {
7773
+ color: var(--squisq-template-gallery-search-placeholder);
7774
+ }
7775
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-empty {
7776
+ color: var(--squisq-template-gallery-empty);
7777
+ }
7778
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-none {
7779
+ background: var(--squisq-template-gallery-option-bg);
7780
+ border-color: var(--squisq-template-gallery-option-border);
7781
+ }
7782
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-none:hover {
7783
+ background: var(--squisq-template-gallery-option-hover-bg);
7784
+ border-color: var(--squisq-template-gallery-option-hover-border);
7785
+ box-shadow: var(--squisq-template-gallery-option-hover-shadow);
7786
+ }
7787
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-none.squisq-template-gallery-card--selected {
7788
+ background: var(--squisq-template-gallery-selected-bg);
7789
+ border-color: var(--squisq-template-gallery-selected-border);
7790
+ }
7791
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-none-label {
7792
+ color: var(--squisq-template-gallery-section-title);
7793
+ }
7794
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-none-desc {
7795
+ color: var(--squisq-template-gallery-description);
7796
+ }
7797
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-card {
7798
+ background: var(--squisq-template-gallery-card-bg);
7799
+ border-color: var(--squisq-template-gallery-card-border);
7800
+ }
7801
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-card:hover {
7802
+ background: var(--squisq-template-gallery-card-hover-bg);
7803
+ border-color: var(--squisq-template-gallery-card-hover-border);
7804
+ box-shadow: var(--squisq-template-gallery-card-hover-shadow);
7805
+ }
7806
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-card--selected {
7807
+ background: var(--squisq-template-gallery-selected-bg);
7808
+ border-color: var(--squisq-template-gallery-selected-border);
7809
+ box-shadow: var(--squisq-template-gallery-selected-shadow);
7810
+ }
7811
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-card-icon {
7812
+ background: var(--squisq-template-gallery-card-icon-bg);
7813
+ border-color: var(--squisq-template-gallery-card-icon-border);
7814
+ }
7815
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-content-preview {
7816
+ background: var(--squisq-template-gallery-content-preview-bg);
7817
+ }
7818
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-card-name,
7819
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-new-label {
7820
+ color: var(--squisq-template-gallery-name);
7821
+ }
7822
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-card-desc,
7823
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-new-desc {
7824
+ color: var(--squisq-template-gallery-description);
7825
+ }
7826
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-new {
7827
+ background: var(--squisq-template-gallery-new-bg);
7828
+ border-color: var(--squisq-template-gallery-new-border);
7829
+ }
7830
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-new:hover {
7831
+ background: var(--squisq-template-gallery-new-hover-bg);
7832
+ border-color: var(--squisq-template-gallery-new-hover-border);
7833
+ }
7834
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-new-plus {
7835
+ color: var(--squisq-template-gallery-new-plus-color);
7836
+ background: var(--squisq-template-gallery-new-plus-bg);
7837
+ border-color: var(--squisq-template-gallery-new-plus-border);
7838
+ }
7839
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-section + .squisq-template-gallery-section {
7840
+ border-top-color: var(--squisq-template-gallery-section-border);
7841
+ }
7842
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-section-title {
7843
+ color: var(--squisq-template-gallery-section-title);
7844
+ }
7477
7845
  @keyframes squisq-gallery-appear {
7478
7846
  from {
7479
7847
  opacity: 0;
@@ -7493,11 +7861,11 @@
7493
7861
  gap: 6px;
7494
7862
  padding: 4px 8px;
7495
7863
  margin: -4px -4px 8px;
7496
- background: #fff;
7497
- border-bottom: 1px solid #f3f4f6;
7864
+ background: var(--squisq-template-gallery-search-bg, #fff);
7865
+ border-bottom: 1px solid var(--squisq-template-gallery-search-border, #f3f4f6);
7498
7866
  }
7499
7867
  .squisq-template-gallery-search-icon {
7500
- color: #9ca3af;
7868
+ color: var(--squisq-template-gallery-search-icon, #9ca3af);
7501
7869
  flex-shrink: 0;
7502
7870
  }
7503
7871
  .squisq-template-gallery-search-input {
@@ -7508,11 +7876,11 @@
7508
7876
  outline: none;
7509
7877
  font: inherit;
7510
7878
  font-size: 13px;
7511
- color: #111827;
7879
+ color: var(--squisq-template-gallery-search-input, #111827);
7512
7880
  background: transparent;
7513
7881
  }
7514
7882
  .squisq-template-gallery-search-input::placeholder {
7515
- color: #9ca3af;
7883
+ color: var(--squisq-template-gallery-search-placeholder, #9ca3af);
7516
7884
  }
7517
7885
  .squisq-template-gallery-search-input::-webkit-search-cancel-button {
7518
7886
  appearance: none;
@@ -7521,7 +7889,7 @@
7521
7889
  padding: 24px 12px;
7522
7890
  text-align: center;
7523
7891
  font-size: 12px;
7524
- color: #6b7280;
7892
+ color: var(--squisq-template-gallery-empty, #6b7280);
7525
7893
  }
7526
7894
  .squisq-template-gallery-none {
7527
7895
  display: flex;
@@ -7529,30 +7897,35 @@
7529
7897
  gap: 10px;
7530
7898
  width: 100%;
7531
7899
  padding: 6px 10px;
7532
- border: 1px solid transparent;
7900
+ border: 1px solid var(--squisq-template-gallery-option-border, #e5e7eb);
7533
7901
  border-radius: 7px;
7534
- background: none;
7902
+ background: var(--squisq-template-gallery-option-bg, #fbfdff);
7535
7903
  cursor: pointer;
7536
7904
  text-align: left;
7537
7905
  margin-bottom: 6px;
7538
- transition: background 0.1s;
7906
+ transition:
7907
+ background 0.1s,
7908
+ border-color 0.1s,
7909
+ box-shadow 0.1s;
7539
7910
  }
7540
7911
  .squisq-template-gallery-none:hover {
7541
- background: #f9fafb;
7912
+ background: var(--squisq-template-gallery-option-hover-bg, #f9fafb);
7913
+ border-color: var(--squisq-template-gallery-option-hover-border, #c7d2fe);
7914
+ box-shadow: var( --squisq-template-gallery-option-hover-shadow, 0 1px 3px rgba(99, 102, 241, 0.08) );
7542
7915
  }
7543
7916
  .squisq-template-gallery-none.squisq-template-gallery-card--selected {
7544
- background: #eef2ff;
7545
- border-color: #c7d2fe;
7917
+ background: var(--squisq-template-gallery-selected-bg, #eef2ff);
7918
+ border-color: var(--squisq-template-gallery-selected-border, #c7d2fe);
7546
7919
  }
7547
7920
  .squisq-template-gallery-none-label {
7548
7921
  font-size: 12px;
7549
7922
  font-weight: 600;
7550
- color: #6b7280;
7923
+ color: var(--squisq-template-gallery-section-title, #6b7280);
7551
7924
  white-space: nowrap;
7552
7925
  }
7553
7926
  .squisq-template-gallery-none-desc {
7554
7927
  font-size: 11px;
7555
- color: #9ca3af;
7928
+ color: var(--squisq-template-gallery-description, #9ca3af);
7556
7929
  }
7557
7930
  .squisq-template-gallery-grid {
7558
7931
  display: grid;
@@ -7569,12 +7942,13 @@
7569
7942
  }
7570
7943
  .squisq-template-gallery-card {
7571
7944
  display: flex;
7945
+ flex-direction: column;
7572
7946
  align-items: flex-start;
7573
- gap: 10px;
7574
- padding: 8px 10px;
7575
- border: 1px solid #e5e7eb;
7947
+ gap: 8px;
7948
+ padding: 8px;
7949
+ border: 1px solid var(--squisq-template-gallery-card-border, #e5e7eb);
7576
7950
  border-radius: 7px;
7577
- background: none;
7951
+ background: var(--squisq-template-gallery-card-bg, transparent);
7578
7952
  cursor: pointer;
7579
7953
  text-align: left;
7580
7954
  transition:
@@ -7583,42 +7957,110 @@
7583
7957
  box-shadow 0.1s;
7584
7958
  }
7585
7959
  .squisq-template-gallery-card:hover {
7586
- background: #f9fafb;
7587
- border-color: #a5b4fc;
7588
- box-shadow: 0 1px 4px rgba(99, 102, 241, 0.1);
7960
+ background: var(--squisq-template-gallery-card-hover-bg, #f9fafb);
7961
+ border-color: var(--squisq-template-gallery-card-hover-border, #a5b4fc);
7962
+ box-shadow: var(--squisq-template-gallery-card-hover-shadow, 0 1px 4px rgba(99, 102, 241, 0.1));
7589
7963
  }
7590
7964
  .squisq-template-gallery-card--selected {
7591
- background: #eef2ff;
7592
- border-color: #6366f1;
7593
- box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.15);
7965
+ background: var(--squisq-template-gallery-selected-bg, #eef2ff);
7966
+ border-color: var(--squisq-template-gallery-selected-border, #6366f1);
7967
+ box-shadow: var(--squisq-template-gallery-selected-shadow, 0 0 0 2px rgba(99, 102, 241, 0.15));
7594
7968
  }
7595
7969
  .squisq-template-gallery-card-icon {
7970
+ display: flex;
7971
+ align-items: center;
7972
+ justify-content: center;
7973
+ width: 100%;
7974
+ aspect-ratio: 16 / 9;
7975
+ min-height: 64px;
7596
7976
  flex-shrink: 0;
7597
7977
  border-radius: 4px;
7598
7978
  overflow: hidden;
7599
- background: #f8fafc;
7600
- border: 1px solid #e5e7eb;
7979
+ background: var(--squisq-template-gallery-card-icon-bg, #f8fafc);
7980
+ border: 1px solid var(--squisq-template-gallery-card-icon-border, #e5e7eb);
7601
7981
  line-height: 0;
7602
7982
  }
7603
7983
  .squisq-template-picker-icon {
7604
7984
  display: block;
7605
7985
  }
7986
+ .squisq-template-gallery-card-icon .squisq-template-picker-icon {
7987
+ width: 100%;
7988
+ height: 100%;
7989
+ }
7990
+ .squisq-template-gallery-none > .squisq-template-picker-icon {
7991
+ width: 56px;
7992
+ height: 40px;
7993
+ flex-shrink: 0;
7994
+ }
7995
+ .squisq-template-gallery-card-icon .squisq-template-thumbnail {
7996
+ display: block;
7997
+ width: 100%;
7998
+ height: 100%;
7999
+ }
8000
+ .squisq-template-gallery-content-preview {
8001
+ position: relative;
8002
+ width: 100%;
8003
+ height: 100%;
8004
+ background: var(--squisq-template-gallery-content-preview-bg, #f1f5f9);
8005
+ }
8006
+ .squisq-template-gallery-content-preview svg {
8007
+ width: 100%;
8008
+ height: 100%;
8009
+ display: block;
8010
+ }
8011
+ .squisq-template-gallery-content-preview-fallback {
8012
+ display: flex;
8013
+ align-items: center;
8014
+ justify-content: center;
8015
+ width: 100%;
8016
+ height: 100%;
8017
+ }
8018
+ .squisq-template-gallery-content-preview-fallback > svg {
8019
+ width: 100%;
8020
+ height: 100%;
8021
+ display: block;
8022
+ }
8023
+ .squisq-template-gallery-content-preview-warning {
8024
+ position: absolute;
8025
+ left: 50%;
8026
+ top: 50%;
8027
+ max-width: calc(100% - 16px);
8028
+ padding: 3px 6px;
8029
+ transform: translate(-50%, -50%);
8030
+ border: 1px solid var(--squisq-template-gallery-preview-warning-border, rgba(255, 255, 255, 0.22));
8031
+ border-radius: 4px;
8032
+ background: var(--squisq-template-gallery-preview-warning-bg, rgba(17, 24, 39, 0.9));
8033
+ color: var(--squisq-template-gallery-preview-warning-text, #ffffff);
8034
+ font-size: 10px;
8035
+ font-weight: 600;
8036
+ line-height: 1.2;
8037
+ text-align: center;
8038
+ pointer-events: none;
8039
+ }
7606
8040
  .squisq-template-gallery-card-body {
7607
8041
  display: flex;
7608
8042
  flex-direction: column;
7609
8043
  gap: 3px;
8044
+ width: 100%;
7610
8045
  min-width: 0;
7611
8046
  }
7612
8047
  .squisq-template-gallery-card-name {
7613
8048
  font-size: 12px;
7614
8049
  font-weight: 600;
7615
- color: #111827;
8050
+ color: var(--squisq-template-gallery-name, #111827);
7616
8051
  line-height: 1.3;
8052
+ overflow: hidden;
8053
+ text-overflow: ellipsis;
8054
+ white-space: nowrap;
7617
8055
  }
7618
8056
  .squisq-template-gallery-card-desc {
7619
8057
  font-size: 11px;
7620
- color: #6b7280;
8058
+ color: var(--squisq-template-gallery-description, #6b7280);
7621
8059
  line-height: 1.4;
8060
+ display: -webkit-box;
8061
+ -webkit-line-clamp: 2;
8062
+ -webkit-box-orient: vertical;
8063
+ overflow: hidden;
7622
8064
  }
7623
8065
  .squisq-template-gallery-new {
7624
8066
  display: flex;
@@ -7627,16 +8069,16 @@
7627
8069
  width: 100%;
7628
8070
  padding: 8px 12px;
7629
8071
  margin-bottom: 6px;
7630
- border: 1px dashed #a5b4fc;
8072
+ border: 1px dashed var(--squisq-template-gallery-new-border, #a5b4fc);
7631
8073
  border-radius: 7px;
7632
- background: #f5f3ff;
8074
+ background: var(--squisq-template-gallery-new-bg, #f5f3ff);
7633
8075
  cursor: pointer;
7634
8076
  text-align: left;
7635
8077
  transition: background 0.1s, border-color 0.1s;
7636
8078
  }
7637
8079
  .squisq-template-gallery-new:hover {
7638
- background: #ede9fe;
7639
- border-color: #818cf8;
8080
+ background: var(--squisq-template-gallery-new-hover-bg, #ede9fe);
8081
+ border-color: var(--squisq-template-gallery-new-hover-border, #818cf8);
7640
8082
  border-style: solid;
7641
8083
  }
7642
8084
  .squisq-template-gallery-new-plus {
@@ -7649,9 +8091,9 @@
7649
8091
  font-size: 20px;
7650
8092
  font-weight: 600;
7651
8093
  line-height: 1;
7652
- color: #6366f1;
7653
- background: #ffffff;
7654
- border: 1px solid #c4b5fd;
8094
+ color: var(--squisq-template-gallery-new-plus-color, #6366f1);
8095
+ background: var(--squisq-template-gallery-new-plus-bg, #ffffff);
8096
+ border: 1px solid var(--squisq-template-gallery-new-plus-border, #c4b5fd);
7655
8097
  border-radius: 6px;
7656
8098
  }
7657
8099
  .squisq-template-gallery-new-body {
@@ -7663,23 +8105,23 @@
7663
8105
  .squisq-template-gallery-new-label {
7664
8106
  font-size: 12px;
7665
8107
  font-weight: 600;
7666
- color: #4338ca;
8108
+ color: var(--squisq-template-gallery-new-label, #4338ca);
7667
8109
  }
7668
8110
  .squisq-template-gallery-new-desc {
7669
8111
  font-size: 11px;
7670
- color: #6b7280;
8112
+ color: var(--squisq-template-gallery-new-desc, #6b7280);
7671
8113
  line-height: 1.4;
7672
8114
  }
7673
8115
  .squisq-template-gallery-section + .squisq-template-gallery-section {
7674
8116
  margin-top: 14px;
7675
8117
  padding-top: 10px;
7676
- border-top: 1px solid #e5e7eb;
8118
+ border-top: 1px solid var(--squisq-template-gallery-section-border, #e5e7eb);
7677
8119
  }
7678
8120
  .squisq-template-gallery-section-title {
7679
8121
  margin: 4px 4px 8px;
7680
8122
  font-size: 10px;
7681
8123
  font-weight: 700;
7682
- color: #6b7280;
8124
+ color: var(--squisq-template-gallery-section-title, #6b7280);
7683
8125
  text-transform: uppercase;
7684
8126
  letter-spacing: 0.06em;
7685
8127
  }
@@ -7717,46 +8159,84 @@
7717
8159
  .squisq-template-badge {
7718
8160
  display: inline-flex;
7719
8161
  align-items: center;
7720
- gap: 4px;
8162
+ gap: 1px;
7721
8163
  margin-left: 8px;
7722
- padding: 1px 6px 1px 8px;
8164
+ padding: 0;
7723
8165
  font-size: 11px;
7724
8166
  font-weight: 600;
7725
8167
  font-family: inherit;
7726
- color: #6d28d9;
7727
- background: #ede9fe;
7728
- border: 1px solid #c4b5fd;
7729
- border-radius: 10px;
7730
- vertical-align: middle;
8168
+ color: #c3a47d;
8169
+ background: transparent;
8170
+ border: 0;
8171
+ border-radius: 0;
8172
+ vertical-align: baseline;
8173
+ transform: translateY(2px);
7731
8174
  user-select: none;
7732
- line-height: 1.6;
8175
+ line-height: 1;
7733
8176
  cursor: pointer;
8177
+ transition: color 0.15s ease, opacity 0.15s ease;
8178
+ }
8179
+ .squisq-template-badge-core {
8180
+ display: inline-flex;
8181
+ align-items: center;
8182
+ gap: 4px;
8183
+ padding: 1px 7px;
8184
+ color: #7c4a16;
8185
+ background: #f8f0e3;
8186
+ border: 1px solid #d8c2a2;
8187
+ border-radius: 0;
8188
+ line-height: 1.6;
7734
8189
  transition: background 0.15s ease, border-color 0.15s ease;
7735
8190
  }
7736
- .squisq-template-badge:hover,
8191
+ .squisq-template-badge:hover .squisq-template-badge-core,
8192
+ .squisq-template-badge:focus-visible .squisq-template-badge-core {
8193
+ background: #ead6b8;
8194
+ border-color: #bb9563;
8195
+ }
7737
8196
  .squisq-template-badge:focus-visible {
7738
- background: #ddd6fe;
7739
- border-color: #a78bfa;
7740
8197
  outline: none;
7741
8198
  }
7742
8199
  .squisq-template-badge::before {
7743
- content: attr(data-template-label);
8200
+ content: "{";
8201
+ }
8202
+ .squisq-template-badge::after {
8203
+ content: "}";
7744
8204
  }
8205
+ .squisq-template-badge::before,
7745
8206
  .squisq-template-badge::after {
8207
+ display: inline-flex;
8208
+ position: relative;
8209
+ top: -1px;
8210
+ align-items: center;
8211
+ min-height: 22px;
8212
+ font-size: 22px;
8213
+ font-weight: 500;
8214
+ line-height: 1;
8215
+ opacity: 0.64;
8216
+ }
8217
+ .squisq-template-badge-core::before {
8218
+ content: attr(data-template-label);
8219
+ }
8220
+ .squisq-template-badge-core::before,
8221
+ .squisq-template-badge-core::after {
8222
+ transform: translateY(1px);
8223
+ }
8224
+ .squisq-template-badge-core::after {
7746
8225
  content: "\25be";
7747
8226
  font-size: 9px;
7748
8227
  line-height: 1;
7749
- opacity: 0.7;
8228
+ opacity: 0.62;
7750
8229
  }
7751
8230
  .squisq-template-badge.squisq-template-badge--empty {
7752
8231
  color: #94a3b8;
7753
8232
  background: transparent;
7754
- border-color: #d1d5db;
7755
- border-style: dashed;
7756
8233
  opacity: 0.5;
7757
8234
  }
7758
- .squisq-template-badge.squisq-template-badge--empty::before {
7759
- content: "Block";
8235
+ .squisq-template-badge.squisq-template-badge--empty .squisq-template-badge-core {
8236
+ color: #94a3b8;
8237
+ background: transparent;
8238
+ border-color: #d1d5db;
8239
+ border-style: dashed;
7760
8240
  font-weight: 500;
7761
8241
  }
7762
8242
  :is(h1, h2, h3, h4, h5, h6):hover > .squisq-template-badge--empty {
@@ -7765,9 +8245,13 @@
7765
8245
  .squisq-template-badge.squisq-template-badge--empty:hover,
7766
8246
  .squisq-template-badge.squisq-template-badge--empty:focus-visible {
7767
8247
  opacity: 1;
7768
- color: #6d28d9;
7769
- background: #ede9fe;
7770
- border-color: #c4b5fd;
8248
+ color: #b89266;
8249
+ }
8250
+ .squisq-template-badge.squisq-template-badge--empty:hover .squisq-template-badge-core,
8251
+ .squisq-template-badge.squisq-template-badge--empty:focus-visible .squisq-template-badge-core {
8252
+ color: #7c4a16;
8253
+ background: #f1e2ca;
8254
+ border-color: #d8c2a2;
7771
8255
  border-style: solid;
7772
8256
  }
7773
8257
  .squisq-wysiwyg-container[data-block-tags=hidden] .squisq-template-badge,
@@ -7963,11 +8447,11 @@
7963
8447
  }
7964
8448
  .squisq-wysiwyg-editor h1 {
7965
8449
  font-size: 2em;
7966
- margin: 1em 0 0.4em;
8450
+ margin: 0.45em 0 0.4em;
7967
8451
  }
7968
8452
  .squisq-wysiwyg-editor h2 {
7969
8453
  font-size: 1.5em;
7970
- margin: 1.15em 0 0.35em;
8454
+ margin: 0.65em 0 0.35em;
7971
8455
  }
7972
8456
  .squisq-wysiwyg-editor h3 {
7973
8457
  font-size: 1.17em;
@@ -8134,19 +8618,6 @@
8134
8618
  background: #fef2f2;
8135
8619
  color: #b91c1c;
8136
8620
  }
8137
- .squisq-preview-left-controls {
8138
- display: flex;
8139
- align-items: center;
8140
- gap: 8px;
8141
- margin-left: 8px;
8142
- flex: 0 0 auto;
8143
- }
8144
- .squisq-preview-seg-divider {
8145
- width: 1px;
8146
- height: 20px;
8147
- background: var(--squisq-border, #d1d5db);
8148
- flex: 0 0 auto;
8149
- }
8150
8621
  .squisq-preview-seg {
8151
8622
  display: inline-flex;
8152
8623
  align-items: center;
@@ -8199,11 +8670,14 @@
8199
8670
  display: flex;
8200
8671
  align-items: center;
8201
8672
  gap: 6px;
8202
- flex: 1 1 auto;
8673
+ flex: 1 1 0;
8203
8674
  min-width: 0;
8204
8675
  position: relative;
8205
8676
  padding-left: 9px;
8206
8677
  }
8678
+ .squisq-preview-controls[data-has-overflow=true] {
8679
+ min-width: 41px;
8680
+ }
8207
8681
  .squisq-preview-controls-probe {
8208
8682
  position: absolute;
8209
8683
  top: 0;
@@ -8235,20 +8709,19 @@
8235
8709
  flex: 0 0 auto;
8236
8710
  }
8237
8711
  .squisq-preview-controls-popover {
8238
- position: absolute;
8239
- top: 100%;
8240
- right: 0;
8712
+ position: fixed;
8241
8713
  z-index: 80;
8242
8714
  background: var(--squisq-bg, #fff);
8243
8715
  border: 1px solid var(--squisq-border, #d1d5db);
8244
8716
  border-radius: 6px;
8245
8717
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
8246
8718
  padding: 8px 12px;
8247
- margin-top: 4px;
8719
+ box-sizing: border-box;
8248
8720
  display: flex;
8249
8721
  flex-direction: column;
8250
8722
  gap: 8px;
8251
8723
  min-width: 180px;
8724
+ max-width: calc(100vw - 16px);
8252
8725
  }
8253
8726
  .squisq-preview-control--compact {
8254
8727
  display: flex;
@@ -8260,6 +8733,24 @@
8260
8733
  flex: 1;
8261
8734
  min-width: 0;
8262
8735
  }
8736
+ .squisq-preview-checkbox {
8737
+ display: inline-flex;
8738
+ align-items: center;
8739
+ gap: 6px;
8740
+ color: var(--squisq-text, #1f2937);
8741
+ font-size: 12px;
8742
+ font-weight: 500;
8743
+ line-height: 1;
8744
+ white-space: nowrap;
8745
+ cursor: pointer;
8746
+ }
8747
+ .squisq-preview-checkbox input {
8748
+ width: 13px;
8749
+ height: 13px;
8750
+ margin: 0;
8751
+ accent-color: #2563eb;
8752
+ cursor: pointer;
8753
+ }
8263
8754
  .squisq-wysiwyg-editor a {
8264
8755
  color: color-mix(in srgb, var(--squisq-theme-primary, #2563eb) 65%, var(--squisq-theme-text, #1f2937));
8265
8756
  text-decoration: underline;
@@ -8366,6 +8857,11 @@
8366
8857
  background: #1e40af;
8367
8858
  color: #93c5fd;
8368
8859
  }
8860
+ .squisq-editor-shell[data-theme=dark] .squisq-toolbar-files-badge {
8861
+ border-color: #111827;
8862
+ background: #60a5fa;
8863
+ color: #111827;
8864
+ }
8369
8865
  .squisq-editor-shell[data-theme=dark] .squisq-toolbar-separator {
8370
8866
  background: #4b5563;
8371
8867
  }
@@ -8397,6 +8893,9 @@
8397
8893
  .squisq-editor-shell[data-theme=dark] .squisq-toolbar-overflow-item {
8398
8894
  color: #d1d5db;
8399
8895
  }
8896
+ .squisq-editor-shell[data-theme=dark] .squisq-toolbar-overflow-heading {
8897
+ color: #6b7280;
8898
+ }
8400
8899
  .squisq-editor-shell[data-theme=dark] .squisq-toolbar-overflow-item:hover {
8401
8900
  background: #374151;
8402
8901
  }
@@ -8485,6 +8984,9 @@
8485
8984
  background: #111827;
8486
8985
  border-color: #374151;
8487
8986
  }
8987
+ .squisq-editor-shell[data-theme=dark] .squisq-template-gallery-content-preview {
8988
+ background: #0f172a;
8989
+ }
8488
8990
  .squisq-editor-shell[data-theme=dark] .squisq-template-gallery-card-name {
8489
8991
  color: #f3f4f6;
8490
8992
  }
@@ -8492,21 +8994,40 @@
8492
8994
  color: #9ca3af;
8493
8995
  }
8494
8996
  .squisq-editor-shell[data-theme=dark] .squisq-template-badge {
8495
- color: #a78bfa;
8496
- background: #2e1065;
8497
- border-color: #6d28d9;
8997
+ color: #f0b75a;
8998
+ background: transparent;
8999
+ border-color: transparent;
9000
+ }
9001
+ .squisq-editor-shell[data-theme=dark] .squisq-template-badge::before,
9002
+ .squisq-editor-shell[data-theme=dark] .squisq-template-badge::after {
9003
+ color: #d79a45;
9004
+ opacity: 0.82;
9005
+ }
9006
+ .squisq-editor-shell[data-theme=dark] .squisq-template-badge-core {
9007
+ color: #ffe3ad;
9008
+ background: #3a2818;
9009
+ border-color: #d79a45;
8498
9010
  }
8499
9011
  .squisq-editor-shell[data-theme=dark] .squisq-template-badge.squisq-template-badge--empty {
8500
- color: #64748b;
9012
+ color: #e0a84d;
8501
9013
  background: transparent;
8502
- border-color: #374151;
9014
+ opacity: 0.92;
9015
+ }
9016
+ .squisq-editor-shell[data-theme=dark] .squisq-template-badge.squisq-template-badge--empty .squisq-template-badge-core {
9017
+ color: #e7c08a;
9018
+ background: rgba(58, 40, 24, 0.34);
9019
+ border-color: #c6842e;
8503
9020
  border-style: dashed;
8504
9021
  }
8505
9022
  .squisq-editor-shell[data-theme=dark] .squisq-template-badge.squisq-template-badge--empty:hover,
8506
9023
  .squisq-editor-shell[data-theme=dark] .squisq-template-badge.squisq-template-badge--empty:focus-visible {
8507
- color: #c4b5fd;
8508
- background: #2e1065;
8509
- border-color: #6d28d9;
9024
+ color: #f0b75a;
9025
+ }
9026
+ .squisq-editor-shell[data-theme=dark] .squisq-template-badge.squisq-template-badge--empty:hover .squisq-template-badge-core,
9027
+ .squisq-editor-shell[data-theme=dark] .squisq-template-badge.squisq-template-badge--empty:focus-visible .squisq-template-badge-core {
9028
+ color: #ffe3ad;
9029
+ background: #3a2818;
9030
+ border-color: #d79a45;
8510
9031
  border-style: solid;
8511
9032
  }
8512
9033
  .squisq-editor-shell[data-theme=dark] .squisq-status-bar {
@@ -8675,6 +9196,14 @@
8675
9196
  color: #374151;
8676
9197
  border-bottom: 1px solid #f3f4f6;
8677
9198
  }
9199
+ .squisq-media-bin-item:hover,
9200
+ .squisq-media-bin-item:focus-visible {
9201
+ background: #f3f4f6;
9202
+ }
9203
+ .squisq-media-bin-item:focus-visible {
9204
+ outline: 2px solid #93c5fd;
9205
+ outline-offset: -2px;
9206
+ }
8678
9207
  .squisq-media-bin-thumb {
8679
9208
  width: 32px;
8680
9209
  height: 32px;
@@ -8703,10 +9232,71 @@
8703
9232
  text-overflow: ellipsis;
8704
9233
  white-space: nowrap;
8705
9234
  }
9235
+ .squisq-media-bin-detail-row {
9236
+ display: flex;
9237
+ align-items: center;
9238
+ gap: 6px;
9239
+ min-height: 14px;
9240
+ }
8706
9241
  .squisq-media-bin-size {
8707
9242
  font-size: 10px;
8708
9243
  color: #9ca3af;
8709
9244
  }
9245
+ .squisq-media-bin-unused-badge {
9246
+ display: inline-flex;
9247
+ align-items: center;
9248
+ height: 14px;
9249
+ padding: 0 5px;
9250
+ border-radius: 999px;
9251
+ background: #fef3c7;
9252
+ color: #92400e;
9253
+ font-size: 9px;
9254
+ font-weight: 700;
9255
+ line-height: 1;
9256
+ text-transform: uppercase;
9257
+ }
9258
+ .squisq-media-bin-context-menu {
9259
+ position: fixed;
9260
+ z-index: 1000;
9261
+ min-width: 152px;
9262
+ padding: 4px;
9263
+ border: 1px solid #d1d5db;
9264
+ border-radius: 6px;
9265
+ background: #fff;
9266
+ box-shadow: 0 12px 28px rgba(15, 23, 42, 0.18), 0 2px 6px rgba(15, 23, 42, 0.12);
9267
+ }
9268
+ .squisq-media-bin-context-menu-item {
9269
+ width: 100%;
9270
+ display: flex;
9271
+ align-items: center;
9272
+ gap: 8px;
9273
+ padding: 7px 9px;
9274
+ border: 0;
9275
+ border-radius: 4px;
9276
+ background: transparent;
9277
+ color: #374151;
9278
+ cursor: pointer;
9279
+ font: inherit;
9280
+ font-size: 12px;
9281
+ text-align: left;
9282
+ }
9283
+ .squisq-media-bin-context-menu-item:hover,
9284
+ .squisq-media-bin-context-menu-item:focus-visible {
9285
+ background: #f3f4f6;
9286
+ outline: none;
9287
+ }
9288
+ .squisq-media-bin-context-menu-item--danger {
9289
+ color: #b91c1c;
9290
+ }
9291
+ .squisq-media-bin-context-menu-item--danger:hover,
9292
+ .squisq-media-bin-context-menu-item--danger:focus-visible {
9293
+ background: #fee2e2;
9294
+ color: #991b1b;
9295
+ }
9296
+ .squisq-media-bin-context-menu-item:disabled {
9297
+ cursor: default;
9298
+ opacity: 0.55;
9299
+ }
8710
9300
  .squisq-media-bin--dark,
8711
9301
  .squisq-editor-shell[data-theme=dark] .squisq-media-bin {
8712
9302
  background: #1e293b;
@@ -8735,6 +9325,12 @@
8735
9325
  color: #d1d5db;
8736
9326
  border-bottom-color: #2d3748;
8737
9327
  }
9328
+ .squisq-media-bin--dark .squisq-media-bin-item:hover,
9329
+ .squisq-media-bin--dark .squisq-media-bin-item:focus-visible,
9330
+ .squisq-editor-shell[data-theme=dark] .squisq-media-bin .squisq-media-bin-item:hover,
9331
+ .squisq-editor-shell[data-theme=dark] .squisq-media-bin .squisq-media-bin-item:focus-visible {
9332
+ background: #273449;
9333
+ }
8738
9334
  .squisq-media-bin--dark .squisq-media-bin-icon,
8739
9335
  .squisq-editor-shell[data-theme=dark] .squisq-media-bin .squisq-media-bin-icon {
8740
9336
  background: #374151;
@@ -8747,10 +9343,42 @@
8747
9343
  .squisq-editor-shell[data-theme=dark] .squisq-media-bin .squisq-media-bin-size {
8748
9344
  color: #6b7280;
8749
9345
  }
9346
+ .squisq-media-bin--dark .squisq-media-bin-unused-badge,
9347
+ .squisq-editor-shell[data-theme=dark] .squisq-media-bin .squisq-media-bin-unused-badge {
9348
+ background: #78350f;
9349
+ color: #fde68a;
9350
+ }
8750
9351
  .squisq-media-bin--dark .squisq-media-bin-empty,
8751
9352
  .squisq-editor-shell[data-theme=dark] .squisq-media-bin .squisq-media-bin-empty {
8752
9353
  color: #6b7280;
8753
9354
  }
9355
+ .squisq-editor-shell[data-theme=dark] .squisq-media-bin-context-menu,
9356
+ .squisq-media-bin--dark .squisq-media-bin-context-menu {
9357
+ border-color: #4b5563;
9358
+ background: #111827;
9359
+ box-shadow: 0 12px 28px rgba(0, 0, 0, 0.42), 0 2px 6px rgba(0, 0, 0, 0.3);
9360
+ }
9361
+ .squisq-editor-shell[data-theme=dark] .squisq-media-bin-context-menu-item,
9362
+ .squisq-media-bin--dark .squisq-media-bin-context-menu-item {
9363
+ color: #d1d5db;
9364
+ }
9365
+ .squisq-editor-shell[data-theme=dark] .squisq-media-bin-context-menu-item:hover,
9366
+ .squisq-editor-shell[data-theme=dark] .squisq-media-bin-context-menu-item:focus-visible,
9367
+ .squisq-media-bin--dark .squisq-media-bin-context-menu-item:hover,
9368
+ .squisq-media-bin--dark .squisq-media-bin-context-menu-item:focus-visible {
9369
+ background: #1f2937;
9370
+ }
9371
+ .squisq-editor-shell[data-theme=dark] .squisq-media-bin-context-menu-item--danger,
9372
+ .squisq-media-bin--dark .squisq-media-bin-context-menu-item--danger {
9373
+ color: #fca5a5;
9374
+ }
9375
+ .squisq-editor-shell[data-theme=dark] .squisq-media-bin-context-menu-item--danger:hover,
9376
+ .squisq-editor-shell[data-theme=dark] .squisq-media-bin-context-menu-item--danger:focus-visible,
9377
+ .squisq-media-bin--dark .squisq-media-bin-context-menu-item--danger:hover,
9378
+ .squisq-media-bin--dark .squisq-media-bin-context-menu-item--danger:focus-visible {
9379
+ background: #450a0a;
9380
+ color: #fecaca;
9381
+ }
8754
9382
  .squisq-drop-overlay {
8755
9383
  position: absolute;
8756
9384
  inset: 0;
@@ -9444,6 +10072,14 @@
9444
10072
  flex-shrink: 0;
9445
10073
  margin-left: 2px;
9446
10074
  }
10075
+ .squisq-theme-customizer-trigger--label {
10076
+ width: auto;
10077
+ min-width: 0;
10078
+ padding: 4px 12px;
10079
+ }
10080
+ .squisq-theme-customizer-trigger-label {
10081
+ line-height: 1;
10082
+ }
9447
10083
  .squisq-theme-customizer-popover {
9448
10084
  position: absolute;
9449
10085
  top: 100%;
@@ -12787,6 +13423,25 @@
12787
13423
  border-radius: 8px;
12788
13424
  overflow: hidden;
12789
13425
  }
13426
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-shell {
13427
+ --squisq-surface: #0f172a;
13428
+ --squisq-surface-hover: #1e293b;
13429
+ --squisq-border: #475569;
13430
+ --squisq-text: #f8fafc;
13431
+ --squisq-text-muted: #94a3b8;
13432
+ }
13433
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-root,
13434
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-inline,
13435
+ .squisq-editor-shell[data-theme=dark] .squisq-diagram-inline {
13436
+ background: #0f172a;
13437
+ border-color: #475569;
13438
+ }
13439
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-layer--shape,
13440
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-layer--path,
13441
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-layer--text,
13442
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-extras {
13443
+ filter: invert(1) hue-rotate(180deg) saturate(0.9);
13444
+ }
12790
13445
  .squisq-scene-viewport {
12791
13446
  display: block;
12792
13447
  width: 100%;
@@ -12841,6 +13496,16 @@
12841
13496
  vector-effect: non-scaling-stroke;
12842
13497
  pointer-events: none;
12843
13498
  }
13499
+ .squisq-scene-connection-point {
13500
+ fill: #ffffff;
13501
+ stroke: #6366f1;
13502
+ stroke-width: 2;
13503
+ vector-effect: non-scaling-stroke;
13504
+ pointer-events: none;
13505
+ }
13506
+ .squisq-scene-connection-point--active {
13507
+ fill: #6366f1;
13508
+ }
12844
13509
  .squisq-scene-toolbar {
12845
13510
  position: absolute;
12846
13511
  top: 8px;
@@ -12968,6 +13633,40 @@
12968
13633
  border-color: #fecaca;
12969
13634
  color: #b91c1c;
12970
13635
  }
13636
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-toolbar,
13637
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-block-tools,
13638
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-block-actions,
13639
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-block-props {
13640
+ background: #111827;
13641
+ border-color: #475569;
13642
+ color: #e5e7eb;
13643
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.32);
13644
+ }
13645
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-tool,
13646
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-action {
13647
+ background: #111827;
13648
+ color: #e5e7eb;
13649
+ }
13650
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-tool:hover,
13651
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-action:hover:not(:disabled) {
13652
+ background: #1f2937;
13653
+ border-color: #64748b;
13654
+ color: #f8fafc;
13655
+ }
13656
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-tool--active,
13657
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-tool--active:hover {
13658
+ background: #312e81;
13659
+ border-color: #818cf8;
13660
+ color: #f8fafc;
13661
+ }
13662
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-action--danger {
13663
+ color: #fca5a5;
13664
+ }
13665
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-action--danger:hover:not(:disabled) {
13666
+ background: #450a0a;
13667
+ border-color: #f87171;
13668
+ color: #fecaca;
13669
+ }
12971
13670
  .squisq-scene-block-max {
12972
13671
  display: flex;
12973
13672
  flex-direction: row;
@@ -13016,6 +13715,16 @@
13016
13715
  left: auto;
13017
13716
  right: calc(100% + 6px);
13018
13717
  }
13718
+ .squisq-scene-inline-toolbar {
13719
+ display: flex;
13720
+ margin-bottom: 8px;
13721
+ }
13722
+ .squisq-scene-inline-toolbar .squisq-scene-block-toolbar {
13723
+ flex-wrap: wrap;
13724
+ justify-content: flex-start;
13725
+ width: 100%;
13726
+ margin: 0;
13727
+ }
13019
13728
  .squisq-scene-maximize-btn {
13020
13729
  position: absolute;
13021
13730
  top: 8px;
@@ -13040,6 +13749,17 @@
13040
13749
  border-color: #94a3b8;
13041
13750
  color: #0f172a;
13042
13751
  }
13752
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-maximize-btn {
13753
+ background: #111827;
13754
+ border-color: #475569;
13755
+ color: #e5e7eb;
13756
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.32);
13757
+ }
13758
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-maximize-btn:hover {
13759
+ background: #1f2937;
13760
+ border-color: #64748b;
13761
+ color: #f8fafc;
13762
+ }
13043
13763
  .squisq-scene-node-card {
13044
13764
  fill: var(--squisq-surface, #ffffff);
13045
13765
  stroke: var(--squisq-text, #1e293b);
@@ -13173,6 +13893,30 @@
13173
13893
  font-size: 22px;
13174
13894
  font-weight: 700;
13175
13895
  }
13896
+ .squisq-editor-shell[data-theme=dark] .squisq-shape-palette {
13897
+ background: #111827;
13898
+ color: #e5e7eb;
13899
+ border-color: #475569;
13900
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.42);
13901
+ }
13902
+ .squisq-editor-shell[data-theme=dark] .squisq-shape-palette-search,
13903
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-prop-select {
13904
+ background: #0f172a;
13905
+ color: #e5e7eb;
13906
+ border-color: #475569;
13907
+ }
13908
+ .squisq-editor-shell[data-theme=dark] .squisq-shape-palette-item:hover,
13909
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-prop-clear:hover {
13910
+ background: #1f2937;
13911
+ border-color: #64748b;
13912
+ }
13913
+ .squisq-editor-shell[data-theme=dark] .squisq-shape-thumb,
13914
+ .squisq-editor-shell[data-theme=dark] .squisq-shape-thumb-line {
13915
+ stroke: #e5e7eb;
13916
+ }
13917
+ .squisq-editor-shell[data-theme=dark] .squisq-shape-thumb-text {
13918
+ fill: #e5e7eb;
13919
+ }
13176
13920
  .squisq-scene-block-props {
13177
13921
  display: inline-flex;
13178
13922
  flex-direction: row;
@@ -13227,6 +13971,12 @@
13227
13971
  .squisq-scene-prop-clear:hover {
13228
13972
  background: #f1f5f9;
13229
13973
  }
13974
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-prop-color,
13975
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-prop-clear {
13976
+ background: #0f172a;
13977
+ color: #e5e7eb;
13978
+ border-color: #475569;
13979
+ }
13230
13980
  .squisq-scene-widget-host {
13231
13981
  margin: 0.75rem 0 1.25rem;
13232
13982
  }