@alpaca-editor/core 1.0.3938 → 1.0.3941

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/dist/components/ActionButton.d.ts +1 -0
  2. package/dist/components/ActionButton.js +2 -2
  3. package/dist/components/ActionButton.js.map +1 -1
  4. package/dist/editor/ContentTree.js +12 -8
  5. package/dist/editor/ContentTree.js.map +1 -1
  6. package/dist/editor/ContextMenu.d.ts +1 -1
  7. package/dist/editor/ContextMenu.js +17 -3
  8. package/dist/editor/ContextMenu.js.map +1 -1
  9. package/dist/editor/FieldActionsOverlay.d.ts +18 -0
  10. package/dist/editor/FieldActionsOverlay.js +139 -0
  11. package/dist/editor/FieldActionsOverlay.js.map +1 -0
  12. package/dist/editor/FieldHistory.d.ts +2 -1
  13. package/dist/editor/FieldHistory.js +11 -8
  14. package/dist/editor/FieldHistory.js.map +1 -1
  15. package/dist/editor/FieldListField.js +14 -17
  16. package/dist/editor/FieldListField.js.map +1 -1
  17. package/dist/editor/PictureCropper.js +65 -23
  18. package/dist/editor/PictureCropper.js.map +1 -1
  19. package/dist/editor/PictureEditor.js +43 -3
  20. package/dist/editor/PictureEditor.js.map +1 -1
  21. package/dist/editor/Titlebar.js +19 -10
  22. package/dist/editor/Titlebar.js.map +1 -1
  23. package/dist/editor/ai/AiTerminal.js +27 -41
  24. package/dist/editor/ai/AiTerminal.js.map +1 -1
  25. package/dist/editor/ai/GhostWriter.js +21 -2
  26. package/dist/editor/ai/GhostWriter.js.map +1 -1
  27. package/dist/editor/client/EditorClient.js +48 -18
  28. package/dist/editor/client/EditorClient.js.map +1 -1
  29. package/dist/editor/client/editContext.d.ts +1 -1
  30. package/dist/editor/client/editContext.js.map +1 -1
  31. package/dist/editor/client/itemsRepository.js +126 -90
  32. package/dist/editor/client/itemsRepository.js.map +1 -1
  33. package/dist/editor/commands/componentCommands.js +7 -3
  34. package/dist/editor/commands/componentCommands.js.map +1 -1
  35. package/dist/editor/media-selector/MediaFolderBrowser.d.ts +5 -0
  36. package/dist/editor/media-selector/MediaFolderBrowser.js +77 -0
  37. package/dist/editor/media-selector/MediaFolderBrowser.js.map +1 -0
  38. package/dist/editor/media-selector/MediaSelector.js +1 -1
  39. package/dist/editor/media-selector/MediaSelector.js.map +1 -1
  40. package/dist/editor/media-selector/Thumbnails.js +2 -2
  41. package/dist/editor/media-selector/index.d.ts +8 -0
  42. package/dist/editor/media-selector/index.js +9 -0
  43. package/dist/editor/media-selector/index.js.map +1 -0
  44. package/dist/editor/menubar/BrowseHistory.js +3 -4
  45. package/dist/editor/menubar/BrowseHistory.js.map +1 -1
  46. package/dist/editor/menubar/PageSelector.js +62 -10
  47. package/dist/editor/menubar/PageSelector.js.map +1 -1
  48. package/dist/editor/page-editor-chrome/FieldActionIndicator.js +1 -1
  49. package/dist/editor/page-editor-chrome/FieldActionIndicator.js.map +1 -1
  50. package/dist/editor/page-editor-chrome/useInlineAICompletion.js +37 -11
  51. package/dist/editor/page-editor-chrome/useInlineAICompletion.js.map +1 -1
  52. package/dist/editor/page-viewer/PageViewerFrame.js +98 -2
  53. package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
  54. package/dist/editor/pageModel.d.ts +14 -0
  55. package/dist/editor/reviews/Comment.js +3 -2
  56. package/dist/editor/reviews/Comment.js.map +1 -1
  57. package/dist/editor/services/aiService.js +0 -1
  58. package/dist/editor/services/aiService.js.map +1 -1
  59. package/dist/editor/services/editService.d.ts +1 -1
  60. package/dist/editor/services/editService.js +2 -1
  61. package/dist/editor/services/editService.js.map +1 -1
  62. package/dist/editor/sidebar/ComponentTree.js +3 -4
  63. package/dist/editor/sidebar/ComponentTree.js.map +1 -1
  64. package/dist/editor/ui/Icons.js +1 -1
  65. package/dist/editor/ui/Icons.js.map +1 -1
  66. package/dist/editor/ui/ItemList.d.ts +16 -0
  67. package/dist/editor/ui/ItemList.js +19 -0
  68. package/dist/editor/ui/ItemList.js.map +1 -0
  69. package/dist/editor/ui/ItemSearch.js +2 -12
  70. package/dist/editor/ui/ItemSearch.js.map +1 -1
  71. package/dist/editor/ui/SimpleTabs.d.ts +1 -0
  72. package/dist/editor/ui/SimpleTabs.js +3 -3
  73. package/dist/editor/ui/SimpleTabs.js.map +1 -1
  74. package/dist/editor/ui/Splitter.js +61 -6
  75. package/dist/editor/ui/Splitter.js.map +1 -1
  76. package/dist/editor/views/MediaFolderEditView.d.ts +4 -0
  77. package/dist/editor/views/MediaFolderEditView.js +40 -0
  78. package/dist/editor/views/MediaFolderEditView.js.map +1 -0
  79. package/dist/editor/views/SingleEditView.js +9 -1
  80. package/dist/editor/views/SingleEditView.js.map +1 -1
  81. package/dist/revision.d.ts +2 -2
  82. package/dist/revision.js +2 -2
  83. package/dist/styles.css +64 -13
  84. package/package.json +8 -2
  85. package/.prettierrc +0 -3
  86. package/build.css +0 -3
  87. package/components.json +0 -21
  88. package/eslint.config.mjs +0 -4
  89. package/images/bg-shape-black.webp +0 -0
  90. package/images/wizard-bg.png +0 -0
  91. package/images/wizard-tour.png +0 -0
  92. package/images/wizard.png +0 -0
  93. package/src/client-components/api.ts +0 -6
  94. package/src/client-components/index.ts +0 -19
  95. package/src/components/ActionButton.tsx +0 -41
  96. package/src/components/Error.tsx +0 -57
  97. package/src/components/ui/CardConnector.tsx +0 -56
  98. package/src/components/ui/button.tsx +0 -62
  99. package/src/components/ui/card.tsx +0 -372
  100. package/src/components/ui/context-menu.tsx +0 -250
  101. package/src/config/config.tsx +0 -917
  102. package/src/config/types.ts +0 -286
  103. package/src/editor/ComponentInfo.tsx +0 -90
  104. package/src/editor/ConfirmationDialog.tsx +0 -103
  105. package/src/editor/ContentTree.tsx +0 -727
  106. package/src/editor/ContextMenu.tsx +0 -212
  107. package/src/editor/Editor.tsx +0 -90
  108. package/src/editor/EditorWarning.tsx +0 -34
  109. package/src/editor/EditorWarnings.tsx +0 -33
  110. package/src/editor/FieldEditorPopup.tsx +0 -65
  111. package/src/editor/FieldHistory.tsx +0 -74
  112. package/src/editor/FieldList.tsx +0 -190
  113. package/src/editor/FieldListField.tsx +0 -391
  114. package/src/editor/FieldListFieldWithFallbacks.tsx +0 -217
  115. package/src/editor/FloatingToolbar.tsx +0 -163
  116. package/src/editor/ImageEditor.tsx +0 -128
  117. package/src/editor/ItemInfo.tsx +0 -90
  118. package/src/editor/LinkEditorDialog.tsx +0 -196
  119. package/src/editor/MainLayout.tsx +0 -95
  120. package/src/editor/MobileLayout.tsx +0 -68
  121. package/src/editor/NewEditorClient.tsx +0 -11
  122. package/src/editor/PictureCropper.tsx +0 -503
  123. package/src/editor/PictureEditor.tsx +0 -212
  124. package/src/editor/PictureEditorDialog.tsx +0 -381
  125. package/src/editor/PublishDialog.ignore +0 -74
  126. package/src/editor/ScrollingContentTree.tsx +0 -67
  127. package/src/editor/Terminal.tsx +0 -227
  128. package/src/editor/Titlebar.tsx +0 -93
  129. package/src/editor/ai/AiPopup.tsx +0 -59
  130. package/src/editor/ai/AiResponseMessage.tsx +0 -106
  131. package/src/editor/ai/AiTerminal.tsx +0 -514
  132. package/src/editor/ai/AiToolCall.tsx +0 -61
  133. package/src/editor/ai/EditorAiTerminal.tsx +0 -20
  134. package/src/editor/ai/GhostWriter.tsx +0 -432
  135. package/src/editor/ai/aiPageModel.ts +0 -108
  136. package/src/editor/ai/editorAiContext.ts +0 -18
  137. package/src/editor/client/AboutDialog.tsx +0 -44
  138. package/src/editor/client/EditorClient.tsx +0 -2197
  139. package/src/editor/client/GenericDialog.tsx +0 -50
  140. package/src/editor/client/editContext.ts +0 -412
  141. package/src/editor/client/helpers.ts +0 -44
  142. package/src/editor/client/itemsRepository.ts +0 -538
  143. package/src/editor/client/operations.ts +0 -768
  144. package/src/editor/client/pageModelBuilder.ts +0 -219
  145. package/src/editor/commands/commands.ts +0 -22
  146. package/src/editor/commands/componentCommands.tsx +0 -424
  147. package/src/editor/commands/createVersionCommand.ts +0 -33
  148. package/src/editor/commands/deleteVersionCommand.ts +0 -71
  149. package/src/editor/commands/itemCommands.tsx +0 -351
  150. package/src/editor/commands/localizeItem/LocalizeItemDialog.tsx +0 -201
  151. package/src/editor/commands/localizeItem/LocalizeItemUtils.ts +0 -27
  152. package/src/editor/commands/undo.ts +0 -39
  153. package/src/editor/component-designer/ComponentDesigner.tsx +0 -70
  154. package/src/editor/component-designer/ComponentDesignerAiTerminal.tsx +0 -11
  155. package/src/editor/component-designer/ComponentDesignerMenu.tsx +0 -91
  156. package/src/editor/component-designer/ComponentEditor.tsx +0 -97
  157. package/src/editor/component-designer/ComponentRenderingCodeEditor.tsx +0 -31
  158. package/src/editor/component-designer/ComponentRenderingEditor.tsx +0 -104
  159. package/src/editor/component-designer/ComponentsDropdown.tsx +0 -39
  160. package/src/editor/component-designer/PlaceholdersEditor.tsx +0 -179
  161. package/src/editor/component-designer/RenderingsDropdown.tsx +0 -36
  162. package/src/editor/component-designer/TemplateEditor.tsx +0 -236
  163. package/src/editor/component-designer/aiContext.ts +0 -23
  164. package/src/editor/componentTreeHelper.tsx +0 -116
  165. package/src/editor/context-menu/CopyMoveMenu.tsx +0 -103
  166. package/src/editor/context-menu/InsertMenu.tsx +0 -347
  167. package/src/editor/control-center/About.tsx +0 -342
  168. package/src/editor/control-center/ControlCenterMenu.tsx +0 -76
  169. package/src/editor/control-center/IndexOverview.tsx +0 -50
  170. package/src/editor/control-center/IndexSettings.tsx +0 -266
  171. package/src/editor/control-center/Info.tsx +0 -104
  172. package/src/editor/control-center/QuotaInfo.tsx +0 -301
  173. package/src/editor/control-center/Status.tsx +0 -113
  174. package/src/editor/control-center/WebSocketMessages.tsx +0 -155
  175. package/src/editor/editor-warnings/ItemLocked.tsx +0 -63
  176. package/src/editor/editor-warnings/NoLanguageWriteAccess.tsx +0 -22
  177. package/src/editor/editor-warnings/NoWorkflowWriteAccess.tsx +0 -23
  178. package/src/editor/editor-warnings/NoWriteAccess.tsx +0 -16
  179. package/src/editor/editor-warnings/ValidationErrors.tsx +0 -54
  180. package/src/editor/field-types/AttachmentEditor.tsx +0 -9
  181. package/src/editor/field-types/CheckboxEditor.tsx +0 -47
  182. package/src/editor/field-types/DropLinkEditor.tsx +0 -80
  183. package/src/editor/field-types/DropListEditor.tsx +0 -84
  184. package/src/editor/field-types/ImageFieldEditor.tsx +0 -65
  185. package/src/editor/field-types/InternalLinkFieldEditor.tsx +0 -117
  186. package/src/editor/field-types/LinkFieldEditor.tsx +0 -85
  187. package/src/editor/field-types/MultiLineText.tsx +0 -82
  188. package/src/editor/field-types/PictureFieldEditor.tsx +0 -121
  189. package/src/editor/field-types/RawEditor.tsx +0 -53
  190. package/src/editor/field-types/ReactQuill.tsx +0 -580
  191. package/src/editor/field-types/RichTextEditor.tsx +0 -22
  192. package/src/editor/field-types/RichTextEditorComponent.tsx +0 -127
  193. package/src/editor/field-types/SingleLineText.tsx +0 -174
  194. package/src/editor/field-types/TreeListEditor.tsx +0 -261
  195. package/src/editor/fieldTypes.ts +0 -140
  196. package/src/editor/media-selector/AiImageSearch.tsx +0 -185
  197. package/src/editor/media-selector/AiImageSearchPrompt.tsx +0 -94
  198. package/src/editor/media-selector/MediaSelector.tsx +0 -42
  199. package/src/editor/media-selector/Preview.tsx +0 -14
  200. package/src/editor/media-selector/Thumbnails.tsx +0 -48
  201. package/src/editor/media-selector/TreeSelector.tsx +0 -292
  202. package/src/editor/media-selector/UploadZone.tsx +0 -137
  203. package/src/editor/menubar/ActionsMenu.tsx +0 -94
  204. package/src/editor/menubar/ActiveUsers.tsx +0 -17
  205. package/src/editor/menubar/ApproveAndPublish.tsx +0 -18
  206. package/src/editor/menubar/BrowseHistory.tsx +0 -37
  207. package/src/editor/menubar/ItemLanguageVersion.tsx +0 -76
  208. package/src/editor/menubar/LanguageSelector.tsx +0 -226
  209. package/src/editor/menubar/Menu.tsx +0 -83
  210. package/src/editor/menubar/NavButtons.tsx +0 -74
  211. package/src/editor/menubar/PageSelector.tsx +0 -141
  212. package/src/editor/menubar/PageViewerControls.tsx +0 -120
  213. package/src/editor/menubar/PreviewSecondaryControls.tsx +0 -18
  214. package/src/editor/menubar/SecondaryControls.tsx +0 -45
  215. package/src/editor/menubar/Separator.tsx +0 -12
  216. package/src/editor/menubar/SiteInfo.tsx +0 -53
  217. package/src/editor/menubar/User.tsx +0 -27
  218. package/src/editor/menubar/VersionSelector.tsx +0 -142
  219. package/src/editor/page-editor-chrome/CommentHighlighting.tsx +0 -307
  220. package/src/editor/page-editor-chrome/CommentHighlightings.tsx +0 -35
  221. package/src/editor/page-editor-chrome/FieldActionIndicator.tsx +0 -59
  222. package/src/editor/page-editor-chrome/FieldActionIndicators.tsx +0 -23
  223. package/src/editor/page-editor-chrome/FieldEditedIndicator.tsx +0 -64
  224. package/src/editor/page-editor-chrome/FieldEditedIndicators.tsx +0 -35
  225. package/src/editor/page-editor-chrome/FrameMenu.tsx +0 -338
  226. package/src/editor/page-editor-chrome/FrameMenus.tsx +0 -48
  227. package/src/editor/page-editor-chrome/InlineEditor.tsx +0 -765
  228. package/src/editor/page-editor-chrome/LockedFieldIndicator.tsx +0 -61
  229. package/src/editor/page-editor-chrome/NoLayout.tsx +0 -36
  230. package/src/editor/page-editor-chrome/PageEditorChrome.tsx +0 -122
  231. package/src/editor/page-editor-chrome/PictureEditorOverlay.tsx +0 -161
  232. package/src/editor/page-editor-chrome/PlaceholderDropZone.tsx +0 -169
  233. package/src/editor/page-editor-chrome/PlaceholderDropZones.tsx +0 -315
  234. package/src/editor/page-editor-chrome/SuggestionHighlighting.tsx +0 -300
  235. package/src/editor/page-editor-chrome/SuggestionHighlightings.tsx +0 -40
  236. package/src/editor/page-editor-chrome/useInlineAICompletion.tsx +0 -791
  237. package/src/editor/page-viewer/DeviceToolbar.tsx +0 -70
  238. package/src/editor/page-viewer/EditorForm.tsx +0 -258
  239. package/src/editor/page-viewer/MiniMap.tsx +0 -362
  240. package/src/editor/page-viewer/PageViewer.tsx +0 -169
  241. package/src/editor/page-viewer/PageViewerFrame.tsx +0 -879
  242. package/src/editor/page-viewer/pageModelSkeletonBuilder.ts +0 -412
  243. package/src/editor/page-viewer/pageViewContext.ts +0 -186
  244. package/src/editor/pageModel.ts +0 -208
  245. package/src/editor/picture-shared.tsx +0 -53
  246. package/src/editor/reviews/Comment.tsx +0 -308
  247. package/src/editor/reviews/Comments.tsx +0 -125
  248. package/src/editor/reviews/DiffView.tsx +0 -109
  249. package/src/editor/reviews/PreviewInfo.tsx +0 -35
  250. package/src/editor/reviews/Reviews.tsx +0 -280
  251. package/src/editor/reviews/SuggestedEdit.tsx +0 -316
  252. package/src/editor/reviews/reviewCommands.tsx +0 -47
  253. package/src/editor/reviews/useReviews.tsx +0 -70
  254. package/src/editor/services/aiService.ts +0 -174
  255. package/src/editor/services/componentDesignerService.ts +0 -151
  256. package/src/editor/services/contentService.ts +0 -180
  257. package/src/editor/services/editService.ts +0 -486
  258. package/src/editor/services/indexService.ts +0 -24
  259. package/src/editor/services/reviewsService.ts +0 -53
  260. package/src/editor/services/serviceHelper.ts +0 -95
  261. package/src/editor/services/suggestedEditsService.ts +0 -39
  262. package/src/editor/services/systemService.ts +0 -5
  263. package/src/editor/services/translationService.ts +0 -21
  264. package/src/editor/services-server/api.ts +0 -150
  265. package/src/editor/services-server/graphQL.ts +0 -106
  266. package/src/editor/sidebar/ComponentPalette.tsx +0 -161
  267. package/src/editor/sidebar/ComponentTree.tsx +0 -548
  268. package/src/editor/sidebar/ComponentTree2.tsxx +0 -490
  269. package/src/editor/sidebar/Debug.tsx +0 -111
  270. package/src/editor/sidebar/DictionaryEditor.tsx +0 -261
  271. package/src/editor/sidebar/EditHistory.tsx +0 -134
  272. package/src/editor/sidebar/GraphQL.tsx +0 -164
  273. package/src/editor/sidebar/Insert.tsx +0 -35
  274. package/src/editor/sidebar/MainContentTree.tsx +0 -102
  275. package/src/editor/sidebar/Performance.tsx +0 -53
  276. package/src/editor/sidebar/Sessions.tsx +0 -35
  277. package/src/editor/sidebar/Sidebar.tsx +0 -20
  278. package/src/editor/sidebar/SidebarView.tsx +0 -152
  279. package/src/editor/sidebar/Translations.tsx +0 -295
  280. package/src/editor/sidebar/Validation.tsx +0 -102
  281. package/src/editor/sidebar/ViewSelector.tsx +0 -60
  282. package/src/editor/sidebar/Workbox.tsx +0 -209
  283. package/src/editor/ui/CenteredMessage.tsx +0 -7
  284. package/src/editor/ui/CopyMoveTargetSelectorDialog.tsx +0 -81
  285. package/src/editor/ui/CopyToClipboardButton.tsx +0 -24
  286. package/src/editor/ui/DialogButtons.tsx +0 -11
  287. package/src/editor/ui/Icons.tsx +0 -708
  288. package/src/editor/ui/ItemNameDialogNew.tsx +0 -118
  289. package/src/editor/ui/ItemSearch.tsx +0 -190
  290. package/src/editor/ui/PerfectTree.tsx +0 -571
  291. package/src/editor/ui/Section.tsx +0 -35
  292. package/src/editor/ui/SimpleIconButton.tsx +0 -54
  293. package/src/editor/ui/SimpleMenu.tsx +0 -40
  294. package/src/editor/ui/SimpleTable.tsx +0 -60
  295. package/src/editor/ui/SimpleTabs.tsx +0 -55
  296. package/src/editor/ui/SimpleToolbar.tsx +0 -7
  297. package/src/editor/ui/Spinner.tsx +0 -9
  298. package/src/editor/ui/Splitter.tsx +0 -314
  299. package/src/editor/ui/StackedPanels.tsx +0 -134
  300. package/src/editor/ui/Toolbar.tsx +0 -7
  301. package/src/editor/utils/id-helper.ts +0 -3
  302. package/src/editor/utils/insertOptions.ts +0 -69
  303. package/src/editor/utils/itemutils.ts +0 -29
  304. package/src/editor/utils/useMemoDebug.ts +0 -28
  305. package/src/editor/utils.ts +0 -486
  306. package/src/editor/views/CompareView.tsx +0 -245
  307. package/src/editor/views/EditView.tsx +0 -27
  308. package/src/editor/views/ItemEditor.tsx +0 -58
  309. package/src/editor/views/SingleEditView.tsx +0 -46
  310. package/src/fonts/Geist-Black.woff2 +0 -0
  311. package/src/fonts/Geist-Bold.woff2 +0 -0
  312. package/src/fonts/Geist-ExtraBold.woff2 +0 -0
  313. package/src/fonts/Geist-ExtraLight.woff2 +0 -0
  314. package/src/fonts/Geist-Light.woff2 +0 -0
  315. package/src/fonts/Geist-Medium.woff2 +0 -0
  316. package/src/fonts/Geist-Regular.woff2 +0 -0
  317. package/src/fonts/Geist-SemiBold.woff2 +0 -0
  318. package/src/fonts/Geist-Thin.woff2 +0 -0
  319. package/src/fonts/Geist[wght].woff2 +0 -0
  320. package/src/fonts/index.ts +0 -10
  321. package/src/index.ts +0 -23
  322. package/src/lib/safelist.tsx +0 -16
  323. package/src/lib/utils.ts +0 -6
  324. package/src/page-wizard/PageWizard.tsx +0 -139
  325. package/src/page-wizard/WizardBox.tsx +0 -4
  326. package/src/page-wizard/WizardBoxConnector.tsx +0 -56
  327. package/src/page-wizard/WizardSteps.tsx +0 -458
  328. package/src/page-wizard/service.ts +0 -35
  329. package/src/page-wizard/startPageWizardCommand.ts +0 -26
  330. package/src/page-wizard/steps/BuildPageStep.tsx +0 -259
  331. package/src/page-wizard/steps/CollectStep.tsx +0 -296
  332. package/src/page-wizard/steps/ComponentTypesSelector.tsx +0 -454
  333. package/src/page-wizard/steps/Components.tsx +0 -193
  334. package/src/page-wizard/steps/ContentStep.tsx +0 -890
  335. package/src/page-wizard/steps/EditButton.tsx +0 -34
  336. package/src/page-wizard/steps/FieldEditor.tsx +0 -102
  337. package/src/page-wizard/steps/Generate.tsx +0 -60
  338. package/src/page-wizard/steps/ImagesStep.tsx +0 -382
  339. package/src/page-wizard/steps/LayoutStep.tsx +0 -227
  340. package/src/page-wizard/steps/MetaDataStep.tsx +0 -173
  341. package/src/page-wizard/steps/SelectStep.tsx +0 -281
  342. package/src/page-wizard/steps/schema.ts +0 -180
  343. package/src/page-wizard/steps/usePageCreator.ts +0 -325
  344. package/src/page-wizard/usePageWizard.ts +0 -79
  345. package/src/revision.ts +0 -2
  346. package/src/splash-screen/NewPage.tsx +0 -294
  347. package/src/splash-screen/OpenPage.tsx +0 -113
  348. package/src/splash-screen/RecentPages.tsx +0 -123
  349. package/src/splash-screen/SectionHeadline.tsx +0 -21
  350. package/src/splash-screen/SplashScreen.tsx +0 -195
  351. package/src/tour/Tour.tsx +0 -566
  352. package/src/tour/default-tour.tsx +0 -301
  353. package/src/tour/preview-tour.tsx +0 -128
  354. package/src/types.ts +0 -335
  355. package/styles.css +0 -765
  356. package/tsconfig.build.json +0 -31
  357. package/tsconfig.json +0 -14
@@ -1,301 +0,0 @@
1
- import React from "react";
2
- import { useEditContext } from "../client/editContext";
3
-
4
- export function QuotaInfo() {
5
- const editContext = useEditContext();
6
- const quotaInfo = editContext?.quotaInfo;
7
-
8
- const formatQuotaPercentage = (used: number, limit: number) => {
9
- if (!limit || limit === 0 || limit === -1) return "No limit";
10
- if (!used && used !== 0) return "0%";
11
- if (isNaN(used) || isNaN(limit)) return "0%";
12
- const percentage = Math.round((used / limit) * 100);
13
- return `${percentage}%`;
14
- };
15
-
16
- const getQuotaStatus = (used: number, limit: number) => {
17
- if (!limit || limit === 0 || limit === -1) return "unlimited";
18
- if (!used && used !== 0) return "ok";
19
- if (isNaN(used) || isNaN(limit)) return "ok";
20
- const percentage = (used / limit) * 100;
21
- if (percentage >= 100) return "exceeded";
22
- if (percentage >= 90) return "warning";
23
- if (percentage >= 75) return "caution";
24
- return "ok";
25
- };
26
-
27
- const getProgressWidth = (used: number, limit: number) => {
28
- if (
29
- !limit ||
30
- limit === 0 ||
31
- limit === -1 ||
32
- !used ||
33
- isNaN(used) ||
34
- isNaN(limit)
35
- )
36
- return 0;
37
- return Math.min(100, (used / limit) * 100);
38
- };
39
-
40
- if (!quotaInfo) {
41
- return (
42
- <div className="space-y-6 p-4">
43
- <div className="rounded-lg border border-gray-200 bg-white p-4">
44
- <h2 className="mb-3 text-xl font-semibold text-gray-800">
45
- AI Usage Quota
46
- </h2>
47
- <p className="text-gray-600">No quota information available</p>
48
- </div>
49
- </div>
50
- );
51
- }
52
-
53
- return (
54
- <div className="space-y-6 p-4">
55
- {/* Token Usage Box */}
56
- <div className="rounded-lg border border-gray-200 bg-white p-4">
57
- <h3 className="mb-3 text-lg font-semibold text-gray-800">
58
- Token Usage
59
- </h3>
60
- <div className="space-y-4">
61
- {/* Total Token Usage */}
62
- <div>
63
- <div className="mb-2 flex items-center justify-between">
64
- <label className="text-sm font-medium text-gray-500">
65
- Total Usage
66
- </label>
67
- <span className="text-sm text-gray-600">
68
- {quotaInfo.usage.totalTokens.toLocaleString()} /{" "}
69
- {quotaInfo.limits.totalTokens &&
70
- quotaInfo.limits.totalTokens > 0
71
- ? quotaInfo.limits.totalTokens.toLocaleString()
72
- : "∞"}
73
- </span>
74
- </div>
75
- {quotaInfo.limits.totalTokens &&
76
- quotaInfo.limits.totalTokens > 0 && (
77
- <div className="h-2 w-full rounded-full bg-gray-200">
78
- <div
79
- className={`h-2 rounded-full ${
80
- getQuotaStatus(
81
- quotaInfo.usage.totalTokens,
82
- quotaInfo.limits.totalTokens,
83
- ) === "exceeded"
84
- ? "bg-red-500"
85
- : getQuotaStatus(
86
- quotaInfo.usage.totalTokens,
87
- quotaInfo.limits.totalTokens,
88
- ) === "warning"
89
- ? "bg-orange-500"
90
- : getQuotaStatus(
91
- quotaInfo.usage.totalTokens,
92
- quotaInfo.limits.totalTokens,
93
- ) === "caution"
94
- ? "bg-yellow-500"
95
- : "bg-green-500"
96
- }`}
97
- style={{
98
- width: `${getProgressWidth(quotaInfo.usage.totalTokens, quotaInfo.limits.totalTokens)}%`,
99
- }}
100
- ></div>
101
- </div>
102
- )}
103
- <p className="mt-1 text-xs text-gray-500">
104
- {formatQuotaPercentage(
105
- quotaInfo.usage.totalTokens,
106
- quotaInfo.limits.totalTokens,
107
- )}{" "}
108
- used
109
- </p>
110
- </div>
111
-
112
- {/* Daily Token Usage */}
113
- <div>
114
- <div className="mb-2 flex items-center justify-between">
115
- <label className="text-sm font-medium text-gray-500">
116
- Daily Usage
117
- </label>
118
- <span className="text-sm text-gray-600">
119
- {quotaInfo.usage.dailyTokens.toLocaleString()} /{" "}
120
- {quotaInfo.limits.dailyTokens &&
121
- quotaInfo.limits.dailyTokens > 0
122
- ? quotaInfo.limits.dailyTokens.toLocaleString()
123
- : "∞"}
124
- </span>
125
- </div>
126
- {quotaInfo.limits.dailyTokens &&
127
- quotaInfo.limits.dailyTokens > 0 && (
128
- <div className="h-2 w-full rounded-full bg-gray-200">
129
- <div
130
- className={`h-2 rounded-full ${
131
- getQuotaStatus(
132
- quotaInfo.usage.dailyTokens,
133
- quotaInfo.limits.dailyTokens,
134
- ) === "exceeded"
135
- ? "bg-red-500"
136
- : getQuotaStatus(
137
- quotaInfo.usage.dailyTokens,
138
- quotaInfo.limits.dailyTokens,
139
- ) === "warning"
140
- ? "bg-orange-500"
141
- : getQuotaStatus(
142
- quotaInfo.usage.dailyTokens,
143
- quotaInfo.limits.dailyTokens,
144
- ) === "caution"
145
- ? "bg-yellow-500"
146
- : "bg-green-500"
147
- }`}
148
- style={{
149
- width: `${getProgressWidth(quotaInfo.usage.dailyTokens, quotaInfo.limits.dailyTokens)}%`,
150
- }}
151
- ></div>
152
- </div>
153
- )}
154
- <p className="mt-1 text-xs text-gray-500">
155
- {quotaInfo.limits.dailyTokens === -1
156
- ? "No daily limit"
157
- : `${formatQuotaPercentage(
158
- quotaInfo.usage.dailyTokens,
159
- quotaInfo.limits.dailyTokens,
160
- )} used today`}
161
- </p>
162
- </div>
163
- </div>
164
- </div>
165
-
166
- {/* Image Usage Box */}
167
- <div className="rounded-lg border border-gray-200 bg-white p-4">
168
- <h3 className="mb-3 text-lg font-semibold text-gray-800">
169
- Image Usage
170
- </h3>
171
- <div className="space-y-4">
172
- {/* Total Image Usage */}
173
- <div>
174
- <div className="mb-2 flex items-center justify-between">
175
- <label className="text-sm font-medium text-gray-500">
176
- Total Usage
177
- </label>
178
- <span className="text-sm text-gray-600">
179
- {quotaInfo.usage.totalImages.toLocaleString()} /{" "}
180
- {quotaInfo.limits.totalImages &&
181
- quotaInfo.limits.totalImages > 0
182
- ? quotaInfo.limits.totalImages.toLocaleString()
183
- : "∞"}
184
- </span>
185
- </div>
186
- {quotaInfo.limits.totalImages &&
187
- quotaInfo.limits.totalImages > 0 && (
188
- <div className="h-2 w-full rounded-full bg-gray-200">
189
- <div
190
- className={`h-2 rounded-full ${
191
- getQuotaStatus(
192
- quotaInfo.usage.totalImages,
193
- quotaInfo.limits.totalImages,
194
- ) === "exceeded"
195
- ? "bg-red-500"
196
- : getQuotaStatus(
197
- quotaInfo.usage.totalImages,
198
- quotaInfo.limits.totalImages,
199
- ) === "warning"
200
- ? "bg-orange-500"
201
- : getQuotaStatus(
202
- quotaInfo.usage.totalImages,
203
- quotaInfo.limits.totalImages,
204
- ) === "caution"
205
- ? "bg-yellow-500"
206
- : "bg-green-500"
207
- }`}
208
- style={{
209
- width: `${getProgressWidth(quotaInfo.usage.totalImages, quotaInfo.limits.totalImages)}%`,
210
- }}
211
- ></div>
212
- </div>
213
- )}
214
- <p className="mt-1 text-xs text-gray-500">
215
- {formatQuotaPercentage(
216
- quotaInfo.usage.totalImages,
217
- quotaInfo.limits.totalImages,
218
- )}{" "}
219
- used
220
- </p>
221
- </div>
222
-
223
- {/* Daily Image Usage */}
224
- <div>
225
- <div className="mb-2 flex items-center justify-between">
226
- <label className="text-sm font-medium text-gray-500">
227
- Daily Usage
228
- </label>
229
- <span className="text-sm text-gray-600">
230
- {quotaInfo.usage.dailyImages.toLocaleString()} /{" "}
231
- {quotaInfo.limits.dailyImages &&
232
- quotaInfo.limits.dailyImages > 0
233
- ? quotaInfo.limits.dailyImages.toLocaleString()
234
- : "∞"}
235
- </span>
236
- </div>
237
- {quotaInfo.limits.dailyImages &&
238
- quotaInfo.limits.dailyImages > 0 && (
239
- <div className="h-2 w-full rounded-full bg-gray-200">
240
- <div
241
- className={`h-2 rounded-full ${
242
- getQuotaStatus(
243
- quotaInfo.usage.dailyImages,
244
- quotaInfo.limits.dailyImages,
245
- ) === "exceeded"
246
- ? "bg-red-500"
247
- : getQuotaStatus(
248
- quotaInfo.usage.dailyImages,
249
- quotaInfo.limits.dailyImages,
250
- ) === "warning"
251
- ? "bg-orange-500"
252
- : getQuotaStatus(
253
- quotaInfo.usage.dailyImages,
254
- quotaInfo.limits.dailyImages,
255
- ) === "caution"
256
- ? "bg-yellow-500"
257
- : "bg-green-500"
258
- }`}
259
- style={{
260
- width: `${getProgressWidth(quotaInfo.usage.dailyImages, quotaInfo.limits.dailyImages)}%`,
261
- }}
262
- ></div>
263
- </div>
264
- )}
265
- <p className="mt-1 text-xs text-gray-500">
266
- {quotaInfo.limits.dailyImages === -1
267
- ? "No daily limit"
268
- : `${formatQuotaPercentage(
269
- quotaInfo.usage.dailyImages,
270
- quotaInfo.limits.dailyImages,
271
- )} used today`}
272
- </p>
273
- </div>
274
- </div>
275
- </div>
276
-
277
- {/* Quota Status Summary */}
278
- <div className="rounded-lg border border-gray-200 bg-white p-4">
279
- <h4 className="mb-2 text-sm font-medium text-gray-700">Quota Status</h4>
280
- <div className="space-y-1 text-sm">
281
- {editContext?.isQuotaExceeded && (
282
- <p className="font-medium text-red-600">
283
- ⚠️ Quota limits have been exceeded
284
- </p>
285
- )}
286
- {editContext?.getQuotaWarningMessage &&
287
- editContext.getQuotaWarningMessage() &&
288
- !editContext.isQuotaExceeded && (
289
- <p className="text-orange-600">
290
- ⚠️ {editContext.getQuotaWarningMessage()}
291
- </p>
292
- )}
293
- {!editContext?.isQuotaExceeded &&
294
- !editContext?.getQuotaWarningMessage?.() && (
295
- <p className="text-green-600">✅ All quotas are within limits</p>
296
- )}
297
- </div>
298
- </div>
299
- </div>
300
- );
301
- }
@@ -1,113 +0,0 @@
1
- import { useEffect, useState } from "react";
2
- import { useRouter } from "next/navigation";
3
- import { usePathname, useSearchParams } from "next/navigation";
4
- import { useEditContext } from "../client/editContext";
5
- import { SimpleMenu } from "../ui/SimpleMenu";
6
- import { Splitter, SplitterPanel } from "../ui/Splitter";
7
-
8
- export function Status() {
9
- const editContext = useEditContext();
10
- const config = editContext?.configuration;
11
- const searchParams = useSearchParams();
12
- const urlActiveItemKey = searchParams.get("ccpanel");
13
-
14
- // Get the first available panel as default
15
- const defaultActiveItemKey = config?.controlCenter.groups?.flatMap(
16
- (x) => x.panels,
17
- )?.[0]?.id;
18
-
19
- const [activeItemKey, setActiveItemKey] = useState<string | null>(
20
- urlActiveItemKey || defaultActiveItemKey || null,
21
- );
22
-
23
- const router = useRouter();
24
- const pathname = usePathname();
25
-
26
- const updateUrl = (key: string | null) => {
27
- if (urlActiveItemKey === key) return;
28
-
29
- const current = new URLSearchParams(Array.from(searchParams.entries()));
30
-
31
- if (key) {
32
- current.set("ccpanel", key);
33
- } else {
34
- current.delete("ccpanel");
35
- }
36
- router.push(`${pathname}?${current.toString()}`, { scroll: false });
37
- };
38
-
39
- // Set default active item when config loads and no active item is set
40
- useEffect(() => {
41
- if (!activeItemKey && defaultActiveItemKey) {
42
- setActiveItemKey(defaultActiveItemKey);
43
- }
44
- }, [defaultActiveItemKey, activeItemKey]);
45
-
46
- const items = config?.controlCenter.groups.map((group) => {
47
- return {
48
- id: group.title,
49
- label: group.title,
50
- icon: group.icon,
51
- items:
52
- group.panels.map((panel) => ({
53
- id: panel.id,
54
- label: panel.title,
55
- })) || [],
56
- };
57
- });
58
-
59
- // Find the currently selected panel content
60
- const selectedPanel = config?.controlCenter.groups
61
- ?.flatMap((x) => x.panels)
62
- ?.find((item) => item.id === activeItemKey);
63
-
64
- if (!items) {
65
- return (
66
- <div className="flex h-full flex-col items-center justify-center">
67
- Loading...
68
- </div>
69
- );
70
- }
71
-
72
- const panels: SplitterPanel[] = [
73
- {
74
- name: "menu",
75
- defaultSize: 300,
76
- content: (
77
- <div className="h-full border-r border-gray-200">
78
- <SimpleMenu
79
- items={items}
80
- activeItemKey={activeItemKey}
81
- onItemClick={(item) => {
82
- setActiveItemKey(item.id);
83
- // Only update URL when user explicitly clicks on an item
84
- updateUrl(item.id);
85
- }}
86
- />
87
- </div>
88
- ),
89
- },
90
- {
91
- name: "content",
92
- defaultSize: "auto",
93
- content: (
94
- <div className="absolute inset-0 overflow-auto">
95
- {selectedPanel ? (
96
- selectedPanel.content
97
- ) : (
98
- <div className="flex h-full flex-col items-center justify-center text-gray-500">
99
- <i className="pi pi-info-circle mb-4 text-4xl"></i>
100
- <p>Select a panel from the menu to view its content</p>
101
- </div>
102
- )}
103
- </div>
104
- ),
105
- },
106
- ];
107
-
108
- return (
109
- <div className="h-full">
110
- <Splitter panels={panels} localStorageKey="control-center-splitter" />
111
- </div>
112
- );
113
- }
@@ -1,155 +0,0 @@
1
- import React, { useState, useEffect, useRef } from "react";
2
- import { useEditContext } from "../client/editContext";
3
- import { WebSocketMessage } from "../client/EditorClient";
4
-
5
- export function WebSocketMessages() {
6
- const editContext = useEditContext();
7
- const [expandedMessages, setExpandedMessages] = useState<Set<string>>(
8
- new Set(),
9
- );
10
- const [autoScroll, setAutoScroll] = useState(true);
11
- const messagesEndRef = useRef<HTMLDivElement>(null);
12
- const containerRef = useRef<HTMLDivElement>(null);
13
-
14
- // Get messages from central store
15
- const messages = editContext?.webSocketMessages || [];
16
-
17
- // Auto-scroll to bottom when new messages arrive
18
- useEffect(() => {
19
- if (autoScroll && messagesEndRef.current) {
20
- messagesEndRef.current.scrollIntoView({ behavior: "smooth" });
21
- }
22
- }, [messages, autoScroll]);
23
-
24
- const toggleExpanded = (messageId: string) => {
25
- setExpandedMessages((prev) => {
26
- const newSet = new Set(prev);
27
- if (newSet.has(messageId)) {
28
- newSet.delete(messageId);
29
- } else {
30
- newSet.add(messageId);
31
- }
32
- return newSet;
33
- });
34
- };
35
-
36
- const formatTimestamp = (isoString: string) => {
37
- const date = new Date(isoString);
38
- return (
39
- date.toLocaleTimeString() +
40
- "." +
41
- date.getMilliseconds().toString().padStart(3, "0")
42
- );
43
- };
44
-
45
- const getMessageTypeColor = (type: string) => {
46
- const colors: { [key: string]: string } = {
47
- "active-sessions": "bg-blue-100 text-blue-800",
48
- "item-deleted": "bg-red-100 text-red-800",
49
- "item-changed": "bg-yellow-100 text-yellow-800",
50
- "item-version-added": "bg-green-100 text-green-800",
51
- "edit-operation": "bg-purple-100 text-purple-800",
52
- "executing-field-action": "bg-orange-100 text-orange-800",
53
- "comment-updated": "bg-cyan-100 text-cyan-800",
54
- "comment-deleted": "bg-red-100 text-red-800",
55
- "suggested-edit-updated": "bg-indigo-100 text-indigo-800",
56
- "suggested-edit-deleted": "bg-red-100 text-red-800",
57
- "update-quota": "bg-gray-100 text-gray-800",
58
- };
59
- return colors[type] || "bg-gray-100 text-gray-800";
60
- };
61
-
62
- const clearMessages = () => {
63
- editContext?.clearWebSocketMessages();
64
- };
65
-
66
- const handleScroll = () => {
67
- if (!containerRef.current) return;
68
-
69
- const { scrollTop, scrollHeight, clientHeight } = containerRef.current;
70
- const isAtBottom = scrollHeight - scrollTop <= clientHeight + 10;
71
- setAutoScroll(isAtBottom);
72
- };
73
-
74
- return (
75
- <div className="flex h-full flex-col">
76
- {/* Header */}
77
- <div className="flex items-center justify-between border-b border-gray-200 p-4">
78
- <div className="flex items-center gap-2">
79
- <i className="pi pi-comments text-lg" />
80
- <h3 className="text-lg font-semibold">WebSocket Messages</h3>
81
- <span className="rounded bg-gray-100 px-2 py-1 text-sm text-gray-800">
82
- {messages.length}
83
- </span>
84
- </div>
85
- <div className="flex items-center gap-2">
86
- <label className="flex items-center gap-1 text-sm">
87
- <input
88
- type="checkbox"
89
- checked={autoScroll}
90
- onChange={(e) => setAutoScroll(e.target.checked)}
91
- className="rounded"
92
- />
93
- Auto-scroll
94
- </label>
95
- <button
96
- onClick={clearMessages}
97
- className="rounded bg-red-500 px-3 py-1 text-sm text-white hover:bg-red-600"
98
- >
99
- Clear
100
- </button>
101
- </div>
102
- </div>
103
-
104
- {/* Messages List */}
105
- <div
106
- ref={containerRef}
107
- className="flex-1 space-y-2 overflow-y-auto p-4"
108
- onScroll={handleScroll}
109
- >
110
- {messages.length === 0 ? (
111
- <div className="py-8 text-center text-gray-500">
112
- No WebSocket messages received yet
113
- </div>
114
- ) : (
115
- messages.map((message) => (
116
- <div key={message.id} className="rounded-lg border border-gray-200">
117
- <div
118
- className="flex cursor-pointer items-center justify-between p-3 hover:bg-gray-50"
119
- onClick={() => toggleExpanded(message.id)}
120
- >
121
- <div className="flex min-w-0 flex-1 items-center gap-3">
122
- <span className="font-mono text-xs text-gray-500">
123
- {formatTimestamp(message.timestamp)}
124
- </span>
125
- <span
126
- className={`rounded px-2 py-1 text-xs font-medium ${getMessageTypeColor(message.type)}`}
127
- >
128
- {message.type}
129
- </span>
130
- <span className="truncate text-sm text-gray-600">
131
- {typeof message.payload === "object"
132
- ? Object.keys(message.payload).join(", ")
133
- : String(message.payload)}
134
- </span>
135
- </div>
136
- <i
137
- className={`pi ${expandedMessages.has(message.id) ? "pi-chevron-up" : "pi-chevron-down"} text-gray-400`}
138
- />
139
- </div>
140
-
141
- {expandedMessages.has(message.id) && (
142
- <div className="border-t border-gray-200 bg-gray-50 p-3">
143
- <pre className="overflow-x-auto font-mono text-xs break-words whitespace-pre-wrap">
144
- {message.rawMessage}
145
- </pre>
146
- </div>
147
- )}
148
- </div>
149
- ))
150
- )}
151
- <div ref={messagesEndRef} />
152
- </div>
153
- </div>
154
- );
155
- }
@@ -1,63 +0,0 @@
1
- import { EditorWarning } from "../EditorWarning";
2
- import { EditorWarningProps } from "../EditorWarnings";
3
- import { useEditContext } from "../client/editContext";
4
- import { ItemDescriptor } from "../pageModel";
5
-
6
- export function ItemLocked({ item }: EditorWarningProps) {
7
- if (!item.canLock) return;
8
- var editContext = useEditContext();
9
- if (!editContext) return;
10
- if (item.hasLock) {
11
- return (
12
- <EditorWarning title="Item locked" severity="warning">
13
- <button
14
- onClick={() => {
15
- const items: ItemDescriptor[] = [item];
16
- editContext!.operations.unlockItems(items);
17
- }}
18
- >
19
- Release lock
20
- </button>
21
- </EditorWarning>
22
- );
23
- }
24
- if (item.lockedBy == null) {
25
- return (
26
- <EditorWarning title="Item is locked" severity="warning">
27
- <div>Locked by {item.lockedBy}</div>
28
- {/* {item.canLock && (
29
- <button
30
- onClick={() => {
31
- const items: ItemDescriptor[] = [item];
32
- if ((item as ComponentData).linkedComponentItem)
33
- items.push((item as ComponentData).linkedComponentItem);
34
-
35
- editContext!.lockItems(items);
36
- }}
37
- >
38
- Grab lock
39
- </button>
40
- )} */}
41
- </EditorWarning>
42
- );
43
- }
44
- // else {
45
- // return (
46
- // <EditorWarning title="Item not locked" severity="warning">
47
- // {item.canLock && (
48
- // <button
49
- // onClick={() => {
50
- // const items: ItemDescriptor[] = [item];
51
- // if ((item as ComponentData).linkedComponentItem)
52
- // items.push((item as ComponentData).linkedComponentItem);
53
-
54
- // editContext!.lockItems(items);
55
- // }}
56
- // >
57
- // Lock item
58
- // </button>
59
- // )}
60
- // </EditorWarning>
61
- // );
62
- // }
63
- }
@@ -1,22 +0,0 @@
1
- import { EditorWarning } from "../EditorWarning";
2
- import { EditorWarningProps } from "../EditorWarnings";
3
- import { useEditContext } from "../client/editContext";
4
-
5
- export function NoWriteLanguageAccess({ item }: EditorWarningProps) {
6
- var editContext = useEditContext();
7
- if (!editContext) return;
8
- if (!item.canWriteItem) return;
9
- if (!item.canWriteLanguage) {
10
- return (
11
- <EditorWarning
12
- title="You dont have language write access."
13
- severity="warning"
14
- >
15
- <p>
16
- You can't edit this item because you don't have write access for
17
- language {editContext.page?.item.language}.
18
- </p>
19
- </EditorWarning>
20
- );
21
- }
22
- }
@@ -1,23 +0,0 @@
1
- import { EditorWarning } from "../EditorWarning";
2
- import { EditorWarningProps } from "../EditorWarnings";
3
- import { useEditContext } from "../client/editContext";
4
-
5
- export function NoWorkflowWriteAccess({ item }: EditorWarningProps) {
6
- var editContext = useEditContext();
7
- if (!editContext) return;
8
- if (!item.canWriteItem || !item.canWriteLanguage) return;
9
- if (!item.canWriteWorkflow) {
10
- return (
11
- <EditorWarning
12
- title="You dont have write access in the current workflow state."
13
- severity="warning"
14
- >
15
- <p>
16
- The item is in the workflow state{" "}
17
- <span className="font-bold">{item.workflowState}</span> which
18
- prevents you from editing.
19
- </p>
20
- </EditorWarning>
21
- );
22
- }
23
- }