@parhelia/core 0.3.12831 → 0.3.12833

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 (600) hide show
  1. package/dist/components/emoji/EmojiPicker.d.ts +18 -0
  2. package/dist/components/emoji/EmojiPicker.js +102 -0
  3. package/dist/components/emoji/EmojiPicker.js.map +1 -0
  4. package/dist/components/emoji/EmojiText.d.ts +19 -0
  5. package/dist/components/emoji/EmojiText.js +30 -0
  6. package/dist/components/emoji/EmojiText.js.map +1 -0
  7. package/dist/components/emoji/emojiData.generated.d.ts +2 -0
  8. package/dist/components/emoji/emojiData.generated.js +1878 -0
  9. package/dist/components/emoji/emojiData.generated.js.map +1 -0
  10. package/dist/components/emoji/emojiIndex.d.ts +46 -0
  11. package/dist/components/emoji/emojiIndex.js +173 -0
  12. package/dist/components/emoji/emojiIndex.js.map +1 -0
  13. package/dist/components/emoji/emoticons.d.ts +21 -0
  14. package/dist/components/emoji/emoticons.js +167 -0
  15. package/dist/components/emoji/emoticons.js.map +1 -0
  16. package/dist/components/emoji/textareaInsert.d.ts +19 -0
  17. package/dist/components/emoji/textareaInsert.js +29 -0
  18. package/dist/components/emoji/textareaInsert.js.map +1 -0
  19. package/dist/components/emoji/twemoji.d.ts +30 -0
  20. package/dist/components/emoji/twemoji.js +84 -0
  21. package/dist/components/emoji/twemoji.js.map +1 -0
  22. package/dist/editor/agent-changes/agentChangeTargets.d.ts +58 -0
  23. package/dist/editor/agent-changes/agentChangeTargets.js +180 -0
  24. package/dist/editor/agent-changes/agentChangeTargets.js.map +1 -0
  25. package/dist/editor/agent-changes/agentChangeTextHighlight.d.ts +101 -0
  26. package/dist/editor/agent-changes/agentChangeTextHighlight.js +167 -0
  27. package/dist/editor/agent-changes/agentChangeTextHighlight.js.map +1 -0
  28. package/dist/editor/ai/AgentImagePreview.d.ts +13 -0
  29. package/dist/editor/ai/AgentImagePreview.js +41 -0
  30. package/dist/editor/ai/AgentImagePreview.js.map +1 -0
  31. package/dist/editor/ai/activityRowNavigation.d.ts +28 -0
  32. package/dist/editor/ai/activityRowNavigation.js +53 -0
  33. package/dist/editor/ai/activityRowNavigation.js.map +1 -0
  34. package/dist/editor/ai/terminal/activeReasoningModel.d.ts +9 -0
  35. package/dist/editor/ai/terminal/activeReasoningModel.js +20 -0
  36. package/dist/editor/ai/terminal/activeReasoningModel.js.map +1 -0
  37. package/dist/editor/ai/terminal/agentDurations.d.ts +27 -0
  38. package/dist/editor/ai/terminal/agentDurations.js +89 -0
  39. package/dist/editor/ai/terminal/agentDurations.js.map +1 -0
  40. package/dist/editor/ai/terminal/agentTurnTiming.d.ts +35 -0
  41. package/dist/editor/ai/terminal/agentTurnTiming.js +128 -0
  42. package/dist/editor/ai/terminal/agentTurnTiming.js.map +1 -0
  43. package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.d.ts +9 -0
  44. package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.js +75 -0
  45. package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.js.map +1 -0
  46. package/dist/editor/ai/terminal/components/AgentProfileRecovery.d.ts +10 -0
  47. package/dist/editor/ai/terminal/components/AgentProfileRecovery.js +12 -0
  48. package/dist/editor/ai/terminal/components/AgentProfileRecovery.js.map +1 -0
  49. package/dist/editor/ai/terminal/components/CreateItemToolCallContent.d.ts +3 -0
  50. package/dist/editor/ai/terminal/components/CreateItemToolCallContent.js +47 -0
  51. package/dist/editor/ai/terminal/components/CreateItemToolCallContent.js.map +1 -0
  52. package/dist/editor/ai/terminal/components/ResponseTurnDuration.d.ts +15 -0
  53. package/dist/editor/ai/terminal/components/ResponseTurnDuration.js +62 -0
  54. package/dist/editor/ai/terminal/components/ResponseTurnDuration.js.map +1 -0
  55. package/dist/editor/ai/terminal/components/ToolCallDiagnosticsPanel.d.ts +6 -0
  56. package/dist/editor/ai/terminal/components/ToolCallDiagnosticsPanel.js +61 -0
  57. package/dist/editor/ai/terminal/components/ToolCallDiagnosticsPanel.js.map +1 -0
  58. package/dist/editor/ai/terminal/components/toolCallResultJson.d.ts +1 -0
  59. package/dist/editor/ai/terminal/components/toolCallResultJson.js +46 -0
  60. package/dist/editor/ai/terminal/components/toolCallResultJson.js.map +1 -0
  61. package/dist/editor/ai/terminal/reasoningEffortLevels.d.ts +8 -0
  62. package/dist/editor/ai/terminal/reasoningEffortLevels.js +54 -0
  63. package/dist/editor/ai/terminal/reasoningEffortLevels.js.map +1 -0
  64. package/dist/editor/ai/terminal/requestUsage.d.ts +3 -0
  65. package/dist/editor/ai/terminal/requestUsage.js +22 -0
  66. package/dist/editor/ai/terminal/requestUsage.js.map +1 -0
  67. package/dist/editor/ai/terminal/toolCallDiagnostics.d.ts +34 -0
  68. package/dist/editor/ai/terminal/toolCallDiagnostics.js +218 -0
  69. package/dist/editor/ai/terminal/toolCallDiagnostics.js.map +1 -0
  70. package/dist/editor/ai/terminal/useAgentProviderWait.d.ts +18 -0
  71. package/dist/editor/ai/terminal/useAgentProviderWait.js +23 -0
  72. package/dist/editor/ai/terminal/useAgentProviderWait.js.map +1 -0
  73. package/dist/editor/ai/terminal/useAgentReasoningEffortState.d.ts +5 -0
  74. package/dist/editor/ai/terminal/useAgentReasoningEffortState.js +10 -0
  75. package/dist/editor/ai/terminal/useAgentReasoningEffortState.js.map +1 -0
  76. package/dist/editor/bridge/bridgeKeys.d.ts +5 -0
  77. package/dist/editor/bridge/bridgeKeys.js +8 -0
  78. package/dist/editor/bridge/bridgeKeys.js.map +1 -0
  79. package/dist/editor/bridge/linkDownload.d.ts +3 -0
  80. package/dist/editor/bridge/linkDownload.js +52 -0
  81. package/dist/editor/bridge/linkDownload.js.map +1 -0
  82. package/dist/editor/client/SessionsDialog.d.ts +2 -0
  83. package/dist/editor/client/SessionsDialog.js +27 -0
  84. package/dist/editor/client/SessionsDialog.js.map +1 -0
  85. package/dist/editor/client/agentLoadItemPolicy.d.ts +22 -0
  86. package/dist/editor/client/agentLoadItemPolicy.js +60 -0
  87. package/dist/editor/client/agentLoadItemPolicy.js.map +1 -0
  88. package/dist/editor/client/clipboardStorage.d.ts +10 -0
  89. package/dist/editor/client/clipboardStorage.js +57 -0
  90. package/dist/editor/client/clipboardStorage.js.map +1 -0
  91. package/dist/editor/client/hooks/useRepositoryItemRefresh.d.ts +4 -0
  92. package/dist/editor/client/hooks/useRepositoryItemRefresh.js +62 -0
  93. package/dist/editor/client/hooks/useRepositoryItemRefresh.js.map +1 -0
  94. package/dist/editor/client/liveEditState.d.ts +16 -0
  95. package/dist/editor/client/liveEditState.js +25 -0
  96. package/dist/editor/client/liveEditState.js.map +1 -0
  97. package/dist/editor/client/liveSessionState.d.ts +6 -0
  98. package/dist/editor/client/liveSessionState.js +20 -0
  99. package/dist/editor/client/liveSessionState.js.map +1 -0
  100. package/dist/editor/client/localUserEditActivity.d.ts +3 -0
  101. package/dist/editor/client/localUserEditActivity.js +12 -0
  102. package/dist/editor/client/localUserEditActivity.js.map +1 -0
  103. package/dist/editor/client/valueStore.d.ts +22 -0
  104. package/dist/editor/client/valueStore.js +29 -0
  105. package/dist/editor/client/valueStore.js.map +1 -0
  106. package/dist/editor/commands/componentClipboardCommands.d.ts +35 -0
  107. package/dist/editor/commands/componentClipboardCommands.js +271 -0
  108. package/dist/editor/commands/componentClipboardCommands.js.map +1 -0
  109. package/dist/editor/commands/componentMenuGroups.d.ts +2 -0
  110. package/dist/editor/commands/componentMenuGroups.js +43 -0
  111. package/dist/editor/commands/componentMenuGroups.js.map +1 -0
  112. package/dist/editor/commands/mediaCommands.d.ts +5 -0
  113. package/dist/editor/commands/mediaCommands.js +59 -0
  114. package/dist/editor/commands/mediaCommands.js.map +1 -0
  115. package/dist/editor/component-conversion/ComponentTypePickerDialog.d.ts +12 -0
  116. package/dist/editor/component-conversion/ComponentTypePickerDialog.js +40 -0
  117. package/dist/editor/component-conversion/ComponentTypePickerDialog.js.map +1 -0
  118. package/dist/editor/component-conversion/ConversionAiDebugButton.d.ts +17 -0
  119. package/dist/editor/component-conversion/ConversionAiDebugButton.js +80 -0
  120. package/dist/editor/component-conversion/ConversionAiDebugButton.js.map +1 -0
  121. package/dist/editor/component-conversion/ConvertComponentDialog.d.ts +28 -0
  122. package/dist/editor/component-conversion/ConvertComponentDialog.js +633 -0
  123. package/dist/editor/component-conversion/ConvertComponentDialog.js.map +1 -0
  124. package/dist/editor/component-conversion/conversionModel.d.ts +109 -0
  125. package/dist/editor/component-conversion/conversionModel.js +519 -0
  126. package/dist/editor/component-conversion/conversionModel.js.map +1 -0
  127. package/dist/editor/component-conversion/conversionService.d.ts +12 -0
  128. package/dist/editor/component-conversion/conversionService.js +16 -0
  129. package/dist/editor/component-conversion/conversionService.js.map +1 -0
  130. package/dist/editor/component-conversion/conversionTypes.d.ts +214 -0
  131. package/dist/editor/component-conversion/conversionTypes.js +2 -0
  132. package/dist/editor/component-conversion/conversionTypes.js.map +1 -0
  133. package/dist/editor/component-conversion/convertComponentsCommand.d.ts +25 -0
  134. package/dist/editor/component-conversion/convertComponentsCommand.js +196 -0
  135. package/dist/editor/component-conversion/convertComponentsCommand.js.map +1 -0
  136. package/dist/editor/componentVisualMode.d.ts +14 -0
  137. package/dist/editor/componentVisualMode.js +43 -0
  138. package/dist/editor/componentVisualMode.js.map +1 -0
  139. package/dist/editor/field-types/FieldHistoryBoundary.d.ts +7 -0
  140. package/dist/editor/field-types/FieldHistoryBoundary.js +40 -0
  141. package/dist/editor/field-types/FieldHistoryBoundary.js.map +1 -0
  142. package/dist/editor/field-types/fieldStyles.d.ts +21 -0
  143. package/dist/editor/field-types/fieldStyles.js +22 -0
  144. package/dist/editor/field-types/fieldStyles.js.map +1 -0
  145. package/dist/editor/field-types/richtext/utils/changeHighlight.d.ts +32 -0
  146. package/dist/editor/field-types/richtext/utils/changeHighlight.js +68 -0
  147. package/dist/editor/field-types/richtext/utils/changeHighlight.js.map +1 -0
  148. package/dist/editor/field-types/richtext/utils/spellCheckText.d.ts +31 -0
  149. package/dist/editor/field-types/richtext/utils/spellCheckText.js +82 -0
  150. package/dist/editor/field-types/richtext/utils/spellCheckText.js.map +1 -0
  151. package/dist/editor/field-types/useFocusedFieldInput.d.ts +13 -0
  152. package/dist/editor/field-types/useFocusedFieldInput.js +50 -0
  153. package/dist/editor/field-types/useFocusedFieldInput.js.map +1 -0
  154. package/dist/editor/field-types/useFormFieldSelectionRange.d.ts +43 -0
  155. package/dist/editor/field-types/useFormFieldSelectionRange.js +149 -0
  156. package/dist/editor/field-types/useFormFieldSelectionRange.js.map +1 -0
  157. package/dist/editor/find-replace/FindReplacePanel.d.ts +11 -0
  158. package/dist/editor/find-replace/FindReplacePanel.js +311 -0
  159. package/dist/editor/find-replace/FindReplacePanel.js.map +1 -0
  160. package/dist/editor/find-replace/findReplaceCommand.d.ts +8 -0
  161. package/dist/editor/find-replace/findReplaceCommand.js +25 -0
  162. package/dist/editor/find-replace/findReplaceCommand.js.map +1 -0
  163. package/dist/editor/find-replace/findReplaceMatches.d.ts +42 -0
  164. package/dist/editor/find-replace/findReplaceMatches.js +66 -0
  165. package/dist/editor/find-replace/findReplaceMatches.js.map +1 -0
  166. package/dist/editor/find-replace/findReplaceStore.d.ts +30 -0
  167. package/dist/editor/find-replace/findReplaceStore.js +61 -0
  168. package/dist/editor/find-replace/findReplaceStore.js.map +1 -0
  169. package/dist/editor/find-replace/findReplaceTargets.d.ts +51 -0
  170. package/dist/editor/find-replace/findReplaceTargets.js +110 -0
  171. package/dist/editor/find-replace/findReplaceTargets.js.map +1 -0
  172. package/dist/editor/find-replace/findReplaceText.d.ts +50 -0
  173. package/dist/editor/find-replace/findReplaceText.js +189 -0
  174. package/dist/editor/find-replace/findReplaceText.js.map +1 -0
  175. package/dist/editor/itemContextMenuGroups.d.ts +16 -0
  176. package/dist/editor/itemContextMenuGroups.js +57 -0
  177. package/dist/editor/itemContextMenuGroups.js.map +1 -0
  178. package/dist/editor/media-selector/MediaDetailsView.d.ts +14 -0
  179. package/dist/editor/media-selector/MediaDetailsView.js +152 -0
  180. package/dist/editor/media-selector/MediaDetailsView.js.map +1 -0
  181. package/dist/editor/media-selector/UploadMediaFileDialog.d.ts +5 -0
  182. package/dist/editor/media-selector/UploadMediaFileDialog.js +14 -0
  183. package/dist/editor/media-selector/UploadMediaFileDialog.js.map +1 -0
  184. package/dist/editor/media-selector/useMediaFolderDrag.d.ts +26 -0
  185. package/dist/editor/media-selector/useMediaFolderDrag.js +153 -0
  186. package/dist/editor/media-selector/useMediaFolderDrag.js.map +1 -0
  187. package/dist/editor/menubar/OpenPublishedPageButton.d.ts +1 -0
  188. package/dist/editor/menubar/OpenPublishedPageButton.js +22 -0
  189. package/dist/editor/menubar/OpenPublishedPageButton.js.map +1 -0
  190. package/dist/editor/menubar/toolbar-sections/CommentsToggleControl.d.ts +11 -0
  191. package/dist/editor/menubar/toolbar-sections/CommentsToggleControl.js +65 -0
  192. package/dist/editor/menubar/toolbar-sections/CommentsToggleControl.js.map +1 -0
  193. package/dist/editor/menubar/toolbar-sections/FindReplaceControls.d.ts +6 -0
  194. package/dist/editor/menubar/toolbar-sections/FindReplaceControls.js +31 -0
  195. package/dist/editor/menubar/toolbar-sections/FindReplaceControls.js.map +1 -0
  196. package/dist/editor/menubar/toolbar-sections/SpellCheckToggleControl.d.ts +5 -0
  197. package/dist/editor/menubar/toolbar-sections/SpellCheckToggleControl.js +16 -0
  198. package/dist/editor/menubar/toolbar-sections/SpellCheckToggleControl.js.map +1 -0
  199. package/dist/editor/mobileBottomPanel.d.ts +40 -0
  200. package/dist/editor/mobileBottomPanel.js +63 -0
  201. package/dist/editor/mobileBottomPanel.js.map +1 -0
  202. package/dist/editor/page-editor-chrome/AgentChangeHighlightings.d.ts +17 -0
  203. package/dist/editor/page-editor-chrome/AgentChangeHighlightings.js +33 -0
  204. package/dist/editor/page-editor-chrome/AgentChangeHighlightings.js.map +1 -0
  205. package/dist/editor/page-editor-chrome/BridgePasteCleanupOverlay.d.ts +6 -0
  206. package/dist/editor/page-editor-chrome/BridgePasteCleanupOverlay.js +100 -0
  207. package/dist/editor/page-editor-chrome/BridgePasteCleanupOverlay.js.map +1 -0
  208. package/dist/editor/page-editor-chrome/CanvasOverviewRulerBinding.d.ts +9 -0
  209. package/dist/editor/page-editor-chrome/CanvasOverviewRulerBinding.js +32 -0
  210. package/dist/editor/page-editor-chrome/CanvasOverviewRulerBinding.js.map +1 -0
  211. package/dist/editor/page-editor-chrome/CommentTargetPickerCanvasLayer.d.ts +14 -0
  212. package/dist/editor/page-editor-chrome/CommentTargetPickerCanvasLayer.js +110 -0
  213. package/dist/editor/page-editor-chrome/CommentTargetPickerCanvasLayer.js.map +1 -0
  214. package/dist/editor/page-editor-chrome/ConversionIndicators.d.ts +8 -0
  215. package/dist/editor/page-editor-chrome/ConversionIndicators.js +75 -0
  216. package/dist/editor/page-editor-chrome/ConversionIndicators.js.map +1 -0
  217. package/dist/editor/page-editor-chrome/DiffHighlightOverlay.d.ts +29 -0
  218. package/dist/editor/page-editor-chrome/DiffHighlightOverlay.js +295 -0
  219. package/dist/editor/page-editor-chrome/DiffHighlightOverlay.js.map +1 -0
  220. package/dist/editor/page-editor-chrome/FeedbackLeaderCanvasSegment.d.ts +15 -0
  221. package/dist/editor/page-editor-chrome/FeedbackLeaderCanvasSegment.js +31 -0
  222. package/dist/editor/page-editor-chrome/FeedbackLeaderCanvasSegment.js.map +1 -0
  223. package/dist/editor/page-editor-chrome/FindReplaceHighlightings.d.ts +11 -0
  224. package/dist/editor/page-editor-chrome/FindReplaceHighlightings.js +120 -0
  225. package/dist/editor/page-editor-chrome/FindReplaceHighlightings.js.map +1 -0
  226. package/dist/editor/page-editor-chrome/SpellCheckHighlightings.d.ts +12 -0
  227. package/dist/editor/page-editor-chrome/SpellCheckHighlightings.js +197 -0
  228. package/dist/editor/page-editor-chrome/SpellCheckHighlightings.js.map +1 -0
  229. package/dist/editor/page-editor-chrome/ValidationRulerMarks.d.ts +11 -0
  230. package/dist/editor/page-editor-chrome/ValidationRulerMarks.js +56 -0
  231. package/dist/editor/page-editor-chrome/ValidationRulerMarks.js.map +1 -0
  232. package/dist/editor/page-editor-chrome/diffRulerSegments.d.ts +18 -0
  233. package/dist/editor/page-editor-chrome/diffRulerSegments.js +37 -0
  234. package/dist/editor/page-editor-chrome/diffRulerSegments.js.map +1 -0
  235. package/dist/editor/page-editor-chrome/overlay/feedbackAnchorMeasurements.d.ts +44 -0
  236. package/dist/editor/page-editor-chrome/overlay/feedbackAnchorMeasurements.js +89 -0
  237. package/dist/editor/page-editor-chrome/overlay/feedbackAnchorMeasurements.js.map +1 -0
  238. package/dist/editor/page-editor-chrome/overlay/feedbackAnchorStore.d.ts +17 -0
  239. package/dist/editor/page-editor-chrome/overlay/feedbackAnchorStore.js +53 -0
  240. package/dist/editor/page-editor-chrome/overlay/feedbackAnchorStore.js.map +1 -0
  241. package/dist/editor/page-editor-chrome/overlay/useBridgeTextRangeRequest.d.ts +11 -0
  242. package/dist/editor/page-editor-chrome/overlay/useBridgeTextRangeRequest.js +84 -0
  243. package/dist/editor/page-editor-chrome/overlay/useBridgeTextRangeRequest.js.map +1 -0
  244. package/dist/editor/page-editor-chrome/overlay/useCommentAnchorMeasurements.d.ts +34 -0
  245. package/dist/editor/page-editor-chrome/overlay/useCommentAnchorMeasurements.js +229 -0
  246. package/dist/editor/page-editor-chrome/overlay/useCommentAnchorMeasurements.js.map +1 -0
  247. package/dist/editor/page-editor-chrome/overlay/useOverlayViewportRight.d.ts +9 -0
  248. package/dist/editor/page-editor-chrome/overlay/useOverlayViewportRight.js +34 -0
  249. package/dist/editor/page-editor-chrome/overlay/useOverlayViewportRight.js.map +1 -0
  250. package/dist/editor/page-editor-chrome/overlay/useSuggestionAnchorMeasurements.d.ts +49 -0
  251. package/dist/editor/page-editor-chrome/overlay/useSuggestionAnchorMeasurements.js +241 -0
  252. package/dist/editor/page-editor-chrome/overlay/useSuggestionAnchorMeasurements.js.map +1 -0
  253. package/dist/editor/page-viewer/CanvasOverviewRuler.d.ts +11 -0
  254. package/dist/editor/page-viewer/CanvasOverviewRuler.js +65 -0
  255. package/dist/editor/page-viewer/CanvasOverviewRuler.js.map +1 -0
  256. package/dist/editor/page-viewer/DynamicRenderingsBar.d.ts +23 -0
  257. package/dist/editor/page-viewer/DynamicRenderingsBar.js +28 -0
  258. package/dist/editor/page-viewer/DynamicRenderingsBar.js.map +1 -0
  259. package/dist/editor/page-viewer/DynamicRenderingsStrip.d.ts +18 -0
  260. package/dist/editor/page-viewer/DynamicRenderingsStrip.js +29 -0
  261. package/dist/editor/page-viewer/DynamicRenderingsStrip.js.map +1 -0
  262. package/dist/editor/page-viewer/FeedbackMargin.d.ts +57 -0
  263. package/dist/editor/page-viewer/FeedbackMargin.js +377 -0
  264. package/dist/editor/page-viewer/FeedbackMargin.js.map +1 -0
  265. package/dist/editor/page-viewer/FeedbackMarginController.d.ts +76 -0
  266. package/dist/editor/page-viewer/FeedbackMarginController.js +241 -0
  267. package/dist/editor/page-viewer/FeedbackMarginController.js.map +1 -0
  268. package/dist/editor/page-viewer/FeedbackMarginMarker.d.ts +16 -0
  269. package/dist/editor/page-viewer/FeedbackMarginMarker.js +24 -0
  270. package/dist/editor/page-viewer/FeedbackMarginMarker.js.map +1 -0
  271. package/dist/editor/page-viewer/FeedbackMarginResizeHandle.d.ts +23 -0
  272. package/dist/editor/page-viewer/FeedbackMarginResizeHandle.js +105 -0
  273. package/dist/editor/page-viewer/FeedbackMarginResizeHandle.js.map +1 -0
  274. package/dist/editor/page-viewer/InteractivePreviewBar.d.ts +24 -0
  275. package/dist/editor/page-viewer/InteractivePreviewBar.js +31 -0
  276. package/dist/editor/page-viewer/InteractivePreviewBar.js.map +1 -0
  277. package/dist/editor/page-viewer/MobileCommentsPanel.d.ts +16 -0
  278. package/dist/editor/page-viewer/MobileCommentsPanel.js +112 -0
  279. package/dist/editor/page-viewer/MobileCommentsPanel.js.map +1 -0
  280. package/dist/editor/page-viewer/PreviewModeNotice.d.ts +7 -0
  281. package/dist/editor/page-viewer/PreviewModeNotice.js +19 -0
  282. package/dist/editor/page-viewer/PreviewModeNotice.js.map +1 -0
  283. package/dist/editor/page-viewer/RenderingAiCheck.d.ts +18 -0
  284. package/dist/editor/page-viewer/RenderingAiCheck.js +45 -0
  285. package/dist/editor/page-viewer/RenderingAiCheck.js.map +1 -0
  286. package/dist/editor/page-viewer/RenderingApprovalDialog.d.ts +32 -0
  287. package/dist/editor/page-viewer/RenderingApprovalDialog.js +191 -0
  288. package/dist/editor/page-viewer/RenderingApprovalDialog.js.map +1 -0
  289. package/dist/editor/page-viewer/SealedClientCodePreview.d.ts +17 -0
  290. package/dist/editor/page-viewer/SealedClientCodePreview.js +38 -0
  291. package/dist/editor/page-viewer/SealedClientCodePreview.js.map +1 -0
  292. package/dist/editor/page-viewer/canvasFrameNavigation.d.ts +18 -0
  293. package/dist/editor/page-viewer/canvasFrameNavigation.js +36 -0
  294. package/dist/editor/page-viewer/canvasFrameNavigation.js.map +1 -0
  295. package/dist/editor/page-viewer/canvasLoadSettling.d.ts +42 -0
  296. package/dist/editor/page-viewer/canvasLoadSettling.js +46 -0
  297. package/dist/editor/page-viewer/canvasLoadSettling.js.map +1 -0
  298. package/dist/editor/page-viewer/canvasScrollHandoff.d.ts +34 -0
  299. package/dist/editor/page-viewer/canvasScrollHandoff.js +55 -0
  300. package/dist/editor/page-viewer/canvasScrollHandoff.js.map +1 -0
  301. package/dist/editor/page-viewer/compareFrameWidth.d.ts +8 -0
  302. package/dist/editor/page-viewer/compareFrameWidth.js +25 -0
  303. package/dist/editor/page-viewer/compareFrameWidth.js.map +1 -0
  304. package/dist/editor/page-viewer/feedbackMarginLayout.d.ts +119 -0
  305. package/dist/editor/page-viewer/feedbackMarginLayout.js +155 -0
  306. package/dist/editor/page-viewer/feedbackMarginLayout.js.map +1 -0
  307. package/dist/editor/page-viewer/feedbackMarginSources.d.ts +36 -0
  308. package/dist/editor/page-viewer/feedbackMarginSources.js +196 -0
  309. package/dist/editor/page-viewer/feedbackMarginSources.js.map +1 -0
  310. package/dist/editor/page-viewer/feedbackMarginWidth.d.ts +43 -0
  311. package/dist/editor/page-viewer/feedbackMarginWidth.js +107 -0
  312. package/dist/editor/page-viewer/feedbackMarginWidth.js.map +1 -0
  313. package/dist/editor/page-viewer/interactivePreview.d.ts +168 -0
  314. package/dist/editor/page-viewer/interactivePreview.js +344 -0
  315. package/dist/editor/page-viewer/interactivePreview.js.map +1 -0
  316. package/dist/editor/page-viewer/minimapViewport.d.ts +2 -0
  317. package/dist/editor/page-viewer/minimapViewport.js +34 -0
  318. package/dist/editor/page-viewer/minimapViewport.js.map +1 -0
  319. package/dist/editor/page-viewer/openPageItems.d.ts +29 -0
  320. package/dist/editor/page-viewer/openPageItems.js +73 -0
  321. package/dist/editor/page-viewer/openPageItems.js.map +1 -0
  322. package/dist/editor/page-viewer/overviewRuler.d.ts +128 -0
  323. package/dist/editor/page-viewer/overviewRuler.js +226 -0
  324. package/dist/editor/page-viewer/overviewRuler.js.map +1 -0
  325. package/dist/editor/page-viewer/previewEditAttempt.d.ts +31 -0
  326. package/dist/editor/page-viewer/previewEditAttempt.js +68 -0
  327. package/dist/editor/page-viewer/previewEditAttempt.js.map +1 -0
  328. package/dist/editor/page-viewer/renderingApproval.d.ts +59 -0
  329. package/dist/editor/page-viewer/renderingApproval.js +186 -0
  330. package/dist/editor/page-viewer/renderingApproval.js.map +1 -0
  331. package/dist/editor/page-viewer/renderingChanges.d.ts +29 -0
  332. package/dist/editor/page-viewer/renderingChanges.js +40 -0
  333. package/dist/editor/page-viewer/renderingChanges.js.map +1 -0
  334. package/dist/editor/page-viewer/scrollIntoViewTextRanges.d.ts +23 -0
  335. package/dist/editor/page-viewer/scrollIntoViewTextRanges.js +26 -0
  336. package/dist/editor/page-viewer/scrollIntoViewTextRanges.js.map +1 -0
  337. package/dist/editor/page-viewer/useInteractivePreview.d.ts +77 -0
  338. package/dist/editor/page-viewer/useInteractivePreview.js +210 -0
  339. package/dist/editor/page-viewer/useInteractivePreview.js.map +1 -0
  340. package/dist/editor/reviews/CollapsibleText.d.ts +13 -0
  341. package/dist/editor/reviews/CollapsibleText.js +41 -0
  342. package/dist/editor/reviews/CollapsibleText.js.map +1 -0
  343. package/dist/editor/reviews/CommentImageAttachments.d.ts +12 -0
  344. package/dist/editor/reviews/CommentImageAttachments.js +19 -0
  345. package/dist/editor/reviews/CommentImageAttachments.js.map +1 -0
  346. package/dist/editor/reviews/CommentQuote.d.ts +13 -0
  347. package/dist/editor/reviews/CommentQuote.js +35 -0
  348. package/dist/editor/reviews/CommentQuote.js.map +1 -0
  349. package/dist/editor/reviews/CommentTargetOutline.d.ts +13 -0
  350. package/dist/editor/reviews/CommentTargetOutline.js +21 -0
  351. package/dist/editor/reviews/CommentTargetOutline.js.map +1 -0
  352. package/dist/editor/reviews/CommentTargetPickerDomLayer.d.ts +7 -0
  353. package/dist/editor/reviews/CommentTargetPickerDomLayer.js +117 -0
  354. package/dist/editor/reviews/CommentTargetPickerDomLayer.js.map +1 -0
  355. package/dist/editor/reviews/CommentThreadAgentLink.d.ts +28 -0
  356. package/dist/editor/reviews/CommentThreadAgentLink.js +37 -0
  357. package/dist/editor/reviews/CommentThreadAgentLink.js.map +1 -0
  358. package/dist/editor/reviews/CommentThreadCard.d.ts +34 -0
  359. package/dist/editor/reviews/CommentThreadCard.js +156 -0
  360. package/dist/editor/reviews/CommentThreadCard.js.map +1 -0
  361. package/dist/editor/reviews/SuggestionThreadCard.d.ts +19 -0
  362. package/dist/editor/reviews/SuggestionThreadCard.js +25 -0
  363. package/dist/editor/reviews/SuggestionThreadCard.js.map +1 -0
  364. package/dist/editor/reviews/addCommentOnTarget.d.ts +22 -0
  365. package/dist/editor/reviews/addCommentOnTarget.js +32 -0
  366. package/dist/editor/reviews/addCommentOnTarget.js.map +1 -0
  367. package/dist/editor/reviews/balloonLayout.d.ts +51 -0
  368. package/dist/editor/reviews/balloonLayout.js +101 -0
  369. package/dist/editor/reviews/balloonLayout.js.map +1 -0
  370. package/dist/editor/reviews/commentAgentAttachments.d.ts +5 -0
  371. package/dist/editor/reviews/commentAgentAttachments.js +51 -0
  372. package/dist/editor/reviews/commentAgentAttachments.js.map +1 -0
  373. package/dist/editor/reviews/commentImages.d.ts +48 -0
  374. package/dist/editor/reviews/commentImages.js +128 -0
  375. package/dist/editor/reviews/commentImages.js.map +1 -0
  376. package/dist/editor/reviews/commentTargetPicker.d.ts +114 -0
  377. package/dist/editor/reviews/commentTargetPicker.js +153 -0
  378. package/dist/editor/reviews/commentTargetPicker.js.map +1 -0
  379. package/dist/editor/reviews/feedbackBalloonDate.d.ts +8 -0
  380. package/dist/editor/reviews/feedbackBalloonDate.js +22 -0
  381. package/dist/editor/reviews/feedbackBalloonDate.js.map +1 -0
  382. package/dist/editor/reviews/feedbackDrafts.d.ts +49 -0
  383. package/dist/editor/reviews/feedbackDrafts.js +74 -0
  384. package/dist/editor/reviews/feedbackDrafts.js.map +1 -0
  385. package/dist/editor/reviews/feedbackHoverState.d.ts +18 -0
  386. package/dist/editor/reviews/feedbackHoverState.js +35 -0
  387. package/dist/editor/reviews/feedbackHoverState.js.map +1 -0
  388. package/dist/editor/reviews/feedbackPersonFilter.d.ts +3 -0
  389. package/dist/editor/reviews/feedbackPersonFilter.js +32 -0
  390. package/dist/editor/reviews/feedbackPersonFilter.js.map +1 -0
  391. package/dist/editor/reviews/feedbackThreadSelection.d.ts +10 -0
  392. package/dist/editor/reviews/feedbackThreadSelection.js +31 -0
  393. package/dist/editor/reviews/feedbackThreadSelection.js.map +1 -0
  394. package/dist/editor/reviews/feedbackThreads.d.ts +50 -0
  395. package/dist/editor/reviews/feedbackThreads.js +135 -0
  396. package/dist/editor/reviews/feedbackThreads.js.map +1 -0
  397. package/dist/editor/reviews/feedbackWheelForwarding.d.ts +34 -0
  398. package/dist/editor/reviews/feedbackWheelForwarding.js +108 -0
  399. package/dist/editor/reviews/feedbackWheelForwarding.js.map +1 -0
  400. package/dist/editor/reviews/reviewUrlScope.d.ts +23 -0
  401. package/dist/editor/reviews/reviewUrlScope.js +86 -0
  402. package/dist/editor/reviews/reviewUrlScope.js.map +1 -0
  403. package/dist/editor/reviews/scrollWithin.d.ts +29 -0
  404. package/dist/editor/reviews/scrollWithin.js +87 -0
  405. package/dist/editor/reviews/scrollWithin.js.map +1 -0
  406. package/dist/editor/reviews/subtreeFeedback.d.ts +57 -0
  407. package/dist/editor/reviews/subtreeFeedback.js +137 -0
  408. package/dist/editor/reviews/subtreeFeedback.js.map +1 -0
  409. package/dist/editor/reviews/useCommentImagePaste.d.ts +80 -0
  410. package/dist/editor/reviews/useCommentImagePaste.js +252 -0
  411. package/dist/editor/reviews/useCommentImagePaste.js.map +1 -0
  412. package/dist/editor/reviews/useFeedbackThreads.d.ts +35 -0
  413. package/dist/editor/reviews/useFeedbackThreads.js +137 -0
  414. package/dist/editor/reviews/useFeedbackThreads.js.map +1 -0
  415. package/dist/editor/reviews/useMeasuredHeights.d.ts +25 -0
  416. package/dist/editor/reviews/useMeasuredHeights.js +176 -0
  417. package/dist/editor/reviews/useMeasuredHeights.js.map +1 -0
  418. package/dist/editor/reviews/usePendingFeedbackFocus.d.ts +7 -0
  419. package/dist/editor/reviews/usePendingFeedbackFocus.js +42 -0
  420. package/dist/editor/reviews/usePendingFeedbackFocus.js.map +1 -0
  421. package/dist/editor/services/mcpAccessService.d.ts +93 -0
  422. package/dist/editor/services/mcpAccessService.js +41 -0
  423. package/dist/editor/services/mcpAccessService.js.map +1 -0
  424. package/dist/editor/services/migrationService.d.ts +31 -0
  425. package/dist/editor/services/migrationService.js +22 -0
  426. package/dist/editor/services/migrationService.js.map +1 -0
  427. package/dist/editor/services/previewTokenService.d.ts +14 -0
  428. package/dist/editor/services/previewTokenService.js +34 -0
  429. package/dist/editor/services/previewTokenService.js.map +1 -0
  430. package/dist/editor/services/publicSiteService.d.ts +40 -0
  431. package/dist/editor/services/publicSiteService.js +5 -0
  432. package/dist/editor/services/publicSiteService.js.map +1 -0
  433. package/dist/editor/services/renderingsService.d.ts +117 -0
  434. package/dist/editor/services/renderingsService.js +245 -0
  435. package/dist/editor/services/renderingsService.js.map +1 -0
  436. package/dist/editor/services/spellCheckService.d.ts +13 -0
  437. package/dist/editor/services/spellCheckService.js +33 -0
  438. package/dist/editor/services/spellCheckService.js.map +1 -0
  439. package/dist/editor/settings/MigrationJournalCard.d.ts +12 -0
  440. package/dist/editor/settings/MigrationJournalCard.js +114 -0
  441. package/dist/editor/settings/MigrationJournalCard.js.map +1 -0
  442. package/dist/editor/settings/panels/McpAccessPanel.d.ts +7 -0
  443. package/dist/editor/settings/panels/McpAccessPanel.js +95 -0
  444. package/dist/editor/settings/panels/McpAccessPanel.js.map +1 -0
  445. package/dist/editor/settings/panels/McpAccessSettingsView.d.ts +8 -0
  446. package/dist/editor/settings/panels/McpAccessSettingsView.js +221 -0
  447. package/dist/editor/settings/panels/McpAccessSettingsView.js.map +1 -0
  448. package/dist/editor/settings/panels/PublicSiteEntryDialog.d.ts +8 -0
  449. package/dist/editor/settings/panels/PublicSiteEntryDialog.js +113 -0
  450. package/dist/editor/settings/panels/PublicSiteEntryDialog.js.map +1 -0
  451. package/dist/editor/settings/panels/PublicSitesPanel.d.ts +1 -0
  452. package/dist/editor/settings/panels/PublicSitesPanel.js +153 -0
  453. package/dist/editor/settings/panels/PublicSitesPanel.js.map +1 -0
  454. package/dist/editor/settings/panels/SpellCheckPanel.d.ts +8 -0
  455. package/dist/editor/settings/panels/SpellCheckPanel.js +253 -0
  456. package/dist/editor/settings/panels/SpellCheckPanel.js.map +1 -0
  457. package/dist/editor/settings/panels/publicSiteHelpers.d.ts +6 -0
  458. package/dist/editor/settings/panels/publicSiteHelpers.js +30 -0
  459. package/dist/editor/settings/panels/publicSiteHelpers.js.map +1 -0
  460. package/dist/editor/sidebar/FeedbackSidebar.d.ts +7 -0
  461. package/dist/editor/sidebar/FeedbackSidebar.js +300 -0
  462. package/dist/editor/sidebar/FeedbackSidebar.js.map +1 -0
  463. package/dist/editor/sidebar/OperationDetailsContent.d.ts +14 -0
  464. package/dist/editor/sidebar/OperationDetailsContent.js +571 -0
  465. package/dist/editor/sidebar/OperationDetailsContent.js.map +1 -0
  466. package/dist/editor/sidebar/liveComponentThumbnails.d.ts +66 -0
  467. package/dist/editor/sidebar/liveComponentThumbnails.js +225 -0
  468. package/dist/editor/sidebar/liveComponentThumbnails.js.map +1 -0
  469. package/dist/editor/spellcheck/canvasSpellCheckContextMenu.d.ts +30 -0
  470. package/dist/editor/spellcheck/canvasSpellCheckContextMenu.js +69 -0
  471. package/dist/editor/spellcheck/canvasSpellCheckContextMenu.js.map +1 -0
  472. package/dist/editor/spellcheck/htmlSpellDocument.d.ts +60 -0
  473. package/dist/editor/spellcheck/htmlSpellDocument.js +181 -0
  474. package/dist/editor/spellcheck/htmlSpellDocument.js.map +1 -0
  475. package/dist/editor/spellcheck/htmlSpellTokenizer.d.ts +45 -0
  476. package/dist/editor/spellcheck/htmlSpellTokenizer.js +277 -0
  477. package/dist/editor/spellcheck/htmlSpellTokenizer.js.map +1 -0
  478. package/dist/editor/spellcheck/replacementGuard.d.ts +27 -0
  479. package/dist/editor/spellcheck/replacementGuard.js +29 -0
  480. package/dist/editor/spellcheck/replacementGuard.js.map +1 -0
  481. package/dist/editor/spellcheck/spellCheckCanvasStore.d.ts +17 -0
  482. package/dist/editor/spellcheck/spellCheckCanvasStore.js +37 -0
  483. package/dist/editor/spellcheck/spellCheckCanvasStore.js.map +1 -0
  484. package/dist/editor/spellcheck/spellCheckCanvasTargets.d.ts +71 -0
  485. package/dist/editor/spellcheck/spellCheckCanvasTargets.js +126 -0
  486. package/dist/editor/spellcheck/spellCheckCanvasTargets.js.map +1 -0
  487. package/dist/editor/spellcheck/spellCheckClient.d.ts +66 -0
  488. package/dist/editor/spellcheck/spellCheckClient.js +0 -0
  489. package/dist/editor/spellcheck/spellCheckClient.js.map +1 -0
  490. package/dist/editor/spellcheck/spellCheckContextMenu.d.ts +52 -0
  491. package/dist/editor/spellcheck/spellCheckContextMenu.js +120 -0
  492. package/dist/editor/spellcheck/spellCheckContextMenu.js.map +1 -0
  493. package/dist/editor/spellcheck/spellCheckReplace.d.ts +8 -0
  494. package/dist/editor/spellcheck/spellCheckReplace.js +20 -0
  495. package/dist/editor/spellcheck/spellCheckReplace.js.map +1 -0
  496. package/dist/editor/spellcheck/spellCheckStyles.d.ts +11 -0
  497. package/dist/editor/spellcheck/spellCheckStyles.js +12 -0
  498. package/dist/editor/spellcheck/spellCheckStyles.js.map +1 -0
  499. package/dist/editor/spellcheck/spellCheckTypes.d.ts +94 -0
  500. package/dist/editor/spellcheck/spellCheckTypes.js +2 -0
  501. package/dist/editor/spellcheck/spellCheckTypes.js.map +1 -0
  502. package/dist/editor/spellcheck/textMarkHitTest.d.ts +14 -0
  503. package/dist/editor/spellcheck/textMarkHitTest.js +39 -0
  504. package/dist/editor/spellcheck/textMarkHitTest.js.map +1 -0
  505. package/dist/editor/spellcheck/useSpellCheck.d.ts +16 -0
  506. package/dist/editor/spellcheck/useSpellCheck.js +57 -0
  507. package/dist/editor/spellcheck/useSpellCheck.js.map +1 -0
  508. package/dist/editor/ui/DynamicRenderingsPublishWarning.d.ts +14 -0
  509. package/dist/editor/ui/DynamicRenderingsPublishWarning.js +40 -0
  510. package/dist/editor/ui/DynamicRenderingsPublishWarning.js.map +1 -0
  511. package/dist/editor/ui/ParheliaMark.d.ts +15 -0
  512. package/dist/editor/ui/ParheliaMark.js +12 -0
  513. package/dist/editor/ui/ParheliaMark.js.map +1 -0
  514. package/dist/editor/ui/PublishReadinessSummary.d.ts +12 -0
  515. package/dist/editor/ui/PublishReadinessSummary.js +34 -0
  516. package/dist/editor/ui/PublishReadinessSummary.js.map +1 -0
  517. package/dist/editor/ui/RootItemPicker.d.ts +18 -0
  518. package/dist/editor/ui/RootItemPicker.js +112 -0
  519. package/dist/editor/ui/RootItemPicker.js.map +1 -0
  520. package/dist/editor/ui/publishReadiness.d.ts +98 -0
  521. package/dist/editor/ui/publishReadiness.js +307 -0
  522. package/dist/editor/ui/publishReadiness.js.map +1 -0
  523. package/dist/editor/ui/usePublishingItem.d.ts +8 -0
  524. package/dist/editor/ui/usePublishingItem.js +47 -0
  525. package/dist/editor/ui/usePublishingItem.js.map +1 -0
  526. package/dist/editor/undoEligibility.d.ts +2 -0
  527. package/dist/editor/undoEligibility.js +8 -0
  528. package/dist/editor/undoEligibility.js.map +1 -0
  529. package/dist/editor/utils/dataTransferImages.d.ts +7 -0
  530. package/dist/editor/utils/dataTransferImages.js +43 -0
  531. package/dist/editor/utils/dataTransferImages.js.map +1 -0
  532. package/dist/editor/utils/linkDisplay.d.ts +12 -0
  533. package/dist/editor/utils/linkDisplay.js +23 -0
  534. package/dist/editor/utils/linkDisplay.js.map +1 -0
  535. package/dist/editor/validation/ValidationIssuesPopover.d.ts +39 -0
  536. package/dist/editor/validation/ValidationIssuesPopover.js +51 -0
  537. package/dist/editor/validation/ValidationIssuesPopover.js.map +1 -0
  538. package/dist/editor/validation/navigateToValidationIssue.d.ts +13 -0
  539. package/dist/editor/validation/navigateToValidationIssue.js +43 -0
  540. package/dist/editor/validation/navigateToValidationIssue.js.map +1 -0
  541. package/dist/editor/validation/validationFixAgent.d.ts +26 -0
  542. package/dist/editor/validation/validationFixAgent.js +124 -0
  543. package/dist/editor/validation/validationFixAgent.js.map +1 -0
  544. package/dist/editor/validation/validationRulerIssues.d.ts +17 -0
  545. package/dist/editor/validation/validationRulerIssues.js +44 -0
  546. package/dist/editor/validation/validationRulerIssues.js.map +1 -0
  547. package/dist/editor/validation/validationSeverity.d.ts +15 -0
  548. package/dist/editor/validation/validationSeverity.js +47 -0
  549. package/dist/editor/validation/validationSeverity.js.map +1 -0
  550. package/dist/lib/viewportClip.d.ts +18 -0
  551. package/dist/lib/viewportClip.js +22 -0
  552. package/dist/lib/viewportClip.js.map +1 -0
  553. package/dist/revision.d.ts +2 -2
  554. package/dist/revision.js +2 -2
  555. package/dist/task-board/components/AttentionPromptDialog.d.ts +13 -0
  556. package/dist/task-board/components/AttentionPromptDialog.js +45 -0
  557. package/dist/task-board/components/AttentionPromptDialog.js.map +1 -0
  558. package/dist/task-board/components/GoalFindingsTable.d.ts +43 -0
  559. package/dist/task-board/components/GoalFindingsTable.js +160 -0
  560. package/dist/task-board/components/GoalFindingsTable.js.map +1 -0
  561. package/dist/task-board/components/IssuePanel.d.ts +31 -0
  562. package/dist/task-board/components/IssuePanel.js +268 -0
  563. package/dist/task-board/components/IssuePanel.js.map +1 -0
  564. package/dist/task-board/components/ProjectProgressIndicator.d.ts +8 -0
  565. package/dist/task-board/components/ProjectProgressIndicator.js +17 -0
  566. package/dist/task-board/components/ProjectProgressIndicator.js.map +1 -0
  567. package/dist/task-board/components/SubgoalFindings.d.ts +40 -0
  568. package/dist/task-board/components/SubgoalFindings.js +88 -0
  569. package/dist/task-board/components/SubgoalFindings.js.map +1 -0
  570. package/dist/task-board/components/commentAuthor.d.ts +14 -0
  571. package/dist/task-board/components/commentAuthor.js +25 -0
  572. package/dist/task-board/components/commentAuthor.js.map +1 -0
  573. package/dist/task-board/services/issueService.d.ts +193 -0
  574. package/dist/task-board/services/issueService.js +97 -0
  575. package/dist/task-board/services/issueService.js.map +1 -0
  576. package/dist/task-board/taskBlockers.d.ts +10 -0
  577. package/dist/task-board/taskBlockers.js +66 -0
  578. package/dist/task-board/taskBlockers.js.map +1 -0
  579. package/dist/task-board/utils/projectDashboardModel.d.ts +68 -0
  580. package/dist/task-board/utils/projectDashboardModel.js +369 -0
  581. package/dist/task-board/utils/projectDashboardModel.js.map +1 -0
  582. package/dist/task-board/views/ProjectDashboardView.d.ts +28 -0
  583. package/dist/task-board/views/ProjectDashboardView.js +308 -0
  584. package/dist/task-board/views/ProjectDashboardView.js.map +1 -0
  585. package/dist/tour/TourInputBoundary.d.ts +6 -0
  586. package/dist/tour/TourInputBoundary.js +82 -0
  587. package/dist/tour/TourInputBoundary.js.map +1 -0
  588. package/dist/tour/sandbox-tour-copy.d.ts +8 -0
  589. package/dist/tour/sandbox-tour-copy.js +8 -0
  590. package/dist/tour/sandbox-tour-copy.js.map +1 -1
  591. package/dist/tour/sandbox-tour.d.ts +3 -0
  592. package/dist/tour/sandbox-tour.js +112 -6
  593. package/dist/tour/sandbox-tour.js.map +1 -1
  594. package/dist/tour/tour-utils.d.ts +6 -0
  595. package/dist/tour/tour-utils.js +10 -0
  596. package/dist/tour/tour-utils.js.map +1 -1
  597. package/package.json +1 -1
  598. package/dist/editor/page-editor-chrome/bridgeLinkValue.d.ts +0 -10
  599. package/dist/editor/page-editor-chrome/bridgeLinkValue.js +0 -55
  600. package/dist/editor/page-editor-chrome/bridgeLinkValue.js.map +0 -1
@@ -0,0 +1,221 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useMemo, useState } from "react";
3
+ import { AlertCircle, ChevronDown, ChevronRight, Folder, Gauge, Globe, KeyRound, ListChecks, ShieldCheck, Users, Wrench, X, } from "lucide-react";
4
+ import { toast } from "sonner";
5
+ import { Badge } from "../../../components/ui/badge";
6
+ import { Button } from "../../../components/ui/button";
7
+ import { Checkbox } from "../../../components/ui/checkbox";
8
+ import { Input } from "../../../components/ui/input";
9
+ import { Select } from "../../../components/ui/select";
10
+ import { Switch } from "../../../components/ui/switch";
11
+ import { Textarea } from "../../../components/ui/textarea";
12
+ import { SearchInput } from "../../../components/SearchInput";
13
+ import { cn } from "../../../lib/utils";
14
+ import { mcpAccessService, } from "../../services/mcpAccessService";
15
+ import { LoadingState } from "../../ui/LoadingState";
16
+ import { SettingsCard as Card } from "../SettingsCard";
17
+ import { SettingsPanelLayout } from "../SettingsPanelLayout";
18
+ const getErrorMessage = (error, fallback) => error instanceof Error ? error.message : fallback;
19
+ const cleanLines = (values) => values.map((value) => value.trim()).filter((value) => value.length > 0);
20
+ /** Normalizes list fields the way the server stores them, so dirty tracking ignores blank lines. */
21
+ function normalize(form) {
22
+ return {
23
+ ...form,
24
+ publicBaseUrl: form.publicBaseUrl.trim(),
25
+ instructions: form.instructions.trim(),
26
+ allowedOrigins: cleanLines(form.allowedOrigins),
27
+ allowedRoles: cleanLines(form.allowedRoles),
28
+ signingSecretConnectionStringName: form.signingSecretConnectionStringName.trim(),
29
+ };
30
+ }
31
+ const sameForm = (a, b) => JSON.stringify(normalize(a)) === JSON.stringify(normalize(b));
32
+ function SettingRow({ label, description, children, className, }) {
33
+ return (_jsxs("div", { className: cn("flex items-center justify-between gap-4", className), children: [_jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "text-neutral-grey-100 text-xs font-medium", children: label }), description && _jsx("div", { className: "text-neutral-grey-50 mt-0.5 text-xs", children: description })] }), children] }));
34
+ }
35
+ function SwitchRow({ label, description, checked, onChange, testId, }) {
36
+ return (_jsx(SettingRow, { label: label, description: description, children: _jsx(Switch, { checked: checked, onCheckedChange: onChange, "aria-label": label, "data-testid": testId }) }));
37
+ }
38
+ function FieldBlock({ label, description, children, }) {
39
+ return (_jsxs("div", { className: "space-y-1.5", children: [_jsxs("div", { children: [_jsx("div", { className: "text-neutral-grey-100 text-xs font-medium", children: label }), description && _jsx("div", { className: "text-neutral-grey-50 mt-0.5 text-xs", children: description })] }), children] }));
40
+ }
41
+ function NumberInput({ label, description, value, onChange, min, max, step = 1, testId, }) {
42
+ const invalid = !Number.isFinite(value) || value < min || value > max;
43
+ return (_jsx(SettingRow, { label: label, description: invalid ? `Between ${min} and ${max}.` : description, children: _jsx(Input, { type: "number", min: min, max: max, step: step, value: Number.isFinite(value) ? value : "", "aria-invalid": invalid, "aria-label": label, onChange: (event) => onChange(event.target.value === "" ? Number.NaN : Number(event.target.value)), className: "h-8 w-28 shrink-0 text-right text-xs md:text-xs", "data-testid": testId }) }));
44
+ }
45
+ function buildToolTree(tools) {
46
+ const byId = new Map(tools.map((tool) => [tool.id, tool]));
47
+ const children = new Map();
48
+ tools.forEach((tool) => {
49
+ const parent = tool.parentId && byId.has(tool.parentId) ? tool.parentId : null;
50
+ children.set(parent, [...(children.get(parent) ?? []), tool]);
51
+ });
52
+ return { byId, children };
53
+ }
54
+ function ancestorIds(tree, id) {
55
+ const result = [];
56
+ let current = tree.byId.get(id)?.parentId ?? null;
57
+ while (current && tree.byId.has(current)) {
58
+ result.push(current);
59
+ current = tree.byId.get(current)?.parentId ?? null;
60
+ }
61
+ return result;
62
+ }
63
+ function descendantTools(tree, id) {
64
+ const node = tree.byId.get(id);
65
+ if (!node)
66
+ return [];
67
+ const own = node.functionName ? [node] : [];
68
+ return own.concat((tree.children.get(id) ?? []).flatMap((child) => descendantTools(tree, child.id)));
69
+ }
70
+ /**
71
+ * A checkbox tree over tool folders and tools with TreelistEx semantics: a selected folder
72
+ * includes everything below it, so its descendants show as included and cannot be ticked alone.
73
+ */
74
+ function ToolTreeSelect({ tree, selected, onChange, filter, isSelectable = () => true, testId, }) {
75
+ const selectedSet = useMemo(() => new Set(selected), [selected]);
76
+ const [expanded, setExpanded] = useState(() => {
77
+ const initial = new Set();
78
+ (tree.children.get(null) ?? []).forEach((root) => initial.add(root.id));
79
+ selected.forEach((id) => ancestorIds(tree, id).forEach((ancestor) => initial.add(ancestor)));
80
+ return initial;
81
+ });
82
+ const needle = filter.trim().toLowerCase();
83
+ const visible = useMemo(() => {
84
+ if (!needle)
85
+ return null;
86
+ const ids = new Set();
87
+ tree.byId.forEach((node) => {
88
+ const text = `${node.displayName ?? ""} ${node.name} ${node.functionName ?? ""}`.toLowerCase();
89
+ if (text.includes(needle)) {
90
+ ids.add(node.id);
91
+ ancestorIds(tree, node.id).forEach((ancestor) => ids.add(ancestor));
92
+ }
93
+ });
94
+ return ids;
95
+ }, [needle, tree]);
96
+ const toggle = (node, checked) => {
97
+ if (checked) {
98
+ // A folder replaces any selection below it.
99
+ const below = new Set(descendantTools(tree, node.id).map((tool) => tool.id));
100
+ const collect = (id) => (tree.children.get(id) ?? []).forEach((child) => {
101
+ below.add(child.id);
102
+ collect(child.id);
103
+ });
104
+ collect(node.id);
105
+ onChange([...selected.filter((id) => !below.has(id)), node.id]);
106
+ }
107
+ else {
108
+ onChange(selected.filter((id) => id !== node.id));
109
+ }
110
+ };
111
+ const renderNode = (node, depth, includedByAncestor) => {
112
+ if (visible && !visible.has(node.id))
113
+ return null;
114
+ const children = tree.children.get(node.id) ?? [];
115
+ const isFolder = children.length > 0;
116
+ const isOpen = visible !== null || expanded.has(node.id);
117
+ const isChecked = includedByAncestor || selectedSet.has(node.id);
118
+ const selectable = !includedByAncestor && isSelectable(node);
119
+ const label = node.displayName || node.name;
120
+ return (_jsxs("li", { children: [_jsxs("div", { className: "hover:bg-neutral-grey-5 flex items-center gap-2 rounded py-0.5 pr-2", style: { paddingLeft: depth * 16 }, "data-testid": `${testId}-node`, "data-tool-id": node.id, children: [isFolder ? (_jsx("button", { type: "button", className: "text-neutral-grey-50 hover:text-neutral-grey-100 flex h-4 w-4 items-center justify-center", "aria-label": isOpen ? `Collapse ${label}` : `Expand ${label}`, onClick: () => setExpanded((current) => {
121
+ const next = new Set(current);
122
+ if (next.has(node.id))
123
+ next.delete(node.id);
124
+ else
125
+ next.add(node.id);
126
+ return next;
127
+ }), children: isOpen ? _jsx(ChevronDown, { className: "h-3.5 w-3.5", strokeWidth: 1.5 }) : _jsx(ChevronRight, { className: "h-3.5 w-3.5", strokeWidth: 1.5 }) })) : (_jsx("span", { className: "h-4 w-4" })), _jsx(Checkbox, { checked: isChecked, disabled: !selectable, onCheckedChange: (value) => toggle(node, value === true), "aria-label": label }), isFolder && _jsx(Folder, { className: "text-neutral-grey-50 h-3.5 w-3.5 shrink-0", strokeWidth: 1.5 }), _jsx("span", { className: cn("truncate text-xs", !selectable && !isChecked && "text-neutral-grey-50"), children: label }), node.functionName && node.functionName !== node.name && (_jsx("span", { className: "text-neutral-grey-50 truncate font-mono text-[10px]", children: node.functionName })), node.hiddenFromMcp && (_jsx(Badge, { variant: "secondary", className: "ml-auto shrink-0", children: "hidden from MCP" }))] }), isFolder && isOpen && (_jsx("ul", { children: children.map((child) => renderNode(child, depth + 1, isChecked)) }))] }, node.id));
128
+ };
129
+ const roots = tree.children.get(null) ?? [];
130
+ return (_jsx("ul", { className: "border-border-default max-h-80 overflow-y-auto rounded border p-1", "data-testid": testId, children: roots.length === 0 ? (_jsx("li", { className: "text-neutral-grey-50 p-2 text-xs", children: "No tools found." })) : (roots.map((root) => renderNode(root, 0, false))) }));
131
+ }
132
+ function effectiveToolCount(tree, selected) {
133
+ const names = new Set();
134
+ selected.forEach((id) => descendantTools(tree, id)
135
+ .filter((tool) => !tool.hiddenFromMcp)
136
+ .forEach((tool) => names.add(tool.name)));
137
+ return names.size;
138
+ }
139
+ function RoleList({ roles, availableRoles, onChange, }) {
140
+ const [custom, setCustom] = useState("");
141
+ const add = (role) => {
142
+ const trimmed = role.trim();
143
+ if (!trimmed || roles.some((r) => r.toLowerCase() === trimmed.toLowerCase()))
144
+ return;
145
+ onChange([...cleanLines(roles), trimmed]);
146
+ };
147
+ const options = availableRoles
148
+ .filter((role) => !roles.some((r) => r.toLowerCase() === role.toLowerCase()))
149
+ .map((role) => ({ value: role, label: role }));
150
+ return (_jsxs("div", { className: "space-y-2", children: [_jsx("div", { className: "flex flex-wrap gap-1.5", "data-testid": "mcp-settings-roles", children: cleanLines(roles).length === 0 ? (_jsx("span", { className: "text-feedback-orange text-xs", children: "No role yet, so only administrators can connect." })) : (cleanLines(roles).map((role) => (_jsxs("span", { className: "bg-neutral-grey-5 border-border-default inline-flex items-center gap-1 rounded border py-0.5 pr-1 pl-2 text-xs", children: [role, _jsx("button", { type: "button", className: "text-neutral-grey-50 hover:text-neutral-grey-100", "aria-label": `Remove ${role}`, onClick: () => onChange(roles.filter((r) => r !== role)), children: _jsx(X, { className: "h-3 w-3", strokeWidth: 1.5 }) })] }, role)))) }), _jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [options.length > 0 && (_jsx(Select, { options: options, value: "", onValueChange: add, placeholder: "Add a role", className: "w-64", searchable: true, searchPlaceholder: "Search roles", "data-testid": "mcp-settings-role-select" })), _jsxs("form", { className: "flex items-center gap-2", onSubmit: (event) => {
151
+ event.preventDefault();
152
+ add(custom);
153
+ setCustom("");
154
+ }, children: [_jsx(Input, { value: custom, onChange: (event) => setCustom(event.target.value), placeholder: "sitecore\\Role name", "aria-label": "Role name", className: "h-8 w-48 text-xs md:text-xs" }), _jsx(Button, { type: "submit", size: "sm", variant: "outline", disabled: !custom.trim(), children: "Add" })] })] })] }));
155
+ }
156
+ function SkillList({ skills, selected, onChange, }) {
157
+ if (skills.length === 0)
158
+ return _jsx("p", { className: "text-neutral-grey-50 text-xs", children: "No agent skills found." });
159
+ const selectedSet = new Set(selected);
160
+ return (_jsx("ul", { className: "border-border-default max-h-60 overflow-y-auto rounded border p-1", "data-testid": "mcp-settings-skills", children: skills.map((skill) => (_jsxs("li", { className: "hover:bg-neutral-grey-5 flex items-start gap-2 rounded px-2 py-1", children: [_jsx(Checkbox, { className: "mt-0.5", checked: selectedSet.has(skill.id), onCheckedChange: (value) => onChange(value === true ? [...selected, skill.id] : selected.filter((id) => id !== skill.id)), "aria-label": skill.name }), _jsxs("div", { className: "min-w-0", children: [_jsxs("div", { className: "flex items-center gap-2 text-xs", children: [_jsx("span", { className: "truncate", children: skill.name }), skill.disabled && _jsx(Badge, { variant: "secondary", children: "disabled" })] }), skill.description && _jsx("div", { className: "text-neutral-grey-50 truncate text-xs", children: skill.description })] })] }, skill.id))) }));
161
+ }
162
+ /**
163
+ * Administrator form for the "MCP Access" settings item: server address, who may connect, which
164
+ * tools clients see, consent defaults, OAuth and limits. Saves all fields in one request.
165
+ */
166
+ export function McpAccessSettingsView({ onSaved }) {
167
+ const [data, setData] = useState(null);
168
+ const [draft, setDraft] = useState(null);
169
+ const [loadError, setLoadError] = useState(null);
170
+ const [saveError, setSaveError] = useState(null);
171
+ const [saving, setSaving] = useState(false);
172
+ const [toolFilter, setToolFilter] = useState("");
173
+ const load = useCallback(async () => {
174
+ setLoadError(null);
175
+ try {
176
+ const response = await mcpAccessService.getSettings();
177
+ setData(response);
178
+ setDraft(response.settings);
179
+ }
180
+ catch (e) {
181
+ setLoadError(getErrorMessage(e, "Failed to load the MCP settings"));
182
+ }
183
+ }, []);
184
+ useEffect(() => {
185
+ void load();
186
+ }, [load]);
187
+ const tree = useMemo(() => buildToolTree(data?.options?.tools ?? []), [data]);
188
+ if (loadError) {
189
+ return (_jsx(SettingsPanelLayout, { children: _jsxs("div", { className: "border-feedback-red bg-feedback-red-light text-feedback-red flex items-start gap-2 rounded border p-3 text-sm", children: [_jsx(AlertCircle, { className: "mt-0.5 h-4 w-4 shrink-0", strokeWidth: 1 }), _jsx("span", { children: loadError })] }) }));
190
+ }
191
+ if (!data || !draft) {
192
+ return _jsx(LoadingState, { variant: "inline", className: "justify-center py-8", spinnerClassName: "text-neutral-grey-50", spinnerSize: "lg" });
193
+ }
194
+ const saved = data.settings;
195
+ const dirty = !sameForm(draft, saved);
196
+ const set = (key, value) => setDraft((current) => (current ? { ...current, [key]: value } : current));
197
+ const save = async () => {
198
+ setSaving(true);
199
+ setSaveError(null);
200
+ try {
201
+ const next = await mcpAccessService.saveSettings(normalize(draft));
202
+ setData((current) => (current ? { ...current, settings: next } : current));
203
+ setDraft(next);
204
+ toast.success("MCP settings saved.");
205
+ onSaved();
206
+ }
207
+ catch (e) {
208
+ setSaveError(getErrorMessage(e, "Failed to save the MCP settings"));
209
+ }
210
+ finally {
211
+ setSaving(false);
212
+ }
213
+ };
214
+ const suggestedUrl = data.suggestedPublicBaseUrl ?? "";
215
+ const skills = data.options?.skills ?? [];
216
+ const toolCount = effectiveToolCount(tree, draft.toolIds);
217
+ const readOnlyCount = new Set(draft.readOnlyToolIds.flatMap((id) => descendantTools(tree, id).filter((tool) => tool.verifiedRead).map((tool) => tool.name))).size;
218
+ return (_jsxs(SettingsPanelLayout, { testId: "mcp-access-settings", contentClassName: "flex flex-col gap-4", children: [_jsxs("div", { className: cn("border-border-default bg-background sticky top-0 z-10 flex flex-wrap items-center gap-3 rounded border px-4 py-2", dirty && "border-highlight-100"), children: [_jsxs("div", { className: "text-neutral-grey-50 min-w-0 flex-1 text-xs", children: [dirty ? "You have unsaved changes." : "All changes saved.", data.itemPath && _jsx("span", { className: "ml-2 font-mono", children: data.itemPath })] }), _jsx(Button, { size: "sm", variant: "outline", disabled: !dirty || saving, onClick: () => setDraft(saved), "data-testid": "mcp-settings-discard", children: "Discard" }), _jsx(Button, { size: "sm", disabled: !dirty || saving, onClick: () => void save(), "data-testid": "mcp-settings-save", children: saving ? "Saving…" : "Save" }), saveError && (_jsx("div", { className: "text-feedback-red w-full text-xs", role: "alert", "data-testid": "mcp-settings-error", children: saveError }))] }), _jsx(Card, { icon: _jsx(Globe, { strokeWidth: 1 }), title: "Server", description: "Whether the MCP server runs, and the address clients use to reach it.", children: _jsxs("div", { className: "space-y-4", children: [_jsx(SwitchRow, { label: "Enabled", description: "Turns the MCP server on. It also needs the signing secret and at least one allowed role.", checked: draft.enabled, onChange: (value) => set("enabled", value), testId: "mcp-settings-enabled" }), _jsxs(FieldBlock, { label: "Public Base Url", description: "The public origin of this CM, e.g. https://cm.example.com. Required unless the server is only used on localhost.", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx(Input, { value: draft.publicBaseUrl, onChange: (event) => set("publicBaseUrl", event.target.value), placeholder: "https://cm.example.com", "aria-label": "Public Base Url", className: "h-8 min-w-64 flex-1 text-xs md:text-xs", "data-testid": "mcp-settings-public-base-url" }), suggestedUrl && draft.publicBaseUrl.trim() !== suggestedUrl && (_jsxs(Button, { size: "sm", variant: "outline", onClick: () => set("publicBaseUrl", suggestedUrl), "data-testid": "mcp-settings-use-current-url", children: ["Use ", suggestedUrl] }))] }), !draft.publicBaseUrl.trim() && (_jsx("div", { className: "text-feedback-orange text-xs", children: "Empty: MCP clients can only connect on localhost." }))] }), _jsx(FieldBlock, { label: "Allowed Origins", description: "Browser origins allowed to call the MCP endpoint, one per line. Desktop clients need none.", children: _jsx(Textarea, { value: draft.allowedOrigins.join("\n"), onChange: (event) => set("allowedOrigins", event.target.value.split("\n")), placeholder: "https://claude.ai", className: "font-mono text-xs", "data-testid": "mcp-settings-allowed-origins" }) }), _jsx(FieldBlock, { label: "Instructions", description: "Sent to MCP clients when they connect. At most 4 KB.", children: _jsx(Textarea, { value: draft.instructions, onChange: (event) => set("instructions", event.target.value), className: "text-xs", "data-testid": "mcp-settings-instructions" }) })] }) }), _jsx(Card, { icon: _jsx(Users, { strokeWidth: 1 }), title: "Who can connect", description: "Users need one of these roles; administrators can always connect. Clients act with the user's own Sitecore permissions.", children: _jsxs("div", { className: "space-y-4", children: [_jsx(RoleList, { roles: draft.allowedRoles, availableRoles: data.options?.roles ?? [], onChange: (roles) => set("allowedRoles", roles) }), _jsx(SwitchRow, { label: "Exclude preview and demo users", description: "Sandbox, preview and demo accounts cannot connect even when they have an allowed role.", checked: draft.excludePreviewAndDemoUsers, onChange: (value) => set("excludePreviewAndDemoUsers", value), testId: "mcp-settings-exclude-demo" })] }) }), _jsx(Card, { icon: _jsx(Wrench, { strokeWidth: 1 }), title: "Tools", description: "What MCP clients may call. A folder includes every tool below it, also ones added later.", children: _jsxs("div", { className: "space-y-4", children: [_jsx(SearchInput, { value: toolFilter, onChange: setToolFilter, placeholder: "Filter tools", testId: "mcp-settings-tool-filter" }), _jsx(FieldBlock, { label: "Tools", description: `${toolCount} tool${toolCount === 1 ? "" : "s"} selected. Tools the MCP policy refuses are never exposed.`, children: _jsx(ToolTreeSelect, { tree: tree, selected: draft.toolIds, onChange: (ids) => set("toolIds", ids), filter: toolFilter, testId: "mcp-settings-tools" }) }), _jsx(FieldBlock, { label: "Read-only tools", description: `${readOnlyCount} verified read tool${readOnlyCount === 1 ? "" : "s"}. These count as reads, so clients with only the read scope may call them.`, children: _jsx(ToolTreeSelect, { tree: tree, selected: draft.readOnlyToolIds, onChange: (ids) => set("readOnlyToolIds", ids), filter: toolFilter, isSelectable: (node) => descendantTools(tree, node.id).some((tool) => tool.verifiedRead), testId: "mcp-settings-readonly-tools" }) }), _jsx(FieldBlock, { label: "Allowed skills", description: "Skills add their tools to the selection above (only when it is not empty).", children: _jsx(SkillList, { skills: skills, selected: draft.allowedSkillIds, onChange: (ids) => set("allowedSkillIds", ids) }) }), _jsx(SwitchRow, { label: "Allow changes (write scope)", description: "Clients may request permission to change content.", checked: draft.writeScopeEnabled, onChange: (value) => set("writeScopeEnabled", value), testId: "mcp-settings-write-scope" }), _jsx(SwitchRow, { label: "Allow agents (agents scope)", description: "Clients may start Parhelia agents, which cost AI budget.", checked: draft.agentsScopeEnabled, onChange: (value) => set("agentsScopeEnabled", value), testId: "mcp-settings-agents-scope" })] }) }), _jsx(Card, { icon: _jsx(ListChecks, { strokeWidth: 1 }), title: "Approval defaults", description: "What is pre-selected on the approval page when a user connects a client.", children: _jsxs("div", { className: "space-y-3", children: [_jsx(SwitchRow, { label: "Read", checked: draft.readChecked, onChange: (value) => set("readChecked", value), testId: "mcp-settings-read-checked" }), _jsx(SwitchRow, { label: "Change", checked: draft.writeChecked, onChange: (value) => set("writeChecked", value), testId: "mcp-settings-write-checked" }), _jsx(SwitchRow, { label: "Agents", checked: draft.agentsChecked, onChange: (value) => set("agentsChecked", value), testId: "mcp-settings-agents-checked" }), _jsx(SwitchRow, { label: "Ask before changes", description: "The client asks the user before each change.", checked: draft.askBeforeWritesDefault, onChange: (value) => set("askBeforeWritesDefault", value), testId: "mcp-settings-ask-before-writes" })] }) }), _jsx(Card, { icon: _jsx(ShieldCheck, { strokeWidth: 1 }), title: "Sign-in", description: "How MCP clients register and how long their tokens last.", children: _jsxs("div", { className: "space-y-3", children: [_jsx(SwitchRow, { label: "Client ID metadata documents (CIMD)", description: "Clients identify themselves with a URL. Claude Code uses this.", checked: draft.cimdEnabled, onChange: (value) => set("cimdEnabled", value), testId: "mcp-settings-cimd" }), _jsx(SwitchRow, { label: "Dynamic client registration (DCR)", description: "Clients may register themselves. Off unless a client needs it.", checked: draft.dcrEnabled, onChange: (value) => set("dcrEnabled", value), testId: "mcp-settings-dcr" }), _jsx(NumberInput, { label: "Access token lifetime (minutes)", value: draft.accessTokenLifetimeMinutes, onChange: (value) => set("accessTokenLifetimeMinutes", value), min: 5, max: 1440, testId: "mcp-settings-access-token-minutes" }), _jsx(NumberInput, { label: "Refresh token lifetime (days)", value: draft.refreshTokenLifetimeDays, onChange: (value) => set("refreshTokenLifetimeDays", value), min: 1, max: 365, testId: "mcp-settings-refresh-token-days" }), _jsx(FieldBlock, { label: "Signing secret connection string", description: "Name of the connection string that holds the signing secret (at least 16 characters). The secret itself never goes into an item.", children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Input, { value: draft.signingSecretConnectionStringName, onChange: (event) => set("signingSecretConnectionStringName", event.target.value), "aria-label": "Signing secret connection string", className: "h-8 flex-1 font-mono text-xs md:text-xs", "data-testid": "mcp-settings-secret-name" }), _jsxs(Badge, { variant: saved.signingSecretFound ? "default" : "destructive", "data-testid": "mcp-settings-secret-status", children: [_jsx(KeyRound, { className: "h-3 w-3", strokeWidth: 1.5 }), saved.signingSecretFound ? "found" : "missing"] })] }) })] }) }), _jsx(Card, { icon: _jsx(Gauge, { strokeWidth: 1 }), title: "Limits", description: "Rate and cost limits that protect the CM.", children: _jsxs("div", { className: "space-y-3", children: [_jsx(NumberInput, { label: "Max agent cost limit", description: "Highest cost limit a client may set for an agent it starts.", value: draft.maxAgentCostLimit, onChange: (value) => set("maxAgentCostLimit", value), min: 0, max: 1000, step: 0.5, testId: "mcp-settings-max-cost" }), _jsx(NumberInput, { label: "Requests per minute per connection", value: draft.requestsPerMinutePerGrant, onChange: (value) => set("requestsPerMinutePerGrant", value), min: 1, max: 6000, testId: "mcp-settings-rpm" }), _jsx(NumberInput, { label: "Status polls per minute per connection", value: draft.statusPollsPerMinutePerGrant, onChange: (value) => set("statusPollsPerMinutePerGrant", value), min: 1, max: 600, testId: "mcp-settings-status-polls" }), _jsx(NumberInput, { label: "Anonymous requests per minute", description: "For all unauthenticated requests together (sign-in, discovery).", value: draft.globalAnonymousRequestsPerMinute, onChange: (value) => set("globalAnonymousRequestsPerMinute", value), min: 1, max: 60000, testId: "mcp-settings-anonymous-rpm" }), _jsx(NumberInput, { label: "Max dynamic clients", value: draft.maxDynamicClients, onChange: (value) => set("maxDynamicClients", value), min: 0, max: 100000, testId: "mcp-settings-max-dynamic-clients" })] }) })] }));
219
+ }
220
+ export default McpAccessSettingsView;
221
+ //# sourceMappingURL=McpAccessSettingsView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"McpAccessSettingsView.js","sourceRoot":"","sources":["../../../../src/editor/settings/panels/McpAccessSettingsView.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { type PublicSiteEntry } from "../../services/publicSiteService";
2
+ export declare function PublicSiteEntryDialog({ target, onClose, onSaved, }: {
3
+ target: {
4
+ entry?: PublicSiteEntry;
5
+ } | null;
6
+ onClose: () => void;
7
+ onSaved: () => void | Promise<void>;
8
+ }): import("react").JSX.Element;
@@ -0,0 +1,113 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useMemo, useRef, useState } from "react";
3
+ import { Globe } from "lucide-react";
4
+ import { toast } from "sonner";
5
+ import { Button } from "../../../components/ui/button";
6
+ import { ActionButton } from "../../../components/ActionButton";
7
+ import { Input } from "../../../components/ui/input";
8
+ import { Alert, AlertDescription } from "../../../components/ui/alert";
9
+ import { Dialog, DialogContent, DialogFooter, } from "../../../components/ui/dialog";
10
+ import { StyledDialogTitle } from "../../../components/ui/styled-dialog-title";
11
+ import { LanguageSelectionGrid } from "../../../components/ui/LanguageSelectionGrid";
12
+ import { TreeItemPicker } from "../../personalization/TreeItemPicker";
13
+ import { getLanguages } from "../../services/contentService";
14
+ import { savePublicSite, } from "../../services/publicSiteService";
15
+ import { CONTENT_ROOT_ID } from "./MemoryEntryDialog";
16
+ import { formatPublicSiteLanguages, validateOrigin } from "./publicSiteHelpers";
17
+ export function PublicSiteEntryDialog({ target, onClose, onSaved, }) {
18
+ const [rootItemId, setRootItemId] = useState("");
19
+ const [origin, setOrigin] = useState("");
20
+ const [name, setName] = useState("");
21
+ const [languages, setLanguages] = useState([]);
22
+ const [available, setAvailable] = useState([]);
23
+ const [touched, setTouched] = useState(false);
24
+ const [saving, setSaving] = useState(false);
25
+ const [error, setError] = useState();
26
+ const savingRef = useRef(false);
27
+ useEffect(() => {
28
+ if (!target)
29
+ return;
30
+ setRootItemId(target.entry?.rootItemId ?? "");
31
+ setOrigin(target.entry?.origin ?? "");
32
+ setName(target.entry?.name ?? "");
33
+ setLanguages(target.entry?.languages ?? []);
34
+ setTouched(false);
35
+ setError(undefined);
36
+ let active = true;
37
+ void getLanguages()
38
+ .then((result) => {
39
+ if (!active)
40
+ return;
41
+ if (result.type !== "success" || !result.data) {
42
+ setError("Could not load available languages.");
43
+ return;
44
+ }
45
+ setAvailable(result.data);
46
+ setLanguages((current) => current.map((code) => result.data.find((l) => l.languageCode.toLowerCase() === code.toLowerCase())?.languageCode ?? code));
47
+ })
48
+ .catch(() => {
49
+ if (active)
50
+ setError("Could not load available languages.");
51
+ });
52
+ return () => {
53
+ active = false;
54
+ };
55
+ }, [target]);
56
+ const options = useMemo(() => [
57
+ ...available.map((l) => ({
58
+ code: l.languageCode,
59
+ name: l.name,
60
+ icon: l.icon,
61
+ })),
62
+ ...languages
63
+ .filter((code) => !available.some((l) => l.languageCode.toLowerCase() === code.toLowerCase()))
64
+ .map((code) => ({ code, name: code + " (unavailable)" })),
65
+ ], [available, languages]);
66
+ const validation = validateOrigin(origin);
67
+ const canSave = !!rootItemId && !!validation.origin && name.trim().length <= 100 && !saving;
68
+ const save = async () => {
69
+ if (!target || !canSave || savingRef.current)
70
+ return;
71
+ savingRef.current = true;
72
+ setSaving(true);
73
+ setError(undefined);
74
+ try {
75
+ const result = await savePublicSite({
76
+ id: target.entry?.id,
77
+ name: name.trim() || undefined,
78
+ rootItemId,
79
+ origin: validation.origin,
80
+ languages,
81
+ });
82
+ if (result.type !== "success" || !result.data) {
83
+ setError(result.details || result.summary || "Failed to save mapping.");
84
+ return;
85
+ }
86
+ toast.success(target.entry
87
+ ? "Public site mapping updated"
88
+ : "Public site mapping added");
89
+ result.data.warnings?.forEach((warning) => toast.warning(warning));
90
+ await onSaved();
91
+ onClose();
92
+ }
93
+ catch (err) {
94
+ setError(err instanceof Error ? err.message : "Failed to save mapping.");
95
+ }
96
+ finally {
97
+ setSaving(false);
98
+ savingRef.current = false;
99
+ }
100
+ };
101
+ return (_jsx(Dialog, { open: !!target, onOpenChange: (open) => {
102
+ if (!open && !saving)
103
+ onClose();
104
+ }, children: _jsxs(DialogContent, { className: "gap-0 p-0 sm:max-w-xl", "data-testid": "public-sites-entry-dialog", onKeyDown: (event) => {
105
+ if ((event.ctrlKey || event.metaKey) && event.key === "Enter") {
106
+ event.preventDefault();
107
+ void save();
108
+ }
109
+ }, children: [_jsx(StyledDialogTitle, { icon: _jsx(Globe, { strokeWidth: 1 }), title: target?.entry
110
+ ? "Edit public site mapping"
111
+ : "Add public site mapping", subtitle: "Choose the public origin for a content root and its languages" }), _jsxs("div", { className: "space-y-4 overflow-y-auto px-8 py-6", children: [_jsxs("div", { className: "space-y-2", children: [_jsx("label", { className: "block text-sm font-medium", children: "Content root" }), _jsx(TreeItemPicker, { value: rootItemId, rootItemId: CONTENT_ROOT_ID, onChange: setRootItemId, disabled: saving })] }), _jsxs("div", { className: "space-y-2", children: [_jsx("label", { htmlFor: "public-site-origin", className: "block text-sm font-medium", children: "Origin" }), _jsx(Input, { id: "public-site-origin", "data-testid": "public-sites-entry-dialog-origin", value: origin, onChange: (e) => setOrigin(e.target.value), onBlur: () => setTouched(true), placeholder: "https://www.example.com", "aria-invalid": touched && !!validation.error, disabled: saving }), touched && validation.error && (_jsx("p", { className: "text-feedback-red text-xs", "data-testid": "public-sites-entry-dialog-origin-error", children: validation.error })), validation.origin && (_jsxs("p", { className: "text-neutral-grey-50 text-xs", "data-testid": "public-sites-entry-dialog-origin-normalized", children: ["Stored as", " ", _jsx("span", { dir: "ltr", className: "font-mono", children: validation.origin })] }))] }), _jsxs("div", { className: "space-y-2", children: [_jsx("label", { htmlFor: "public-site-name", className: "block text-sm font-medium", children: "Name (optional)" }), _jsx(Input, { id: "public-site-name", "data-testid": "public-sites-entry-dialog-name", value: name, onChange: (e) => setName(e.target.value), maxLength: 100, placeholder: "Defaults to the content root's name", disabled: saving })] }), _jsx(LanguageSelectionGrid, { languages: options, selectedLanguageCodes: languages, onSelectedLanguageCodesChange: setLanguages, title: "Languages", testId: "public-sites-entry-dialog-languages" }), _jsxs("p", { className: "text-neutral-grey-50 text-sm", "data-testid": "public-sites-entry-dialog-languages-summary", children: ["Applies to: ", formatPublicSiteLanguages(languages), " below the selected content root."] }), error && (_jsx(Alert, { variant: "destructive", "data-testid": "public-sites-entry-dialog-error", children: _jsx(AlertDescription, { children: error }) }))] }), _jsxs(DialogFooter, { className: "px-8 py-4", children: [_jsx(Button, { variant: "outline", onClick: onClose, disabled: saving, children: "Cancel" }), _jsx(ActionButton, { "data-testid": "public-sites-entry-dialog-save", size: "lg", onClick: () => void save(), disabled: !canSave, isLoading: saving, loadingText: "Saving\u2026", children: "Save mapping" })] })] }) }));
112
+ }
113
+ //# sourceMappingURL=PublicSiteEntryDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PublicSiteEntryDialog.js","sourceRoot":"","sources":["../../../../src/editor/settings/panels/PublicSiteEntryDialog.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function PublicSitesPanel(): import("react").JSX.Element;
@@ -0,0 +1,153 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useMemo, useState, } from "react";
3
+ import { CircleSlash, ExternalLink, Globe, Link2, Pencil, Plus, RefreshCw, TriangleAlert, } from "lucide-react";
4
+ import { toast } from "sonner";
5
+ import { Button } from "../../../components/ui/button";
6
+ import { Badge } from "../../../components/ui/badge";
7
+ import { DeleteIcon } from "../../../components/ui/delete-icon";
8
+ import { SearchInput } from "../../../components/SearchInput";
9
+ import { Alert, AlertDescription, AlertTitle, } from "../../../components/ui/alert";
10
+ import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from "../../../components/ui/alert-dialog";
11
+ import { cn } from "../../../lib/utils";
12
+ import { SimpleIconButton } from "../../ui/SimpleIconButton";
13
+ import { LoadingState } from "../../ui/LoadingState";
14
+ import { SettingsPanelLayout } from "../SettingsPanelLayout";
15
+ import { SettingsCard } from "../SettingsCard";
16
+ import { useRequiredSettingsHeaderActions } from "../SettingsHeaderActionsContext";
17
+ import { deletePublicSite, getPublicSites, } from "../../services/publicSiteService";
18
+ import { PublicSiteEntryDialog } from "./PublicSiteEntryDialog";
19
+ import { publicSiteSourceLabels } from "./publicSiteHelpers";
20
+ export function PublicSitesPanel() {
21
+ const [data, setData] = useState();
22
+ const [loading, setLoading] = useState(false);
23
+ const [error, setError] = useState();
24
+ const [query, setQuery] = useState("");
25
+ const [target, setTarget] = useState(null);
26
+ const [pendingDelete, setPendingDelete] = useState(null);
27
+ const [deleting, setDeleting] = useState(false);
28
+ const setHeaderActions = useRequiredSettingsHeaderActions();
29
+ const load = useCallback(async () => {
30
+ setLoading(true);
31
+ setError(undefined);
32
+ try {
33
+ const result = await getPublicSites();
34
+ if (result.type !== "success" || !result.data) {
35
+ setError(result.details || result.summary || "Failed to load public sites.");
36
+ return;
37
+ }
38
+ setData(result.data);
39
+ }
40
+ catch (err) {
41
+ setError(err instanceof Error ? err.message : "Failed to load public sites.");
42
+ }
43
+ finally {
44
+ setLoading(false);
45
+ }
46
+ }, []);
47
+ useEffect(() => {
48
+ void load();
49
+ }, [load]);
50
+ const add = useMemo(() => (_jsxs(Button, { size: "sm", "data-testid": "public-sites-add", onClick: () => setTarget({}), children: [_jsx(Plus, { className: "h-4 w-4", strokeWidth: 1 }), "Add mapping"] })), []);
51
+ useEffect(() => {
52
+ setHeaderActions(add);
53
+ return () => setHeaderActions(null);
54
+ }, [add, setHeaderActions]);
55
+ const filter = query.trim().toLowerCase();
56
+ const entries = (data?.entries ?? []).filter((entry) => [
57
+ entry.name,
58
+ entry.rootPath,
59
+ entry.rootDisplayName,
60
+ entry.origin,
61
+ ...entry.languages,
62
+ ].some((v) => v?.toLowerCase().includes(filter)));
63
+ const siteNames = [...new Set((data?.sites ?? []).map((s) => s.siteName))];
64
+ const groups = siteNames
65
+ .map((name) => (data?.sites ?? []).filter((s) => s.siteName === name))
66
+ .filter((rows) => rows.some((row) => [
67
+ row.siteName,
68
+ row.rootPath,
69
+ row.startPath,
70
+ row.database,
71
+ row.language,
72
+ row.origin,
73
+ row.sampleUrl,
74
+ row.source,
75
+ ].some((v) => v?.toLowerCase().includes(filter))));
76
+ const remove = async (entry) => {
77
+ setDeleting(true);
78
+ try {
79
+ const result = await deletePublicSite(entry.id);
80
+ if (result.type !== "success" || !result.data?.success) {
81
+ // Close the dialog first: the inline error renders behind the modal overlay.
82
+ setPendingDelete(null);
83
+ const message = result.details || result.summary || "Failed to delete mapping.";
84
+ toast.error(message);
85
+ // Reload before reporting: a mapping deleted elsewhere should disappear, and
86
+ // load() resets the error banner, so the delete message is set afterwards.
87
+ await load();
88
+ setError(message);
89
+ return;
90
+ }
91
+ setPendingDelete(null);
92
+ toast.success("Public site mapping deleted");
93
+ await load();
94
+ }
95
+ catch (err) {
96
+ setPendingDelete(null);
97
+ const message = err instanceof Error ? err.message : "Failed to delete mapping.";
98
+ setError(message);
99
+ toast.error(message);
100
+ }
101
+ finally {
102
+ setDeleting(false);
103
+ }
104
+ };
105
+ return (_jsxs(SettingsPanelLayout, { testId: "public-sites-panel", contentClassName: "flex flex-col gap-4", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-3 rounded-lg bg-white p-4 md:p-6", children: [_jsx("div", { className: "min-w-0 flex-1", "data-testid": "public-sites-search", children: _jsx(SearchInput, { value: query, onChange: setQuery, placeholder: "Search public sites", size: "lg", background: "white" }) }), _jsx("div", { className: "md:hidden", children: add }), _jsxs(Button, { variant: "outline", size: "sm", "data-testid": "public-sites-refresh", disabled: loading, onClick: () => void load(), children: [_jsx(RefreshCw, { className: cn("h-4 w-4", loading && "animate-spin"), strokeWidth: 1 }), "Refresh"] })] }), error && (_jsx(Alert, { variant: "destructive", "data-testid": "public-sites-error", children: _jsx(AlertDescription, { children: error }) })), loading && !data && (_jsx(LoadingState, { variant: "inline", message: "Loading public sites\u2026", spinnerSize: "sm" })), data?.environmentOverride && (_jsxs(Alert, { variant: "info", "data-testid": "public-sites-environment-override", children: [_jsx(AlertTitle, { children: "Environment override active" }), _jsxs(AlertDescription, { children: [_jsx("code", { className: "font-mono text-xs", children: "PARHELIA_PUBLIC_SITE_URL" }), " ", "is set to", " ", _jsx("code", { className: "font-mono text-xs", dir: "ltr", children: data.environmentOverride }), ". Every site resolves to it; the mappings below take effect again once the variable is removed."] })] })), data && (_jsxs(_Fragment, { children: [_jsx(SettingsCard, { title: "Mappings", description: "Public origins for content roots, stored as settings items. Environment variables and connection strings take precedence over mappings.", icon: _jsx(Link2, { strokeWidth: 1 }), noPadding: true, className: "pb-2", children: entries.length ? (_jsx("div", { className: "divide-border-default divide-y", children: entries.map((entry) => (_jsx(MappingRow, { entry: entry, onEdit: () => setTarget({ entry }), onDelete: () => setPendingDelete(entry) }, entry.id))) })) : (_jsx(EmptyState, { testId: "public-sites-entries-empty", icon: data.entries.length ? CircleSlash : Globe, message: data.entries.length
106
+ ? "No mappings match your search."
107
+ : "No mappings yet.", hint: data.entries.length
108
+ ? undefined
109
+ : "Add a mapping to tell Parhelia where a site is published, or rely on connection strings and Sitecore site definitions." })) }), _jsx(SettingsCard, { title: "Effective resolution", description: "How every site resolves per language right now. Sample URLs open the live site and only work for published pages.", icon: _jsx(Globe, { strokeWidth: 1 }), noPadding: true, className: "pb-2", children: groups.length ? (_jsx(EffectiveSitesTable, { groups: groups })) : (_jsx(EmptyState, { testId: "public-sites-effective-empty", icon: CircleSlash, message: data.sites.length
110
+ ? "No sites match your search."
111
+ : "No content sites found." })) })] })), _jsx(PublicSiteEntryDialog, { target: target, onClose: () => setTarget(null), onSaved: load }), _jsx(AlertDialog, { open: !!pendingDelete, onOpenChange: (open) => {
112
+ if (!open && !deleting)
113
+ setPendingDelete(null);
114
+ }, children: _jsxs(AlertDialogContent, { "data-testid": "public-sites-delete-confirm", children: [_jsxs(AlertDialogHeader, { children: [_jsx(AlertDialogTitle, { children: "Delete public site mapping" }), _jsxs(AlertDialogDescription, { children: ["Delete \u201C", pendingDelete?.name, "\u201D? Pages below", " ", _jsx("span", { className: "font-mono text-xs break-all", children: pendingDelete?.rootPath }), " ", "fall back to the next applicable source."] })] }), _jsxs(AlertDialogFooter, { children: [_jsx(AlertDialogCancel, { disabled: deleting, children: "Cancel" }), _jsx(AlertDialogAction, { "data-testid": "public-sites-delete-confirm-accept", disabled: deleting, onClick: (event) => {
115
+ event.preventDefault();
116
+ if (pendingDelete)
117
+ void remove(pendingDelete);
118
+ }, children: "Delete" })] })] }) })] }));
119
+ }
120
+ function MappingRow({ entry, onEdit, onDelete, }) {
121
+ const languages = entry.languages.length
122
+ ? entry.languages
123
+ : ["All languages"];
124
+ return (_jsxs("div", { className: "flex items-start gap-3 px-4 py-3 md:px-6", "data-testid": "public-sites-entry", children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [_jsx("span", { className: "text-neutral-grey-100 text-sm font-medium", children: entry.name }), languages.map((language) => (_jsx(Pill, { children: language }, language)))] }), entry.rootPath ? (_jsx("div", { className: "text-neutral-grey-50 mt-1 font-mono text-[11px] break-words", title: entry.rootDisplayName, children: entry.rootPath })) : (_jsx("div", { className: "text-feedback-orange mt-1 text-[11px]", children: "Content root not found" })), _jsx(ExternalUrl, { url: entry.origin, className: "mt-1", testId: "public-sites-entry-origin" }), _jsx(WarningList, { warnings: entry.warnings })] }), _jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [_jsx(SimpleIconButton, { icon: _jsx(Pencil, { className: "h-4 w-4", strokeWidth: 1 }), label: "Edit mapping", onClick: onEdit, "data-testid": "public-sites-entry-edit" }), _jsx(SimpleIconButton, { icon: _jsx(DeleteIcon, { size: "lg" }), label: "Delete mapping", onClick: onDelete, "data-testid": "public-sites-entry-delete" })] })] }));
125
+ }
126
+ function EffectiveSitesTable({ groups }) {
127
+ return (_jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "w-full text-left text-sm", children: [_jsx("thead", { children: _jsxs("tr", { className: "text-neutral-grey-50 text-xs font-medium tracking-wide", children: [_jsx("th", { className: "px-4 py-2 font-medium md:px-6", children: "Site" }), _jsx("th", { className: "px-3 py-2 font-medium", children: "Language" }), _jsx("th", { className: "px-3 py-2 font-medium", children: "Published URL" }), _jsx("th", { className: "px-4 py-2 font-medium md:px-6", children: "Source" })] }) }), groups.map((rows) => (_jsx("tbody", { className: "border-border-default border-t", "data-testid": "public-sites-site", children: rows.map((row, index) => (_jsxs("tr", { children: [index === 0 && (_jsx("td", { rowSpan: rows.length, className: "w-80 max-w-sm px-4 py-3 align-top md:px-6", children: _jsx(SiteCell, { row: row }) })), _jsx("td", { className: cn("px-3 py-3 align-top whitespace-nowrap", index > 0 && "border-border-default border-t"), children: _jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx("span", { className: "text-neutral-grey-100", children: row.language }), row.isDefaultLanguage && _jsx(Pill, { children: "default" })] }) }), _jsx("td", { className: cn("px-3 py-3 align-top", index > 0 && "border-border-default border-t"), children: _jsx(PublishedUrlCell, { row: row }) }), _jsx("td", { className: cn("px-4 py-3 align-top md:px-6", index > 0 && "border-border-default border-t"), children: _jsx(Badge, { variant: row.source ? "secondary" : "outline", size: "sm", "data-testid": "public-sites-site-source", children: row.source
128
+ ? (publicSiteSourceLabels[row.source] ?? row.source)
129
+ : "Unresolved" }) })] }, row.language))) }, rows[0].siteName)))] }) }));
130
+ }
131
+ function SiteCell({ row }) {
132
+ const trim = (path) => path.replace(/\/+$/, "");
133
+ const showStart = !!row.startPath && trim(row.startPath) !== trim(row.rootPath);
134
+ return (_jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "text-neutral-grey-100 font-medium break-words", children: row.siteName }), _jsxs("div", { className: "mt-1 flex flex-wrap items-center gap-1", children: [_jsx(Badge, { variant: "outline", size: "sm", children: row.database }), !row.isPublishingTarget && (_jsxs(Badge, { variant: "outline", size: "sm", className: "text-feedback-orange gap-1", children: [_jsx(TriangleAlert, { strokeWidth: 1.5 }), "Not a publishing target"] }))] }), _jsx("div", { className: "text-neutral-grey-50 mt-1 font-mono text-[11px] break-words", children: row.rootPath }), showStart && (_jsxs("div", { className: "text-neutral-grey-50 font-mono text-[11px] break-words", children: [_jsx("span", { className: "text-neutral-grey-50/70", children: "start " }), row.startPath] }))] }));
135
+ }
136
+ function PublishedUrlCell({ row }) {
137
+ return (_jsxs("div", { className: "min-w-0", children: [row.sampleUrl ? (_jsx(ExternalUrl, { url: row.sampleUrl, testId: "public-sites-site-sample-url" })) : row.origin ? (_jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [_jsx(ExternalUrl, { url: row.origin }), _jsx("span", { className: "text-neutral-grey-50 text-xs", children: "origin only" })] })) : (_jsx("span", { className: "text-neutral-grey-50", children: "Not resolved" })), _jsx(WarningList, { warnings: row.warnings })] }));
138
+ }
139
+ function ExternalUrl({ url, testId, className, }) {
140
+ return (_jsxs("a", { href: url, target: "_blank", rel: "noreferrer noopener", dir: "ltr", className: cn("text-feedback-blue inline-flex max-w-full items-center gap-1 text-sm hover:underline", className), "data-testid": testId, children: [_jsx("span", { className: "min-w-0 break-all", children: url }), _jsx(ExternalLink, { className: "h-3.5 w-3.5 shrink-0", strokeWidth: 1 })] }));
141
+ }
142
+ function WarningList({ warnings }) {
143
+ if (!warnings?.length)
144
+ return null;
145
+ return (_jsx("ul", { className: "text-feedback-orange mt-1.5 space-y-0.5 text-xs", children: warnings.map((warning, index) => (_jsxs("li", { className: "flex items-start gap-1.5", children: [_jsx(TriangleAlert, { className: "mt-0.5 h-3 w-3 shrink-0", strokeWidth: 1.5 }), _jsx("span", { children: warning })] }, `${index}-${warning}`))) }));
146
+ }
147
+ function Pill({ children }) {
148
+ return (_jsx("span", { className: "border-border-default text-neutral-grey-50 rounded-full border px-1.5 text-[10px] whitespace-nowrap", children: children }));
149
+ }
150
+ function EmptyState({ icon: Icon, message, hint, testId, }) {
151
+ return (_jsxs("div", { className: "flex flex-col items-center justify-center gap-2 px-4 pt-2 pb-8 text-center", "data-testid": testId, children: [_jsx(Icon, { className: "text-neutral-grey-50 h-8 w-8", strokeWidth: 1 }), _jsx("p", { className: "text-neutral-grey-100 text-sm", children: message }), hint && _jsx("p", { className: "text-neutral-grey-50 max-w-md text-xs", children: hint })] }));
152
+ }
153
+ //# sourceMappingURL=PublicSitesPanel.js.map