@elytracms/studio 0.0.51 → 0.0.53

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 (311) hide show
  1. package/convex/auth.ts +135 -62
  2. package/convex/invites.ts +77 -0
  3. package/dist/components/account/account-settings.js +4 -4
  4. package/dist/components/account/credential-panel.js +1 -1
  5. package/dist/components/account/self-account-view-source.js +3 -3
  6. package/dist/components/ai/ai-chat-panel-lazy.js +1 -1
  7. package/dist/components/ai/ai-chat-panel.js +4 -4
  8. package/dist/components/ai/ai-cms-panel.js +1 -1
  9. package/dist/components/ai/proposal-card.js +4 -4
  10. package/dist/components/ai/translate-document-action.js +1 -1
  11. package/dist/components/ai/translate-document-dialog.d.ts +1 -1
  12. package/dist/components/app-views/default-modules.d.ts +3 -3
  13. package/dist/components/app-views/default-modules.js +20 -20
  14. package/dist/components/app-views/sidebar.d.ts +1 -1
  15. package/dist/components/app-views/sidebar.js +2 -2
  16. package/dist/components/app-views/studio-config.d.ts +1 -1
  17. package/dist/components/assets/asset-detail.js +9 -9
  18. package/dist/components/assets/asset-grid.js +7 -7
  19. package/dist/components/assets/asset-thumb.d.ts +1 -1
  20. package/dist/components/assets/asset-thumb.js +2 -2
  21. package/dist/components/assets/assets-collection-view-source.js +3 -3
  22. package/dist/components/assets/assets-module.js +8 -8
  23. package/dist/components/assets/assets-store.d.ts +1 -1
  24. package/dist/components/assets/assets-store.js +1 -1
  25. package/dist/components/builder/blocks-model.js +1 -1
  26. package/dist/components/builder/blocks-panel.d.ts +1 -1
  27. package/dist/components/builder/blocks-panel.js +6 -6
  28. package/dist/components/builder/canvas.js +11 -11
  29. package/dist/components/builder/clipboard-actions.js +2 -2
  30. package/dist/components/builder/composition-field-editor-lazy.d.ts +1 -1
  31. package/dist/components/builder/composition-field-editor-lazy.js +1 -1
  32. package/dist/components/builder/composition-field-editor.d.ts +1 -1
  33. package/dist/components/builder/composition-field-editor.js +9 -9
  34. package/dist/components/builder/insert-context.d.ts +2 -2
  35. package/dist/components/builder/insert-context.js +2 -2
  36. package/dist/components/builder/insert-menu.d.ts +2 -2
  37. package/dist/components/builder/insert-menu.js +1 -1
  38. package/dist/components/builder/layout-inspector.js +1 -1
  39. package/dist/components/builder/page-tree.js +5 -5
  40. package/dist/components/builder/property-inspector.js +3 -3
  41. package/dist/components/builder/reuse-context.d.ts +1 -1
  42. package/dist/components/builder/reuse-context.js +3 -3
  43. package/dist/components/builder/spacing-handles.js +2 -2
  44. package/dist/components/cms/asset-picker.js +4 -4
  45. package/dist/components/cms/bulk-actions.js +1 -1
  46. package/dist/components/cms/bulk-bar.d.ts +1 -1
  47. package/dist/components/cms/bulk-bar.js +3 -3
  48. package/dist/components/cms/cell-edit.js +1 -1
  49. package/dist/components/cms/cell.js +2 -2
  50. package/dist/components/cms/cms-index.js +1 -1
  51. package/dist/components/cms/cms-store.d.ts +2 -2
  52. package/dist/components/cms/cms-store.js +6 -6
  53. package/dist/components/cms/collection-table.js +17 -17
  54. package/dist/components/cms/detail-editor.js +31 -31
  55. package/dist/components/cms/document-diff-view.js +4 -4
  56. package/dist/components/cms/editable-cell.d.ts +1 -1
  57. package/dist/components/cms/editable-cell.js +6 -6
  58. package/dist/components/cms/field-control.js +15 -15
  59. package/dist/components/cms/field-renderer.d.ts +2 -2
  60. package/dist/components/cms/filter-builder.js +3 -3
  61. package/dist/components/cms/import-export.js +1 -1
  62. package/dist/components/cms/issues-pane.js +1 -1
  63. package/dist/components/cms/prop-fields.js +3 -3
  64. package/dist/components/cms/reference-confirm.js +1 -1
  65. package/dist/components/cms/relation-picker.js +1 -1
  66. package/dist/components/cms/rich-text/block-commands.d.ts +1 -1
  67. package/dist/components/cms/rich-text/component-embed.js +2 -2
  68. package/dist/components/cms/rich-text/editor.js +8 -8
  69. package/dist/components/cms/rich-text/embed-inspector.d.ts +1 -1
  70. package/dist/components/cms/rich-text/embed-inspector.js +2 -2
  71. package/dist/components/cms/rich-text/embed-picker.js +1 -1
  72. package/dist/components/cms/rich-text/embed-props.js +1 -1
  73. package/dist/components/cms/rich-text/extensions.d.ts +1 -1
  74. package/dist/components/cms/rich-text/extensions.js +4 -4
  75. package/dist/components/cms/rich-text/index.d.ts +1 -1
  76. package/dist/components/cms/rich-text/index.js +1 -1
  77. package/dist/components/cms/rich-text/insert.d.ts +1 -1
  78. package/dist/components/cms/rich-text/lazy.d.ts +1 -1
  79. package/dist/components/cms/rich-text/lazy.js +1 -1
  80. package/dist/components/cms/rich-text/slash-command.js +1 -1
  81. package/dist/components/cms/rich-text/toolbar.d.ts +1 -1
  82. package/dist/components/cms/rich-text/toolbar.js +4 -4
  83. package/dist/components/cms/use-cell-edit.d.ts +1 -1
  84. package/dist/components/cms/use-cell-edit.js +2 -2
  85. package/dist/components/cms/use-compare-selection.d.ts +1 -1
  86. package/dist/components/cms/use-discard-controller.d.ts +1 -1
  87. package/dist/components/cms/use-discard-controller.js +2 -2
  88. package/dist/components/cms/use-document-versions.d.ts +1 -1
  89. package/dist/components/cms/use-document-versions.js +1 -1
  90. package/dist/components/cms/use-embed-inspector-host.d.ts +1 -1
  91. package/dist/components/cms/use-published-perspective.d.ts +2 -2
  92. package/dist/components/cms/use-published-perspective.js +2 -2
  93. package/dist/components/cms/use-restore-version.js +1 -1
  94. package/dist/components/cms/version-compare-lazy.js +1 -1
  95. package/dist/components/cms/version-compare.js +6 -6
  96. package/dist/components/cms/versions-model.d.ts +1 -1
  97. package/dist/components/cms/versions-pane.js +5 -5
  98. package/dist/components/cms/view-bar.js +2 -2
  99. package/dist/components/collab/collab-context.js +1 -1
  100. package/dist/components/collection-view/cms-collection-view-source.js +2 -2
  101. package/dist/components/components/component-preview.js +3 -3
  102. package/dist/components/components/components-index.js +2 -2
  103. package/dist/components/components/registry-browser.js +2 -2
  104. package/dist/components/components/transfer-dialog.js +5 -5
  105. package/dist/components/components/transfer.js +4 -4
  106. package/dist/components/current-user-menu.js +2 -2
  107. package/dist/components/delivery-health-banner.js +2 -2
  108. package/dist/components/operation-error.js +1 -1
  109. package/dist/components/project-list.js +5 -5
  110. package/dist/components/project-session.js +1 -1
  111. package/dist/components/project-switcher.js +3 -3
  112. package/dist/components/rail-store-status.js +1 -1
  113. package/dist/components/redirects/redirects-collection-view-source.js +3 -3
  114. package/dist/components/redirects/redirects-module.js +6 -6
  115. package/dist/components/section-nav.js +3 -3
  116. package/dist/components/section-surface.js +1 -1
  117. package/dist/components/studio-project-screen.js +7 -7
  118. package/dist/components/studio-shell.js +9 -9
  119. package/dist/components/use-hydration-phase.js +1 -1
  120. package/dist/components/users/users-collection-view-source.js +4 -4
  121. package/dist/components/users/users-module.js +9 -9
  122. package/dist/components/workspace-projects.js +1 -1
  123. package/dist/customization.d.ts +9 -9
  124. package/dist/customization.js +5 -5
  125. package/dist/lib/ai/anthropic-provider.d.ts +1 -1
  126. package/dist/lib/ai/apply-content.d.ts +1 -1
  127. package/dist/lib/ai/apply-content.js +3 -3
  128. package/dist/lib/ai/chat-state.d.ts +2 -2
  129. package/dist/lib/ai/config.d.ts +1 -1
  130. package/dist/lib/ai/create-flow.d.ts +2 -2
  131. package/dist/lib/ai/create-flow.js +3 -3
  132. package/dist/lib/ai/fake-provider.d.ts +1 -1
  133. package/dist/lib/ai/index.d.ts +15 -15
  134. package/dist/lib/ai/index.js +15 -15
  135. package/dist/lib/ai/knowledge.d.ts +1 -1
  136. package/dist/lib/ai/provenance.d.ts +1 -1
  137. package/dist/lib/ai/route-provider.d.ts +1 -1
  138. package/dist/lib/ai/route.d.ts +1 -1
  139. package/dist/lib/ai/shape.d.ts +1 -1
  140. package/dist/lib/ai/translate-document.d.ts +1 -1
  141. package/dist/lib/ai/translate-document.js +3 -3
  142. package/dist/lib/ai-panel.js +1 -1
  143. package/dist/lib/assets/index.d.ts +4 -4
  144. package/dist/lib/assets/index.js +4 -4
  145. package/dist/lib/assets/upload.d.ts +2 -2
  146. package/dist/lib/assets/upload.js +2 -2
  147. package/dist/lib/auth/convex-auth-adapter.d.ts +53 -2
  148. package/dist/lib/auth/convex-auth-adapter.js +149 -68
  149. package/dist/lib/auth/convex-auth-adapter.js.map +1 -1
  150. package/dist/lib/auth/dev-auto-login-adapter.d.ts +1 -1
  151. package/dist/lib/auth/index.d.ts +9 -9
  152. package/dist/lib/auth/index.js +10 -10
  153. package/dist/lib/auth/local-auth-adapter.d.ts +1 -1
  154. package/dist/lib/auth/route-guard.d.ts +1 -1
  155. package/dist/lib/auth-errors.d.ts +1 -1
  156. package/dist/lib/clipboard/index.d.ts +3 -3
  157. package/dist/lib/clipboard/index.js +3 -3
  158. package/dist/lib/cms/published-documents.d.ts +1 -1
  159. package/dist/lib/cms-views/index.d.ts +2 -2
  160. package/dist/lib/cms-views/index.js +2 -2
  161. package/dist/lib/collection-view/collection-view-source.d.ts +4 -4
  162. package/dist/lib/data/collection-content.js +1 -1
  163. package/dist/lib/data/data-store.js +6 -6
  164. package/dist/lib/data/index.d.ts +4 -4
  165. package/dist/lib/data/index.js +4 -4
  166. package/dist/lib/data/sample-capture.js +4 -4
  167. package/dist/lib/data/sources-store.d.ts +1 -1
  168. package/dist/lib/diff-view-preference.js +1 -1
  169. package/dist/lib/dnd/gap-drag.d.ts +1 -1
  170. package/dist/lib/i18n/i18n.d.ts +1 -1
  171. package/dist/lib/i18n/i18n.js +1 -1
  172. package/dist/lib/i18n/index.d.ts +4 -4
  173. package/dist/lib/i18n/index.js +3 -3
  174. package/dist/lib/i18n/messages.en.d.ts +1 -1
  175. package/dist/lib/i18n/messages.en.js +1 -1
  176. package/dist/lib/locale/binding-fallback.d.ts +1 -1
  177. package/dist/lib/locale/binding-fallback.js +2 -2
  178. package/dist/lib/locale/index.d.ts +6 -6
  179. package/dist/lib/locale/index.js +6 -6
  180. package/dist/lib/locale/locale-switcher.js +3 -3
  181. package/dist/lib/locale/use-studio-locale.js +1 -1
  182. package/dist/lib/operations/asset-repository.d.ts +1 -1
  183. package/dist/lib/operations/cms-persistence.d.ts +1 -1
  184. package/dist/lib/operations/cms-persistence.js +1 -1
  185. package/dist/lib/operations/index.d.ts +6 -6
  186. package/dist/lib/operations/index.js +6 -6
  187. package/dist/lib/operations/session-hydration.d.ts +1 -1
  188. package/dist/lib/operations/session-hydration.js +1 -1
  189. package/dist/lib/operations/studio-operations.d.ts +1 -1
  190. package/dist/lib/operations/studio-operations.js +3 -3
  191. package/dist/lib/persistence/convex-adapter.js +2 -2
  192. package/dist/lib/persistence/convex-blob-storage.d.ts +1 -1
  193. package/dist/lib/persistence/convex-blob-storage.js +1 -1
  194. package/dist/lib/persistence/deployment-readiness.d.ts +2 -2
  195. package/dist/lib/persistence/index.d.ts +6 -6
  196. package/dist/lib/persistence/index.js +7 -7
  197. package/dist/lib/persona/labels.js +1 -1
  198. package/dist/lib/query/index.d.ts +2 -2
  199. package/dist/lib/query/index.js +1 -1
  200. package/dist/lib/rail.js +1 -1
  201. package/dist/lib/references/impact.d.ts +1 -1
  202. package/dist/lib/references/impact.js +1 -1
  203. package/dist/lib/references/index.d.ts +3 -3
  204. package/dist/lib/references/index.js +3 -3
  205. package/dist/lib/references/references-store.d.ts +2 -2
  206. package/dist/lib/references/references-store.js +3 -3
  207. package/dist/lib/registry/index.js +2 -2
  208. package/dist/lib/theme.js +1 -1
  209. package/dist/lib/webhooks/config.d.ts +1 -1
  210. package/dist/lib/webhooks/config.js +2 -2
  211. package/dist/lib/webhooks/dispatcher.js +2 -2
  212. package/dist/lib/webhooks/index.d.ts +6 -6
  213. package/dist/lib/webhooks/index.js +4 -4
  214. package/dist/lib/workspace/index.d.ts +7 -7
  215. package/dist/lib/workspace/index.js +3 -3
  216. package/dist/lib/workspace/switcher-source.d.ts +1 -1
  217. package/dist/router/index.d.ts +1 -1
  218. package/dist/router/index.js +1 -1
  219. package/dist/ui/avatar.js +1 -1
  220. package/dist/ui/badge.js +1 -1
  221. package/dist/ui/button.js +1 -1
  222. package/dist/ui/card.js +1 -1
  223. package/dist/ui/collapsible-section.js +2 -2
  224. package/dist/ui/dialog.js +1 -1
  225. package/dist/ui/dropdown-menu.js +1 -1
  226. package/dist/ui/field.js +1 -1
  227. package/dist/ui/index.d.ts +19 -19
  228. package/dist/ui/index.js +19 -19
  229. package/dist/ui/input.js +1 -1
  230. package/dist/ui/inspector.js +1 -1
  231. package/dist/ui/layout.js +1 -1
  232. package/dist/ui/panel.js +2 -2
  233. package/dist/ui/popover.js +1 -1
  234. package/dist/ui/row-item.js +2 -2
  235. package/dist/ui/segmented-control.js +1 -1
  236. package/dist/ui/separator.js +1 -1
  237. package/dist/ui/toolbar.js +2 -2
  238. package/dist/ui/typography.js +1 -1
  239. package/package.json +3 -3
  240. package/dist/components/assets/asset-library.d.ts +0 -14
  241. package/dist/components/assets/asset-library.js +0 -202
  242. package/dist/components/assets/asset-library.js.map +0 -1
  243. package/dist/components/backend-gate.d.ts +0 -19
  244. package/dist/components/backend-gate.js +0 -64
  245. package/dist/components/backend-gate.js.map +0 -1
  246. package/dist/components/builder/composition-scope.d.ts +0 -16
  247. package/dist/components/builder/composition-scope.js +0 -7
  248. package/dist/components/builder/composition-scope.js.map +0 -1
  249. package/dist/components/cms/alias-selector.d.ts +0 -20
  250. package/dist/components/cms/alias-selector.js +0 -34
  251. package/dist/components/cms/alias-selector.js.map +0 -1
  252. package/dist/components/cms/collections-sidebar.d.ts +0 -18
  253. package/dist/components/cms/collections-sidebar.js +0 -36
  254. package/dist/components/cms/collections-sidebar.js.map +0 -1
  255. package/dist/components/cms/new-page-dialog.d.ts +0 -22
  256. package/dist/components/cms/new-page-dialog.js +0 -42
  257. package/dist/components/cms/new-page-dialog.js.map +0 -1
  258. package/dist/components/cms/rich-text/embed-control.d.ts +0 -17
  259. package/dist/components/cms/rich-text/embed-control.js +0 -62
  260. package/dist/components/cms/rich-text/embed-control.js.map +0 -1
  261. package/dist/components/cms/rich-text/image-control.d.ts +0 -16
  262. package/dist/components/cms/rich-text/image-control.js +0 -36
  263. package/dist/components/cms/rich-text/image-control.js.map +0 -1
  264. package/dist/components/components/fixture-runner.d.ts +0 -10
  265. package/dist/components/components/fixture-runner.js +0 -27
  266. package/dist/components/components/fixture-runner.js.map +0 -1
  267. package/dist/components/references/builder-deep-link.d.ts +0 -12
  268. package/dist/components/references/builder-deep-link.js +0 -53
  269. package/dist/components/references/builder-deep-link.js.map +0 -1
  270. package/dist/components/routes/redirect-chain.d.ts +0 -9
  271. package/dist/components/routes/redirect-chain.js +0 -16
  272. package/dist/components/routes/redirect-chain.js.map +0 -1
  273. package/dist/components/routes/redirect-manager.d.ts +0 -13
  274. package/dist/components/routes/redirect-manager.js +0 -24
  275. package/dist/components/routes/redirect-manager.js.map +0 -1
  276. package/dist/components/routes/route-list.d.ts +0 -35
  277. package/dist/components/routes/route-list.js +0 -69
  278. package/dist/components/routes/route-list.js.map +0 -1
  279. package/dist/components/routes/routes-shell.d.ts +0 -14
  280. package/dist/components/routes/routes-shell.js +0 -68
  281. package/dist/components/routes/routes-shell.js.map +0 -1
  282. package/dist/components/sections.d.ts +0 -37
  283. package/dist/components/sections.js +0 -62
  284. package/dist/components/sections.js.map +0 -1
  285. package/dist/components/users/user-search.d.ts +0 -8
  286. package/dist/components/users/user-search.js +0 -13
  287. package/dist/components/users/user-search.js.map +0 -1
  288. package/dist/components/workspace-gate.d.ts +0 -12
  289. package/dist/components/workspace-gate.js +0 -28
  290. package/dist/components/workspace-gate.js.map +0 -1
  291. package/dist/lib/cms-views/views-store.d.ts +0 -70
  292. package/dist/lib/cms-views/views-store.js +0 -129
  293. package/dist/lib/cms-views/views-store.js.map +0 -1
  294. package/dist/lib/operations/graph-commands.d.ts +0 -136
  295. package/dist/lib/operations/graph-commands.js +0 -85
  296. package/dist/lib/operations/graph-commands.js.map +0 -1
  297. package/dist/lib/operations/graph-persistence.d.ts +0 -27
  298. package/dist/lib/operations/graph-persistence.js +0 -35
  299. package/dist/lib/operations/graph-persistence.js.map +0 -1
  300. package/dist/lib/routing/index.d.ts +0 -10
  301. package/dist/lib/routing/index.js +0 -11
  302. package/dist/lib/routing/index.js.map +0 -1
  303. package/dist/lib/routing/routing-analysis.d.ts +0 -26
  304. package/dist/lib/routing/routing-analysis.js +0 -37
  305. package/dist/lib/routing/routing-analysis.js.map +0 -1
  306. package/dist/lib/routing/routing-store.d.ts +0 -50
  307. package/dist/lib/routing/routing-store.js +0 -72
  308. package/dist/lib/routing/routing-store.js.map +0 -1
  309. package/dist/lib/working-graph.d.ts +0 -82
  310. package/dist/lib/working-graph.js +0 -113
  311. package/dist/lib/working-graph.js.map +0 -1
@@ -8,21 +8,21 @@ import { Button, Card, Code, Dialog, DialogContent, DialogDescription, DialogHea
8
8
  import { cn } from '@elytracms/studio/lib/utils';
9
9
  import { localizedLabel, translate } from '@elytracms/studio/lib/i18n';
10
10
  import { activeLocaleValues } from '@elytracms/studio/lib/locale';
11
- import { applyAssetSelection, assetIdsOf, singleAssetIdOf } from '../assets/asset-selection';
12
- import { useOptionalAssets } from '../assets/assets-store';
13
- import { AssetThumb, FocalCropPreviews, FocalPointPicker, useAssetRecord } from '../assets/asset-thumb';
14
- import { newlyAddedAssetIds } from '../assets/focal-point';
15
- import { assetMetaFieldsOf, pruneMeta } from '../assets/asset-metadata';
16
- import { fieldLabel } from './cms-labels';
17
- import { useCollectionView } from '../collection-view/collection-view-context';
18
- import { useFieldDensity } from './field-density';
19
- import { useOptionalDocumentEditor } from './document-editor-context';
20
- import { toRefArray } from './cell';
21
- import { RelationPicker } from './relation-picker';
22
- import { AssetPicker } from './asset-picker';
23
- import { RichTextEditor } from './rich-text';
24
- import { DocumentUrlSegment } from './document-url-path';
25
- import { FieldRendererBoundary, FieldRendererIssue, useFieldRenderers, } from './field-renderer';
11
+ import { applyAssetSelection, assetIdsOf, singleAssetIdOf } from '../assets/asset-selection.js';
12
+ import { useOptionalAssets } from '../assets/assets-store.js';
13
+ import { AssetThumb, FocalCropPreviews, FocalPointPicker, useAssetRecord } from '../assets/asset-thumb.js';
14
+ import { newlyAddedAssetIds } from '../assets/focal-point.js';
15
+ import { assetMetaFieldsOf, pruneMeta } from '../assets/asset-metadata.js';
16
+ import { fieldLabel } from './cms-labels.js';
17
+ import { useCollectionView } from '../collection-view/collection-view-context.js';
18
+ import { useFieldDensity } from './field-density.js';
19
+ import { useOptionalDocumentEditor } from './document-editor-context.js';
20
+ import { toRefArray } from './cell.js';
21
+ import { RelationPicker } from './relation-picker.js';
22
+ import { AssetPicker } from './asset-picker.js';
23
+ import { RichTextEditor } from './rich-text/index.js';
24
+ import { DocumentUrlSegment } from './document-url-path.js';
25
+ import { FieldRendererBoundary, FieldRendererIssue, useFieldRenderers, } from './field-renderer.js';
26
26
  /**
27
27
  * The document-editor field control. Resolves a project's custom renderer by the
28
28
  * field's `form.control` (EC-238, customization seam EC-236) and falls back to the
@@ -1,7 +1,7 @@
1
1
  import { Component } from 'react';
2
2
  import type { ReactNode } from 'react';
3
3
  import type { CustomizationIssue } from '@elytracms/core/studio-core';
4
- import type { CustomFieldRenderer } from '../app-views/studio-config';
4
+ import type { CustomFieldRenderer } from '../app-views/studio-config.js';
5
5
  /**
6
6
  * EC-238 — custom field renderers, an instance of the EC-236 customization seam.
7
7
  *
@@ -19,7 +19,7 @@ import type { CustomFieldRenderer } from '../app-views/studio-config';
19
19
  * field, or a renderer that throws — surfaces a visible issue, never a silent drop
20
20
  * or a crash.
21
21
  */
22
- export type { CustomFieldRenderer, CustomFieldRendererProps } from '../app-views/studio-config';
22
+ export type { CustomFieldRenderer, CustomFieldRendererProps } from '../app-views/studio-config.js';
23
23
  export interface ResolvedFieldRenderers {
24
24
  /** The custom renderer for a control name, or `undefined` → use the built-in. */
25
25
  get(control: string): CustomFieldRenderer | undefined;
@@ -5,9 +5,9 @@ import { Button, Popover, PopoverAnchor, PopoverContent, Row, Select, Spacer, St
5
5
  import { cn } from '@elytracms/studio/lib/utils';
6
6
  import { translate } from '@elytracms/studio/lib/i18n';
7
7
  import { STATE_FIELD, defaultClause, filterableFieldOptions, operatorChoices, operatorLabelKey, scalarListFromText, scalarListToText, validateClauses, } from '@elytracms/studio/lib/cms-views';
8
- import { useCollectionView } from '../collection-view/collection-view-context';
9
- import { RelationPicker } from './relation-picker';
10
- import { DraftValueInput, ScalarFieldValueEditor } from './scalar-value-editor';
8
+ import { useCollectionView } from '../collection-view/collection-view-context.js';
9
+ import { RelationPicker } from './relation-picker.js';
10
+ import { DraftValueInput, ScalarFieldValueEditor } from './scalar-value-editor.js';
11
11
  const defaultDescribeValue = (clause) => Array.isArray(clause.value) ? clause.value.join(', ') : String(clause.value);
12
12
  /**
13
13
  * A one-line summary of the active filter for the chip face (EC-246b): the single
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect, useState } from 'react';
3
3
  import { Badge, Button, Code, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, Stack, Text, } from '@elytracms/studio/ui';
4
4
  import { translate } from '@elytracms/studio/lib/i18n';
5
- import { useCollectionView } from '../collection-view/collection-view-context';
5
+ import { useCollectionView } from '../collection-view/collection-view-context.js';
6
6
  /** Import collection data from JSON with validation + error reporting (brief §8.4, EC-079). */
7
7
  export function ImportDialog({ collectionId, open, onOpenChange, }) {
8
8
  const source = useCollectionView();
@@ -4,7 +4,7 @@ import { Button, Row, Stack, Text } from '@elytracms/studio/ui';
4
4
  import { cn } from '@elytracms/studio/lib/utils';
5
5
  import { cmsIssueLabel } from '@elytracms/studio/lib/persona/labels';
6
6
  import { translate } from '@elytracms/studio/lib/i18n';
7
- import { fieldLabel } from './cms-labels';
7
+ import { fieldLabel } from './cms-labels.js';
8
8
  /**
9
9
  * EC-283 — the document-scoped validation surface.
10
10
  *
@@ -4,9 +4,9 @@ import { isStaticProp } from '@elytracms/core/project-graph';
4
4
  import { fieldValueValidator } from '@elytracms/core/cms-core';
5
5
  import { Input, Row, Select, Stack, Text } from '@elytracms/studio/ui';
6
6
  import { localizedLabel, translate } from '@elytracms/studio/lib/i18n';
7
- import { FieldControl } from './field-control';
8
- import { FieldDensityProvider } from './field-density';
9
- import { useOptionalCollectionView } from '../collection-view/collection-view-context';
7
+ import { FieldControl } from './field-control.js';
8
+ import { FieldDensityProvider } from './field-density.js';
9
+ import { useOptionalCollectionView } from '../collection-view/collection-view-context.js';
10
10
  export function controlKind(spec) {
11
11
  switch (spec.type) {
12
12
  case 'boolean':
@@ -6,7 +6,7 @@ import { documentKey } from '@elytracms/core/cms-core';
6
6
  import { buildReferenceImpact, loadInboundReferenceViews } from '@elytracms/studio/lib/references';
7
7
  import { Badge, Button, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, Row, Stack, Text, } from '@elytracms/studio/ui';
8
8
  import { translate } from '@elytracms/studio/lib/i18n';
9
- import { useCollectionView } from '../collection-view/collection-view-context';
9
+ import { useCollectionView } from '../collection-view/collection-view-context.js';
10
10
  const ACTION_LABELS = {
11
11
  unpublish: translate('cms.editor.unpublish'),
12
12
  delete: translate('common.delete'),
@@ -4,7 +4,7 @@ import { useEffect, useState } from 'react';
4
4
  import { Badge, Button, Code, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, Input, Row, Spacer, Text, } from '@elytracms/studio/ui';
5
5
  import { cn } from '@elytracms/studio/lib/utils';
6
6
  import { translate } from '@elytracms/studio/lib/i18n';
7
- import { useCollectionView } from '../collection-view/collection-view-context';
7
+ import { useCollectionView } from '../collection-view/collection-view-context.js';
8
8
  /** Pick related document(s) from a target collection (brief §8.4, EC-074). */
9
9
  export function RelationPicker({ targetCollection, multiple, value, open, onOpenChange, onChange, excludeIds, }) {
10
10
  const source = useCollectionView();
@@ -1,6 +1,6 @@
1
1
  import type { Editor } from '@tiptap/react';
2
2
  import type { LucideIcon } from 'lucide-react';
3
- import type { ToolbarState } from './toolbar-state';
3
+ import type { ToolbarState } from './toolbar-state.js';
4
4
  /**
5
5
  * Shared block-command metadata (EC-328) — the five block operations
6
6
  * `buildSlashItems` (slash-command.tsx) and `RichTextToolbar` (toolbar.tsx)
@@ -8,8 +8,8 @@ import { Button } from '@elytracms/studio/ui';
8
8
  import { translate } from '@elytracms/studio/lib/i18n';
9
9
  import { componentDisplayName } from '@elytracms/studio/lib/persona/labels';
10
10
  import { cn } from '@elytracms/studio/lib/utils';
11
- import { EmbedPropsDialog, embedPropsSummary } from './embed-props';
12
- import { useOptionalEmbedInspector } from './embed-inspector-context';
11
+ import { EmbedPropsDialog, embedPropsSummary } from './embed-props.js';
12
+ import { useOptionalEmbedInspector } from './embed-inspector-context.js';
13
13
  /**
14
14
  * The rich-text component-embed node (EC-189/EC-314): a block atom holding a single
15
15
  * composition value at `attrs.node`. It is the third place constrained composition
@@ -3,15 +3,15 @@ import { useEffect, useMemo, useRef, useState } from 'react';
3
3
  import { EditorContent, useEditor } from '@tiptap/react';
4
4
  import { cn } from '@elytracms/studio/lib/utils';
5
5
  import { localizedLabel } from '@elytracms/studio/lib/i18n';
6
- import { useOptionalCollectionView } from '../../collection-view/collection-view-context';
7
- import { useOptionalAssets } from '../../assets/assets-store';
8
- import { AssetPicker } from '../asset-picker';
9
- import { buildRichTextExtensions } from './extensions';
10
- import { isEffectivelyEmpty, isEquivalentToStored, normalizeEditorDoc, richTextValueFromDoc, toEditorDoc, } from './value';
11
- import { insertAssetImage, insertComponentEmbed, listEmbeddable } from './insert';
12
- import { EmbedPicker } from './embed-picker';
6
+ import { useOptionalCollectionView } from '../../collection-view/collection-view-context.js';
7
+ import { useOptionalAssets } from '../../assets/assets-store.js';
8
+ import { AssetPicker } from '../asset-picker.js';
9
+ import { buildRichTextExtensions } from './extensions.js';
10
+ import { isEffectivelyEmpty, isEquivalentToStored, normalizeEditorDoc, richTextValueFromDoc, toEditorDoc, } from './value.js';
11
+ import { insertAssetImage, insertComponentEmbed, listEmbeddable } from './insert.js';
12
+ import { EmbedPicker } from './embed-picker.js';
13
13
  import { getStudioRegistry } from '@elytracms/studio/lib/registry';
14
- import { RichTextToolbar } from './toolbar';
14
+ import { RichTextToolbar } from './toolbar.js';
15
15
  /**
16
16
  * The CMS rich-text field editor (EC-314) — a real TipTap editor over the shared
17
17
  * `@elytracms/core/rich-text` storage, replacing the plaintext textarea stub.
@@ -1,4 +1,4 @@
1
- import type { EmbedInspectorPayload } from './embed-inspector-context';
1
+ import type { EmbedInspectorPayload } from './embed-inspector-context.js';
2
2
  /**
3
3
  * The selection-driven embed prop inspector (0.0.41) — the detail editor's right
4
4
  * sidebar swaps to this when a `componentEmbed` node is selected in a rich-text
@@ -4,8 +4,8 @@ import { Button, Field, Row, Separator, Stack, Text } from '@elytracms/studio/ui
4
4
  import { localizedLabel, translate } from '@elytracms/studio/lib/i18n';
5
5
  import { componentDisplayName } from '@elytracms/studio/lib/persona/labels';
6
6
  import { cn } from '@elytracms/studio/lib/utils';
7
- import { PropValueControl } from '../prop-fields';
8
- import { blocksEmbedProps, clearComponentNodeProp, editableEmbedProps, resolveEmbedWrite, setComponentNodeProp, } from './embed-props';
7
+ import { PropValueControl } from '../prop-fields.js';
8
+ import { blocksEmbedProps, clearComponentNodeProp, editableEmbedProps, resolveEmbedWrite, setComponentNodeProp, } from './embed-props.js';
9
9
  /**
10
10
  * The selection-driven embed prop inspector (0.0.41) — the detail editor's right
11
11
  * sidebar swaps to this when a `componentEmbed` node is selected in a rich-text
@@ -5,7 +5,7 @@ import { getStudioRegistry } from '@elytracms/studio/lib/registry';
5
5
  import { Dialog, DialogContent, DialogHeader, DialogTitle, Input, Stack, Text, } from '@elytracms/studio/ui';
6
6
  import { translate } from '@elytracms/studio/lib/i18n';
7
7
  import { cn } from '@elytracms/studio/lib/utils';
8
- import { listEmbeddable } from './insert';
8
+ import { listEmbeddable } from './insert.js';
9
9
  /**
10
10
  * The component-embed picker dialog (EC-314/EC-189): a searchable list of the
11
11
  * components permitted for inline embedding. Rendered once at the editor level and
@@ -5,7 +5,7 @@ import { Button, Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle,
5
5
  import { localizedLabel, translate } from '@elytracms/studio/lib/i18n';
6
6
  import { humanizeName } from '@elytracms/studio/lib/utils';
7
7
  import { componentDisplayName } from '@elytracms/studio/lib/persona/labels';
8
- import { PropValueControl } from '../prop-fields';
8
+ import { PropValueControl } from '../prop-fields.js';
9
9
  /**
10
10
  * Prop editing for rich-text component embeds (EC-314 phase 4).
11
11
  *
@@ -1,5 +1,5 @@
1
1
  import type { Extensions } from '@tiptap/react';
2
- import type { SlashCommandOptions } from './slash-command';
2
+ import type { SlashCommandOptions } from './slash-command.js';
3
3
  /**
4
4
  * The TipTap extension set for the CMS rich-text editor (EC-314).
5
5
  *
@@ -1,10 +1,10 @@
1
1
  import StarterKit from '@tiptap/starter-kit';
2
2
  import { Placeholder } from '@tiptap/extensions';
3
3
  import { translate } from '@elytracms/studio/lib/i18n';
4
- import { RefLink } from './ref-link';
5
- import { AssetImage } from './asset-image';
6
- import { ComponentEmbed } from './component-embed';
7
- import { createSlashCommand } from './slash-command';
4
+ import { RefLink } from './ref-link.js';
5
+ import { AssetImage } from './asset-image.js';
6
+ import { ComponentEmbed } from './component-embed.js';
7
+ import { createSlashCommand } from './slash-command.js';
8
8
  /**
9
9
  * The TipTap extension set for the CMS rich-text editor (EC-314).
10
10
  *
@@ -9,4 +9,4 @@
9
9
  * main route chunk. The eager editor stays available as `./editor` for the unit tests
10
10
  * and the extension-level modules that import it directly.
11
11
  */
12
- export { RichTextEditor } from './lazy';
12
+ export { RichTextEditor } from './lazy.js';
@@ -9,5 +9,5 @@
9
9
  * main route chunk. The eager editor stays available as `./editor` for the unit tests
10
10
  * and the extension-level modules that import it directly.
11
11
  */
12
- export { RichTextEditor } from './lazy';
12
+ export { RichTextEditor } from './lazy.js';
13
13
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  import type { Editor } from '@tiptap/react';
2
2
  import type { ComponentNode } from '@elytracms/core/project-graph';
3
3
  import type { ComponentManifest } from '@elytracms/core/component-registry';
4
- import type { AssetsStore } from '../../assets/assets-store';
4
+ import type { AssetsStore } from '../../assets/assets-store.js';
5
5
  /**
6
6
  * Reference-carrying node insertions shared by the toolbar controls and the slash
7
7
  * menu (EC-314). Centralised so both entry points produce byte-identical envelopes
@@ -14,6 +14,6 @@ import type { ComponentProps } from 'react';
14
14
  * toolbar-and-body min-height) so the swap-in is layout-jank-free, and carries an
15
15
  * accessible loading label from the message catalog.
16
16
  */
17
- declare const RichTextEditorImpl: import("react").LazyExoticComponent<typeof import("./editor").RichTextEditor>;
17
+ declare const RichTextEditorImpl: import("react").LazyExoticComponent<typeof import("./editor.js").RichTextEditor>;
18
18
  export declare function RichTextEditor(props: ComponentProps<typeof RichTextEditorImpl>): import("react").JSX.Element;
19
19
  export {};
@@ -16,7 +16,7 @@ import { translate } from '@elytracms/studio/lib/i18n';
16
16
  * toolbar-and-body min-height) so the swap-in is layout-jank-free, and carries an
17
17
  * accessible loading label from the message catalog.
18
18
  */
19
- const RichTextEditorImpl = lazy(() => import('./editor').then((module) => ({ default: module.RichTextEditor })));
19
+ const RichTextEditorImpl = lazy(() => import('./editor.js').then((module) => ({ default: module.RichTextEditor })));
20
20
  function RichTextEditorFallback() {
21
21
  return (_jsx("div", { className: "ec-rte min-h-[7.5rem] animate-pulse rounded-md border border-input bg-muted/20 shadow-sm", role: "status", "aria-busy": "true", children: _jsx("span", { className: "sr-only", children: translate('richText.loading') }) }));
22
22
  }
@@ -6,7 +6,7 @@ import { Blocks, Heading1, Heading2, Heading3, ImagePlus, Pilcrow } from 'lucide
6
6
  import { translate } from '@elytracms/studio/lib/i18n';
7
7
  import { componentDisplayName } from '@elytracms/studio/lib/persona/labels';
8
8
  import { cn } from '@elytracms/studio/lib/utils';
9
- import { BLOCK_COMMANDS } from './block-commands';
9
+ import { BLOCK_COMMANDS } from './block-commands.js';
10
10
  /** The command list, gated by which media actions + components the editor provided. */
11
11
  export function buildSlashItems(options) {
12
12
  const block = (run) => (editor, range) => run(editor.chain().focus().deleteRange(range)).run();
@@ -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