@elytracms/studio 0.0.52 → 0.0.54

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 (321) hide show
  1. package/dist/components/account/account-settings.js +4 -4
  2. package/dist/components/account/credential-panel.js +1 -1
  3. package/dist/components/account/self-account-view-source.js +3 -3
  4. package/dist/components/ai/ai-chat-panel-lazy.js +1 -1
  5. package/dist/components/ai/ai-chat-panel.js +4 -4
  6. package/dist/components/ai/ai-cms-panel.js +1 -1
  7. package/dist/components/ai/proposal-card.js +4 -4
  8. package/dist/components/ai/translate-document-action.js +1 -1
  9. package/dist/components/ai/translate-document-dialog.d.ts +1 -1
  10. package/dist/components/app-views/default-modules.d.ts +3 -3
  11. package/dist/components/app-views/default-modules.js +20 -20
  12. package/dist/components/app-views/sidebar.d.ts +1 -1
  13. package/dist/components/app-views/sidebar.js +2 -2
  14. package/dist/components/app-views/studio-config.d.ts +1 -1
  15. package/dist/components/assets/asset-detail.js +9 -9
  16. package/dist/components/assets/asset-grid.js +7 -7
  17. package/dist/components/assets/asset-thumb.d.ts +1 -1
  18. package/dist/components/assets/asset-thumb.js +2 -2
  19. package/dist/components/assets/assets-collection-view-source.js +3 -3
  20. package/dist/components/assets/assets-module.js +8 -8
  21. package/dist/components/assets/assets-store.d.ts +1 -1
  22. package/dist/components/assets/assets-store.js +1 -1
  23. package/dist/components/builder/blocks-model.js +1 -1
  24. package/dist/components/builder/blocks-panel.d.ts +1 -1
  25. package/dist/components/builder/blocks-panel.js +6 -6
  26. package/dist/components/builder/canvas.js +11 -11
  27. package/dist/components/builder/clipboard-actions.js +2 -2
  28. package/dist/components/builder/composition-field-editor-lazy.d.ts +1 -1
  29. package/dist/components/builder/composition-field-editor-lazy.js +1 -1
  30. package/dist/components/builder/composition-field-editor.d.ts +1 -1
  31. package/dist/components/builder/composition-field-editor.js +9 -9
  32. package/dist/components/builder/insert-context.d.ts +2 -2
  33. package/dist/components/builder/insert-context.js +2 -2
  34. package/dist/components/builder/insert-menu.d.ts +2 -2
  35. package/dist/components/builder/insert-menu.js +1 -1
  36. package/dist/components/builder/layout-inspector.js +1 -1
  37. package/dist/components/builder/page-tree.js +5 -5
  38. package/dist/components/builder/property-inspector.js +3 -3
  39. package/dist/components/builder/reuse-context.d.ts +1 -1
  40. package/dist/components/builder/reuse-context.js +3 -3
  41. package/dist/components/builder/spacing-handles.js +2 -2
  42. package/dist/components/cms/asset-picker.js +4 -4
  43. package/dist/components/cms/bulk-actions.js +1 -1
  44. package/dist/components/cms/bulk-bar.d.ts +1 -1
  45. package/dist/components/cms/bulk-bar.js +3 -3
  46. package/dist/components/cms/cell-edit.js +1 -1
  47. package/dist/components/cms/cell.js +2 -2
  48. package/dist/components/cms/cms-index.js +1 -1
  49. package/dist/components/cms/cms-store.d.ts +2 -2
  50. package/dist/components/cms/cms-store.js +6 -6
  51. package/dist/components/cms/collection-table.js +17 -17
  52. package/dist/components/cms/detail-editor.js +31 -31
  53. package/dist/components/cms/document-diff-view.js +4 -4
  54. package/dist/components/cms/editable-cell.d.ts +1 -1
  55. package/dist/components/cms/editable-cell.js +6 -6
  56. package/dist/components/cms/field-control.js +15 -15
  57. package/dist/components/cms/field-renderer.d.ts +2 -2
  58. package/dist/components/cms/filter-builder.js +3 -3
  59. package/dist/components/cms/import-export.js +1 -1
  60. package/dist/components/cms/issues-pane.js +1 -1
  61. package/dist/components/cms/prop-fields.js +3 -3
  62. package/dist/components/cms/reference-confirm.js +1 -1
  63. package/dist/components/cms/relation-picker.js +1 -1
  64. package/dist/components/cms/rich-text/block-commands.d.ts +1 -1
  65. package/dist/components/cms/rich-text/component-embed.js +2 -2
  66. package/dist/components/cms/rich-text/editor.js +8 -8
  67. package/dist/components/cms/rich-text/embed-inspector.d.ts +1 -1
  68. package/dist/components/cms/rich-text/embed-inspector.js +2 -2
  69. package/dist/components/cms/rich-text/embed-picker.js +1 -1
  70. package/dist/components/cms/rich-text/embed-props.js +1 -1
  71. package/dist/components/cms/rich-text/extensions.d.ts +1 -1
  72. package/dist/components/cms/rich-text/extensions.js +4 -4
  73. package/dist/components/cms/rich-text/index.d.ts +1 -1
  74. package/dist/components/cms/rich-text/index.js +1 -1
  75. package/dist/components/cms/rich-text/insert.d.ts +1 -1
  76. package/dist/components/cms/rich-text/lazy.d.ts +1 -1
  77. package/dist/components/cms/rich-text/lazy.js +1 -1
  78. package/dist/components/cms/rich-text/slash-command.js +1 -1
  79. package/dist/components/cms/rich-text/toolbar.d.ts +1 -1
  80. package/dist/components/cms/rich-text/toolbar.js +4 -4
  81. package/dist/components/cms/use-cell-edit.d.ts +1 -1
  82. package/dist/components/cms/use-cell-edit.js +2 -2
  83. package/dist/components/cms/use-compare-selection.d.ts +1 -1
  84. package/dist/components/cms/use-discard-controller.d.ts +1 -1
  85. package/dist/components/cms/use-discard-controller.js +2 -2
  86. package/dist/components/cms/use-document-versions.d.ts +1 -1
  87. package/dist/components/cms/use-document-versions.js +1 -1
  88. package/dist/components/cms/use-embed-inspector-host.d.ts +1 -1
  89. package/dist/components/cms/use-published-perspective.d.ts +2 -2
  90. package/dist/components/cms/use-published-perspective.js +2 -2
  91. package/dist/components/cms/use-restore-version.js +1 -1
  92. package/dist/components/cms/version-compare-lazy.js +1 -1
  93. package/dist/components/cms/version-compare.js +6 -6
  94. package/dist/components/cms/versions-model.d.ts +1 -1
  95. package/dist/components/cms/versions-pane.js +5 -5
  96. package/dist/components/cms/view-bar.js +2 -2
  97. package/dist/components/collab/collab-context.js +1 -1
  98. package/dist/components/collection-view/cms-collection-view-source.js +2 -2
  99. package/dist/components/components/component-preview.js +3 -3
  100. package/dist/components/components/components-index.js +2 -2
  101. package/dist/components/components/registry-browser.js +2 -2
  102. package/dist/components/components/transfer-dialog.js +5 -5
  103. package/dist/components/components/transfer.js +4 -4
  104. package/dist/components/current-user-menu.js +2 -2
  105. package/dist/components/delivery-health-banner.js +2 -2
  106. package/dist/components/operation-error.js +1 -1
  107. package/dist/components/project-list.js +5 -5
  108. package/dist/components/project-session.js +1 -1
  109. package/dist/components/project-switcher.js +3 -3
  110. package/dist/components/rail-store-status.js +1 -1
  111. package/dist/components/redirects/redirects-collection-view-source.js +3 -3
  112. package/dist/components/redirects/redirects-module.js +6 -6
  113. package/dist/components/section-nav.js +3 -3
  114. package/dist/components/section-surface.js +1 -1
  115. package/dist/components/studio-project-screen.js +7 -7
  116. package/dist/components/studio-shell.js +9 -9
  117. package/dist/components/use-hydration-phase.js +1 -1
  118. package/dist/components/users/users-collection-view-source.js +4 -4
  119. package/dist/components/users/users-module.js +9 -9
  120. package/dist/components/workspace-projects.js +1 -1
  121. package/dist/customization.d.ts +9 -9
  122. package/dist/customization.js +5 -5
  123. package/dist/lib/ai/anthropic-provider.d.ts +1 -1
  124. package/dist/lib/ai/apply-content.d.ts +1 -1
  125. package/dist/lib/ai/apply-content.js +3 -3
  126. package/dist/lib/ai/chat-state.d.ts +2 -2
  127. package/dist/lib/ai/config.d.ts +1 -1
  128. package/dist/lib/ai/convex-session-headers.d.ts +68 -0
  129. package/dist/lib/ai/convex-session-headers.js +79 -0
  130. package/dist/lib/ai/convex-session-headers.js.map +1 -0
  131. package/dist/lib/ai/convex-session.d.ts +82 -0
  132. package/dist/lib/ai/convex-session.js +92 -0
  133. package/dist/lib/ai/convex-session.js.map +1 -0
  134. package/dist/lib/ai/create-flow.d.ts +2 -2
  135. package/dist/lib/ai/create-flow.js +3 -3
  136. package/dist/lib/ai/fake-provider.d.ts +1 -1
  137. package/dist/lib/ai/index.d.ts +27 -16
  138. package/dist/lib/ai/index.js +27 -16
  139. package/dist/lib/ai/index.js.map +1 -1
  140. package/dist/lib/ai/knowledge.d.ts +1 -1
  141. package/dist/lib/ai/node-handler.d.ts +29 -0
  142. package/dist/lib/ai/node-handler.js +48 -0
  143. package/dist/lib/ai/node-handler.js.map +1 -0
  144. package/dist/lib/ai/provenance.d.ts +1 -1
  145. package/dist/lib/ai/route-provider.d.ts +1 -1
  146. package/dist/lib/ai/route.d.ts +1 -1
  147. package/dist/lib/ai/shape.d.ts +1 -1
  148. package/dist/lib/ai/translate-document.d.ts +1 -1
  149. package/dist/lib/ai/translate-document.js +3 -3
  150. package/dist/lib/ai/vite.d.ts +32 -0
  151. package/dist/lib/ai/vite.js +97 -0
  152. package/dist/lib/ai/vite.js.map +1 -0
  153. package/dist/lib/ai-panel.js +1 -1
  154. package/dist/lib/assets/index.d.ts +4 -4
  155. package/dist/lib/assets/index.js +4 -4
  156. package/dist/lib/assets/upload.d.ts +2 -2
  157. package/dist/lib/assets/upload.js +2 -2
  158. package/dist/lib/auth/convex-auth-adapter.d.ts +2 -2
  159. package/dist/lib/auth/convex-auth-adapter.js +1 -1
  160. package/dist/lib/auth/dev-auto-login-adapter.d.ts +1 -1
  161. package/dist/lib/auth/index.d.ts +9 -9
  162. package/dist/lib/auth/index.js +10 -10
  163. package/dist/lib/auth/local-auth-adapter.d.ts +1 -1
  164. package/dist/lib/auth/route-guard.d.ts +1 -1
  165. package/dist/lib/auth-errors.d.ts +1 -1
  166. package/dist/lib/clipboard/index.d.ts +3 -3
  167. package/dist/lib/clipboard/index.js +3 -3
  168. package/dist/lib/cms/published-documents.d.ts +1 -1
  169. package/dist/lib/cms-views/index.d.ts +2 -2
  170. package/dist/lib/cms-views/index.js +2 -2
  171. package/dist/lib/collection-view/collection-view-source.d.ts +4 -4
  172. package/dist/lib/data/collection-content.js +1 -1
  173. package/dist/lib/data/data-store.js +6 -6
  174. package/dist/lib/data/index.d.ts +4 -4
  175. package/dist/lib/data/index.js +4 -4
  176. package/dist/lib/data/sample-capture.js +4 -4
  177. package/dist/lib/data/sources-store.d.ts +1 -1
  178. package/dist/lib/diff-view-preference.js +1 -1
  179. package/dist/lib/dnd/gap-drag.d.ts +1 -1
  180. package/dist/lib/i18n/i18n.d.ts +1 -1
  181. package/dist/lib/i18n/i18n.js +1 -1
  182. package/dist/lib/i18n/index.d.ts +4 -4
  183. package/dist/lib/i18n/index.js +3 -3
  184. package/dist/lib/i18n/messages.en.d.ts +1 -1
  185. package/dist/lib/i18n/messages.en.js +1 -1
  186. package/dist/lib/locale/binding-fallback.d.ts +1 -1
  187. package/dist/lib/locale/binding-fallback.js +2 -2
  188. package/dist/lib/locale/index.d.ts +6 -6
  189. package/dist/lib/locale/index.js +6 -6
  190. package/dist/lib/locale/locale-switcher.js +3 -3
  191. package/dist/lib/locale/use-studio-locale.js +1 -1
  192. package/dist/lib/operations/asset-repository.d.ts +1 -1
  193. package/dist/lib/operations/cms-persistence.d.ts +1 -1
  194. package/dist/lib/operations/cms-persistence.js +1 -1
  195. package/dist/lib/operations/index.d.ts +6 -6
  196. package/dist/lib/operations/index.js +6 -6
  197. package/dist/lib/operations/session-hydration.d.ts +1 -1
  198. package/dist/lib/operations/session-hydration.js +1 -1
  199. package/dist/lib/operations/studio-operations.d.ts +1 -1
  200. package/dist/lib/operations/studio-operations.js +3 -3
  201. package/dist/lib/persistence/convex-adapter.js +2 -2
  202. package/dist/lib/persistence/convex-blob-storage.d.ts +1 -1
  203. package/dist/lib/persistence/convex-blob-storage.js +1 -1
  204. package/dist/lib/persistence/deployment-readiness.d.ts +2 -2
  205. package/dist/lib/persistence/index.d.ts +6 -6
  206. package/dist/lib/persistence/index.js +7 -7
  207. package/dist/lib/persona/labels.js +1 -1
  208. package/dist/lib/query/index.d.ts +2 -2
  209. package/dist/lib/query/index.js +1 -1
  210. package/dist/lib/rail.js +1 -1
  211. package/dist/lib/references/impact.d.ts +1 -1
  212. package/dist/lib/references/impact.js +1 -1
  213. package/dist/lib/references/index.d.ts +3 -3
  214. package/dist/lib/references/index.js +3 -3
  215. package/dist/lib/references/references-store.d.ts +2 -2
  216. package/dist/lib/references/references-store.js +3 -3
  217. package/dist/lib/registry/index.js +2 -2
  218. package/dist/lib/theme.js +1 -1
  219. package/dist/lib/webhooks/config.d.ts +1 -1
  220. package/dist/lib/webhooks/config.js +2 -2
  221. package/dist/lib/webhooks/dispatcher.js +2 -2
  222. package/dist/lib/webhooks/index.d.ts +6 -6
  223. package/dist/lib/webhooks/index.js +4 -4
  224. package/dist/lib/workspace/index.d.ts +7 -7
  225. package/dist/lib/workspace/index.js +3 -3
  226. package/dist/lib/workspace/switcher-source.d.ts +1 -1
  227. package/dist/router/index.d.ts +1 -1
  228. package/dist/router/index.js +1 -1
  229. package/dist/ui/avatar.js +1 -1
  230. package/dist/ui/badge.js +1 -1
  231. package/dist/ui/button.js +1 -1
  232. package/dist/ui/card.js +1 -1
  233. package/dist/ui/collapsible-section.js +2 -2
  234. package/dist/ui/dialog.js +1 -1
  235. package/dist/ui/dropdown-menu.js +1 -1
  236. package/dist/ui/field.js +1 -1
  237. package/dist/ui/index.d.ts +19 -19
  238. package/dist/ui/index.js +19 -19
  239. package/dist/ui/input.js +1 -1
  240. package/dist/ui/inspector.js +1 -1
  241. package/dist/ui/layout.js +1 -1
  242. package/dist/ui/panel.js +2 -2
  243. package/dist/ui/popover.js +1 -1
  244. package/dist/ui/row-item.js +2 -2
  245. package/dist/ui/segmented-control.js +1 -1
  246. package/dist/ui/separator.js +1 -1
  247. package/dist/ui/toolbar.js +2 -2
  248. package/dist/ui/typography.js +1 -1
  249. package/package.json +13 -5
  250. package/dist/components/assets/asset-library.d.ts +0 -14
  251. package/dist/components/assets/asset-library.js +0 -202
  252. package/dist/components/assets/asset-library.js.map +0 -1
  253. package/dist/components/backend-gate.d.ts +0 -19
  254. package/dist/components/backend-gate.js +0 -64
  255. package/dist/components/backend-gate.js.map +0 -1
  256. package/dist/components/builder/composition-scope.d.ts +0 -16
  257. package/dist/components/builder/composition-scope.js +0 -7
  258. package/dist/components/builder/composition-scope.js.map +0 -1
  259. package/dist/components/cms/alias-selector.d.ts +0 -20
  260. package/dist/components/cms/alias-selector.js +0 -34
  261. package/dist/components/cms/alias-selector.js.map +0 -1
  262. package/dist/components/cms/collections-sidebar.d.ts +0 -18
  263. package/dist/components/cms/collections-sidebar.js +0 -36
  264. package/dist/components/cms/collections-sidebar.js.map +0 -1
  265. package/dist/components/cms/new-page-dialog.d.ts +0 -22
  266. package/dist/components/cms/new-page-dialog.js +0 -42
  267. package/dist/components/cms/new-page-dialog.js.map +0 -1
  268. package/dist/components/cms/rich-text/embed-control.d.ts +0 -17
  269. package/dist/components/cms/rich-text/embed-control.js +0 -62
  270. package/dist/components/cms/rich-text/embed-control.js.map +0 -1
  271. package/dist/components/cms/rich-text/image-control.d.ts +0 -16
  272. package/dist/components/cms/rich-text/image-control.js +0 -36
  273. package/dist/components/cms/rich-text/image-control.js.map +0 -1
  274. package/dist/components/components/fixture-runner.d.ts +0 -10
  275. package/dist/components/components/fixture-runner.js +0 -27
  276. package/dist/components/components/fixture-runner.js.map +0 -1
  277. package/dist/components/references/builder-deep-link.d.ts +0 -12
  278. package/dist/components/references/builder-deep-link.js +0 -53
  279. package/dist/components/references/builder-deep-link.js.map +0 -1
  280. package/dist/components/routes/redirect-chain.d.ts +0 -9
  281. package/dist/components/routes/redirect-chain.js +0 -16
  282. package/dist/components/routes/redirect-chain.js.map +0 -1
  283. package/dist/components/routes/redirect-manager.d.ts +0 -13
  284. package/dist/components/routes/redirect-manager.js +0 -24
  285. package/dist/components/routes/redirect-manager.js.map +0 -1
  286. package/dist/components/routes/route-list.d.ts +0 -35
  287. package/dist/components/routes/route-list.js +0 -69
  288. package/dist/components/routes/route-list.js.map +0 -1
  289. package/dist/components/routes/routes-shell.d.ts +0 -14
  290. package/dist/components/routes/routes-shell.js +0 -68
  291. package/dist/components/routes/routes-shell.js.map +0 -1
  292. package/dist/components/sections.d.ts +0 -37
  293. package/dist/components/sections.js +0 -62
  294. package/dist/components/sections.js.map +0 -1
  295. package/dist/components/users/user-search.d.ts +0 -8
  296. package/dist/components/users/user-search.js +0 -13
  297. package/dist/components/users/user-search.js.map +0 -1
  298. package/dist/components/workspace-gate.d.ts +0 -12
  299. package/dist/components/workspace-gate.js +0 -28
  300. package/dist/components/workspace-gate.js.map +0 -1
  301. package/dist/lib/cms-views/views-store.d.ts +0 -70
  302. package/dist/lib/cms-views/views-store.js +0 -129
  303. package/dist/lib/cms-views/views-store.js.map +0 -1
  304. package/dist/lib/operations/graph-commands.d.ts +0 -136
  305. package/dist/lib/operations/graph-commands.js +0 -85
  306. package/dist/lib/operations/graph-commands.js.map +0 -1
  307. package/dist/lib/operations/graph-persistence.d.ts +0 -27
  308. package/dist/lib/operations/graph-persistence.js +0 -35
  309. package/dist/lib/operations/graph-persistence.js.map +0 -1
  310. package/dist/lib/routing/index.d.ts +0 -10
  311. package/dist/lib/routing/index.js +0 -11
  312. package/dist/lib/routing/index.js.map +0 -1
  313. package/dist/lib/routing/routing-analysis.d.ts +0 -26
  314. package/dist/lib/routing/routing-analysis.js +0 -37
  315. package/dist/lib/routing/routing-analysis.js.map +0 -1
  316. package/dist/lib/routing/routing-store.d.ts +0 -50
  317. package/dist/lib/routing/routing-store.js +0 -72
  318. package/dist/lib/routing/routing-store.js.map +0 -1
  319. package/dist/lib/working-graph.d.ts +0 -82
  320. package/dist/lib/working-graph.js +0 -113
  321. package/dist/lib/working-graph.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import type { Editor } from '@tiptap/react';
2
- import type { LinkTarget } from './link-control';
2
+ import type { LinkTarget } from './link-control.js';
3
3
  interface RichTextToolbarProps {
4
4
  editor: Editor;
5
5
  /** Internal-link destinations across the workspace (empty ⇒ external-only). */
@@ -3,10 +3,10 @@ import { useEditorState } from '@tiptap/react';
3
3
  import { Blocks, Bold, ChevronDown, Code, ImagePlus, Italic, Pilcrow, Redo2, Strikethrough, Underline, Undo2, } from 'lucide-react';
4
4
  import { Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, Toolbar, ToolbarGroup, ToolbarSeparator, } from '@elytracms/studio/ui';
5
5
  import { translate } from '@elytracms/studio/lib/i18n';
6
- import { ToolbarButton } from './toolbar-button';
7
- import { LinkControl } from './link-control';
8
- import { toolbarStateFromEditor } from './toolbar-state';
9
- import { BLOCK_COMMANDS, isBlockCommandActive } from './block-commands';
6
+ import { ToolbarButton } from './toolbar-button.js';
7
+ import { LinkControl } from './link-control.js';
8
+ import { toolbarStateFromEditor } from './toolbar-state.js';
9
+ import { BLOCK_COMMANDS, isBlockCommandActive } from './block-commands.js';
10
10
  /**
11
11
  * The CMS rich-text toolbar (EC-314) — a compact, Notion-grade control strip that
12
12
  * reads its active/enabled state reactively from the editor (`useEditorState`) so a
@@ -1,6 +1,6 @@
1
1
  import type { RefObject } from 'react';
2
2
  import type { CmsDocument, CollectionDef } from '@elytracms/core/cms-core';
3
- import type { AdvanceDirection, CellCoord } from './cell-edit';
3
+ import type { AdvanceDirection, CellCoord } from './cell-edit.js';
4
4
  /**
5
5
  * Table-level cell-edit controller (EC-168). Owns the state machine the cells
6
6
  * render from:
@@ -1,7 +1,7 @@
1
1
  import { useCallback, useRef, useState } from 'react';
2
2
  import { resolveField } from '@elytracms/core/cms-core';
3
- import { cellErrorMessage, cellKey, nextEditableCell } from './cell-edit';
4
- import { useCollectionView } from '../collection-view/collection-view-context';
3
+ import { cellErrorMessage, cellKey, nextEditableCell } from './cell-edit.js';
4
+ import { useCollectionView } from '../collection-view/collection-view-context.js';
5
5
  export function useCellEdit({ collection, docs, editableFields, }) {
6
6
  const source = useCollectionView();
7
7
  const [activeKey, setActiveKey] = useState(null);
@@ -1,5 +1,5 @@
1
1
  import type { Dispatch, SetStateAction } from 'react';
2
- import type { CompareState } from './document-editor-context';
2
+ import type { CompareState } from './document-editor-context.js';
3
3
  export interface CompareSelection {
4
4
  /** The open version comparison, or null when none (the sticky Compare tab). */
5
5
  compare: CompareState | null;
@@ -1,7 +1,7 @@
1
1
  import type { QueryKey } from '@tanstack/react-query';
2
2
  import type { CmsDocument, CollectionDef, DocumentRef } from '@elytracms/core/cms-core';
3
3
  import type { CollectionViewSource } from '@elytracms/studio/lib/collection-view/collection-view-source';
4
- import type { DiscardDraftStatus } from './discard-draft';
4
+ import type { DiscardDraftStatus } from './discard-draft.js';
5
5
  export interface DiscardController {
6
6
  status: DiscardDraftStatus;
7
7
  /** The hint shown when the item is disabled (view-read-only / up-to-date / loading). */
@@ -1,7 +1,7 @@
1
1
  import { useCallback, useState } from 'react';
2
2
  import { translate } from '@elytracms/studio/lib/i18n';
3
- import { discardDraftStatus } from './discard-draft';
4
- import { useRestoreVersion } from './use-restore-version';
3
+ import { discardDraftStatus } from './discard-draft.js';
4
+ import { useRestoreVersion } from './use-restore-version.js';
5
5
  /**
6
6
  * EC-316 / EC-325 — the "Discard changes" controller. Reverting the draft to the
7
7
  * published content IS a whole-document restore of the pinned published version,
@@ -1,5 +1,5 @@
1
1
  import type { DocumentRef } from '@elytracms/core/cms-core';
2
- import type { DocumentVersionsView } from './cms-store';
2
+ import type { DocumentVersionsView } from './cms-store.js';
3
3
  /** The one cache key for a document's version history — shared so the Versions
4
4
  * pane and the EC-298 compare view read through a single deduped query. */
5
5
  export declare function documentVersionsKey(projectId: string | undefined, ref: DocumentRef): readonly ["documentVersions", string, string, string];
@@ -1,6 +1,6 @@
1
1
  import { useMemo } from 'react';
2
2
  import { useOperationQuery } from '@elytracms/studio/lib/query';
3
- import { useCollectionView } from '../collection-view/collection-view-context';
3
+ import { useCollectionView } from '../collection-view/collection-view-context.js';
4
4
  /**
5
5
  * Recorded-version freshness (EC-322): re-read on exactly the commands that
6
6
  * change a document's version history or its live pin — NOT the whole `documents`
@@ -1,4 +1,4 @@
1
- import type { EmbedInspectorApi, EmbedInspectorPayload } from './rich-text/embed-inspector-context';
1
+ import type { EmbedInspectorApi, EmbedInspectorPayload } from './rich-text/embed-inspector-context.js';
2
2
  /**
3
3
  * 0.0.41 — the selection-driven embed-inspector host. A `componentEmbed` node
4
4
  * selection in a rich-text field swaps the inspector sidebar for the embed's prop
@@ -1,8 +1,8 @@
1
1
  import type { QueryKey } from '@tanstack/react-query';
2
2
  import type { CmsDocument, DocumentRef } from '@elytracms/core/cms-core';
3
3
  import type { CollectionViewSource } from '@elytracms/studio/lib/collection-view/collection-view-source';
4
- import type { DocumentVersionsView } from './cms-store';
5
- import type { PublishedSnapshotState } from './versions-model';
4
+ import type { DocumentVersionsView } from './cms-store.js';
5
+ import type { PublishedSnapshotState } from './versions-model.js';
6
6
  export type Perspective = 'draft' | 'published';
7
7
  /**
8
8
  * EC-226 — which document the fieldset renders, given the active perspective and
@@ -1,6 +1,6 @@
1
1
  import { useEffect, useState } from 'react';
2
- import { useDocumentVersionsQuery } from './use-document-versions';
3
- import { derivePublishedSnapshot, publishedVersionSnapshot } from './versions-model';
2
+ import { useDocumentVersionsQuery } from './use-document-versions.js';
3
+ import { derivePublishedSnapshot, publishedVersionSnapshot } from './versions-model.js';
4
4
  /**
5
5
  * EC-226 — which document the fieldset renders, given the active perspective and
6
6
  * the pinned published snapshot's load state. A pure decision so "never present
@@ -1,6 +1,6 @@
1
1
  import { useCallback, useState } from 'react';
2
2
  import { useOperationCache } from '@elytracms/studio/lib/query';
3
- import { flushDirtyDraft } from './discard-draft';
3
+ import { flushDirtyDraft } from './discard-draft.js';
4
4
  /**
5
5
  * EC-325 — the version-restore sequence, single-sourced. The Versions pane's
6
6
  * per-version restore, the Compare view's scoped/whole restore, and the header's
@@ -13,7 +13,7 @@ import { translate } from '@elytracms/studio/lib/i18n';
13
13
  * The shared `@elytracms/core/content` diff engine it uses stays eager (many other
14
14
  * critical-path modules import it), so what defers here is the compare UI itself.
15
15
  */
16
- const VersionCompareImpl = lazy(() => import('./version-compare').then((module) => ({ default: module.VersionCompare })));
16
+ const VersionCompareImpl = lazy(() => import('./version-compare.js').then((module) => ({ default: module.VersionCompare })));
17
17
  function CompareFallback() {
18
18
  return (_jsx("div", { className: "grid min-h-0 flex-1 place-items-center p-8", children: _jsx(Text, { size: "sm", tone: "muted", children: translate('cms.version.loadingCompare') }) }));
19
19
  }
@@ -4,12 +4,12 @@ import { ArrowRight, ChevronDown, ChevronLeft, ChevronRight, RotateCcw } from 'l
4
4
  import { diffDocuments } from '@elytracms/core/content';
5
5
  import { Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, Row, Spacer, Stack, Text, } from '@elytracms/studio/ui';
6
6
  import { translate } from '@elytracms/studio/lib/i18n';
7
- import { useCollectionView } from '../collection-view/collection-view-context';
8
- import { DocumentDiffView } from './document-diff-view';
9
- import { useDocumentEditor } from './document-editor-context';
10
- import { useDocumentVersionsQuery } from './use-document-versions';
11
- import { useRestoreVersion } from './use-restore-version';
12
- import { formatVersionTimestamp } from './versions-model';
7
+ import { useCollectionView } from '../collection-view/collection-view-context.js';
8
+ import { DocumentDiffView } from './document-diff-view.js';
9
+ import { useDocumentEditor } from './document-editor-context.js';
10
+ import { useDocumentVersionsQuery } from './use-document-versions.js';
11
+ import { useRestoreVersion } from './use-restore-version.js';
12
+ import { formatVersionTimestamp } from './versions-model.js';
13
13
  /**
14
14
  * EC-298/317 — the version compare view: the sticky **Compare** content tab. This
15
15
  * shell owns the version SELECTION chrome (the two re-pickable sides, the base
@@ -1,5 +1,5 @@
1
1
  import type { CmsDocument } from '@elytracms/core/cms-core';
2
- import type { DocumentVersionsView } from './cms-store';
2
+ import type { DocumentVersionsView } from './cms-store.js';
3
3
  /**
4
4
  * Does a recorded snapshot equal the working draft, by VALUE (EC-224)? Decides
5
5
  * whether the Versions pane shows "unpublished changes".
@@ -6,11 +6,11 @@ import { documentsSemanticEqual } from '@elytracms/core/content';
6
6
  import { useOperationCache } from '@elytracms/studio/lib/query';
7
7
  import { translate } from '@elytracms/studio/lib/i18n';
8
8
  import { cn } from '@elytracms/studio/lib/utils';
9
- import { useCollectionView } from '../collection-view/collection-view-context';
10
- import { useDocumentEditor } from './document-editor-context';
11
- import { useDocumentVersionsQuery } from './use-document-versions';
12
- import { useRestoreVersion } from './use-restore-version';
13
- import { formatVersionTimestamp } from './versions-model';
9
+ import { useCollectionView } from '../collection-view/collection-view-context.js';
10
+ import { useDocumentEditor } from './document-editor-context.js';
11
+ import { useDocumentVersionsQuery } from './use-document-versions.js';
12
+ import { useRestoreVersion } from './use-restore-version.js';
13
+ import { formatVersionTimestamp } from './versions-model.js';
14
14
  /**
15
15
  * EC-224 — the document-level **Versions** inspector pane. Re-homes the EC-180
16
16
  * VersionsPanel at the document level (the Sanity model): the continuous draft
@@ -3,8 +3,8 @@ import { ArrowDown, ArrowUp, Check, List, ListTree, SlidersHorizontal } from 'lu
3
3
  import { Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, Row, SegmentedControl, Text, } from '@elytracms/studio/ui';
4
4
  import { localizedLabel, translate } from '@elytracms/studio/lib/i18n';
5
5
  import { moveColumn, resolveColumns, toggleColumn } from '@elytracms/studio/lib/cms-views';
6
- import { fieldLabel } from './cms-labels';
7
- import { useCollectionView } from '../collection-view/collection-view-context';
6
+ import { fieldLabel } from './cms-labels.js';
7
+ import { useCollectionView } from '../collection-view/collection-view-context.js';
8
8
  /**
9
9
  * The view selector of the collection table (EC-169) — a segmented control that
10
10
  * switches between the built-in "All documents" default and the project's
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useMemo, useReducer, useRef } from 'react';
3
3
  import { Collaboration, createSequentialClock, createSequentialIds } from '@elytracms/core/collaboration';
4
4
  import { createRequiredContext } from '@elytracms/studio/lib/required-context';
5
- import { seedCollabSession } from './collab-seed';
5
+ import { seedCollabSession } from './collab-seed.js';
6
6
  const { Context: CollabContext, useRequired: useCollab } = createRequiredContext('Collab');
7
7
  const ME = { id: 'u-you', name: 'You' };
8
8
  export function CollabProvider({ projectId, children, }) {
@@ -2,8 +2,8 @@ import { useCallback, useMemo } from 'react';
2
2
  import { isHierarchical, urlForDocument } from '@elytracms/core/cms-core';
3
3
  import { studioPath } from '@elytracms/studio/router';
4
4
  import { resolveDeploymentFrontendUrl, resolveDeploymentRoutes } from '@elytracms/studio/lib/workspace';
5
- import { useCms } from '../cms/cms-store';
6
- import { useOptionalAssets } from '../assets/assets-store';
5
+ import { useCms } from '../cms/cms-store.js';
6
+ import { useOptionalAssets } from '../assets/assets-store.js';
7
7
  import { usePublishedDocuments } from '@elytracms/studio/lib/cms/published-documents';
8
8
  /**
9
9
  * Assemble a {@link CollectionViewSource} for a `cmsDocuments` collection from the
@@ -9,9 +9,9 @@ import { previewSpecs } from '@elytracms/studio/lib/registry/preview';
9
9
  import { Badge, Button, Code, Field, Row, Spacer, Stack, TabButton, Text } from '@elytracms/studio/ui';
10
10
  import { localizedLabel, translate } from '@elytracms/studio/lib/i18n';
11
11
  import { cn } from '@elytracms/studio/lib/utils';
12
- import { getCanvasStylesheetUrl } from '../builder/canvas-stylesheet';
13
- import { useCanvasViewports, viewportWidth } from '../builder/canvas-breakpoints';
14
- import { PropValueControl } from '../cms/prop-fields';
12
+ import { getCanvasStylesheetUrl } from '../builder/canvas-stylesheet.js';
13
+ import { useCanvasViewports, viewportWidth } from '../builder/canvas-breakpoints.js';
14
+ import { PropValueControl } from '../cms/prop-fields.js';
15
15
  /** Preview state for a manifest: the fixture selection + the live prop overrides. */
16
16
  export function usePreviewState(manifest) {
17
17
  const specs = useMemo(() => previewSpecs(manifest), [manifest]);
@@ -2,8 +2,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { BookOpen, Layers, MousePointerClick, Sparkles } from 'lucide-react';
3
3
  import { getStudioRegistry, registryHealth } from '@elytracms/studio/lib/registry';
4
4
  import { translate } from '@elytracms/studio/lib/i18n';
5
- import { RegistryBrowser } from './registry-browser';
6
- import { deriveComponentStats } from './taxonomy';
5
+ import { RegistryBrowser } from './registry-browser.js';
6
+ import { deriveComponentStats } from './taxonomy.js';
7
7
  import { Badge, Card, Code, Heading, Panel, PanelHeader, Row, Spacer, Stack, Text } from '@elytracms/studio/ui';
8
8
  /**
9
9
  * The Components section landing view (EC-050, overhauled EC-320). Serves BOTH
@@ -6,8 +6,8 @@ import { componentStatus, getStudioRegistry } from '@elytracms/studio/lib/regist
6
6
  import { translate } from '@elytracms/studio/lib/i18n';
7
7
  import { Code, Input, Row, SegmentedControl, Spacer, Stack, Text } from '@elytracms/studio/ui';
8
8
  import { cn } from '@elytracms/studio/lib/utils';
9
- import { ComponentStatusDot } from './component-status';
10
- import { deriveTaxonomy } from './taxonomy';
9
+ import { ComponentStatusDot } from './component-status.js';
10
+ import { deriveTaxonomy } from './taxonomy.js';
11
11
  /**
12
12
  * The registry browser sidebar (EC-050, taxonomy overhaul EC-320). A searchable,
13
13
  * two-level tree: namespace (base / project) → category (the manifest's declared
@@ -6,11 +6,11 @@ import { Button, Code, Dialog, DialogContent, DialogDescription, DialogFooter, D
6
6
  import { cn } from '@elytracms/studio/lib/utils';
7
7
  import { localizedLabel, translate } from '@elytracms/studio/lib/i18n';
8
8
  import { getInstantiatedKit } from '@elytracms/studio/lib/starters/kit-session';
9
- import { CmsSessionGate } from '../project-session';
10
- import { CmsProvider, useCms } from '../cms/cms-store';
11
- import { stageDocument } from '../cms/document-staging';
12
- import { resolveCmsInitialCollections } from '../app-views/default-modules';
13
- import { appendToBlockDocument, buildBlockDocument, canAppendTo, collectionsWithBlocks, isComponentAllowed, } from './transfer';
9
+ import { CmsSessionGate } from '../project-session.js';
10
+ import { CmsProvider, useCms } from '../cms/cms-store.js';
11
+ import { stageDocument } from '../cms/document-staging.js';
12
+ import { resolveCmsInitialCollections } from '../app-views/default-modules.js';
13
+ import { appendToBlockDocument, buildBlockDocument, canAppendTo, collectionsWithBlocks, isComponentAllowed, } from './transfer.js';
14
14
  /** Existing documents offered per target, beyond which the rest are hidden (filter to find them). */
15
15
  const MAX_EXISTING_TARGETS = 8;
16
16
  /**
@@ -1,9 +1,9 @@
1
1
  import { isBlocksField, isFieldLocalized, seedDefaults } from '@elytracms/core/cms-core';
2
2
  import { blockRootsOf, maxNodeIdSeq } from '@elytracms/core/project-graph';
3
- import { makeNodeIdCounter } from '../builder/builder-store';
4
- import { applyCellValue } from '../cms/cell-edit';
5
- import { mintDocumentId } from '../cms/cms-store';
6
- import { embedNodeFrom } from './component-preview';
3
+ import { makeNodeIdCounter } from '../builder/builder-store.js';
4
+ import { applyCellValue } from '../cms/cell-edit.js';
5
+ import { mintDocumentId } from '../cms/cms-store.js';
6
+ import { embedNodeFrom } from './component-preview.js';
7
7
  /**
8
8
  * Collections that can receive a transferred combination — those declaring a
9
9
  * `blocks` (composition) field. The first blocks field wins (a collection with a
@@ -4,8 +4,8 @@ import { roleGrantsCapability } from '@elytracms/core/persistence';
4
4
  import { Avatar, Badge, Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, Row, Stack, Text, } from '@elytracms/studio/ui';
5
5
  import { STUDIO_PROJECT_ROUTE, studioPath, useNavigate } from '@elytracms/studio/router';
6
6
  import { useT } from '@elytracms/studio/lib/i18n';
7
- import { useAuth, useProjectRole } from './auth-context';
8
- import { useTheme } from './theme-context';
7
+ import { useAuth, useProjectRole } from './auth-context.js';
8
+ import { useTheme } from './theme-context.js';
9
9
  /**
10
10
  * Current-user affordance in the shell header (EC-150): who is signed in,
11
11
  * their role on the active project (badge), theme switch, and sign-out. Role
@@ -3,8 +3,8 @@ import { useState } from 'react';
3
3
  import { Rocket, X } from 'lucide-react';
4
4
  import { Button, Row, Spacer, Text } from '@elytracms/studio/ui';
5
5
  import { translate } from '@elytracms/studio/lib/i18n';
6
- import { resolveBackendConfig } from '../lib/persistence/backend-mode';
7
- import { missingInstantPublishVars } from '../lib/delivery/instant-publish';
6
+ import { resolveBackendConfig } from '../lib/persistence/backend-mode.js';
7
+ import { missingInstantPublishVars } from '../lib/delivery/instant-publish.js';
8
8
  import { useOperationQuery } from '@elytracms/studio/lib/query';
9
9
  /**
10
10
  * EC-268: a boot-up health check for instant publish (EC-146). When the studio is
@@ -4,7 +4,7 @@ import { SESSION_EXPIRED_MESSAGE, SIGN_IN_AGAIN_LABEL, isSessionExpiredError, si
4
4
  import { Badge, Button, Row, Stack, Text } from '@elytracms/studio/ui';
5
5
  import { operationErrorLabel } from '@elytracms/studio/lib/persona/labels';
6
6
  import { translate } from '@elytracms/studio/lib/i18n';
7
- import { useOptionalAuth } from './auth-context';
7
+ import { useOptionalAuth } from './auth-context.js';
8
8
  /**
9
9
  * Shared error surface for failed/denied operations (EC-141). Every studio
10
10
  * surface renders rejected commands through this banner so a structured
@@ -4,11 +4,11 @@ import { Globe, LogIn, TerminalSquare } from 'lucide-react';
4
4
  import { Badge, Button, Card, Code, Heading, Row, Spacer, Stack, Text } from '@elytracms/studio/ui';
5
5
  import { hasProjectSession } from '@elytracms/studio/lib/auth';
6
6
  import { translate } from '@elytracms/studio/lib/i18n';
7
- import { PlaygroundBadge } from './playground-badge';
8
- import { SignInNeededBadge } from './sign-in-needed-badge';
9
- import { SectionStateView } from './section-state';
10
- import { useStudio } from './studio-context';
11
- import { useRecentProjects, useSwitcherEntries } from './workspace-projects';
7
+ import { PlaygroundBadge } from './playground-badge.js';
8
+ import { SignInNeededBadge } from './sign-in-needed-badge.js';
9
+ import { SectionStateView } from './section-state.js';
10
+ import { useStudio } from './studio-context.js';
11
+ import { useRecentProjects, useSwitcherEntries } from './workspace-projects.js';
12
12
  /**
13
13
  * Studio launcher / project list (brief §4.3, §8.1; reframed by EC-154). The
14
14
  * Studio's front door: lists the workspace's projects and routes into a
@@ -5,7 +5,7 @@ import { isPlaygroundMode } from '@elytracms/studio/lib/persistence';
5
5
  import { configureContentSession } from '@elytracms/studio/lib/data';
6
6
  import { resolveDeploymentRoutes } from '@elytracms/studio/lib/workspace';
7
7
  import { createRequiredContext } from '@elytracms/studio/lib/required-context';
8
- import { HydrationBoundary, useHydrationPhase } from './use-hydration-phase';
8
+ import { HydrationBoundary, useHydrationPhase } from './use-hydration-phase.js';
9
9
  const { Context: ProjectSessionContext, useRequired: useProjectSession } = createRequiredContext('ProjectSession');
10
10
  export function ProjectSessionProvider({ projectId, children, }) {
11
11
  const playground = isPlaygroundMode();
@@ -4,9 +4,9 @@ import { Check, ChevronsUpDown, FolderOpen } from 'lucide-react';
4
4
  import { hasProjectSession } from '@elytracms/studio/lib/auth';
5
5
  import { translate } from '@elytracms/studio/lib/i18n';
6
6
  import { Badge, Button, Code, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, Row, Spacer, Stack, Text, } from '@elytracms/studio/ui';
7
- import { useStudio } from './studio-context';
8
- import { useRecentProjects, useSwitcherEntries } from './workspace-projects';
9
- import { SignInNeededBadge } from './sign-in-needed-badge';
7
+ import { useStudio } from './studio-context.js';
8
+ import { useRecentProjects, useSwitcherEntries } from './workspace-projects.js';
9
+ import { SignInNeededBadge } from './sign-in-needed-badge.js';
10
10
  /**
11
11
  * The project switcher (EC-033, reframed by EC-154): with a workspace config
12
12
  * the list is config-driven — configured projects ∩ the user's grants, plus
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { RotateCcw } from 'lucide-react';
3
3
  import { Button } from '@elytracms/studio/ui';
4
4
  import { translate } from '@elytracms/studio/lib/i18n';
5
- import { SectionStateView } from './section-state';
5
+ import { SectionStateView } from './section-state.js';
6
6
  /**
7
7
  * The shared error/loading status gate for a rail module (EC-319/EC-323,
8
8
  * repointed onto `SectionStateView` in EC-327). The assets, users, and
@@ -1,9 +1,9 @@
1
1
  import { useCallback, useMemo } from 'react';
2
2
  import { createCollectionRegistry, validateDocument } from '@elytracms/core/cms-core';
3
3
  import { studioPath } from '@elytracms/studio/router';
4
- import { useRedirects } from './redirects-store';
5
- import { redirectsCollectionDef } from './redirects-schema';
6
- import { metaBagProjection, normalizeOkResult, useRailViewSource } from '../rail-view-source';
4
+ import { useRedirects } from './redirects-store.js';
5
+ import { redirectsCollectionDef } from './redirects-schema.js';
6
+ import { metaBagProjection, normalizeOkResult, useRailViewSource } from '../rail-view-source.js';
7
7
  /** The redirects rail is not localized — one implicit locale keeps the lens honest. */
8
8
  const REDIRECTS_LOCALE = 'en';
9
9
  const REDIRECTS_LOCALE_CONFIG = {
@@ -1,11 +1,11 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { translate } from '@elytracms/studio/lib/i18n';
3
- import { RedirectsProvider, useRedirects } from './redirects-store';
4
- import { useRedirectsCollectionViewSource } from './redirects-collection-view-source';
5
- import { CollectionViewProvider } from '../collection-view/collection-view-context';
6
- import { RailStoreStatus } from '../rail-store-status';
7
- import { LoadedCollectionTable } from '../cms/collection-table';
8
- import { PortableDetailEditor } from '../cms/detail-editor';
3
+ import { RedirectsProvider, useRedirects } from './redirects-store.js';
4
+ import { useRedirectsCollectionViewSource } from './redirects-collection-view-source.js';
5
+ import { CollectionViewProvider } from '../collection-view/collection-view-context.js';
6
+ import { RailStoreStatus } from '../rail-store-status.js';
7
+ import { LoadedCollectionTable } from '../cms/collection-table.js';
8
+ import { PortableDetailEditor } from '../cms/detail-editor.js';
9
9
  /**
10
10
  * The studio Redirects module (EC-303). Editorial redirects as data — the reuse
11
11
  * proof (with the users rail) that the portable interaction surfaces serve any
@@ -6,9 +6,9 @@ import { cn } from '@elytracms/studio/lib/utils';
6
6
  import { readCollapsedViews, storeCollapsedViews } from '@elytracms/studio/lib/rail';
7
7
  import { translate } from '@elytracms/studio/lib/i18n';
8
8
  import { Text } from '@elytracms/studio/ui';
9
- import { activeViewIdFromPath, isNavViewVisible, useStudioNav } from './app-views/sidebar';
10
- import { useFieldRenderers } from './cms/field-renderer';
11
- import { useProjectRole } from './auth-context';
9
+ import { activeViewIdFromPath, isNavViewVisible, useStudioNav } from './app-views/sidebar.js';
10
+ import { useFieldRenderers } from './cms/field-renderer.js';
11
+ import { useProjectRole } from './auth-context.js';
12
12
  /**
13
13
  * Vertical section rail (brief §8.1), driven by the configurable sidebar (EC-237):
14
14
  * a consumer-extendable tree of views / groups / separators resolved over the
@@ -3,7 +3,7 @@ import { Link, STUDIO_PROJECT_ROUTE } from '@elytracms/studio/router';
3
3
  import { availabilityOf, SECTIONS, sectionStateSchema } from '@elytracms/core/studio-core';
4
4
  import { Code, Row, Stack, Text } from '@elytracms/studio/ui';
5
5
  import { cn } from '@elytracms/studio/lib/utils';
6
- import { resolveSectionState, SectionStateView } from './section-state';
6
+ import { resolveSectionState, SectionStateView } from './section-state.js';
7
7
  /** Parse a `?state=` search param into a SectionState (undefined when absent/invalid). */
8
8
  export function parseSectionState(raw) {
9
9
  const parsed = sectionStateSchema.safeParse(raw);
@@ -6,13 +6,13 @@ import { studioSearch } from '@elytracms/studio/router/search';
6
6
  import { Button, Heading, Stack, Text } from '@elytracms/studio/ui';
7
7
  import { DataProvider } from '@elytracms/studio/lib/data';
8
8
  import { translate } from '@elytracms/studio/lib/i18n';
9
- import { useStudio } from './studio-context';
10
- import { StudioShell } from './studio-shell';
11
- import { AssetsProvider } from './assets/assets-store';
12
- import { CollabProvider } from './collab/collab-context';
13
- import { ProjectSessionProvider } from './project-session';
14
- import { flatPath } from './app-views/module';
15
- import { landingViewId, useStudioNav } from './app-views/sidebar';
9
+ import { useStudio } from './studio-context.js';
10
+ import { StudioShell } from './studio-shell.js';
11
+ import { AssetsProvider } from './assets/assets-store.js';
12
+ import { CollabProvider } from './collab/collab-context.js';
13
+ import { ProjectSessionProvider } from './project-session.js';
14
+ import { flatPath } from './app-views/module.js';
15
+ import { landingViewId, useStudioNav } from './app-views/sidebar.js';
16
16
  /**
17
17
  * EC-223 Stage 6 (catch-all routing): the studio's per-project route component.
18
18
  *
@@ -5,15 +5,15 @@ import { useCallback, useEffect, useState } from 'react';
5
5
  import { Row, Spacer, Toaster } from '@elytracms/studio/ui';
6
6
  import { readRailCollapsed, storeRailCollapsed } from '@elytracms/studio/lib/rail';
7
7
  import { translate } from '@elytracms/studio/lib/i18n';
8
- import { CurrentUserMenu } from './current-user-menu';
9
- import { DeliveryHealthBanner } from './delivery-health-banner';
10
- import { PlaygroundBadge } from './playground-badge';
11
- import { DevLoginBadge } from './dev-login-badge';
12
- import { AiPanelToggle } from './ai/ai-panel-toggle';
13
- import { ProjectSwitcher } from './project-switcher';
14
- import { SectionNav } from './section-nav';
15
- import { activeViewIdFromPath, useStudioNav } from './app-views/sidebar';
16
- import { BreadcrumbProvider, useBreadcrumbTrail } from './breadcrumb-context';
8
+ import { CurrentUserMenu } from './current-user-menu.js';
9
+ import { DeliveryHealthBanner } from './delivery-health-banner.js';
10
+ import { PlaygroundBadge } from './playground-badge.js';
11
+ import { DevLoginBadge } from './dev-login-badge.js';
12
+ import { AiPanelToggle } from './ai/ai-panel-toggle.js';
13
+ import { ProjectSwitcher } from './project-switcher.js';
14
+ import { SectionNav } from './section-nav.js';
15
+ import { activeViewIdFromPath, useStudioNav } from './app-views/sidebar.js';
16
+ import { BreadcrumbProvider, useBreadcrumbTrail } from './breadcrumb-context.js';
17
17
  /**
18
18
  * The Studio shell (brief §4.3, §8.1): a persistent top bar + section rail that
19
19
  * preserve the active project while the user moves between surfaces. The top bar
@@ -2,7 +2,7 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
2
2
  import { useCallback, useEffect, useRef, useState } from 'react';
3
3
  import { Button, Stack, Text } from '@elytracms/studio/ui';
4
4
  import { translate } from '@elytracms/studio/lib/i18n';
5
- import { OperationErrorBanner } from './operation-error';
5
+ import { OperationErrorBanner } from './operation-error.js';
6
6
  /**
7
7
  * `loader`'s IDENTITY is the refetch trigger — memoize it (`useCallback`) over
8
8
  * whatever inputs should re-hydrate (e.g. `projectId`), exactly like the
@@ -1,9 +1,9 @@
1
1
  import { useCallback } from 'react';
2
2
  import { studioPath } from '@elytracms/studio/router';
3
- import { useAuth } from '../auth-context';
4
- import { useUsers } from './users-store';
5
- import { usersCollectionDef } from './users-schema';
6
- import { metaBagProjection, normalizeOkResult, useRailViewSource } from '../rail-view-source';
3
+ import { useAuth } from '../auth-context.js';
4
+ import { useUsers } from './users-store.js';
5
+ import { usersCollectionDef } from './users-schema.js';
6
+ import { metaBagProjection, normalizeOkResult, useRailViewSource } from '../rail-view-source.js';
7
7
  /** The users rail is not localized — one implicit locale keeps the lens honest. */
8
8
  const USERS_LOCALE = 'en';
9
9
  const USERS_LOCALE_CONFIG = { default: USERS_LOCALE, locales: [USERS_LOCALE] };
@@ -2,15 +2,15 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { ShieldAlert } from 'lucide-react';
3
3
  import { Heading, Stack, Text } from '@elytracms/studio/ui';
4
4
  import { translate } from '@elytracms/studio/lib/i18n';
5
- import { useAuth, useProjectRole } from '../auth-context';
6
- import { UsersProvider, useUsers } from './users-store';
7
- import { useUsersCollectionViewSource } from './users-collection-view-source';
8
- import { CollectionViewProvider } from '../collection-view/collection-view-context';
9
- import { RailStoreStatus } from '../rail-store-status';
10
- import { LoadedCollectionTable } from '../cms/collection-table';
11
- import { PortableDetailEditor } from '../cms/detail-editor';
12
- import { AccountSettings } from '../account/account-settings';
13
- import { InviteUserBar } from './invite-user-bar';
5
+ import { useAuth, useProjectRole } from '../auth-context.js';
6
+ import { UsersProvider, useUsers } from './users-store.js';
7
+ import { useUsersCollectionViewSource } from './users-collection-view-source.js';
8
+ import { CollectionViewProvider } from '../collection-view/collection-view-context.js';
9
+ import { RailStoreStatus } from '../rail-store-status.js';
10
+ import { LoadedCollectionTable } from '../cms/collection-table.js';
11
+ import { PortableDetailEditor } from '../cms/detail-editor.js';
12
+ import { AccountSettings } from '../account/account-settings.js';
13
+ import { InviteUserBar } from './invite-user-bar.js';
14
14
  /**
15
15
  * The studio Users module (EC-240). An admin-only section for managing who has
16
16
  * access to this deployment and their role. AD-19: it is the **reuse proof** for
@@ -1,6 +1,6 @@
1
1
  import { useMemo } from 'react';
2
2
  import { getWorkspaceState, selectSwitcherProjects } from '@elytracms/studio/lib/workspace';
3
- import { useStudio } from './studio-context';
3
+ import { useStudio } from './studio-context.js';
4
4
  /**
5
5
  * Config-driven project source for the switcher + launcher (EC-154, reframed for
6
6
  * EC-179). The decision logic is the pure `selectSwitcherProjects`; this hook
@@ -38,18 +38,18 @@
38
38
  * createStudio(config, studioConfig)
39
39
  * ```
40
40
  */
41
- export { defineStudio } from './components/app-views/studio-config';
42
- export type { StudioConfig, CustomFieldRenderer, CustomFieldRendererProps, } from './components/app-views/studio-config';
43
- export { nav } from './components/app-views/default-modules';
44
- export type { CmsViewConfig, BuiltinViewConfig, CustomViewConfig, } from './components/app-views/default-modules';
45
- export type { AppViewContext, AppViewModule, SidebarNode } from './components/app-views/module';
46
- export { createStudio } from './lib/workspace';
41
+ export { defineStudio } from './components/app-views/studio-config.js';
42
+ export type { StudioConfig, CustomFieldRenderer, CustomFieldRendererProps, } from './components/app-views/studio-config.js';
43
+ export { nav } from './components/app-views/default-modules.js';
44
+ export type { CmsViewConfig, BuiltinViewConfig, CustomViewConfig, } from './components/app-views/default-modules.js';
45
+ export type { AppViewContext, AppViewModule, SidebarNode } from './components/app-views/module.js';
46
+ export { createStudio } from './lib/workspace/index.js';
47
47
  /** A ready-made example renderer; a consuming repo may use it or author its own. */
48
- export { colorFieldRenderer } from './components/cms/field-renderer';
48
+ export { colorFieldRenderer } from './components/cms/field-renderer.js';
49
49
  /**
50
50
  * Studio-UI localization (EC-241): author a translation catalog for `defineStudio({
51
51
  * i18n })`. `msg` is only needed to build an in-repo *source* catalog with translator
52
52
  * hints; a plain `MessageCatalog` (flat key → string) is all a consumer supplies.
53
53
  */
54
- export { msg } from './lib/i18n';
55
- export type { MessageCatalog, SourceMessage, StudioI18nConfig } from './lib/i18n';
54
+ export { msg } from './lib/i18n/index.js';
55
+ export type { MessageCatalog, SourceMessage, StudioI18nConfig } from './lib/i18n/index.js';