@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,454 +0,0 @@
1
- import { Dispatch, SetStateAction, useEffect, useState, useRef } from "react";
2
- import { WizardStep } from "../PageWizard";
3
- import {
4
- PageSchema,
5
- SchemaComponent,
6
- SchemaPlaceholder,
7
- WizardData,
8
- } from "../PageWizard";
9
-
10
- // Component Type and Placeholder Selection UI
11
- export function ComponentTypeSelector({
12
- selectedComponentTypes,
13
- setSelectedComponentTypes,
14
- schema,
15
- data,
16
- setData,
17
- step,
18
- }: {
19
- selectedComponentTypes?: string[];
20
- setSelectedComponentTypes: Dispatch<SetStateAction<string[]>>;
21
- schema: PageSchema | string;
22
- data: WizardData;
23
- setData: (data: WizardData) => void;
24
- step: WizardStep;
25
- }) {
26
- const [availableComponentTypes, setAvailableComponentTypes] = useState<
27
- string[]
28
- >([]);
29
- const [preselectedTypes, setPreselectedTypes] = useState<string[]>([]);
30
- const [searchFilter, setSearchFilter] = useState<string>("");
31
-
32
- // Ensure selectedComponentTypes is always an array
33
- useEffect(() => {
34
- if (!selectedComponentTypes || !Array.isArray(selectedComponentTypes)) {
35
- setSelectedComponentTypes([]);
36
- }
37
- }, [selectedComponentTypes]);
38
-
39
- // Handle select all component types
40
- const handleSelectAllComponents = () => {
41
- setSelectedComponentTypes(availableComponentTypes);
42
- setData({
43
- ...data,
44
- selectedComponentTypes: availableComponentTypes,
45
- });
46
- };
47
-
48
- // Handle clear all component types
49
- const handleClearAllComponents = () => {
50
- setSelectedComponentTypes([]);
51
- setData({
52
- ...data,
53
- selectedComponentTypes: [],
54
- });
55
- };
56
-
57
- // Toggle component type selection
58
- const toggleComponentType = (type: string) => {
59
- if (!setSelectedComponentTypes) {
60
- console.error("setSelectedComponentTypes is not defined");
61
- return;
62
- }
63
-
64
- try {
65
- // Get the current selected types safely
66
- const currentSelected = Array.isArray(selectedComponentTypes)
67
- ? selectedComponentTypes
68
- : [];
69
-
70
- // Calculate the new selection
71
- const newSelected = currentSelected.includes(type)
72
- ? currentSelected.filter((t: string) => t !== type)
73
- : [...currentSelected, type];
74
-
75
- // Update the state
76
- setSelectedComponentTypes(newSelected);
77
-
78
- // Save selected types to wizard data
79
- setData({
80
- ...data,
81
- selectedComponentTypes: newSelected,
82
- });
83
- } catch (error) {
84
- console.error("Error in toggleComponentType:", error);
85
- }
86
- };
87
-
88
- // Filter available components by search term
89
- const filteredComponentTypes = availableComponentTypes.filter((type) =>
90
- type.toLowerCase().includes(searchFilter.toLowerCase()),
91
- );
92
-
93
- // Helper function to recursively extract component types
94
- const extractComponentTypes = (
95
- items: PageSchema | SchemaComponent[],
96
- ): string[] => {
97
- if (!items || !Array.isArray(items)) return [];
98
-
99
- let types: string[] = [];
100
-
101
- for (const item of items) {
102
- // Add the current component type if it exists
103
- if ("type" in item) {
104
- types.push(item.type);
105
- }
106
-
107
- // Process components in placeholders recursively
108
- if ("placeholders" in item && Array.isArray(item.placeholders)) {
109
- for (const placeholder of item.placeholders) {
110
- if (placeholder.components && Array.isArray(placeholder.components)) {
111
- types = [
112
- ...types,
113
- ...extractComponentTypes(placeholder.components),
114
- ];
115
- }
116
- }
117
- }
118
-
119
- // Process components directly (for top-level structure)
120
- if ("components" in item && Array.isArray(item.components)) {
121
- types = [...types, ...extractComponentTypes(item.components)];
122
- }
123
- }
124
-
125
- return types;
126
- };
127
-
128
- // Helper function to extract placeholders from the schema
129
- const extractPlaceholders = (
130
- items: PageSchema | SchemaComponent[],
131
- ): string[] => {
132
- if (!items || !Array.isArray(items)) return [];
133
-
134
- let placeholders: string[] = [];
135
-
136
- for (const item of items) {
137
- // Add the current placeholder name if it exists
138
- if ("name" in item) {
139
- placeholders.push(item.name);
140
- }
141
-
142
- // Handle SchemaComponent objects
143
- if ("placeholders" in item && Array.isArray(item.placeholders)) {
144
- // Extract names from each placeholder
145
- item.placeholders.forEach((placeholder: SchemaPlaceholder) => {
146
- placeholders.push(placeholder.name);
147
-
148
- // Recursively process components in this placeholder
149
- if (placeholder.components && Array.isArray(placeholder.components)) {
150
- placeholders = [
151
- ...placeholders,
152
- ...extractPlaceholders(placeholder.components),
153
- ];
154
- }
155
- });
156
- }
157
-
158
- // Handle SchemaPlaceholder objects
159
- if ("components" in item && Array.isArray(item.components)) {
160
- placeholders = [
161
- ...placeholders,
162
- ...extractPlaceholders(item.components),
163
- ];
164
- }
165
- }
166
-
167
- return placeholders;
168
- };
169
-
170
- // Initialize selections based on data or preselected values
171
- const initializeSelections = (
172
- uniqueTypes: string[],
173
- stepPreselectedTypes: string[],
174
- ) => {
175
- // Initialize selected types from data (parent component should have already initialized this)
176
- if (
177
- data.selectedComponentTypes &&
178
- Array.isArray(data.selectedComponentTypes)
179
- ) {
180
- // Filter out any types that are no longer available
181
- const validSelectedTypes = data.selectedComponentTypes.filter((type) =>
182
- uniqueTypes.includes(type),
183
- );
184
- setSelectedComponentTypes(validSelectedTypes);
185
- } else {
186
- // Fallback initialization if parent didn't handle it
187
- const initialSelection =
188
- stepPreselectedTypes.length > 0 ? stepPreselectedTypes : uniqueTypes;
189
- setSelectedComponentTypes(initialSelection);
190
- setData({
191
- ...data,
192
- selectedComponentTypes: initialSelection,
193
- });
194
- }
195
- };
196
-
197
- // Extract component types and placeholders from wizard schema when available
198
- useEffect(() => {
199
- if (schema) {
200
- try {
201
- // Parse schema if it's a string
202
- schema =
203
- typeof schema === "string"
204
- ? (JSON.parse(schema) as PageSchema)
205
- : schema;
206
-
207
- // Extract component types
208
- const componentTypes = extractComponentTypes(schema);
209
-
210
- // Remove duplicates and sort alphabetically
211
- const uniqueTypes = Array.from(
212
- new Set(componentTypes),
213
- ).sort() as string[];
214
-
215
- setAvailableComponentTypes(uniqueTypes);
216
-
217
- // Parse preselected components from step if available
218
- let stepPreselectedTypes: string[] = [];
219
- if (step.fields["preselectedComponents"]) {
220
- // Split by comma or newline and trim whitespace
221
- stepPreselectedTypes = step.fields["preselectedComponents"]
222
- .split(/[,\n\r]+/)
223
- .map((type: string) => type.trim())
224
- .filter((type: string) => type && uniqueTypes.includes(type)); // Only include valid types
225
- }
226
-
227
- // Set preselected types for UI differentiation
228
- setPreselectedTypes(stepPreselectedTypes);
229
-
230
- // Parse preselected placeholders from step if available
231
-
232
- // Initialize component types and placeholders
233
- initializeSelections(uniqueTypes, stepPreselectedTypes);
234
- } catch (error) {
235
- console.error("Error processing schema:", error);
236
- }
237
- }
238
- }, [schema, step]);
239
-
240
- return (
241
- <div className="space-y-4">
242
- <div className="mb-2">
243
- <input
244
- type="text"
245
- value={searchFilter}
246
- onChange={(e) => setSearchFilter(e.target.value)}
247
- placeholder="Search components..."
248
- className="focus:ring-theme-secondary w-full rounded border border-gray-300 px-3 py-1 text-sm focus:ring-1 focus:outline-none"
249
- />
250
- </div>
251
-
252
- <div className="mb-3 flex flex-col gap-3 py-2">
253
- {/* Component Types Section */}
254
- <div className="min-w-0 flex-1 rounded">
255
- <div className="mb-2 flex items-center justify-between">
256
- <h4 className="text-sm font-bold">Component Types</h4>
257
- </div>
258
-
259
- {/* Selected component tags */}
260
- {/* <div className="mb-2">
261
- <div className="mb-2 flex flex-wrap gap-1">
262
- {selectedComponentTypes &&
263
- Array.isArray(selectedComponentTypes) &&
264
- selectedComponentTypes.length > 0 ? (
265
- selectedComponentTypes.map((type) => (
266
- <div
267
- key={type}
268
- className={`flex items-center rounded-full px-2 py-1 text-xs ${
269
- preselectedTypes.includes(type)
270
- ? "bg-green-100 text-green-800"
271
- : "bg-blue-100 text-blue-800"
272
- }`}
273
- >
274
- {type}
275
- <button
276
- onClick={() => toggleComponentType(type)}
277
- className={`ml-1 ${
278
- preselectedTypes.includes(type)
279
- ? "text-green-600 hover:text-green-800"
280
- : "text-blue-600 hover:text-blue-800"
281
- }`}
282
- aria-label={`Remove ${type}`}
283
- >
284
- ×
285
- </button>
286
- </div>
287
- ))
288
- ) : (
289
- <div className="text-xs text-gray-500 italic">
290
- No component types selected
291
- </div>
292
- )}
293
- </div>
294
- </div> */}
295
-
296
- {/* Component list */}
297
- <div
298
- className={`mb-2 max-h-96 space-y-2 overflow-y-auto ${
299
- filteredComponentTypes.length === 0
300
- ? "flex items-center justify-center"
301
- : ""
302
- }`}
303
- >
304
- {filteredComponentTypes.length > 0 ? (
305
- filteredComponentTypes.map((type) => {
306
- const isSelected =
307
- selectedComponentTypes &&
308
- Array.isArray(selectedComponentTypes) &&
309
- selectedComponentTypes.includes(type);
310
- const isPreselected = preselectedTypes.includes(type);
311
-
312
- // Generate a description for each component type
313
- const getComponentDescription = (componentType: string) => {
314
- return `${componentType} component for your page layout`;
315
- };
316
-
317
- return (
318
- <div
319
- key={type}
320
- className={`relative cursor-pointer rounded-lg border p-2 transition-all ${
321
- isSelected
322
- ? "border-theme-secondary bg-theme-secondary-50"
323
- : "border-gray-200 bg-white hover:border-gray-300 hover:bg-gray-50"
324
- }`}
325
- onClick={() => toggleComponentType(type)}
326
- >
327
- <div className="flex items-start justify-between">
328
- <div className="min-w-0 flex-1">
329
- <div className="mb-1 flex items-center gap-2">
330
- <div className="flex items-center gap-2">
331
- <h3 className="text-sm text-gray-900">{type}</h3>
332
- {isPreselected && (
333
- <span
334
- className="text-theme-secondary text-sm"
335
- title="Recommended by template"
336
- >
337
-
338
- </span>
339
- )}
340
- </div>
341
- </div>
342
- {/* <p className="text-sm leading-relaxed text-gray-600">
343
- {getComponentDescription(type)}
344
- </p> */}
345
- </div>
346
- <div className="ml-4 flex-shrink-0">
347
- <div
348
- className={`flex h-6 w-6 items-center justify-center rounded-full border-2 ${
349
- isSelected
350
- ? "border-theme-secondary bg-theme-secondary"
351
- : "border-gray-300 bg-white"
352
- }`}
353
- >
354
- {isSelected && (
355
- <svg
356
- className="h-3 w-3 text-white"
357
- fill="currentColor"
358
- viewBox="0 0 20 20"
359
- >
360
- <path
361
- fillRule="evenodd"
362
- d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z"
363
- clipRule="evenodd"
364
- />
365
- </svg>
366
- )}
367
- </div>
368
- </div>
369
- </div>
370
- </div>
371
- );
372
- })
373
- ) : (
374
- <div className="p-8 text-center text-gray-500">
375
- {searchFilter
376
- ? "No matching component types found"
377
- : "No component types available"}
378
- </div>
379
- )}
380
- </div>
381
-
382
- {/* Component type action buttons */}
383
- <div className="flex gap-1">
384
- <button
385
- onClick={handleSelectAllComponents}
386
- disabled={
387
- selectedComponentTypes &&
388
- Array.isArray(selectedComponentTypes) &&
389
- selectedComponentTypes.length === availableComponentTypes.length
390
- }
391
- className="flex-1 rounded bg-gray-200 px-2 py-1 text-xs text-gray-700 hover:bg-gray-300 disabled:cursor-not-allowed disabled:bg-gray-100 disabled:text-gray-400"
392
- >
393
- Select All
394
- </button>
395
- <button
396
- onClick={handleClearAllComponents}
397
- disabled={
398
- !selectedComponentTypes ||
399
- !Array.isArray(selectedComponentTypes) ||
400
- selectedComponentTypes.length === 0
401
- }
402
- className="flex-1 rounded bg-gray-200 px-2 py-1 text-xs text-gray-700 hover:bg-gray-300 disabled:cursor-not-allowed disabled:bg-gray-100 disabled:text-gray-400"
403
- >
404
- Clear All
405
- </button>
406
- </div>
407
-
408
- {/* Use recommended components button */}
409
- {preselectedTypes.length > 0 && (
410
- <div className="mt-2">
411
- <button
412
- onClick={() => {
413
- setSelectedComponentTypes(preselectedTypes);
414
- setData({
415
- ...data,
416
- selectedComponentTypes: preselectedTypes,
417
- });
418
- }}
419
- disabled={
420
- selectedComponentTypes &&
421
- Array.isArray(selectedComponentTypes) &&
422
- preselectedTypes.length === selectedComponentTypes.length &&
423
- preselectedTypes.every((type) =>
424
- selectedComponentTypes.includes(type),
425
- )
426
- }
427
- className="w-full rounded bg-green-500 px-2 py-1 text-xs text-white hover:bg-green-600 disabled:cursor-not-allowed disabled:bg-gray-100 disabled:text-gray-400"
428
- >
429
- Use Recommended Components
430
- </button>
431
- </div>
432
- )}
433
- </div>
434
- </div>
435
- </div>
436
- );
437
- }
438
-
439
- // Helper function to get summary for parent card
440
- export function getComponentTypeSelectorSummary(
441
- selectedComponentTypes?: string[],
442
- availableComponentTypes?: string[],
443
- ): string {
444
- if (!selectedComponentTypes || !Array.isArray(selectedComponentTypes)) {
445
- return "Configure what the AI will use to generate the layout";
446
- }
447
-
448
- if (selectedComponentTypes.length === 0) {
449
- return "No component types selected";
450
- }
451
-
452
- const total = availableComponentTypes?.length || 0;
453
- return `${selectedComponentTypes.length} of ${total} component types selected`;
454
- }
@@ -1,193 +0,0 @@
1
- import { useEditContext } from "../../editor/client/editContext";
2
- import { Thumbnail } from "../../editor/media-selector/Thumbnails";
3
- import { SimpleIconButton } from "../../editor/ui/SimpleIconButton";
4
- import {
5
- WizardField,
6
- WizardPageComponent,
7
- WizardPageModel,
8
- } from "../PageWizard";
9
- import { FieldEditor } from "./FieldEditor";
10
- import React from "react";
11
-
12
- export function Components({
13
- pageModel,
14
- onFieldEdited,
15
- onComponentRemoved,
16
- thumbnails,
17
- setInternalState,
18
- }: {
19
- pageModel?: WizardPageModel;
20
- onFieldEdited: () => void;
21
- onComponentRemoved: (component: WizardPageComponent) => void;
22
- thumbnails: Thumbnail[];
23
- setInternalState: (state: any) => void;
24
- }) {
25
- const editContext = useEditContext();
26
- if (!pageModel) return <div>No layout generated yet</div>;
27
-
28
- // Simplified component to only render component hierarchy
29
- const SimpleLayoutItem = ({
30
- components,
31
- depth = 0,
32
- }: {
33
- components: WizardPageComponent[];
34
- depth?: number;
35
- }) => {
36
- if (!components) return null;
37
-
38
- // Generate a random pastel background color based on component type
39
- const getColorForType = (type: string) => {
40
- // Simple hash function to generate consistent colors for the same type
41
- const hash = type
42
- .split("")
43
- .reduce((acc, char) => acc + char.charCodeAt(0), 0);
44
- const hue = hash % 360;
45
- return `hsl(${hue}, 70%, 90%)`;
46
- };
47
-
48
- const getThumbnailUrl = (mediaId: string) => {
49
- if (!thumbnails) return;
50
- return thumbnails.find((thumbnail) => thumbnail.id === mediaId)?.thumbUrl;
51
- };
52
-
53
- const getImage = (field: WizardField) => {
54
- const url = getThumbnailUrl(field.value);
55
- if (url) {
56
- return <img src={url} alt={field.name} className="mb-2" />;
57
- }
58
- return field.value;
59
- };
60
-
61
- // Handle component with placeholders
62
- const renderComponent = (
63
- component: WizardPageComponent,
64
- collection: WizardPageComponent[]
65
- ) => {
66
- const indent = depth * 20;
67
- const componentType = component.type || "Unknown";
68
- const borderColor = component.type
69
- ? getColorForType(componentType)
70
- : "#f0f0f0";
71
-
72
- return (
73
- <div
74
- key={component.id}
75
- className="relative"
76
- style={{
77
- marginBottom: "8px",
78
- marginLeft: indent,
79
- }}
80
- >
81
- <div className="absolute top-0 right-0">
82
- <SimpleIconButton
83
- icon="pi pi-times"
84
- label="Remove"
85
- onClick={() => {
86
- // Remove component from its collection
87
- const index = collection.findIndex(
88
- (c) => c.id === component.id
89
- );
90
- if (index !== -1) {
91
- collection.splice(index, 1);
92
- }
93
- onComponentRemoved(component);
94
- }}
95
- />
96
- </div>
97
- <div
98
- className="mb-2 px-2 py-1 rounded-md bg-white border-2"
99
- style={{
100
- borderColor,
101
- }}
102
- >
103
- <div className="mb-2">
104
- <span className="text-gray-600">{component.type}</span>:{" "}
105
- {component.name}
106
- </div>
107
- <div className="text-xs text-gray-500">
108
- {component.fields?.map((field, index) =>
109
- field.type === "Picture" || field.type === "Image" ? (
110
- <div
111
- key={index}
112
- className="cursor-pointer"
113
- onClick={async () => {
114
- const currentImage =
115
- await editContext?.itemsRepository.getItem({
116
- id: field.value,
117
- language: "en",
118
- version: 1,
119
- });
120
- const selectedImageId = await editContext?.selectMedia({
121
- selectedIdPath: currentImage?.idPath || "",
122
- mode: "images",
123
- });
124
- if (selectedImageId) {
125
- const newImage =
126
- await editContext?.itemsRepository.getItem({
127
- id: selectedImageId,
128
- language: "en",
129
- version: 1,
130
- });
131
- const newThumb: Thumbnail = {
132
- id: newImage?.id || "",
133
- name: newImage?.name || "",
134
- thumbUrl: newImage?.thumbnail || "",
135
- previewUrl: newImage?.thumbnail || "",
136
- };
137
- field.value = selectedImageId;
138
- setInternalState((state: any) => ({
139
- ...state,
140
- thumbnails: [...(state.thumbnails || []), newThumb],
141
- }));
142
- onFieldEdited();
143
- }
144
- }}
145
- >
146
- <div className="font-bold text-gray-900">
147
- {field.name}:
148
- </div>
149
- <div>{getImage(field)}</div>
150
- </div>
151
- ) : (
152
- <FieldEditor
153
- key={index}
154
- field={field}
155
- onFieldEdited={onFieldEdited}
156
- />
157
- )
158
- )}
159
- </div>
160
- </div>
161
-
162
- {/* Recursively render child components in placeholders */}
163
- {component.children && (
164
- <SimpleLayoutItem
165
- components={component.children}
166
- depth={depth + 1}
167
- />
168
- )}
169
- </div>
170
- );
171
- };
172
-
173
- return components.map((component, index) => (
174
- <React.Fragment key={component.id || index}>
175
- {renderComponent(component, components)}
176
- </React.Fragment>
177
- ));
178
- };
179
-
180
- return (
181
- <>
182
- <div className="relative flex-1 w-full">
183
- <div className="overflow-y-auto inset-0 absolute">
184
- {pageModel ? (
185
- <SimpleLayoutItem components={pageModel.components} />
186
- ) : (
187
- <div>No layout generated yet</div>
188
- )}
189
- </div>
190
- </div>
191
- </>
192
- );
193
- }