@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
@@ -3,10 +3,10 @@ import { UserCog } from 'lucide-react';
3
3
  import { Heading, Stack, Text } from '@elytracms/studio/ui';
4
4
  import { listStoreState, useOperationQuery } from '@elytracms/studio/lib/query';
5
5
  import { translate } from '@elytracms/studio/lib/i18n';
6
- import { useAuth } from '../auth-context';
7
- import { PortableDetailEditor } from '../cms/detail-editor';
8
- import { CredentialPanel } from './credential-panel';
9
- import { useSelfAccountViewSource } from './self-account-view-source';
6
+ import { useAuth } from '../auth-context.js';
7
+ import { PortableDetailEditor } from '../cms/detail-editor.js';
8
+ import { CredentialPanel } from './credential-panel.js';
9
+ import { useSelfAccountViewSource } from './self-account-view-source.js';
10
10
  /**
11
11
  * The **account-settings** surface (EC-240 H-tail items 1–4). A member — admin or
12
12
  * not — opens their OWN record here (via the user menu → `users/<selfId>`). It is
@@ -3,7 +3,7 @@ import { useState } from 'react';
3
3
  import { KeyRound, ShieldCheck } from 'lucide-react';
4
4
  import { Button, Card, CardContent, Field, Heading, Input, Row, Stack, Text, toast, } from '@elytracms/studio/ui';
5
5
  import { translate } from '@elytracms/studio/lib/i18n';
6
- import { useAuth } from '../auth-context';
6
+ import { useAuth } from '../auth-context.js';
7
7
  /**
8
8
  * The credential seam (EC-240 H-tail item 3) — part of the account **property
9
9
  * surface**, never a modal. Two blocks:
@@ -1,8 +1,8 @@
1
1
  import { useCallback } from 'react';
2
2
  import { studioPath } from '@elytracms/studio/router';
3
- import { useAuth } from '../auth-context';
4
- import { selfAccountCollectionDef } from './self-account-schema';
5
- import { normalizeOkResult, useRailViewSource } from '../rail-view-source';
3
+ import { useAuth } from '../auth-context.js';
4
+ import { selfAccountCollectionDef } from './self-account-schema.js';
5
+ import { normalizeOkResult, useRailViewSource } from '../rail-view-source.js';
6
6
  /** The account surface is not localized — one implicit locale keeps the lens honest. */
7
7
  const ACCOUNT_LOCALE = 'en';
8
8
  const ACCOUNT_LOCALE_CONFIG = { default: ACCOUNT_LOCALE, locales: [ACCOUNT_LOCALE] };
@@ -11,7 +11,7 @@ import { translate } from '@elytracms/studio/lib/i18n';
11
11
  * critical path (pinned by the `lib/ai` bundle test). Same pattern as
12
12
  * `version-compare-lazy` / `rich-text/lazy`.
13
13
  */
14
- const AiChatPanelImpl = lazy(() => import('./ai-chat-panel').then((module) => ({ default: module.AiChatPanel })));
14
+ const AiChatPanelImpl = lazy(() => import('./ai-chat-panel.js').then((module) => ({ default: module.AiChatPanel })));
15
15
  function AiPanelFallback() {
16
16
  return (_jsx("aside", { className: "flex h-full min-h-0 w-[360px] shrink-0 flex-col border-l border-border bg-card", children: _jsx("div", { className: "grid min-h-0 flex-1 place-items-center p-6", children: _jsx(Text, { size: "sm", tone: "muted", children: translate('ai.panel.loading') }) }) }));
17
17
  }
@@ -8,10 +8,10 @@ import { STUDIO_PROJECT_ROUTE, studioPath, useNavigate } from '@elytracms/studio
8
8
  import { resolveDeploymentAi } from '@elytracms/studio/lib/workspace';
9
9
  import { getStudioOperations } from '@elytracms/studio/lib/operations';
10
10
  import { AiRouteError, chatReducer, initialChatState, resolveAiConfig, resolveKnowledge, runCreateFlow, } from '@elytracms/studio/lib/ai';
11
- import { useCms } from '../cms/cms-store';
12
- import { validateComposition, validateRichTextEmbeds } from '../cms/cms-composition-validators';
13
- import { AssistantTurn, Conversation, ConversationEmpty, PromptInput, ToolStatus, UserTurn, } from './chat-ui';
14
- import { ProposalCard } from './proposal-card';
11
+ import { useCms } from '../cms/cms-store.js';
12
+ import { validateComposition, validateRichTextEmbeds } from '../cms/cms-composition-validators.js';
13
+ import { AssistantTurn, Conversation, ConversationEmpty, PromptInput, ToolStatus, UserTurn, } from './chat-ui.js';
14
+ import { ProposalCard } from './proposal-card.js';
15
15
  import { setAiPanelOpen } from '@elytracms/studio/lib/ai-panel';
16
16
  /**
17
17
  * The AI assistant chat panel (EC-199) — the right-hand collapsible surface in the CMS
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useMemo } from 'react';
3
3
  import { resolveDeploymentAi } from '@elytracms/studio/lib/workspace';
4
4
  import { useAiPanelOpen } from '@elytracms/studio/lib/ai-panel';
5
- import { AiChatPanel } from './ai-chat-panel-lazy';
5
+ import { AiChatPanel } from './ai-chat-panel-lazy.js';
6
6
  /**
7
7
  * The CMS-area mount of the AI assistant (EC-199): a right-hand sibling of the CMS
8
8
  * content, shown on BOTH the collection list and the document editor. Gated twice —
@@ -6,10 +6,10 @@ import { resolveLabel } from '@elytracms/core/cms-core';
6
6
  import { Badge, Button, Row, Spacer, Stack, Text } from '@elytracms/studio/ui';
7
7
  import { translate } from '@elytracms/studio/lib/i18n';
8
8
  import { proposalDocuments } from '@elytracms/studio/lib/ai';
9
- import { useCms } from '../cms/cms-store';
10
- import { useCmsCollectionViewSource } from '../collection-view/cms-collection-view-source';
11
- import { CollectionViewProvider } from '../collection-view/collection-view-context';
12
- import { DocumentDiffView } from '../cms/document-diff-view';
9
+ import { useCms } from '../cms/cms-store.js';
10
+ import { useCmsCollectionViewSource } from '../collection-view/cms-collection-view-source.js';
11
+ import { CollectionViewProvider } from '../collection-view/collection-view-context.js';
12
+ import { DocumentDiffView } from '../cms/document-diff-view.js';
13
13
  /**
14
14
  * The AI proposal review (EC-199): a valid, leash-compliant draft the editor reviews
15
15
  * as a DIFF (the shared EC-317 {@link DocumentDiffView} — never a second renderer)
@@ -16,7 +16,7 @@ import { resolveDeploymentAi } from '@elytracms/studio/lib/workspace';
16
16
  * the translation engine + operations write) loads ONLY when the editor opens it, via a
17
17
  * dynamic `import()`, so an unconfigured studio pulls none of it onto the critical path.
18
18
  */
19
- const TranslateDocumentDialog = lazy(() => import('./translate-document-dialog').then((m) => ({ default: m.TranslateDocumentDialog })));
19
+ const TranslateDocumentDialog = lazy(() => import('./translate-document-dialog.js').then((m) => ({ default: m.TranslateDocumentDialog })));
20
20
  export function TranslateDocumentAction(props) {
21
21
  const [open, setOpen] = useState(false);
22
22
  const { collection, localeConfig, localesEnabled, projectId } = props;
@@ -1,4 +1,4 @@
1
- import type { TranslateDocumentActionProps } from './translate-document-action';
1
+ import type { TranslateDocumentActionProps } from './translate-document-action.js';
2
2
  export declare function TranslateDocumentDialog({ projectId, collection, docRef, document, localeConfig, onApplied, open, onOpenChange, }: TranslateDocumentActionProps & {
3
3
  open: boolean;
4
4
  onOpenChange: (open: boolean) => void;
@@ -4,7 +4,7 @@ import type { CollectionDef, CollectionFieldOverride, CollectionFormMeta } from
4
4
  import type { SectionId } from '@elytracms/core/studio-core';
5
5
  import type { InstantiatedKit } from '@elytracms/core/starter-kits';
6
6
  import type { HydratedCms } from '@elytracms/studio/lib/operations';
7
- import { type AppViewContext, type AppViewDeepLink, type AppViewModule, type NavPermission, type SidebarViewNode } from './module';
7
+ import { type AppViewContext, type AppViewDeepLink, type AppViewModule, type NavPermission, type SidebarViewNode } from './module.js';
8
8
  /**
9
9
  * EC-237/239 — the studio's BUILT-IN views + the consumer-facing `nav` namespace,
10
10
  * an instance of the EC-236 customization seam.
@@ -188,9 +188,9 @@ export declare const nav: {
188
188
  /** A fully custom view — pass your own `render` (and optional `parsePath`). */
189
189
  readonly view: (config: CustomViewConfig) => SidebarViewNode;
190
190
  /** A labelled group of views (a header with sub-entries). */
191
- readonly group: (label: string, children: SidebarViewNode[]) => import("./module").SidebarGroupNode;
191
+ readonly group: (label: string, children: SidebarViewNode[]) => import("./module.js").SidebarGroupNode;
192
192
  /** A divider between rail sections. */
193
- readonly separator: () => import("./module").SidebarSeparatorNode;
193
+ readonly separator: () => import("./module.js").SidebarSeparatorNode;
194
194
  };
195
195
  /**
196
196
  * The CMS schema source for a project mount (bug fix, playground-collections):
@@ -8,26 +8,26 @@ import { localizedLabel, translate } from '@elytracms/studio/lib/i18n';
8
8
  import { getInstantiatedKit } from '@elytracms/studio/lib/starters/kit-session';
9
9
  import { isPlaygroundMode } from '@elytracms/studio/lib/persistence';
10
10
  import { resolveDeploymentCollections } from '@elytracms/studio/lib/workspace';
11
- import { cmsDeepLink, componentsDeepLink, usersDeepLink, redirectsDeepLink, assetsDeepLink, groupNode, separatorNode, viewNode, } from './module';
12
- import { SectionSurface } from '../section-surface';
13
- import { SectionStateView } from '../section-state';
14
- import { SettingsForm } from '../settings-form';
15
- import { AssetsModule } from '../assets/assets-module';
16
- import { UsersModule } from '../users/users-module';
17
- import { RedirectsModule } from '../redirects/redirects-module';
18
- import { redirectsCollectionDef } from '../redirects/redirects-schema';
19
- import { ExtensionsView } from '../extensions/extensions-view';
20
- import { RegistryBrowser } from '../components/registry-browser';
21
- import { ComponentsIndex } from '../components/components-index';
22
- import { ComponentDetail } from '../components/component-detail';
23
- import { CmsSessionGate } from '../project-session';
24
- import { CmsProvider, useCms } from '../cms/cms-store';
25
- import { AiCmsPanel } from '../ai/ai-cms-panel';
26
- import { focusCollectionList } from '../cms/collection-focus';
27
- import { CmsIndex } from '../cms/cms-index';
28
- import { CollectionTable } from '../cms/collection-table';
29
- import { DetailEditor } from '../cms/detail-editor';
30
- import { OperationErrorBanner } from '../operation-error';
11
+ import { cmsDeepLink, componentsDeepLink, usersDeepLink, redirectsDeepLink, assetsDeepLink, groupNode, separatorNode, viewNode, } from './module.js';
12
+ import { SectionSurface } from '../section-surface.js';
13
+ import { SectionStateView } from '../section-state.js';
14
+ import { SettingsForm } from '../settings-form.js';
15
+ import { AssetsModule } from '../assets/assets-module.js';
16
+ import { UsersModule } from '../users/users-module.js';
17
+ import { RedirectsModule } from '../redirects/redirects-module.js';
18
+ import { redirectsCollectionDef } from '../redirects/redirects-schema.js';
19
+ import { ExtensionsView } from '../extensions/extensions-view.js';
20
+ import { RegistryBrowser } from '../components/registry-browser.js';
21
+ import { ComponentsIndex } from '../components/components-index.js';
22
+ import { ComponentDetail } from '../components/component-detail.js';
23
+ import { CmsSessionGate } from '../project-session.js';
24
+ import { CmsProvider, useCms } from '../cms/cms-store.js';
25
+ import { AiCmsPanel } from '../ai/ai-cms-panel.js';
26
+ import { focusCollectionList } from '../cms/collection-focus.js';
27
+ import { CmsIndex } from '../cms/cms-index.js';
28
+ import { CollectionTable } from '../cms/collection-table.js';
29
+ import { DetailEditor } from '../cms/detail-editor.js';
30
+ import { OperationErrorBanner } from '../operation-error.js';
31
31
  function slugify(label) {
32
32
  return label.trim().toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '') || 'view';
33
33
  }
@@ -1,7 +1,7 @@
1
1
  import type { LucideIcon } from 'lucide-react';
2
2
  import type { CustomizationIssue, Project, SectionAvailability } from '@elytracms/core/studio-core';
3
3
  import type { CollectionDef } from '@elytracms/core/cms-core';
4
- import { type AppViewModule, type NavPermission, type NavPermissionContext, type SidebarNode } from './module';
4
+ import { type AppViewModule, type NavPermission, type NavPermissionContext, type SidebarNode } from './module.js';
5
5
  /**
6
6
  * EC-237 — resolving the configurable section rail, an instance of the EC-236
7
7
  * customization seam.
@@ -1,8 +1,8 @@
1
1
  import { useMemo } from 'react';
2
2
  import { resolveOverrides } from '@elytracms/core/studio-core';
3
3
  import { resolveDeploymentCollections, resolveDeploymentSidebar } from '@elytracms/studio/lib/workspace';
4
- import { firstAvailableView, moduleAvailability, viewNode, } from './module';
5
- import { DEFAULT_VIEWS } from './default-modules';
4
+ import { firstAvailableView, moduleAvailability, viewNode, } from './module.js';
5
+ import { DEFAULT_VIEWS } from './default-modules.js';
6
6
  /** The default rail: every non-hidden built-in view as a plain entry, in canonical order. */
7
7
  function defaultRail() {
8
8
  return DEFAULT_VIEWS.filter((view) => !view.hidden).map(viewNode);
@@ -2,7 +2,7 @@ import type { ReactNode } from 'react';
2
2
  import type { FieldDef } from '@elytracms/core/cms-core';
3
3
  import type { StudioI18nConfig } from '@elytracms/studio/lib/i18n';
4
4
  import type { StudioAiConfig } from '@elytracms/studio/lib/ai';
5
- import type { SidebarNode } from './module';
5
+ import type { SidebarNode } from './module.js';
6
6
  /**
7
7
  * EC-236 — the studio customization config: the single, studio-only home for
8
8
  * everything a consuming repo customizes about the builder UI.
@@ -5,15 +5,15 @@ import { Link, STUDIO_PROJECT_ROUTE, useNavigate } from '@elytracms/studio/route
5
5
  import { localizedLabel, translate } from '@elytracms/studio/lib/i18n';
6
6
  import { buildAssetReferenceImpact, loadInboundAssetReferenceViews } from '@elytracms/studio/lib/references';
7
7
  import { Button, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, Field, Heading, Panel, PanelBody, PanelHeader, Row, Spacer, Stack, Text, } from '@elytracms/studio/ui';
8
- import { FieldControl } from '../cms/field-control';
9
- import { fieldLabel } from '../cms/cms-labels';
10
- import { ReferenceImpactRows } from '../cms/reference-confirm';
11
- import { ReferencesPanel } from '../references/references-panel';
12
- import { useSetBreadcrumb } from '../breadcrumb-context';
13
- import { useCollectionView } from '../collection-view/collection-view-context';
14
- import { FocalCropPreviews, FocalPointPicker, useAssetRecord } from './asset-thumb';
15
- import { assetMetaFieldsOf, formatBytes, pruneMeta } from './asset-metadata';
16
- import { useAssets } from './assets-store';
8
+ import { FieldControl } from '../cms/field-control.js';
9
+ import { fieldLabel } from '../cms/cms-labels.js';
10
+ import { ReferenceImpactRows } from '../cms/reference-confirm.js';
11
+ import { ReferencesPanel } from '../references/references-panel.js';
12
+ import { useSetBreadcrumb } from '../breadcrumb-context.js';
13
+ import { useCollectionView } from '../collection-view/collection-view-context.js';
14
+ import { FocalCropPreviews, FocalPointPicker, useAssetRecord } from './asset-thumb.js';
15
+ import { assetMetaFieldsOf, formatBytes, pruneMeta } from './asset-metadata.js';
16
+ import { useAssets } from './assets-store.js';
17
17
  /**
18
18
  * The assets rail's DETAIL surface (EC-319). Pragmatic call: assets don't fit
19
19
  * the portable `PortableDetailEditor` shell cleanly — there's no dirty/Save/
@@ -5,13 +5,13 @@ import { Link, STUDIO_PROJECT_ROUTE } from '@elytracms/studio/router';
5
5
  import { applyViewState } from '@elytracms/studio/lib/cms-views';
6
6
  import { localizedLabel, translate } from '@elytracms/studio/lib/i18n';
7
7
  import { Code, Grid, Panel, Row, Separator, Spacer, Stack, Text } from '@elytracms/studio/ui';
8
- import { FilterControl } from '../cms/filter-builder';
9
- import { ViewTabs } from '../cms/view-bar';
10
- import { useSetBreadcrumb } from '../breadcrumb-context';
11
- import { useCollectionView } from '../collection-view/collection-view-context';
12
- import { AssetThumb } from './asset-thumb';
13
- import { formatBytes } from './asset-metadata';
14
- import { useAssets } from './assets-store';
8
+ import { FilterControl } from '../cms/filter-builder.js';
9
+ import { ViewTabs } from '../cms/view-bar.js';
10
+ import { useSetBreadcrumb } from '../breadcrumb-context.js';
11
+ import { useCollectionView } from '../collection-view/collection-view-context.js';
12
+ import { AssetThumb } from './asset-thumb.js';
13
+ import { formatBytes } from './asset-metadata.js';
14
+ import { useAssets } from './assets-store.js';
15
15
  /**
16
16
  * The assets rail's GRID surface (EC-319) — the thumbnail-first counterpart to
17
17
  * `LoadedCollectionTable`, over the SAME portable `CollectionViewSource` (the
@@ -1,5 +1,5 @@
1
1
  import type { AssetRecord } from '@elytracms/core/persistence';
2
- import type { FocalPoint } from './focal-point';
2
+ import type { FocalPoint } from './focal-point.js';
3
3
  /** Resolve an asset record by id from the ambient library, if one is mounted. */
4
4
  export declare function useAssetRecord(assetId: string | null | undefined): AssetRecord | undefined;
5
5
  /**
@@ -4,8 +4,8 @@ import { Image } from 'lucide-react';
4
4
  import { Text } from '@elytracms/studio/ui';
5
5
  import { translate } from '@elytracms/studio/lib/i18n';
6
6
  import { cn } from '@elytracms/studio/lib/utils';
7
- import { useOptionalAssets } from './assets-store';
8
- import { CENTER_FOCAL_POINT, focalPointFromPoint, focalPointObjectPosition, } from './focal-point';
7
+ import { useOptionalAssets } from './assets-store.js';
8
+ import { CENTER_FOCAL_POINT, focalPointFromPoint, focalPointObjectPosition, } from './focal-point.js';
9
9
  /** Resolve an asset record by id from the ambient library, if one is mounted. */
10
10
  export function useAssetRecord(assetId) {
11
11
  const store = useOptionalAssets();
@@ -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 { useAssets } from './assets-store';
5
- import { SYSTEM_ASSET_FIELDS } from './asset-metadata';
6
- import { normalizeOkResult, useRailViewSource } from '../rail-view-source';
4
+ import { useAssets } from './assets-store.js';
5
+ import { SYSTEM_ASSET_FIELDS } from './asset-metadata.js';
6
+ import { normalizeOkResult, useRailViewSource } from '../rail-view-source.js';
7
7
  /** The assets rail is not localized in v1 (EC-301: asset metadata is non-localized). */
8
8
  const ASSETS_LOCALE = 'en';
9
9
  const ASSETS_LOCALE_CONFIG = {
@@ -3,14 +3,14 @@ import { useRef, useState } from 'react';
3
3
  import { LayoutGrid, List, RotateCcw, Upload, X } from 'lucide-react';
4
4
  import { Badge, Button, Panel, PanelBody, PanelHeader, Row, SegmentedControl, Stack, Text, } from '@elytracms/studio/ui';
5
5
  import { translate } from '@elytracms/studio/lib/i18n';
6
- import { useAssets } from './assets-store';
7
- import { useAssetsCollectionViewSource } from './assets-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 { AssetGridView } from './asset-grid';
12
- import { AssetDetail } from './asset-detail';
13
- import { readAssetsViewMode, storeAssetsViewMode, } from './assets-view-preference';
6
+ import { useAssets } from './assets-store.js';
7
+ import { useAssetsCollectionViewSource } from './assets-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 { AssetGridView } from './asset-grid.js';
12
+ import { AssetDetail } from './asset-detail.js';
13
+ import { readAssetsViewMode, storeAssetsViewMode, } from './assets-view-preference.js';
14
14
  /**
15
15
  * The studio Assets module (EC-319). The reuse proof (alongside users/redirects)
16
16
  * that the portable list surface serves a rail with an entirely different
@@ -2,7 +2,7 @@ import type { ReactNode } from 'react';
2
2
  import type { AssetRecord } from '@elytracms/core/persistence';
3
3
  import type { DeleteAssetResult, UploadState, UploadableFile } from '@elytracms/studio/lib/assets';
4
4
  import type { ReferenceEntryView } from '@elytracms/studio/lib/references';
5
- import type { AssetMetadataPatch, UpdateAssetMetadataResult } from './asset-metadata';
5
+ import type { AssetMetadataPatch, UpdateAssetMetadataResult } from './asset-metadata.js';
6
6
  /**
7
7
  * Asset library store (EC-151, EC-141). Asset *metadata* mutations go through
8
8
  * the shared operations client (`assets.*` commands — validate → authorize →
@@ -5,7 +5,7 @@ import { loadInboundAssetReferenceViews } from '@elytracms/studio/lib/references
5
5
  import { getStudioOperations, operationsAssetRepository } from '@elytracms/studio/lib/operations';
6
6
  import { listStoreState, useOperationCache, useOperationQuery } from '@elytracms/studio/lib/query';
7
7
  import { createRequiredContext } from '@elytracms/studio/lib/required-context';
8
- import { updateAssetMetadata } from './asset-metadata';
8
+ import { updateAssetMetadata } from './asset-metadata.js';
9
9
  const { Context: AssetsContext, useRequired: useAssets } = createRequiredContext('Assets', { article: 'an' });
10
10
  const EMPTY_ASSETS = [];
11
11
  /** Cache key for a project's asset library (shared by the query and its patches). */
@@ -2,7 +2,7 @@ import { cloneWithNewIds } from '@elytracms/core/project-graph';
2
2
  import { isCanvasEligible, propValueValidator } from '@elytracms/core/component-registry';
3
3
  import { componentStatus } from '@elytracms/studio/lib/registry';
4
4
  import { nodeFromProps, previewSpecs } from '@elytracms/studio/lib/registry/preview';
5
- import { LAYOUT_PRESETS, nodeFromManifest } from './node-factory';
5
+ import { LAYOUT_PRESETS, nodeFromManifest } from './node-factory.js';
6
6
  /**
7
7
  * Intersect two component-id allow-lists. `undefined` means "no constraint from
8
8
  * this source", so the result is the other list (copied); two present lists yield
@@ -1,7 +1,7 @@
1
1
  import type { InsertTarget } from '@elytracms/core/project-graph';
2
2
  import type { ClipboardFragment } from '@elytracms/core/clipboard';
3
3
  import type { StudioRegistry } from '@elytracms/studio/lib/registry';
4
- import type { BlockTile } from './blocks-model';
4
+ import type { BlockTile } from './blocks-model.js';
5
5
  /**
6
6
  * Blocks panel (EC-164): the visual insert surface. Every registry component
7
7
  * and each of its fixture variations is a tile with a live, scaled render —
@@ -4,14 +4,14 @@ import { useEffect, useMemo, useRef, useState } from 'react';
4
4
  import { buildFragmentFromRegistryFixture, buildFragmentFromSubtree, } from '@elytracms/core/clipboard';
5
5
  import { getStudioRegistry } from '@elytracms/studio/lib/registry';
6
6
  import { translate } from '@elytracms/studio/lib/i18n';
7
- import { useCollab } from '../collab/collab-context';
8
- import { useStudioClipboard } from './clipboard-actions';
9
- import { beginDrag, endDrag, onDragSessionEnd } from './drag-session';
7
+ import { useCollab } from '../collab/collab-context.js';
8
+ import { useStudioClipboard } from './clipboard-actions.js';
9
+ import { beginDrag, endDrag, onDragSessionEnd } from './drag-session.js';
10
10
  import { Code, Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, Input, Row, Text, } from '@elytracms/studio/ui';
11
11
  import { cn } from '@elytracms/studio/lib/utils';
12
- import { useBuilder } from './builder-store';
13
- import { blockGroups, presetTiles } from './blocks-model';
14
- import { ScaledFixtureThumbnail } from './fixture-thumbnail';
12
+ import { useBuilder } from './builder-store.js';
13
+ import { blockGroups, presetTiles } from './blocks-model.js';
14
+ import { ScaledFixtureThumbnail } from './fixture-thumbnail.js';
15
15
  /**
16
16
  * "Copy exact configuration" (EC-175, vision 3.3): the EC-174 fragment for a
17
17
  * blocks-panel tile. Tiles backed by a declared manifest fixture go through
@@ -5,23 +5,23 @@ import { renderPageComposition } from '@elytracms/core/runtime-renderer';
5
5
  import { useParams } from '@elytracms/studio/router';
6
6
  import { getNode, getParentInfo, staticProp } from '@elytracms/core/project-graph';
7
7
  import { canNestInto, containerFlowAxis, dropIndicatorFor, dropPositionForPoint, resolveDrop, } from '@elytracms/studio/lib/dnd/drop-rules';
8
- import { activeDrag, beginDrag, endDrag, onDragSessionEnd } from './drag-session';
8
+ import { activeDrag, beginDrag, endDrag, onDragSessionEnd } from './drag-session.js';
9
9
  import { PRESERVE_NODE_ATTR, collectPreservedPairs, richTextDocFromDom, } from '@elytracms/core/rich-text';
10
10
  import { getStudioRegistry } from '@elytracms/studio/lib/registry';
11
11
  import { translate } from '@elytracms/studio/lib/i18n';
12
- import { useOptionalAssets } from '../assets/assets-store';
12
+ import { useOptionalAssets } from '../assets/assets-store.js';
13
13
  import { resolveCanvasLink, resolveCanvasListing, resolveCanvasRelation, useData, } from '@elytracms/studio/lib/data';
14
14
  import { cmsBindingFallback, useStudioLocale } from '@elytracms/studio/lib/locale';
15
15
  import { getInstantiatedKit } from '@elytracms/studio/lib/starters/kit-session';
16
- import { getCanvasStylesheetUrl } from './canvas-stylesheet';
17
- import { useBuilder } from './builder-store';
18
- import { useReuse } from './reuse-context';
19
- import { reuseEmbedRef } from './reuse';
20
- import { useCanvasViewports, viewportWidth } from './canvas-breakpoints';
21
- import { ClipboardNoticeOverlay, attachClipboardListeners, useStudioClipboard, } from './clipboard-actions';
22
- import { createInlineEditSession, createInlineRichTextSession, findInlineTextHost, resolveInlineEditableProp, resolveInlineRichTextProp, } from './inline-edit';
23
- import { RichTextToolbar } from './rich-text-toolbar';
24
- import { SpacingHandles, hasSpacingHandles } from './spacing-handles';
16
+ import { getCanvasStylesheetUrl } from './canvas-stylesheet.js';
17
+ import { useBuilder } from './builder-store.js';
18
+ import { useReuse } from './reuse-context.js';
19
+ import { reuseEmbedRef } from './reuse.js';
20
+ import { useCanvasViewports, viewportWidth } from './canvas-breakpoints.js';
21
+ import { ClipboardNoticeOverlay, attachClipboardListeners, useStudioClipboard, } from './clipboard-actions.js';
22
+ import { createInlineEditSession, createInlineRichTextSession, findInlineTextHost, resolveInlineEditableProp, resolveInlineRichTextProp, } from './inline-edit.js';
23
+ import { RichTextToolbar } from './rich-text-toolbar.js';
24
+ import { SpacingHandles, hasSpacingHandles } from './spacing-handles.js';
25
25
  /** Selection/hover outlines, scoped to the per-node editable wrappers. */
26
26
  const OUTLINE_CSS = `
27
27
  /* The canvas backdrop is deliberately always light/site-like (see the
@@ -8,9 +8,9 @@ import { getStudioRegistry } from '@elytracms/studio/lib/registry';
8
8
  import { shortId } from '@elytracms/studio/lib/persona/labels';
9
9
  import { translate } from '@elytracms/studio/lib/i18n';
10
10
  import { useData } from '@elytracms/studio/lib/data';
11
- import { useCollab } from '../collab/collab-context';
11
+ import { useCollab } from '../collab/collab-context.js';
12
12
  import { Badge, Row, Text } from '@elytracms/studio/ui';
13
- import { makeNodeIdCounter, useBuilder } from './builder-store';
13
+ import { makeNodeIdCounter, useBuilder } from './builder-store.js';
14
14
  let currentNotice = null;
15
15
  const noticeListeners = new Set();
16
16
  export function publishClipboardNotice(notice) {
@@ -14,6 +14,6 @@ import type { ComponentProps } from 'react';
14
14
  * detail editor's seam is unchanged — it still imports `CompositionFieldEditor`,
15
15
  * now the lazy-wrapped one, and renders it behind the same `canvasField` gate.
16
16
  */
17
- declare const CompositionFieldEditorImpl: import("react").LazyExoticComponent<typeof import("./composition-field-editor").CompositionFieldEditor>;
17
+ declare const CompositionFieldEditorImpl: import("react").LazyExoticComponent<typeof import("./composition-field-editor.js").CompositionFieldEditor>;
18
18
  export declare function CompositionFieldEditor(props: ComponentProps<typeof CompositionFieldEditorImpl>): import("react").JSX.Element;
19
19
  export {};
@@ -17,7 +17,7 @@ import { translate } from '@elytracms/studio/lib/i18n';
17
17
  * detail editor's seam is unchanged — it still imports `CompositionFieldEditor`,
18
18
  * now the lazy-wrapped one, and renders it behind the same `canvasField` gate.
19
19
  */
20
- const CompositionFieldEditorImpl = lazy(() => import('./composition-field-editor').then((module) => ({
20
+ const CompositionFieldEditorImpl = lazy(() => import('./composition-field-editor.js').then((module) => ({
21
21
  default: module.CompositionFieldEditor,
22
22
  })));
23
23
  function CanvasFallback() {
@@ -1,5 +1,5 @@
1
1
  import type { BlocksFieldDef } from '@elytracms/core/cms-core';
2
- import type { InspectorPane } from '../inspector/inspector-sidebar';
2
+ import type { InspectorPane } from '../inspector/inspector-sidebar.js';
3
3
  export declare function CompositionFieldEditor({ field, value, onChange, readOnly, trailingPanes, }: {
4
4
  field: BlocksFieldDef;
5
5
  value: unknown;
@@ -5,15 +5,15 @@ import { DEFAULT_SLOT, blockRootsOf } from '@elytracms/core/project-graph';
5
5
  import { Button, Panel, Row, Spacer, Text, Toolbar, ToolbarGroup, ToolbarSeparator } from '@elytracms/studio/ui';
6
6
  import { cn } from '@elytracms/studio/lib/utils';
7
7
  import { translate } from '@elytracms/studio/lib/i18n';
8
- import { BuilderProvider, useBuilder } from './builder-store';
9
- import { useCanvasViewports } from './canvas-breakpoints';
10
- import { BuilderCanvas } from './canvas';
11
- import { PageTree } from './page-tree';
12
- import { PropertyInspector } from './property-inspector';
13
- import { InspectorSidebar } from '../inspector/inspector-sidebar';
14
- import { InsertMenu } from './insert-menu';
15
- import { resolveInsertContext } from './insert-context';
16
- import { ReuseProvider } from './reuse-context';
8
+ import { BuilderProvider, useBuilder } from './builder-store.js';
9
+ import { useCanvasViewports } from './canvas-breakpoints.js';
10
+ import { BuilderCanvas } from './canvas.js';
11
+ import { PageTree } from './page-tree.js';
12
+ import { PropertyInspector } from './property-inspector.js';
13
+ import { InspectorSidebar } from '../inspector/inspector-sidebar.js';
14
+ import { InsertMenu } from './insert-menu.js';
15
+ import { resolveInsertContext } from './insert-context.js';
16
+ import { ReuseProvider } from './reuse-context.js';
17
17
  /**
18
18
  * EC-188 — the block-field surface: one canvas engine mounted on a composition
19
19
  * **field value** (AD-12), not the project graph.
@@ -1,5 +1,5 @@
1
- import type { InsertContext } from './insert-menu';
2
- import { useBuilder } from './builder-store';
1
+ import type { InsertContext } from './insert-menu.js';
2
+ import { useBuilder } from './builder-store.js';
3
3
  /**
4
4
  * Where an insert lands: the canvas insert-context resolution, shared by every
5
5
  * surface that mounts the canvas engine.
@@ -1,8 +1,8 @@
1
1
  import { getNode, getParentInfo } from '@elytracms/core/project-graph';
2
2
  import { getStudioRegistry } from '@elytracms/studio/lib/registry';
3
3
  import { shortId } from '@elytracms/studio/lib/persona/labels';
4
- import { intersectAllow } from './blocks-model';
5
- import { useBuilder } from './builder-store';
4
+ import { intersectAllow } from './blocks-model.js';
5
+ import { useBuilder } from './builder-store.js';
6
6
  /**
7
7
  * Where an insert lands: the canvas insert-context resolution, shared by every
8
8
  * surface that mounts the canvas engine.
@@ -5,5 +5,5 @@
5
5
  * max-height behaviours carried over from the old dialog) lives in
6
6
  * `blocks-panel.tsx`.
7
7
  */
8
- export { BlocksPanel as InsertMenu, preventOutsideDismiss } from './blocks-panel';
9
- export type { InsertContext } from './blocks-panel';
8
+ export { BlocksPanel as InsertMenu, preventOutsideDismiss } from './blocks-panel.js';
9
+ export type { InsertContext } from './blocks-panel.js';
@@ -5,5 +5,5 @@
5
5
  * max-height behaviours carried over from the old dialog) lives in
6
6
  * `blocks-panel.tsx`.
7
7
  */
8
- export { BlocksPanel as InsertMenu, preventOutsideDismiss } from './blocks-panel';
8
+ export { BlocksPanel as InsertMenu, preventOutsideDismiss } from './blocks-panel.js';
9
9
  //# sourceMappingURL=insert-menu.js.map
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { CONTAINER_ALIGNMENTS, GRID_MAX_COLUMNS, SPACING_TOKEN_NAMES, STACK_COMPONENT_ID, STACK_ON_MOBILE_PROP, gridStacksOnMobile, isLayoutContainerNode, isSpacingTokenName, isStaticProp, spacingTokenFromLegacyGap, staticProp, } from '@elytracms/core/project-graph';
3
3
  import { Field, InspectorSection, Select, Stack } from '@elytracms/studio/ui';
4
4
  import { translate } from '@elytracms/studio/lib/i18n';
5
- import { useBuilder } from './builder-store';
5
+ import { useBuilder } from './builder-store.js';
6
6
  /**
7
7
  * Contextual layout inspector (EC-162): when a `Stack`/`Grid` container is
8
8
  * selected, the Settings tab shows its canonical layout values — direction,
@@ -9,11 +9,11 @@ import { translate } from '@elytracms/studio/lib/i18n';
9
9
  import { useData } from '@elytracms/studio/lib/data';
10
10
  import { Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, Row, Spacer, Text, } from '@elytracms/studio/ui';
11
11
  import { cn } from '@elytracms/studio/lib/utils';
12
- import { useCollab } from '../collab/collab-context';
13
- import { useBuilder } from './builder-store';
14
- import { attachClipboardListeners, useStudioClipboard } from './clipboard-actions';
15
- import { useReuse } from './reuse-context';
16
- import { activeDrag, beginDrag, endDrag, onDragSessionEnd } from './drag-session';
12
+ import { useCollab } from '../collab/collab-context.js';
13
+ import { useBuilder } from './builder-store.js';
14
+ import { attachClipboardListeners, useStudioClipboard } from './clipboard-actions.js';
15
+ import { useReuse } from './reuse-context.js';
16
+ import { activeDrag, beginDrag, endDrag, onDragSessionEnd } from './drag-session.js';
17
17
  function flatten(node, depth, rows, meta) {
18
18
  rows.push({ id: node.id, componentId: node.componentId, depth, ...meta, condition: node.condition });
19
19
  for (const children of Object.values(node.slots ?? {})) {
@@ -6,9 +6,9 @@ import { Badge, Code, Field, InspectorSection, PanelHeader, Row, Spacer, Stack,
6
6
  import { humanizeName } from '@elytracms/studio/lib/utils';
7
7
  import { localizedLabel, translate } from '@elytracms/studio/lib/i18n';
8
8
  import { componentDisplayName } from '@elytracms/studio/lib/persona/labels';
9
- import { PropValueControl } from '../cms/prop-fields';
10
- import { useBuilder } from './builder-store';
11
- import { LayoutSection, layoutManagedPropNames } from './layout-inspector';
9
+ import { PropValueControl } from '../cms/prop-fields.js';
10
+ import { useBuilder } from './builder-store.js';
11
+ import { LayoutSection, layoutManagedPropNames } from './layout-inspector.js';
12
12
  export function PropertyInspector() {
13
13
  const builder = useBuilder();
14
14
  const studio = getStudioRegistry();
@@ -1,5 +1,5 @@
1
1
  import type { ReactNode } from 'react';
2
- import type { ReuseCapability } from './reuse';
2
+ import type { ReuseCapability } from './reuse.js';
3
3
  /**
4
4
  * In-canvas reuse gestures (EC-282): "Make reusable" promotes a selected block to
5
5
  * a new reusable document and replaces it in place with a transcluding embed;
@@ -5,9 +5,9 @@ import { readDocumentRef } from '@elytracms/core/cms-core';
5
5
  import { Button, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, Field, Input, Stack, toast, } from '@elytracms/studio/ui';
6
6
  import { getStudioRegistry } from '@elytracms/studio/lib/registry';
7
7
  import { localizedLabel, translate } from '@elytracms/studio/lib/i18n';
8
- import { useCms } from '../cms/cms-store';
9
- import { useBuilder } from './builder-store';
10
- import { buildReusableValues, makeEmbedNode, resolveReuseCapability } from './reuse';
8
+ import { useCms } from '../cms/cms-store.js';
9
+ import { useBuilder } from './builder-store.js';
10
+ import { buildReusableValues, makeEmbedNode, resolveReuseCapability } from './reuse.js';
11
11
  const ReuseContext = createContext(null);
12
12
  export function useReuse() {
13
13
  return useContext(ReuseContext);