camox 0.44.0 → 0.45.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 (411) 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 +1734 -0
  68. package/dist/features/canvas/CanvasBlockFrame.js +353 -0
  69. package/dist/features/canvas/CanvasBlockHeader.js +55 -0
  70. package/dist/features/canvas/CanvasLoadingScreen.js +35 -0
  71. package/dist/features/canvas/CanvasOverlays.js +254 -0
  72. package/dist/features/canvas/CanvasPageEdge.js +87 -0
  73. package/dist/features/canvas/CanvasPageFrame.js +335 -0
  74. package/dist/features/canvas/CanvasPageHeader.js +125 -0
  75. package/dist/features/canvas/CanvasPreviewPageSlot.js +103 -0
  76. package/dist/features/canvas/CanvasShelfMarker.js +255 -0
  77. package/dist/features/canvas/DerivedPagePathInput.js +238 -0
  78. package/dist/features/canvas/canvasCamera.js +229 -0
  79. package/dist/features/canvas/canvasFlight.js +104 -0
  80. package/dist/features/canvas/canvasFrameCapture.js +364 -0
  81. package/dist/features/canvas/canvasFrameDocument.js +317 -0
  82. package/dist/features/canvas/canvasFrameMode.js +53 -0
  83. package/dist/features/canvas/canvasInsertionSeams.js +44 -0
  84. package/dist/features/canvas/canvasItems.js +120 -0
  85. package/dist/features/canvas/canvasOverlayGeometry.js +240 -0
  86. package/dist/features/canvas/canvasPages.js +79 -0
  87. package/dist/features/canvas/canvasScreenSpace.js +26 -0
  88. package/dist/features/canvas/canvasSelection.js +18 -0
  89. package/dist/features/canvas/canvasStore.js +149 -0
  90. package/dist/features/canvas/canvasThumbnails.js +304 -0
  91. package/dist/features/canvas/canvasZoom.js +10 -0
  92. package/dist/features/canvas/sidebar/CanvasInspector.js +202 -0
  93. package/dist/features/canvas/sidebar/CanvasNavigator.js +226 -0
  94. package/dist/features/canvas/sidebar/CanvasSidebar.js +60 -0
  95. package/dist/features/canvas/sidebar/CanvasSidebarFrame.js +48 -0
  96. package/dist/features/canvas/sidebar/CanvasSidebarSkeleton.js +39 -0
  97. package/dist/features/canvas/sidebar/CatalogBlockInspector.js +189 -0
  98. package/dist/features/canvas/sidebar/CuratedPageInspector.js +69 -0
  99. package/dist/features/canvas/sidebar/DerivedPageInspector.js +37 -0
  100. package/dist/features/canvas/sidebar/LayoutPageBlocks.js +78 -0
  101. package/dist/features/canvas/sidebar/LayoutPageOverview.js +71 -0
  102. package/dist/features/canvas/sidebar/PageInspector.js +157 -0
  103. package/dist/features/canvas/sidebar/PageInspectorSkeleton.js +90 -0
  104. package/dist/features/canvas/sidebar/PageOverview.js +27 -0
  105. package/dist/features/canvas/sidebar/SingletonPageInspector.js +31 -0
  106. package/dist/features/canvas/useCanvasCamera.js +803 -0
  107. package/dist/features/canvas/useCanvasFrame.js +149 -0
  108. package/dist/features/canvas/useCanvasFrameInput.js +97 -0
  109. package/dist/features/canvas/useCanvasNearness.js +57 -0
  110. package/dist/features/canvas/useDiscoveredPreviewPaths.js +62 -0
  111. package/dist/features/content/CamoxContent.d.ts +2 -5
  112. package/dist/features/content/CamoxContent.js +174 -271
  113. package/dist/features/content/CollectionItemSheetContext.js +106 -0
  114. package/dist/features/content/ContentAssets.js +315 -0
  115. package/dist/features/content/ContentCollection.js +663 -0
  116. package/dist/features/content/collection-form.js +58 -0
  117. package/dist/features/content/components/AssetCard.js +80 -84
  118. package/dist/features/content/components/AssetCardSkeleton.js +4 -8
  119. package/dist/features/content/components/ContentSidebar.js +129 -18
  120. package/dist/features/content/components/ContentSidebarGroup.js +37 -0
  121. package/dist/features/content/components/DeleteCollectionItemButton.js +202 -0
  122. package/dist/features/content/components/MissingFromLocale.js +282 -0
  123. package/dist/features/content/components/UploadDropZone.js +27 -31
  124. package/dist/features/content/components/UploadProgressDrawer.js +90 -98
  125. package/dist/features/navigation/navigation.d.ts +66 -20
  126. package/dist/features/navigation/navigation.js +257 -90
  127. package/dist/features/og/defaultFonts.js +8 -8
  128. package/dist/features/og/geist-variable-ttf-base64.js +1 -1
  129. package/dist/features/og/imageResponse.d.ts +8 -0
  130. package/dist/features/og/imageResponse.js +26 -0
  131. package/dist/features/page/CuratedPageContent.js +167 -0
  132. package/dist/features/page/DerivedPageContent.js +26 -30
  133. package/dist/features/page/SharedLayoutContent.js +25 -27
  134. package/dist/features/preview/CamoxPreview.d.ts +23 -61
  135. package/dist/features/preview/CamoxPreview.js +816 -537
  136. package/dist/features/preview/EditablePageContent.js +1 -1
  137. package/dist/features/preview/EditablePageExperience.js +16 -22
  138. package/dist/features/preview/components/AddBlockDialog.js +270 -0
  139. package/dist/features/preview/components/AssetFieldEditor.js +173 -154
  140. package/dist/features/preview/components/AssetLightbox.js +181 -134
  141. package/dist/features/preview/components/AssetPickerModal.js +153 -170
  142. package/dist/features/preview/components/BlockActionsPopover.js +150 -149
  143. package/dist/features/preview/components/BlockErrorBoundary.js +8 -12
  144. package/dist/features/preview/components/BlockThumbnail.js +176 -100
  145. package/dist/features/preview/components/CanvasPreview.js +243 -0
  146. package/dist/features/preview/components/CreatePageModal.js +128 -137
  147. package/dist/features/preview/components/DebouncedFieldEditor.js +29 -33
  148. package/dist/features/preview/components/DerivedLayoutDialog.js +21 -19
  149. package/dist/features/preview/components/DrillRow.js +150 -0
  150. package/dist/features/preview/components/FieldOverlayStyles.js +11 -8
  151. package/dist/features/preview/components/FieldToolbar.js +160 -110
  152. package/dist/features/preview/components/Frame.js +108 -20
  153. package/dist/features/preview/components/IconFieldEditor.js +62 -66
  154. package/dist/features/preview/components/ItemFieldsEditor.js +231 -205
  155. package/dist/features/preview/components/LinkFieldEditor.js +135 -139
  156. package/dist/features/preview/components/Metadata.js +22 -30
  157. package/dist/features/preview/components/MobilePreviewDrawer.js +89 -108
  158. package/dist/features/preview/components/MultipleAssetFieldEditor.js +334 -246
  159. package/dist/features/preview/components/OverlayTracker.js +9 -41
  160. package/dist/features/preview/components/Overlays.js +81 -69
  161. package/dist/features/preview/components/PageInfo.js +1748 -0
  162. package/dist/features/preview/components/PageInfoSkeleton.js +51 -0
  163. package/dist/features/preview/components/PageLocationFieldset.js +112 -116
  164. package/dist/features/preview/components/PageNavigatorHeader.js +24 -0
  165. package/dist/features/preview/components/PageNicknameField.js +22 -26
  166. package/dist/features/preview/components/PagePicker.js +128 -130
  167. package/dist/features/preview/components/PageTree.js +525 -532
  168. package/dist/features/preview/components/PreviewActivation.js +28 -32
  169. package/dist/features/preview/components/PreviewPanel.js +620 -319
  170. package/dist/features/preview/components/PreviewToolbar.js +105 -333
  171. package/dist/features/preview/components/RecordCard.js +80 -0
  172. package/dist/features/preview/components/RecordCombobox.js +178 -0
  173. package/dist/features/preview/components/ReferenceFieldEditor.js +149 -0
  174. package/dist/features/preview/components/ReferenceListFieldEditor.js +432 -0
  175. package/dist/features/preview/components/RemovedBlockPlaceholder.js +95 -0
  176. package/dist/features/preview/components/RepeatableItemsList.js +125 -138
  177. package/dist/features/preview/components/SelectionEditor.js +993 -0
  178. package/dist/features/preview/components/ShikiMarkdown.js +14 -18
  179. package/dist/features/preview/components/SidebarSection.js +52 -64
  180. package/dist/features/preview/components/StudioEditingFallback.js +56 -0
  181. package/dist/features/preview/components/UnlinkAssetButton.js +104 -107
  182. package/dist/features/preview/components/blockGridNavigation.js +15 -0
  183. package/dist/features/preview/components/contentFieldSchema.js +8 -0
  184. package/dist/features/preview/components/useFieldWriter.js +200 -0
  185. package/dist/features/preview/components/useRecordView.js +383 -0
  186. package/dist/features/preview/components/useRepeatableItemActions.js +35 -37
  187. package/dist/features/preview/components/useUpdateBlockPosition.js +37 -37
  188. package/dist/features/preview/editingFrame.js +197 -0
  189. package/dist/features/preview/overlayHighlights.js +17 -44
  190. package/dist/features/preview/overlayMessages.js +72 -1
  191. package/dist/features/preview/pageRecord.js +189 -0
  192. package/dist/features/preview/previewConstants.js +6 -2
  193. package/dist/features/preview/previewPageFrame.js +95 -0
  194. package/dist/features/preview/previewPreparation.js +7 -0
  195. package/dist/features/preview/previewSelection.js +32 -63
  196. package/dist/features/preview/previewStore.js +225 -123
  197. package/dist/features/preview/referencePickerFocus.js +29 -0
  198. package/dist/features/preview/repeatableItemTargets.js +56 -0
  199. package/dist/features/preview/selectionReveal.js +21 -0
  200. package/dist/features/preview/usePreviewViewportActions.js +114 -0
  201. package/dist/features/preview/viewportContinuity.js +109 -0
  202. package/dist/features/provider/AuthenticatedCamoxProvider.js +69 -44
  203. package/dist/features/provider/CamoxProvider.d.ts +3 -6
  204. package/dist/features/provider/CamoxProvider.js +38 -50
  205. package/dist/features/provider/CoreCamoxProvider.js +66 -50
  206. package/dist/features/provider/LocalhostPreviewProvider.js +78 -114
  207. package/dist/features/provider/PreviewSignInPage.js +54 -0
  208. package/dist/features/provider/components/CamoxAppContext.js +11 -11
  209. package/dist/features/provider/components/CommandPalette.js +75 -82
  210. package/dist/features/provider/useAdminShortcuts.js +7 -11
  211. package/dist/features/routes/pageRuntime.d.ts +44 -4
  212. package/dist/features/routes/pageRuntime.js +244 -137
  213. package/dist/features/runtime/RuntimeChrome.js +117 -115
  214. package/dist/features/runtime/alternates.js +64 -0
  215. package/dist/features/runtime/analytics.d.ts +7 -0
  216. package/dist/features/runtime/analytics.js +66 -0
  217. package/dist/features/runtime/artifactSources.js +87 -0
  218. package/dist/features/runtime/editingFallback.js +20 -0
  219. package/dist/features/runtime/linkPrefetch.js +97 -0
  220. package/dist/features/runtime/livePages.js +62 -0
  221. package/dist/features/runtime/llmsTxt.js +40 -0
  222. package/dist/features/runtime/loopbackFetch.js +18 -0
  223. package/dist/features/runtime/navigationAccessibility.js +51 -0
  224. package/dist/features/runtime/navigationTarget.js +23 -2
  225. package/dist/features/runtime/pageApp.js +229 -158
  226. package/dist/features/runtime/pageBlockTypes.js +20 -0
  227. package/dist/features/runtime/pageClient.d.ts +2 -4
  228. package/dist/features/runtime/pageClient.js +18 -3
  229. package/dist/features/runtime/pageNavigation.js +254 -32
  230. package/dist/features/runtime/pageServer.d.ts +2 -4
  231. package/dist/features/runtime/pageServer.js +6 -2
  232. package/dist/features/runtime/pageViewport.js +7 -0
  233. package/dist/features/runtime/runtime.d.ts +59 -24
  234. package/dist/features/runtime/runtime.js +779 -191
  235. package/dist/features/runtime/runtimeChromeLoader.js +58 -0
  236. package/dist/features/runtime/runtimeRoutes.d.ts +19 -0
  237. package/dist/features/runtime/runtimeRoutes.js +25 -0
  238. package/dist/features/runtime/scrollRestoration.js +133 -0
  239. package/dist/features/runtime/studioApp.d.ts +4 -3
  240. package/dist/features/runtime/studioApp.js +5 -9
  241. package/dist/features/runtime/studioClient.d.ts +2 -4
  242. package/dist/features/runtime/studioClient.js +12 -3
  243. package/dist/features/runtime/studioServer.d.ts +2 -4
  244. package/dist/features/runtime/studioServer.js +6 -1
  245. package/dist/features/runtime/worker.d.ts +6 -0
  246. package/dist/features/runtime/worker.js +23 -0
  247. package/dist/features/runtime/workerRequest.js +44 -0
  248. package/dist/features/studio/CamoxStudio.d.ts +2 -6
  249. package/dist/features/studio/CamoxStudio.js +34 -49
  250. package/dist/features/studio/FollowAgentProvider.js +338 -0
  251. package/dist/features/studio/components/ChatSidebar.js +356 -0
  252. package/dist/features/studio/components/DraftsControl.js +676 -0
  253. package/dist/features/studio/components/FaviconDialog.js +318 -0
  254. package/dist/features/studio/components/LocalePicker.js +785 -0
  255. package/dist/features/studio/components/Navbar.js +123 -103
  256. package/dist/features/studio/components/ProjectMenu.js +239 -260
  257. package/dist/features/studio/components/RenameDraftDialog.js +206 -0
  258. package/dist/features/studio/components/ReviewDraftSheet.js +1472 -0
  259. package/dist/features/studio/components/ThreadComposer.js +157 -0
  260. package/dist/features/studio/components/ThreadMarkdown.js +113 -0
  261. package/dist/features/studio/components/ThreadMessages.js +270 -0
  262. package/dist/features/studio/components/UserButton.js +34 -23
  263. package/dist/features/studio/draftLabel.js +33 -0
  264. package/dist/features/studio/draftNotice.js +13 -0
  265. package/dist/features/studio/followAgent.js +250 -0
  266. package/dist/features/studio/followAgentContext.js +7 -0
  267. package/dist/features/studio/localeOptions.js +118 -0
  268. package/dist/features/studio/localeSwitch.js +19 -0
  269. package/dist/features/studio/routes.js +48 -1
  270. package/dist/features/studio/studioStore.js +64 -1
  271. package/dist/features/studio/useTheme.js +24 -27
  272. package/dist/features/vite/artifactRuntimeMinification.js +36 -0
  273. package/dist/features/vite/blockBoilerplate.js +6 -5
  274. package/dist/features/vite/blockChunks.js +31 -0
  275. package/dist/features/vite/bundlerLogs.js +17 -0
  276. package/dist/features/vite/definitionsSync.js +158 -226
  277. package/dist/features/vite/devAuthentication.js +4 -16
  278. package/dist/features/vite/devSignIn.js +87 -0
  279. package/dist/features/vite/iconGeneration.js +1 -1
  280. package/dist/features/vite/layoutGeneration.js +11 -1
  281. package/dist/features/vite/publishSeededContent.js +30 -0
  282. package/dist/features/vite/routeGeneration.js +6 -7
  283. package/dist/features/vite/runtimeDev.js +80 -99
  284. package/dist/features/vite/vite.d.ts +51 -31
  285. package/dist/features/vite/vite.js +224 -127
  286. package/dist/features/vite/workerBuild.js +39 -0
  287. package/dist/hooks/use-debounced-field.js +116 -47
  288. package/dist/hooks/use-file-upload.js +114 -67
  289. package/dist/hooks/use-marquee-selection.js +32 -36
  290. package/dist/hooks/use-page-destinations.js +69 -37
  291. package/dist/lib/api-client-server.d.ts +5 -0
  292. package/dist/lib/api-client-server.js +10 -4
  293. package/dist/lib/api-client.d.ts +6 -0
  294. package/dist/lib/api-client.js +51 -16
  295. package/dist/lib/api-socket.js +17 -0
  296. package/dist/lib/auth-page-styles.js +39 -0
  297. package/dist/lib/auth.js +117 -61
  298. package/dist/lib/collection-cache.js +23 -0
  299. package/dist/lib/draft-scope.d.ts +4 -0
  300. package/dist/lib/draft-scope.js +222 -0
  301. package/dist/lib/html.js +12 -0
  302. package/dist/lib/link-pages.js +154 -0
  303. package/dist/lib/locale-path.d.ts +22 -0
  304. package/dist/lib/locale-path.js +57 -0
  305. package/dist/lib/normalized-data.js +252 -152
  306. package/dist/lib/preview-handoff.js +2 -2
  307. package/dist/lib/queries.d.ts +11 -0
  308. package/dist/lib/queries.js +70 -141
  309. package/dist/lib/studio-reads.d.ts +14 -0
  310. package/dist/lib/studio-reads.js +574 -0
  311. package/dist/lib/use-project-room.js +50 -50
  312. package/dist/lib/use-thread.js +310 -0
  313. package/dist/lib/utils.js +25 -29
  314. package/dist/lib/view-locale-context.js +22 -0
  315. package/dist/lib/view-locale.js +46 -0
  316. package/dist/package.js +5 -0
  317. package/dist/studio-overlays.css +41 -151
  318. package/dist/studio.css +2 -2
  319. package/package.json +70 -73
  320. package/skills/camox/SKILL.md +16 -11
  321. package/skills/camox/references/artifacts.md +179 -0
  322. package/skills/camox/references/block-definitions.md +75 -59
  323. package/skills/camox/references/cli-common.md +9 -11
  324. package/skills/camox/references/cli-content.md +92 -69
  325. package/skills/camox/references/cli-publishing.md +26 -0
  326. package/skills/camox/references/dom-integrations.md +27 -0
  327. package/skills/camox/references/field-styling.md +4 -4
  328. package/skills/camox/references/layout-definitions.md +16 -14
  329. package/skills/camox/references/localization.md +56 -0
  330. package/skills/camox/references/routed-layouts.md +133 -15
  331. package/skills/camox-expand/SKILL.md +69 -0
  332. package/skills/camox-expand/references/jobs.md +39 -0
  333. package/skills/camoxify/SKILL.md +29 -7
  334. package/dist/core/components/AddBlockControlBar.js +0 -78
  335. package/dist/core/hooks/useRequireDraftSource.js +0 -23
  336. package/dist/features/metadata/sitemap.d.ts +0 -8
  337. package/dist/features/metadata/sitemap.js +0 -17
  338. package/dist/features/og/imageResponse.node.d.ts +0 -12
  339. package/dist/features/og/imageResponse.node.js +0 -49
  340. package/dist/features/og/imageResponse.workerd.d.ts +0 -12
  341. package/dist/features/og/imageResponse.workerd.js +0 -40
  342. package/dist/features/page/PublishedPageContent.js +0 -205
  343. package/dist/features/page/PublishedPageExperience.js +0 -23
  344. package/dist/features/preview/DerivedPreview.js +0 -134
  345. package/dist/features/preview/commentsEnabled.js +0 -8
  346. package/dist/features/preview/components/AddBlockSidebar.js +0 -381
  347. package/dist/features/preview/components/AttachedComments.js +0 -331
  348. package/dist/features/preview/components/CommentHeader.js +0 -122
  349. package/dist/features/preview/components/CommentSidebar.js +0 -29
  350. package/dist/features/preview/components/CommentTargetQuote.js +0 -167
  351. package/dist/features/preview/components/DerivedLayoutSidebar.d.ts +0 -5
  352. package/dist/features/preview/components/DerivedLayoutSidebar.js +0 -179
  353. package/dist/features/preview/components/DerivedPageInfoSidebar.js +0 -69
  354. package/dist/features/preview/components/LeftSidebar.js +0 -68
  355. package/dist/features/preview/components/PageEditorSidebar.js +0 -563
  356. package/dist/features/preview/components/PageInfoSidebar.js +0 -1551
  357. package/dist/features/preview/components/PageNavigatorSidebar.js +0 -78
  358. package/dist/features/preview/components/PageStatusBadge.js +0 -97
  359. package/dist/features/preview/components/PeekedBlock.js +0 -217
  360. package/dist/features/preview/components/PreviewComments.js +0 -56
  361. package/dist/features/preview/components/PreviewToolbarSpacer.js +0 -43
  362. package/dist/features/preview/components/PublicationRow.js +0 -422
  363. package/dist/features/preview/components/PublishDialog.js +0 -194
  364. package/dist/features/preview/components/RightSidebar.js +0 -59
  365. package/dist/features/preview/components/SendFeedbackDialog.js +0 -83
  366. package/dist/features/preview/previewCommentsStore.js +0 -135
  367. package/dist/features/preview/publication.js +0 -81
  368. package/dist/features/preview/usePageComments.js +0 -39
  369. package/dist/features/runtime/SharedChromeContext.js +0 -7
  370. package/dist/features/studio/components/EnvironmentMenu.js +0 -425
  371. package/dist/features/vite/appGeneration.js +0 -89
  372. package/dist/lib/view-queries.js +0 -28
  373. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/Matches.d.ts +0 -114
  374. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/RouterProvider.d.ts +0 -25
  375. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/config.d.ts +0 -1
  376. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/defer.d.ts +0 -1
  377. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/fileRoute.d.ts +0 -20
  378. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/global.d.ts +0 -8
  379. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/hash-scroll.d.ts +0 -1
  380. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/index.d.ts +0 -18
  381. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/link.d.ts +0 -161
  382. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/load-matches.d.ts +0 -6
  383. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/location.d.ts +0 -54
  384. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/lru-cache.d.ts +0 -8
  385. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/manifest.d.ts +0 -32
  386. 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
  387. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/not-found.d.ts +0 -1
  388. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/redirect.d.ts +0 -49
  389. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/rewrite.d.ts +0 -1
  390. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/root.d.ts +0 -6
  391. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/route.d.ts +0 -343
  392. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/routeInfo.d.ts +0 -48
  393. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/router.d.ts +0 -695
  394. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/scroll-restoration.d.ts +0 -1
  395. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/searchMiddleware.d.ts +0 -1
  396. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/searchParams.d.ts +0 -5
  397. 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
  398. 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
  399. 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
  400. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/stores.d.ts +0 -69
  401. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/structuralSharing.d.ts +0 -1
  402. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/typePrimitives.d.ts +0 -1
  403. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useLoaderData.d.ts +0 -1
  404. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useLoaderDeps.d.ts +0 -1
  405. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useNavigate.d.ts +0 -10
  406. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useParams.d.ts +0 -1
  407. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useRouteContext.d.ts +0 -1
  408. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useSearch.d.ts +0 -1
  409. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/utils.d.ts +0 -28
  410. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/validators.d.ts +0 -49
  411. 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 };