camox 0.44.0 → 0.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (407) hide show
  1. package/dist/components/AuthGate.js +0 -6
  2. package/dist/components/DeviceSelector.js +96 -0
  3. package/dist/components/PlatformLabel.js +20 -24
  4. package/dist/core/components/lexical/HighlightNode.js +1 -1
  5. package/dist/core/components/lexical/InlineContentEditable.js +15 -19
  6. package/dist/core/components/lexical/InlineLexicalEditor.js +54 -74
  7. package/dist/core/components/lexical/InlineStylesPlugin.js +53 -53
  8. package/dist/core/components/lexical/MaxLengthPlugin.js +59 -0
  9. package/dist/core/components/lexical/SelectionBroadcaster.js +53 -54
  10. package/dist/core/components/lexical/SidebarLexicalEditor.js +322 -229
  11. package/dist/core/components/lexical/SummaryToggleGuard.js +42 -0
  12. package/dist/core/components/lexical/TextLinkPopover.js +169 -180
  13. package/dist/core/createApp.d.ts +241 -312
  14. package/dist/core/createApp.js +123 -29
  15. package/dist/core/createBlock.d.ts +5 -5
  16. package/dist/core/createBlock.js +385 -152
  17. package/dist/core/createCollection.d.ts +55 -0
  18. package/dist/core/createCollection.js +93 -0
  19. package/dist/core/createLayout.d.ts +197 -61
  20. package/dist/core/createLayout.js +114 -56
  21. package/dist/core/defineDocument.d.ts +3 -5
  22. package/dist/core/derivedRoutes.js +49 -1
  23. package/dist/core/dom.d.ts +13 -4
  24. package/dist/core/dom.js +44 -1
  25. package/dist/core/editing/BlockEditingRuntime.d.ts +16 -0
  26. package/dist/core/editing/BlockEditingRuntime.js +6 -15
  27. package/dist/core/editing/CompleteBlockEditingRuntime.js +28 -23
  28. package/dist/core/editing/createEditableBlock.d.ts +754 -633
  29. package/dist/core/editing/createEditableBlock.js +2113 -1066
  30. package/dist/core/editing/referenceWrites.js +51 -0
  31. package/dist/core/editing/useLatestRecord.js +90 -0
  32. package/dist/core/hooks/useArtifactHost.js +139 -0
  33. package/dist/core/hooks/useFieldSelection.js +43 -18
  34. package/dist/core/hooks/useIsEditable.js +12 -10
  35. package/dist/core/hooks/useOverlayMessage.js +15 -19
  36. package/dist/core/lib/artifact.d.ts +21 -0
  37. package/dist/core/lib/artifact.js +154 -0
  38. package/dist/core/lib/artifactColors.js +123 -0
  39. package/dist/core/lib/artifactData.d.ts +1 -0
  40. package/dist/core/lib/artifactData.js +131 -0
  41. package/dist/core/lib/artifactHost.js +205 -0
  42. package/dist/core/lib/artifactRuntime.js +36 -0
  43. package/dist/core/lib/artifactTheme.js +57 -0
  44. package/dist/core/lib/contentType.d.ts +302 -106
  45. package/dist/core/lib/contentType.js +201 -173
  46. package/dist/core/lib/fieldTypes.js +3 -0
  47. package/dist/core/lib/iconTypes.d.ts +3 -3
  48. package/dist/core/lib/icons.d.ts +4 -4
  49. package/dist/core/lib/icons.js +40 -44
  50. package/dist/core/lib/imagePlaceholder.js +177 -0
  51. package/dist/core/lib/imageTransform.js +1 -1
  52. package/dist/core/lib/lexicalReact.d.ts +3 -1
  53. package/dist/core/lib/lexicalState.js +1 -1
  54. package/dist/core/lib/previewPaused.js +9 -0
  55. package/dist/core/lib/recordScope.js +316 -0
  56. package/dist/core/lib/reference.d.ts +81 -0
  57. package/dist/core/lib/reference.js +29 -0
  58. package/dist/core/lib/textLinks.js +7 -5
  59. package/dist/core/lib/textStyles.d.ts +5 -7
  60. package/dist/core/lib/textStyles.js +2 -2
  61. package/dist/core/notFound.d.ts +7 -0
  62. package/dist/core/notFound.js +11 -0
  63. package/dist/core/pageDestinations.js +6 -3
  64. package/dist/core/recordItem.js +34 -0
  65. package/dist/core/requestContext.d.ts +26 -0
  66. package/dist/core/requestContext.js +20 -0
  67. package/dist/features/canvas/CamoxCanvas.js +1401 -0
  68. package/dist/features/canvas/CanvasLoadingScreen.js +35 -0
  69. package/dist/features/canvas/CanvasOverlays.js +254 -0
  70. package/dist/features/canvas/CanvasPageEdge.js +87 -0
  71. package/dist/features/canvas/CanvasPageFrame.js +333 -0
  72. package/dist/features/canvas/CanvasPageHeader.js +125 -0
  73. package/dist/features/canvas/CanvasPreviewPageSlot.js +123 -0
  74. package/dist/features/canvas/DerivedPagePathInput.js +238 -0
  75. package/dist/features/canvas/canvasCamera.js +229 -0
  76. package/dist/features/canvas/canvasFlight.js +104 -0
  77. package/dist/features/canvas/canvasFrameCapture.js +364 -0
  78. package/dist/features/canvas/canvasFrameDocument.js +302 -0
  79. package/dist/features/canvas/canvasFrameMode.js +53 -0
  80. package/dist/features/canvas/canvasInsertionSeams.js +44 -0
  81. package/dist/features/canvas/canvasItems.js +30 -0
  82. package/dist/features/canvas/canvasOverlayGeometry.js +240 -0
  83. package/dist/features/canvas/canvasPages.js +79 -0
  84. package/dist/features/canvas/canvasScreenSpace.js +26 -0
  85. package/dist/features/canvas/canvasSelection.js +18 -0
  86. package/dist/features/canvas/canvasStore.js +60 -0
  87. package/dist/features/canvas/canvasThumbnails.js +304 -0
  88. package/dist/features/canvas/canvasZoom.js +10 -0
  89. package/dist/features/canvas/sidebar/CanvasInspector.js +202 -0
  90. package/dist/features/canvas/sidebar/CanvasNavigator.js +124 -0
  91. package/dist/features/canvas/sidebar/CanvasSidebar.js +54 -0
  92. package/dist/features/canvas/sidebar/CanvasSidebarFrame.js +48 -0
  93. package/dist/features/canvas/sidebar/CanvasSidebarSkeleton.js +39 -0
  94. package/dist/features/canvas/sidebar/CuratedPageInspector.js +69 -0
  95. package/dist/features/canvas/sidebar/DerivedPageInspector.js +37 -0
  96. package/dist/features/canvas/sidebar/LayoutPageBlocks.js +78 -0
  97. package/dist/features/canvas/sidebar/LayoutPageOverview.js +71 -0
  98. package/dist/features/canvas/sidebar/PageInspector.js +157 -0
  99. package/dist/features/canvas/sidebar/PageInspectorSkeleton.js +90 -0
  100. package/dist/features/canvas/sidebar/PageOverview.js +27 -0
  101. package/dist/features/canvas/sidebar/SingletonPageInspector.js +31 -0
  102. package/dist/features/canvas/useCanvasCamera.js +783 -0
  103. package/dist/features/canvas/useCanvasFrame.js +148 -0
  104. package/dist/features/canvas/useCanvasFrameInput.js +97 -0
  105. package/dist/features/canvas/useCanvasNearness.js +57 -0
  106. package/dist/features/canvas/useDiscoveredPreviewPaths.js +62 -0
  107. package/dist/features/content/CamoxContent.d.ts +2 -5
  108. package/dist/features/content/CamoxContent.js +174 -271
  109. package/dist/features/content/CollectionItemSheetContext.js +106 -0
  110. package/dist/features/content/ContentAssets.js +315 -0
  111. package/dist/features/content/ContentCollection.js +663 -0
  112. package/dist/features/content/collection-form.js +58 -0
  113. package/dist/features/content/components/AssetCard.js +80 -84
  114. package/dist/features/content/components/AssetCardSkeleton.js +4 -8
  115. package/dist/features/content/components/ContentSidebar.js +129 -18
  116. package/dist/features/content/components/ContentSidebarGroup.js +37 -0
  117. package/dist/features/content/components/DeleteCollectionItemButton.js +202 -0
  118. package/dist/features/content/components/MissingFromLocale.js +282 -0
  119. package/dist/features/content/components/UploadDropZone.js +27 -31
  120. package/dist/features/content/components/UploadProgressDrawer.js +90 -98
  121. package/dist/features/navigation/navigation.d.ts +66 -20
  122. package/dist/features/navigation/navigation.js +257 -90
  123. package/dist/features/og/defaultFonts.js +8 -8
  124. package/dist/features/og/geist-variable-ttf-base64.js +1 -1
  125. package/dist/features/og/imageResponse.d.ts +8 -0
  126. package/dist/features/og/imageResponse.js +26 -0
  127. package/dist/features/page/CuratedPageContent.js +167 -0
  128. package/dist/features/page/DerivedPageContent.js +26 -30
  129. package/dist/features/page/SharedLayoutContent.js +25 -27
  130. package/dist/features/preview/CamoxPreview.d.ts +23 -61
  131. package/dist/features/preview/CamoxPreview.js +816 -537
  132. package/dist/features/preview/EditablePageContent.js +1 -1
  133. package/dist/features/preview/EditablePageExperience.js +16 -22
  134. package/dist/features/preview/components/AddBlockSheet.js +273 -0
  135. package/dist/features/preview/components/AssetFieldEditor.js +173 -154
  136. package/dist/features/preview/components/AssetLightbox.js +181 -134
  137. package/dist/features/preview/components/AssetPickerModal.js +153 -170
  138. package/dist/features/preview/components/BlockActionsPopover.js +150 -149
  139. package/dist/features/preview/components/BlockErrorBoundary.js +8 -12
  140. package/dist/features/preview/components/BlockThumbnail.js +172 -98
  141. package/dist/features/preview/components/CanvasPreview.js +243 -0
  142. package/dist/features/preview/components/CreatePageModal.js +128 -137
  143. package/dist/features/preview/components/DebouncedFieldEditor.js +29 -33
  144. package/dist/features/preview/components/DerivedLayoutDialog.js +21 -19
  145. package/dist/features/preview/components/DrillRow.js +150 -0
  146. package/dist/features/preview/components/FieldOverlayStyles.js +11 -8
  147. package/dist/features/preview/components/FieldToolbar.js +160 -110
  148. package/dist/features/preview/components/Frame.js +108 -20
  149. package/dist/features/preview/components/IconFieldEditor.js +62 -66
  150. package/dist/features/preview/components/ItemFieldsEditor.js +231 -205
  151. package/dist/features/preview/components/LinkFieldEditor.js +135 -139
  152. package/dist/features/preview/components/Metadata.js +22 -30
  153. package/dist/features/preview/components/MobilePreviewDrawer.js +89 -108
  154. package/dist/features/preview/components/MultipleAssetFieldEditor.js +334 -246
  155. package/dist/features/preview/components/OverlayTracker.js +9 -41
  156. package/dist/features/preview/components/Overlays.js +81 -69
  157. package/dist/features/preview/components/PageInfo.js +1748 -0
  158. package/dist/features/preview/components/PageInfoSkeleton.js +51 -0
  159. package/dist/features/preview/components/PageLocationFieldset.js +112 -116
  160. package/dist/features/preview/components/PageNavigatorHeader.js +24 -0
  161. package/dist/features/preview/components/PageNicknameField.js +22 -26
  162. package/dist/features/preview/components/PagePicker.js +128 -130
  163. package/dist/features/preview/components/PageTree.js +525 -532
  164. package/dist/features/preview/components/PreviewActivation.js +28 -32
  165. package/dist/features/preview/components/PreviewPanel.js +620 -319
  166. package/dist/features/preview/components/PreviewToolbar.js +105 -333
  167. package/dist/features/preview/components/RecordCard.js +80 -0
  168. package/dist/features/preview/components/RecordCombobox.js +178 -0
  169. package/dist/features/preview/components/ReferenceFieldEditor.js +149 -0
  170. package/dist/features/preview/components/ReferenceListFieldEditor.js +432 -0
  171. package/dist/features/preview/components/RemovedBlockPlaceholder.js +95 -0
  172. package/dist/features/preview/components/RepeatableItemsList.js +125 -138
  173. package/dist/features/preview/components/SelectionEditor.js +993 -0
  174. package/dist/features/preview/components/ShikiMarkdown.js +14 -18
  175. package/dist/features/preview/components/SidebarSection.js +52 -64
  176. package/dist/features/preview/components/StudioEditingFallback.js +56 -0
  177. package/dist/features/preview/components/UnlinkAssetButton.js +104 -107
  178. package/dist/features/preview/components/blockGridNavigation.js +15 -0
  179. package/dist/features/preview/components/contentFieldSchema.js +8 -0
  180. package/dist/features/preview/components/useFieldWriter.js +200 -0
  181. package/dist/features/preview/components/useRecordView.js +383 -0
  182. package/dist/features/preview/components/useRepeatableItemActions.js +35 -37
  183. package/dist/features/preview/components/useUpdateBlockPosition.js +37 -37
  184. package/dist/features/preview/editingFrame.js +197 -0
  185. package/dist/features/preview/overlayHighlights.js +17 -44
  186. package/dist/features/preview/overlayMessages.js +72 -1
  187. package/dist/features/preview/pageRecord.js +189 -0
  188. package/dist/features/preview/previewConstants.js +6 -2
  189. package/dist/features/preview/previewPageFrame.js +95 -0
  190. package/dist/features/preview/previewPreparation.js +7 -0
  191. package/dist/features/preview/previewSelection.js +32 -63
  192. package/dist/features/preview/previewStore.js +225 -123
  193. package/dist/features/preview/referencePickerFocus.js +29 -0
  194. package/dist/features/preview/repeatableItemTargets.js +56 -0
  195. package/dist/features/preview/selectionReveal.js +21 -0
  196. package/dist/features/preview/usePreviewViewportActions.js +114 -0
  197. package/dist/features/preview/viewportContinuity.js +109 -0
  198. package/dist/features/provider/AuthenticatedCamoxProvider.js +69 -44
  199. package/dist/features/provider/CamoxProvider.d.ts +3 -6
  200. package/dist/features/provider/CamoxProvider.js +38 -50
  201. package/dist/features/provider/CoreCamoxProvider.js +69 -50
  202. package/dist/features/provider/LocalhostPreviewProvider.js +78 -114
  203. package/dist/features/provider/PreviewSignInPage.js +54 -0
  204. package/dist/features/provider/components/CamoxAppContext.js +11 -11
  205. package/dist/features/provider/components/CommandPalette.js +75 -82
  206. package/dist/features/provider/useAdminShortcuts.js +7 -11
  207. package/dist/features/routes/pageRuntime.d.ts +44 -4
  208. package/dist/features/routes/pageRuntime.js +244 -137
  209. package/dist/features/runtime/RuntimeChrome.js +117 -115
  210. package/dist/features/runtime/alternates.js +64 -0
  211. package/dist/features/runtime/analytics.d.ts +7 -0
  212. package/dist/features/runtime/analytics.js +66 -0
  213. package/dist/features/runtime/artifactSources.js +87 -0
  214. package/dist/features/runtime/editingFallback.js +20 -0
  215. package/dist/features/runtime/linkPrefetch.js +97 -0
  216. package/dist/features/runtime/livePages.js +62 -0
  217. package/dist/features/runtime/llmsTxt.js +40 -0
  218. package/dist/features/runtime/loopbackFetch.js +18 -0
  219. package/dist/features/runtime/navigationAccessibility.js +51 -0
  220. package/dist/features/runtime/navigationTarget.js +23 -2
  221. package/dist/features/runtime/pageApp.js +229 -158
  222. package/dist/features/runtime/pageBlockTypes.js +20 -0
  223. package/dist/features/runtime/pageClient.d.ts +2 -4
  224. package/dist/features/runtime/pageClient.js +18 -3
  225. package/dist/features/runtime/pageNavigation.js +254 -32
  226. package/dist/features/runtime/pageServer.d.ts +2 -4
  227. package/dist/features/runtime/pageServer.js +6 -2
  228. package/dist/features/runtime/pageViewport.js +7 -0
  229. package/dist/features/runtime/runtime.d.ts +54 -24
  230. package/dist/features/runtime/runtime.js +766 -191
  231. package/dist/features/runtime/runtimeChromeLoader.js +58 -0
  232. package/dist/features/runtime/runtimeRoutes.d.ts +19 -0
  233. package/dist/features/runtime/runtimeRoutes.js +25 -0
  234. package/dist/features/runtime/scrollRestoration.js +133 -0
  235. package/dist/features/runtime/studioApp.d.ts +4 -3
  236. package/dist/features/runtime/studioApp.js +5 -9
  237. package/dist/features/runtime/studioClient.d.ts +2 -4
  238. package/dist/features/runtime/studioClient.js +12 -3
  239. package/dist/features/runtime/studioServer.d.ts +2 -4
  240. package/dist/features/runtime/studioServer.js +6 -1
  241. package/dist/features/runtime/worker.d.ts +6 -0
  242. package/dist/features/runtime/worker.js +23 -0
  243. package/dist/features/runtime/workerRequest.js +44 -0
  244. package/dist/features/studio/CamoxStudio.d.ts +2 -6
  245. package/dist/features/studio/CamoxStudio.js +34 -49
  246. package/dist/features/studio/FollowAgentProvider.js +327 -0
  247. package/dist/features/studio/components/ChatSidebar.js +356 -0
  248. package/dist/features/studio/components/DraftsControl.js +676 -0
  249. package/dist/features/studio/components/FaviconDialog.js +318 -0
  250. package/dist/features/studio/components/LocalePicker.js +785 -0
  251. package/dist/features/studio/components/Navbar.js +123 -103
  252. package/dist/features/studio/components/ProjectMenu.js +239 -260
  253. package/dist/features/studio/components/RenameDraftDialog.js +206 -0
  254. package/dist/features/studio/components/ReviewDraftSheet.js +1472 -0
  255. package/dist/features/studio/components/ThreadComposer.js +157 -0
  256. package/dist/features/studio/components/ThreadMarkdown.js +113 -0
  257. package/dist/features/studio/components/ThreadMessages.js +270 -0
  258. package/dist/features/studio/components/UserButton.js +34 -23
  259. package/dist/features/studio/draftLabel.js +33 -0
  260. package/dist/features/studio/draftNotice.js +13 -0
  261. package/dist/features/studio/followAgent.js +241 -0
  262. package/dist/features/studio/followAgentContext.js +7 -0
  263. package/dist/features/studio/localeOptions.js +118 -0
  264. package/dist/features/studio/localeSwitch.js +19 -0
  265. package/dist/features/studio/routes.js +26 -1
  266. package/dist/features/studio/studioStore.js +64 -1
  267. package/dist/features/studio/useTheme.js +24 -27
  268. package/dist/features/vite/artifactRuntimeMinification.js +36 -0
  269. package/dist/features/vite/blockBoilerplate.js +6 -5
  270. package/dist/features/vite/blockChunks.js +31 -0
  271. package/dist/features/vite/bundlerLogs.js +17 -0
  272. package/dist/features/vite/definitionsSync.js +158 -226
  273. package/dist/features/vite/devAuthentication.js +4 -16
  274. package/dist/features/vite/devSignIn.js +87 -0
  275. package/dist/features/vite/iconGeneration.js +1 -1
  276. package/dist/features/vite/layoutGeneration.js +11 -1
  277. package/dist/features/vite/publishSeededContent.js +30 -0
  278. package/dist/features/vite/routeGeneration.js +6 -7
  279. package/dist/features/vite/runtimeDev.js +80 -99
  280. package/dist/features/vite/vite.d.ts +51 -31
  281. package/dist/features/vite/vite.js +224 -127
  282. package/dist/features/vite/workerBuild.js +39 -0
  283. package/dist/hooks/use-debounced-field.js +116 -47
  284. package/dist/hooks/use-file-upload.js +114 -67
  285. package/dist/hooks/use-marquee-selection.js +32 -36
  286. package/dist/hooks/use-page-destinations.js +69 -37
  287. package/dist/lib/api-client-server.d.ts +5 -0
  288. package/dist/lib/api-client-server.js +10 -4
  289. package/dist/lib/api-client.d.ts +6 -0
  290. package/dist/lib/api-client.js +51 -16
  291. package/dist/lib/api-socket.js +17 -0
  292. package/dist/lib/auth-page-styles.js +39 -0
  293. package/dist/lib/auth.js +129 -61
  294. package/dist/lib/collection-cache.js +23 -0
  295. package/dist/lib/draft-scope.d.ts +4 -0
  296. package/dist/lib/draft-scope.js +222 -0
  297. package/dist/lib/html.js +12 -0
  298. package/dist/lib/link-pages.js +154 -0
  299. package/dist/lib/locale-path.d.ts +22 -0
  300. package/dist/lib/locale-path.js +57 -0
  301. package/dist/lib/normalized-data.js +252 -152
  302. package/dist/lib/preview-handoff.js +2 -2
  303. package/dist/lib/queries.d.ts +11 -0
  304. package/dist/lib/queries.js +70 -141
  305. package/dist/lib/studio-reads.d.ts +14 -0
  306. package/dist/lib/studio-reads.js +554 -0
  307. package/dist/lib/use-project-room.js +50 -50
  308. package/dist/lib/use-thread.js +310 -0
  309. package/dist/lib/utils.js +25 -29
  310. package/dist/lib/view-locale-context.js +22 -0
  311. package/dist/lib/view-locale.js +46 -0
  312. package/dist/package.js +5 -0
  313. package/dist/studio-overlays.css +41 -151
  314. package/dist/studio.css +2 -2
  315. package/package.json +70 -73
  316. package/skills/camox/SKILL.md +16 -11
  317. package/skills/camox/references/artifacts.md +179 -0
  318. package/skills/camox/references/block-definitions.md +75 -59
  319. package/skills/camox/references/cli-common.md +9 -11
  320. package/skills/camox/references/cli-content.md +92 -69
  321. package/skills/camox/references/cli-publishing.md +26 -0
  322. package/skills/camox/references/dom-integrations.md +27 -0
  323. package/skills/camox/references/field-styling.md +4 -4
  324. package/skills/camox/references/layout-definitions.md +16 -14
  325. package/skills/camox/references/localization.md +56 -0
  326. package/skills/camox/references/routed-layouts.md +133 -15
  327. package/skills/camox-expand/SKILL.md +70 -0
  328. package/skills/camox-expand/references/jobs.md +39 -0
  329. package/skills/camoxify/SKILL.md +29 -7
  330. package/dist/core/components/AddBlockControlBar.js +0 -78
  331. package/dist/core/hooks/useRequireDraftSource.js +0 -23
  332. package/dist/features/metadata/sitemap.d.ts +0 -8
  333. package/dist/features/metadata/sitemap.js +0 -17
  334. package/dist/features/og/imageResponse.node.d.ts +0 -12
  335. package/dist/features/og/imageResponse.node.js +0 -49
  336. package/dist/features/og/imageResponse.workerd.d.ts +0 -12
  337. package/dist/features/og/imageResponse.workerd.js +0 -40
  338. package/dist/features/page/PublishedPageContent.js +0 -205
  339. package/dist/features/page/PublishedPageExperience.js +0 -23
  340. package/dist/features/preview/DerivedPreview.js +0 -134
  341. package/dist/features/preview/commentsEnabled.js +0 -8
  342. package/dist/features/preview/components/AddBlockSidebar.js +0 -381
  343. package/dist/features/preview/components/AttachedComments.js +0 -331
  344. package/dist/features/preview/components/CommentHeader.js +0 -122
  345. package/dist/features/preview/components/CommentSidebar.js +0 -29
  346. package/dist/features/preview/components/CommentTargetQuote.js +0 -167
  347. package/dist/features/preview/components/DerivedLayoutSidebar.d.ts +0 -5
  348. package/dist/features/preview/components/DerivedLayoutSidebar.js +0 -179
  349. package/dist/features/preview/components/DerivedPageInfoSidebar.js +0 -69
  350. package/dist/features/preview/components/LeftSidebar.js +0 -68
  351. package/dist/features/preview/components/PageEditorSidebar.js +0 -563
  352. package/dist/features/preview/components/PageInfoSidebar.js +0 -1551
  353. package/dist/features/preview/components/PageNavigatorSidebar.js +0 -78
  354. package/dist/features/preview/components/PageStatusBadge.js +0 -97
  355. package/dist/features/preview/components/PeekedBlock.js +0 -217
  356. package/dist/features/preview/components/PreviewComments.js +0 -56
  357. package/dist/features/preview/components/PreviewToolbarSpacer.js +0 -43
  358. package/dist/features/preview/components/PublicationRow.js +0 -422
  359. package/dist/features/preview/components/PublishDialog.js +0 -194
  360. package/dist/features/preview/components/RightSidebar.js +0 -59
  361. package/dist/features/preview/components/SendFeedbackDialog.js +0 -83
  362. package/dist/features/preview/previewCommentsStore.js +0 -135
  363. package/dist/features/preview/publication.js +0 -81
  364. package/dist/features/preview/usePageComments.js +0 -39
  365. package/dist/features/runtime/SharedChromeContext.js +0 -7
  366. package/dist/features/studio/components/EnvironmentMenu.js +0 -425
  367. package/dist/features/vite/appGeneration.js +0 -89
  368. package/dist/lib/view-queries.js +0 -28
  369. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/Matches.d.ts +0 -114
  370. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/RouterProvider.d.ts +0 -25
  371. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/config.d.ts +0 -1
  372. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/defer.d.ts +0 -1
  373. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/fileRoute.d.ts +0 -20
  374. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/global.d.ts +0 -8
  375. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/hash-scroll.d.ts +0 -1
  376. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/index.d.ts +0 -18
  377. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/link.d.ts +0 -161
  378. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/load-matches.d.ts +0 -6
  379. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/location.d.ts +0 -54
  380. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/lru-cache.d.ts +0 -8
  381. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/manifest.d.ts +0 -32
  382. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/new-process-route-tree.d.ts +0 -115
  383. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/not-found.d.ts +0 -1
  384. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/redirect.d.ts +0 -49
  385. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/rewrite.d.ts +0 -1
  386. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/root.d.ts +0 -6
  387. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/route.d.ts +0 -343
  388. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/routeInfo.d.ts +0 -48
  389. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/router.d.ts +0 -695
  390. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/scroll-restoration.d.ts +0 -1
  391. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/searchMiddleware.d.ts +0 -1
  392. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/searchParams.d.ts +0 -5
  393. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/ssr/serializer/RawStream.d.ts +0 -38
  394. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/ssr/serializer/seroval-plugins.d.ts +0 -1
  395. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/ssr/serializer/transformer.d.ts +0 -65
  396. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/stores.d.ts +0 -69
  397. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/structuralSharing.d.ts +0 -1
  398. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/typePrimitives.d.ts +0 -1
  399. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useLoaderData.d.ts +0 -1
  400. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useLoaderDeps.d.ts +0 -1
  401. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useNavigate.d.ts +0 -10
  402. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useParams.d.ts +0 -1
  403. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useRouteContext.d.ts +0 -1
  404. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useSearch.d.ts +0 -1
  405. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/utils.d.ts +0 -28
  406. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/validators.d.ts +0 -49
  407. package/skills/camox/references/cli-environments.md +0 -37
@@ -1,425 +0,0 @@
1
- import { AuthContext } from "../../../lib/auth.js";
2
- import { environmentMutations, environmentQueries, projectQueries } from "../../../lib/queries.js";
3
- import { areCommentsEnabled } from "../../preview/commentsEnabled.js";
4
- import { c } from "react/compiler-runtime";
5
- import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
6
- import * as React from "react";
7
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
- import { Button } from "@camox/ui/button";
9
- import { AlertCircle, ChevronDown, Download, Upload } from "lucide-react";
10
- import { Alert, AlertDescription } from "@camox/ui/alert";
11
- import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle } from "@camox/ui/alert-dialog";
12
- import { Badge } from "@camox/ui/badge";
13
- import { Popover, PopoverContent, PopoverTrigger } from "@camox/ui/popover";
14
- import { Separator } from "@camox/ui/separator";
15
- import { Spinner } from "@camox/ui/spinner";
16
- import { toast } from "@camox/ui/toaster";
17
-
18
- //#region src/features/studio/components/EnvironmentMenu.tsx
19
- const PRODUCTION_ENV = "production";
20
- /**
21
- * Renders the first incompatibility reason as a single-sentence explanation.
22
- * Mirrors the framings used in the plan: "Cannot push because block type X
23
- * exists in dev but not in production. Deploy your code to production…".
24
- */
25
- function formatReason(reason, direction) {
26
- const isPush = direction === "push";
27
- const sourceLabel = isPush ? "your dev environment" : "production";
28
- const targetLabel = isPush ? "production" : "your dev environment";
29
- const remedy = isPush ? "Deploy your code to production to register it, then try again." : "Run your dev project locally to register it, then try again.";
30
- switch (reason.kind) {
31
- case "block-definition-missing-in-source": return `Block type "${reason.blockId}" exists in ${targetLabel} but not in ${sourceLabel}.`;
32
- case "block-definition-missing-in-target": return `Block type "${reason.blockId}" exists in ${sourceLabel} but not in ${targetLabel}. ${remedy}`;
33
- case "block-definition-schema-mismatch": return `Block type "${reason.blockId}" has a different "${reason.field}" between envs. Sync block definitions and try again.`;
34
- case "layout-kind-mismatch": return `Layout "${reason.layoutId}" has a different kind between environments. Sync layout definitions and try again.`;
35
- case "layout-missing-in-source": return `Layout "${reason.layoutId}" exists in ${targetLabel} but not in ${sourceLabel}.`;
36
- case "layout-missing-in-target": return `Layout "${reason.layoutId}" exists in ${sourceLabel} but not in ${targetLabel}. ${remedy}`;
37
- }
38
- }
39
- const EnvironmentMenu = () => {
40
- const $ = c(87);
41
- if ($[0] !== "a19764fc2cadba3ca96828ce487913043214419dfe0474e5a0ab5e6e8d2d6177") {
42
- for (let $i = 0; $i < 87; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
43
- $[0] = "a19764fc2cadba3ca96828ce487913043214419dfe0474e5a0ab5e6e8d2d6177";
44
- }
45
- const [open, setOpen] = React.useState(false);
46
- const [pendingDirection, setPendingDirection] = React.useState(null);
47
- const authCtx = React.useContext(AuthContext);
48
- const queryClient = useQueryClient();
49
- let t0;
50
- if ($[1] !== authCtx?.projectSlug) {
51
- t0 = projectQueries.getBySlug(authCtx?.projectSlug ?? "");
52
- $[1] = authCtx?.projectSlug;
53
- $[2] = t0;
54
- } else t0 = $[2];
55
- const t1 = !!authCtx?.projectSlug;
56
- let t2;
57
- if ($[3] !== t0 || $[4] !== t1) {
58
- t2 = {
59
- ...t0,
60
- enabled: t1
61
- };
62
- $[3] = t0;
63
- $[4] = t1;
64
- $[5] = t2;
65
- } else t2 = $[5];
66
- const projectId = useQuery(t2).data?.id;
67
- const environmentName = authCtx?.environmentName;
68
- const isProduction = environmentName === PRODUCTION_ENV;
69
- const canReplicate = !!projectId && !!environmentName && !isProduction;
70
- let t3;
71
- if ($[6] !== environmentName || $[7] !== projectId) {
72
- t3 = environmentQueries.checkCompatibility(projectId ?? 0, environmentName ?? "", PRODUCTION_ENV);
73
- $[6] = environmentName;
74
- $[7] = projectId;
75
- $[8] = t3;
76
- } else t3 = $[8];
77
- const t4 = open && canReplicate;
78
- let t5;
79
- if ($[9] !== t3 || $[10] !== t4) {
80
- t5 = {
81
- ...t3,
82
- enabled: t4
83
- };
84
- $[9] = t3;
85
- $[10] = t4;
86
- $[11] = t5;
87
- } else t5 = $[11];
88
- const pushCheck = useQuery(t5);
89
- let t6;
90
- if ($[12] !== environmentName || $[13] !== projectId) {
91
- t6 = environmentQueries.checkCompatibility(projectId ?? 0, PRODUCTION_ENV, environmentName ?? "");
92
- $[12] = environmentName;
93
- $[13] = projectId;
94
- $[14] = t6;
95
- } else t6 = $[14];
96
- const t7 = open && canReplicate;
97
- let t8;
98
- if ($[15] !== t6 || $[16] !== t7) {
99
- t8 = {
100
- ...t6,
101
- enabled: t7
102
- };
103
- $[15] = t6;
104
- $[16] = t7;
105
- $[17] = t8;
106
- } else t8 = $[17];
107
- const pullCheck = useQuery(t8);
108
- let t9;
109
- if ($[18] === Symbol.for("react.memo_cache_sentinel")) {
110
- t9 = environmentMutations.replicate();
111
- $[18] = t9;
112
- } else t9 = $[18];
113
- let t10;
114
- if ($[19] !== queryClient) {
115
- t10 = (data, variables) => {
116
- const verb = variables.targetEnvName === PRODUCTION_ENV ? "Pushed to production" : "Pulled from production";
117
- const { pages, blocks, files } = data.copied;
118
- toast.success(`${verb} — ${pages} pages, ${blocks} blocks, ${files} files`);
119
- queryClient.invalidateQueries({ queryKey: ["camox"] });
120
- setPendingDirection(null);
121
- setOpen(false);
122
- };
123
- $[19] = queryClient;
124
- $[20] = t10;
125
- } else t10 = $[20];
126
- let t11;
127
- if ($[21] === Symbol.for("react.memo_cache_sentinel")) {
128
- t11 = (error) => {
129
- console.error("Failed to replicate environment:", error);
130
- toast.error("Could not replicate environment");
131
- setPendingDirection(null);
132
- };
133
- $[21] = t11;
134
- } else t11 = $[21];
135
- let t12;
136
- if ($[22] !== t10) {
137
- t12 = {
138
- ...t9,
139
- onSuccess: t10,
140
- onError: t11
141
- };
142
- $[22] = t10;
143
- $[23] = t12;
144
- } else t12 = $[23];
145
- const replicate = useMutation(t12);
146
- if (!authCtx?.environmentName) return null;
147
- const label = isProduction ? "PROD" : "DEV";
148
- const badgeClassName = isProduction ? "bg-green-100 text-green-800 border border-green-300 hover:bg-green-100 dark:bg-green-900 dark:text-green-300 dark:border-green-700 dark:hover:bg-green-900 font-mono text-xs" : "bg-yellow-100 text-yellow-800 border border-yellow-300 hover:bg-yellow-100 dark:bg-yellow-900 dark:text-yellow-300 dark:border-yellow-700 dark:hover:bg-yellow-900 font-mono text-xs";
149
- let t13;
150
- if ($[24] !== canReplicate || $[25] !== environmentName || $[26] !== pendingDirection || $[27] !== projectId || $[28] !== replicate) {
151
- t13 = () => {
152
- if (!pendingDirection || !canReplicate || !environmentName || !projectId) return;
153
- const sourceEnvName = pendingDirection === "push" ? environmentName : PRODUCTION_ENV;
154
- const targetEnvName = pendingDirection === "push" ? PRODUCTION_ENV : environmentName;
155
- replicate.mutate({
156
- projectId,
157
- sourceEnvName,
158
- targetEnvName
159
- });
160
- };
161
- $[24] = canReplicate;
162
- $[25] = environmentName;
163
- $[26] = pendingDirection;
164
- $[27] = projectId;
165
- $[28] = replicate;
166
- $[29] = t13;
167
- } else t13 = $[29];
168
- const handleConfirm = t13;
169
- const pushReason = pushCheck.data && !pushCheck.data.compatible ? pushCheck.data.reasons[0] : null;
170
- const pullReason = pullCheck.data && !pullCheck.data.compatible ? pullCheck.data.reasons[0] : null;
171
- let t14;
172
- if ($[30] !== pullReason || $[31] !== pushReason) {
173
- t14 = pushReason ? formatReason(pushReason, "push") : pullReason ? formatReason(pullReason, "pull") : null;
174
- $[30] = pullReason;
175
- $[31] = pushReason;
176
- $[32] = t14;
177
- } else t14 = $[32];
178
- const firstCompatibilityError = t14;
179
- let t15;
180
- if ($[33] !== pullCheck || $[34] !== pushCheck || $[35] !== replicate.isPending) {
181
- t15 = (direction) => {
182
- const check = direction === "push" ? pushCheck : pullCheck;
183
- const checking = check.isLoading;
184
- const compatible = check.data?.compatible ?? false;
185
- const Icon = direction === "push" ? Upload : Download;
186
- const actionLabel = direction === "push" ? "Push to production" : "Pull from production";
187
- return /* @__PURE__ */ jsxs(Button, {
188
- variant: "outline",
189
- size: "sm",
190
- className: "w-full justify-start gap-2",
191
- disabled: checking || !compatible || replicate.isPending,
192
- onClick: () => setPendingDirection(direction),
193
- children: [checking ? /* @__PURE__ */ jsx(Spinner, { className: "text-muted-foreground" }) : /* @__PURE__ */ jsx(Icon, { className: "text-muted-foreground size-4" }), /* @__PURE__ */ jsx("span", { children: actionLabel })]
194
- });
195
- };
196
- $[33] = pullCheck;
197
- $[34] = pushCheck;
198
- $[35] = replicate.isPending;
199
- $[36] = t15;
200
- } else t15 = $[36];
201
- const renderActionButton = t15;
202
- let t16;
203
- if ($[37] === Symbol.for("react.memo_cache_sentinel")) {
204
- t16 = /* @__PURE__ */ jsx(Button, {
205
- variant: "ghost",
206
- className: "gap-2"
207
- });
208
- $[37] = t16;
209
- } else t16 = $[37];
210
- let t17;
211
- if ($[38] !== badgeClassName || $[39] !== label) {
212
- t17 = /* @__PURE__ */ jsx(Badge, {
213
- variant: "secondary",
214
- className: badgeClassName,
215
- children: label
216
- });
217
- $[38] = badgeClassName;
218
- $[39] = label;
219
- $[40] = t17;
220
- } else t17 = $[40];
221
- let t18;
222
- if ($[41] === Symbol.for("react.memo_cache_sentinel")) {
223
- t18 = /* @__PURE__ */ jsx(ChevronDown, { className: "shrink-0 opacity-50" });
224
- $[41] = t18;
225
- } else t18 = $[41];
226
- let t19;
227
- if ($[42] !== t17) {
228
- t19 = /* @__PURE__ */ jsxs(PopoverTrigger, {
229
- render: t16,
230
- children: [t17, t18]
231
- });
232
- $[42] = t17;
233
- $[43] = t19;
234
- } else t19 = $[43];
235
- let t20;
236
- if ($[44] !== firstCompatibilityError || $[45] !== isProduction || $[46] !== renderActionButton) {
237
- t20 = /* @__PURE__ */ jsx(PopoverContent, {
238
- className: "w-96 p-0",
239
- align: "start",
240
- side: "bottom",
241
- children: /* @__PURE__ */ jsx("div", {
242
- className: "flex flex-col gap-3 py-4",
243
- children: isProduction ? /* @__PURE__ */ jsx("p", {
244
- className: "px-4 text-sm",
245
- children: "You are viewing the production environment."
246
- }) : /* @__PURE__ */ jsxs(Fragment, { children: [
247
- /* @__PURE__ */ jsx("p", {
248
- className: "px-4 text-sm",
249
- children: "This environment is your personal space to iterate on content and data structures. It doesn't affect production data."
250
- }),
251
- /* @__PURE__ */ jsx(Separator, {}),
252
- /* @__PURE__ */ jsx("p", {
253
- className: "text-muted-foreground px-4 text-xs font-medium",
254
- children: "Transfer data across environments"
255
- }),
256
- /* @__PURE__ */ jsxs("div", {
257
- className: "flex flex-col gap-2 px-4",
258
- children: [
259
- renderActionButton("push"),
260
- renderActionButton("pull"),
261
- firstCompatibilityError ? /* @__PURE__ */ jsxs(Alert, {
262
- variant: "destructive",
263
- className: "mt-1",
264
- children: [/* @__PURE__ */ jsx(AlertCircle, { className: "size-4" }), /* @__PURE__ */ jsx(AlertDescription, { children: firstCompatibilityError })]
265
- }) : null
266
- ]
267
- })
268
- ] })
269
- })
270
- });
271
- $[44] = firstCompatibilityError;
272
- $[45] = isProduction;
273
- $[46] = renderActionButton;
274
- $[47] = t20;
275
- } else t20 = $[47];
276
- let t21;
277
- if ($[48] !== open || $[49] !== t19 || $[50] !== t20) {
278
- t21 = /* @__PURE__ */ jsxs(Popover, {
279
- open,
280
- onOpenChange: setOpen,
281
- children: [t19, t20]
282
- });
283
- $[48] = open;
284
- $[49] = t19;
285
- $[50] = t20;
286
- $[51] = t21;
287
- } else t21 = $[51];
288
- const t22 = !!pendingDirection;
289
- let t23;
290
- if ($[52] !== replicate.isPending) {
291
- t23 = (o) => {
292
- if (!o && !replicate.isPending) setPendingDirection(null);
293
- };
294
- $[52] = replicate.isPending;
295
- $[53] = t23;
296
- } else t23 = $[53];
297
- const t24 = pendingDirection === "push" ? "Push to production?" : "Pull from production?";
298
- let t25;
299
- if ($[54] !== t24) {
300
- t25 = /* @__PURE__ */ jsx(AlertDialogTitle, { children: t24 });
301
- $[54] = t24;
302
- $[55] = t25;
303
- } else t25 = $[55];
304
- let t26;
305
- if ($[56] !== environmentName || $[57] !== pendingDirection) {
306
- t26 = pendingDirection === "push" ? /* @__PURE__ */ jsxs(Fragment, { children: [
307
- "This will replace all content in",
308
- " ",
309
- /* @__PURE__ */ jsx("span", {
310
- className: "font-mono font-semibold",
311
- children: "production"
312
- }),
313
- " with the current",
314
- " ",
315
- /* @__PURE__ */ jsx("span", {
316
- className: "font-mono font-semibold",
317
- children: environmentName
318
- }),
319
- " environment. This action cannot be undone."
320
- ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
321
- "This will replace all content in your",
322
- " ",
323
- /* @__PURE__ */ jsx("span", {
324
- className: "font-mono font-semibold",
325
- children: environmentName
326
- }),
327
- " environment with ",
328
- /* @__PURE__ */ jsx("span", {
329
- className: "font-mono font-semibold",
330
- children: "production"
331
- }),
332
- ". This action cannot be undone."
333
- ] });
334
- $[56] = environmentName;
335
- $[57] = pendingDirection;
336
- $[58] = t26;
337
- } else t26 = $[58];
338
- let t27;
339
- if ($[59] === Symbol.for("react.memo_cache_sentinel")) {
340
- t27 = areCommentsEnabled() && " Feedback comments in the destination will also be replaced.";
341
- $[59] = t27;
342
- } else t27 = $[59];
343
- let t28;
344
- if ($[60] !== t26) {
345
- t28 = /* @__PURE__ */ jsxs(AlertDialogDescription, { children: [t26, t27] });
346
- $[60] = t26;
347
- $[61] = t28;
348
- } else t28 = $[61];
349
- let t29;
350
- if ($[62] !== t25 || $[63] !== t28) {
351
- t29 = /* @__PURE__ */ jsxs(AlertDialogHeader, { children: [t25, t28] });
352
- $[62] = t25;
353
- $[63] = t28;
354
- $[64] = t29;
355
- } else t29 = $[64];
356
- let t30;
357
- if ($[65] !== replicate.isPending) {
358
- t30 = /* @__PURE__ */ jsx(AlertDialogCancel, {
359
- variant: "outline",
360
- size: "default",
361
- disabled: replicate.isPending,
362
- children: "Cancel"
363
- });
364
- $[65] = replicate.isPending;
365
- $[66] = t30;
366
- } else t30 = $[66];
367
- let t31;
368
- if ($[67] !== replicate.isPending) {
369
- t31 = replicate.isPending ? /* @__PURE__ */ jsx(Spinner, {}) : null;
370
- $[67] = replicate.isPending;
371
- $[68] = t31;
372
- } else t31 = $[68];
373
- const t32 = pendingDirection === "push" ? "Push" : "Pull";
374
- let t33;
375
- if ($[69] !== handleConfirm || $[70] !== replicate.isPending || $[71] !== t31 || $[72] !== t32) {
376
- t33 = /* @__PURE__ */ jsxs(AlertDialogAction, {
377
- variant: "destructive",
378
- onClick: handleConfirm,
379
- disabled: replicate.isPending,
380
- children: [t31, t32]
381
- });
382
- $[69] = handleConfirm;
383
- $[70] = replicate.isPending;
384
- $[71] = t31;
385
- $[72] = t32;
386
- $[73] = t33;
387
- } else t33 = $[73];
388
- let t34;
389
- if ($[74] !== t30 || $[75] !== t33) {
390
- t34 = /* @__PURE__ */ jsxs(AlertDialogFooter, { children: [t30, t33] });
391
- $[74] = t30;
392
- $[75] = t33;
393
- $[76] = t34;
394
- } else t34 = $[76];
395
- let t35;
396
- if ($[77] !== t29 || $[78] !== t34) {
397
- t35 = /* @__PURE__ */ jsxs(AlertDialogContent, { children: [t29, t34] });
398
- $[77] = t29;
399
- $[78] = t34;
400
- $[79] = t35;
401
- } else t35 = $[79];
402
- let t36;
403
- if ($[80] !== t22 || $[81] !== t23 || $[82] !== t35) {
404
- t36 = /* @__PURE__ */ jsx(AlertDialog, {
405
- open: t22,
406
- onOpenChange: t23,
407
- children: t35
408
- });
409
- $[80] = t22;
410
- $[81] = t23;
411
- $[82] = t35;
412
- $[83] = t36;
413
- } else t36 = $[83];
414
- let t37;
415
- if ($[84] !== t21 || $[85] !== t36) {
416
- t37 = /* @__PURE__ */ jsxs(Fragment, { children: [t21, t36] });
417
- $[84] = t21;
418
- $[85] = t36;
419
- $[86] = t37;
420
- } else t37 = $[86];
421
- return t37;
422
- };
423
-
424
- //#endregion
425
- export { EnvironmentMenu };
@@ -1,89 +0,0 @@
1
- import { writeIfChanged } from "./utils.js";
2
- import { generateLayoutFiles } from "./layoutGeneration.js";
3
- import { readFileSync, writeFileSync } from "node:fs";
4
- import { relative, resolve } from "node:path";
5
-
6
- //#region src/features/vite/appGeneration.ts
7
- const HEADER = `/* ============================================================================
8
- * AUTO-GENERATED BY CAMOX — DO NOT EDIT
9
- *
10
- * This file is managed by the Camox Vite plugin and should stay gitignored.
11
- * Any manual edits will be automatically reverted by the dev server.
12
- * ============================================================================ */
13
-
14
- `;
15
- function generateCamoxApp() {
16
- return HEADER + `import { createApp } from 'camox/createApp';
17
- import type { Block } from 'camox/createBlock';
18
- import type { Layout } from 'camox/createLayout';
19
-
20
- // Auto-import all blocks from the first-class blocks directory
21
- const blockModules = import.meta.glob<{ block: Block }>('../blocks/*.{ts,tsx}', {
22
- eager: true,
23
- });
24
- const legacyBlockModules = import.meta.glob<{ block: Block }>('./blocks/*.{ts,tsx}', {
25
- eager: true,
26
- });
27
- const blocks = [...Object.values(blockModules), ...Object.values(legacyBlockModules)].map(
28
- (mod) => mod.block,
29
- );
30
-
31
- // Auto-import all layouts from the first-class layouts directory
32
- const layoutModules = import.meta.glob<{ layout?: Layout; Layout?: Layout }>(
33
- '../layouts/*.{ts,tsx}',
34
- { eager: true },
35
- );
36
- const legacyLayoutModules = import.meta.glob<{ layout?: Layout; Layout?: Layout }>(
37
- './layouts/*.{ts,tsx}',
38
- { eager: true },
39
- );
40
- const layouts = [...Object.values(layoutModules), ...Object.values(legacyLayoutModules)].map(
41
- (mod) => (mod.Layout ?? mod.layout)!,
42
- );
43
-
44
- export const camoxApp = createApp({
45
- blocks,
46
- layouts,
47
- });
48
- `;
49
- }
50
- function getAppFileEntries(appRoot) {
51
- return [{
52
- path: resolve(appRoot, "src/camox/app.ts"),
53
- content: generateCamoxApp()
54
- }];
55
- }
56
- function generateAppFile(appRoot) {
57
- generateLayoutFiles(appRoot);
58
- for (const entry of getAppFileEntries(appRoot)) writeIfChanged(entry.path, entry.content);
59
- }
60
- function watchAppFile(server, appRoot) {
61
- for (const event of [
62
- "add",
63
- "change",
64
- "unlink"
65
- ]) server.watcher.on(event, (path) => {
66
- if (path.startsWith(resolve(appRoot, "src/layouts") + "/")) generateLayoutFiles(appRoot);
67
- });
68
- const entries = getAppFileEntries(appRoot);
69
- const expectedByPath = new Map(entries.map((e) => [e.path, e.content]));
70
- server.watcher.on("change", (changedPath) => {
71
- const expected = expectedByPath.get(changedPath);
72
- if (!expected) return;
73
- if (readFileSync(changedPath, "utf-8") !== expected) {
74
- const rel = relative(server.config.root, changedPath);
75
- server.config.logger.warn(`Camox app file "${rel}" was modified — reverting to generated version.`, { timestamp: true });
76
- writeFileSync(changedPath, expected, "utf-8");
77
- }
78
- });
79
- server.watcher.on("unlink", (deletedPath) => {
80
- const expected = expectedByPath.get(deletedPath);
81
- if (!expected) return;
82
- const rel = relative(server.config.root, deletedPath);
83
- server.config.logger.warn(`Camox app file "${rel}" was deleted — recreating.`, { timestamp: true });
84
- writeFileSync(deletedPath, expected, "utf-8");
85
- });
86
- }
87
-
88
- //#endregion
89
- export { generateAppFile, watchAppFile };
@@ -1,28 +0,0 @@
1
- import { getOrpc } from "./api-client.js";
2
- import { queryKeys } from "@camox/api-contract/query-keys";
3
-
4
- //#region src/lib/view-queries.ts
5
- const viewPageQueries = { list: (projectId) => ({
6
- ...getOrpc().pages.list.queryOptions({
7
- input: { projectId },
8
- staleTime: Infinity
9
- }),
10
- queryKey: queryKeys.pages.list
11
- }) };
12
- const viewProjectQueries = { getBySlug: (slug) => ({ ...getOrpc().projects.getBySlug.queryOptions({
13
- input: { slug },
14
- staleTime: Infinity
15
- }) }) };
16
- const viewBlockQueries = { get: (id, source) => ({
17
- ...getOrpc().blocks.get.queryOptions({
18
- input: {
19
- id,
20
- source
21
- },
22
- staleTime: Infinity
23
- }),
24
- queryKey: queryKeys.blocks.get(id, source)
25
- }) };
26
-
27
- //#endregion
28
- export { viewBlockQueries, viewPageQueries, viewProjectQueries };
@@ -1,114 +0,0 @@
1
- import { ControlledPromise } from "./utils.js";
2
- import { ParseRoute } from "./routeInfo.js";
3
- import { AnyRoute, StaticDataRouteOption } from "./route.js";
4
- import { AnyRouter, RegisteredRouter, SSROption } from "./router.js";
5
-
6
- //#region ../../node_modules/.pnpm/@tanstack+router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/Matches.d.ts
7
- interface DefaultRouteMatchExtensions {
8
- scripts?: unknown;
9
- links?: unknown;
10
- headScripts?: unknown;
11
- meta?: unknown;
12
- styles?: unknown;
13
- }
14
- interface RouteMatchExtensions extends DefaultRouteMatchExtensions {}
15
- interface RouteMatch<out TRouteId, out TFullPath, out TAllParams, out TFullSearchSchema, out TLoaderData, out TAllContext, out TLoaderDeps> extends RouteMatchExtensions {
16
- id: string;
17
- routeId: TRouteId;
18
- fullPath: TFullPath;
19
- index: number;
20
- pathname: string;
21
- params: TAllParams;
22
- _strictParams: TAllParams;
23
- status: 'pending' | 'success' | 'error' | 'redirected' | 'notFound';
24
- isFetching: false | 'beforeLoad' | 'loader';
25
- error: unknown;
26
- paramsError: unknown;
27
- searchError: unknown;
28
- updatedAt: number;
29
- _nonReactive: {
30
- loadPromise?: ControlledPromise<void>;
31
- displayPendingPromise?: Promise<void>;
32
- minPendingPromise?: ControlledPromise<void>;
33
- dehydrated?: boolean;
34
- };
35
- loaderData?: TLoaderData;
36
- context: TAllContext;
37
- search: TFullSearchSchema;
38
- _strictSearch: TFullSearchSchema;
39
- fetchCount: number;
40
- abortController: AbortController;
41
- cause: 'preload' | 'enter' | 'stay';
42
- loaderDeps: TLoaderDeps;
43
- preload: boolean;
44
- invalid: boolean;
45
- headers?: Record<string, string>;
46
- globalNotFound?: boolean;
47
- staticData: StaticDataRouteOption;
48
- /** This attribute is not reactive */
49
- ssr?: SSROption;
50
- _forcePending?: boolean;
51
- _displayPending?: boolean;
52
- }
53
- interface PreValidationErrorHandlingRouteMatch<TRouteId, TFullPath, TAllParams, TFullSearchSchema> {
54
- id: string;
55
- routeId: TRouteId;
56
- fullPath: TFullPath;
57
- index: number;
58
- pathname: string;
59
- search: {
60
- status: 'success';
61
- value: TFullSearchSchema;
62
- } | {
63
- status: 'error';
64
- error: unknown;
65
- };
66
- params: {
67
- status: 'success';
68
- value: TAllParams;
69
- } | {
70
- status: 'error';
71
- error: unknown;
72
- };
73
- staticData: StaticDataRouteOption;
74
- ssr?: boolean | 'data-only';
75
- }
76
- type MakePreValidationErrorHandlingRouteMatchUnion<TRouter extends AnyRouter = RegisteredRouter, TRoute extends AnyRoute = ParseRoute<TRouter['routeTree']>> = TRoute extends any ? PreValidationErrorHandlingRouteMatch<TRoute['id'], TRoute['fullPath'], TRoute['types']['allParams'], TRoute['types']['fullSearchSchema']> : never;
77
- type MakeRouteMatchFromRoute<TRoute extends AnyRoute> = RouteMatch<TRoute['types']['id'], TRoute['types']['fullPath'], TRoute['types']['allParams'], TRoute['types']['fullSearchSchema'], TRoute['types']['loaderData'], TRoute['types']['allContext'], TRoute['types']['loaderDeps']>;
78
- type AnyRouteMatch = RouteMatch<any, any, any, any, any, any, any>;
79
- type MakeRouteMatchUnion<TRouter extends AnyRouter = RegisteredRouter, TRoute extends AnyRoute = ParseRoute<TRouter['routeTree']>> = TRoute extends any ? RouteMatch<TRoute['id'], TRoute['fullPath'], TRoute['types']['allParams'], TRoute['types']['fullSearchSchema'], TRoute['types']['loaderData'], TRoute['types']['allContext'], TRoute['types']['loaderDeps']> : never;
80
- /**
81
- * The `MatchRouteOptions` type is used to describe the options that can be used when matching a route.
82
- *
83
- * @link [API Docs](https://tanstack.com/router/latest/docs/framework/react/api/router/MatchRouteOptionsType#matchrouteoptions-type)
84
- */
85
- interface MatchRouteOptions {
86
- /**
87
- * If `true`, will match against pending location instead of the current location.
88
- *
89
- * @link [API Docs](https://tanstack.com/router/latest/docs/framework/react/api/router/MatchRouteOptionsType#pending-property)
90
- */
91
- pending?: boolean;
92
- /**
93
- * If `true`, will match against the current location with case sensitivity.
94
- *
95
- * @link [API Docs](https://tanstack.com/router/latest/docs/framework/react/api/router/MatchRouteOptionsType#casesensitive-property)
96
- *
97
- * @deprecated Declare case sensitivity in the route definition instead, or globally for all routes using the `caseSensitive` option on the router.
98
- */
99
- caseSensitive?: boolean;
100
- /**
101
- * If `true`, will match against the current location's search params using a deep inclusive check. e.g. `{ a: 1 }` will match for a current location of `{ a: 1, b: 2 }`.
102
- *
103
- * @link [API Docs](https://tanstack.com/router/latest/docs/framework/react/api/router/MatchRouteOptionsType#includesearch-property)
104
- */
105
- includeSearch?: boolean;
106
- /**
107
- * If `true`, will match against the current location using a fuzzy match. e.g. `/posts` will match for a current location of `/posts/123`.
108
- *
109
- * @link [API Docs](https://tanstack.com/router/latest/docs/framework/react/api/router/MatchRouteOptionsType#fuzzy-property)
110
- */
111
- fuzzy?: boolean;
112
- }
113
- //#endregion
114
- export { AnyRouteMatch, MakePreValidationErrorHandlingRouteMatchUnion, MakeRouteMatchFromRoute, MakeRouteMatchUnion, MatchRouteOptions, RouteMatch, RouteMatchExtensions };
@@ -1,25 +0,0 @@
1
- import { NavigateOptions, ToOptions } from "./link.js";
2
- import { RoutePaths } from "./routeInfo.js";
3
- import { ParsedLocation } from "./location.js";
4
- import { RegisteredRouter, ViewTransitionOptions } from "./router.js";
5
-
6
- //#region ../../node_modules/.pnpm/@tanstack+router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/RouterProvider.d.ts
7
- interface CommitLocationOptions {
8
- replace?: boolean;
9
- resetScroll?: boolean;
10
- hashScrollIntoView?: boolean | ScrollIntoViewOptions;
11
- viewTransition?: boolean | ViewTransitionOptions;
12
- /**
13
- * @deprecated All navigations use transitions under the hood now
14
- **/
15
- startTransition?: boolean;
16
- ignoreBlocker?: boolean;
17
- }
18
- type NavigateFn = <TRouter extends RegisteredRouter, TTo extends string | undefined, TFrom extends RoutePaths<TRouter['routeTree']> | string = string, TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom, TMaskTo extends string = ''>(opts: NavigateOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>) => Promise<void>;
19
- type BuildLocationFn = <TRouter extends RegisteredRouter, TTo extends string | undefined, TFrom extends RoutePaths<TRouter['routeTree']> | string = string, TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom, TMaskTo extends string = ''>(opts: ToOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> & {
20
- leaveParams?: boolean;
21
- _includeValidateSearch?: boolean;
22
- _isNavigate?: boolean;
23
- }) => ParsedLocation;
24
- //#endregion
25
- export { BuildLocationFn, CommitLocationOptions, NavigateFn };