superdoc 2.4.0-next.2 → 2.4.0-next.21

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 (62) hide show
  1. package/dist/chunks/{FindReplaceSurface-Dx0llWqP.cjs → FindReplaceSurface-0p7EtMZh.cjs} +4 -4
  2. package/dist/chunks/{FindReplaceSurface-BEW-1NhM.es.js → FindReplaceSurface-40AnrqWk.es.js} +5 -4
  3. package/dist/chunks/{PasswordPromptSurface-BUUVC2ee.cjs → PasswordPromptSurface-31lYPcCK.cjs} +4 -3
  4. package/dist/chunks/{PasswordPromptSurface-BA6HHqEa.es.js → PasswordPromptSurface-CwYeO3iQ.es.js} +4 -2
  5. package/dist/chunks/{PdfViewer-CNOtyS-I.es.js → PdfViewer-D8h7LRZy.es.js} +103 -19
  6. package/dist/chunks/{PdfViewer-qpvzwYMz.cjs → PdfViewer-Dug6yDRC.cjs} +105 -20
  7. package/dist/chunks/_plugin-vue_export-helper-BOaGB7Aw.es.js +8 -0
  8. package/dist/chunks/_plugin-vue_export-helper-SDR04tiH.cjs +13 -0
  9. package/dist/chunks/{blank-docx-DP8RUPW-.cjs → blank-docx-BuFAbRjs.cjs} +2 -0
  10. package/dist/chunks/{blank-docx-XRX6Ker2.es.js → blank-docx-DzQccOlW.es.js} +2 -0
  11. package/dist/chunks/constants-B6VBlmKp.es.js +4 -0
  12. package/dist/chunks/constants-DpXuDx_g.cjs +9 -0
  13. package/dist/chunks/{create-super-doc-ui-D4kk9AjM.es.js → create-super-doc-ui-CFsY0uxw.es.js} +2177 -581
  14. package/dist/chunks/{create-super-doc-ui-DXdWuTzm.cjs → create-super-doc-ui-jSJQis_0.cjs} +1987 -619
  15. package/dist/chunks/{eventemitter3-DqY4aSMf.cjs → eventemitter3-C_TAnXOl.cjs} +125 -16
  16. package/dist/chunks/{eventemitter3-Bt2s0X0a.es.js → eventemitter3-DEIiXiH2.es.js} +124 -16
  17. package/dist/chunks/jszip-BzJ3CyxR.es.js +4717 -0
  18. package/dist/chunks/jszip-D8mAFF-r.cjs +4758 -0
  19. package/dist/chunks/{rolldown-runtime-D7PMmH3s.es.js → rolldown-runtime-0pSA04fp.es.js} +12 -3
  20. package/dist/chunks/{rolldown-runtime-1Y-nnZJ3.cjs → rolldown-runtime-74VwNCz7.cjs} +11 -2
  21. package/dist/chunks/{uuid-CFp0WGVU.cjs → uuid-BhG0ngwk.cjs} +10 -6
  22. package/dist/chunks/{uuid-B2Sqk-3p.es.js → uuid-H0Xcmmhy.es.js} +8 -3
  23. package/dist/collaboration-upgrade-engine.cjs +34 -9
  24. package/dist/collaboration-upgrade-engine.es.js +30 -5
  25. package/dist/document-api/src/comments/comments.types.d.ts +7 -0
  26. package/dist/document-api/src/types/track-changes.types.d.ts +1 -3
  27. package/dist/layout-engine/contracts/src/incremental-dependency.d.ts +22 -2
  28. package/dist/layout-engine/contracts/src/index.d.ts +1 -1
  29. package/dist/layout-engine/layout-bridge/src/incrementalLayout.d.ts +2 -1
  30. package/dist/layout-engine/layout-bridge/src/index.d.ts +1 -0
  31. package/dist/public/ui-react.cjs +66 -2
  32. package/dist/public/ui-react.es.js +66 -1
  33. package/dist/public/ui.cjs +1 -1
  34. package/dist/public/ui.es.js +1 -1
  35. package/dist/style.css +104 -69
  36. package/dist/style.layered.css +104 -69
  37. package/dist/superdoc/src/core/SuperDoc.d.ts +4 -0
  38. package/dist/superdoc/src/core/types/index.d.ts +505 -42
  39. package/dist/superdoc/src/helpers/comment-small-screen.d.ts +10 -0
  40. package/dist/superdoc/src/helpers/v2-review-mutation-impact.d.ts +1 -0
  41. package/dist/superdoc/src/helpers/v2-review-mutation-reconciler.d.ts +1 -1
  42. package/dist/superdoc/src/helpers/v2-typing-review-hydration.d.ts +16 -0
  43. package/dist/superdoc/src/internal/toolbar/built-in/ToolbarButton.vue.d.ts +4 -4
  44. package/dist/superdoc/src/internal/toolbar/built-in-toolbar.d.ts +11 -0
  45. package/dist/superdoc/src/internal/toolbar/compatibility-catalog.d.ts +1 -1
  46. package/dist/superdoc/src/public/index.d.cts +22 -0
  47. package/dist/superdoc/src/public/index.d.ts +11 -0
  48. package/dist/superdoc/src/public/ui/types.d.ts +25 -1
  49. package/dist/superdoc/src/stores/comments-store.d.ts +100 -22
  50. package/dist/superdoc/src/stores/superdoc-store.d.ts +300 -66
  51. package/dist/superdoc.cjs +6678 -1391
  52. package/dist/superdoc.es.js +6556 -1268
  53. package/dist-cdn/style.layered.css +1 -1
  54. package/dist-cdn/superdoc.min.css +1 -1
  55. package/dist-cdn/superdoc.min.js +37 -37
  56. package/package.json +14 -14
  57. package/dist/chunks/_plugin-vue_export-helper-BTwbGDKw.cjs +0 -11
  58. package/dist/chunks/_plugin-vue_export-helper-CInC0bKI.es.js +0 -6
  59. package/dist/chunks/constants-CY3R3_kF.es.js +0 -3
  60. package/dist/chunks/constants-sbCZ2O_A.cjs +0 -14
  61. package/dist/chunks/jszip-C8srOKAO.es.js +0 -4650
  62. package/dist/chunks/jszip-Cs9JBLlJ.cjs +0 -4691
package/dist/style.css CHANGED
@@ -366,6 +366,7 @@
366
366
  *
367
367
  * These aliases will be removed in the next major version.
368
368
  */
369
+
369
370
  :root {
370
371
  /* Old semantic names that map to primitives (no new-token equivalent) */
371
372
  --sd-surface-canvas: var(--sd-color-gray-50);
@@ -437,6 +438,7 @@
437
438
  --sd-ui-surface-shadow: 0 1px 3px rgba(60, 64, 67, 0.3), 0 4px 8px 3px rgba(60, 64, 67, 0.15);
438
439
  --sd-ui-dialog-backdrop: rgba(0, 0, 0, 0.32);
439
440
  }
441
+
440
442
  /* Preset theme: Microsoft Word-like */
441
443
  .sd-theme-word {
442
444
  /* UI base */
@@ -497,6 +499,7 @@
497
499
  --sd-ui-surface-shadow: 0 2px 6px rgba(0, 0, 0, 0.14), 0 8px 24px rgba(0, 0, 0, 0.1);
498
500
  --sd-ui-dialog-backdrop: rgba(0, 0, 0, 0.4);
499
501
  }
502
+
500
503
  /* Preset theme: Blueprint */
501
504
  .sd-theme-blueprint {
502
505
  /* UI base */
@@ -567,12 +570,14 @@
567
570
  .superdoc-toolbar ::after {
568
571
  box-sizing: border-box;
569
572
  }
573
+
570
574
  .superdoc .sd-disabled,
571
575
  .superdoc-toolbar .sd-disabled {
572
576
  opacity: 0.5;
573
577
  cursor: not-allowed;
574
578
  pointer-events: none;
575
579
  }
580
+
576
581
  .sd-button {
577
582
  border-radius: 8px;
578
583
  background-color: white;
@@ -584,20 +589,25 @@
584
589
  cursor: pointer;
585
590
  transition: all 250ms ease;
586
591
  }
592
+
587
593
  .sd-button:hover {
588
594
  background-color: #dbdbdb;
589
595
  }
596
+
590
597
  .sd-button.primary {
591
598
  background-color: #1355ff;
592
599
  border: none;
593
600
  color: white;
594
601
  }
602
+
595
603
  .sd-button.primary:hover {
596
604
  background-color: #0d3fcc;
597
605
  }
606
+
598
607
  .sd-comment-box {
599
608
  width: 300px;
600
609
  }
610
+
601
611
  .superdoc-field {
602
612
  border-radius: 8px;
603
613
  padding: 12px;
@@ -605,15 +615,18 @@
605
615
  border: 1px solid #dbdbdb;
606
616
  width: 100%;
607
617
  }
618
+
608
619
  .superdoc-field:focus,
609
620
  .superdoc-field:active {
610
621
  border: 1px solid #1355ff;
611
622
  }
623
+
612
624
  .superdoc-field .ProseMirror {
613
625
  border: 0;
614
626
  outline: 0;
615
627
  margin: 0;
616
628
  }
629
+
617
630
  .sd-editor-placeholder::before {
618
631
  content: attr(data-placeholder);
619
632
  color: #aaa;
@@ -627,6 +640,7 @@
627
640
  display: block;
628
641
  fill: currentColor;
629
642
  }
643
+
630
644
  .superdoc-toolbar svg {
631
645
  width: 100%;
632
646
  height: 100%;
@@ -634,9 +648,11 @@
634
648
  fill: currentColor;
635
649
  pointer-events: none;
636
650
  }
651
+
637
652
  .superdoc-toolbar svg path {
638
653
  stroke: currentColor;
639
654
  }
655
+
640
656
  /* Web Layout Mode (OOXML ST_View 'web') - content reflows to container width */
641
657
  .superdoc--web-layout,
642
658
  .superdoc--web-layout .superdoc__layers,
@@ -644,7 +660,9 @@
644
660
  .superdoc--web-layout .superdoc__sub-document {
645
661
  width: 100%;
646
662
  }
663
+
647
664
  /* --- Upgrade transition (upgradeToCollaboration) --- */
665
+
648
666
  .sd-upgrade-overlay {
649
667
  position: absolute;
650
668
  inset: 0;
@@ -652,15 +670,19 @@
652
670
  pointer-events: none;
653
671
  overflow: hidden;
654
672
  }
673
+
655
674
  .sd-upgrade-overlay [contenteditable] {
656
675
  pointer-events: none;
657
676
  user-select: none;
658
677
  }
678
+
659
679
  /* visibility: hidden (not display: none) so layout engine can still measure */
660
680
  .sd-upgrade-hidden {
661
681
  visibility: hidden !important;
662
682
  }
683
+
663
684
  /* --- Search highlights (transient, used in both editor and presentation mode) --- */
685
+
664
686
  /* AIDEV-NOTE: SD-3045. The DomPainter writes `style.backgroundColor = run.highlight`
665
687
  * inline on the same span the search DecorationBridge tags. Inline styles win over
666
688
  * class selectors, so on every run whose source rPr carries a highlight mark
@@ -673,15 +695,19 @@
673
695
  .superdoc .ProseMirror-search-match:not([data-sd-search-exact-highlight]) {
674
696
  background: var(--sd-ui-search-match-bg) !important;
675
697
  }
698
+
676
699
  .superdoc .ProseMirror-active-search-match:not([data-sd-search-exact-highlight]) {
677
700
  background: var(--sd-ui-search-match-active-bg) !important;
678
701
  }
702
+
679
703
  ::highlight(superdoc-search-match) {
680
704
  background: var(--sd-ui-search-match-bg);
681
705
  }
706
+
682
707
  ::highlight(superdoc-search-active-match) {
683
708
  background: var(--sd-ui-search-match-active-bg);
684
709
  }
710
+
685
711
  /* Proofing underlines are render-only v1/v2 UI state. They must not alter DOCX
686
712
  * bytes or layout identity; the runtime owns adding/removing these classes. */
687
713
  .superdoc .sd-proofing-spelling,
@@ -692,15 +718,19 @@
692
718
  text-decoration-thickness: var(--sd-proofing-underline-thickness, 1.5px);
693
719
  text-underline-offset: var(--sd-proofing-underline-offset, 2px);
694
720
  }
721
+
695
722
  .superdoc .sd-proofing-spelling {
696
723
  text-decoration-color: var(--sd-proofing-spelling-color, #e53e3e);
697
724
  }
725
+
698
726
  .superdoc .sd-proofing-grammar {
699
727
  text-decoration-color: var(--sd-proofing-grammar-color, #3182ce);
700
728
  }
729
+
701
730
  .superdoc .sd-proofing-style {
702
731
  text-decoration-color: var(--sd-proofing-style-color, #805ad5);
703
732
  }
733
+
704
734
  /* CSS Custom Highlight variant: the v2 runtime paints per-word squiggles over
705
735
  * exact text ranges (no DOM mutation). Highlight names match the class names. */
706
736
  ::highlight(sd-proofing-spelling),
@@ -711,15 +741,19 @@
711
741
  text-decoration-thickness: var(--sd-proofing-underline-thickness, 1.5px);
712
742
  text-underline-offset: var(--sd-proofing-underline-offset, 2px);
713
743
  }
744
+
714
745
  ::highlight(sd-proofing-spelling) {
715
746
  text-decoration-color: var(--sd-proofing-spelling-color, #e53e3e);
716
747
  }
748
+
717
749
  ::highlight(sd-proofing-grammar) {
718
750
  text-decoration-color: var(--sd-proofing-grammar-color, #3182ce);
719
751
  }
752
+
720
753
  ::highlight(sd-proofing-style) {
721
754
  text-decoration-color: var(--sd-proofing-style-color, #805ad5);
722
755
  }
756
+
723
757
  /* Contained Mode - fixed-height container embedding with internal scrolling */
724
758
  .superdoc--contained,
725
759
  .superdoc--contained .superdoc__layers,
@@ -727,6 +761,7 @@
727
761
  .superdoc--contained .superdoc__sub-document {
728
762
  height: 100%;
729
763
  }
764
+
730
765
  /* Sub-document scroll fallback for non-document-editor content (PDF, HTML).
731
766
  * The document editor manages its own scroll container, but PDF/HTML viewers
732
767
  * don't, so they need the sub-document to scroll. */
@@ -1375,28 +1410,28 @@ img[data-v-c95b2073] {
1375
1410
  background-color: #1355ff7f;
1376
1411
  }
1377
1412
 
1378
- .comment-placeholder[data-v-a0a841ce] {
1413
+ .comment-placeholder[data-v-d8d03209] {
1379
1414
  position: absolute;
1380
1415
  width: 300px;
1381
1416
  transition: top 0.3s ease;
1382
1417
  }
1383
- .comment-placeholder.is-direct-decision-continuity-target[data-v-a0a841ce] .overflow-menu {
1418
+ .comment-placeholder.is-direct-decision-continuity-target[data-v-d8d03209] .overflow-menu {
1384
1419
  opacity: 1;
1385
1420
  pointer-events: auto;
1386
1421
  }
1387
- .floating-comment[data-v-a0a841ce] {
1422
+ .floating-comment[data-v-d8d03209] {
1388
1423
  position: relative;
1389
1424
  display: block;
1390
1425
  min-width: 300px;
1391
1426
  }
1392
- .sidebar-container[data-v-a0a841ce] {
1427
+ .sidebar-container[data-v-d8d03209] {
1393
1428
  position: absolute;
1394
1429
  width: 300px;
1395
1430
  min-height: 300px;
1396
1431
  transition: transform 0.3s ease;
1397
1432
  will-change: transform;
1398
1433
  }
1399
- .section-wrapper[data-v-a0a841ce] {
1434
+ .section-wrapper[data-v-d8d03209] {
1400
1435
  position: relative;
1401
1436
  min-height: 100%;
1402
1437
  width: 300px;
@@ -1734,11 +1769,11 @@ img[data-v-c95b2073] {
1734
1769
  pointer-events: auto;
1735
1770
  }
1736
1771
 
1737
- .superdoc[data-v-d75089d2] {
1772
+ .superdoc[data-v-6833a014] {
1738
1773
  display: flex;
1739
1774
  position: relative;
1740
1775
  }
1741
- .sd-visually-hidden[data-v-d75089d2] {
1776
+ .sd-visually-hidden[data-v-6833a014] {
1742
1777
  position: absolute;
1743
1778
  width: 1px;
1744
1779
  height: 1px;
@@ -1749,30 +1784,30 @@ img[data-v-c95b2073] {
1749
1784
  white-space: nowrap;
1750
1785
  border: 0;
1751
1786
  }
1752
- .right-sidebar[data-v-d75089d2] {
1787
+ .right-sidebar[data-v-6833a014] {
1753
1788
  min-width: 320px;
1754
1789
  height: 100%;
1755
1790
  }
1756
- .floating-comments[data-v-d75089d2] {
1791
+ .floating-comments[data-v-6833a014] {
1757
1792
  min-width: 300px;
1758
1793
  width: 300px;
1759
1794
  height: 100%;
1760
1795
  overflow: visible;
1761
1796
  }
1762
- .superdoc__layers[data-v-d75089d2] {
1797
+ .superdoc__layers[data-v-6833a014] {
1763
1798
  height: 100%;
1764
1799
  position: relative;
1765
1800
  box-sizing: border-box;
1766
1801
  }
1767
- .superdoc__document[data-v-d75089d2] {
1802
+ .superdoc__document[data-v-6833a014] {
1768
1803
  width: 100%;
1769
1804
  position: relative;
1770
1805
  }
1771
- .superdoc__sub-document[data-v-d75089d2] {
1806
+ .superdoc__sub-document[data-v-6833a014] {
1772
1807
  width: 100%;
1773
1808
  position: relative;
1774
1809
  }
1775
- .superdoc__selection-layer[data-v-d75089d2] {
1810
+ .superdoc__selection-layer[data-v-6833a014] {
1776
1811
  position: absolute;
1777
1812
  min-width: 100%;
1778
1813
  min-height: 100%;
@@ -1783,13 +1818,13 @@ img[data-v-c95b2073] {
1783
1818
  /* SD-3497: PDF whiteboard overlay sits above the rendered PDF canvas but below
1784
1819
  the PDF comment anchors (z-index 6 in PdfCommentsLayer) so anchors stay
1785
1820
  clickable, and below the selection layer (z-index 10). */
1786
- .superdoc__whiteboard-layer[data-v-d75089d2] {
1821
+ .superdoc__whiteboard-layer[data-v-6833a014] {
1787
1822
  z-index: 4;
1788
1823
  }
1789
- .superdoc__temp-selection[data-v-d75089d2] {
1824
+ .superdoc__temp-selection[data-v-6833a014] {
1790
1825
  position: absolute;
1791
1826
  }
1792
- .superdoc__right-sidebar[data-v-d75089d2] {
1827
+ .superdoc__right-sidebar[data-v-6833a014] {
1793
1828
  width: 320px;
1794
1829
  min-width: 320px;
1795
1830
  padding: 0 10px;
@@ -1797,7 +1832,7 @@ img[data-v-c95b2073] {
1797
1832
  position: relative;
1798
1833
  z-index: 2;
1799
1834
  }
1800
- .superdoc__compact-comment-popover[data-v-d75089d2] {
1835
+ .superdoc__compact-comment-popover[data-v-6833a014] {
1801
1836
  position: absolute;
1802
1837
  top: 12px;
1803
1838
  right: 12px;
@@ -1806,14 +1841,14 @@ img[data-v-c95b2073] {
1806
1841
  }
1807
1842
 
1808
1843
  /* Tools styles */
1809
- .tools[data-v-d75089d2] {
1844
+ .tools[data-v-6833a014] {
1810
1845
  position: absolute;
1811
1846
  z-index: 3;
1812
1847
  display: flex;
1813
1848
  flex-direction: column;
1814
1849
  gap: var(--sd-ui-tools-gap, 6px);
1815
1850
  }
1816
- .tools-item[data-v-d75089d2] {
1851
+ .tools-item[data-v-6833a014] {
1817
1852
  display: flex;
1818
1853
  align-items: center;
1819
1854
  justify-content: center;
@@ -1824,10 +1859,10 @@ img[data-v-c95b2073] {
1824
1859
  cursor: pointer;
1825
1860
  position: relative;
1826
1861
  }
1827
- .tools-item i[data-v-d75089d2] {
1862
+ .tools-item i[data-v-6833a014] {
1828
1863
  cursor: pointer;
1829
1864
  }
1830
- .superdoc__tools-icon[data-v-d75089d2] {
1865
+ .superdoc__tools-icon[data-v-6833a014] {
1831
1866
  width: var(--sd-ui-tools-icon-size, 20px);
1832
1867
  height: var(--sd-ui-tools-icon-size, 20px);
1833
1868
  flex-shrink: 0;
@@ -1842,22 +1877,22 @@ img[data-v-c95b2073] {
1842
1877
 
1843
1878
  /* 834px is iPad screen size in portrait orientation */
1844
1879
  @media (max-width: 834px) {
1845
- .superdoc .superdoc__layers[data-v-d75089d2] {
1880
+ .superdoc .superdoc__layers[data-v-6833a014] {
1846
1881
  margin: 0;
1847
1882
  border: 0 !important;
1848
1883
  box-shadow: none;
1849
1884
  }
1850
- .superdoc__sub-document[data-v-d75089d2] {
1885
+ .superdoc__sub-document[data-v-6833a014] {
1851
1886
  max-width: 100%;
1852
1887
  }
1853
- .superdoc__right-sidebar[data-v-d75089d2] {
1888
+ .superdoc__right-sidebar[data-v-6833a014] {
1854
1889
  padding: 10px;
1855
1890
  position: relative;
1856
1891
  }
1857
1892
  }
1858
1893
 
1859
1894
  /* AI Writer styles */
1860
- .ai-writer-container[data-v-d75089d2] {
1895
+ .ai-writer-container[data-v-6833a014] {
1861
1896
  position: fixed;
1862
1897
  z-index: 1000;
1863
1898
  background: white;
@@ -1873,10 +1908,10 @@ img[data-v-c95b2073] {
1873
1908
  transform: translateY(-50%);
1874
1909
  z-index: 50;
1875
1910
  } */
1876
- .ai-tool > svg[data-v-d75089d2] {
1911
+ .ai-tool > svg[data-v-6833a014] {
1877
1912
  fill: transparent;
1878
1913
  }
1879
- .ai-tool[data-v-d75089d2]::before {
1914
+ .ai-tool[data-v-6833a014]::before {
1880
1915
  content: '';
1881
1916
  position: absolute;
1882
1917
  width: 20px;
@@ -1897,7 +1932,7 @@ img[data-v-c95b2073] {
1897
1932
  filter: brightness(1.2);
1898
1933
  transition: filter 0.2s ease;
1899
1934
  }
1900
- .ai-tool[data-v-d75089d2]:hover::before {
1935
+ .ai-tool[data-v-6833a014]:hover::before {
1901
1936
  filter: brightness(1.3);
1902
1937
  }
1903
1938
 
@@ -2434,7 +2469,7 @@ img[data-v-c95b2073] {
2434
2469
  transform: scale(1);
2435
2470
  }
2436
2471
 
2437
- .button-group[data-v-590293ab] {
2472
+ .button-group[data-v-2bc00f65] {
2438
2473
  display: flex;
2439
2474
  }
2440
2475
 
@@ -2921,7 +2956,7 @@ img[data-v-c95b2073] {
2921
2956
  background: var(--sd-ui-password-prompt-submit-hover-bg, var(--sd-ui-action-hover));
2922
2957
  }
2923
2958
 
2924
- .sd-find-replace[data-v-fed15bd3] {
2959
+ .sd-find-replace[data-v-41f37c29] {
2925
2960
  display: flex;
2926
2961
  flex-direction: column;
2927
2962
  gap: var(--sd-ui-find-replace-gap, 6px);
@@ -2929,7 +2964,7 @@ img[data-v-c95b2073] {
2929
2964
  so it needs room to breathe before the query starts truncating. */
2930
2965
  min-width: var(--sd-ui-find-replace-min-width, 380px);
2931
2966
  }
2932
- .sd-find-replace__row[data-v-fed15bd3] {
2967
+ .sd-find-replace__row[data-v-41f37c29] {
2933
2968
  display: flex;
2934
2969
  align-items: center;
2935
2970
  gap: var(--sd-ui-find-replace-gap, 6px);
@@ -2937,13 +2972,13 @@ img[data-v-c95b2073] {
2937
2972
 
2938
2973
  /* Mirrors the expander's footprint so the replace field and the error line
2939
2974
  align with the find field. */
2940
- .sd-find-replace__row-indent[data-v-fed15bd3] {
2975
+ .sd-find-replace__row-indent[data-v-41f37c29] {
2941
2976
  flex: 0 0 var(--sd-ui-find-replace-expander-size, 24px);
2942
2977
  }
2943
2978
 
2944
2979
  /* The field carries the border; the input inside is naked so the count and
2945
2980
  the query toggles sit visually inside the control. */
2946
- .sd-find-replace__field[data-v-fed15bd3] {
2981
+ .sd-find-replace__field[data-v-41f37c29] {
2947
2982
  flex: 1;
2948
2983
  min-width: 0;
2949
2984
  display: flex;
@@ -2958,24 +2993,24 @@ img[data-v-c95b2073] {
2958
2993
  border-color 0.12s ease-out,
2959
2994
  box-shadow 0.12s ease-out;
2960
2995
  }
2961
- .sd-find-replace__field[data-v-fed15bd3]:focus-within {
2996
+ .sd-find-replace__field[data-v-41f37c29]:focus-within {
2962
2997
  border-color: var(--sd-ui-find-replace-input-focus-border, var(--sd-ui-action));
2963
2998
  box-shadow: 0 0 0 3px
2964
2999
  var(--sd-ui-find-replace-input-focus-ring, color-mix(in srgb, var(--sd-ui-action) 15%, transparent));
2965
3000
  }
2966
- .sd-find-replace__field--error[data-v-fed15bd3],
2967
- .sd-find-replace__field--error[data-v-fed15bd3]:focus-within {
3001
+ .sd-find-replace__field--error[data-v-41f37c29],
3002
+ .sd-find-replace__field--error[data-v-41f37c29]:focus-within {
2968
3003
  border-color: var(--sd-ui-find-replace-error-color, #b3261e);
2969
3004
  }
2970
- .sd-find-replace__field--error[data-v-fed15bd3]:focus-within {
3005
+ .sd-find-replace__field--error[data-v-41f37c29]:focus-within {
2971
3006
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--sd-ui-find-replace-error-color, #b3261e) 12%, transparent);
2972
3007
  }
2973
- .sd-find-replace__search-icon[data-v-fed15bd3] {
3008
+ .sd-find-replace__search-icon[data-v-41f37c29] {
2974
3009
  color: var(--sd-ui-find-replace-search-icon-color, #9ca3af);
2975
3010
  flex-shrink: 0;
2976
3011
  margin-right: 6px;
2977
3012
  }
2978
- .sd-find-replace__input[data-v-fed15bd3] {
3013
+ .sd-find-replace__input[data-v-41f37c29] {
2979
3014
  flex: 1;
2980
3015
  min-width: 0;
2981
3016
  height: 100%;
@@ -2987,7 +3022,7 @@ img[data-v-c95b2073] {
2987
3022
  border: none;
2988
3023
  outline: none;
2989
3024
  }
2990
- .sd-find-replace__count[data-v-fed15bd3] {
3025
+ .sd-find-replace__count[data-v-41f37c29] {
2991
3026
  font-size: var(--sd-ui-find-replace-count-font-size, 12px);
2992
3027
  color: var(--sd-ui-find-replace-count-color, #6b7280);
2993
3028
  pointer-events: none;
@@ -2997,23 +3032,23 @@ img[data-v-c95b2073] {
2997
3032
  padding: 0 5px 0 4px;
2998
3033
  flex-shrink: 0;
2999
3034
  }
3000
- .sd-find-replace__divider[data-v-fed15bd3] {
3035
+ .sd-find-replace__divider[data-v-41f37c29] {
3001
3036
  width: 1px;
3002
3037
  height: 16px;
3003
3038
  margin: 0 4px;
3004
3039
  background: var(--sd-ui-find-replace-input-border, var(--sd-ui-border));
3005
3040
  flex-shrink: 0;
3006
3041
  }
3007
- .sd-find-replace__nav[data-v-fed15bd3] {
3042
+ .sd-find-replace__nav[data-v-41f37c29] {
3008
3043
  display: flex;
3009
3044
  align-items: center;
3010
3045
  gap: var(--sd-ui-find-replace-nav-gap, 2px);
3011
3046
  flex-shrink: 0;
3012
3047
  }
3013
- .sd-find-replace__nav--actions[data-v-fed15bd3] {
3048
+ .sd-find-replace__nav--actions[data-v-41f37c29] {
3014
3049
  gap: var(--sd-ui-find-replace-gap, 6px);
3015
3050
  }
3016
- .sd-find-replace__btn[data-v-fed15bd3] {
3051
+ .sd-find-replace__btn[data-v-41f37c29] {
3017
3052
  display: inline-flex;
3018
3053
  align-items: center;
3019
3054
  justify-content: center;
@@ -3028,47 +3063,47 @@ img[data-v-c95b2073] {
3028
3063
  border-color 0.12s ease-out,
3029
3064
  transform 90ms ease-out;
3030
3065
  }
3031
- .sd-find-replace__btn[data-v-fed15bd3]:active:not(:disabled) {
3066
+ .sd-find-replace__btn[data-v-41f37c29]:active:not(:disabled) {
3032
3067
  transform: scale(0.96);
3033
3068
  }
3034
- .sd-find-replace__btn[data-v-fed15bd3]:focus-visible {
3069
+ .sd-find-replace__btn[data-v-41f37c29]:focus-visible {
3035
3070
  outline: 2px solid var(--sd-ui-action);
3036
3071
  outline-offset: 1px;
3037
3072
  }
3038
- .sd-find-replace__btn[data-v-fed15bd3]:disabled {
3073
+ .sd-find-replace__btn[data-v-41f37c29]:disabled {
3039
3074
  opacity: var(--sd-ui-find-replace-btn-disabled-opacity, 0.4);
3040
3075
  cursor: not-allowed;
3041
3076
  }
3042
- .sd-find-replace__btn--icon[data-v-fed15bd3] {
3077
+ .sd-find-replace__btn--icon[data-v-41f37c29] {
3043
3078
  width: var(--sd-ui-find-replace-btn-size, 28px);
3044
3079
  height: var(--sd-ui-find-replace-btn-size, 28px);
3045
3080
  border-radius: var(--sd-ui-find-replace-btn-radius, 6px);
3046
3081
  color: var(--sd-ui-find-replace-btn-color, #4b5563);
3047
3082
  }
3048
- .sd-find-replace__btn--icon[data-v-fed15bd3]:hover:not(:disabled) {
3083
+ .sd-find-replace__btn--icon[data-v-41f37c29]:hover:not(:disabled) {
3049
3084
  background: var(--sd-ui-find-replace-btn-hover-bg, color-mix(in srgb, currentColor 8%, transparent));
3050
3085
  }
3051
- .sd-find-replace__btn--expander[data-v-fed15bd3] {
3086
+ .sd-find-replace__btn--expander[data-v-41f37c29] {
3052
3087
  width: var(--sd-ui-find-replace-expander-size, 24px);
3053
3088
  height: var(--sd-ui-find-replace-expander-size, 24px);
3054
3089
  border-radius: var(--sd-ui-find-replace-btn-radius, 6px);
3055
3090
  color: var(--sd-ui-find-replace-count-color, #6b7280);
3056
3091
  flex-shrink: 0;
3057
3092
  }
3058
- .sd-find-replace__btn--expander[data-v-fed15bd3]:hover:not(:disabled) {
3093
+ .sd-find-replace__btn--expander[data-v-41f37c29]:hover:not(:disabled) {
3059
3094
  background: var(--sd-ui-find-replace-btn-hover-bg, color-mix(in srgb, currentColor 8%, transparent));
3060
3095
  color: var(--sd-ui-find-replace-btn-color, var(--sd-ui-text));
3061
3096
  }
3062
- .sd-find-replace__btn--expander svg[data-v-fed15bd3] {
3097
+ .sd-find-replace__btn--expander svg[data-v-41f37c29] {
3063
3098
  transition: transform 0.16s ease-out;
3064
3099
  }
3065
- .sd-find-replace__btn--expander-open svg[data-v-fed15bd3] {
3100
+ .sd-find-replace__btn--expander-open svg[data-v-41f37c29] {
3066
3101
  transform: rotate(90deg);
3067
3102
  }
3068
3103
 
3069
3104
  /* Query-scoped toggles inside the field (match case / diacritics / regex).
3070
3105
  Kept compact so they never crowd the query text. */
3071
- .sd-find-replace__btn--toggle[data-v-fed15bd3] {
3106
+ .sd-find-replace__btn--toggle[data-v-41f37c29] {
3072
3107
  height: 20px;
3073
3108
  min-width: 20px;
3074
3109
  padding: var(--sd-ui-find-replace-btn-toggle-padding, 0 3px);
@@ -3079,15 +3114,15 @@ img[data-v-c95b2073] {
3079
3114
  color: var(--sd-ui-find-replace-count-color, #6b7280);
3080
3115
  flex-shrink: 0;
3081
3116
  }
3082
- .sd-find-replace__btn--toggle + .sd-find-replace__btn--toggle[data-v-fed15bd3] {
3117
+ .sd-find-replace__btn--toggle + .sd-find-replace__btn--toggle[data-v-41f37c29] {
3083
3118
  margin-left: 1px;
3084
3119
  }
3085
- .sd-find-replace__btn--toggle[data-v-fed15bd3]:hover:not(:disabled) {
3120
+ .sd-find-replace__btn--toggle[data-v-41f37c29]:hover:not(:disabled) {
3086
3121
  background: var(--sd-ui-find-replace-btn-hover-bg, color-mix(in srgb, currentColor 8%, transparent));
3087
3122
  color: var(--sd-ui-find-replace-btn-color, var(--sd-ui-text));
3088
3123
  }
3089
- .sd-find-replace__btn--active[data-v-fed15bd3],
3090
- .sd-find-replace__btn--active[data-v-fed15bd3]:hover:not(:disabled) {
3124
+ .sd-find-replace__btn--active[data-v-41f37c29],
3125
+ .sd-find-replace__btn--active[data-v-41f37c29]:hover:not(:disabled) {
3091
3126
  background: var(--sd-ui-find-replace-toggle-active-bg, color-mix(in srgb, var(--sd-ui-action) 12%, transparent));
3092
3127
  border-color: var(
3093
3128
  --sd-ui-find-replace-toggle-active-border,
@@ -3095,7 +3130,7 @@ img[data-v-c95b2073] {
3095
3130
  );
3096
3131
  color: var(--sd-ui-find-replace-toggle-active-color, var(--sd-ui-action));
3097
3132
  }
3098
- .sd-find-replace__btn--action[data-v-fed15bd3] {
3133
+ .sd-find-replace__btn--action[data-v-41f37c29] {
3099
3134
  height: var(--sd-ui-find-replace-btn-size, 28px);
3100
3135
  padding: var(--sd-ui-find-replace-action-btn-padding, 0 12px);
3101
3136
  font-size: var(--sd-ui-find-replace-count-font-size, 13px);
@@ -3104,13 +3139,13 @@ img[data-v-c95b2073] {
3104
3139
  background: var(--sd-ui-find-replace-action-btn-bg, var(--sd-ui-action));
3105
3140
  color: var(--sd-ui-find-replace-action-btn-color, #fff);
3106
3141
  }
3107
- .sd-find-replace__btn--action[data-v-fed15bd3]:hover:not(:disabled) {
3142
+ .sd-find-replace__btn--action[data-v-41f37c29]:hover:not(:disabled) {
3108
3143
  background: var(
3109
3144
  --sd-ui-find-replace-action-btn-hover-bg,
3110
3145
  color-mix(in srgb, var(--sd-ui-find-replace-action-btn-bg, var(--sd-ui-action)) 88%, #000)
3111
3146
  );
3112
3147
  }
3113
- .sd-find-replace__error[data-v-fed15bd3] {
3148
+ .sd-find-replace__error[data-v-41f37c29] {
3114
3149
  display: flex;
3115
3150
  align-items: center;
3116
3151
  gap: var(--sd-ui-find-replace-gap, 6px);
@@ -3118,12 +3153,12 @@ img[data-v-c95b2073] {
3118
3153
  font-size: var(--sd-ui-find-replace-error-font-size, 12px);
3119
3154
  letter-spacing: 0.01em;
3120
3155
  padding: var(--sd-ui-find-replace-error-padding, 0 2px);
3121
- animation: sd-find-replace-error-in-fed15bd3 0.16s ease-out;
3156
+ animation: sd-find-replace-error-in-41f37c29 0.16s ease-out;
3122
3157
  }
3123
- .sd-find-replace__error-text[data-v-fed15bd3] {
3158
+ .sd-find-replace__error-text[data-v-41f37c29] {
3124
3159
  padding-left: 4px;
3125
3160
  }
3126
- @keyframes sd-find-replace-error-in-fed15bd3 {
3161
+ @keyframes sd-find-replace-error-in-41f37c29 {
3127
3162
  from {
3128
3163
  opacity: 0;
3129
3164
  transform: translateY(-2px);
@@ -3134,15 +3169,15 @@ to {
3134
3169
  }
3135
3170
  }
3136
3171
  @media (prefers-reduced-motion: reduce) {
3137
- .sd-find-replace__field[data-v-fed15bd3],
3138
- .sd-find-replace__btn[data-v-fed15bd3],
3139
- .sd-find-replace__btn--expander svg[data-v-fed15bd3] {
3172
+ .sd-find-replace__field[data-v-41f37c29],
3173
+ .sd-find-replace__btn[data-v-41f37c29],
3174
+ .sd-find-replace__btn--expander svg[data-v-41f37c29] {
3140
3175
  transition: none;
3141
3176
  }
3142
- .sd-find-replace__btn[data-v-fed15bd3]:active:not(:disabled) {
3177
+ .sd-find-replace__btn[data-v-41f37c29]:active:not(:disabled) {
3143
3178
  transform: none;
3144
3179
  }
3145
- .sd-find-replace__error[data-v-fed15bd3] {
3180
+ .sd-find-replace__error[data-v-41f37c29] {
3146
3181
  animation: none;
3147
3182
  }
3148
3183
  }