@bendyline/squisq-editor-react 2.0.1 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (357) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE.md +40 -0
  3. package/README.md +10 -2
  4. package/dist/index.d.ts +683 -60
  5. package/dist/index.js +9648 -3750
  6. package/dist/monaco.js +0 -1
  7. package/dist/styles/index.css +1160 -241
  8. package/package.json +10 -6
  9. package/dist/index.js.map +0 -1
  10. package/dist/monaco.js.map +0 -1
  11. package/src/BlockCardView.tsx +0 -121
  12. package/src/BlockPreviewPanel.tsx +0 -69
  13. package/src/BlockPropertiesPopover.tsx +0 -222
  14. package/src/DocumentSettingsDialog.tsx +0 -272
  15. package/src/DropZoneOverlay.tsx +0 -137
  16. package/src/EditorContext.tsx +0 -1247
  17. package/src/EditorShell.tsx +0 -1334
  18. package/src/EmojiPicker.tsx +0 -332
  19. package/src/FolderView.tsx +0 -131
  20. package/src/Icon.tsx +0 -26
  21. package/src/ImageEditor.tsx +0 -395
  22. package/src/ImageNodeView.tsx +0 -284
  23. package/src/ImageViewer.tsx +0 -221
  24. package/src/InlineIcon.ts +0 -84
  25. package/src/InlinePreviewGutter.tsx +0 -590
  26. package/src/LinkDialog.tsx +0 -276
  27. package/src/MediaBin.tsx +0 -500
  28. package/src/MentionExtension.tsx +0 -261
  29. package/src/OutlinePanel.tsx +0 -547
  30. package/src/PlainHtmlPreview.tsx +0 -277
  31. package/src/PreviewControls.tsx +0 -1250
  32. package/src/PreviewPanel.tsx +0 -422
  33. package/src/RawEditor.tsx +0 -731
  34. package/src/RecorderEntry.tsx +0 -159
  35. package/src/StatusBar.tsx +0 -51
  36. package/src/TemplateAnnotation.ts +0 -167
  37. package/src/TemplateContentPreview.tsx +0 -56
  38. package/src/TemplatePicker.tsx +0 -1314
  39. package/src/ThemeCustomizerPanel.tsx +0 -304
  40. package/src/ThemePicker.tsx +0 -433
  41. package/src/TimelineBlockPreview.tsx +0 -37
  42. package/src/TimelineTrack.tsx +0 -671
  43. package/src/Toolbar.tsx +0 -2587
  44. package/src/Tooltip.tsx +0 -142
  45. package/src/TransitionPicker.tsx +0 -390
  46. package/src/VersionHistoryPanel.tsx +0 -359
  47. package/src/ViewMenuPanel.tsx +0 -189
  48. package/src/ViewSwitcher.tsx +0 -56
  49. package/src/WysiwygEditor.tsx +0 -792
  50. package/src/__tests__/blockProperties.test.ts +0 -92
  51. package/src/__tests__/blockPropertiesPopoverTheme.test.tsx +0 -33
  52. package/src/__tests__/blockRange.test.ts +0 -105
  53. package/src/__tests__/blockTagActivity.test.ts +0 -183
  54. package/src/__tests__/buildDocumentPreviewMarkdown.test.ts +0 -75
  55. package/src/__tests__/buildPreviewDocContent.test.ts +0 -48
  56. package/src/__tests__/buildPreviewDocTransition.test.ts +0 -92
  57. package/src/__tests__/canvasSurfaceTextEditing.test.tsx +0 -60
  58. package/src/__tests__/codeContextSectionView.test.tsx +0 -97
  59. package/src/__tests__/codeContextZoneManager.test.ts +0 -127
  60. package/src/__tests__/createShapeLayer.test.ts +0 -46
  61. package/src/__tests__/customLayoutManagerTheme.test.tsx +0 -34
  62. package/src/__tests__/detectMarkdown.test.ts +0 -73
  63. package/src/__tests__/diffContextSections.test.ts +0 -39
  64. package/src/__tests__/documentSettingsDialog.test.tsx +0 -197
  65. package/src/__tests__/drawingShapeRoundTrip.test.ts +0 -49
  66. package/src/__tests__/editorScrollHandoff.test.tsx +0 -102
  67. package/src/__tests__/editorScrollSync.test.ts +0 -65
  68. package/src/__tests__/editorShellCodeContext.test.tsx +0 -86
  69. package/src/__tests__/editorShellProps.test.tsx +0 -485
  70. package/src/__tests__/embeddedMedia.test.ts +0 -48
  71. package/src/__tests__/emojiPicker.test.tsx +0 -93
  72. package/src/__tests__/fileKind.test.ts +0 -112
  73. package/src/__tests__/headingTransition.test.ts +0 -176
  74. package/src/__tests__/imageEditAffordance.test.tsx +0 -272
  75. package/src/__tests__/imageEditModalContract.test.tsx +0 -119
  76. package/src/__tests__/imageEditorShell.test.tsx +0 -94
  77. package/src/__tests__/imageEditorState.test.ts +0 -171
  78. package/src/__tests__/inlinePreviewGutter.test.tsx +0 -62
  79. package/src/__tests__/inlinePreviewGutterAllBlocks.test.tsx +0 -103
  80. package/src/__tests__/jsonEditor.test.tsx +0 -223
  81. package/src/__tests__/layersPanel.test.tsx +0 -167
  82. package/src/__tests__/layoutChildRoundTrip.test.ts +0 -71
  83. package/src/__tests__/linkDialogDocPicker.test.tsx +0 -137
  84. package/src/__tests__/majorApiTypes.test.ts +0 -26
  85. package/src/__tests__/mediaAttachmentFlow.test.ts +0 -110
  86. package/src/__tests__/mediaBinDrop.test.tsx +0 -90
  87. package/src/__tests__/mediaReferences.test.ts +0 -82
  88. package/src/__tests__/narrationSave.test.ts +0 -148
  89. package/src/__tests__/outlinePanel.test.tsx +0 -169
  90. package/src/__tests__/outlineSource.test.ts +0 -217
  91. package/src/__tests__/plainHtmlPreview.test.tsx +0 -125
  92. package/src/__tests__/presentationMode.test.tsx +0 -290
  93. package/src/__tests__/previewControls.test.tsx +0 -540
  94. package/src/__tests__/previewPanelAudioFailure.test.tsx +0 -46
  95. package/src/__tests__/previewPanelPresentation.test.tsx +0 -126
  96. package/src/__tests__/previewPanelTransforms.test.tsx +0 -117
  97. package/src/__tests__/propertiesPanel.test.tsx +0 -69
  98. package/src/__tests__/rawEditorModelIsolation.test.ts +0 -19
  99. package/src/__tests__/recorderFormats.test.ts +0 -146
  100. package/src/__tests__/recorderMediaInsert.test.ts +0 -86
  101. package/src/__tests__/recorderTheme.test.tsx +0 -42
  102. package/src/__tests__/recorderTimingJson.test.ts +0 -41
  103. package/src/__tests__/resolveBlockVisual.test.ts +0 -43
  104. package/src/__tests__/selectionConversions.test.ts +0 -80
  105. package/src/__tests__/statusBar.test.tsx +0 -27
  106. package/src/__tests__/teleprompter.test.tsx +0 -190
  107. package/src/__tests__/templateAnnotationRoundTrip.test.ts +0 -99
  108. package/src/__tests__/templateContentPreview.test.ts +0 -101
  109. package/src/__tests__/templatePickerMetadata.test.ts +0 -32
  110. package/src/__tests__/templatePickerPortal.test.tsx +0 -62
  111. package/src/__tests__/timelineSource.test.ts +0 -134
  112. package/src/__tests__/tiptapBridge.test.ts +0 -566
  113. package/src/__tests__/tiptapBridgeConformance.test.ts +0 -47
  114. package/src/__tests__/tiptapCodeBlockRoundTrip.test.ts +0 -109
  115. package/src/__tests__/tiptapImageRoundTrip.test.ts +0 -73
  116. package/src/__tests__/toolbarSelectionConversion.test.tsx +0 -164
  117. package/src/__tests__/tooltip.test.tsx +0 -72
  118. package/src/__tests__/transformStyleId.test.ts +0 -13
  119. package/src/__tests__/transitionCatalog.test.ts +0 -64
  120. package/src/__tests__/useBlockNavigator.test.tsx +0 -67
  121. package/src/__tests__/useImageEditor.test.tsx +0 -226
  122. package/src/__tests__/useJsonEditorTokens.test.ts +0 -59
  123. package/src/__tests__/useMediaRecorder.test.ts +0 -302
  124. package/src/__tests__/useTimelineClock.test.ts +0 -21
  125. package/src/__tests__/versionHistory.test.tsx +0 -197
  126. package/src/__tests__/viewMenuPanel.test.tsx +0 -130
  127. package/src/__tests__/wysiwygImageUpload.test.ts +0 -69
  128. package/src/__tests__/wysiwygTemplateBadgeFocus.test.tsx +0 -56
  129. package/src/asciiDiagram/AsciiDiagramExtension.ts +0 -343
  130. package/src/asciiDiagram/AsciiDiagramWidget.tsx +0 -254
  131. package/src/asciiDiagram/RepairableDiagramExtension.ts +0 -200
  132. package/src/asciiDiagram/__tests__/AsciiDiagramExtension.test.ts +0 -145
  133. package/src/asciiDiagram/__tests__/RepairableDiagramExtension.test.ts +0 -159
  134. package/src/asciiDiagram/__tests__/asciiDiagramCommands.test.ts +0 -284
  135. package/src/asciiDiagram/__tests__/asciiDiagramOps.test.ts +0 -114
  136. package/src/asciiDiagram/__tests__/asciiPaste.test.ts +0 -43
  137. package/src/asciiDiagram/asciiDiagramCommands.ts +0 -174
  138. package/src/asciiDiagram/asciiDiagramData.ts +0 -149
  139. package/src/asciiDiagram/asciiDiagramOps.ts +0 -238
  140. package/src/asciiDiagram/asciiPaste.ts +0 -19
  141. package/src/blockProperties.ts +0 -88
  142. package/src/blockRange.ts +0 -132
  143. package/src/blockSlice.ts +0 -75
  144. package/src/blockTagActivity.ts +0 -233
  145. package/src/buildDocumentPreviewMarkdown.ts +0 -168
  146. package/src/buildPreviewDoc.ts +0 -405
  147. package/src/codeContext/CodeContextSectionView.tsx +0 -124
  148. package/src/codeContext/CodeContextZoneManager.ts +0 -149
  149. package/src/codeContext/CodeContextZones.tsx +0 -121
  150. package/src/codeContext/diffContextSections.ts +0 -38
  151. package/src/codeContext/types.ts +0 -75
  152. package/src/customTemplates/AddBin.tsx +0 -126
  153. package/src/customTemplates/CustomLayoutManager.tsx +0 -234
  154. package/src/customTemplates/CustomTemplateContext.tsx +0 -188
  155. package/src/customTemplates/LayerToolbar.tsx +0 -580
  156. package/src/customTemplates/ShapeGlyph.tsx +0 -47
  157. package/src/customTemplates/TemplateDesigner.tsx +0 -433
  158. package/src/customTemplates/__tests__/library.test.ts +0 -96
  159. package/src/customTemplates/__tests__/normalizePositions.test.ts +0 -109
  160. package/src/customTemplates/__tests__/shapeDefs.test.ts +0 -49
  161. package/src/customTemplates/__tests__/useMemoryLayerAdapter.test.ts +0 -108
  162. package/src/customTemplates/designer.css +0 -732
  163. package/src/customTemplates/index.ts +0 -31
  164. package/src/customTemplates/library.ts +0 -110
  165. package/src/customTemplates/normalizePositions.ts +0 -75
  166. package/src/customTemplates/shapeDefs.ts +0 -131
  167. package/src/customTemplates/thumbnail.tsx +0 -63
  168. package/src/customTemplates/tokenDefs.ts +0 -60
  169. package/src/customTemplates/useDocCustomTemplates.ts +0 -52
  170. package/src/customTemplates/useMemoryLayerAdapter.ts +0 -129
  171. package/src/customThemes/CustomThemeContext.tsx +0 -185
  172. package/src/customThemes/CustomThemeDialog.tsx +0 -316
  173. package/src/customThemes/ImportThemeSection.tsx +0 -178
  174. package/src/customThemes/__tests__/CustomThemeContext.test.tsx +0 -64
  175. package/src/customThemes/__tests__/CustomThemeDialog.test.tsx +0 -47
  176. package/src/customThemes/__tests__/customThemeLibrary.test.ts +0 -60
  177. package/src/customThemes/__tests__/importThemeSection.test.tsx +0 -192
  178. package/src/customThemes/customThemeLibrary.ts +0 -100
  179. package/src/customThemes/index.ts +0 -37
  180. package/src/customThemes/themeControls.tsx +0 -229
  181. package/src/customThemes/themeDraft.ts +0 -288
  182. package/src/customThemes/useDocCustomThemes.ts +0 -49
  183. package/src/detectMarkdown.ts +0 -62
  184. package/src/diagram/DiagramCanvas.tsx +0 -259
  185. package/src/diagram/DiagramMaximizedOverlay.tsx +0 -46
  186. package/src/diagram/diagramCommands.ts +0 -604
  187. package/src/diagram/diagramConstants.ts +0 -17
  188. package/src/diagram/types.ts +0 -35
  189. package/src/editorScrollSync.ts +0 -73
  190. package/src/embeddedMedia.ts +0 -78
  191. package/src/emojiData.ts +0 -1317
  192. package/src/fileKind.ts +0 -158
  193. package/src/frontmatter.ts +0 -29
  194. package/src/frontmatterSettings.ts +0 -23
  195. package/src/headingTransition.ts +0 -291
  196. package/src/hooks/useFileDrop.ts +0 -266
  197. package/src/imageEditor/CanvasSurface.tsx +0 -703
  198. package/src/imageEditor/ImageVersionHistoryDropdown.tsx +0 -396
  199. package/src/imageEditor/LayersPanel.tsx +0 -218
  200. package/src/imageEditor/PropertiesPanel.tsx +0 -474
  201. package/src/imageEditor/Toolbar.tsx +0 -459
  202. package/src/imageEditor/createShapeLayer.ts +0 -280
  203. package/src/imageEditor/icons.tsx +0 -68
  204. package/src/imageEditor/image-editor.css +0 -574
  205. package/src/imageEditor/layers/EditorImageLayer.tsx +0 -45
  206. package/src/imageEditor/layers/EditorShapeLayer.tsx +0 -62
  207. package/src/imageEditor/layers/EditorTextLayer.tsx +0 -45
  208. package/src/imageEditor/layers/SelectionHandles.tsx +0 -86
  209. package/src/imageEditor/state.ts +0 -173
  210. package/src/imageEditor/useImageEditor.ts +0 -385
  211. package/src/imageEditor/useImageEditorTokens.ts +0 -70
  212. package/src/index.ts +0 -470
  213. package/src/jsonEditor/EmbeddedRichTextField.tsx +0 -81
  214. package/src/jsonEditor/JsonEditor.tsx +0 -81
  215. package/src/jsonEditor/JsonEditorContext.tsx +0 -81
  216. package/src/jsonEditor/RenderNode.tsx +0 -87
  217. package/src/jsonEditor/editors.tsx +0 -745
  218. package/src/jsonEditor/index.ts +0 -2
  219. package/src/jsonEditor/json-editor.css +0 -463
  220. package/src/jsonEditor/useJsonEditorTokens.ts +0 -33
  221. package/src/mediaDragMime.ts +0 -32
  222. package/src/mediaEntries.ts +0 -12
  223. package/src/mediaReferences.ts +0 -299
  224. package/src/monaco.ts +0 -35
  225. package/src/monacoWorkers.ts +0 -89
  226. package/src/outlineSource.ts +0 -171
  227. package/src/presentation/PresentationMode.tsx +0 -596
  228. package/src/rawEditorIsolation.ts +0 -18
  229. package/src/recorder/RecorderButton.tsx +0 -80
  230. package/src/recorder/RecorderModal.tsx +0 -706
  231. package/src/recorder/RecorderPanel.tsx +0 -77
  232. package/src/recorder/formats.ts +0 -159
  233. package/src/recorder/hooks/useMediaRecorder.ts +0 -436
  234. package/src/recorder/hooks/useStreamPreview.ts +0 -47
  235. package/src/recorder/insertMediaBlock.ts +0 -30
  236. package/src/recorder/sources/cameraStream.ts +0 -32
  237. package/src/recorder/sources/micStream.ts +0 -25
  238. package/src/recorder/sources/screenStream.ts +0 -162
  239. package/src/recorder/timingJson.ts +0 -66
  240. package/src/resolveBlockVisual.ts +0 -39
  241. package/src/scene/Scene.tsx +0 -616
  242. package/src/scene/SceneBlockExtension.ts +0 -205
  243. package/src/scene/SceneBlockToolbar.tsx +0 -201
  244. package/src/scene/SceneBlockWidget.tsx +0 -441
  245. package/src/scene/ScenePropsBar.tsx +0 -85
  246. package/src/scene/SceneSelection.tsx +0 -111
  247. package/src/scene/SceneSideToolbar.tsx +0 -89
  248. package/src/scene/SceneViewport.tsx +0 -106
  249. package/src/scene/ShapePalette.tsx +0 -196
  250. package/src/scene/__tests__/DiagramAdapter.test.ts +0 -142
  251. package/src/scene/__tests__/SceneBlockExtension.test.ts +0 -33
  252. package/src/scene/__tests__/bezierEdit.test.ts +0 -85
  253. package/src/scene/__tests__/blockLayers.test.ts +0 -57
  254. package/src/scene/__tests__/sceneIsolation.test.tsx +0 -119
  255. package/src/scene/__tests__/shapeLayers.test.ts +0 -106
  256. package/src/scene/__tests__/useSceneHitTest.test.ts +0 -90
  257. package/src/scene/__tests__/useScenePanZoom.test.ts +0 -103
  258. package/src/scene/adapters/DiagramAdapter.ts +0 -79
  259. package/src/scene/adapters/DrawingAdapter.ts +0 -420
  260. package/src/scene/adapters/LayoutAdapter.ts +0 -313
  261. package/src/scene/adapters/blockLayers.ts +0 -159
  262. package/src/scene/commands/SceneCommand.ts +0 -84
  263. package/src/scene/commands/drawingCommands.ts +0 -318
  264. package/src/scene/commands/layoutCommands.ts +0 -301
  265. package/src/scene/hooks/useSceneHitTest.ts +0 -105
  266. package/src/scene/hooks/useScenePanZoom.ts +0 -147
  267. package/src/scene/hooks/useSceneSelection.ts +0 -62
  268. package/src/scene/index.ts +0 -90
  269. package/src/scene/layers/DiagramEdges.tsx +0 -142
  270. package/src/scene/layers/edgeGeometry.ts +0 -104
  271. package/src/scene/layers/nodeCard.tsx +0 -164
  272. package/src/scene/layers/renderLayer.tsx +0 -70
  273. package/src/scene/layers/shapeLayers.ts +0 -201
  274. package/src/scene/paths/bezierEdit.ts +0 -208
  275. package/src/scene/scene.css +0 -792
  276. package/src/scene/text/SceneTextOverlay.tsx +0 -161
  277. package/src/scene/text/sceneTextChannel.ts +0 -46
  278. package/src/scene/text/sceneTextConfig.ts +0 -31
  279. package/src/scene/text/sceneTiptap.ts +0 -36
  280. package/src/scene/text/useSceneTextEditing.ts +0 -39
  281. package/src/scene/tools/ConnectTool.ts +0 -209
  282. package/src/scene/tools/DrawingConnectTool.ts +0 -231
  283. package/src/scene/tools/PathTool.ts +0 -158
  284. package/src/scene/tools/PlaceTool.ts +0 -47
  285. package/src/scene/tools/SceneTool.ts +0 -85
  286. package/src/scene/tools/SelectTool.ts +0 -300
  287. package/src/scene/tools/ShapeTool.ts +0 -143
  288. package/src/scene/tools/TextTool.ts +0 -72
  289. package/src/scene/tools/TokenTool.ts +0 -95
  290. package/src/scene/tools/createDrawShapeTool.ts +0 -82
  291. package/src/selectionConversions.ts +0 -155
  292. package/src/styles/ascii-diagram.css +0 -79
  293. package/src/styles/ascii-timeline.css +0 -596
  294. package/src/styles/code-context.css +0 -155
  295. package/src/styles/diagram.css +0 -183
  296. package/src/styles/editor.css +0 -6811
  297. package/src/styles/folder-view.css +0 -210
  298. package/src/styles/image-edit-affordance.css +0 -201
  299. package/src/styles/index.css +0 -18
  300. package/src/styles/tree-view.css +0 -189
  301. package/src/teleprompter/TeleprompterControls.tsx +0 -218
  302. package/src/teleprompter/TeleprompterSelfView.tsx +0 -22
  303. package/src/teleprompter/TeleprompterSurface.tsx +0 -267
  304. package/src/teleprompter/TeleprompterView.tsx +0 -338
  305. package/src/teleprompter/canvasRenderer.ts +0 -161
  306. package/src/teleprompter/floatingWindow.ts +0 -352
  307. package/src/teleprompter/index.ts +0 -61
  308. package/src/teleprompter/pcmWorklet.ts +0 -62
  309. package/src/teleprompter/recording/insertPreamble.ts +0 -80
  310. package/src/teleprompter/recording/narrationSave.ts +0 -134
  311. package/src/teleprompter/recording/useNarrationRecorder.ts +0 -367
  312. package/src/teleprompter/scrollModel.ts +0 -85
  313. package/src/teleprompter/teleprompterTheme.ts +0 -303
  314. package/src/teleprompter/types.ts +0 -38
  315. package/src/teleprompter/useFloatingWindow.ts +0 -74
  316. package/src/teleprompter/useMicAnalysis.ts +0 -211
  317. package/src/teleprompter/useTeleprompter.ts +0 -421
  318. package/src/templateContentPreviewResolver.ts +0 -360
  319. package/src/timeline/TimelineEditorWidget.tsx +0 -861
  320. package/src/timeline/TimelineViewExtension.ts +0 -252
  321. package/src/timeline/__tests__/TimelineEditorWidget.test.tsx +0 -414
  322. package/src/timeline/__tests__/TimelineViewExtension.test.ts +0 -163
  323. package/src/timeline/__tests__/timelineCommands.test.ts +0 -359
  324. package/src/timeline/__tests__/timelineOps.test.ts +0 -277
  325. package/src/timeline/__tests__/timelinePaste.test.ts +0 -34
  326. package/src/timeline/timelineCommands.ts +0 -421
  327. package/src/timeline/timelineData.ts +0 -54
  328. package/src/timeline/timelineOps.ts +0 -381
  329. package/src/timeline/timelinePaste.ts +0 -8
  330. package/src/timelineSource.ts +0 -244
  331. package/src/tiptap/TiptapAudio.tsx +0 -86
  332. package/src/tiptap/TiptapVideo.tsx +0 -119
  333. package/src/tiptap/useResolvedMediaSrc.ts +0 -47
  334. package/src/tiptapBridge.ts +0 -986
  335. package/src/tooltipPlacement.ts +0 -13
  336. package/src/transformStyleId.ts +0 -17
  337. package/src/transitionCatalog.ts +0 -159
  338. package/src/treeview/TreeOutlineWidget.tsx +0 -390
  339. package/src/treeview/TreeViewExtension.ts +0 -250
  340. package/src/treeview/__tests__/TreeOutlineWidget.test.tsx +0 -156
  341. package/src/treeview/__tests__/TreeViewExtension.test.ts +0 -122
  342. package/src/treeview/__tests__/treeOps.test.ts +0 -177
  343. package/src/treeview/__tests__/treePaste.test.ts +0 -40
  344. package/src/treeview/__tests__/treeViewCommands.test.ts +0 -179
  345. package/src/treeview/treeOps.ts +0 -231
  346. package/src/treeview/treePaste.ts +0 -13
  347. package/src/treeview/treeViewCommands.ts +0 -99
  348. package/src/treeview/treeViewData.ts +0 -41
  349. package/src/types/monaco-shims.d.ts +0 -10
  350. package/src/useBlockNavigator.ts +0 -153
  351. package/src/useHeadingLayout.ts +0 -294
  352. package/src/useMonacoLoader.ts +0 -82
  353. package/src/useTimelineClock.ts +0 -76
  354. package/src/utils/collectInlineFontAwesomeCss.ts +0 -69
  355. package/src/utils/dropUtils.ts +0 -136
  356. package/src/utils/normalizeMalformedAssetUrl.ts +0 -22
  357. package/src/wysiwygImageUpload.ts +0 -113
@@ -7067,67 +7067,7 @@
7067
7067
  u+f27a;
7068
7068
  }
7069
7069
 
7070
- /* src/styles/editor.css */
7071
- .squisq-editor-shell {
7072
- font-family: var( --squisq-ux-font, -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif );
7073
- color: #1f2937;
7074
- background: #fff;
7075
- }
7076
- .squisq-editor-header {
7077
- border-bottom: 1px solid #e5e7eb;
7078
- background: #f9fafb;
7079
- flex-shrink: 0;
7080
- }
7081
- .squisq-editor-header--image {
7082
- display: flex;
7083
- align-items: center;
7084
- gap: 8px;
7085
- padding: 6px 8px;
7086
- }
7087
- .squisq-editor-content {
7088
- flex: 1;
7089
- overflow: hidden;
7090
- }
7091
- .squisq-view-switcher {
7092
- display: flex;
7093
- gap: 0;
7094
- container-type: inline-size;
7095
- container-name: squisq-view-switcher;
7096
- }
7097
- .squisq-view-tab-label {
7098
- display: inline-block;
7099
- }
7100
- .squisq-view-tab-label--short {
7101
- display: none;
7102
- }
7103
- @container squisq-view-switcher (max-width: 280px) {
7104
- .squisq-view-tab:has(.squisq-view-tab-label--short) .squisq-view-tab-label--long {
7105
- display: none;
7106
- }
7107
- .squisq-view-tab-label--short {
7108
- display: inline-block;
7109
- }
7110
- }
7111
- .squisq-view-tab {
7112
- padding: 11px 16px 3px;
7113
- min-width: 72px;
7114
- text-align: center;
7115
- border: none;
7116
- background: transparent;
7117
- color: #6b7280;
7118
- cursor: pointer;
7119
- font-size: 13px;
7120
- font-weight: 500;
7121
- border-bottom: 2px solid transparent;
7122
- transition: color 0.15s, border-color 0.15s;
7123
- }
7124
- .squisq-view-tab:hover {
7125
- color: #1f2937;
7126
- }
7127
- .squisq-view-tab--active {
7128
- color: #2563eb;
7129
- border-bottom-color: #2563eb;
7130
- }
7070
+ /* src/styles/toolbar.css */
7131
7071
  .squisq-toolbar {
7132
7072
  display: flex;
7133
7073
  align-items: center;
@@ -7341,6 +7281,99 @@
7341
7281
  flex: 1;
7342
7282
  min-width: 0;
7343
7283
  }
7284
+ .squisq-find-toolbar {
7285
+ display: flex;
7286
+ align-items: center;
7287
+ flex: 1 1 auto;
7288
+ gap: 3px;
7289
+ min-width: 180px;
7290
+ padding: 4px 6px;
7291
+ }
7292
+ .squisq-find-field {
7293
+ display: flex;
7294
+ align-items: center;
7295
+ flex: 0 1 420px;
7296
+ min-width: 130px;
7297
+ height: 28px;
7298
+ border: 1px solid #9ca3af;
7299
+ border-radius: 5px;
7300
+ background: #ffffff;
7301
+ color: #6b7280;
7302
+ box-sizing: border-box;
7303
+ }
7304
+ .squisq-find-field:focus-within {
7305
+ border-color: #2563eb;
7306
+ box-shadow: 0 0 0 1px #2563eb;
7307
+ }
7308
+ .squisq-find-field > i {
7309
+ margin-left: 8px;
7310
+ color: #6b7280;
7311
+ font-size: 11px;
7312
+ }
7313
+ .squisq-find-input {
7314
+ flex: 1 1 auto;
7315
+ min-width: 32px;
7316
+ height: 100%;
7317
+ padding: 0 7px;
7318
+ border: 0;
7319
+ outline: 0;
7320
+ background: transparent;
7321
+ color: #111827;
7322
+ font: inherit;
7323
+ font-size: 12.5px;
7324
+ }
7325
+ .squisq-find-input::-webkit-search-cancel-button {
7326
+ display: none;
7327
+ }
7328
+ .squisq-find-count {
7329
+ flex: 0 0 auto;
7330
+ padding-right: 7px;
7331
+ color: #6b7280;
7332
+ font-size: 11px;
7333
+ white-space: nowrap;
7334
+ }
7335
+ .squisq-find-button {
7336
+ display: inline-flex;
7337
+ align-items: center;
7338
+ justify-content: center;
7339
+ width: 28px;
7340
+ height: 28px;
7341
+ padding: 0;
7342
+ border: 0;
7343
+ border-radius: 4px;
7344
+ background: transparent;
7345
+ color: var(--squisq-toolbar-icon);
7346
+ cursor: pointer;
7347
+ }
7348
+ .squisq-find-button:hover:not(:disabled) {
7349
+ background: rgba(0, 0, 0, 0.08);
7350
+ color: #111827;
7351
+ }
7352
+ .squisq-find-button:disabled {
7353
+ opacity: 0.35;
7354
+ cursor: default;
7355
+ }
7356
+ .squisq-find-close {
7357
+ margin-left: 2px;
7358
+ }
7359
+ .squisq-find-match {
7360
+ border-radius: 2px;
7361
+ background: #fde68a !important;
7362
+ color: #111827 !important;
7363
+ }
7364
+ .squisq-find-match--selected {
7365
+ background: #f59e0b !important;
7366
+ box-shadow: 0 0 0 1px #b45309;
7367
+ }
7368
+ @container squisq-toolbar (max-width: 680px) {
7369
+ .squisq-find-toolbar {
7370
+ min-width: 120px;
7371
+ padding-right: 2px;
7372
+ }
7373
+ .squisq-find-count {
7374
+ display: none;
7375
+ }
7376
+ }
7344
7377
  .squisq-toolbar-contextual--clipped {
7345
7378
  visibility: hidden;
7346
7379
  }
@@ -7597,6 +7630,161 @@
7597
7630
  .squisq-insert-menu[data-theme=dark] .squisq-insert-menu-header--separated {
7598
7631
  border-top-color: #374151;
7599
7632
  }
7633
+ .squisq-code-snippet-menu {
7634
+ width: 220px;
7635
+ max-height: min(440px, calc(100vh - 16px));
7636
+ overflow-y: auto;
7637
+ }
7638
+ .squisq-code-snippet-language {
7639
+ justify-content: space-between;
7640
+ gap: 16px;
7641
+ }
7642
+ .squisq-code-snippet-language code {
7643
+ overflow: hidden;
7644
+ color: #9ca3af;
7645
+ font-family:
7646
+ ui-monospace,
7647
+ SFMono-Regular,
7648
+ Menlo,
7649
+ Consolas,
7650
+ "Liberation Mono",
7651
+ monospace;
7652
+ font-size: 11px;
7653
+ text-overflow: ellipsis;
7654
+ white-space: nowrap;
7655
+ }
7656
+
7657
+ /* src/styles/template-picker.css */
7658
+ .squisq-mermaid-type-menu {
7659
+ width: min(520px, calc(100vw - 16px));
7660
+ max-height: min(600px, calc(100vh - 16px));
7661
+ padding: 0 8px 10px;
7662
+ overflow-y: auto;
7663
+ }
7664
+ .squisq-mermaid-type-menu-heading {
7665
+ position: sticky;
7666
+ z-index: 1;
7667
+ top: 0;
7668
+ display: flex;
7669
+ flex-direction: column;
7670
+ gap: 2px;
7671
+ margin: 0 -8px 4px;
7672
+ padding: 12px 14px 10px;
7673
+ color: #111827;
7674
+ background: #fff;
7675
+ border-bottom: 1px solid #e5e7eb;
7676
+ }
7677
+ .squisq-mermaid-type-menu-heading strong {
7678
+ font-size: 14px;
7679
+ }
7680
+ .squisq-mermaid-type-menu-heading span {
7681
+ color: #6b7280;
7682
+ font-size: 11px;
7683
+ line-height: 1.35;
7684
+ }
7685
+ .squisq-mermaid-type-section + .squisq-mermaid-type-section {
7686
+ margin-top: 4px;
7687
+ }
7688
+ .squisq-mermaid-type-grid {
7689
+ display: grid;
7690
+ grid-template-columns: repeat(2, minmax(0, 1fr));
7691
+ gap: 6px;
7692
+ }
7693
+ .squisq-mermaid-type-card {
7694
+ display: grid;
7695
+ grid-template-columns: 82px minmax(0, 1fr);
7696
+ align-items: center;
7697
+ min-width: 0;
7698
+ padding: 8px;
7699
+ color: #1f2937;
7700
+ font: inherit;
7701
+ text-align: left;
7702
+ background: #f9fafb;
7703
+ border: 1px solid #e5e7eb;
7704
+ border-radius: 7px;
7705
+ cursor: pointer;
7706
+ }
7707
+ .squisq-mermaid-type-card:hover,
7708
+ .squisq-mermaid-type-card:focus-visible {
7709
+ color: #1d4ed8;
7710
+ background: #eff6ff;
7711
+ border-color: #93c5fd;
7712
+ outline: none;
7713
+ }
7714
+ .squisq-mermaid-type-thumbnail {
7715
+ display: flex;
7716
+ height: 48px;
7717
+ align-items: center;
7718
+ justify-content: center;
7719
+ padding: 3px;
7720
+ color: currentcolor;
7721
+ }
7722
+ .squisq-mermaid-type-thumbnail svg {
7723
+ display: block;
7724
+ width: 100%;
7725
+ height: 100%;
7726
+ }
7727
+ .squisq-mermaid-type-copy,
7728
+ .squisq-mermaid-type-title {
7729
+ min-width: 0;
7730
+ }
7731
+ .squisq-mermaid-type-copy {
7732
+ display: flex;
7733
+ flex-direction: column;
7734
+ gap: 3px;
7735
+ }
7736
+ .squisq-mermaid-type-title {
7737
+ display: flex;
7738
+ align-items: center;
7739
+ gap: 5px;
7740
+ font-size: 12px;
7741
+ font-weight: 650;
7742
+ }
7743
+ .squisq-mermaid-type-description {
7744
+ display: -webkit-box;
7745
+ overflow: hidden;
7746
+ color: #6b7280;
7747
+ font-size: 10px;
7748
+ line-height: 1.3;
7749
+ -webkit-box-orient: vertical;
7750
+ -webkit-line-clamp: 2;
7751
+ }
7752
+ .squisq-mermaid-type-badge {
7753
+ flex: none;
7754
+ padding: 1px 4px;
7755
+ color: #92400e;
7756
+ font-size: 8px;
7757
+ font-weight: 700;
7758
+ letter-spacing: 0.03em;
7759
+ text-transform: uppercase;
7760
+ background: #fef3c7;
7761
+ border-radius: 999px;
7762
+ }
7763
+ .squisq-mermaid-type-menu[data-theme=dark] .squisq-mermaid-type-menu-heading {
7764
+ color: #f9fafb;
7765
+ background: #1f2937;
7766
+ border-bottom-color: #374151;
7767
+ }
7768
+ .squisq-mermaid-type-menu[data-theme=dark] .squisq-mermaid-type-menu-heading span,
7769
+ .squisq-mermaid-type-menu[data-theme=dark] .squisq-mermaid-type-description {
7770
+ color: #9ca3af;
7771
+ }
7772
+ .squisq-mermaid-type-menu[data-theme=dark] .squisq-mermaid-type-card {
7773
+ color: #e5e7eb;
7774
+ background: #111827;
7775
+ border-color: #374151;
7776
+ }
7777
+ .squisq-mermaid-type-menu[data-theme=dark] .squisq-mermaid-type-card:hover,
7778
+ .squisq-mermaid-type-menu[data-theme=dark] .squisq-mermaid-type-card:focus-visible {
7779
+ color: #bfdbfe;
7780
+ background: #1e3a5f;
7781
+ border-color: #3b82f6;
7782
+ }
7783
+ @media (max-width: 620px) {
7784
+ .squisq-mermaid-type-grid {
7785
+ grid-template-columns: 1fr;
7786
+ }
7787
+ }
7600
7788
  .squisq-template-picker {
7601
7789
  display: flex;
7602
7790
  align-items: center;
@@ -7624,6 +7812,8 @@
7624
7812
  outline: 2px solid #3b82f6;
7625
7813
  outline-offset: -1px;
7626
7814
  }
7815
+
7816
+ /* src/styles/template-gallery.css */
7627
7817
  .squisq-template-picker-popover-host {
7628
7818
  position: relative;
7629
7819
  }
@@ -7732,7 +7922,7 @@
7732
7922
  --squisq-template-gallery-preview-warning-border: rgba(255, 255, 255, 0.22);
7733
7923
  --squisq-template-gallery-preview-warning-text: #ffffff;
7734
7924
  --squisq-template-gallery-name: #111827;
7735
- --squisq-template-gallery-description: #6b7280;
7925
+ --squisq-template-gallery-description: #4b5563;
7736
7926
  --squisq-template-gallery-new-bg: #f5f3ff;
7737
7927
  --squisq-template-gallery-new-border: #a5b4fc;
7738
7928
  --squisq-template-gallery-new-hover-bg: #ede9fe;
@@ -7741,7 +7931,7 @@
7741
7931
  --squisq-template-gallery-new-plus-bg: #ffffff;
7742
7932
  --squisq-template-gallery-new-plus-border: #c4b5fd;
7743
7933
  --squisq-template-gallery-new-label: #4338ca;
7744
- --squisq-template-gallery-new-desc: #6b7280;
7934
+ --squisq-template-gallery-new-desc: #4b5563;
7745
7935
  --squisq-template-gallery-section-border: #e5e7eb;
7746
7936
  --squisq-template-gallery-section-title: #6b7280;
7747
7937
  box-sizing: border-box;
@@ -8319,26 +8509,88 @@
8319
8509
  .squisq-editor-shell[data-theme=dark] .squisq-template-gallery-section-title {
8320
8510
  color: #9ca3af;
8321
8511
  }
8322
- .squisq-tooltip {
8323
- width: max-content;
8324
- max-width: calc(100vw - 16px);
8325
- padding: 4px 8px;
8326
- font-size: 12px;
8327
- font-weight: 500;
8328
- color: #f9fafb;
8329
- background: #1f2937;
8330
- border-radius: 4px;
8331
- box-shadow: 0 2px 6px rgba(0, 0, 0, 0.18);
8332
- line-height: 1.3;
8333
- white-space: normal;
8334
- overflow-wrap: anywhere;
8335
- pointer-events: none;
8336
- z-index: 2000;
8337
- animation: squisq-tooltip-fade 0.1s ease-out;
8338
- }
8339
- @keyframes squisq-tooltip-fade {
8340
- from {
8341
- opacity: 0;
8512
+
8513
+ /* src/styles/editor.css */
8514
+ .squisq-editor-shell {
8515
+ font-family: var( --squisq-ux-font, -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif );
8516
+ color: #1f2937;
8517
+ background: #fff;
8518
+ }
8519
+ .squisq-editor-header {
8520
+ border-bottom: 1px solid #e5e7eb;
8521
+ background: #f9fafb;
8522
+ flex-shrink: 0;
8523
+ }
8524
+ .squisq-editor-header--image {
8525
+ display: flex;
8526
+ align-items: center;
8527
+ gap: 8px;
8528
+ padding: 6px 8px;
8529
+ }
8530
+ .squisq-editor-content {
8531
+ flex: 1;
8532
+ overflow: hidden;
8533
+ }
8534
+ .squisq-view-switcher {
8535
+ display: flex;
8536
+ gap: 0;
8537
+ container-type: inline-size;
8538
+ container-name: squisq-view-switcher;
8539
+ }
8540
+ .squisq-view-tab-label {
8541
+ display: inline-block;
8542
+ }
8543
+ .squisq-view-tab-label--short {
8544
+ display: none;
8545
+ }
8546
+ @container squisq-view-switcher (max-width: 280px) {
8547
+ .squisq-view-tab:has(.squisq-view-tab-label--short) .squisq-view-tab-label--long {
8548
+ display: none;
8549
+ }
8550
+ .squisq-view-tab-label--short {
8551
+ display: inline-block;
8552
+ }
8553
+ }
8554
+ .squisq-view-tab {
8555
+ padding: 11px 16px 3px;
8556
+ min-width: 72px;
8557
+ text-align: center;
8558
+ border: none;
8559
+ background: transparent;
8560
+ color: #6b7280;
8561
+ cursor: pointer;
8562
+ font-size: 13px;
8563
+ font-weight: 500;
8564
+ border-bottom: 2px solid transparent;
8565
+ transition: color 0.15s, border-color 0.15s;
8566
+ }
8567
+ .squisq-view-tab:hover {
8568
+ color: #1f2937;
8569
+ }
8570
+ .squisq-view-tab--active {
8571
+ color: #2563eb;
8572
+ border-bottom-color: #2563eb;
8573
+ }
8574
+ .squisq-tooltip {
8575
+ width: max-content;
8576
+ max-width: calc(100vw - 16px);
8577
+ padding: 4px 8px;
8578
+ font-size: 12px;
8579
+ font-weight: 500;
8580
+ color: #f9fafb;
8581
+ background: #1f2937;
8582
+ border-radius: 4px;
8583
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.18);
8584
+ line-height: 1.3;
8585
+ white-space: normal;
8586
+ overflow-wrap: anywhere;
8587
+ pointer-events: none;
8588
+ z-index: 2000;
8589
+ animation: squisq-tooltip-fade 0.1s ease-out;
8590
+ }
8591
+ @keyframes squisq-tooltip-fade {
8592
+ from {
8593
+ opacity: 0;
8342
8594
  }
8343
8595
  to {
8344
8596
  opacity: 1;
@@ -8619,9 +8871,6 @@
8619
8871
  .squisq-status-error {
8620
8872
  color: #dc2626;
8621
8873
  }
8622
- .squisq-status-parsing {
8623
- color: #d97706;
8624
- }
8625
8874
  .squisq-wysiwyg-container {
8626
8875
  background: #dcd8d0;
8627
8876
  }
@@ -8635,6 +8884,7 @@
8635
8884
  background: var(--squisq-theme-bg, #fff);
8636
8885
  box-shadow: 0 2px 14px rgba(0, 0, 0, 0.12);
8637
8886
  font-family: var(--squisq-theme-body-font, inherit);
8887
+ font-size: var(--squisq-write-text-size, inherit);
8638
8888
  caret-color: var(--squisq-theme-text, #1f2937);
8639
8889
  cursor: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='22' viewBox='0 0 16 22'><g fill='none' stroke-linecap='round'><path d='M5 3 L11 3 M5 19 L11 19 M8 3 L8 19' stroke='white' stroke-width='3.2'/><path d='M5 3 L11 3 M5 19 L11 19 M8 3 L8 19' stroke='%231f2937' stroke-width='1.4'/></g></svg>") 8 11, text;
8640
8890
  }
@@ -8682,12 +8932,15 @@
8682
8932
  font-size: 0.67em;
8683
8933
  margin: 1.6em 0 0.3em;
8684
8934
  }
8935
+ .squisq-heading-content:has(> br.ProseMirror-trailingBreak:only-child) {
8936
+ display: inline-block;
8937
+ }
8685
8938
  .squisq-wysiwyg-editor > :first-child {
8686
8939
  margin-top: 0;
8687
8940
  }
8688
8941
  .squisq-wysiwyg-editor p {
8689
- margin: 0.5em 0;
8690
- line-height: 1.7;
8942
+ margin: 0.625em 0;
8943
+ line-height: var(--squisq-write-line-spacing, 1.7);
8691
8944
  }
8692
8945
  .squisq-wysiwyg-editor blockquote {
8693
8946
  border-left: 3px solid var(--squisq-theme-text-muted, #d1d5db);
@@ -9205,6 +9458,26 @@
9205
9458
  background: rgba(255, 255, 255, 0.08);
9206
9459
  --squisq-toolbar-icon: #9ca3af;
9207
9460
  }
9461
+ .squisq-editor-shell[data-theme=dark] .squisq-find-field {
9462
+ border-color: #4b5563;
9463
+ background: #111827;
9464
+ color: #9ca3af;
9465
+ }
9466
+ .squisq-editor-shell[data-theme=dark] .squisq-find-field:focus-within {
9467
+ border-color: #60a5fa;
9468
+ box-shadow: 0 0 0 1px #60a5fa;
9469
+ }
9470
+ .squisq-editor-shell[data-theme=dark] .squisq-find-input {
9471
+ color: #f9fafb;
9472
+ }
9473
+ .squisq-editor-shell[data-theme=dark] .squisq-find-input::placeholder,
9474
+ .squisq-editor-shell[data-theme=dark] .squisq-find-count {
9475
+ color: #9ca3af;
9476
+ }
9477
+ .squisq-editor-shell[data-theme=dark] .squisq-find-button:hover:not(:disabled) {
9478
+ background: rgba(255, 255, 255, 0.1);
9479
+ color: #f9fafb;
9480
+ }
9208
9481
  .squisq-editor-shell[data-theme=dark] .squisq-toolbar-view-tabs {
9209
9482
  background: #111827;
9210
9483
  border-right-color: rgba(255, 255, 255, 0.15);
@@ -9432,9 +9705,6 @@
9432
9705
  .squisq-editor-shell[data-theme=dark] .squisq-status-error {
9433
9706
  color: #f87171;
9434
9707
  }
9435
- .squisq-editor-shell[data-theme=dark] .squisq-status-parsing {
9436
- color: #fbbf24;
9437
- }
9438
9708
  .squisq-editor-shell[data-theme=dark] .squisq-wysiwyg-container {
9439
9709
  background: #0f1219;
9440
9710
  }
@@ -11622,6 +11892,20 @@
11622
11892
  border-color: #3b82f6;
11623
11893
  box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);
11624
11894
  }
11895
+ .squisq-link-dialog-input--invalid,
11896
+ .squisq-link-dialog-input--invalid:focus {
11897
+ border-color: #dc2626;
11898
+ box-shadow: 0 0 0 2px rgba(220, 38, 38, 0.18);
11899
+ }
11900
+ .squisq-link-dialog-error {
11901
+ font-size: 12px;
11902
+ line-height: 1.4;
11903
+ color: #dc2626;
11904
+ }
11905
+ .squisq-link-dialog-btn--primary:disabled {
11906
+ opacity: 0.5;
11907
+ cursor: not-allowed;
11908
+ }
11625
11909
  .squisq-link-dialog-footer {
11626
11910
  display: flex;
11627
11911
  justify-content: flex-end;
@@ -13919,15 +14203,15 @@
13919
14203
  padding: 6px 12px;
13920
14204
  font-size: 12px;
13921
14205
  font-weight: 500;
13922
- color: #ffffff;
13923
- background: #6366f1;
14206
+ color: var(--squisq-text-on-accent, #ffffff);
14207
+ background: var(--squisq-accent, #6366f1);
13924
14208
  border: none;
13925
14209
  border-radius: 6px;
13926
14210
  cursor: pointer;
13927
14211
  transition: background 0.1s;
13928
14212
  }
13929
14213
  .squisq-diagram-empty-btn:hover {
13930
- background: #4f46e5;
14214
+ background: var(--squisq-accent-hover, #4f46e5);
13931
14215
  }
13932
14216
  .squisq-diagram-maximize-btn {
13933
14217
  position: absolute;
@@ -13942,59 +14226,656 @@
13942
14226
  background: var(--squisq-surface, #ffffff);
13943
14227
  border: 1px solid var(--squisq-border, #e2e8f0);
13944
14228
  border-radius: 6px;
13945
- cursor: pointer;
13946
- font-size: 16px;
13947
- line-height: 1;
13948
- color: var(--squisq-text, #1e293b);
13949
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06);
14229
+ cursor: pointer;
14230
+ font-size: 16px;
14231
+ line-height: 1;
14232
+ color: var(--squisq-text, #1e293b);
14233
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06);
14234
+ }
14235
+ .squisq-diagram-maximize-btn:hover {
14236
+ background: var(--squisq-surface-hover, #f8fafc);
14237
+ }
14238
+ .squisq-diagram-maximized-overlay {
14239
+ position: fixed;
14240
+ inset: 0;
14241
+ z-index: 9999;
14242
+ background: rgba(15, 23, 42, 0.6);
14243
+ display: flex;
14244
+ align-items: stretch;
14245
+ justify-content: stretch;
14246
+ }
14247
+ .squisq-diagram-maximized-content {
14248
+ position: relative;
14249
+ flex: 1;
14250
+ margin: 24px;
14251
+ background: var(--squisq-surface, #ffffff);
14252
+ border-radius: 12px;
14253
+ overflow: hidden;
14254
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
14255
+ }
14256
+ .squisq-diagram-maximized-content .squisq-diagram-canvas {
14257
+ width: 100%;
14258
+ height: 100%;
14259
+ }
14260
+ [data-squisq-diagram-child=true] {
14261
+ display: none;
14262
+ }
14263
+ .squisq-diagram-inline-placeholder {
14264
+ height: 420px;
14265
+ border: 1px dashed var(--squisq-border, #e2e8f0);
14266
+ border-radius: 8px;
14267
+ display: flex;
14268
+ align-items: center;
14269
+ justify-content: center;
14270
+ color: var(--squisq-text-muted, #64748b);
14271
+ font-size: 14px;
14272
+ }
14273
+ .squisq-diagram-inline-placeholder::before {
14274
+ content: "Diagram open in full screen \2014 press Esc to return";
14275
+ }
14276
+
14277
+ /* src/styles/ascii-diagram.css */
14278
+ .squisq-wysiwyg-editor pre.squisq-ascii-fence-hidden {
14279
+ display: none;
14280
+ }
14281
+ .squisq-wysiwyg-editor pre.squisq-ascii-fence-source {
14282
+ font-family:
14283
+ ui-monospace,
14284
+ SFMono-Regular,
14285
+ Menlo,
14286
+ Consolas,
14287
+ "Liberation Mono",
14288
+ monospace;
14289
+ white-space: pre;
14290
+ overflow-x: auto;
14291
+ line-height: 1.2;
14292
+ tab-size: 4;
14293
+ }
14294
+ .squisq-ascii-diagram-widget-host {
14295
+ margin: 0.75rem 0 1.25rem;
14296
+ }
14297
+ .squisq-ascii-diagram-warnings {
14298
+ margin-top: 4px;
14299
+ font-size: 12px;
14300
+ color: var(--squisq-theme-text-muted, #6b7280);
14301
+ }
14302
+ .squisq-ascii-diagram-warnings summary {
14303
+ cursor: pointer;
14304
+ user-select: none;
14305
+ }
14306
+ .squisq-ascii-diagram-warnings ul {
14307
+ margin: 4px 0 0;
14308
+ padding-left: 18px;
14309
+ }
14310
+ .squisq-repair-banner {
14311
+ display: flex;
14312
+ align-items: center;
14313
+ gap: 10px;
14314
+ flex-wrap: wrap;
14315
+ margin: 4px 0 1rem;
14316
+ padding: 8px 12px;
14317
+ border: 1px dashed var(--squisq-border, #d1d5db);
14318
+ border-radius: 8px;
14319
+ background: var(--squisq-input-bg, #f9fafb);
14320
+ font-size: 13px;
14321
+ }
14322
+ .squisq-repair-banner-text {
14323
+ color: var(--squisq-text-muted, #6b7280);
14324
+ }
14325
+ .squisq-repair-banner-btn {
14326
+ cursor: pointer;
14327
+ border: 1px solid var(--squisq-accent, #6366f1);
14328
+ border-radius: 6px;
14329
+ background: var(--squisq-accent, #6366f1);
14330
+ color: #fff;
14331
+ padding: 4px 12px;
14332
+ font-size: 13px;
14333
+ font-weight: 500;
14334
+ line-height: 1.4;
14335
+ white-space: nowrap;
14336
+ }
14337
+ .squisq-repair-banner-btn:hover {
14338
+ filter: brightness(1.05);
14339
+ }
14340
+ .squisq-repair-banner-btn:active {
14341
+ filter: brightness(0.95);
14342
+ }
14343
+
14344
+ /* src/styles/mermaid-diagram.css */
14345
+ .squisq-wysiwyg-editor pre.squisq-mermaid-fence-hidden {
14346
+ display: none;
14347
+ }
14348
+ .squisq-wysiwyg-editor pre.squisq-mermaid-fence-source {
14349
+ font-family:
14350
+ ui-monospace,
14351
+ SFMono-Regular,
14352
+ Menlo,
14353
+ Consolas,
14354
+ "Liberation Mono",
14355
+ monospace;
14356
+ white-space: pre;
14357
+ overflow-x: auto;
14358
+ line-height: 1.35;
14359
+ tab-size: 2;
14360
+ }
14361
+ .squisq-mermaid-diagram-widget-host {
14362
+ margin: 0.75rem 0 1.25rem;
14363
+ }
14364
+ .squisq-mermaid-canvas {
14365
+ position: relative;
14366
+ width: 100%;
14367
+ height: 100%;
14368
+ background: var(--squisq-surface, #ffffff);
14369
+ }
14370
+ .squisq-mermaid-canvas-scroll {
14371
+ box-sizing: border-box;
14372
+ width: 100%;
14373
+ height: 100%;
14374
+ overflow: auto;
14375
+ padding: 44px 24px 24px;
14376
+ }
14377
+ .squisq-mermaid-canvas-scroll[data-panning=true] {
14378
+ cursor: grabbing;
14379
+ user-select: none;
14380
+ }
14381
+ .squisq-mermaid-svg {
14382
+ position: relative;
14383
+ min-height: 100%;
14384
+ margin: 0 auto;
14385
+ will-change: transform;
14386
+ transition: width 120ms ease;
14387
+ }
14388
+ .squisq-mermaid-svg > div:first-child > svg {
14389
+ display: block;
14390
+ width: 100% !important;
14391
+ height: auto !important;
14392
+ max-width: none !important;
14393
+ margin: 0 auto;
14394
+ }
14395
+ .squisq-mermaid-svg [data-squisq-node-id] {
14396
+ cursor: pointer;
14397
+ }
14398
+ .squisq-mermaid-svg [data-squisq-node-id]:focus-visible {
14399
+ outline: none;
14400
+ filter: drop-shadow(0 0 4px #4f46e5);
14401
+ }
14402
+ .squisq-mermaid-svg .squisq-mermaid-node-selected {
14403
+ filter: drop-shadow(0 0 5px #4f46e5);
14404
+ }
14405
+ .squisq-mermaid-svg .squisq-mermaid-connect-source {
14406
+ filter: drop-shadow(0 0 6px #0d9488);
14407
+ }
14408
+ .squisq-mermaid-svg .edgePath,
14409
+ .squisq-mermaid-svg path.flowchart-link,
14410
+ .squisq-mermaid-svg .edgeLabel {
14411
+ cursor: pointer;
14412
+ }
14413
+ .squisq-mermaid-svg .squisq-mermaid-edge-hit-target {
14414
+ fill: none;
14415
+ stroke: rgba(0, 0, 0, 0.001);
14416
+ stroke-width: 14px;
14417
+ pointer-events: stroke;
14418
+ cursor: pointer;
14419
+ }
14420
+ .squisq-mermaid-svg .squisq-mermaid-edge-selected {
14421
+ filter: drop-shadow(0 0 3px #4f46e5);
14422
+ }
14423
+ .squisq-editor-shell[data-theme=dark] .squisq-mermaid-svg {
14424
+ --squisq-mermaid-edge: #cbd5e1;
14425
+ --squisq-mermaid-edge-label-bg: rgba(15, 23, 42, 0.88);
14426
+ }
14427
+ .squisq-editor-shell[data-theme=dark] .squisq-mermaid-svg :is(path.flowchart-link, .edgePath .path, .relationshipLine, .messageLine0, .messageLine1, .transition):not([style*="stroke:"]) {
14428
+ stroke: var(--squisq-mermaid-edge) !important;
14429
+ }
14430
+ .squisq-editor-shell[data-theme=dark] .squisq-mermaid-svg :is(.marker, .arrowheadPath),
14431
+ .squisq-editor-shell[data-theme=dark] .squisq-mermaid-svg marker :is(path, polygon) {
14432
+ stroke: var(--squisq-mermaid-edge) !important;
14433
+ }
14434
+ .squisq-editor-shell[data-theme=dark] .squisq-mermaid-svg marker :is(path, polygon):not([fill=none]):not([style*="fill:none"]):not([style*="fill: none"]) {
14435
+ fill: var(--squisq-mermaid-edge) !important;
14436
+ }
14437
+ .squisq-editor-shell[data-theme=dark] .squisq-mermaid-svg .edgeLabel,
14438
+ .squisq-editor-shell[data-theme=dark] .squisq-mermaid-svg .edgeLabel :is(span, p) {
14439
+ color: var(--squisq-mermaid-edge) !important;
14440
+ }
14441
+ .squisq-editor-shell[data-theme=dark] .squisq-mermaid-svg .edgeLabel p,
14442
+ .squisq-editor-shell[data-theme=dark] .squisq-mermaid-svg .edgeLabel rect {
14443
+ background: var(--squisq-mermaid-edge-label-bg) !important;
14444
+ fill: var(--squisq-mermaid-edge-label-bg) !important;
14445
+ }
14446
+ .squisq-mermaid-selection-actions {
14447
+ position: absolute;
14448
+ z-index: 12;
14449
+ display: inline-flex;
14450
+ gap: 2px;
14451
+ padding: 3px;
14452
+ border: 1px solid var(--squisq-border, #cbd5e1);
14453
+ border-radius: 7px;
14454
+ background: var(--squisq-surface, #ffffff);
14455
+ box-shadow: 0 4px 14px rgba(15, 23, 42, 0.2);
14456
+ transform: translate(-50%, calc(-100% - 8px));
14457
+ }
14458
+ .squisq-mermaid-selection-actions[data-placement=below] {
14459
+ transform: translate(-50%, 8px);
14460
+ }
14461
+ .squisq-mermaid-inline-rename {
14462
+ position: absolute;
14463
+ z-index: 14;
14464
+ margin: 0;
14465
+ transform: translate(-50%, -50%);
14466
+ }
14467
+ .squisq-mermaid-inline-rename input {
14468
+ box-sizing: border-box;
14469
+ width: 100%;
14470
+ min-height: 36px;
14471
+ padding: 6px 10px;
14472
+ border: 2px solid var(--squisq-accent, #4f46e5);
14473
+ border-radius: 7px;
14474
+ outline: none;
14475
+ background: var(--squisq-surface, #ffffff);
14476
+ color: var(--squisq-text, #1e293b);
14477
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--squisq-accent, #4f46e5) 22%, transparent), 0 6px 18px rgba(15, 23, 42, 0.2);
14478
+ font: inherit;
14479
+ font-size: 16px;
14480
+ line-height: 1.3;
14481
+ text-align: center;
14482
+ }
14483
+ .squisq-mermaid-inline-rename input:invalid {
14484
+ border-color: #dc2626;
14485
+ }
14486
+ .squisq-mermaid-inline-rename span {
14487
+ position: absolute;
14488
+ top: calc(100% + 6px);
14489
+ left: 50%;
14490
+ padding: 3px 7px;
14491
+ border: 1px solid var(--squisq-border, #cbd5e1);
14492
+ border-radius: 5px;
14493
+ background: var(--squisq-surface, #ffffff);
14494
+ color: var(--squisq-text-muted, #64748b);
14495
+ box-shadow: 0 2px 8px rgba(15, 23, 42, 0.14);
14496
+ font-size: 11px;
14497
+ line-height: 1.2;
14498
+ white-space: nowrap;
14499
+ transform: translateX(-50%);
14500
+ pointer-events: none;
14501
+ }
14502
+ .squisq-mermaid-selection-actions button {
14503
+ width: 28px;
14504
+ height: 28px;
14505
+ padding: 0;
14506
+ border: 0;
14507
+ border-radius: 4px;
14508
+ background: transparent;
14509
+ color: var(--squisq-text, #1e293b);
14510
+ cursor: pointer;
14511
+ }
14512
+ .squisq-mermaid-selection-actions button:hover {
14513
+ background: var(--squisq-surface-hover, #f1f5f9);
14514
+ }
14515
+ .squisq-mermaid-selection-actions button[data-danger=true] {
14516
+ color: #b91c1c;
14517
+ }
14518
+ .squisq-mermaid-connect-hint {
14519
+ position: absolute;
14520
+ top: 10px;
14521
+ left: 50%;
14522
+ z-index: 11;
14523
+ padding: 6px 10px;
14524
+ border-radius: 999px;
14525
+ background: #312e81;
14526
+ color: #fff;
14527
+ font-size: 12px;
14528
+ transform: translateX(-50%);
14529
+ pointer-events: none;
14530
+ }
14531
+ .squisq-mermaid-shape-palette,
14532
+ .squisq-mermaid-direction-picker,
14533
+ .squisq-mermaid-properties {
14534
+ position: absolute;
14535
+ top: calc(100% + 6px);
14536
+ left: 0;
14537
+ z-index: 40;
14538
+ display: flex;
14539
+ box-sizing: border-box;
14540
+ width: 360px;
14541
+ max-height: min(520px, 70vh);
14542
+ flex-direction: column;
14543
+ padding: 8px;
14544
+ border: 1px solid var(--squisq-border, #e2e8f0);
14545
+ border-radius: 8px;
14546
+ background: var(--squisq-surface, #ffffff);
14547
+ color: var(--squisq-text, #1e293b);
14548
+ box-shadow: 0 8px 24px rgba(15, 23, 42, 0.18);
14549
+ }
14550
+ .squisq-mermaid-properties {
14551
+ width: min(320px, calc(100vw - 24px));
14552
+ max-height: min(520px, 70vh);
14553
+ gap: 10px;
14554
+ overflow: auto;
14555
+ font-size: 12px;
14556
+ }
14557
+ .squisq-mermaid-properties-header,
14558
+ .squisq-mermaid-properties-footer {
14559
+ display: flex;
14560
+ align-items: center;
14561
+ justify-content: space-between;
14562
+ gap: 8px;
14563
+ }
14564
+ .squisq-mermaid-properties-header strong {
14565
+ font-size: 13px;
14566
+ }
14567
+ .squisq-mermaid-properties-header button,
14568
+ .squisq-mermaid-properties-footer button {
14569
+ min-height: 30px;
14570
+ padding: 5px 9px;
14571
+ border: 1px solid var(--squisq-border, #cbd5e1);
14572
+ border-radius: 6px;
14573
+ background: var(--squisq-surface-subtle, #f8fafc);
14574
+ color: inherit;
14575
+ cursor: pointer;
14576
+ }
14577
+ .squisq-mermaid-properties-header button {
14578
+ width: 30px;
14579
+ padding: 0;
14580
+ }
14581
+ .squisq-mermaid-properties-footer {
14582
+ justify-content: flex-end;
14583
+ }
14584
+ .squisq-mermaid-properties-footer button[data-primary=true] {
14585
+ border-color: #4f46e5;
14586
+ background: #4f46e5;
14587
+ color: #fff;
14588
+ }
14589
+ .squisq-mermaid-properties-fields {
14590
+ display: flex;
14591
+ min-height: 0;
14592
+ flex-direction: column;
14593
+ gap: 8px;
14594
+ overflow: auto;
14595
+ }
14596
+ .squisq-mermaid-properties-fields > label {
14597
+ display: flex;
14598
+ flex-direction: column;
14599
+ gap: 4px;
14600
+ color: var(--squisq-text-muted, #64748b);
14601
+ font-weight: 600;
14602
+ }
14603
+ .squisq-mermaid-properties-fields :is(input[type=text], select) {
14604
+ box-sizing: border-box;
14605
+ width: 100%;
14606
+ min-height: 32px;
14607
+ padding: 5px 7px;
14608
+ border: 1px solid var(--squisq-border, #cbd5e1);
14609
+ border-radius: 6px;
14610
+ background: var(--squisq-surface-subtle, #f8fafc);
14611
+ color: var(--squisq-text, #1e293b);
14612
+ font: inherit;
14613
+ font-weight: 400;
14614
+ }
14615
+ .squisq-mermaid-property-toggle {
14616
+ display: flex;
14617
+ align-items: center;
14618
+ gap: 7px;
14619
+ min-height: 30px;
14620
+ color: var(--squisq-text, #1e293b);
14621
+ }
14622
+ .squisq-mermaid-shape-search {
14623
+ box-sizing: border-box;
14624
+ width: 100%;
14625
+ margin-bottom: 6px;
14626
+ padding: 7px 8px;
14627
+ border: 1px solid var(--squisq-border, #cbd5e1);
14628
+ border-radius: 6px;
14629
+ background: var(--squisq-surface-subtle, #f8fafc);
14630
+ color: inherit;
14631
+ }
14632
+ .squisq-mermaid-shape-scroll {
14633
+ min-height: 0;
14634
+ flex: 1 1 auto;
14635
+ overflow-y: auto;
14636
+ overscroll-behavior: contain;
14637
+ }
14638
+ .squisq-mermaid-shape-heading {
14639
+ margin: 9px 3px 4px;
14640
+ color: var(--squisq-text-muted, #64748b);
14641
+ font-size: 11px;
14642
+ font-weight: 700;
14643
+ letter-spacing: 0.04em;
14644
+ text-transform: uppercase;
14645
+ }
14646
+ .squisq-mermaid-shape-grid {
14647
+ display: grid;
14648
+ grid-template-columns: repeat(2, minmax(0, 1fr));
14649
+ gap: 3px;
14650
+ }
14651
+ .squisq-mermaid-shape-item {
14652
+ display: flex;
14653
+ align-items: center;
14654
+ gap: 6px;
14655
+ min-width: 0;
14656
+ padding: 5px;
14657
+ border: 1px solid transparent;
14658
+ border-radius: 6px;
14659
+ background: transparent;
14660
+ color: inherit;
14661
+ cursor: pointer;
14662
+ font-size: 12px;
14663
+ text-align: left;
14664
+ }
14665
+ .squisq-mermaid-shape-item svg {
14666
+ width: 34px;
14667
+ height: 24px;
14668
+ flex: 0 0 34px;
14669
+ }
14670
+ .squisq-mermaid-shape-item span {
14671
+ overflow: hidden;
14672
+ text-overflow: ellipsis;
14673
+ white-space: nowrap;
14674
+ }
14675
+ .squisq-mermaid-shape-item:hover,
14676
+ .squisq-mermaid-shape-item--selected {
14677
+ border-color: #a5b4fc;
14678
+ background: #eef2ff;
14679
+ color: #3730a3;
14680
+ }
14681
+ .squisq-mermaid-direction-picker {
14682
+ display: grid;
14683
+ grid-template-columns: repeat(2, 1fr);
14684
+ gap: 7px;
14685
+ width: min(344px, calc(100vw - 24px));
14686
+ padding: 10px;
14687
+ overflow: auto;
14688
+ overscroll-behavior: contain;
14689
+ }
14690
+ .squisq-mermaid-direction-heading {
14691
+ display: flex;
14692
+ grid-column: 1 / -1;
14693
+ flex-direction: column;
14694
+ gap: 2px;
14695
+ padding: 1px 3px 5px;
14696
+ }
14697
+ .squisq-mermaid-direction-heading strong {
14698
+ font-size: 13px;
14699
+ }
14700
+ .squisq-mermaid-direction-heading span {
14701
+ color: var(--squisq-text-muted, #64748b);
14702
+ font-size: 11px;
14703
+ }
14704
+ .squisq-mermaid-direction-card {
14705
+ display: flex;
14706
+ min-width: 0;
14707
+ flex-direction: column;
14708
+ align-items: stretch;
14709
+ gap: 5px;
14710
+ padding: 7px;
14711
+ border: 1px solid var(--squisq-border, #cbd5e1);
14712
+ border-radius: 7px;
14713
+ background: transparent;
14714
+ color: inherit;
14715
+ cursor: pointer;
14716
+ font: inherit;
14717
+ text-align: left;
14718
+ }
14719
+ .squisq-mermaid-direction-card svg {
14720
+ width: 100%;
14721
+ height: 64px;
14722
+ border-radius: 5px;
14723
+ background: var(--squisq-surface-subtle, rgb(148 163 184 / 10%));
14724
+ color: var(--squisq-text, #334155);
14725
+ }
14726
+ .squisq-mermaid-direction-card svg rect,
14727
+ .squisq-mermaid-direction-card svg path {
14728
+ fill: none;
14729
+ stroke: currentcolor;
14730
+ stroke-width: 1.8;
14731
+ }
14732
+ .squisq-mermaid-direction-card svg polygon,
14733
+ .squisq-mermaid-direction-card svg text {
14734
+ fill: currentcolor;
14735
+ }
14736
+ .squisq-mermaid-direction-card svg text {
14737
+ font-size: 9px;
14738
+ text-anchor: middle;
14739
+ }
14740
+ .squisq-mermaid-direction-copy {
14741
+ display: flex;
14742
+ min-width: 0;
14743
+ flex-direction: column;
14744
+ gap: 1px;
14745
+ }
14746
+ .squisq-mermaid-direction-copy strong {
14747
+ overflow: hidden;
14748
+ font-size: 12px;
14749
+ text-overflow: ellipsis;
14750
+ white-space: nowrap;
14751
+ }
14752
+ .squisq-mermaid-direction-copy small {
14753
+ color: var(--squisq-text-muted, #64748b);
14754
+ font-size: 10px;
14755
+ }
14756
+ .squisq-mermaid-direction-card:hover,
14757
+ .squisq-mermaid-direction-card[aria-pressed=true] {
14758
+ border-color: #818cf8;
14759
+ background: #eef2ff;
14760
+ color: #3730a3;
14761
+ }
14762
+ .squisq-mermaid-direction-card:hover svg,
14763
+ .squisq-mermaid-direction-card[aria-pressed=true] svg {
14764
+ color: currentcolor;
14765
+ }
14766
+ .squisq-editor-shell[data-theme=dark] .squisq-mermaid-direction-card svg {
14767
+ color: #cbd5e1;
14768
+ }
14769
+ .squisq-editor-shell[data-theme=dark] .squisq-mermaid-connect-hint,
14770
+ .squisq-editor-shell[data-theme=dark] .squisq-mermaid-shape-item:hover,
14771
+ .squisq-editor-shell[data-theme=dark] .squisq-mermaid-shape-item--selected,
14772
+ .squisq-editor-shell[data-theme=dark] .squisq-mermaid-direction-card:hover,
14773
+ .squisq-editor-shell[data-theme=dark] .squisq-mermaid-direction-card[aria-pressed=true] {
14774
+ border-color: #6366f1;
14775
+ background: #312e81;
14776
+ color: #eef2ff;
14777
+ }
14778
+ .squisq-mermaid-edit-notice {
14779
+ margin-top: 6px;
14780
+ padding: 7px 9px;
14781
+ border: 1px solid #fbbf24;
14782
+ border-radius: 6px;
14783
+ background: #fffbeb;
14784
+ color: #92400e;
14785
+ font-size: 12px;
13950
14786
  }
13951
- .squisq-diagram-maximize-btn:hover {
13952
- background: var(--squisq-surface-hover, #f8fafc);
14787
+ .squisq-editor-shell[data-theme=dark] .squisq-mermaid-edit-notice {
14788
+ border-color: #92400e;
14789
+ background: #451a03;
14790
+ color: #fde68a;
13953
14791
  }
13954
- .squisq-diagram-maximized-overlay {
13955
- position: fixed;
13956
- inset: 0;
13957
- z-index: 9999;
13958
- background: rgba(15, 23, 42, 0.6);
14792
+ .squisq-mermaid-status,
14793
+ .squisq-mermaid-error {
13959
14794
  display: flex;
13960
- align-items: stretch;
13961
- justify-content: stretch;
14795
+ min-height: 180px;
14796
+ align-items: center;
14797
+ justify-content: center;
14798
+ color: var(--squisq-text-muted, #64748b);
14799
+ text-align: center;
13962
14800
  }
13963
- .squisq-diagram-maximized-content {
13964
- position: relative;
13965
- flex: 1;
13966
- margin: 24px;
13967
- background: var(--squisq-surface, #ffffff);
13968
- border-radius: 12px;
13969
- overflow: hidden;
13970
- box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
14801
+ .squisq-mermaid-error {
14802
+ box-sizing: border-box;
14803
+ flex-direction: column;
14804
+ gap: 8px;
14805
+ align-items: flex-start;
14806
+ justify-content: flex-start;
14807
+ padding: 16px;
14808
+ border: 1px solid #fca5a5;
14809
+ border-radius: 8px;
14810
+ background: #fef2f2;
14811
+ color: #991b1b;
14812
+ text-align: left;
13971
14813
  }
13972
- .squisq-diagram-maximized-content .squisq-diagram-canvas {
14814
+ .squisq-mermaid-error pre {
13973
14815
  width: 100%;
13974
- height: 100%;
14816
+ max-height: 160px;
14817
+ overflow: auto;
14818
+ margin: 0;
14819
+ padding: 8px;
14820
+ white-space: pre-wrap;
14821
+ background: transparent;
14822
+ color: inherit;
14823
+ font-size: 12px;
13975
14824
  }
13976
- [data-squisq-diagram-child=true] {
14825
+ .squisq-editor-shell[data-theme=dark] .squisq-mermaid-error {
14826
+ border-color: #7f1d1d;
14827
+ background: #450a0a;
14828
+ color: #fecaca;
14829
+ }
14830
+
14831
+ /* src/styles/code-snippet.css */
14832
+ .squisq-wysiwyg-editor pre.squisq-code-snippet-fence-hidden {
13977
14833
  display: none;
13978
14834
  }
13979
- .squisq-diagram-inline-placeholder {
13980
- height: 420px;
13981
- border: 1px dashed var(--squisq-border, #e2e8f0);
14835
+ .squisq-code-snippet-widget-host {
14836
+ margin: 0.75rem 0 1.25rem;
14837
+ }
14838
+ .squisq-code-snippet-shell {
14839
+ box-sizing: border-box;
14840
+ display: flex;
14841
+ width: 100%;
14842
+ height: 240px;
14843
+ min-height: 128px;
14844
+ max-height: 70vh;
14845
+ flex-direction: column;
14846
+ overflow: hidden;
14847
+ resize: vertical;
14848
+ border: 1px solid var(--squisq-border, #d1d5db);
13982
14849
  border-radius: 8px;
14850
+ background: var(--squisq-surface, #ffffff);
14851
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
14852
+ }
14853
+ .squisq-code-snippet-header {
14854
+ box-sizing: border-box;
13983
14855
  display: flex;
14856
+ min-height: 34px;
13984
14857
  align-items: center;
13985
- justify-content: center;
14858
+ justify-content: space-between;
14859
+ gap: 12px;
14860
+ padding: 0 10px;
14861
+ border-bottom: 1px solid var(--squisq-border, #d1d5db);
14862
+ background: var(--squisq-surface-muted, #f8fafc);
13986
14863
  color: var(--squisq-text-muted, #64748b);
13987
- font-size: 14px;
13988
- }
13989
- .squisq-diagram-inline-placeholder::before {
13990
- content: "Diagram open in full screen \2014 press Esc to return";
14864
+ font-family: var(--squisq-ux-font, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif);
14865
+ font-size: 12px;
14866
+ user-select: none;
13991
14867
  }
13992
-
13993
- /* src/styles/ascii-diagram.css */
13994
- .squisq-wysiwyg-editor pre.squisq-ascii-fence-hidden {
13995
- display: none;
14868
+ .squisq-code-snippet-title {
14869
+ display: inline-flex;
14870
+ min-width: 0;
14871
+ align-items: center;
14872
+ gap: 7px;
14873
+ color: var(--squisq-text, #334155);
14874
+ font-weight: 600;
13996
14875
  }
13997
- .squisq-wysiwyg-editor pre.squisq-ascii-fence-source {
14876
+ .squisq-code-snippet-header code {
14877
+ overflow: hidden;
14878
+ color: inherit;
13998
14879
  font-family:
13999
14880
  ui-monospace,
14000
14881
  SFMono-Regular,
@@ -14002,59 +14883,24 @@
14002
14883
  Consolas,
14003
14884
  "Liberation Mono",
14004
14885
  monospace;
14005
- white-space: pre;
14006
- overflow-x: auto;
14007
- line-height: 1.2;
14008
- tab-size: 4;
14009
- }
14010
- .squisq-ascii-diagram-widget-host {
14011
- margin: 0.75rem 0 1.25rem;
14012
- }
14013
- .squisq-ascii-diagram-warnings {
14014
- margin-top: 4px;
14015
- font-size: 12px;
14016
- color: var(--squisq-theme-text-muted, #6b7280);
14017
- }
14018
- .squisq-ascii-diagram-warnings summary {
14019
- cursor: pointer;
14020
- user-select: none;
14886
+ text-overflow: ellipsis;
14887
+ white-space: nowrap;
14021
14888
  }
14022
- .squisq-ascii-diagram-warnings ul {
14023
- margin: 4px 0 0;
14024
- padding-left: 18px;
14889
+ .squisq-code-snippet-editor {
14890
+ position: relative;
14891
+ min-height: 0;
14892
+ flex: 1;
14893
+ overflow: hidden;
14025
14894
  }
14026
- .squisq-repair-banner {
14895
+ .squisq-code-snippet-loading {
14027
14896
  display: flex;
14897
+ width: 100%;
14898
+ height: 100%;
14028
14899
  align-items: center;
14029
- gap: 10px;
14030
- flex-wrap: wrap;
14031
- margin: 4px 0 1rem;
14032
- padding: 8px 12px;
14033
- border: 1px dashed var(--squisq-border, #d1d5db);
14034
- border-radius: 8px;
14035
- background: var(--squisq-input-bg, #f9fafb);
14036
- font-size: 13px;
14037
- }
14038
- .squisq-repair-banner-text {
14039
- color: var(--squisq-text-muted, #6b7280);
14040
- }
14041
- .squisq-repair-banner-btn {
14042
- cursor: pointer;
14043
- border: 1px solid var(--squisq-accent, #6366f1);
14044
- border-radius: 6px;
14045
- background: var(--squisq-accent, #6366f1);
14046
- color: #fff;
14047
- padding: 4px 12px;
14048
- font-size: 13px;
14049
- font-weight: 500;
14050
- line-height: 1.4;
14051
- white-space: nowrap;
14052
- }
14053
- .squisq-repair-banner-btn:hover {
14054
- filter: brightness(1.05);
14055
- }
14056
- .squisq-repair-banner-btn:active {
14057
- filter: brightness(0.95);
14900
+ justify-content: center;
14901
+ color: var(--squisq-text-muted, #64748b);
14902
+ font-family: var(--squisq-ux-font, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif);
14903
+ font-size: 12px;
14058
14904
  }
14059
14905
 
14060
14906
  /* src/styles/tree-view.css */
@@ -14738,6 +15584,7 @@ button.squisq-ascii-timeline-track-name:focus-visible {
14738
15584
  }
14739
15585
  .squisq-editor-shell[data-theme=dark] .squisq-scene-shell {
14740
15586
  --squisq-surface: #0f172a;
15587
+ --squisq-surface-raised: #111827;
14741
15588
  --squisq-surface-hover: #1e293b;
14742
15589
  --squisq-border: #475569;
14743
15590
  --squisq-text: #f8fafc;
@@ -14746,8 +15593,8 @@ button.squisq-ascii-timeline-track-name:focus-visible {
14746
15593
  .squisq-editor-shell[data-theme=dark] .squisq-scene-root,
14747
15594
  .squisq-editor-shell[data-theme=dark] .squisq-scene-inline,
14748
15595
  .squisq-editor-shell[data-theme=dark] .squisq-diagram-inline {
14749
- background: #0f172a;
14750
- border-color: #475569;
15596
+ background: var(--squisq-surface, #0f172a);
15597
+ border-color: var(--squisq-border, #475569);
14751
15598
  }
14752
15599
  .squisq-editor-shell[data-theme=dark] .squisq-scene-layer--shape,
14753
15600
  .squisq-editor-shell[data-theme=dark] .squisq-scene-layer--path,
@@ -14782,41 +15629,41 @@ button.squisq-ascii-timeline-track-name:focus-visible {
14782
15629
  }
14783
15630
  .squisq-scene-selection-outline {
14784
15631
  fill: none;
14785
- stroke: #6366f1;
15632
+ stroke: var(--squisq-accent, #6366f1);
14786
15633
  stroke-width: 1.5;
14787
15634
  stroke-dasharray: 4 3;
14788
15635
  vector-effect: non-scaling-stroke;
14789
15636
  }
14790
15637
  .squisq-scene-selection-handle {
14791
- fill: #ffffff;
14792
- stroke: #6366f1;
15638
+ fill: var(--squisq-surface, #ffffff);
15639
+ stroke: var(--squisq-accent, #6366f1);
14793
15640
  stroke-width: 1.5;
14794
15641
  vector-effect: non-scaling-stroke;
14795
15642
  }
14796
15643
  .squisq-scene-marquee {
14797
- fill: rgba(99, 102, 241, 0.08);
14798
- stroke: #6366f1;
15644
+ fill: color-mix(in srgb, var(--squisq-accent, #6366f1) 12%, transparent);
15645
+ stroke: var(--squisq-accent, #6366f1);
14799
15646
  stroke-width: 1;
14800
15647
  stroke-dasharray: 4 3;
14801
15648
  vector-effect: non-scaling-stroke;
14802
15649
  }
14803
15650
  .squisq-scene-connect-preview {
14804
15651
  fill: none;
14805
- stroke: #6366f1;
15652
+ stroke: var(--squisq-accent, #6366f1);
14806
15653
  stroke-width: 2;
14807
15654
  stroke-dasharray: 6 4;
14808
15655
  vector-effect: non-scaling-stroke;
14809
15656
  pointer-events: none;
14810
15657
  }
14811
15658
  .squisq-scene-connection-point {
14812
- fill: #ffffff;
14813
- stroke: #6366f1;
15659
+ fill: var(--squisq-surface, #ffffff);
15660
+ stroke: var(--squisq-accent, #6366f1);
14814
15661
  stroke-width: 2;
14815
15662
  vector-effect: non-scaling-stroke;
14816
15663
  pointer-events: none;
14817
15664
  }
14818
15665
  .squisq-scene-connection-point--active {
14819
- fill: #6366f1;
15666
+ fill: var(--squisq-accent, #6366f1);
14820
15667
  }
14821
15668
  .squisq-scene-toolbar {
14822
15669
  position: absolute;
@@ -14828,8 +15675,8 @@ button.squisq-ascii-timeline-track-name:focus-visible {
14828
15675
  flex-wrap: wrap;
14829
15676
  gap: 4px;
14830
15677
  padding: 4px;
14831
- background: #ffffff;
14832
- border: 1px solid #cbd5e1;
15678
+ background: var(--squisq-surface-raised, var(--squisq-surface, #ffffff));
15679
+ border: 1px solid var(--squisq-border, #cbd5e1);
14833
15680
  border-radius: 6px;
14834
15681
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12);
14835
15682
  max-width: calc(100% - 16px);
@@ -14841,10 +15688,10 @@ button.squisq-ascii-timeline-track-name:focus-visible {
14841
15688
  min-width: 28px;
14842
15689
  height: 28px;
14843
15690
  padding: 0 8px;
14844
- background: #ffffff;
15691
+ background: var(--squisq-surface-raised, var(--squisq-surface, #ffffff));
14845
15692
  border: 1px solid transparent;
14846
15693
  border-radius: 4px;
14847
- color: #1e293b;
15694
+ color: var(--squisq-text, #1e293b);
14848
15695
  cursor: pointer;
14849
15696
  font-size: 11px;
14850
15697
  font-weight: 600;
@@ -14852,23 +15699,23 @@ button.squisq-ascii-timeline-track-name:focus-visible {
14852
15699
  white-space: nowrap;
14853
15700
  }
14854
15701
  .squisq-scene-tool:hover {
14855
- background: #f1f5f9;
14856
- border-color: #cbd5e1;
14857
- color: #1e293b;
15702
+ background: var(--squisq-surface-hover, #f1f5f9);
15703
+ border-color: var(--squisq-border, #cbd5e1);
15704
+ color: var(--squisq-text, #1e293b);
14858
15705
  }
14859
15706
  .squisq-scene-tool:focus-visible {
14860
- outline: 2px solid #6366f1;
15707
+ outline: 2px solid var(--squisq-accent, #6366f1);
14861
15708
  outline-offset: 1px;
14862
15709
  }
14863
15710
  .squisq-scene-tool--active {
14864
- background: #eef2ff;
14865
- border-color: #6366f1;
14866
- color: #4338ca;
15711
+ background: var(--squisq-accent, #6366f1);
15712
+ border-color: var(--squisq-accent-hover, #4f46e5);
15713
+ color: var(--squisq-text-on-accent, #ffffff);
14867
15714
  }
14868
15715
  .squisq-scene-tool--active:hover {
14869
- background: #e0e7ff;
14870
- border-color: #4f46e5;
14871
- color: #4338ca;
15716
+ background: var(--squisq-accent-hover, #4f46e5);
15717
+ border-color: var(--squisq-accent-hover, #4f46e5);
15718
+ color: var(--squisq-text-on-accent, #ffffff);
14872
15719
  }
14873
15720
  .squisq-scene-tool-label {
14874
15721
  font-size: 11px;
@@ -14894,7 +15741,7 @@ button.squisq-ascii-timeline-track-name:focus-visible {
14894
15741
  flex-wrap: wrap;
14895
15742
  gap: 4px;
14896
15743
  padding: 3px;
14897
- background: var(--squisq-surface, #ffffff);
15744
+ background: var(--squisq-surface-raised, var(--squisq-surface, #ffffff));
14898
15745
  border: 1px solid var(--squisq-border, #cbd5e1);
14899
15746
  border-radius: 6px;
14900
15747
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06);
@@ -14905,10 +15752,10 @@ button.squisq-ascii-timeline-track-name:focus-visible {
14905
15752
  gap: 4px;
14906
15753
  height: 28px;
14907
15754
  padding: 0 10px;
14908
- background: #ffffff;
15755
+ background: var(--squisq-surface-raised, var(--squisq-surface, #ffffff));
14909
15756
  border: 1px solid transparent;
14910
15757
  border-radius: 4px;
14911
- color: #1e293b;
15758
+ color: var(--squisq-text, #1e293b);
14912
15759
  cursor: pointer;
14913
15760
  font-size: 11px;
14914
15761
  font-weight: 600;
@@ -14916,11 +15763,21 @@ button.squisq-ascii-timeline-track-name:focus-visible {
14916
15763
  white-space: nowrap;
14917
15764
  }
14918
15765
  .squisq-scene-action:hover:not(:disabled) {
14919
- background: #f1f5f9;
14920
- border-color: #cbd5e1;
15766
+ background: var(--squisq-surface-hover, #f1f5f9);
15767
+ border-color: var(--squisq-border, #cbd5e1);
15768
+ }
15769
+ .squisq-scene-action--active,
15770
+ .squisq-scene-action--active:hover:not(:disabled) {
15771
+ background: var(--squisq-accent, #6366f1);
15772
+ border-color: var(--squisq-accent-hover, #4f46e5);
15773
+ color: var(--squisq-text-on-accent, #ffffff);
15774
+ }
15775
+ .squisq-scene-action-popover-anchor {
15776
+ position: relative;
15777
+ display: inline-flex;
14921
15778
  }
14922
15779
  .squisq-scene-action:focus-visible {
14923
- outline: 2px solid #6366f1;
15780
+ outline: 2px solid var(--squisq-accent, #6366f1);
14924
15781
  outline-offset: 1px;
14925
15782
  }
14926
15783
  .squisq-scene-action:disabled {
@@ -14949,27 +15806,29 @@ button.squisq-ascii-timeline-track-name:focus-visible {
14949
15806
  .squisq-editor-shell[data-theme=dark] .squisq-scene-block-tools,
14950
15807
  .squisq-editor-shell[data-theme=dark] .squisq-scene-block-actions,
14951
15808
  .squisq-editor-shell[data-theme=dark] .squisq-scene-block-props {
14952
- background: #111827;
14953
- border-color: #475569;
14954
- color: #e5e7eb;
15809
+ background: var(--squisq-surface-raised, #111827);
15810
+ border-color: var(--squisq-border, #475569);
15811
+ color: var(--squisq-text, #e5e7eb);
14955
15812
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.32);
14956
15813
  }
14957
15814
  .squisq-editor-shell[data-theme=dark] .squisq-scene-tool,
14958
15815
  .squisq-editor-shell[data-theme=dark] .squisq-scene-action {
14959
- background: #111827;
14960
- color: #e5e7eb;
15816
+ background: var(--squisq-surface-raised, #111827);
15817
+ color: var(--squisq-text, #e5e7eb);
14961
15818
  }
14962
15819
  .squisq-editor-shell[data-theme=dark] .squisq-scene-tool:hover,
14963
15820
  .squisq-editor-shell[data-theme=dark] .squisq-scene-action:hover:not(:disabled) {
14964
- background: #1f2937;
14965
- border-color: #64748b;
14966
- color: #f8fafc;
15821
+ background: var(--squisq-surface-hover, #1f2937);
15822
+ border-color: var(--squisq-border, #64748b);
15823
+ color: var(--squisq-text, #f8fafc);
14967
15824
  }
14968
15825
  .squisq-editor-shell[data-theme=dark] .squisq-scene-tool--active,
14969
- .squisq-editor-shell[data-theme=dark] .squisq-scene-tool--active:hover {
14970
- background: #312e81;
14971
- border-color: #818cf8;
14972
- color: #f8fafc;
15826
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-tool--active:hover,
15827
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-action--active,
15828
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-action--active:hover:not(:disabled) {
15829
+ background: var(--squisq-accent, #6366f1);
15830
+ border-color: var(--squisq-accent-hover, #818cf8);
15831
+ color: var(--squisq-text-on-accent, #ffffff);
14973
15832
  }
14974
15833
  .squisq-editor-shell[data-theme=dark] .squisq-scene-action--danger {
14975
15834
  color: #fca5a5;
@@ -14989,7 +15848,8 @@ button.squisq-ascii-timeline-track-name:focus-visible {
14989
15848
  padding: 12px;
14990
15849
  }
14991
15850
  .squisq-scene-block-max > .squisq-diagram-canvas,
14992
- .squisq-scene-block-max > .squisq-scene-stage {
15851
+ .squisq-scene-block-max > .squisq-scene-stage,
15852
+ .squisq-scene-block-max > .squisq-mermaid-canvas {
14993
15853
  flex: 1;
14994
15854
  min-width: 0;
14995
15855
  min-height: 0;
@@ -15027,6 +15887,11 @@ button.squisq-ascii-timeline-track-name:focus-visible {
15027
15887
  left: auto;
15028
15888
  right: calc(100% + 6px);
15029
15889
  }
15890
+ .squisq-scene-side-toolbar .squisq-scene-action-popover-anchor > [role=dialog] {
15891
+ top: 0;
15892
+ left: auto;
15893
+ right: calc(100% + 6px);
15894
+ }
15030
15895
  .squisq-scene-inline-toolbar {
15031
15896
  display: flex;
15032
15897
  margin-bottom: 8px;
@@ -15037,6 +15902,60 @@ button.squisq-ascii-timeline-track-name:focus-visible {
15037
15902
  width: 100%;
15038
15903
  margin: 0;
15039
15904
  }
15905
+ .squisq-scene-view-controls {
15906
+ position: absolute;
15907
+ top: 8px;
15908
+ left: 8px;
15909
+ z-index: 10;
15910
+ display: inline-flex;
15911
+ align-items: center;
15912
+ overflow: hidden;
15913
+ border: 1px solid var(--squisq-border, #e2e8f0);
15914
+ border-radius: 6px;
15915
+ background: var(--squisq-surface, #ffffff);
15916
+ color: var(--squisq-text, #1e293b);
15917
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
15918
+ }
15919
+ .squisq-scene-view-controls button,
15920
+ .squisq-scene-view-scale {
15921
+ box-sizing: border-box;
15922
+ min-width: 32px;
15923
+ height: 32px;
15924
+ padding: 0 8px;
15925
+ border: 0;
15926
+ border-right: 1px solid var(--squisq-border, #e2e8f0);
15927
+ background: transparent;
15928
+ color: inherit;
15929
+ font: inherit;
15930
+ font-size: 12px;
15931
+ line-height: 32px;
15932
+ text-align: center;
15933
+ }
15934
+ .squisq-scene-view-controls button {
15935
+ cursor: pointer;
15936
+ }
15937
+ .squisq-scene-view-controls button:last-child {
15938
+ border-right: 0;
15939
+ }
15940
+ .squisq-scene-view-controls button:hover,
15941
+ .squisq-scene-view-fit[data-active=true] {
15942
+ background: var(--squisq-surface-hover, #f1f5f9);
15943
+ }
15944
+ .squisq-scene-view-fit[data-active=true] {
15945
+ background: var(--squisq-accent, #6366f1);
15946
+ color: var(--squisq-text-on-accent, #ffffff);
15947
+ font-weight: 600;
15948
+ }
15949
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-view-controls {
15950
+ background: var(--squisq-surface-raised, #111827);
15951
+ border-color: var(--squisq-border, #475569);
15952
+ color: var(--squisq-text, #e5e7eb);
15953
+ }
15954
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-view-controls button:hover,
15955
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-view-fit[data-active=true] {
15956
+ background: var(--squisq-accent, #6366f1);
15957
+ color: var(--squisq-text-on-accent, #ffffff);
15958
+ }
15040
15959
  .squisq-scene-maximize-btn {
15041
15960
  position: absolute;
15042
15961
  top: 8px;
@@ -15047,30 +15966,30 @@ button.squisq-ascii-timeline-track-name:focus-visible {
15047
15966
  display: inline-flex;
15048
15967
  align-items: center;
15049
15968
  justify-content: center;
15050
- background: #ffffff;
15051
- border: 1px solid #cbd5e1;
15969
+ background: var(--squisq-surface-raised, var(--squisq-surface, #ffffff));
15970
+ border: 1px solid var(--squisq-border, #cbd5e1);
15052
15971
  border-radius: 6px;
15053
15972
  cursor: pointer;
15054
15973
  font-size: 16px;
15055
15974
  line-height: 1;
15056
- color: #1e293b;
15975
+ color: var(--squisq-text, #1e293b);
15057
15976
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
15058
15977
  }
15059
15978
  .squisq-scene-maximize-btn:hover {
15060
- background: #f1f5f9;
15061
- border-color: #94a3b8;
15062
- color: #0f172a;
15979
+ background: var(--squisq-surface-hover, #f1f5f9);
15980
+ border-color: var(--squisq-border, #94a3b8);
15981
+ color: var(--squisq-text, #0f172a);
15063
15982
  }
15064
15983
  .squisq-editor-shell[data-theme=dark] .squisq-scene-maximize-btn {
15065
- background: #111827;
15066
- border-color: #475569;
15067
- color: #e5e7eb;
15984
+ background: var(--squisq-surface-raised, #111827);
15985
+ border-color: var(--squisq-border, #475569);
15986
+ color: var(--squisq-text, #e5e7eb);
15068
15987
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.32);
15069
15988
  }
15070
15989
  .squisq-editor-shell[data-theme=dark] .squisq-scene-maximize-btn:hover {
15071
- background: #1f2937;
15072
- border-color: #64748b;
15073
- color: #f8fafc;
15990
+ background: var(--squisq-surface-hover, #1f2937);
15991
+ border-color: var(--squisq-border, #64748b);
15992
+ color: var(--squisq-text, #f8fafc);
15074
15993
  }
15075
15994
  .squisq-scene-node-card {
15076
15995
  fill: var(--squisq-surface, #ffffff);
@@ -15099,7 +16018,7 @@ button.squisq-ascii-timeline-track-name:focus-visible {
15099
16018
  pointer-events: all;
15100
16019
  }
15101
16020
  .squisq-scene-node-handle:hover {
15102
- fill: #6366f1;
16021
+ fill: var(--squisq-accent, #6366f1);
15103
16022
  }
15104
16023
  .squisq-scene-edge-path {
15105
16024
  fill: none;
@@ -15346,14 +16265,14 @@ button.squisq-ascii-timeline-track-name:focus-visible {
15346
16265
  padding: 6px 12px;
15347
16266
  font-size: 12px;
15348
16267
  font-weight: 500;
15349
- color: #ffffff;
15350
- background: #6366f1;
16268
+ color: var(--squisq-text-on-accent, #ffffff);
16269
+ background: var(--squisq-accent, #6366f1);
15351
16270
  border: none;
15352
16271
  border-radius: 6px;
15353
16272
  cursor: pointer;
15354
16273
  }
15355
16274
  .squisq-scene-empty-btn:hover {
15356
- background: #4f46e5;
16275
+ background: var(--squisq-accent-hover, #4f46e5);
15357
16276
  }
15358
16277
 
15359
16278
  /* src/customTemplates/designer.css */