@salsita-ai/sdk 0.50.0-develop.da8d27f5d7 → 0.50.0-develop.dbf0122072

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 (327) hide show
  1. package/README.md +19 -11
  2. package/dist/{phoenix/application-spec → application-spec/assistant}/generate-assistant-prompt.d.ts +6 -5
  3. package/dist/application-spec/assistant/generate-assistant-prompt.js +1 -0
  4. package/dist/application-spec/assistant/index.d.ts +1 -0
  5. package/dist/application-spec/assistant/index.js +1 -0
  6. package/dist/application-spec/errors/diagnostic-codes.d.ts +6 -0
  7. package/dist/application-spec/errors/diagnostic-codes.js +1 -1
  8. package/dist/application-spec/errors/diagnostic-messages.d.ts +6 -0
  9. package/dist/application-spec/errors/diagnostic-messages.js +1 -1
  10. package/dist/application-spec/generate-application/code/domain-runtime-files.js +1 -1
  11. package/dist/application-spec/generate-application/code/project-scaffolding.js +2 -2
  12. package/dist/application-spec/generate-application/code/templates/application-types.js +6 -6
  13. package/dist/application-spec/generate-application/code/templates/configurator-domain-code.d.ts +1 -0
  14. package/dist/application-spec/generate-application/code/templates/configurator-domain-code.js +11 -8
  15. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-assistant.d.ts +2 -2
  16. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-assistant.js +1 -1
  17. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-domain-block.d.ts +3 -1
  18. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-domain-block.js +70 -66
  19. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-phx-globals.js +3 -0
  20. package/dist/application-spec/generate-application/code/templates/domain-spec.js +7 -7
  21. package/dist/application-spec/generate-application/code/templates/domain.js +2 -2
  22. package/dist/application-spec/generate-application/code/templates/global-definition/generate-action-types.d.ts +11 -0
  23. package/dist/application-spec/generate-application/code/templates/global-definition/generate-action-types.js +8 -0
  24. package/dist/application-spec/generate-application/code/templates/global-definition/index.d.ts +1 -0
  25. package/dist/application-spec/generate-application/code/templates/global-definition/index.js +1 -1
  26. package/dist/application-spec/generate-application/code/templates/globals.js +1 -0
  27. package/dist/application-spec/generate-application/code/templates/index.d.ts +7 -6
  28. package/dist/application-spec/generate-application/code/templates/index.js +1 -1
  29. package/dist/application-spec/generate-application/code/templates/skills/agents-md.js +2 -0
  30. package/dist/application-spec/generate-application/code/templates/skills/phoenix-cli-skill.js +1 -0
  31. package/dist/application-spec/generate-application/code/templates/{phoenix-create-configurator-skill.d.ts → skills/phoenix-create-configurator-skill.d.ts} +1 -1
  32. package/dist/application-spec/generate-application/code/templates/{phoenix-create-configurator-skill.js → skills/phoenix-create-configurator-skill.js} +43 -13
  33. package/dist/application-spec/generate-application/code/templates/skills/phoenix-feedback-skill.js +54 -0
  34. package/dist/application-spec/generate-application/code/templates/{phoenix-review-skill.js → skills/phoenix-review-skill.js} +7 -5
  35. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill.js +1 -0
  36. package/dist/application-spec/generate-application/code/templates/skills/phoenix-variants-skill.d.ts +1 -0
  37. package/dist/application-spec/generate-application/code/templates/skills/phoenix-variants-skill.js +6 -0
  38. package/dist/application-spec/generate-application/code/templates/{common → skills}/sdk-content.d.ts +52 -3
  39. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +82 -0
  40. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.d.ts +2 -0
  41. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.js +1 -1
  42. package/dist/application-spec/generate-application/runtime/sections/actions-runtime.d.ts +14 -0
  43. package/dist/application-spec/generate-application/runtime/sections/actions-runtime.js +1 -0
  44. package/dist/application-spec/generate-application/runtime/sections/assistant-runtime.d.ts +4 -3
  45. package/dist/application-spec/generate-application/runtime/sections/assistant-runtime.js +1 -1
  46. package/dist/application-spec/generate-application/runtime/sections/index.d.ts +1 -0
  47. package/dist/application-spec/generate-application/runtime/sections/index.js +1 -1
  48. package/dist/application-spec/index.d.ts +1 -0
  49. package/dist/application-spec/index.js +1 -1
  50. package/dist/application-spec/parse-application-files/categorize/categorize-files.d.ts +3 -1
  51. package/dist/application-spec/parse-application-files/categorize/categorize-files.js +1 -1
  52. package/dist/application-spec/parse-application-files/merge/index.d.ts +1 -0
  53. package/dist/application-spec/parse-application-files/merge/index.js +1 -1
  54. package/dist/application-spec/parse-application-files/merge/merged-actions.d.ts +11 -0
  55. package/dist/application-spec/parse-application-files/merge/merged-actions.js +1 -0
  56. package/dist/application-spec/parse-application-files/merge/merged-spec.d.ts +2 -0
  57. package/dist/application-spec/parse-application-files/merge/merged-spec.js +1 -1
  58. package/dist/application-spec/parse-application-files/raw-spec/index.d.ts +1 -0
  59. package/dist/application-spec/parse-application-files/raw-spec/index.js +1 -1
  60. package/dist/application-spec/parse-application-files/raw-spec/raw-actions.d.ts +18 -0
  61. package/dist/application-spec/parse-application-files/raw-spec/raw-actions.js +1 -0
  62. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.d.ts +14 -2
  63. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.js +1 -1
  64. package/dist/application-spec/parse-application-files/raw-spec/raw-spec-file.d.ts +2 -0
  65. package/dist/application-spec/parse-application-files/raw-spec/raw-spec-file.js +1 -1
  66. package/dist/application-spec/parse-application-files/resolve/resolve-import-modules.js +1 -1
  67. package/dist/application-spec/parse-application-files/spec/application/application-spec.js +1 -1
  68. package/dist/application-spec/parse-application-files/spec/application/configurator-spec/configurator-spec.d.ts +4 -2
  69. package/dist/application-spec/parse-application-files/spec/application/configurator-spec/configurator-spec.js +1 -1
  70. package/dist/application-spec/parse-application-files/spec/common/index.d.ts +1 -0
  71. package/dist/application-spec/parse-application-files/spec/common/index.js +1 -1
  72. package/dist/application-spec/parse-application-files/spec/common/schema-ref-resolver.d.ts +23 -0
  73. package/dist/application-spec/parse-application-files/spec/common/schema-ref-resolver.js +1 -0
  74. package/dist/application-spec/parse-application-files/spec/model/names/action-name.d.ts +10 -0
  75. package/dist/application-spec/parse-application-files/spec/model/names/action-name.js +1 -0
  76. package/dist/application-spec/parse-application-files/spec/model/names/index.d.ts +1 -0
  77. package/dist/application-spec/parse-application-files/spec/model/names/index.js +1 -1
  78. package/dist/application-spec/parse-application-files/spec/sections/actions.d.ts +35 -0
  79. package/dist/application-spec/parse-application-files/spec/sections/actions.js +1 -0
  80. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-field-type.d.ts +5 -21
  81. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-field-type.js +1 -1
  82. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.d.ts +14 -39
  83. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  84. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-server-settings.d.ts +1 -1
  85. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant.d.ts +5 -19
  86. package/dist/application-spec/parse-application-files/spec/sections/index.d.ts +1 -0
  87. package/dist/application-spec/parse-application-files/spec/sections/index.js +1 -1
  88. package/dist/client/phoenix-api.d.ts +5 -1
  89. package/dist/configurator/application-runtime/extensions/configurator-extension-systems.d.ts +2 -1
  90. package/dist/configurator/application-runtime/extensions/configurator-extension-systems.js +1 -1
  91. package/dist/configurator/application-runtime/extensions/selectors.d.ts +2 -1
  92. package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
  93. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +180 -0
  94. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -0
  95. package/dist/configurator/{assistant → application-runtime/extensions/systems/assistant-system}/browser-details.d.ts +1 -1
  96. package/dist/configurator/application-runtime/extensions/systems/assistant-system/browser-details.js +1 -0
  97. package/dist/configurator/application-runtime/extensions/systems/assistant-system/change-recorder.d.ts +85 -0
  98. package/dist/configurator/application-runtime/extensions/systems/assistant-system/change-recorder.js +1 -0
  99. package/dist/configurator/{assistant → application-runtime/extensions/systems/assistant-system}/graphql-tools.d.ts +20 -16
  100. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.js +1 -0
  101. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.d.ts +4 -0
  102. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.js +1 -1
  103. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +16 -1
  104. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  105. package/dist/configurator/application-runtime/extensions/systems/graphql-system/side-effects.d.ts +9 -0
  106. package/dist/configurator/application-runtime/extensions/systems/graphql-system/side-effects.js +1 -0
  107. package/dist/configurator/application-runtime/extensions/systems/index.d.ts +1 -0
  108. package/dist/configurator/application-runtime/extensions/systems/index.js +1 -1
  109. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.d.ts +2 -0
  110. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.js +1 -1
  111. package/dist/configurator/common/frontend-analytics.d.ts +21 -21
  112. package/dist/configurator/index.d.ts +0 -1
  113. package/dist/configurator/index.js +1 -1
  114. package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
  115. package/dist/configurator/scene/scene-analytics/scene-analytics.d.ts +2 -2
  116. package/dist/configurator/ui/assistant/AssistantChips.d.ts +11 -0
  117. package/dist/configurator/ui/assistant/AssistantChips.js +1 -0
  118. package/dist/configurator/ui/assistant/AssistantComposer.d.ts +6 -0
  119. package/dist/configurator/ui/assistant/AssistantComposer.js +1 -0
  120. package/dist/configurator/ui/assistant/AssistantMarkdown.d.ts +7 -0
  121. package/dist/configurator/ui/assistant/AssistantMarkdown.js +1 -0
  122. package/dist/configurator/ui/assistant/AssistantPanel.d.ts +11 -0
  123. package/dist/configurator/ui/assistant/AssistantPanel.js +1 -0
  124. package/dist/configurator/ui/assistant/AssistantThread.d.ts +6 -0
  125. package/dist/configurator/ui/assistant/AssistantThread.js +1 -0
  126. package/dist/configurator/ui/assistant/assistant-failure.d.ts +18 -0
  127. package/dist/configurator/ui/assistant/assistant-failure.js +1 -0
  128. package/dist/configurator/ui/assistant/index.d.ts +2 -0
  129. package/dist/configurator/ui/assistant/index.js +1 -0
  130. package/dist/configurator/ui/assistant/streamed-markdown.d.ts +6 -0
  131. package/dist/configurator/ui/assistant/streamed-markdown.js +2 -0
  132. package/dist/configurator/ui/assistant/theme.d.ts +2 -0
  133. package/dist/configurator/ui/assistant/theme.js +1 -0
  134. package/dist/configurator/ui/assistant/thread-items.d.ts +37 -0
  135. package/dist/configurator/ui/assistant/thread-items.js +1 -0
  136. package/dist/configurator/ui/assistant/tool-chip.d.ts +44 -0
  137. package/dist/configurator/ui/assistant/tool-chip.js +1 -0
  138. package/dist/configurator/ui/assistant/use-follow-stream.d.ts +17 -0
  139. package/dist/configurator/ui/assistant/use-follow-stream.js +1 -0
  140. package/dist/configurator/ui/assistant/use-is-assistant-panel-open.d.ts +5 -0
  141. package/dist/configurator/ui/assistant/use-is-assistant-panel-open.js +1 -0
  142. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.js +5 -5
  143. package/dist/configurator/ui/configurator-layout/universal/MobileLayout.d.ts +2 -0
  144. package/dist/configurator/ui/configurator-layout/universal/MobileLayout.js +4 -4
  145. package/dist/configurator/ui/legacy/mobile-controls/MobileControls.d.ts +1 -1
  146. package/dist/configurator/ui/phoenix-layout-elements/AssistantToolbarButton.d.ts +10 -0
  147. package/dist/configurator/ui/phoenix-layout-elements/AssistantToolbarButton.js +1 -0
  148. package/dist/configurator/ui/phoenix-layout-elements/index.d.ts +1 -0
  149. package/dist/configurator/ui/phoenix-layout-elements/index.js +1 -1
  150. package/dist/docs/index.json +12 -2
  151. package/dist/docs/layouts/toolbar.mdx +6 -0
  152. package/dist/docs/other-features/domain-actions.mdx +418 -0
  153. package/dist/docs/other-features/side-effects.mdx +26 -0
  154. package/dist/docs/phoenix/admin.mdx +2 -2
  155. package/dist/docs/phoenix/best-practices.mdx +1 -0
  156. package/dist/docs/phoenix/finalization.mdx +1 -1
  157. package/dist/docs/phoenix/integration/headless-mode-external.mdx +5 -5
  158. package/dist/docs/phoenix/integration/widget-mode-external.mdx +5 -5
  159. package/dist/docs/phoenix/migrations.mdx +45 -5
  160. package/dist/docs/phoenix/phoenix-cli.mdx +139 -20
  161. package/dist/docs/phoenix/project-structure.mdx +7 -3
  162. package/dist/docs/phoenix/sdk-builder-workflow.mdx +12 -8
  163. package/dist/domain/actions/action-factory.d.ts +10 -0
  164. package/dist/domain/actions/action-factory.js +1 -0
  165. package/dist/domain/actions/prepare-action-implementations.d.ts +15 -0
  166. package/dist/domain/actions/prepare-action-implementations.js +5 -0
  167. package/dist/domain/application/application-config.d.ts +2 -60
  168. package/dist/domain/application/assistant/assistant-manifest.d.ts +61 -0
  169. package/dist/domain/application/assistant/assistant-manifest.js +1 -0
  170. package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +95 -0
  171. package/dist/domain/application/assistant/assistant-resolved-manifest.js +1 -0
  172. package/dist/domain/application/assistant/assistant-value-type.d.ts +9 -0
  173. package/dist/domain/application/assistant/assistant-value-type.js +1 -0
  174. package/dist/domain/application/assistant/build-assistant-manifest.d.ts +4 -0
  175. package/dist/domain/application/assistant/build-assistant-manifest.js +1 -0
  176. package/dist/domain/application/assistant/index.d.ts +3 -0
  177. package/dist/domain/application/assistant/index.js +1 -0
  178. package/dist/domain/application/assistant-field-options.d.ts +1 -1
  179. package/dist/domain/application/assistant-mutations.d.ts +16 -15
  180. package/dist/domain/application/assistant-mutations.js +1 -1
  181. package/dist/domain/application/assistant-recipe-groups.d.ts +1 -1
  182. package/dist/domain/application/configurator-builder.d.ts +4 -3
  183. package/dist/domain/application/index.d.ts +2 -1
  184. package/dist/domain/application/index.js +1 -1
  185. package/dist/domain/components/updates.d.ts +16 -0
  186. package/dist/domain/core/action.d.ts +67 -0
  187. package/dist/domain/core/action.js +1 -0
  188. package/dist/domain/core/domain-factory.d.ts +4 -0
  189. package/dist/domain/core/index.d.ts +1 -0
  190. package/dist/domain/domain-builder.d.ts +7 -0
  191. package/dist/domain/domain-builder.js +1 -1
  192. package/dist/domain/domain-context/action-system/action-system.d.ts +40 -0
  193. package/dist/domain/domain-context/action-system/action-system.js +1 -0
  194. package/dist/domain/domain-context/domain-context-systems.d.ts +5 -2
  195. package/dist/domain/domain-context/index.d.ts +2 -1
  196. package/dist/domain/domain-context/index.js +1 -1
  197. package/dist/domain/domain-context/store-system/store-system.js +1 -1
  198. package/dist/domain/domain-runtime/domain-context/domain-context.js +1 -1
  199. package/dist/domain/domain-runtime/domain-context/selectors.d.ts +4 -0
  200. package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
  201. package/dist/domain/domain-runtime/domain-runtime.d.ts +16 -4
  202. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  203. package/dist/domain/domain-runtime/spec/selectors.d.ts +2 -2
  204. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  205. package/dist/domain/domain-runtime/spec/types.d.ts +18 -4
  206. package/dist/domain/index.d.ts +2 -0
  207. package/dist/domain/index.js +1 -1
  208. package/dist/domain/mocks/create-mock-domain-runtime.d.ts +8 -2
  209. package/dist/domain/system-components/phoenix-layout-elements/assistant-toolbar-button.d.ts +44 -0
  210. package/dist/domain/system-components/phoenix-layout-elements/assistant-toolbar-button.js +1 -0
  211. package/dist/domain/system-components/phoenix-layout-elements/index.d.ts +1 -0
  212. package/dist/domain/system-components/phoenix-layout-elements/index.js +1 -1
  213. package/dist/domain/system-components/phoenix-layout-elements/phoenix-layout-element.d.ts +2 -1
  214. package/dist/domain/system-components/phoenix-layout-elements/phoenix-layout-element.js +1 -1
  215. package/dist/editor/Editor.js +1 -1
  216. package/dist/editor/domain-editors/DomainSpecContext.js +1 -1
  217. package/dist/editor/domain-editors/apply-spec-update.js +1 -1
  218. package/dist/editor/domain-editors/use-implementation-files.d.ts +7 -3
  219. package/dist/editor/domain-editors/use-implementation-files.js +1 -1
  220. package/dist/editor/graphql/GraphQLPanel.js +1 -1
  221. package/dist/editor/variants/VariantAnswerFooter.d.ts +17 -0
  222. package/dist/editor/variants/VariantAnswerFooter.js +1 -0
  223. package/dist/editor/variants/VariantPreviewHandler.d.ts +6 -0
  224. package/dist/editor/variants/VariantPreviewHandler.js +1 -0
  225. package/dist/editor/variants/variant-preview-styles.d.ts +49 -0
  226. package/dist/editor/variants/variant-preview-styles.js +1 -0
  227. package/dist/i18n/locales/cs/messages.js +1 -1
  228. package/dist/i18n/locales/da/messages.js +1 -1
  229. package/dist/i18n/locales/de/messages.js +1 -1
  230. package/dist/i18n/locales/de-AT/messages.js +1 -1
  231. package/dist/i18n/locales/en/messages.js +1 -1
  232. package/dist/i18n/locales/en-AU/messages.js +1 -1
  233. package/dist/i18n/locales/en-GB/messages.js +1 -1
  234. package/dist/i18n/locales/es/messages.js +1 -1
  235. package/dist/i18n/locales/fr/messages.js +1 -1
  236. package/dist/i18n/locales/hu/messages.js +1 -1
  237. package/dist/i18n/locales/it/messages.js +1 -1
  238. package/dist/i18n/locales/nl/messages.js +1 -1
  239. package/dist/i18n/locales/pl/messages.js +1 -1
  240. package/dist/i18n/locales/pt/messages.js +1 -1
  241. package/dist/i18n/locales/ro/messages.js +1 -1
  242. package/dist/i18n/locales/sk/messages.js +1 -1
  243. package/dist/i18n/locales/tr/messages.js +1 -1
  244. package/dist/legacy/domain-spec/__generated/domain-schema.d.ts +6 -0
  245. package/dist/phoenix/application-spec/application-spec-builder.js +1 -1
  246. package/dist/phoenix/application-spec/resolve-deployment-data.js +2 -2
  247. package/dist/phoenix/cli.js +1 -1
  248. package/dist/phoenix/commands/build.d.ts +5 -0
  249. package/dist/phoenix/commands/build.js +1 -1
  250. package/dist/phoenix/commands/deploy.js +2 -2
  251. package/dist/phoenix/commands/dev.js +5 -5
  252. package/dist/phoenix/commands/feedback.d.ts +2 -1
  253. package/dist/phoenix/commands/feedback.js +1 -1
  254. package/dist/phoenix/commands/index.d.ts +1 -0
  255. package/dist/phoenix/commands/index.js +1 -1
  256. package/dist/phoenix/commands/login.d.ts +24 -6
  257. package/dist/phoenix/commands/login.js +2 -2
  258. package/dist/phoenix/commands/story-dev.js +2 -2
  259. package/dist/phoenix/commands/variants.d.ts +35 -0
  260. package/dist/phoenix/commands/variants.js +1 -0
  261. package/dist/phoenix/editor-server/commands-router.d.ts +68 -1
  262. package/dist/phoenix/editor-server/commands-router.js +1 -1
  263. package/dist/phoenix/editor-server/editor-router.d.ts +65 -0
  264. package/dist/phoenix/editor-server/editor-server.d.ts +3 -3
  265. package/dist/phoenix/editor-server/editor-server.js +1 -1
  266. package/dist/phoenix/editor-server/protocol.d.ts +1 -0
  267. package/dist/phoenix/editor-server/spec-router.js +1 -1
  268. package/dist/phoenix/editor-server/trpc.d.ts +3 -0
  269. package/dist/phoenix/services/application-spec-project-watcher.d.ts +13 -2
  270. package/dist/phoenix/services/application-spec-project-watcher.js +3 -3
  271. package/dist/phoenix/services/index.d.ts +5 -0
  272. package/dist/phoenix/services/index.js +1 -1
  273. package/dist/phoenix/services/phoenix-application.d.ts +21 -0
  274. package/dist/phoenix/services/phoenix-application.js +1 -0
  275. package/dist/phoenix/services/phoenix-store.d.ts +48 -0
  276. package/dist/phoenix/services/phoenix-store.js +1 -0
  277. package/dist/phoenix/services/phx-banner-plugin.d.ts +32 -0
  278. package/dist/phoenix/services/phx-banner-plugin.js +1 -0
  279. package/dist/phoenix/services/phx-licenses-plugin.d.ts +55 -0
  280. package/dist/phoenix/services/phx-licenses-plugin.js +8 -0
  281. package/dist/phoenix/services/phx-variant-previews-plugin.d.ts +9 -0
  282. package/dist/phoenix/services/phx-variant-previews-plugin.js +1 -0
  283. package/dist/phoenix/services/variant-file-session.d.ts +36 -0
  284. package/dist/phoenix/services/variant-file-session.js +1 -0
  285. package/dist/phoenix/services/variant-preview-service.d.ts +80 -0
  286. package/dist/phoenix/services/variant-preview-service.js +1 -0
  287. package/dist/phoenix/services/vite-config.d.ts +2 -0
  288. package/dist/phoenix/services/vite-config.js +1 -1
  289. package/dist/phoenix/utils/index.d.ts +1 -0
  290. package/dist/phoenix/utils/index.js +1 -1
  291. package/dist/phoenix/utils/read-git-commit.d.ts +14 -0
  292. package/dist/phoenix/utils/read-git-commit.js +1 -0
  293. package/dist/react-sdk/application-runtime/common-services/analytics/analytics-service.d.ts +2 -2
  294. package/dist/react-sdk/application-runtime/common-services/analytics/domain-controls-analytics.d.ts +21 -21
  295. package/dist/react-sdk/application-runtime/hooks/data/use-published-data.d.ts +1 -1
  296. package/dist/react-sdk/application-runtime/hooks/use-spec.d.ts +1 -1
  297. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +16 -4
  298. package/dist/react-sdk/domain-context/common-hooks/use-domain-context.d.ts +3 -0
  299. package/dist/ui-sdk/common/use-viewport-size.d.ts +4 -1
  300. package/dist/ui-sdk/common/use-viewport-size.js +1 -1
  301. package/dist/ui-sdk/components/mobile-controls/index.d.ts +1 -1
  302. package/dist/ui-sdk/theme/types.d.ts +4 -0
  303. package/package.json +5 -8
  304. package/schema/domain-spec.json +24 -0
  305. package/dist/application-spec/generate-application/code/templates/agents-md.js +0 -2
  306. package/dist/application-spec/generate-application/code/templates/common/sdk-content.js +0 -67
  307. package/dist/application-spec/generate-application/code/templates/phoenix-cli-skill.js +0 -1
  308. package/dist/application-spec/generate-application/code/templates/phoenix-feedback-skill.js +0 -31
  309. package/dist/application-spec/generate-application/code/templates/phoenix-skill.js +0 -1
  310. package/dist/configurator/assistant/browser-details.js +0 -1
  311. package/dist/configurator/assistant/graphql-tools.js +0 -1
  312. package/dist/configurator/assistant/index.d.ts +0 -1
  313. package/dist/configurator/assistant/index.js +0 -1
  314. package/dist/configurator/assistant/use-assistant-chat.d.ts +0 -20
  315. package/dist/configurator/assistant/use-assistant-chat.js +0 -1
  316. package/dist/extras/assistant/AssistantChat.d.ts +0 -6
  317. package/dist/extras/assistant/AssistantChat.js +0 -1
  318. package/dist/extras/assistant/index.d.ts +0 -1
  319. package/dist/extras/assistant/index.js +0 -1
  320. package/dist/phoenix/application-spec/generate-assistant-prompt.js +0 -1
  321. /package/dist/application-spec/generate-application/code/templates/{common → skills}/agent-skill.d.ts +0 -0
  322. /package/dist/application-spec/generate-application/code/templates/{common → skills}/agent-skill.js +0 -0
  323. /package/dist/application-spec/generate-application/code/templates/{agents-md.d.ts → skills/agents-md.d.ts} +0 -0
  324. /package/dist/application-spec/generate-application/code/templates/{phoenix-cli-skill.d.ts → skills/phoenix-cli-skill.d.ts} +0 -0
  325. /package/dist/application-spec/generate-application/code/templates/{phoenix-feedback-skill.d.ts → skills/phoenix-feedback-skill.d.ts} +0 -0
  326. /package/dist/application-spec/generate-application/code/templates/{phoenix-review-skill.d.ts → skills/phoenix-review-skill.d.ts} +0 -0
  327. /package/dist/application-spec/generate-application/code/templates/{phoenix-skill.d.ts → skills/phoenix-skill.d.ts} +0 -0
@@ -1,11 +1,11 @@
1
- import{jsx as a,jsxs as t,Fragment as o}from"react/jsx-runtime";import{keyframes as e,paperClasses as r,snackbarClasses as d,styled as i,useTheme as n,useThemeProps as s}from"@mui/material";import{AnimatePresence as l,motion as p}from"motion/react";import{useCallback as b,useRef as u}from"react";import{useAccessService as c,useIsFullscreenActive as m}from"#package/react-sdk";import{attrf as h,commonStyles as y,numToPx as g,useInvalidateScrollTimeline as f,useIsEmpty as k,useResponsive as x}from"#package/ui-sdk";import{usePreview as v}from"../../../configurator-context/index.js";import{LayoutSlots as S}from"../slots/index.js";import{DesktopPreview as E}from"./DesktopPreview.js";import{useSceneSafeArea as w}from"./use-scene-safe-area.js";let R="PhxDesktopSidebar",B="minimalist",$="split",C="visible",D="hidden",T={Root:i("div",{name:R,slot:"root",shouldForwardProp:a=>"ownerState"!==a})(({ownerState:a})=>[`
1
+ import{jsx as a,jsxs as t,Fragment as o}from"react/jsx-runtime";import{keyframes as e,paperClasses as r,snackbarClasses as d,styled as i,useTheme as n,useThemeProps as s}from"@mui/material";import{AnimatePresence as l,motion as p}from"motion/react";import{useCallback as b,useRef as u}from"react";import{useAccessService as c,useIsFullscreenActive as m}from"#package/react-sdk";import{attrf as h,commonStyles as y,numToPx as g,useInvalidateScrollTimeline as f,useIsEmpty as x,useResponsive as k}from"#package/ui-sdk";import{usePreview as v}from"../../../configurator-context/index.js";import{ASSISTANT_PANEL_SLOT as S,AssistantPanel as E,useIsAssistantPanelOpen as w}from"../../assistant/index.js";import{LayoutSlots as R}from"../slots/index.js";import{DesktopPreview as $}from"./DesktopPreview.js";import{useSceneSafeArea as B}from"./use-scene-safe-area.js";let C="PhxDesktopSidebar",D="minimalist",T="split",I="visible",A="hidden",P="assistant",F={Root:i("div",{name:C,slot:"root",shouldForwardProp:a=>"ownerState"!==a})(({ownerState:a})=>[`
2
2
  --phx-sidebar-background: ${a.background};
3
3
  --phx-sidebar-border: ${a.border};
4
4
  --phx-sidebar-filter: ${a.filter};
5
5
  --phx-sidebar-padding: ${a.padding};
6
6
  --phx-sidebar-radius: ${a.borderRadius}px;
7
7
  --phx-sidebar-scrollable-indicator-background: ${a.scrollableIndicatorBackground};
8
- `,{borderRadius:"var(--phx-sidebar-radius)",display:"grid",filter:"var(--phx-sidebar-filter)",gridTemplateRows:"min-content minmax(0, 1fr) min-content",inlineSize:a.width,position:"relative","& > *":{pointerEvents:"auto"},"@container style(--inspect: on)":{"--phx-sidebar-background":"hsl(from gold h s l / 50%)"},[`&[data-sidebar*="${C}"]`]:{opacity:1},[`&[data-sidebar*="${D}"]`]:{opacity:0}}]),Tabs:i("div",{name:R,slot:"tabs",shouldForwardProp:a=>"ownerState"!==a})(({theme:{spacing:a}})=>({insetBlockStart:0,insetInlineEnd:"100%",maxInlineSize:150,paddingInlineEnd:a(2),position:"absolute","&:is(:empty)":{padding:0},[`.${r.root}`]:{boxShadow:"none"}})),Header:i("header",{name:R,slot:"header",shouldForwardProp:a=>"ownerState"!==a})({background:"var(--phx-sidebar-background)",border:"var(--phx-sidebar-border)",borderBlockEnd:0,borderStartStartRadius:"inherit",borderStartEndRadius:"inherit",paddingBlock:"calc(0.6 * var(--phx-sidebar-padding))",paddingInline:"var(--phx-sidebar-padding)","&:is(:empty)":{border:0,paddingBlock:0}}),Body:i("div",{name:R,slot:"body",shouldForwardProp:a=>"ownerState"!==a})(({ownerState:a})=>({background:"var(--phx-sidebar-background)",border:"var(--phx-sidebar-border)",borderBlockStart:0,borderBlockEnd:0,display:"grid",position:"relative",'[data-layout*="slot[sidebar]"]:where(:has([data-sidebar="slot[header]"])) &':{...a.isHeaderEmpty&&{borderBlockStart:"var(--phx-sidebar-border)",borderStartStartRadius:"inherit",borderStartEndRadius:"inherit",paddingBlockStart:"var(--phx-sidebar-padding)"}},'&:has([data-sidebar*="slot[content]"]:empty)':{...a.isContentEmpty&&{paddingBlock:0}},[`[data-sidebar*="${B}"] &`]:{...a.isContentEmpty&&{border:0}},[`[data-sidebar*="${$}"] &`]:{borderBlockEnd:"var(--phx-sidebar-border)",borderEndStartRadius:"inherit",borderEndEndRadius:"inherit",paddingBlockEnd:"var(--phx-sidebar-padding)"}})),Content:i("div",{name:R,slot:"content",shouldForwardProp:a=>"ownerState"!==a})(({ownerState:a,theme:{spacing:t}})=>({...y.layout.normalizeScrollableContainer,alignContent:"start",borderRadius:"inherit",display:"grid",gap:t(3),padding:"var(--phx-sidebar-padding)","@supports (animation-timeline: scroll())":{"&[data-scrollable]":{scrollTimeline:"--phx-sidebar-timeline y","&::after, &::before":{animation:`${y.keyframes.fadeIn} both`,animationTimeline:"--phx-sidebar-timeline",background:"var(--phx-sidebar-scrollable-indicator-background)",backgroundRepeat:"no-repeat",content:'""',display:"block",insetInline:0,opacity:0,pointerEvents:"none",position:"absolute",zIndex:1},"&::after":{animationDirection:"reverse",animationRange:`calc(100% - ${t(4)}) 100%`,borderEndStartRadius:"inherit",borderEndEndRadius:"inherit",insetBlockStart:"50%",insetBlockEnd:0,scale:"1 -1"},"&::before":{animationRange:`0 ${t(4)}`,borderStartStartRadius:"inherit",borderStartEndRadius:"inherit",insetBlockStart:0,insetBlockEnd:"50%"}}},"&:is(:empty)":{paddingBlock:0},'[data-layout*="slot[sidebar]"] &':{...a.isHeaderEmpty&&{paddingBlockStart:0,"&::before":{borderStartStartRadius:0,borderStartEndRadius:0,insetBlockStart:"var(--phx-sidebar-padding)"}}},[`[data-sidebar*="${$}"] &`]:{paddingBlockEnd:0,"&::after":{borderEndStartRadius:0,borderEndEndRadius:0,insetBlockEnd:"var(--phx-sidebar-padding)"}}})),Footer:i("footer",{name:R,slot:"footer",shouldForwardProp:a=>"ownerState"!==a})(({ownerState:a,theme:{palette:t,spacing:o}})=>({background:"var(--phx-sidebar-background)",border:"var(--phx-sidebar-border)",borderBlockStart:`1px solid ${t.divider}`,borderEndStartRadius:"inherit",borderEndEndRadius:"inherit",padding:"var(--phx-sidebar-padding)","&:is(:empty)":{border:0,paddingBlock:0},[`[data-sidebar*="${B}"] &`]:{...a.isContentEmpty&&{borderBlockStart:"var(--phx-sidebar-border)",borderStartStartRadius:"inherit",borderStartEndRadius:"inherit"}},[`[data-sidebar*="${$}"] &`]:{borderBlockStart:"var(--phx-sidebar-border)",borderStartStartRadius:"inherit",borderStartEndRadius:"inherit",marginBlockStart:o(2)}}))};export const PhxDesktopLayoutName="PhxDesktopLayout";let I="PhxDesktopLayout",A=i(p.div,{name:I,slot:"root",shouldForwardProp:a=>"ownerState"!==a})(({ownerState:a,theme:{spacing:t}})=>{let o=e({"0%":{marginInlineEnd:0},"100%":{marginInlineEnd:t(-2)}});return[`
8
+ `,{borderRadius:"var(--phx-sidebar-radius)",display:"grid",filter:"var(--phx-sidebar-filter)",gridTemplateRows:"min-content minmax(0, 1fr) min-content",inlineSize:a.width,position:"relative","& > *":{pointerEvents:"auto"},"@container style(--inspect: on)":{"--phx-sidebar-background":"hsl(from gold h s l / 50%)"},[`&[data-sidebar*="${I}"]`]:{opacity:1},[`&[data-sidebar*="${A}"]`]:{opacity:0},[`&[data-sidebar*="${P}"] > :not([data-sidebar="${S}"])`]:{visibility:"hidden"}}]),Tabs:i("div",{name:C,slot:"tabs",shouldForwardProp:a=>"ownerState"!==a})(({theme:{spacing:a}})=>({insetBlockStart:0,insetInlineEnd:"100%",maxInlineSize:150,paddingInlineEnd:a(2),position:"absolute","&:is(:empty)":{padding:0},[`.${r.root}`]:{boxShadow:"none"}})),Header:i("header",{name:C,slot:"header",shouldForwardProp:a=>"ownerState"!==a})({background:"var(--phx-sidebar-background)",border:"var(--phx-sidebar-border)",borderBlockEnd:0,borderStartStartRadius:"inherit",borderStartEndRadius:"inherit",paddingBlock:"calc(0.6 * var(--phx-sidebar-padding))",paddingInline:"var(--phx-sidebar-padding)","&:is(:empty)":{border:0,paddingBlock:0}}),Body:i("div",{name:C,slot:"body",shouldForwardProp:a=>"ownerState"!==a})(({ownerState:a})=>({background:"var(--phx-sidebar-background)",border:"var(--phx-sidebar-border)",borderBlockStart:0,borderBlockEnd:0,display:"grid",position:"relative",'[data-layout*="slot[sidebar]"]:where(:has([data-sidebar="slot[header]"])) &':{...a.isHeaderEmpty&&{borderBlockStart:"var(--phx-sidebar-border)",borderStartStartRadius:"inherit",borderStartEndRadius:"inherit",paddingBlockStart:"var(--phx-sidebar-padding)"}},'&:has([data-sidebar*="slot[content]"]:empty)':{...a.isContentEmpty&&{paddingBlock:0}},[`[data-sidebar*="${D}"] &`]:{...a.isContentEmpty&&{border:0}},[`[data-sidebar*="${T}"] &`]:{borderBlockEnd:"var(--phx-sidebar-border)",borderEndStartRadius:"inherit",borderEndEndRadius:"inherit",paddingBlockEnd:"var(--phx-sidebar-padding)"}})),Content:i("div",{name:C,slot:"content",shouldForwardProp:a=>"ownerState"!==a})(({ownerState:a,theme:{spacing:t}})=>({...y.layout.normalizeScrollableContainer,alignContent:"start",borderRadius:"inherit",display:"grid",gap:t(3),padding:"var(--phx-sidebar-padding)","@supports (animation-timeline: scroll())":{"&[data-scrollable]":{scrollTimeline:"--phx-sidebar-timeline y","&::after, &::before":{animation:`${y.keyframes.fadeIn} both`,animationTimeline:"--phx-sidebar-timeline",background:"var(--phx-sidebar-scrollable-indicator-background)",backgroundRepeat:"no-repeat",content:'""',display:"block",insetInline:0,opacity:0,pointerEvents:"none",position:"absolute",zIndex:1},"&::after":{animationDirection:"reverse",animationRange:`calc(100% - ${t(4)}) 100%`,borderEndStartRadius:"inherit",borderEndEndRadius:"inherit",insetBlockStart:"50%",insetBlockEnd:0,scale:"1 -1"},"&::before":{animationRange:`0 ${t(4)}`,borderStartStartRadius:"inherit",borderStartEndRadius:"inherit",insetBlockStart:0,insetBlockEnd:"50%"}}},"&:is(:empty)":{paddingBlock:0},'[data-layout*="slot[sidebar]"] &':{...a.isHeaderEmpty&&{paddingBlockStart:0,"&::before":{borderStartStartRadius:0,borderStartEndRadius:0,insetBlockStart:"var(--phx-sidebar-padding)"}}},[`[data-sidebar*="${T}"] &`]:{paddingBlockEnd:0,"&::after":{borderEndStartRadius:0,borderEndEndRadius:0,insetBlockEnd:"var(--phx-sidebar-padding)"}}})),Footer:i("footer",{name:C,slot:"footer",shouldForwardProp:a=>"ownerState"!==a})(({ownerState:a,theme:{palette:t,spacing:o}})=>({background:"var(--phx-sidebar-background)",border:"var(--phx-sidebar-border)",borderBlockStart:`1px solid ${t.divider}`,borderEndStartRadius:"inherit",borderEndEndRadius:"inherit",padding:"var(--phx-sidebar-padding)","&:is(:empty)":{border:0,paddingBlock:0},[`[data-sidebar*="${D}"] &`]:{...a.isContentEmpty&&{borderBlockStart:"var(--phx-sidebar-border)",borderStartStartRadius:"inherit",borderStartEndRadius:"inherit"}},[`[data-sidebar*="${T}"] &`]:{borderBlockStart:"var(--phx-sidebar-border)",borderStartStartRadius:"inherit",borderStartEndRadius:"inherit",marginBlockStart:o(2)}}))};export const PhxDesktopLayoutName="PhxDesktopLayout";let j="PhxDesktopLayout",z=i(p.div,{name:j,slot:"root",shouldForwardProp:a=>"ownerState"!==a})(({ownerState:a,theme:{spacing:t}})=>{let o=e({"0%":{marginInlineEnd:0},"100%":{marginInlineEnd:t(-2)}});return[`
9
9
  --inspect: off; // 🕹️ inspection mode toggle
10
10
 
11
11
  --phx-layout-sidebar-track-size: ${g(a.sidebarWidth)};
@@ -38,12 +38,12 @@ import{jsx as a,jsxs as t,Fragment as o}from"react/jsx-runtime";import{keyframes
38
38
  [bottom-start]
39
39
  min-content
40
40
  [bottom-end full-end]
41
- `,inset:0,isolation:"isolate",pointerEvents:"none",position:"absolute","@container style(--inspect: on)":{'& > *, & > * > *, [data-layout*="slot[body.footer]"] > *':{outline:"2px solid hsl(from tomato h s l / 50%)"}},'[data-layout*="interactive"]':{"& > *":{pointerEvents:"auto"}},'[data-layout*="slot[header]"]':{gridArea:"top-start / main-start / top-end / sidebar-end"},'[data-layout*="slot[body]"]':{containerType:"size",display:"grid",gridArea:"main",gridRowStart:"top-end",gridTemplateRows:"min-content 1fr min-content"},'[data-layout*="slot[body.top]"]':{gridArea:"1 / 1 / 2 / -1","& > *":{...y.transition.fadeIn}},'[data-layout*="slot[body.safeSceneArea]"]':{gridArea:"1 / 1 / 3 / -1","@container style(--inspect: on)":{background:"hsl(from lime h s l / 50%)"}},'[data-layout*="slot[body.bottom]"]':{alignItems:"end",display:"grid",gap:t(2),gridArea:"3 / 1 / 4 / -1",gridTemplateColumns:"minmax(0, auto) minmax(60px, 1fr)",justifyContent:"start",position:"relative",'&:has([data-layout="slot[body.viewControls]"]:empty)':{gap:0,gridTemplateColumns:"repeat(2, auto)"}},'[data-layout="slot[body.toolbar]"]':{animation:`${o} auto linear both`,animationTimeline:"scroll(self inline)",display:"flex",margin:t(-2),overflowX:"scroll",overscrollBehavior:"contain",padding:t(2),scrollbarWidth:"none","&::after":{content:'""'}},'[data-layout="slot[body.toolControls]"]':{insetBlockEnd:`calc(100% + ${t(6)})`,position:"absolute","& > *":{...y.transition.fadeIn,transitionDuration:"300ms"}},'[data-layout="slot[body.viewControls]"]':{},'[data-layout="slot[body.logo]"], [data-layout="slot[body.sideEffects]"]':{insetBlockEnd:`calc(100% + ${t(2)})`,position:"absolute"},'[data-layout="slot[body.sideEffects]"]':{insetInline:0,[`.${d.root}`]:{inset:"unset",insetBlockEnd:0,position:"absolute"}},'[data-layout*="slot[sidebar]"]':{display:"grid",gridArea:"top-start / sidebar-start / main-end / sidebar-end",gridTemplateRows:"minmax(0, auto)"},'[data-layout*="slot[footer]"]':{display:"grid",gap:"var(--phx-layout-gap)",gridArea:"bottom-start / full-start / bottom-end / full-end"},'&:has([data-header*="fixed"])':{'[data-layout*="slot[header]"]':{gridArea:"full-start / full-start / top-end / full-end"},'[data-layout*="slot[body]"]':{gridRowStart:"main-start"},'[data-layout*="slot[sidebar]"]':{gridRow:"main-start / main-end"}},'&:has([data-header*="floating"])':{'[data-layout*="slot[header]"]':{gridColumnEnd:"main-end"}},[`&:has([data-sidebar*="${B}"])`]:{'[data-layout*="slot[sidebar]"]':{alignContent:"end",gridRow:"main-start / main-end"}},[`&:has([data-header*="floating"]):has([data-sidebar*="${B}"])`]:{'[data-layout*="slot[header]"]':{gridColumnEnd:"sidebar-end"},'[data-layout*="slot[sidebar]"]':{gridRowStart:"top-end"}},[`&:has([data-sidebar*="${D}"])`]:{"--phx-layout-gap":0,"--phx-layout-sidebar-track-size":0,'[data-layout*="slot[sidebar]"]':{overflow:"hidden"}}}]}),P=i("div")({gridArea:"1 / 1 / -1 / -1"});export const DesktopLayout=()=>{let e=u(null),r=u(null),{palette:d,shape:i,spacing:p}=n(),{sidebarWidth:y="clamp(360px, 30cqi, 400px)"}=s({props:{},name:I}),{background:g=d.background.paper,border:F=0,borderRadius:j=i.sidebarBorderRadius??i.borderRadius,filter:z=`
41
+ `,inset:0,isolation:"isolate",pointerEvents:"none",position:"absolute","@container style(--inspect: on)":{'& > *, & > * > *, [data-layout*="slot[body.footer]"] > *':{outline:"2px solid hsl(from tomato h s l / 50%)"}},'[data-layout*="interactive"]':{"& > *":{pointerEvents:"auto"}},'[data-layout*="slot[header]"]':{gridArea:"top-start / main-start / top-end / sidebar-end"},'[data-layout*="slot[body]"]':{containerType:"size",display:"grid",gridArea:"main",gridRowStart:"top-end",gridTemplateRows:"min-content 1fr min-content"},'[data-layout*="slot[body.top]"]':{gridArea:"1 / 1 / 2 / -1","& > *":{...y.transition.fadeIn}},'[data-layout*="slot[body.safeSceneArea]"]':{gridArea:"1 / 1 / 3 / -1","@container style(--inspect: on)":{background:"hsl(from lime h s l / 50%)"}},'[data-layout*="slot[body.bottom]"]':{alignItems:"end",display:"grid",gap:t(2),gridArea:"3 / 1 / 4 / -1",gridTemplateColumns:"minmax(0, auto) minmax(60px, 1fr)",justifyContent:"start",position:"relative",'&:has([data-layout="slot[body.viewControls]"]:empty)':{gap:0,gridTemplateColumns:"repeat(2, auto)"}},'[data-layout="slot[body.toolbar]"]':{animation:`${o} auto linear both`,animationTimeline:"scroll(self inline)",display:"flex",margin:t(-2),overflowX:"scroll",overscrollBehavior:"contain",padding:t(2),scrollbarWidth:"none","&::after":{content:'""'}},'[data-layout="slot[body.toolControls]"]':{insetBlockEnd:`calc(100% + ${t(6)})`,position:"absolute","& > *":{...y.transition.fadeIn,transitionDuration:"300ms"}},'[data-layout="slot[body.viewControls]"]':{},'[data-layout="slot[body.logo]"], [data-layout="slot[body.sideEffects]"]':{insetBlockEnd:`calc(100% + ${t(2)})`,position:"absolute"},'[data-layout="slot[body.sideEffects]"]':{insetInline:0,[`.${d.root}`]:{inset:"unset",insetBlockEnd:0,position:"absolute"}},'[data-layout*="slot[sidebar]"]':{display:"grid",gridArea:"top-start / sidebar-start / main-end / sidebar-end",gridTemplateRows:"minmax(0, auto)"},'[data-layout*="slot[footer]"]':{display:"grid",gap:"var(--phx-layout-gap)",gridArea:"bottom-start / full-start / bottom-end / full-end"},'&:has([data-header*="fixed"])':{'[data-layout*="slot[header]"]':{gridArea:"full-start / full-start / top-end / full-end"},'[data-layout*="slot[body]"]':{gridRowStart:"main-start"},'[data-layout*="slot[sidebar]"]':{gridRow:"main-start / main-end"}},'&:has([data-header*="floating"])':{'[data-layout*="slot[header]"]':{gridColumnEnd:"main-end"}},[`&:has([data-sidebar*="${D}"])`]:{'[data-layout*="slot[sidebar]"]':{alignContent:"end",gridRow:"main-start / main-end"}},[`&:has([data-header*="floating"]):has([data-sidebar*="${D}"])`]:{'[data-layout*="slot[header]"]':{gridColumnEnd:"sidebar-end"},'[data-layout*="slot[sidebar]"]':{gridRowStart:"top-end"}},[`&:has([data-sidebar*="${P}"])`]:{'[data-layout*="slot[sidebar]"]':{alignContent:"stretch"}},[`&:has([data-sidebar*="${A}"])`]:{"--phx-layout-gap":0,"--phx-layout-sidebar-track-size":0,'[data-layout*="slot[sidebar]"]':{overflow:"hidden"}}}]}),H=i("div")({gridArea:"1 / 1 / -1 / -1"});export const DesktopLayout=()=>{let e=u(null),r=u(null),{palette:d,shape:i,spacing:p}=n(),{sidebarWidth:y="clamp(360px, 30cqi, 400px)"}=s({props:{},name:j}),{background:g=d.background.paper,border:S=0,borderRadius:L=i.sidebarBorderRadius??i.borderRadius,filter:W=`
42
42
  drop-shadow(0 1px 1.5px hsl(from ${d.common.black} h s l / 12%))
43
43
  drop-shadow(0 1px 0.5px hsl(from ${d.common.black} h s l / 14%))
44
44
  drop-shadow(0 2px 0.5px hsl(from ${d.common.black} h s l / 20%))
45
- `,padding:H=p(2.5),scrollableIndicatorBackground:L=`linear-gradient(
45
+ `,padding:q=p(2.5),scrollableIndicatorBackground:M=`linear-gradient(
46
46
  180deg,
47
47
  hsl(from black h s l / 12%),
48
48
  hsl(from black h s l / 0%) 8px
49
- )`}=s({props:{},name:R}),{hasMiniSidebar:W,hasSplitSidebar:q}=S.useSidebarContent(),{accessInfo:M}=c(),N=m(),{isPreview:V,isHidden:X}=v(),G=!X&&!V,J=!N,{setCanvasPadding:K,setAnimating:O}=x(),{containerRef:Q,safeAreaRef:U,update:Y}=w(K,W,G),Z=b(()=>{O(!0)},[O]),_=b(()=>{O(!1),Y()},[O,Y]),aa=G&&J,at=k(e,{disabled:!aa}),ao=k(r,{disabled:!aa});f(r,{disabled:!aa});let ae={background:g,border:F,borderRadius:j,filter:z,isHeaderEmpty:at,isContentEmpty:ao,padding:H,scrollableIndicatorBackground:L,width:y};return a(o,{children:t(l,{mode:"wait",children:[!X&&V&&a(E,{},"preview-layout"),G&&t(A,{layoutId:"ui-layout",layout:!0,ownerState:{sidebarWidth:y},"data-layout":h({state:{initial:!N,fullscreen:N}}),onLayoutAnimationStart:Z,onLayoutAnimationComplete:_,children:[a(P,{ref:Q}),a("header",{"data-layout":"slot[header]",children:a(S.DesktopHeader,{})}),t("main",{"data-layout":"slot[body]",children:[a("div",{"data-layout":"slot[body.top] interactive",children:a(S.DesktopCallToAction,{})}),a("div",{ref:U,"data-layout":"slot[body.safeSceneArea]"}),t("div",{"data-layout":"slot[body.bottom] interactive",children:[a("div",{"data-layout":"slot[body.toolbar]",children:a(S.DesktopToolbar,{})}),a("div",{"data-layout":"slot[body.toolControls]",children:!N&&a(S.DesktopToolControls,{})}),a("div",{"data-layout":"slot[body.viewControls]",children:a(S.DesktopViewControls,{})}),a("div",{"data-layout":"slot[body.logo]",children:a(S.DesktopPoweredBy,{})}),a("div",{"data-layout":"slot[body.sideEffects]",children:a(S.DesktopSnackbarsRoot,{})})]})]}),a("aside",{"data-layout":"slot[sidebar]",children:t(T.Root,{ownerState:ae,"data-sidebar":h({variant:{[`${B}`]:W,[`${$}`]:q},state:{[`${C}`]:J,[`${D}`]:!J}}),inert:J?void 0:"",children:[a(T.Tabs,{ownerState:ae,"data-sidebar":"slot[tabs]",children:a(S.DesktopSidebarTabs,{})}),a(T.Header,{ref:e,ownerState:ae,"data-sidebar":"slot[header]",children:a(S.DesktopSidebarBackButton,{})}),a(T.Body,{ownerState:ae,"data-sidebar":"slot[body]",children:a(T.Content,{ref:r,ownerState:ae,"data-sidebar":"slot[content]",children:a(S.DesktopSidebarContent,{})})}),a(T.Footer,{ownerState:ae,"data-sidebar":"slot[footer]",children:a(S.DesktopSidebarFooter,{})})]})}),t("footer",{"data-layout":"slot[footer] interactive",children:[M.viewMode&&!N&&a(S.DesktopReadonlyBanner,{}),a(S.DesktopFooter,{})]})]},"interface-layout")]})})};
49
+ )`}=s({props:{},name:C}),{hasMiniSidebar:N,hasSplitSidebar:V}=R.useSidebarContent(),X=w(),{accessInfo:G}=c(),J=m(),{isPreview:K,isHidden:O}=v(),Q=!O&&!K,U=!J,{setCanvasPadding:Y,setAnimating:Z}=k(),{containerRef:_,safeAreaRef:aa,update:at}=B(Y,N&&!X,Q),ao=b(()=>{Z(!0)},[Z]),ae=b(()=>{Z(!1),at()},[Z,at]),ar=Q&&U,ad=x(e,{disabled:!ar}),ai=x(r,{disabled:!ar});f(r,{disabled:!ar});let an={background:g,border:S,borderRadius:L,filter:W,isHeaderEmpty:ad,isContentEmpty:ai,padding:q,scrollableIndicatorBackground:M,width:y};return a(o,{children:t(l,{mode:"wait",children:[!O&&K&&a($,{},"preview-layout"),Q&&t(z,{layoutId:"ui-layout",layout:!0,ownerState:{sidebarWidth:y},"data-layout":h({state:{initial:!J,fullscreen:J}}),onLayoutAnimationStart:ao,onLayoutAnimationComplete:ae,children:[a(H,{ref:_}),a("header",{"data-layout":"slot[header]",children:a(R.DesktopHeader,{})}),t("main",{"data-layout":"slot[body]",children:[a("div",{"data-layout":"slot[body.top] interactive",children:a(R.DesktopCallToAction,{})}),a("div",{ref:aa,"data-layout":"slot[body.safeSceneArea]"}),t("div",{"data-layout":"slot[body.bottom] interactive",children:[a("div",{"data-layout":"slot[body.toolbar]",children:a(R.DesktopToolbar,{})}),a("div",{"data-layout":"slot[body.toolControls]",children:!J&&a(R.DesktopToolControls,{})}),a("div",{"data-layout":"slot[body.viewControls]",children:a(R.DesktopViewControls,{})}),a("div",{"data-layout":"slot[body.logo]",children:a(R.DesktopPoweredBy,{})}),a("div",{"data-layout":"slot[body.sideEffects]",children:a(R.DesktopSnackbarsRoot,{})})]})]}),a("aside",{"data-layout":"slot[sidebar]",children:t(F.Root,{ownerState:an,"data-sidebar":h({variant:{[`${D}`]:N,[`${T}`]:V},state:{[`${I}`]:U,[`${A}`]:!U,[`${P}`]:X}}),inert:U?void 0:"",children:[a(F.Tabs,{ownerState:an,"data-sidebar":"slot[tabs]",children:a(R.DesktopSidebarTabs,{})}),a(F.Header,{ref:e,ownerState:an,"data-sidebar":"slot[header]",children:a(R.DesktopSidebarBackButton,{})}),a(F.Body,{ownerState:an,"data-sidebar":"slot[body]",children:a(F.Content,{ref:r,ownerState:an,"data-sidebar":"slot[content]",children:a(R.DesktopSidebarContent,{})})}),a(F.Footer,{ownerState:an,"data-sidebar":"slot[footer]",children:a(R.DesktopSidebarFooter,{})}),a(E,{})]})}),t("footer",{"data-layout":"slot[footer] interactive",children:[G.viewMode&&!J&&a(R.DesktopReadonlyBanner,{}),a(R.DesktopFooter,{})]})]},"interface-layout")]})})};
@@ -86,6 +86,8 @@ declare module '@mui/material/styles' {
86
86
  }
87
87
  interface LayoutOwnerState {
88
88
  readonly isContentEmpty?: boolean;
89
+ /** Height of the assistant panel while its input has focus: what the on-screen keyboard leaves free. */
90
+ readonly assistantFocusHeight?: number;
89
91
  }
90
92
  export interface ThemeableMobileLayoutProps extends LayoutOwnerState {
91
93
  /**
@@ -1,11 +1,11 @@
1
- import{jsx as t,jsxs as a,Fragment as e}from"react/jsx-runtime";import{snackbarClasses as o,styled as r,useTheme as i,useThemeProps as n}from"@mui/material";import d from"lodash/noop.js";import{AnimatePresence as s}from"motion/react";import{useRef as l}from"react";import{useAccessService as m,useIsFullscreenActive as p}from"#package/react-sdk";import{attrf as c,commonStyles as u,numToPx as b,useIsEmpty as h,useResponsive as g}from"#package/ui-sdk";import{usePreview as y}from"../../../configurator-context/index.js";import{LayoutSlots as f}from"../slots/index.js";import{MobileHeader as x}from"../slots/slots.js";import{MobilePreview as v}from"./MobilePreview.js";import{useSceneSafeArea as w}from"./use-scene-safe-area.js";let S="visible",k="hidden",C=r("div",{name:"PhxMobileHeader",slot:"root"})(({theme:{spacing:t}})=>({...u.transition.fadeInFrom,alignItems:"center",display:"flex",gap:t(1),justifyContent:"space-between",position:"relative","@container style(--inspect: on)":{background:"hsl(from tomato h s l / 50%)"},'[data-header*="slot"]':{display:"flex",gap:t(2),"& > *":{pointerEvents:"auto"}},'[data-header="slot[center]"]':{display:"grid",inset:0,placeItems:"center",position:"absolute"},[`&[data-header*="${S}"]`]:{opacity:1,transitionDuration:"200ms, 300ms",transitionTimingFunction:"linear, ease-out",translate:"0 0"},[`&[data-header*="${k}"]`]:{opacity:0,transitionDuration:"100ms, 100ms",transitionTimingFunction:"linear, ease-in",translate:"0 -60%"}})),$="visible",M="hidden",F=r("div",{name:"PhxMobileControls",slot:"root"})(({theme:{spacing:t}})=>({alignItems:"end",display:"flex",position:"relative","@container style(--inspect: on)":{background:"hsl(from tomato h s l / 50%)"},'[data-controls*="slot"]':{"& > *":{pointerEvents:"auto"}},'[data-controls="slot[toolControls]"]':{...u.transition.fadeInFrom,"&:not(:empty)":{marginInlineEnd:t(2)},"& > *":{...u.transition.fadeIn,transitionDelay:"300ms",transitionDuration:"300ms"}},'[data-controls="slot[viewControls]"]':{...u.transition.fadeInFrom,marginInlineStart:"auto"},'[data-controls="slot[toolbar]"]':{"&:not(:empty)":{marginInlineStart:t(2)}},[`&[data-controls*="${$}"]`]:{'[data-controls="slot[toolControls]"], [data-controls="slot[viewControls]"]':{opacity:1,transitionDuration:"200ms, 300ms",transitionTimingFunction:"linear, ease-out",translate:"0 0"}},[`&[data-controls*="${M}"]`]:{'[data-controls="slot[toolControls]"], [data-controls="slot[viewControls]"]':{opacity:0,transitionDuration:"100ms, 100ms",transitionTimingFunction:"linear, ease-in",translate:"0 60%"}}})),T="PhxMobileSidebar",I="visible",B="hidden",R={Root:r("div",{name:T,slot:"root",shouldForwardProp:t=>"ownerState"!==t})(({ownerState:t})=>[`
1
+ import{jsx as t,jsxs as a,Fragment as e}from"react/jsx-runtime";import{snackbarClasses as o,styled as i,useTheme as r,useThemeProps as n}from"@mui/material";import d from"lodash/noop.js";import{AnimatePresence as s}from"motion/react";import{useRef as l}from"react";import{useAccessService as m,useEagerObservableSelector as c,useIsFullscreenActive as p}from"#package/react-sdk";import{attrf as u,commonStyles as b,numToPx as h,useIsEmpty as g,useResponsive as f,useViewportSize as y}from"#package/ui-sdk";import{useConfigurator as x}from"../../../application-runtime/index.js";import{usePreview as v}from"../../../configurator-context/index.js";import{ASSISTANT_PANEL_SLOT as w,AssistantPanel as S,useIsAssistantPanelOpen as $}from"../../assistant/index.js";import{LayoutSlots as k}from"../slots/index.js";import{MobileHeader as C}from"../slots/slots.js";import{MobilePreview as F}from"./MobilePreview.js";import{useSceneSafeArea as M}from"./use-scene-safe-area.js";let T="visible",I="hidden",R=i("div",{name:"PhxMobileHeader",slot:"root"})(({theme:{spacing:t}})=>({...b.transition.fadeInFrom,alignItems:"center",display:"flex",gap:t(1),justifyContent:"space-between",position:"relative","@container style(--inspect: on)":{background:"hsl(from tomato h s l / 50%)"},'[data-header*="slot"]':{display:"flex",gap:t(2),"& > *":{pointerEvents:"auto"}},'[data-header="slot[center]"]':{display:"grid",inset:0,placeItems:"center",position:"absolute"},[`&[data-header*="${T}"]`]:{opacity:1,transitionDuration:"200ms, 300ms",transitionTimingFunction:"linear, ease-out",translate:"0 0"},[`&[data-header*="${I}"]`]:{opacity:0,transitionDuration:"100ms, 100ms",transitionTimingFunction:"linear, ease-in",translate:"0 -60%"}})),B="visible",E="hidden",P=i("div",{name:"PhxMobileControls",slot:"root"})(({theme:{spacing:t}})=>({alignItems:"end",display:"flex",position:"relative","@container style(--inspect: on)":{background:"hsl(from tomato h s l / 50%)"},'[data-controls*="slot"]':{"& > *":{pointerEvents:"auto"}},'[data-controls="slot[toolControls]"]':{...b.transition.fadeInFrom,"&:not(:empty)":{marginInlineEnd:t(2)},"& > *":{...b.transition.fadeIn,transitionDelay:"300ms",transitionDuration:"300ms"}},'[data-controls="slot[viewControls]"]':{...b.transition.fadeInFrom,marginInlineStart:"auto"},'[data-controls="slot[toolbar]"]':{"&:not(:empty)":{marginInlineStart:t(2)}},[`&[data-controls*="${B}"]`]:{'[data-controls="slot[toolControls]"], [data-controls="slot[viewControls]"]':{opacity:1,transitionDuration:"200ms, 300ms",transitionTimingFunction:"linear, ease-out",translate:"0 0"}},[`&[data-controls*="${E}"]`]:{'[data-controls="slot[toolControls]"], [data-controls="slot[viewControls]"]':{opacity:0,transitionDuration:"100ms, 100ms",transitionTimingFunction:"linear, ease-in",translate:"0 60%"}}})),D="PhxMobileSidebar",j="visible",A="hidden",z="assistant",H={Root:i("div",{name:D,slot:"root",shouldForwardProp:t=>"ownerState"!==t})(({ownerState:t})=>[`
2
2
  --phx-sidebar-background: ${t.background};
3
3
  --phx-sidebar-padding: ${t.padding};
4
4
  --phx-sidebar-radius: ${t.borderRadius}px;
5
- `,{...u.transition.fadeInFrom,background:"var(--phx-sidebar-background)",borderStartStartRadius:"var(--phx-sidebar-radius)",borderStartEndRadius:"var(--phx-sidebar-radius)",display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gridTemplateRows:"min-content minmax(0, 1fr) min-content","& > *":{pointerEvents:"auto"},"@container style(--inspect: on)":{background:"hsl(from gold h s l / 50%)"},'&:has([data-sidebar*="slot[content]"])':{...t.isContentEmpty&&{"--phx-sidebar-radius":0,'[data-sidebar*="slot[header]"]':{paddingBlock:0,"& > *":{display:"none"}}}},[`&[data-sidebar*="${I}"]`]:{opacity:1,transitionDuration:"200ms, 300ms",transitionTimingFunction:"linear, ease-out",translate:"0 0"},[`&[data-sidebar*="${B}"]`]:{opacity:0,transitionDuration:"100ms, 100ms",transitionTimingFunction:"linear, ease-in",translate:"0 60%"}}]),Header:r("header",{name:T,slot:"header",shouldForwardProp:t=>"ownerState"!==t})(({theme:{spacing:t}})=>({alignItems:"center",borderStartStartRadius:"inherit",borderStartEndRadius:"inherit",display:"grid",gap:t(1),gridTemplateColumns:"repeat(2, minmax(0, 1fr))",paddingBlock:"calc(var(--phx-sidebar-padding) * 0.5)",paddingInline:"var(--phx-sidebar-padding)","& > *":{...u.transition.fadeIn,transitionDelay:"100ms",transitionDuration:"300ms"},'[data-sidebar="slot[header.start]"]':{},'[data-sidebar="slot[header.end]"]':{justifySelf:"end"}})),Body:r("div",{name:T,slot:"body",shouldForwardProp:t=>"ownerState"!==t})({display:"grid",gridTemplateRows:"minmax(0, 1fr)"}),Content:r("div",{name:T,slot:"content",shouldForwardProp:t=>"ownerState"!==t})(({theme:{spacing:t}})=>({...u.layout.normalizeScrollableContainer,display:"grid",gap:t(2),gridAutoRows:"min-content",paddingBlock:"calc(var(--phx-sidebar-padding) * 0.5)",paddingInline:"var(--phx-sidebar-padding)","&:empty":{paddingBlock:0}})),Tabs:r("div",{name:T,slot:"tabs",shouldForwardProp:t=>"ownerState"!==t})(({theme:{palette:t}})=>({borderBlockStart:`1px solid ${t.divider}`,paddingBlock:"calc(var(--phx-sidebar-padding) * 0.5)",paddingInline:"calc(var(--phx-sidebar-padding) * 0.75)","&:is(:empty)":{border:0,padding:0}})),Footer:r("footer",{name:T,slot:"footer",shouldForwardProp:t=>"ownerState"!==t})(({theme:{palette:t}})=>({borderBlockStart:`1px solid ${t.divider}`,paddingBlock:"calc(var(--phx-sidebar-padding) * 0.5)",paddingInline:"var(--phx-sidebar-padding)","&:is(:empty)":{borderColor:"transparent",paddingBlock:0}}))};export const PhxMobileLayoutName="PhxMobileLayout";let E="initial",P="fullscreen",D=r("div",{name:"PhxMobileLayout",slot:"root",shouldForwardProp:t=>"ownerState"!==t})(({ownerState:t,theme:{spacing:a}})=>[`
5
+ `,{...b.transition.fadeInFrom,background:"var(--phx-sidebar-background)",borderStartStartRadius:"var(--phx-sidebar-radius)",borderStartEndRadius:"var(--phx-sidebar-radius)",display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gridTemplateRows:"min-content minmax(0, 1fr) min-content",position:"relative","& > *":{pointerEvents:"auto"},"@container style(--inspect: on)":{background:"hsl(from gold h s l / 50%)"},'&:has([data-sidebar*="slot[content]"])':{...t.isContentEmpty&&{"--phx-sidebar-radius":0,'[data-sidebar*="slot[header]"]':{paddingBlock:0,"& > *":{display:"none"}}}},[`&[data-sidebar*="${j}"]`]:{opacity:1,transitionDuration:"200ms, 300ms",transitionTimingFunction:"linear, ease-out",translate:"0 0"},[`&[data-sidebar*="${A}"]`]:{opacity:0,transitionDuration:"100ms, 100ms",transitionTimingFunction:"linear, ease-in",translate:"0 60%"},[`&[data-sidebar*="${z}"] > :not([data-sidebar="${w}"])`]:{visibility:"hidden"}}]),Header:i("header",{name:D,slot:"header",shouldForwardProp:t=>"ownerState"!==t})(({theme:{spacing:t}})=>({alignItems:"center",borderStartStartRadius:"inherit",borderStartEndRadius:"inherit",display:"grid",gap:t(1),gridTemplateColumns:"repeat(2, minmax(0, 1fr))",paddingBlock:"calc(var(--phx-sidebar-padding) * 0.5)",paddingInline:"var(--phx-sidebar-padding)","& > *":{...b.transition.fadeIn,transitionDelay:"100ms",transitionDuration:"300ms"},'[data-sidebar="slot[header.start]"]':{},'[data-sidebar="slot[header.end]"]':{justifySelf:"end"}})),Body:i("div",{name:D,slot:"body",shouldForwardProp:t=>"ownerState"!==t})({display:"grid",gridTemplateRows:"minmax(0, 1fr)"}),Content:i("div",{name:D,slot:"content",shouldForwardProp:t=>"ownerState"!==t})(({theme:{spacing:t}})=>({...b.layout.normalizeScrollableContainer,display:"grid",gap:t(2),gridAutoRows:"min-content",paddingBlock:"calc(var(--phx-sidebar-padding) * 0.5)",paddingInline:"var(--phx-sidebar-padding)","&:empty":{paddingBlock:0}})),Tabs:i("div",{name:D,slot:"tabs",shouldForwardProp:t=>"ownerState"!==t})(({theme:{palette:t}})=>({borderBlockStart:`1px solid ${t.divider}`,paddingBlock:"calc(var(--phx-sidebar-padding) * 0.5)",paddingInline:"calc(var(--phx-sidebar-padding) * 0.75)","&:is(:empty)":{border:0,padding:0}})),Footer:i("footer",{name:D,slot:"footer",shouldForwardProp:t=>"ownerState"!==t})(({theme:{palette:t}})=>({borderBlockStart:`1px solid ${t.divider}`,paddingBlock:"calc(var(--phx-sidebar-padding) * 0.5)",paddingInline:"var(--phx-sidebar-padding)","&:is(:empty)":{borderColor:"transparent",paddingBlock:0}}))};export const PhxMobileLayoutName="PhxMobileLayout";let L="initial",q="fullscreen",N="min(480px, 50cqb)",V=["auto","min-content","max-content","fit-content"],G=i("div",{name:"PhxMobileLayout",slot:"root",shouldForwardProp:t=>"ownerState"!==t})(({ownerState:t,theme:{spacing:a}})=>[`
6
6
  --inspect: off; // 🕹️ inspection mode toggle
7
7
 
8
- --phx-layout-sidebar-track-size: ${b(t.sidebarHeight)};
8
+ --phx-layout-sidebar-track-size: ${h(t.sidebarHeight)};
9
9
  --phx-layout-gutter: ${a(2)};
10
10
  `,{display:"grid",gridTemplateColumns:`
11
11
  [full-start]
@@ -39,4 +39,4 @@ import{jsx as t,jsxs as a,Fragment as e}from"react/jsx-runtime";import{snackbarC
39
39
  [footer-end]
40
40
  var(--phx-layout-gutter)
41
41
  [full-end]
42
- `},'[data-layout*="slot[body.header]"]':{gridArea:"header-start / main-start / header-end / main-end"},'[data-layout*="slot[body.footer]"]':{gridArea:"footer-start / main-start / footer-end / main-end",position:"relative"},'[data-layout*="slot[body.safeSceneArea]"]':{gridArea:"full","@container style(--inspect: on)":{background:"hsl(from lime h s l / 50%)"}},'[data-layout="slot[body.sideEffects]"]':{insetBlockEnd:`calc(100% + ${a(2)})`,position:"absolute"},'[data-layout*="slot[sidebar]"]':{display:"grid",gridArea:"sidebar-start / full-start / sidebar-end / full-end",gridTemplateColumns:"minmax(0, 1fr)",gridTemplateRows:"minmax(0, auto)"},'[data-layout*="slot[footer]"]':{gridArea:"footer-start / full-start / footer-end / full-end",zIndex:1},'&:has([data-sidebar*="slot[content]"])':{...t.isContentEmpty&&{"--phx-layout-sidebar-track-size":"min-content"}},[`&[data-layout*="${E}"]`]:{transitionDelay:"200ms",transitionDuration:"300ms"},[`&[data-layout*="${P}"]`]:{transitionDelay:"0ms",transitionDuration:"300ms"},[`&:has([data-sidebar*="${B}"])[class]`]:{"--phx-layout-sidebar-track-size":0}}]),j=r("div")({gridArea:"1 / 1 / -1 / -1"}),A=t=>({inert:t?"":void 0});export const MobileLayout=()=>{let o=l(null),{palette:r,shape:u,spacing:b}=i(),{sidebarHeight:z="min(480px, 50cqb)"}=n({props:{},name:"PhxMobileLayout"}),{background:H=r.background.paper,borderRadius:L=u.sidebarBorderRadius??u.borderRadius,padding:q=b(2)}=n({props:{},name:T}),{accessInfo:N}=m(),V=p(),{isPreview:G,isHidden:J}=y(),K=!J&&!G,O=!V&&K,Q=!V&&K,U=!V,{setCanvasPadding:W}=g(),{containerRef:X,safeAreaRef:Y}=w(K?W:d,!1),Z=h(o,{disabled:!U}),_={background:H,borderRadius:L,padding:q,isContentEmpty:Z};return a(e,{children:[t(s,{initial:!1,children:!J&&G&&t(v,{})}),a(D,{ownerState:{isContentEmpty:Z,sidebarHeight:z},"data-layout":c({state:{[`${E}`]:!V,[`${P}`]:V}}),...A(!K),children:[t(j,{ref:X}),t("div",{"data-layout":"slot[sideEffects]",children:t(f.MobileSnackbarsRoot,{})}),a("main",{"data-layout":"slot[body]",children:[t("header",{"data-layout":"slot[body.header]",children:a(C,{"data-header":c({state:{[`${S}`]:O,[`${k}`]:!O}}),...A(!O),children:[t("div",{"data-header":"slot[start]",children:t(x,{})}),t("div",{"data-header":"slot[center]",children:t(f.MobileCallToAction,{})}),a("div",{"data-header":"slot[end]",children:[N.viewMode&&!V&&t(f.MobileReadonlyBanner,{}),t(f.MobileHamburgerMenu,{})]})]})}),t("div",{ref:Y,"data-layout":"slot[body.safeSceneArea]"}),t("div",{"data-layout":"slot[body.footer] interactive",children:a(F,{"data-controls":c({state:{[`${$}`]:Q,[`${M}`]:!Q}}),children:[t("div",{"data-controls":"slot[toolControls]",...A(!Q),children:t(f.MobileToolControls,{})}),t("div",{"data-controls":"slot[viewControls]",...A(!Q),children:t(f.MobileViewControls,{})}),t("div",{"data-controls":"slot[toolbar]",children:K&&t(f.MobileToolbar,{})})]})})]}),t("aside",{"data-layout":"slot[sidebar]",children:a(R.Root,{ownerState:_,"data-sidebar":c({state:{[`${I}`]:U,[`${B}`]:!U}}),...A(!U),children:[a(R.Header,{ownerState:_,"data-sidebar":"slot[header]",children:[t("div",{"data-sidebar":"slot[header.start]",children:t(f.MobileSidebarBackButton,{})}),t("div",{"data-sidebar":"slot[header.end]",children:t(f.MobilePoweredBy,{})})]}),t(R.Body,{ownerState:_,"data-sidebar":"slot[body]",children:t(R.Content,{ref:o,ownerState:_,"data-sidebar":"slot[content]",children:t(f.MobileSidebarContent,{})})}),t(R.Tabs,{ownerState:_,"data-sidebar":"slot[tabs]",children:t(f.MobileTabs,{})}),t(R.Footer,{ownerState:_,"data-sidebar":"slot[footer]",children:t(f.MobileSidebarFooter,{})})]})}),t("footer",{"data-layout":"slot[footer] interactive",children:t(f.MobileFooter,{})})]})]})};
42
+ `},'[data-layout*="slot[body.header]"]':{gridArea:"header-start / main-start / header-end / main-end"},'[data-layout*="slot[body.footer]"]':{gridArea:"footer-start / main-start / footer-end / main-end",position:"relative"},'[data-layout*="slot[body.safeSceneArea]"]':{gridArea:"full","@container style(--inspect: on)":{background:"hsl(from lime h s l / 50%)"}},'[data-layout="slot[body.sideEffects]"]':{insetBlockEnd:`calc(100% + ${a(2)})`,position:"absolute"},'[data-layout*="slot[sidebar]"]':{display:"grid",gridArea:"sidebar-start / full-start / sidebar-end / full-end",gridTemplateColumns:"minmax(0, 1fr)",gridTemplateRows:"minmax(0, auto)"},'[data-layout*="slot[footer]"]':{gridArea:"footer-start / full-start / footer-end / full-end",zIndex:1},'&:has([data-sidebar*="slot[content]"])':{...t.isContentEmpty&&{"--phx-layout-sidebar-track-size":"min-content"}},[`&[data-layout*="${L}"]`]:{transitionDelay:"200ms",transitionDuration:"300ms"},[`&[data-layout*="${q}"]`]:{transitionDelay:"0ms",transitionDuration:"300ms"},[`&:has([data-sidebar*="${A}"])[class]`]:{"--phx-layout-sidebar-track-size":0}},null!=t.assistantFocusHeight&&{'[data-layout*="slot[sidebar]"]':{alignSelf:"start",blockSize:`min(100%, ${t.assistantFocusHeight}px)`,gridRow:"full-start / full-end",zIndex:2}}]),J=i("div")({gridArea:"1 / 1 / -1 / -1"}),K=t=>({inert:t?"":void 0});export const MobileLayout=()=>{let o=l(null),{palette:i,shape:b,spacing:h}=r(),{sidebarHeight:w=N}=n({props:{},name:"PhxMobileLayout"}),{background:O=i.background.paper,borderRadius:Q=b.sidebarBorderRadius??b.borderRadius,padding:U=h(2)}=n({props:{},name:D}),{accessInfo:W}=m(),X=p(),{isPreview:Y,isHidden:Z}=v(),_=!Z&&!Y,tt=!X&&_,ta=!X&&_,te=!X,{setCanvasPadding:to}=f(),{containerRef:ti,safeAreaRef:tr}=M(_?to:d,!1),tn=g(o,{disabled:!te}),{assistantSystem:td}=x(),ts=$(),tl=c(td.panel$,t=>t.isInputFocused,[]),tm=ts&&te&&tl,tc=y(tm),tp=tn&&!ts,tu={isContentEmpty:tp,sidebarHeight:ts?V.includes(w)?N:w:w,assistantFocusHeight:tm?tc?.[1]:void 0},tb={background:O,borderRadius:Q,padding:U,isContentEmpty:tp};return a(e,{children:[t(s,{initial:!1,children:!Z&&Y&&t(F,{})}),a(G,{ownerState:tu,"data-layout":u({state:{[`${L}`]:!X,[`${q}`]:X}}),...K(!_),children:[t(J,{ref:ti}),t("div",{"data-layout":"slot[sideEffects]",children:t(k.MobileSnackbarsRoot,{})}),a("main",{"data-layout":"slot[body]",children:[t("header",{"data-layout":"slot[body.header]",children:a(R,{"data-header":u({state:{[`${T}`]:tt,[`${I}`]:!tt}}),...K(!tt),children:[t("div",{"data-header":"slot[start]",children:t(C,{})}),t("div",{"data-header":"slot[center]",children:t(k.MobileCallToAction,{})}),a("div",{"data-header":"slot[end]",children:[W.viewMode&&!X&&t(k.MobileReadonlyBanner,{}),t(k.MobileHamburgerMenu,{})]})]})}),t("div",{ref:tr,"data-layout":"slot[body.safeSceneArea]"}),t("div",{"data-layout":"slot[body.footer] interactive",children:a(P,{"data-controls":u({state:{[`${B}`]:ta,[`${E}`]:!ta}}),children:[t("div",{"data-controls":"slot[toolControls]",...K(!ta),children:t(k.MobileToolControls,{})}),t("div",{"data-controls":"slot[viewControls]",...K(!ta),children:t(k.MobileViewControls,{})}),t("div",{"data-controls":"slot[toolbar]",children:_&&t(k.MobileToolbar,{})})]})})]}),t("aside",{"data-layout":"slot[sidebar]",children:a(H.Root,{ownerState:tb,"data-sidebar":u({state:{[`${j}`]:te,[`${A}`]:!te,[`${z}`]:ts}}),...K(!te),children:[a(H.Header,{ownerState:tb,"data-sidebar":"slot[header]",children:[t("div",{"data-sidebar":"slot[header.start]",children:t(k.MobileSidebarBackButton,{})}),t("div",{"data-sidebar":"slot[header.end]",children:t(k.MobilePoweredBy,{})})]}),t(H.Body,{ownerState:tb,"data-sidebar":"slot[body]",children:t(H.Content,{ref:o,ownerState:tb,"data-sidebar":"slot[content]",children:t(k.MobileSidebarContent,{})})}),t(H.Tabs,{ownerState:tb,"data-sidebar":"slot[tabs]",children:t(k.MobileTabs,{})}),t(H.Footer,{ownerState:tb,"data-sidebar":"slot[footer]",children:t(k.MobileSidebarFooter,{})}),t(S,{})]})}),t("footer",{"data-layout":"slot[footer] interactive",children:t(k.MobileFooter,{})})]})]})};
@@ -57,6 +57,6 @@ declare const ResponsiveNavigation: <VALUE extends string, ENTITY_ID extends Dom
57
57
  */
58
58
  export declare const MobileControls: {
59
59
  Navigation: typeof ResponsiveNavigation;
60
- ViewOnlyMode: (inProps: import("../../../../ui-sdk/components/mobile-controls/MobileControls").ViewOnlyModeProps & import("#package/ui-sdk").MobileControlsThemeableProps) => import("react/jsx-runtime").JSX.Element;
60
+ ViewOnlyMode: (inProps: import("#package/ui-sdk").ViewOnlyModeProps & import("#package/ui-sdk").MobileControlsThemeableProps) => import("react/jsx-runtime").JSX.Element;
61
61
  };
62
62
  export {};
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Opens and closes the assistant panel. It renders nothing in a project without an assistant. A
3
+ * layout that lists the button is expected to carry the panel; the button does not check for it.
4
+ */
5
+ export declare const AssistantToolbarButton: import("react").FunctionComponent<{
6
+ readonly showTitle?: boolean;
7
+ readonly icon?: string;
8
+ } & {
9
+ children?: import("react").ReactNode;
10
+ }>;
@@ -0,0 +1 @@
1
+ import{jsx as t}from"react/jsx-runtime";import{Badge as r}from"@mui/material";import{memo as o,useCallback as a}from"react";import{assistantToolbarButtonSchema as i,createPhoenixLayoutElement as e}from"#package/domain";import{useEagerObservableValue as s,useLocalizable as n,useSpecAssistant as m}from"#package/react-sdk";import{DesktopToolbar as l,PhxIcon as p,useResponsive as c}from"#package/ui-sdk";import{useConfigurator as d}from"../../application-runtime/index.js";let u={id:"sdk.assistant.toolbarButton.label",message:"Assistant"};export const AssistantToolbarButton=e({schema:i,component:o(o=>{let{icon:i,showTitle:e=!0}=o,{assistantSystem:k}=d(),f=m(),{open:A,hasUnreadReply:b}=s(k.panel$),g=n(u),{isPhone:x,isTablet:h}=c(),B=a(()=>{k.setOpen(!A)},[k,A]);return f?t(l.Button,{title:g,onClick:B,showTitle:e&&!x&&!h,"aria-pressed":A,sx:{'&[aria-pressed="true"]':{backgroundColor:"action.selected"}},children:t(r,{color:"primary",variant:"dot",overlap:"circular",invisible:!b,children:t(p,{name:i??(A?"CustomAiAssistantBold":"CustomAiAssistant")})})}):null})});
@@ -14,6 +14,7 @@ export { UndoToolbarButton } from './UndoToolbarButton.js';
14
14
  export { RedoToolbarButton } from './RedoToolbarButton.js';
15
15
  export { MeasurementsToolbarButton } from './MeasurementsToolbarButton.js';
16
16
  export { HelpToolbarButton } from './HelpToolbarButton.js';
17
+ export { AssistantToolbarButton } from './AssistantToolbarButton.js';
17
18
  export { HelpMenuAction } from './HelpMenuAction.js';
18
19
  export { LanguageMenuAction } from './LanguageMenuAction.js';
19
20
  export { MeasurementsMenuAction } from './MeasurementsMenuAction.js';
@@ -1 +1 @@
1
- export*from"./sidebar-footer/index.js";export*from"./header/index.js";export{useShareData,useShareSettings}from"./share/use-share.js";export{MenuRoutingProvider,useMenuRouting}from"./menu-actions/MenuRoutingContext.js";export{MenuAction}from"./menu-actions/MenuAction.js";export{RoutingMenuAction}from"./menu-actions/RoutingMenuAction.js";export{EnterFullscreenToolbarButton}from"./EnterFullscreenToolbarButton.js";export{ExitFullscreenToolbarButton}from"./ExitFullscreenToolbarButton.js";export{LanguageToolbarButton}from"./LanguageToolbarButton.js";export{ToolbarButtonGroup}from"./ToolbarButtonGroup.js";export{ShareMenuAction}from"./ShareMenuAction.js";export{ShareToolbarButton}from"./ShareToolbarButton.js";export{UndoToolbarButton}from"./UndoToolbarButton.js";export{RedoToolbarButton}from"./RedoToolbarButton.js";export{MeasurementsToolbarButton}from"./MeasurementsToolbarButton.js";export{HelpToolbarButton}from"./HelpToolbarButton.js";export{HelpMenuAction}from"./HelpMenuAction.js";export{LanguageMenuAction}from"./LanguageMenuAction.js";export{MeasurementsMenuAction}from"./MeasurementsMenuAction.js";export{ResetCameraToolbarButton}from"./ResetCameraToolbarButton.js";export{SimpleSummary}from"./SimpleSummary.js";export{ResetUndoListener}from"./ResetUndoListener.js";export{SetAsRecipeButton}from"./SetAsRecipeButton.js";export{LayoutDialog,createLayoutDialog}from"./LayoutDialog.js";export{LayoutFooter,createLayoutFooter}from"./LayoutFooter.js";export{CanvasLoader,createCanvasLoader}from"./CanvasLoader.js";export{AppLoader,createAppLoader}from"./AppLoader.js";export{ToolbarHelp,createToolbarHelp,useToolbarHelpExists}from"./ToolbarHelp.js";export{LayoutToolbarDesktop,createLayoutToolbarDesktop}from"./LayoutToolbarDesktop.js";export{LayoutToolbarDesktopFullScreen,createLayoutToolbarDesktopFullScreen}from"./LayoutToolbarDesktopFullScreen.js";export{LayoutToolbarReadDesktop,createLayoutToolbarReadDesktop}from"./LayoutToolbarReadDesktop.js";export{LayoutToolbarReadDesktopFullScreen,createLayoutToolbarReadDesktopFullScreen}from"./LayoutToolbarReadDesktopFullScreen.js";export{LayoutCustomOwnerUi,createLayoutCustomOwnerUi}from"./LayoutCustomOwnerUi.js";export{LayoutCustomReadUi,createLayoutCustomReadUi}from"./LayoutCustomReadUi.js";export{LayoutAdminUi,createLayoutAdminUi}from"./LayoutAdminUi.js";export{LayoutUserUi,createLayoutUserUi}from"./LayoutUserUi.js";export{ExitToolModeFab}from"./call-to-action/ExitToolModeFab.js";export*from"./svg-throbber-3d/index.js";
1
+ export*from"./sidebar-footer/index.js";export*from"./header/index.js";export{useShareData,useShareSettings}from"./share/use-share.js";export{MenuRoutingProvider,useMenuRouting}from"./menu-actions/MenuRoutingContext.js";export{MenuAction}from"./menu-actions/MenuAction.js";export{RoutingMenuAction}from"./menu-actions/RoutingMenuAction.js";export{EnterFullscreenToolbarButton}from"./EnterFullscreenToolbarButton.js";export{ExitFullscreenToolbarButton}from"./ExitFullscreenToolbarButton.js";export{LanguageToolbarButton}from"./LanguageToolbarButton.js";export{ToolbarButtonGroup}from"./ToolbarButtonGroup.js";export{ShareMenuAction}from"./ShareMenuAction.js";export{ShareToolbarButton}from"./ShareToolbarButton.js";export{UndoToolbarButton}from"./UndoToolbarButton.js";export{RedoToolbarButton}from"./RedoToolbarButton.js";export{MeasurementsToolbarButton}from"./MeasurementsToolbarButton.js";export{HelpToolbarButton}from"./HelpToolbarButton.js";export{AssistantToolbarButton}from"./AssistantToolbarButton.js";export{HelpMenuAction}from"./HelpMenuAction.js";export{LanguageMenuAction}from"./LanguageMenuAction.js";export{MeasurementsMenuAction}from"./MeasurementsMenuAction.js";export{ResetCameraToolbarButton}from"./ResetCameraToolbarButton.js";export{SimpleSummary}from"./SimpleSummary.js";export{ResetUndoListener}from"./ResetUndoListener.js";export{SetAsRecipeButton}from"./SetAsRecipeButton.js";export{LayoutDialog,createLayoutDialog}from"./LayoutDialog.js";export{LayoutFooter,createLayoutFooter}from"./LayoutFooter.js";export{CanvasLoader,createCanvasLoader}from"./CanvasLoader.js";export{AppLoader,createAppLoader}from"./AppLoader.js";export{ToolbarHelp,createToolbarHelp,useToolbarHelpExists}from"./ToolbarHelp.js";export{LayoutToolbarDesktop,createLayoutToolbarDesktop}from"./LayoutToolbarDesktop.js";export{LayoutToolbarDesktopFullScreen,createLayoutToolbarDesktopFullScreen}from"./LayoutToolbarDesktopFullScreen.js";export{LayoutToolbarReadDesktop,createLayoutToolbarReadDesktop}from"./LayoutToolbarReadDesktop.js";export{LayoutToolbarReadDesktopFullScreen,createLayoutToolbarReadDesktopFullScreen}from"./LayoutToolbarReadDesktopFullScreen.js";export{LayoutCustomOwnerUi,createLayoutCustomOwnerUi}from"./LayoutCustomOwnerUi.js";export{LayoutCustomReadUi,createLayoutCustomReadUi}from"./LayoutCustomReadUi.js";export{LayoutAdminUi,createLayoutAdminUi}from"./LayoutAdminUi.js";export{LayoutUserUi,createLayoutUserUi}from"./LayoutUserUi.js";export{ExitToolModeFab}from"./call-to-action/ExitToolModeFab.js";export*from"./svg-throbber-3d/index.js";
@@ -1,5 +1,5 @@
1
1
  {
2
- "generatedAt": "2026-10-08T09:21:48.882Z",
2
+ "generatedAt": "2026-10-12T15:25:33.524Z",
3
3
  "categories": [
4
4
  {
5
5
  "name": "Phoenix",
@@ -26,7 +26,7 @@
26
26
  },
27
27
  {
28
28
  "title": "Best Practices",
29
- "description": "1. **YAML is king** - 99% of configuration should be in spec/\\*.yaml files 2. **Custom code locations** (in order of preference): - `src/expressions/` - Computed/derived properties -...",
29
+ "description": "1. **YAML is king** - 99% of configuration should be in spec/\\*.yaml files 2. **Custom code locations** (in order of preference): - `src/expressions/` - Computed/derived properties - `src/actions/` -...",
30
30
  "path": "docs/phoenix/best-practices.mdx",
31
31
  "category": [
32
32
  "Phoenix",
@@ -2479,6 +2479,16 @@
2479
2479
  ],
2480
2480
  "source": "storybook-example"
2481
2481
  },
2482
+ {
2483
+ "title": "Domain Actions",
2484
+ "description": "A plate carries holes, and a hole can be nudged by an offset as long as it stays on the plate. The arrow buttons of a selected hole and the AI assistant both make this change, so the rule (\"stay on...",
2485
+ "path": "docs/other-features/domain-actions.mdx",
2486
+ "category": [
2487
+ "Other features",
2488
+ "Domain Actions"
2489
+ ],
2490
+ "source": "storybook-example"
2491
+ },
2482
2492
  {
2483
2493
  "title": "Not Found (404)",
2484
2494
  "description": "Error page that is displayed when the configuration is not accesible.",
@@ -81,6 +81,12 @@ Phoenix provides built-in toolbar buttons for common operations:
81
81
  `props.showIndicatorSwitch: false` to hide the Dimension indicators switch. When omitted, the prop falls back to
82
82
  `applicationConfig.indicatorSwitch`, then `true`.
83
83
  - `helpToolbarButton` - Show help content (supports custom children)
84
+ - `assistantToolbarButton` - Open and close the built-in assistant panel. It renders only in a project whose
85
+ application spec has an `assistant` section. `props.showTitle` defaults to `true`; the label shows on a
86
+ desktop-sized layout only. The default toolbar includes it, in a group of its own, when the spec has an
87
+ `assistant` section. Only the universal layout carries the panel, and the button does not hide itself in a
88
+ layout without it. A custom layout that renders the toolbar therefore defines a `toolbar` component without the
89
+ button, because the default toolbar would add it.
84
90
 
85
91
  ### Mobile Toolbar Configuration
86
92