@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,259 +0,0 @@
1
- import { Splitter, SplitterPanel } from "../../editor/ui/Splitter";
2
-
3
- import { FullItem, ItemDescriptor } from "../../editor/pageModel";
4
- import { useEditContext } from "../../editor/client/editContext";
5
-
6
- import { useEffect, useState } from "react";
7
- import { StepComponentProps } from "../../config/types";
8
- import { PageViewer } from "../../editor/page-viewer/PageViewer";
9
-
10
- import { useDebouncedCallback } from "use-debounce";
11
- import { getChildren } from "../../editor/services/contentService";
12
- import { ActionButton } from "../../components/ActionButton";
13
- import Generate from "./Generate";
14
- import { usePageCreator } from "./usePageCreator";
15
-
16
- export function BuildPageStep({
17
- data,
18
- setData,
19
- parentItem,
20
- wizard,
21
- setStepCompleted,
22
- }: StepComponentProps) {
23
- const editContext = useEditContext();
24
-
25
- const [createdPageDescriptor, setCreatedPageDescriptor] =
26
- useState<ItemDescriptor>();
27
- const [pageLoaded, setPageLoaded] = useState(false);
28
-
29
- const [fullParentItem, setFullParentItem] = useState<FullItem>();
30
- const [isBuilding, setIsBuilding] = useState(false);
31
-
32
- const [validationMessage, setValidationMessage] = useState<string>();
33
-
34
- useEffect(() => {
35
- if (
36
- createdPageDescriptor &&
37
- createdPageDescriptor.id === editContext?.page?.item?.descriptor.id
38
- )
39
- setPageLoaded(true);
40
- }, [editContext?.page]);
41
-
42
- useEffect(() => {
43
- const loadParentItem = async () => {
44
- if (!parentItem) return;
45
- const item = await editContext?.itemsRepository.getItem(parentItem);
46
- setFullParentItem(item);
47
- };
48
- loadParentItem();
49
- }, [parentItem]);
50
-
51
- useEffect(() => {
52
- const buildComponents = async () => {
53
- try {
54
- console.log(
55
- "Building components",
56
- createdPageDescriptor,
57
- editContext?.page,
58
- );
59
- // Recursively create components from page model
60
- if (pageModel.components && pageModel.components.length > 0) {
61
- await pageCreator.createComponentsRecursively(
62
- pageModel.components,
63
- "root",
64
- );
65
- }
66
- editContext?.requestRefresh();
67
- console.log(
68
- "Components built",
69
- createdPageDescriptor,
70
- editContext?.page,
71
- );
72
- } finally {
73
- setIsBuilding(false);
74
- }
75
- };
76
- if (pageLoaded) {
77
- buildComponents();
78
- }
79
- }, [pageLoaded]);
80
-
81
- // Initialize pageModel if it doesn't exist
82
- const pageModel = data.pageModel || {
83
- components: [],
84
- name: "",
85
- metaDescription: "",
86
- };
87
-
88
- // Handle input changes
89
- const handleInputChange = (field: keyof typeof pageModel, value: string) => {
90
- const updatedPageModel = {
91
- ...pageModel,
92
- [field]: value,
93
- };
94
-
95
- setData({
96
- ...data,
97
- pageModel: updatedPageModel,
98
- });
99
- };
100
-
101
- const checkName = async () => {
102
- if (!parentItem) return;
103
- let valid: boolean =
104
- !!wizard.templateId && pageModel.name.trim().length >= 3;
105
- if (valid) {
106
- const children = await getChildren(
107
- parentItem.id,
108
- editContext?.sessionId ?? "",
109
- [],
110
- false,
111
- editContext?.contentEditorItem?.language || "en",
112
- );
113
- if (
114
- children.find(
115
- (x) =>
116
- x.name.toLocaleLowerCase() ===
117
- pageModel.name.trim().toLocaleLowerCase(),
118
- )
119
- ) {
120
- valid = false;
121
- setValidationMessage("A page with this name already exists.");
122
- }
123
- } else {
124
- if (pageModel.name.trim().length > 0 && pageModel.name.trim().length < 3)
125
- setValidationMessage("Name is too short.");
126
- else setValidationMessage(undefined);
127
- }
128
-
129
- if (valid) setValidationMessage(undefined);
130
- return valid;
131
- };
132
-
133
- const checkNameValidDebounced = useDebouncedCallback(
134
- async () => checkName(),
135
- 500,
136
- );
137
-
138
- useEffect(() => {
139
- checkNameValidDebounced();
140
- }, [pageModel.name]);
141
-
142
- const createPage = () => {
143
- setTimeout(async () => {
144
- if (!editContext || !parentItem) return;
145
- try {
146
- if (!(await checkName())) return;
147
- setIsBuilding(true);
148
- const result = await editContext.operations.createItem(
149
- parentItem,
150
- wizard.templateId,
151
- pageModel.name,
152
- );
153
- if (!result) return;
154
- editContext?.loadItem(result, { addToBrowseHistory: true });
155
-
156
- setCreatedPageDescriptor(result);
157
-
158
- console.log("Page created", result, "Page model", pageModel);
159
- setStepCompleted(true);
160
- } catch (error) {
161
- console.error("Error creating page", error);
162
- setIsBuilding(false);
163
- }
164
- }, 1);
165
- };
166
-
167
- const pageCreator = usePageCreator(
168
- createdPageDescriptor,
169
- wizard,
170
- (pageModel) => setData({ ...data, pageModel }),
171
- );
172
-
173
- const settingsPanel: SplitterPanel = {
174
- name: "settings",
175
- defaultSize: 450,
176
- collapsible: false,
177
- content: (
178
- <div className="pr-6">
179
- <div className="mb-4">
180
- <div className="mb-1 text-sm font-medium">Target Parent Item</div>
181
- <div className="mb-4 break-after-all text-xs">
182
- {fullParentItem?.path}
183
- </div>
184
- </div>
185
- <div className="mb-4">
186
- <label htmlFor="pageName" className="mb-1 block text-sm font-medium">
187
- Page Name
188
- </label>
189
- <input
190
- id="pageName"
191
- type="text"
192
- className="w-full rounded border p-2 text-sm"
193
- value={pageModel.name}
194
- onChange={(e) => handleInputChange("name", e.target.value)}
195
- placeholder="Enter page name"
196
- />
197
- {validationMessage && (
198
- <div className="mt-2 text-sm text-red-500">{validationMessage}</div>
199
- )}
200
- </div>
201
-
202
- <div className="mb-4">
203
- <label
204
- htmlFor="metaDescription"
205
- className="mb-1 block text-sm font-medium"
206
- >
207
- Meta Description
208
- </label>
209
- <textarea
210
- id="metaDescription"
211
- className="min-h-[100px] w-full rounded border p-2 text-sm"
212
- value={pageModel.metaDescription}
213
- onChange={(e) =>
214
- handleInputChange("metaDescription", e.target.value)
215
- }
216
- placeholder="Enter meta description"
217
- />
218
- </div>
219
- <ActionButton
220
- disabled={isBuilding || !!validationMessage}
221
- className="w-full flex-1"
222
- onClick={() => {
223
- createPage();
224
- }}
225
- isLoading={isBuilding}
226
- loadingText="Working"
227
- >
228
- Create Page
229
- </ActionButton>
230
- </div>
231
- ),
232
- };
233
-
234
- const contentPanel: SplitterPanel = {
235
- name: "content",
236
- defaultSize: "auto",
237
- collapsible: false,
238
- content: (
239
- <>
240
- <div className={pageLoaded ? "h-full" : "h-0"}>
241
- <PageViewer
242
- name="single"
243
- compareView={false}
244
- showFormEditor={false}
245
- followEditsDefault={true}
246
- pageViewContext={editContext!.pageView}
247
- />
248
- </div>
249
- {isBuilding && !pageLoaded && (
250
- <div className="flex h-full items-center justify-center">
251
- <Generate title="Building page..." />
252
- </div>
253
- )}
254
- </>
255
- ),
256
- };
257
-
258
- return <Splitter panels={[settingsPanel, contentPanel]}></Splitter>;
259
- }
@@ -1,296 +0,0 @@
1
- import { InputText } from "primereact/inputtext";
2
- import { useEffect, useRef, useState } from "react";
3
- import { WizardData } from "../PageWizard";
4
-
5
- import { StepComponentProps } from "../../config/types";
6
- import { ActionButton } from "../../components/ActionButton";
7
- import { UploadIcon, DocumentIcon } from "../../editor/ui/Icons";
8
- import { Spinner } from "../../editor/ui/Spinner";
9
- import { Card } from "../../components/ui/card";
10
- import { Button } from "../../components/ui/button";
11
- import { LinkIcon } from "lucide-react";
12
- import { InputTextarea } from "primereact/inputtextarea";
13
-
14
- export function CollectStep({
15
- step,
16
- data,
17
- setData,
18
- setStepCompleted,
19
- }: StepComponentProps) {
20
- const [isUploading, setIsUploading] = useState(false);
21
- const [isScraping, setIsScraping] = useState(false);
22
- const [error, setError] = useState<string | null>(null);
23
- const [scrapeError, setScrapeError] = useState<string | null>(null);
24
- const [scrapeUrl, setScrapeUrl] = useState<string | null>(null);
25
- const fileInputRef = useRef<HTMLInputElement>(null);
26
-
27
- // Extract configuration from step
28
- const enableUpload = step?.fields.enableUpload === "1";
29
- const enableScrape = step?.fields.enableScrape === "1";
30
- const enableText = step?.fields.enableText === "1";
31
-
32
- const uploadTitle = step?.fields.uploadTitle || "Upload a file (optional)";
33
- const uploadDescription =
34
- step?.fields.uploadDescription || "Upload a file to the page";
35
-
36
- const scrapeTitle =
37
- step?.fields.scrapeTitle || "Scrape page from URL (optional)";
38
- const scrapeDescription =
39
- step?.fields.scrapeDescription ||
40
- "Only scrape websites you have permission to access. You are responsible for complying with the website's terms of service and all applicable laws.";
41
-
42
- const textTitle = step?.fields.textTitle || "Text";
43
- const textDescription =
44
- step?.fields.textDescription ||
45
- "Provide the text you want to use for the page";
46
-
47
- const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {
48
- e.preventDefault();
49
- e.stopPropagation();
50
-
51
- if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {
52
- uploadFile(e.dataTransfer.files[0]!);
53
- setError(null);
54
- }
55
- };
56
-
57
- useEffect(() => {
58
- if (data.htmlContent) {
59
- setStepCompleted(true);
60
- }
61
- }, [data.htmlContent]);
62
-
63
- const uploadFile = async (file: File) => {
64
- if (!file) {
65
- setError("Please select a file first");
66
- return;
67
- }
68
-
69
- try {
70
- setIsUploading(true);
71
- setError(null);
72
-
73
- const formData = new FormData();
74
- formData.append("uploadedFile", file);
75
-
76
- const response = await fetch("/alpaca/editor/page-wizard/convertFile", {
77
- method: "POST",
78
- body: formData,
79
- });
80
-
81
- if (!response.ok) {
82
- throw new Error(
83
- `Upload failed: ${response.status} ${response.statusText}`,
84
- );
85
- }
86
-
87
- const htmlContent = await response.text();
88
- setData((prev: WizardData) => ({
89
- ...prev,
90
- htmlContent: htmlContent,
91
- }));
92
- } catch (err) {
93
- setError(err instanceof Error ? err.message : "Unknown error occurred");
94
- } finally {
95
- setIsUploading(false);
96
- }
97
- };
98
-
99
- const triggerFileInput = () => {
100
- fileInputRef.current ? (fileInputRef.current.value = "") : "";
101
-
102
- fileInputRef.current?.click();
103
- };
104
-
105
- const handleScrape = async (e: React.FormEvent) => {
106
- e.preventDefault();
107
-
108
- try {
109
- setScrapeError(null);
110
-
111
- if (!scrapeUrl) {
112
- setScrapeError("Please enter a URL first");
113
- return;
114
- }
115
-
116
- setIsScraping(true);
117
- const response = await fetch("/alpaca/editor/page-wizard/scrape", {
118
- method: "POST",
119
- body: JSON.stringify({ url: scrapeUrl }),
120
- headers: {
121
- "Content-Type": "application/json",
122
- },
123
- });
124
-
125
- if (!response.ok) {
126
- throw new Error(
127
- `Scraping failed: ${response.status} ${response.statusText}`,
128
- );
129
- }
130
-
131
- const htmlContent = await response.text();
132
-
133
- setData((prev: WizardData) => ({
134
- ...prev,
135
- htmlContent: htmlContent,
136
- }));
137
- } catch (err) {
138
- setScrapeError(
139
- err instanceof Error ? err.message : "Unknown error occurred",
140
- );
141
- } finally {
142
- setIsScraping(false);
143
- }
144
- };
145
-
146
- return (
147
- <div className="grid grid-cols-1 gap-4 md:grid-cols-2">
148
- {enableUpload && (
149
- <Card
150
- icon={<UploadIcon className="text-theme-secondary" />}
151
- title={uploadTitle}
152
- collapsible="mobileOnly"
153
- defaultCollapsed="mobileOnly"
154
- description={uploadDescription}
155
- >
156
- {error && <div className="mt-2 text-sm text-red-500">{error}</div>}
157
- <div
158
- className={`flex flex-col items-center justify-center border border-dashed border-gray-300 p-8 ${
159
- isUploading ? "" : "bg-white"
160
- }`}
161
- onDrop={handleDrop}
162
- onDragOver={(e) => e.preventDefault()}
163
- >
164
- <div className="flex flex-col items-center justify-center gap-1 text-center text-sm">
165
- {!isUploading && (
166
- <svg
167
- width="49"
168
- height="48"
169
- viewBox="0 0 49 48"
170
- fill="none"
171
- xmlns="http://www.w3.org/2000/svg"
172
- >
173
- <rect
174
- x="0.666992"
175
- width="48"
176
- height="48"
177
- rx="24"
178
- fill="#F6EEFF"
179
- />
180
- <path
181
- d="M32.604 20.68C32.594 20.648 32.583 20.6167 32.571 20.586C32.5235 20.4775 32.4572 20.3783 32.375 20.293L26.375 14.293C26.2897 14.2108 26.1905 14.1445 26.082 14.097C26.052 14.083 26.02 14.075 25.988 14.064C25.9043 14.0356 25.8172 14.0185 25.729 14.013C25.707 14.011 25.688 14 25.667 14H18.667C17.564 14 16.667 14.897 16.667 16V32C16.667 33.103 17.564 34 18.667 34H30.667C31.77 34 32.667 33.103 32.667 32V21C32.667 20.979 32.656 20.96 32.654 20.938C32.6487 20.8502 32.6319 20.7634 32.604 20.68ZM29.253 20H26.667V17.414L29.253 20ZM18.667 32V16H24.667V21C24.667 21.2652 24.7723 21.5196 24.9599 21.7071C25.1474 21.8946 25.4018 22 25.667 22H30.667L30.669 32H18.667Z"
182
- fill="#9650FB"
183
- />
184
- </svg>
185
- )}
186
- {isUploading && <Spinner />}
187
- {!isUploading && (
188
- <>
189
- <input
190
- ref={fileInputRef}
191
- type="file"
192
- multiple
193
- accept=".pdf,.doc,.docx"
194
- style={{ display: "none" }}
195
- onChange={(e) => {
196
- const file = e.target.files?.[0];
197
- if (file) {
198
- uploadFile(file);
199
- }
200
- }}
201
- onDrop={handleDrop}
202
- disabled={isUploading}
203
- />
204
- <div className="flex items-center gap-1">
205
- <span
206
- className={`text-sm font-medium ${
207
- isUploading
208
- ? "text-gray-500"
209
- : "text-theme-secondary cursor-pointer underline"
210
- } `}
211
- onClick={triggerFileInput}
212
- >
213
- Click
214
- </span>
215
- or drag & drop to upload
216
- </div>
217
- </>
218
- )}
219
- </div>
220
- </div>
221
- </Card>
222
- )}
223
- {enableScrape && (
224
- <Card
225
- icon={<LinkIcon className="text-theme-secondary" />}
226
- title={scrapeTitle}
227
- description={scrapeDescription}
228
- collapsible="mobileOnly"
229
- defaultCollapsed="mobileOnly"
230
- >
231
- <div className="flex flex-col gap-2">
232
- <InputText
233
- type="text"
234
- className="rounded-md border border-gray-300 px-3 py-2"
235
- onChange={(e) => setScrapeUrl(e.target.value)}
236
- />
237
- {scrapeError && (
238
- <div className="mt-2 text-sm text-red-500">{scrapeError}</div>
239
- )}
240
- <div className="flex gap-2">
241
- <ActionButton
242
- type="submit"
243
- isLoading={isScraping}
244
- onClick={handleScrape}
245
- loadingText="Scraping..."
246
- >
247
- Scrape
248
- </ActionButton>
249
- </div>
250
- </div>
251
- </Card>
252
- )}
253
- {enableText && (
254
- <Card
255
- icon={<DocumentIcon className="text-theme-secondary" />}
256
- title={textTitle}
257
- description={textDescription}
258
- className={`${!enableUpload && !enableScrape ? "md:col-span-2" : enableUpload && enableScrape ? "md:col-span-2" : ""}`}
259
- >
260
- <InputTextarea
261
- className="border-theme-secondary max-h-full w-full text-sm"
262
- value={data.htmlContent}
263
- rows={20}
264
- onChange={(e) =>
265
- setData((prev: WizardData) => ({
266
- ...prev,
267
- htmlContent: e.target.value || "",
268
- }))
269
- }
270
- />
271
- {step.children && step.children.length > 0 && (
272
- <div>
273
- <div className="mt-2 mb-1 text-sm font-semibold">Examples:</div>
274
- <div className="flex flex-wrap gap-2">
275
- {step.children.map((child) => (
276
- <Button
277
- variant="outline"
278
- key={child.id}
279
- onClick={() => {
280
- setData((prev: WizardData) => ({
281
- ...prev,
282
- htmlContent: child.fields.text,
283
- }));
284
- }}
285
- >
286
- {child.fields.title}
287
- </Button>
288
- ))}
289
- </div>
290
- </div>
291
- )}
292
- </Card>
293
- )}
294
- </div>
295
- );
296
- }