@salsita-ai/sdk 0.50.0-develop.f81ab6ac76 → 0.50.0-develop.f87b940e67

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 (617) hide show
  1. package/dist/application/index.d.ts +1 -0
  2. package/dist/application/index.js +1 -1
  3. package/dist/application/mount-application.d.ts +1 -1
  4. package/dist/application/mount-application.js +1 -1
  5. package/dist/application/mount-configurator.d.ts +19 -0
  6. package/dist/application/mount-configurator.js +1 -0
  7. package/dist/application/mounted-application-runtime.d.ts +4 -0
  8. package/dist/application/mounted-application-runtime.js +1 -0
  9. package/dist/application/register-web-component.d.ts +2 -0
  10. package/dist/application/register-web-component.js +1 -0
  11. package/dist/application-spec/errors/diagnostic-codes.d.ts +9 -0
  12. package/dist/application-spec/errors/diagnostic-codes.js +1 -1
  13. package/dist/application-spec/errors/diagnostic-messages.d.ts +10 -1
  14. package/dist/application-spec/errors/diagnostic-messages.js +1 -1
  15. package/dist/application-spec/generate-application/code/domain-runtime-files.js +1 -1
  16. package/dist/application-spec/generate-application/code/templates/application-types.js +6 -6
  17. package/dist/application-spec/generate-application/code/templates/common/doc-comment.d.ts +2 -0
  18. package/dist/application-spec/generate-application/code/templates/common/doc-comment.js +1 -0
  19. package/dist/application-spec/generate-application/code/templates/configurator-globals.d.ts +2 -1
  20. package/dist/application-spec/generate-application/code/templates/configurator-globals.js +19 -6
  21. package/dist/application-spec/generate-application/code/templates/global-definition/generate-action-types.js +7 -7
  22. package/dist/application-spec/generate-application/code/templates/global-definition/generate-assistant-form-element-types.d.ts +12 -0
  23. package/dist/application-spec/generate-application/code/templates/global-definition/generate-assistant-form-element-types.js +7 -0
  24. package/dist/application-spec/generate-application/code/templates/global-definition/generate-phx-types.js +24 -22
  25. package/dist/application-spec/generate-application/code/templates/global-definition/index.d.ts +1 -0
  26. package/dist/application-spec/generate-application/code/templates/global-definition/index.js +1 -1
  27. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +13 -6
  28. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +2 -2
  29. package/dist/application-spec/generate-application/implementations/phx-application-types.d.ts +25 -0
  30. package/dist/application-spec/generate-application/implementations/phx-application-types.js +1 -0
  31. package/dist/application-spec/generate-application/implementations/phx-domain.d.ts +36 -0
  32. package/dist/application-spec/generate-application/implementations/phx-domain.js +1 -0
  33. package/dist/application-spec/generate-application/implementations/phx-model.d.ts +24 -0
  34. package/dist/application-spec/generate-application/implementations/phx-model.js +1 -0
  35. package/dist/application-spec/generate-application/implementations/phx.d.ts +22 -0
  36. package/dist/application-spec/generate-application/implementations/phx.js +1 -0
  37. package/dist/application-spec/generate-application/index.d.ts +2 -0
  38. package/dist/application-spec/generate-application/index.js +1 -1
  39. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-model-runtime.d.ts +3 -3
  40. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.d.ts +7 -4
  41. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.js +1 -1
  42. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-spec-runtime.d.ts +16 -0
  43. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-spec-runtime.js +1 -0
  44. package/dist/application-spec/generate-application/runtime/application-runtime.d.ts +17 -4
  45. package/dist/application-spec/generate-application/runtime/application-runtime.js +1 -1
  46. package/dist/application-spec/generate-application/runtime/application-spec-slice.d.ts +71 -0
  47. package/dist/application-spec/generate-application/runtime/application-spec-slice.js +1 -0
  48. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-model-runtime.d.ts +3 -3
  49. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.d.ts +7 -5
  50. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.js +1 -1
  51. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-spec-runtime.d.ts +16 -0
  52. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-spec-runtime.js +1 -0
  53. package/dist/application-spec/generate-application/runtime/create-application.d.ts +57 -0
  54. package/dist/application-spec/generate-application/runtime/create-application.js +1 -0
  55. package/dist/application-spec/generate-application/runtime/index.d.ts +8 -0
  56. package/dist/application-spec/generate-application/runtime/index.js +1 -0
  57. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.d.ts +9 -3
  58. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.js +1 -1
  59. package/dist/application-spec/generate-application/runtime/spec-runtime.d.ts +21 -0
  60. package/dist/application-spec/generate-application/runtime/spec-runtime.js +1 -0
  61. package/dist/application-spec/generate-application/runtime-spec/encoded-runtime-spec.d.ts +3 -2
  62. package/dist/application-spec/generate-application/runtime-spec/runtime-spec.d.ts +44 -9
  63. package/dist/application-spec/generate-application/runtime-spec/runtime-spec.js +1 -1
  64. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.d.ts +33 -3
  65. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.js +1 -1
  66. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-form-elements.d.ts +9 -0
  67. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-form-elements.js +1 -0
  68. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.d.ts +4 -1
  69. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  70. package/dist/configurator/ConfiguratorApp.js +1 -1
  71. package/dist/configurator/app-loader-content/DefaultAppLoaderContent.d.ts +2 -0
  72. package/dist/configurator/app-loader-content/DefaultAppLoaderContent.js +5 -0
  73. package/dist/configurator/app-loader-content/index.d.ts +1 -0
  74. package/dist/configurator/app-loader-content/index.js +1 -0
  75. package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
  76. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +4 -3
  77. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  78. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.d.ts +33 -7
  79. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.js +1 -1
  80. package/dist/configurator/application-runtime/extensions/systems/camera-control-system/camera-control-system.d.ts +1 -1
  81. package/dist/configurator/application-runtime/extensions/systems/canvas-system.d.ts +8 -0
  82. package/dist/configurator/application-runtime/extensions/systems/canvas-system.js +1 -1
  83. package/dist/configurator/application-runtime/extensions/systems/export-system/export-busy-error.d.ts +8 -0
  84. package/dist/configurator/application-runtime/extensions/systems/export-system/export-busy-error.js +1 -0
  85. package/dist/configurator/application-runtime/extensions/systems/export-system/export-system.d.ts +23 -1
  86. package/dist/configurator/application-runtime/extensions/systems/export-system/export-system.js +1 -1
  87. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.d.ts +14 -1
  88. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.js +1 -1
  89. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +45 -4
  90. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  91. package/dist/configurator/application-runtime/extensions/systems/image-rendering-system/image-rendering-system.d.ts +14 -5
  92. package/dist/configurator/application-runtime/extensions/systems/image-rendering-system/image-rendering-system.js +1 -1
  93. package/dist/configurator/application-runtime/extensions/systems/index.d.ts +1 -1
  94. package/dist/configurator/common/configurator-interface.d.ts +111 -5
  95. package/dist/configurator/common/configurator-interface.js +1 -1
  96. package/dist/configurator/configuration-not-found-page/BuiltInConfigurationNotFoundPage.d.ts +5 -0
  97. package/dist/configurator/configuration-not-found-page/BuiltInConfigurationNotFoundPage.js +1 -0
  98. package/dist/configurator/configuration-not-found-page/ConfigurationNotFoundPageElement.d.ts +0 -6
  99. package/dist/configurator/configuration-not-found-page/ConfigurationNotFoundPageElement.js +1 -1
  100. package/dist/configurator/configuration-not-found-page/index.d.ts +2 -1
  101. package/dist/configurator/configuration-not-found-page/index.js +1 -1
  102. package/dist/configurator/configurator-context/ConfiguratorResponsiveProvider.d.ts +12 -0
  103. package/dist/configurator/configurator-context/ConfiguratorResponsiveProvider.js +1 -0
  104. package/dist/configurator/configurator-context/PreviewContextProvider.js +1 -1
  105. package/dist/configurator/configurator-context/ViewportStateSync.d.ts +2 -2
  106. package/dist/configurator/configurator-context/ViewportStateSync.js +1 -1
  107. package/dist/configurator/configurator-context/configurator-hooks/layout-hooks.d.ts +10 -0
  108. package/dist/configurator/configurator-context/configurator-routing/ConfiguratorRoutingProvider.js +1 -1
  109. package/dist/configurator/configurator-error-page/BuiltInConfiguratorErrorPage.d.ts +6 -0
  110. package/dist/configurator/configurator-error-page/BuiltInConfiguratorErrorPage.js +1 -0
  111. package/dist/configurator/configurator-error-page/ConfiguratorErrorPageElement.d.ts +7 -0
  112. package/dist/configurator/configurator-error-page/ConfiguratorErrorPageElement.js +1 -0
  113. package/dist/configurator/configurator-error-page/index.d.ts +2 -0
  114. package/dist/configurator/configurator-error-page/index.js +1 -0
  115. package/dist/configurator/index.d.ts +10 -0
  116. package/dist/configurator/index.js +1 -1
  117. package/dist/configurator/pages/ConfiguratorErrorPage.d.ts +0 -1
  118. package/dist/configurator/pages/ConfiguratorErrorPage.js +1 -1
  119. package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
  120. package/dist/configurator/pages/PresetCreationErrorPage.d.ts +1 -1
  121. package/dist/configurator/pages/PresetCreationErrorPage.js +1 -1
  122. package/dist/configurator/pages/default-configurator-elements.d.ts +4 -2
  123. package/dist/configurator/pages/default-configurator-elements.js +1 -1
  124. package/dist/configurator/pages/default-elements/index.d.ts +1 -0
  125. package/dist/configurator/pages/default-elements/index.js +1 -1
  126. package/dist/configurator/pages/default-elements/scene-controls/BuiltInAddEntityFab.d.ts +3 -0
  127. package/dist/configurator/pages/default-elements/scene-controls/BuiltInAddEntityFab.js +1 -0
  128. package/dist/configurator/pages/default-elements/scene-controls/BuiltInDeleteEntityFab.d.ts +3 -0
  129. package/dist/configurator/pages/default-elements/scene-controls/BuiltInDeleteEntityFab.js +1 -0
  130. package/dist/configurator/pages/default-elements/scene-controls/BuiltInNavigationHotspot.d.ts +3 -0
  131. package/dist/configurator/pages/default-elements/scene-controls/BuiltInNavigationHotspot.js +1 -0
  132. package/dist/configurator/pages/default-elements/scene-controls/BuiltInSelectionHotspot.d.ts +3 -0
  133. package/dist/configurator/pages/default-elements/scene-controls/BuiltInSelectionHotspot.js +1 -0
  134. package/dist/configurator/pages/default-elements/scene-controls/BuiltInToolMenuFab.d.ts +3 -0
  135. package/dist/configurator/pages/default-elements/scene-controls/BuiltInToolMenuFab.js +1 -0
  136. package/dist/configurator/pages/default-elements/scene-controls/index.d.ts +6 -0
  137. package/dist/configurator/pages/default-elements/scene-controls/index.js +1 -0
  138. package/dist/configurator/pages/default-elements/scene-controls/scene-control-elements.d.ts +6 -0
  139. package/dist/configurator/pages/default-elements/scene-controls/scene-control-elements.js +1 -0
  140. package/dist/configurator/pages/error-boundaries/GeneralErrorBoundary.js +1 -1
  141. package/dist/configurator/pages/error-boundaries/LoadingErrorBoundary.js +1 -1
  142. package/dist/configurator/scene/index.d.ts +1 -0
  143. package/dist/configurator/scene/index.js +1 -1
  144. package/dist/configurator/scene/scene-controls/ToolFab.d.ts +4 -0
  145. package/dist/configurator/scene/scene-controls/ToolFab.js +1 -1
  146. package/dist/configurator/scene/scene-controls/use-scene-control-tooltip.d.ts +2 -1
  147. package/dist/configurator/scene/scene-entity/scene-controls/SceneEntityHtmlHotspots.js +1 -1
  148. package/dist/configurator/toolbar-actions/index.d.ts +3 -0
  149. package/dist/configurator/toolbar-actions/index.js +1 -0
  150. package/dist/configurator/toolbar-actions/use-assistant-panel.d.ts +18 -0
  151. package/dist/configurator/toolbar-actions/use-assistant-panel.js +1 -0
  152. package/dist/configurator/toolbar-actions/use-measurements.d.ts +35 -0
  153. package/dist/configurator/toolbar-actions/use-measurements.js +1 -0
  154. package/dist/configurator/toolbar-actions/use-toolbar-actions.d.ts +100 -0
  155. package/dist/configurator/toolbar-actions/use-toolbar-actions.js +1 -0
  156. package/dist/configurator/toolbar-actions/use-toolbar-help.d.ts +7 -0
  157. package/dist/configurator/toolbar-actions/use-toolbar-help.js +1 -0
  158. package/dist/configurator/ui/assistant/AssistantChips.d.ts +3 -2
  159. package/dist/configurator/ui/assistant/AssistantChips.js +1 -1
  160. package/dist/configurator/ui/assistant/AssistantMarkdown.d.ts +1 -1
  161. package/dist/configurator/ui/assistant/AssistantMarkdown.js +1 -1
  162. package/dist/configurator/ui/assistant/alert/AssistantAlert.d.ts +8 -0
  163. package/dist/configurator/ui/assistant/alert/AssistantAlert.js +1 -0
  164. package/dist/configurator/ui/assistant/alert/index.d.ts +2 -0
  165. package/dist/configurator/ui/assistant/alert/index.js +1 -0
  166. package/dist/configurator/ui/assistant/alert/remark-alerts.d.ts +10 -0
  167. package/dist/configurator/ui/assistant/alert/remark-alerts.js +1 -0
  168. package/dist/configurator/ui/assistant/form/AssistantForm.js +1 -1
  169. package/dist/configurator/ui/assistant/form/compose-answer.d.ts +1 -1
  170. package/dist/configurator/ui/assistant/form/compose-answer.js +1 -1
  171. package/dist/configurator/ui/assistant/form/form-model.d.ts +3 -4
  172. package/dist/configurator/ui/assistant/form/form-state.d.ts +1 -1
  173. package/dist/configurator/ui/assistant/form/index.d.ts +2 -0
  174. package/dist/configurator/ui/assistant/form/index.js +1 -1
  175. package/dist/configurator/ui/assistant/form/parse-form-block.d.ts +3 -2
  176. package/dist/configurator/ui/assistant/form/parse-form-block.js +1 -1
  177. package/dist/configurator/ui/assistant/form/read-form-attributes.d.ts +1 -1
  178. package/dist/configurator/ui/assistant/form/read-form-attributes.js +1 -1
  179. package/dist/configurator/ui/assistant/form/registry/built-in-form-elements.d.ts +3 -0
  180. package/dist/configurator/ui/assistant/form/registry/built-in-form-elements.js +1 -0
  181. package/dist/configurator/ui/assistant/form/registry/create-assistant-form-element.d.ts +31 -0
  182. package/dist/configurator/ui/assistant/form/registry/create-assistant-form-element.js +1 -0
  183. package/dist/configurator/ui/assistant/form/{form-element-definition.d.ts → registry/form-element-definition.d.ts} +3 -1
  184. package/dist/configurator/ui/assistant/form/registry/form-element-definition.js +1 -0
  185. package/dist/configurator/ui/assistant/form/{form-registry.d.ts → registry/form-registry.d.ts} +2 -2
  186. package/dist/configurator/ui/assistant/form/registry/form-registry.js +1 -0
  187. package/dist/configurator/ui/assistant/form/registry/index.d.ts +6 -0
  188. package/dist/configurator/ui/assistant/form/registry/index.js +1 -0
  189. package/dist/configurator/ui/assistant/form/registry/use-form-registry.d.ts +8 -0
  190. package/dist/configurator/ui/assistant/form/registry/use-form-registry.js +1 -0
  191. package/dist/configurator/ui/assistant/form-elements/FormCard.d.ts +9 -0
  192. package/dist/configurator/ui/assistant/form-elements/FormCard.js +1 -0
  193. package/dist/configurator/ui/assistant/form-elements/FormConfirm.d.ts +9 -0
  194. package/dist/configurator/ui/assistant/form-elements/FormConfirm.js +1 -0
  195. package/dist/configurator/ui/assistant/form-elements/FormGroup.d.ts +4 -1
  196. package/dist/configurator/ui/assistant/form-elements/FormNumber.d.ts +9 -0
  197. package/dist/configurator/ui/assistant/form-elements/FormNumber.js +1 -0
  198. package/dist/configurator/ui/assistant/form-elements/FormOptions.d.ts +4 -1
  199. package/dist/configurator/ui/assistant/form-elements/FormReply.d.ts +4 -1
  200. package/dist/configurator/ui/assistant/form-elements/FormReply.js +1 -1
  201. package/dist/configurator/ui/assistant/form-elements/FormSwatch.d.ts +10 -0
  202. package/dist/configurator/ui/assistant/form-elements/FormSwatch.js +1 -0
  203. package/dist/configurator/ui/assistant/form-elements/FormText.d.ts +4 -1
  204. package/dist/configurator/ui/assistant/form-elements/FormText.js +1 -1
  205. package/dist/configurator/ui/assistant/form-elements/clamp-form-number.d.ts +10 -0
  206. package/dist/configurator/ui/assistant/form-elements/clamp-form-number.js +1 -0
  207. package/dist/configurator/ui/assistant/form-elements/form-element-props.d.ts +20 -16
  208. package/dist/configurator/ui/assistant/form-elements/index.d.ts +4 -0
  209. package/dist/configurator/ui/assistant/form-elements/index.js +1 -1
  210. package/dist/configurator/ui/assistant/index.d.ts +3 -0
  211. package/dist/configurator/ui/assistant/index.js +1 -1
  212. package/dist/configurator/ui/assistant/resource-image/index.d.ts +1 -1
  213. package/dist/configurator/ui/assistant/resource-image/index.js +1 -1
  214. package/dist/configurator/ui/assistant/resource-image/resource-path.d.ts +0 -9
  215. package/dist/configurator/ui/assistant/resource-image/resource-path.js +1 -1
  216. package/dist/configurator/ui/assistant/screenshots/ScreenshotThumbnails.d.ts +9 -0
  217. package/dist/configurator/ui/assistant/screenshots/ScreenshotThumbnails.js +1 -0
  218. package/dist/configurator/ui/assistant/screenshots/index.d.ts +2 -0
  219. package/dist/configurator/ui/assistant/screenshots/index.js +1 -0
  220. package/dist/configurator/ui/assistant/screenshots/tool-screenshots.d.ts +14 -0
  221. package/dist/configurator/ui/assistant/screenshots/tool-screenshots.js +1 -0
  222. package/dist/configurator/ui/assistant/streamed-markdown.d.ts +2 -2
  223. package/dist/configurator/ui/assistant/streamed-markdown.js +2 -2
  224. package/dist/configurator/ui/assistant/tool-chip.js +1 -1
  225. package/dist/configurator/ui/configurator-layout/slots/canvas/LayoutCanvas.js +1 -1
  226. package/dist/configurator/ui/configurator-layout/slots/canvas/SharedCanvas.js +1 -1
  227. package/dist/configurator/ui/configurator-layout/universal/ExportingOverlay.d.ts +5 -0
  228. package/dist/configurator/ui/configurator-layout/universal/ExportingOverlay.js +1 -0
  229. package/dist/configurator/ui/configurator-layout/universal/Layout.js +1 -1
  230. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.d.ts +1 -1
  231. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.js +1 -1
  232. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.d.ts +1 -1
  233. package/dist/configurator/ui/index.d.ts +1 -0
  234. package/dist/configurator/ui/index.js +1 -1
  235. package/dist/configurator/ui/legacy/layout/common/ReactiveInterfaceLayout.js +1 -1
  236. package/dist/configurator/ui/phoenix-layout-elements/AppLoader.d.ts +0 -7
  237. package/dist/configurator/ui/phoenix-layout-elements/AppLoader.js +2 -6
  238. package/dist/configurator/ui/phoenix-layout-elements/AssistantToolbarButton.js +1 -1
  239. package/dist/configurator/ui/phoenix-layout-elements/LanguageMenuAction.js +1 -1
  240. package/dist/configurator/ui/phoenix-layout-elements/LanguageToolbarButton.js +1 -1
  241. package/dist/configurator/ui/phoenix-layout-elements/MeasurementsMenuAction.js +1 -1
  242. package/dist/configurator/ui/phoenix-layout-elements/MeasurementsToolbarButton.js +1 -1
  243. package/dist/configurator/ui/phoenix-layout-elements/ShareToolbarButton.js +1 -1
  244. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/DesktopNavigationSteps.d.ts +1 -1
  245. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/DesktopNavigationSteps.js +1 -1
  246. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.d.ts +2 -8
  247. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.js +1 -1
  248. package/dist/configurator/ui/phoenix-layout-elements/index.d.ts +8 -1
  249. package/dist/configurator/ui/phoenix-layout-elements/index.js +1 -1
  250. package/dist/configurator/ui/phoenix-layout-elements/measurements/DimensionUnitSelector.js +1 -1
  251. package/dist/configurator/ui/phoenix-layout-elements/measurements/MeasurementsIndicatorsSwitch.js +1 -1
  252. package/dist/configurator/ui/phoenix-layout-elements/share/ShareModal.js +1 -1
  253. package/dist/configurator/ui/phoenix-layout-elements/share/use-share.d.ts +7 -8
  254. package/dist/configurator/ui/phoenix-layout-elements/share/use-share.js +1 -1
  255. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/FinalizeActions.js +1 -1
  256. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/NextStepButton.js +1 -1
  257. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/PreviousStepButton.js +1 -1
  258. package/dist/configurator/ui/preset-layout/PresetUi.d.ts +0 -2
  259. package/dist/configurator/ui/preset-layout/PresetUi.js +1 -1
  260. package/dist/configurator/ui/preset-layout/index.d.ts +6 -1
  261. package/dist/configurator/ui/preset-layout/index.js +1 -1
  262. package/dist/configurator/ui/save-message-snackbars/SaveMessageSnackbars.js +1 -1
  263. package/dist/docs/complex-use-cases/focus-mode.mdx +2 -0
  264. package/dist/docs/fabs/basic.mdx +4 -0
  265. package/dist/docs/index.json +95 -1
  266. package/dist/docs/integrations/webcomponent-api/basics.mdx +2 -0
  267. package/dist/docs/layouts/custom-layout.mdx +321 -159
  268. package/dist/docs/layouts/gallery/ardent-compressor.mdx +3516 -0
  269. package/dist/docs/layouts/gallery/corvid-drone.mdx +3428 -0
  270. package/dist/docs/layouts/gallery/fenwick-window.mdx +2803 -0
  271. package/dist/docs/layouts/gallery/ferrule-bar-station.mdx +6567 -0
  272. package/dist/docs/layouts/gallery/kestrel-kettle.mdx +1858 -0
  273. package/dist/docs/layouts/gallery/nightjar-guitar.mdx +3698 -0
  274. package/dist/docs/layouts/gallery/sunfold-solar.mdx +2683 -0
  275. package/dist/docs/layouts/gallery/tidepool-aquascape.mdx +5203 -0
  276. package/dist/docs/other-features/client-side-rendering/declarative.mdx +1 -1
  277. package/dist/docs/other-features/error-5xx.mdx +1 -1
  278. package/dist/docs/other-features/navigation-hotspot.mdx +2 -0
  279. package/dist/docs/other-features/not-found-404.mdx +1 -1
  280. package/dist/docs/phoenix/configurator-interface.mdx +202 -67
  281. package/dist/docs/phoenix/finalization.mdx +1 -1
  282. package/dist/docs/phoenix/layout-slots.mdx +5 -5
  283. package/dist/docs/phoenix/sdk-builder-workflow.mdx +1 -1
  284. package/dist/docs/phoenix/sessions-and-access.mdx +2 -0
  285. package/dist/docs/phoenix/testing.mdx +2 -2
  286. package/dist/docs/selection-and-highlight/hotspots.mdx +2 -0
  287. package/dist/domain/application/assistant/assistant-manifest.d.ts +16 -1
  288. package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +8 -1
  289. package/dist/domain/application/assistant/build-assistant-manifest.js +1 -1
  290. package/dist/domain/application/assistant/form/assistant-form-element-name.d.ts +11 -0
  291. package/dist/domain/application/assistant/form/assistant-form-element-name.js +8 -0
  292. package/dist/domain/application/assistant/form/assistant-form-elements.d.ts +174 -0
  293. package/dist/domain/application/assistant/form/assistant-form-elements.js +1 -0
  294. package/dist/domain/application/assistant/form/assistant-resource-path.d.ts +10 -0
  295. package/dist/domain/application/assistant/form/assistant-resource-path.js +1 -0
  296. package/dist/domain/application/assistant/form/index.d.ts +4 -0
  297. package/dist/domain/application/assistant/form/index.js +1 -0
  298. package/dist/domain/application/assistant/generate-assistant-prompt.d.ts +3 -0
  299. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -1
  300. package/dist/domain/application/assistant/index.d.ts +2 -3
  301. package/dist/domain/application/assistant/index.js +1 -1
  302. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.js +1 -1
  303. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.d.ts +2 -0
  304. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.js +1 -1
  305. package/dist/domain/application/configurator-builder.d.ts +7 -1
  306. package/dist/domain/application/configurator-builder.js +1 -1
  307. package/dist/domain/application/index.d.ts +1 -1
  308. package/dist/domain/application/index.js +1 -1
  309. package/dist/domain/application/standard-properties.js +1 -1
  310. package/dist/domain/application/web-component-property.d.ts +3 -1
  311. package/dist/domain/application/web-component-property.js +1 -1
  312. package/dist/domain/available-system-components.d.ts +1 -1
  313. package/dist/domain/available-system-components.js +1 -1
  314. package/dist/domain/domain-builder.d.ts +9 -3
  315. package/dist/domain/domain-builder.js +1 -1
  316. package/dist/domain/domain-context/store-system/store-system.d.ts +5 -0
  317. package/dist/domain/domain-context/store-system/store-system.js +1 -1
  318. package/dist/domain/domain-runtime/application.d.ts +39 -0
  319. package/dist/domain/domain-runtime/application.js +1 -0
  320. package/dist/domain/domain-runtime/domain-context/selectors.d.ts +1 -0
  321. package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
  322. package/dist/domain/domain-runtime/domain-runtime.d.ts +44 -4
  323. package/dist/domain/domain-runtime/domain-runtime.js +1 -1
  324. package/dist/domain/domain-runtime/environment/initialize.d.ts +1 -1
  325. package/dist/domain/domain-runtime/environment/types.d.ts +1 -1
  326. package/dist/domain/domain-runtime/errors/implementation-error-collector.d.ts +2 -0
  327. package/dist/domain/domain-runtime/errors/implementation-error-collector.js +1 -1
  328. package/dist/domain/domain-runtime/index.d.ts +2 -1
  329. package/dist/domain/domain-runtime/index.js +1 -1
  330. package/dist/domain/domain-runtime/spec/index.d.ts +1 -1
  331. package/dist/domain/domain-runtime/spec/index.js +1 -1
  332. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  333. package/dist/domain/domain-runtime/spec/module-checks/element-registration.d.ts +15 -1
  334. package/dist/domain/domain-runtime/spec/module-checks/element-registration.js +1 -1
  335. package/dist/domain/domain-runtime/spec/module-checks/find-assistant-form-element-errors.d.ts +12 -0
  336. package/dist/domain/domain-runtime/spec/module-checks/find-assistant-form-element-errors.js +1 -0
  337. package/dist/domain/domain-runtime/spec/module-checks/index.d.ts +3 -1
  338. package/dist/domain/domain-runtime/spec/module-checks/index.js +1 -1
  339. package/dist/domain/domain-runtime/spec/module-checks/merge-expression-modules.d.ts +23 -0
  340. package/dist/domain/domain-runtime/spec/module-checks/merge-expression-modules.js +1 -0
  341. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.d.ts +3 -4
  342. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.js +1 -1
  343. package/dist/domain/domain-runtime/spec/selectors.d.ts +3 -1
  344. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  345. package/dist/domain/domain-runtime/web-component/actions.d.ts +3 -0
  346. package/dist/domain/domain-runtime/web-component/actions.js +1 -1
  347. package/dist/domain/domain-runtime/web-component/initialize.d.ts +1 -0
  348. package/dist/domain/domain-runtime/web-component/initialize.js +1 -1
  349. package/dist/domain/domain-runtime/web-component/selectors.d.ts +2 -0
  350. package/dist/domain/domain-runtime/web-component/selectors.js +1 -1
  351. package/dist/domain/domain-runtime/web-component/types.d.ts +6 -3
  352. package/dist/domain/extensions/export-images/agent-screenshot.d.ts +24 -0
  353. package/dist/domain/extensions/export-images/agent-screenshot.js +1 -0
  354. package/dist/domain/extensions/{client-side-image.d.ts → export-images/client-side-image.d.ts} +2 -2
  355. package/dist/domain/extensions/export-images/client-side-image.js +1 -0
  356. package/dist/domain/extensions/export-images/index.d.ts +3 -0
  357. package/dist/domain/extensions/export-images/index.js +1 -0
  358. package/dist/domain/extensions/{save-template-thumbnail.d.ts → export-images/save-template-thumbnail.d.ts} +2 -2
  359. package/dist/domain/extensions/export-images/save-template-thumbnail.js +1 -0
  360. package/dist/domain/extensions/index.d.ts +1 -2
  361. package/dist/domain/extensions/index.js +1 -1
  362. package/dist/domain/mocks/create-mock-domain-runtime.d.ts +9 -0
  363. package/dist/editor/domain-editors/DomainSpecContext.js +1 -1
  364. package/dist/editor/domain-editors/apply-spec-update.d.ts +10 -2
  365. package/dist/editor/domain-editors/apply-spec-update.js +1 -1
  366. package/dist/editor/domain-editors/use-implementation-files.d.ts +6 -14
  367. package/dist/editor/domain-editors/use-implementation-files.js +1 -1
  368. package/dist/editor/screenshot/ScreenshotHandler.js +1 -1
  369. package/dist/i18n/locales/cs/messages.js +1 -1
  370. package/dist/i18n/locales/da/messages.js +1 -1
  371. package/dist/i18n/locales/de/messages.js +1 -1
  372. package/dist/i18n/locales/de-AT/messages.js +1 -1
  373. package/dist/i18n/locales/en/messages.js +1 -1
  374. package/dist/i18n/locales/en-AU/messages.js +1 -1
  375. package/dist/i18n/locales/en-GB/messages.js +1 -1
  376. package/dist/i18n/locales/es/messages.js +1 -1
  377. package/dist/i18n/locales/fr/messages.js +1 -1
  378. package/dist/i18n/locales/hu/messages.js +1 -1
  379. package/dist/i18n/locales/it/messages.js +1 -1
  380. package/dist/i18n/locales/nl/messages.js +1 -1
  381. package/dist/i18n/locales/pl/messages.js +1 -1
  382. package/dist/i18n/locales/pt/messages.js +1 -1
  383. package/dist/i18n/locales/ro/messages.js +1 -1
  384. package/dist/i18n/locales/sk/messages.js +1 -1
  385. package/dist/i18n/locales/tr/messages.js +1 -1
  386. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  387. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  388. package/dist/legacy/domain-spec/__generated/domain-schema.d.ts +16 -0
  389. package/dist/legacy/domain-spec/spec/domain-spec.js +1 -1
  390. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/claude-md.d.ts +1 -1
  391. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/cursor-rules.d.ts +1 -1
  392. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.d.ts +1 -1
  393. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.js +11 -5
  394. package/dist/react-sdk/application-runtime/common-services/analytics/analytics-service.d.ts +1 -1
  395. package/dist/react-sdk/application-runtime/common-services/analytics/frontend-analytics.d.ts +4 -0
  396. package/dist/react-sdk/application-runtime/common-services/initialize.d.ts +2 -2
  397. package/dist/react-sdk/application-runtime/hooks/index.d.ts +2 -0
  398. package/dist/react-sdk/application-runtime/hooks/index.js +1 -1
  399. package/dist/react-sdk/application-runtime/hooks/loading/index.d.ts +5 -0
  400. package/dist/react-sdk/application-runtime/hooks/loading/index.js +1 -0
  401. package/dist/react-sdk/application-runtime/hooks/loading/loader-host-context.d.ts +11 -0
  402. package/dist/react-sdk/application-runtime/hooks/loading/loader-host-context.js +1 -0
  403. package/dist/react-sdk/application-runtime/hooks/loading/use-is-awaiting-loading-phase.d.ts +8 -0
  404. package/dist/react-sdk/application-runtime/hooks/loading/use-is-awaiting-loading-phase.js +1 -0
  405. package/dist/react-sdk/application-runtime/hooks/loading/use-is-loader-hosted.d.ts +7 -0
  406. package/dist/react-sdk/application-runtime/hooks/loading/use-is-loader-hosted.js +1 -0
  407. package/dist/react-sdk/application-runtime/hooks/loading/use-loading-actions.d.ts +9 -0
  408. package/dist/react-sdk/application-runtime/hooks/loading/use-loading-actions.js +1 -0
  409. package/dist/react-sdk/application-runtime/hooks/loading/use-loading-application.d.ts +24 -0
  410. package/dist/react-sdk/application-runtime/hooks/loading/use-loading-application.js +1 -0
  411. package/dist/react-sdk/application-runtime/hooks/responsive/index.d.ts +3 -0
  412. package/dist/react-sdk/application-runtime/hooks/responsive/index.js +1 -0
  413. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-actions.d.ts +9 -0
  414. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-actions.js +1 -0
  415. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-application.d.ts +26 -0
  416. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-application.js +1 -0
  417. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-state.d.ts +10 -0
  418. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-state.js +1 -0
  419. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-store.d.ts +24 -0
  420. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-store.js +1 -0
  421. package/dist/react-sdk/application-runtime/hooks/use-access-service.d.ts +5 -0
  422. package/dist/react-sdk/application-runtime/hooks/use-access-service.js +1 -1
  423. package/dist/react-sdk/application-runtime/hooks/use-phoenix-element-slots.d.ts +2 -1
  424. package/dist/react-sdk/application-runtime/hooks/use-web-component-readonly-sync.d.ts +4 -11
  425. package/dist/react-sdk/application-runtime/hooks/use-web-component-readonly-sync.js +1 -1
  426. package/dist/react-sdk/application-runtime/hooks/use-web-component.d.ts +5 -0
  427. package/dist/react-sdk/application-runtime/hooks/use-web-component.js +1 -1
  428. package/dist/react-sdk/application-runtime/host-properties/actions.d.ts +15 -0
  429. package/dist/react-sdk/application-runtime/host-properties/actions.js +1 -0
  430. package/dist/react-sdk/application-runtime/host-properties/connect-host-properties.d.ts +30 -0
  431. package/dist/react-sdk/application-runtime/host-properties/connect-host-properties.js +1 -0
  432. package/dist/react-sdk/application-runtime/host-properties/domain-host-properties.d.ts +7 -0
  433. package/dist/react-sdk/application-runtime/host-properties/domain-host-properties.js +1 -0
  434. package/dist/react-sdk/application-runtime/host-properties/host-property-descriptors.d.ts +21 -0
  435. package/dist/react-sdk/application-runtime/host-properties/host-property-descriptors.js +1 -0
  436. package/dist/react-sdk/application-runtime/host-properties/host-property-scopes.d.ts +42 -0
  437. package/dist/react-sdk/application-runtime/host-properties/host-property-scopes.js +1 -0
  438. package/dist/react-sdk/application-runtime/host-properties/index.d.ts +8 -0
  439. package/dist/react-sdk/application-runtime/host-properties/index.js +1 -0
  440. package/dist/react-sdk/application-runtime/host-properties/initialize.d.ts +7 -0
  441. package/dist/react-sdk/application-runtime/host-properties/initialize.js +1 -0
  442. package/dist/react-sdk/application-runtime/host-properties/selectors.d.ts +54 -0
  443. package/dist/react-sdk/application-runtime/host-properties/selectors.js +1 -0
  444. package/dist/react-sdk/application-runtime/host-properties/types.d.ts +18 -0
  445. package/dist/react-sdk/application-runtime/index.d.ts +3 -0
  446. package/dist/react-sdk/application-runtime/integration/initialize.d.ts +7 -6
  447. package/dist/react-sdk/application-runtime/integration/initialize.js +1 -1
  448. package/dist/react-sdk/application-runtime/integration/selectors.d.ts +11 -2
  449. package/dist/react-sdk/application-runtime/integration/selectors.js +1 -1
  450. package/dist/react-sdk/application-runtime/integration/types.d.ts +5 -2
  451. package/dist/react-sdk/application-runtime/loading/actions.d.ts +45 -0
  452. package/dist/react-sdk/application-runtime/loading/actions.js +1 -0
  453. package/dist/react-sdk/application-runtime/loading/index.d.ts +4 -0
  454. package/dist/react-sdk/application-runtime/loading/index.js +1 -0
  455. package/dist/react-sdk/application-runtime/loading/initialize.d.ts +3 -0
  456. package/dist/react-sdk/application-runtime/loading/initialize.js +1 -0
  457. package/dist/react-sdk/application-runtime/loading/selectors.d.ts +18 -0
  458. package/dist/react-sdk/application-runtime/loading/selectors.js +1 -0
  459. package/dist/react-sdk/application-runtime/loading/types.d.ts +59 -0
  460. package/dist/react-sdk/application-runtime/loading/types.js +1 -0
  461. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
  462. package/dist/react-sdk/application-runtime/provider/ApplicationRuntime.d.ts +6 -0
  463. package/dist/react-sdk/application-runtime/provider/ApplicationRuntime.js +1 -1
  464. package/dist/react-sdk/application-runtime/provider/ApplicationType.d.ts +7 -0
  465. package/dist/react-sdk/application-runtime/provider/ApplicationType.js +1 -1
  466. package/dist/react-sdk/application-runtime/responsive/actions.d.ts +47 -0
  467. package/dist/react-sdk/application-runtime/responsive/actions.js +1 -0
  468. package/dist/react-sdk/application-runtime/responsive/index.d.ts +4 -0
  469. package/dist/react-sdk/application-runtime/responsive/index.js +1 -0
  470. package/dist/react-sdk/application-runtime/responsive/initialize.d.ts +3 -0
  471. package/dist/react-sdk/application-runtime/responsive/initialize.js +1 -0
  472. package/dist/react-sdk/application-runtime/responsive/selectors.d.ts +20 -0
  473. package/dist/react-sdk/application-runtime/responsive/selectors.js +1 -0
  474. package/dist/react-sdk/application-runtime/responsive/types.d.ts +104 -0
  475. package/dist/react-sdk/application-runtime/responsive/types.js +1 -0
  476. package/dist/react-sdk/application-runtime/routing/routing-service.d.ts +34 -2
  477. package/dist/react-sdk/application-runtime/routing/routing-service.js +1 -1
  478. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +313 -10
  479. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.js +1 -1
  480. package/dist/react-sdk/domain-application-context/BackendDataProvider.js +1 -1
  481. package/dist/react-sdk/domain-application-context/FrontendDataProvider.js +1 -1
  482. package/dist/react-sdk/domain-application-context/PublishedDataProvider.js +1 -1
  483. package/dist/react-sdk/domain-context/common-hooks/index.d.ts +9 -0
  484. package/dist/react-sdk/domain-context/common-hooks/index.js +1 -0
  485. package/dist/react-sdk/domain-context/common-hooks/use-configuration-save-state.d.ts +23 -0
  486. package/dist/react-sdk/domain-context/common-hooks/use-configuration-save-state.js +1 -0
  487. package/dist/react-sdk/domain-context/common-hooks/use-domain-context.d.ts +1 -0
  488. package/dist/react-sdk/domain-context/component-hooks/index.d.ts +1 -0
  489. package/dist/react-sdk/domain-context/component-hooks/index.js +1 -0
  490. package/dist/react-sdk/domain-context/component-hooks/use-component.js +1 -1
  491. package/dist/react-sdk/domain-context/entity-hooks/use-domain-entity-state.js +1 -1
  492. package/dist/react-sdk/domain-context/entity-hooks/use-entity-price.js +1 -1
  493. package/dist/react-sdk/domain-context/entity-hooks/use-root-entity-id.js +1 -1
  494. package/dist/react-sdk/domain-context/entity-hooks/use-root-entity-state.js +1 -1
  495. package/dist/react-sdk/domain-context/index.d.ts +5 -0
  496. package/dist/react-sdk/domain-context/index.js +1 -1
  497. package/dist/react-sdk/domain-context/system-hooks/composition-hooks.js +1 -1
  498. package/dist/react-sdk/domain-context/system-hooks/dimension-hooks.js +1 -1
  499. package/dist/react-sdk/domain-context/system-hooks/generate-share-link-hooks.d.ts +8 -0
  500. package/dist/react-sdk/domain-context/system-hooks/generate-share-link-hooks.js +1 -0
  501. package/dist/react-sdk/domain-context/system-hooks/hover-hooks.js +1 -1
  502. package/dist/react-sdk/domain-context/system-hooks/locale-switch-hooks.d.ts +24 -0
  503. package/dist/react-sdk/domain-context/system-hooks/locale-switch-hooks.js +1 -0
  504. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.js +1 -1
  505. package/dist/react-sdk/domain-context/system-hooks/selection-hooks.js +1 -1
  506. package/dist/react-sdk/domain-context/system-hooks/share-links-hooks.d.ts +32 -0
  507. package/dist/react-sdk/domain-context/system-hooks/share-links-hooks.js +1 -0
  508. package/dist/react-sdk/domain-context/system-hooks/step-navigation-hooks.d.ts +57 -0
  509. package/dist/react-sdk/domain-context/system-hooks/step-navigation-hooks.js +1 -0
  510. package/dist/react-sdk/domain-context/system-hooks/tab-navigation-hooks.js +1 -1
  511. package/dist/react-sdk/domain-context/system-hooks/undo-redo-hooks.js +1 -1
  512. package/dist/react-sdk/handlers/FinalizeActionRunner.d.ts +13 -0
  513. package/dist/react-sdk/handlers/FinalizeActionRunner.js +1 -0
  514. package/dist/react-sdk/handlers/FinalizeActionsHost.d.ts +10 -0
  515. package/dist/react-sdk/handlers/FinalizeActionsHost.js +1 -0
  516. package/dist/react-sdk/handlers/FinalizeActionsProvider.d.ts +11 -0
  517. package/dist/react-sdk/handlers/FinalizeActionsProvider.js +1 -0
  518. package/dist/react-sdk/handlers/finalize-actions-context.d.ts +6 -0
  519. package/dist/react-sdk/handlers/finalize-actions-context.js +1 -0
  520. package/dist/react-sdk/handlers/finalize-actions-store.d.ts +23 -0
  521. package/dist/react-sdk/handlers/finalize-actions-store.js +1 -0
  522. package/dist/react-sdk/handlers/index.d.ts +5 -0
  523. package/dist/react-sdk/handlers/index.js +1 -1
  524. package/dist/react-sdk/handlers/use-finalize-action.d.ts +3 -2
  525. package/dist/react-sdk/handlers/use-finalize-action.js +1 -1
  526. package/dist/react-sdk/handlers/use-finalize-actions.d.ts +53 -0
  527. package/dist/react-sdk/handlers/use-finalize-actions.js +1 -0
  528. package/dist/react-sdk/index.d.ts +2 -0
  529. package/dist/react-sdk/index.js +1 -1
  530. package/dist/react-sdk/loading-state/LoaderHost.d.ts +20 -0
  531. package/dist/react-sdk/loading-state/LoaderHost.js +1 -0
  532. package/dist/react-sdk/loading-state/built-in-loading-phase.d.ts +9 -0
  533. package/dist/react-sdk/loading-state/built-in-loading-phase.js +1 -0
  534. package/dist/react-sdk/loading-state/create-app-loader.d.ts +18 -0
  535. package/dist/react-sdk/loading-state/create-app-loader.js +1 -0
  536. package/dist/react-sdk/loading-state/index.d.ts +4 -2
  537. package/dist/react-sdk/loading-state/index.js +1 -1
  538. package/dist/react-sdk/loading-state/{LoadingStateProvider.d.ts → loading-state-hooks.d.ts} +3 -12
  539. package/dist/react-sdk/loading-state/loading-state-hooks.js +1 -0
  540. package/dist/react-sdk/page-elements/ConfigurationNotFoundPagePropsProvider.d.ts +17 -0
  541. package/dist/react-sdk/page-elements/ConfigurationNotFoundPagePropsProvider.js +1 -0
  542. package/dist/react-sdk/page-elements/ConfiguratorErrorPagePropsProvider.d.ts +17 -0
  543. package/dist/react-sdk/page-elements/ConfiguratorErrorPagePropsProvider.js +1 -0
  544. package/dist/react-sdk/page-elements/configurator-error-page-props.d.ts +20 -0
  545. package/dist/react-sdk/page-elements/configurator-error-page-props.js +1 -0
  546. package/dist/react-sdk/page-elements/create-configuration-not-found-page.d.ts +15 -0
  547. package/dist/react-sdk/page-elements/create-configuration-not-found-page.js +1 -0
  548. package/dist/react-sdk/page-elements/create-configurator-error-page.d.ts +14 -0
  549. package/dist/react-sdk/page-elements/create-configurator-error-page.js +1 -0
  550. package/dist/react-sdk/page-elements/create-preset-ui.d.ts +9 -0
  551. package/dist/react-sdk/page-elements/create-preset-ui.js +1 -0
  552. package/dist/react-sdk/page-elements/index.d.ts +6 -0
  553. package/dist/react-sdk/page-elements/index.js +1 -0
  554. package/dist/react-sdk/scene-control-elements/AddEntityFabElement.d.ts +36 -0
  555. package/dist/react-sdk/scene-control-elements/AddEntityFabElement.js +1 -0
  556. package/dist/react-sdk/scene-control-elements/DeleteEntityFabElement.d.ts +44 -0
  557. package/dist/react-sdk/scene-control-elements/DeleteEntityFabElement.js +1 -0
  558. package/dist/react-sdk/scene-control-elements/NavigationHotspotElement.d.ts +38 -0
  559. package/dist/react-sdk/scene-control-elements/NavigationHotspotElement.js +1 -0
  560. package/dist/react-sdk/scene-control-elements/SelectionHotspotElement.d.ts +30 -0
  561. package/dist/react-sdk/scene-control-elements/SelectionHotspotElement.js +1 -0
  562. package/dist/react-sdk/scene-control-elements/ToolMenuFabElement.d.ts +30 -0
  563. package/dist/react-sdk/scene-control-elements/ToolMenuFabElement.js +1 -0
  564. package/dist/react-sdk/scene-control-elements/create-add-entity-fab.d.ts +9 -0
  565. package/dist/react-sdk/scene-control-elements/create-add-entity-fab.js +1 -0
  566. package/dist/react-sdk/scene-control-elements/create-delete-entity-fab.d.ts +9 -0
  567. package/dist/react-sdk/scene-control-elements/create-delete-entity-fab.js +1 -0
  568. package/dist/react-sdk/scene-control-elements/create-navigation-hotspot.d.ts +10 -0
  569. package/dist/react-sdk/scene-control-elements/create-navigation-hotspot.js +1 -0
  570. package/dist/react-sdk/scene-control-elements/create-selection-hotspot.d.ts +9 -0
  571. package/dist/react-sdk/scene-control-elements/create-selection-hotspot.js +1 -0
  572. package/dist/react-sdk/scene-control-elements/create-tool-menu-fab.d.ts +9 -0
  573. package/dist/react-sdk/scene-control-elements/create-tool-menu-fab.js +1 -0
  574. package/dist/react-sdk/scene-control-elements/index.d.ts +11 -0
  575. package/dist/react-sdk/scene-control-elements/index.js +1 -0
  576. package/dist/react-sdk/scene-control-elements/scene-control-tooltip-visibility.d.ts +5 -0
  577. package/dist/react-sdk/scene-control-elements/scene-control-tooltip-visibility.js +1 -0
  578. package/dist/react-sdk/session/SessionServiceProvider.js +1 -1
  579. package/dist/react-sdk/web-component/create-web-component.js +1 -1
  580. package/dist/react-sdk/web-component/god-mode/god-mode-registry.d.ts +30 -0
  581. package/dist/react-sdk/web-component/god-mode/god-mode-registry.js +1 -0
  582. package/dist/react-sdk/web-component/god-mode/index.d.ts +1 -0
  583. package/dist/react-sdk/web-component/god-mode/index.js +1 -0
  584. package/dist/ui-sdk/icons/__generated/Lightbulb.d.ts +3 -0
  585. package/dist/ui-sdk/icons/__generated/Lightbulb.js +1 -0
  586. package/dist/ui-sdk/icons/__generated/XCircle.d.ts +3 -0
  587. package/dist/ui-sdk/icons/__generated/XCircle.js +1 -0
  588. package/dist/ui-sdk/icons/__generated/index.d.ts +4 -0
  589. package/dist/ui-sdk/icons/__generated/index.js +1 -1
  590. package/dist/ui-sdk/icons/icons-registry.js +1 -1
  591. package/dist/ui-sdk/responsive-application/ResponsiveApplicationProvider.d.ts +9 -0
  592. package/dist/ui-sdk/responsive-application/ResponsiveApplicationProvider.js +1 -1
  593. package/dist/ui-sdk/responsive-application/index.d.ts +1 -0
  594. package/dist/ui-sdk/responsive-application/responsive-state-store.d.ts +59 -0
  595. package/dist/ui-sdk/responsive-application/responsive-state-store.js +1 -0
  596. package/dist/ui-sdk/responsive-application/use-store-responsive-info.d.ts +7 -0
  597. package/dist/ui-sdk/responsive-application/use-store-responsive-info.js +1 -0
  598. package/dist/ui-sdk/theme/types.d.ts +5 -1
  599. package/package.json +13 -3
  600. package/schema/domain-spec.json +140 -0
  601. package/dist/configurator/ui/assistant/form/built-in-form-registry.d.ts +0 -10
  602. package/dist/configurator/ui/assistant/form/built-in-form-registry.js +0 -1
  603. package/dist/configurator/ui/assistant/form/form-registry.js +0 -8
  604. package/dist/configurator/ui/phoenix-layout-elements/language/use-locale-options.d.ts +0 -4
  605. package/dist/configurator/ui/phoenix-layout-elements/language/use-locale-options.js +0 -1
  606. package/dist/configurator/ui/phoenix-layout-elements/measurements/use-measurements-visibility.d.ts +0 -4
  607. package/dist/configurator/ui/phoenix-layout-elements/measurements/use-measurements-visibility.js +0 -1
  608. package/dist/domain/application/assistant/assistant-form-elements.d.ts +0 -28
  609. package/dist/domain/application/assistant/assistant-form-elements.js +0 -1
  610. package/dist/domain/extensions/client-side-image.js +0 -1
  611. package/dist/domain/extensions/save-template-thumbnail.js +0 -1
  612. package/dist/react-sdk/application-runtime/runtime/god-mode.d.ts +0 -19
  613. package/dist/react-sdk/application-runtime/runtime/god-mode.js +0 -1
  614. package/dist/react-sdk/loading-state/LoadingStateProvider.js +0 -1
  615. package/dist/react-sdk/loading-state/loading-state-manager.d.ts +0 -32
  616. package/dist/react-sdk/loading-state/loading-state-manager.js +0 -1
  617. /package/dist/{configurator/ui/assistant/form/form-element-definition.js → react-sdk/application-runtime/host-properties/types.js} +0 -0
@@ -1,2 +1,2 @@
1
- let e=(e,t)=>e.split(t).length-1,t=/^\|?\s*:?-+:?\s*(\|\s*:?-+:?\s*)*\|?\s*$/;export const hasOpenFence=t=>e(t,"```")%2==1;export const completeStreamedMarkdown=n=>{if(hasOpenFence(n))return`${n}
2
- \`\`\``;let l=n.lastIndexOf("```"),s=-1===l?"":n.slice(0,l+3),r=n.slice(s.length),c=(e=>{let n=e.split("\n"),l=n.length;for(;l>0&&n[l-1]?.trimStart().startsWith("|");)l-=1;let s=n.slice(l),r=s[1],c=null!=r&&s.length>2&&t.test(r);return 0===s.length||c?e:n.slice(0,l).join("\n")})((e(r,"`")%2==1?r.slice(0,r.lastIndexOf("`")):r).replace(/!?\[([^\]\n]*)\](?:\([^)\n]*)?$/,"$1").replace(/!?\[[^\]\n]*$/,"")),i=e(c,"**")%2==1?`${c}**`:c;return`${s}${i}`};
1
+ let e=(e,t)=>e.split(t).length-1,t=/^\|?\s*:?-+:?\s*(\|\s*:?-+:?\s*)*\|?\s*$/,l=/(^|\n) {0,3}>[ \t]*\[![a-z]*$/i,n=/(^|\n) {0,3}>[ \t]*\[![a-z]+\][ \t]*$/i;export const hasOpenFence=t=>e(t,"```")%2==1;export const completeStreamedMarkdown=s=>{var r;let a;if(hasOpenFence(s))return`${s}
2
+ \`\`\``;let i=s.lastIndexOf("```"),c=-1===i?"":s.slice(0,i+3),{head:$,marker:h}=(r=s.slice(c.length),null==(a=n.exec(r))?{head:r.replace(l,"$1"),marker:""}:{head:r.slice(0,a.index),marker:r.slice(a.index)}),p=(e=>{let l=e.split("\n"),n=l.length;for(;n>0&&l[n-1]?.trimStart().startsWith("|");)n-=1;let s=l.slice(n),r=s[1],a=null!=r&&s.length>2&&t.test(r);return 0===s.length||a?e:l.slice(0,n).join("\n")})((e($,"`")%2==1?$.slice(0,$.lastIndexOf("`")):$).replace(/!?\[([^\]\n]*)\](?:\([^)\n]*)?$/,"$1").replace(/!?\[[^\]\n]*$/,"")),d=e(p,"**")%2==1?`${p}**`:p;return`${c}${d}${h}`};
@@ -1 +1 @@
1
- import{Kind as e,parse as t}from"graphql";import{z as n}from"zod";import{ASSISTANT_TOOL_ERROR_CODES as r,AssistantToolError as a,applyTool as i,queryTool as o}from"@salsita-ai/contracts/assistant";let l=n.object({operations:n.array(n.object({query:n.string(),operationName:n.string().nullish()}))}),s=n.object({results:n.array(n.object({errors:n.array(n.unknown()).optional()})),committed:n.boolean()});export const describeToolCall=n=>{let d=(({name:n,input:r})=>{let a,s=(a=l.safeParse(r)).success?a.data.operations.flatMap(({query:n,operationName:r})=>r??(n=>{try{let r=t(n).definitions.find(t=>t.kind===e.OPERATION_DEFINITION);return r?.kind===e.OPERATION_DEFINITION?r.name?.value:void 0}catch{return}})(n)??[]):[];return s.length>0?{kind:"text",text:s.join(", ")}:n===i.name?{kind:"updateDesign"}:n===o.name?{kind:"readDesign"}:{kind:"text",text:n}})(n);if(null==n.result&&null==n.error)return{label:d,state:n.isReplyRunning?"running":"done",errorCode:void 0};let u=(e=>{let t=a.safeParse(e);if(t.success)return r.find(e=>e===t.data.code)})(n.result);return{label:d,state:(({name:e,result:t,error:n},r)=>{if(null!=n||null!=r)return e===o.name?"flawed":"failed";if(e!==i.name&&e!==o.name)return"done";let a=s.safeParse(t);if(!a.success)return e===o.name?"flawed":"failed";let{results:l,committed:d}=a.data;return e===i.name?d?"done":"failed":l.some(({errors:e})=>(e?.length??0)>0)||0===l.length?"flawed":"done"})(n,u),errorCode:u}};
1
+ import{Kind as e,parse as t}from"graphql";import{z as n}from"zod";import{ASSISTANT_TOOL_ERROR_CODES as r,AssistantToolError as a,applyTool as s,queryTool as o}from"@salsita-ai/contracts/assistant";let i=n.object({operations:n.array(n.object({query:n.string(),operationName:n.string().nullish()}))}),l=n.object({results:n.array(n.object({errors:n.array(n.unknown()).optional()})),committed:n.boolean()}),u=n.tuple([n.object({type:n.literal("text"),content:n.string()})]).rest(n.unknown());export const describeToolCall=n=>{let d=(({name:n,input:r})=>{let a,l=(a=i.safeParse(r)).success?a.data.operations.flatMap(({query:n,operationName:r})=>r??(n=>{try{let r=t(n).definitions.find(t=>t.kind===e.OPERATION_DEFINITION);return r?.kind===e.OPERATION_DEFINITION?r.name?.value:void 0}catch{return}})(n)??[]):[];return l.length>0?{kind:"text",text:l.join(", ")}:n===s.name?{kind:"updateDesign"}:n===o.name?{kind:"readDesign"}:{kind:"text",text:n}})(n);if(null==n.result&&null==n.error)return{label:d,state:n.isReplyRunning?"running":"done",errorCode:void 0};let c=(e=>{let t=a.safeParse(e);if(t.success)return r.find(e=>e===t.data.code)})(n.result);return{label:d,state:(({name:e,result:t,error:n},r)=>{if(null!=n||null!=r)return e===o.name?"flawed":"failed";if(e!==s.name&&e!==o.name)return"done";let a=l.safeParse((e=>{let t=u.safeParse(e);if(!t.success)return e;try{return JSON.parse(t.data[0].content)}catch{return e}})(t));if(!a.success)return e===o.name?"flawed":"failed";let{results:i,committed:d}=a.data;return e===s.name?d?"done":"failed":i.some(({errors:e})=>(e?.length??0)>0)||0===i.length?"flawed":"done"})(n,c),errorCode:c}};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{Box as a}from"@mui/material";import{useDetectGPU as i}from"@react-three/drei";import{Canvas as o,useThree as n}from"@react-three/fiber";import{memo as s,useCallback as l,useEffect as p,useMemo as c,useState as f}from"react";import{BuiltInLoadingPhase as m,useLoadingPhase as d,useLoadingStateManager as h,useStoreSelector as u}from"#package/react-sdk";import{useResponsive as g}from"#package/ui-sdk";import{useConfigurator as x}from"../../../../application-runtime/index.js";import{Scene as v,SceneEnvironment as C}from"../../../../scene/index.js";import{CanvasLoader as P}from"../../../phoenix-layout-elements/index.js";import{GPUIssuePage as w}from"./GPUIssuePage.js";let j=e=>{let{onCanNotLoad:t}=e,r=n(e=>e.gl);return p(()=>{let e=r.getContext(),a=e.getExtension("WEBGL_debug_renderer_info");a?e.getParameter(a.UNMASKED_RENDERER_WEBGL).toLocaleLowerCase().includes("swiftshader")&&t?.("no-acceleration"):t?.("no-acceleration")},[r,t]),null};export const Canvas=s(()=>{let[n,s]=f(null),[D,E]=f(!0),{canvasSystem:B}=x(),L=u(e=>B.getCanvasConfig(e.state),[B]),y=i(),{canvasPadding:k}=g(),M=null!==h();d({id:m.SceneAssets,label:"Loading 3D scene…"},D);let $=l(()=>{E(!1),B.reportFirstLoadFinished()},[B]),_=l(e=>{B.onCanvasClick$.next(e)},[B]),b=l(e=>{B.onCanvasPointerMove$.next(e)},[B]),A=c(()=>{let e={};return L?.precision&&(e.precision=L.precision),L?.alpha&&(e.alpha=L.alpha),L?.premultipliedAlpha&&(e.premultipliedAlpha=L.premultipliedAlpha),L?.antialias&&(e.antialias=L.antialias),L?.stencil&&(e.stencil=L.stencil),L?.preserveDrawingBuffer&&(e.preserveDrawingBuffer=L.preserveDrawingBuffer),L?.powerPreference&&(e.powerPreference=L.powerPreference),L?.depth&&(e.depth=L.depth),L?.logarithmicDepthBuffer&&(e.logarithmicDepthBuffer=L.logarithmicDepthBuffer),L?.failIfMajorPerformanceCaveat&&(e.failIfMajorPerformanceCaveat=L.failIfMajorPerformanceCaveat),e},[L]);return(p(()=>{"WEBGL_UNSUPPORTED"===y.type&&s("no-gpu")},[y,s]),n)?e(w,{issue:n}):t(r,{children:[e(a,{component:"div",sx:{transition:"opacity 0.3s ease-in",opacity:+!D,width:"100%",height:"100%"},children:t(o,{gl:A,onClick:_,onPointerMove:b,frameloop:L?.frameloop,shadows:L?.shadows,children:[e(v,{onFirstLoad:$}),e(j,{onCanNotLoad:s}),e(C,{})]})}),!M&&e(a,{component:"div",sx:{position:"absolute",top:k.top,left:k.left,width:`calc(100% - ${k.left}px - ${k.right}px)`,height:`calc(100% - ${k.top}px - ${k.bottom}px)`,display:"flex",justifyContent:"center",alignItems:"center",transition:"opacity 0.3s ease-in",opacity:+!!D,pointerEvents:"none"},children:e(P,{})})]})});
1
+ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{Box as a}from"@mui/material";import{useDetectGPU as i}from"@react-three/drei";import{Canvas as o,useThree as n}from"@react-three/fiber";import{memo as s,useCallback as p,useEffect as l,useMemo as c,useState as f}from"react";import{BuiltInLoadingPhase as m,useExpectPhase as d,useIsLoaderHosted as h,useLoadingPhase as u,useStoreSelector as g}from"#package/react-sdk";import{useResponsive as x}from"#package/ui-sdk";import{useConfigurator as v}from"../../../../application-runtime/index.js";import{Scene as C,SceneEnvironment as P}from"../../../../scene/index.js";import{CanvasLoader as w}from"../../../phoenix-layout-elements/index.js";import{GPUIssuePage as j}from"./GPUIssuePage.js";let D=e=>{let{onCanNotLoad:t}=e,r=n(e=>e.gl);return l(()=>{let e=r.getContext(),a=e.getExtension("WEBGL_debug_renderer_info");a?e.getParameter(a.UNMASKED_RENDERER_WEBGL).toLocaleLowerCase().includes("swiftshader")&&t?.("no-acceleration"):t?.("no-acceleration")},[r,t]),null};export const Canvas=s(()=>{let[n,s]=f(null),[E,B]=f(!0),{canvasSystem:L}=v(),y=g(e=>L.getCanvasConfig(e.state),[L]),k=i(),{canvasPadding:A}=x(),M=h();d(m.SceneAssets),u({id:m.SceneAssets,label:"Loading 3D scene…"},E);let $=p(()=>{B(!1),L.reportFirstLoadFinished()},[L]),_=p(e=>{L.onCanvasClick$.next(e)},[L]),b=p(e=>{L.onCanvasPointerMove$.next(e)},[L]),I=c(()=>{let e={};return y?.precision&&(e.precision=y.precision),y?.alpha&&(e.alpha=y.alpha),y?.premultipliedAlpha&&(e.premultipliedAlpha=y.premultipliedAlpha),y?.antialias&&(e.antialias=y.antialias),y?.stencil&&(e.stencil=y.stencil),y?.preserveDrawingBuffer&&(e.preserveDrawingBuffer=y.preserveDrawingBuffer),y?.powerPreference&&(e.powerPreference=y.powerPreference),y?.depth&&(e.depth=y.depth),y?.logarithmicDepthBuffer&&(e.logarithmicDepthBuffer=y.logarithmicDepthBuffer),y?.failIfMajorPerformanceCaveat&&(e.failIfMajorPerformanceCaveat=y.failIfMajorPerformanceCaveat),e},[y]);return(l(()=>{"WEBGL_UNSUPPORTED"===k.type&&s("no-gpu")},[k,s]),n)?e(j,{issue:n}):t(r,{children:[e(a,{component:"div",sx:{transition:"opacity 0.3s ease-in",opacity:+!E,width:"100%",height:"100%"},children:t(o,{gl:I,onClick:_,onPointerMove:b,frameloop:y?.frameloop,shadows:y?.shadows,children:[e(C,{onFirstLoad:$}),e(D,{onCanNotLoad:s}),e(P,{})]})}),!M&&e(a,{component:"div",sx:{position:"absolute",top:A.top,left:A.left,width:`calc(100% - ${A.left}px - ${A.right}px)`,height:`calc(100% - ${A.top}px - ${A.bottom}px)`,display:"flex",justifyContent:"center",alignItems:"center",transition:"opacity 0.3s ease-in",opacity:+!!E,pointerEvents:"none"},children:e(w,{})})]})});
@@ -1 +1 @@
1
- import{jsx as t}from"react/jsx-runtime";import{styled as e}from"@mui/material";import{Suspense as o,memo as r,useEffect as i,useRef as n,useState as a}from"react";import{useLoadingStateManager as s}from"#package/react-sdk";import{usePreview as l}from"../../../../configurator-context/index.js";import{CanvasLoader as m}from"../../../phoenix-layout-elements/index.js";import{Canvas as c}from"./LayoutCanvas.js";let p=e("div",{shouldForwardProp:t=>"masked"!==t})(({masked:t,theme:{palette:e}})=>({backgroundColor:e.background.scene,inset:0,position:"absolute",isolation:"isolate",maxBlockSize:"var(--phx-app-height)","&::after":{backgroundColor:"inherit",content:'""',display:"block",inset:"inherit",opacity:+!!t,pointerEvents:"none",position:"absolute",transitionDuration:t?"0ms":"100ms",transitionProperty:"opacity",transitionTimingFunction:"linear"}})),u=e("div")({display:"grid",inset:0,placeItems:"center",pointerEvents:"none",position:"absolute"}),d=()=>null!==s()?null:t(u,{children:t(m,{})});export const SharedCanvas=r(()=>{let{isExpanded:e}=l(),[r,s]=a(!1),m=n(e);return i(()=>{if(e===m.current)return;m.current=e,s(!0);let t=setTimeout(()=>s(!1),600);return()=>clearTimeout(t)},[e]),t(p,{masked:r,children:t(o,{fallback:t(d,{}),children:t(c,{})})})});
1
+ import{jsx as t}from"react/jsx-runtime";import{styled as e}from"@mui/material";import{Suspense as o,memo as r,useEffect as i,useRef as n,useState as a}from"react";import{BuiltInLoadingPhase as s,useExpectPhase as l,useIsLoaderHosted as m}from"#package/react-sdk";import{usePreview as c}from"../../../../configurator-context/index.js";import{CanvasLoader as p}from"../../../phoenix-layout-elements/index.js";import{Canvas as u}from"./LayoutCanvas.js";let d=e("div",{shouldForwardProp:t=>"masked"!==t})(({masked:t,theme:{palette:e}})=>({backgroundColor:e.background.scene,inset:0,position:"absolute",isolation:"isolate",maxBlockSize:"var(--phx-app-height)","&::after":{backgroundColor:"inherit",content:'""',display:"block",inset:"inherit",opacity:+!!t,pointerEvents:"none",position:"absolute",transitionDuration:t?"0ms":"100ms",transitionProperty:"opacity",transitionTimingFunction:"linear"}})),h=e("div")({display:"grid",inset:0,placeItems:"center",pointerEvents:"none",position:"absolute"}),f=()=>m()?null:t(h,{children:t(p,{})});export const SharedCanvas=r(()=>{l(s.SceneAssets);let{isExpanded:e}=c(),[r,m]=a(!1),p=n(e);return i(()=>{if(e===p.current)return;p.current=e,m(!0);let t=setTimeout(()=>m(!1),600);return()=>clearTimeout(t)},[e]),t(d,{masked:r,children:t(o,{fallback:t(f,{}),children:t(u,{})})})});
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Covers the configurator while an export runs, which keeps it inert: a press anywhere shows for a
3
+ * moment why nothing responds, instead of a configurator that silently ignores the user.
4
+ */
5
+ export declare const ExportingOverlay: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ import{jsx as e}from"react/jsx-runtime";import{Trans as r}from"@lingui/react";import{styled as t}from"@mui/material";import{useCallback as o,useEffect as i,useState as a}from"react";let n=t("div",{name:"PhxExportingOverlay",slot:"root"})(({theme:{zIndex:e}})=>({alignItems:"center",cursor:"wait",display:"flex",inset:0,justifyContent:"center",position:"absolute",zIndex:e.modal+1})),l=t("div",{name:"PhxExportingOverlay",slot:"message"})(({theme:{palette:e,shape:r,shadows:t,spacing:o,typography:i}})=>({...i.body2,background:e.background.paper,borderRadius:r.borderRadius,boxShadow:t[4],color:e.text.primary,padding:o(1,2)}));export const ExportingOverlay=()=>{let[t,s]=a(null),m=o(()=>s(Date.now()),[]);return i(()=>{if(null===t)return;let e=setTimeout(()=>s(null),2e3);return()=>clearTimeout(e)},[t]),e(n,{onPointerDown:m,children:null!==t&&e(l,{role:"status",children:e(r,{id:"sdk.layout.exporting.message",message:"Configurator is exporting… please wait"})})})};
@@ -1 +1 @@
1
- import{jsx as r,jsxs as o,Fragment as s}from"react/jsx-runtime";import{useResponsive as t}from"#package/ui-sdk";import{LayoutSlots as e}from"../slots/index.js";import{DesktopLayout as a}from"./DesktopLayout.js";import{MobileLayout as m}from"./MobileLayout.js";export const Layout=()=>{let{isDesktop:i}=t();return o(s,{children:[r(e.Services,{}),r(e.SharedCanvas,{}),i?r(a,{}):r(m,{})]})};
1
+ import{jsx as t,jsxs as e,Fragment as r}from"react/jsx-runtime";import{styled as o}from"@mui/material";import{useEffect as i}from"react";import{useEagerObservableValue as m}from"#package/react-sdk";import{useResponsive as n}from"#package/ui-sdk";import{useConfigurator as a}from"../../../application-runtime/index.js";import{LayoutSlots as s}from"../slots/index.js";import{DesktopLayout as c}from"./DesktopLayout.js";import{ExportingOverlay as p}from"./ExportingOverlay.js";import{MobileLayout as d}from"./MobileLayout.js";let l=o("div")({display:"contents"});export const Layout=()=>{let{isDesktop:o}=n(),{exportSystem:u}=a(),f=m(u.exporting$);return i(()=>{if(!f)return;let t=document.activeElement;return()=>{t instanceof HTMLElement&&t.isConnected&&document.activeElement===document.body&&t.focus()}},[f]),e(r,{children:[e(l,{...{inert:f?"":void 0},children:[t(s.Services,{}),t(s.SharedCanvas,{}),o?t(c,{}):t(d,{})]}),f&&t(p,{})]})};
@@ -7,7 +7,7 @@ export interface LayoutSceneSafeAreaOptions {
7
7
  }
8
8
  /**
9
9
  * Measures the gap between a full-area container and an inner "safe area" element,
10
- * and writes the resulting gaps to the responsive context as canvas padding — letting the
10
+ * and writes the resulting gaps to the responsive state as canvas padding — letting the
11
11
  * 3D scene render only in the region not covered by overlay UI (preview body, sidebar, etc.).
12
12
  *
13
13
  * The implementation behind `useSceneSafeArea`, with the two things only the built-in
@@ -1 +1 @@
1
- import{useCallback as t,useEffect as e,useRef as r}from"react";import{canvasPaddingComponent as n}from"#package/domain";import{useFirstComponent as o}from"#package/react-sdk";import{useResponsive as a}from"#package/ui-sdk";export const useLayoutSceneSafeArea=c=>{let{enabled:u,hasMiniSidebar:i}=c,{setCanvasPadding:m}=a(),l=r(null),s=r(null),f=r(null),h=r(null),p=r(0),g=r(()=>{}),b=o({componentTypes:[n]}),d=t(()=>{let t=s.current,e=f.current;if(!u||!t||!e)return;let r=t.getBoundingClientRect(),n=e.getBoundingClientRect();if(Math.abs(r.width-t.offsetWidth)>1||Math.abs(r.height-t.offsetHeight)>1){if(p.current+=1,p.current>60){p.current=0;return}l.current&&cancelAnimationFrame(l.current),l.current=requestAnimationFrame(()=>g.current());return}p.current=0;let o={bottom:Math.max(0,r.bottom-n.bottom),left:Math.max(0,n.left-r.left),right:Math.max(0,r.right-n.right),top:Math.max(0,n.top-r.top)},a=i?.3:1,c=b?.state.bottom??1,h=b?.state.left??1,d=b?.state.right??a,A=b?.state.top??1;m({bottom:o.bottom*c,left:o.left*h,right:o.right*d,top:o.top*A})},[u,i,b?.state.bottom,b?.state.left,b?.state.right,b?.state.top,m]);g.current=d;let A=t(()=>{l.current&&cancelAnimationFrame(l.current),l.current=requestAnimationFrame(d)},[d]),M=t(()=>{h.current?.disconnect(),h.current=null},[]),k=t(()=>{let t=s.current,e=f.current;if(!u||!t||!e)return void M();M();let r=new ResizeObserver(A);r.observe(t),r.observe(e),h.current=r},[M,u,A]),x=t(t=>{s.current=t,k()},[k]),F=t(t=>{f.current=t,k()},[k]);return e(()=>(k(),()=>{M(),l.current&&cancelAnimationFrame(l.current)}),[k,M]),{containerRef:x,safeAreaRef:F,update:A}};
1
+ import{useCallback as t,useEffect as e,useRef as r}from"react";import{canvasPaddingComponent as n}from"#package/domain";import{useFirstComponent as o,useResponsiveActions as a}from"#package/react-sdk";export const useLayoutSceneSafeArea=c=>{let{enabled:u,hasMiniSidebar:i}=c,{setCanvasPadding:l}=a(),m=r(null),s=r(null),f=r(null),h=r(null),g=r(0),p=r(()=>{}),b=o({componentTypes:[n]}),d=t(()=>{let t=s.current,e=f.current;if(!u||!t||!e)return;let r=t.getBoundingClientRect(),n=e.getBoundingClientRect();if(Math.abs(r.width-t.offsetWidth)>1||Math.abs(r.height-t.offsetHeight)>1){if(g.current+=1,g.current>60){g.current=0;return}m.current&&cancelAnimationFrame(m.current),m.current=requestAnimationFrame(()=>p.current());return}g.current=0;let o={bottom:Math.max(0,r.bottom-n.bottom),left:Math.max(0,n.left-r.left),right:Math.max(0,r.right-n.right),top:Math.max(0,n.top-r.top)},a=i?.3:1,c=b?.state.bottom??1,h=b?.state.left??1,d=b?.state.right??a,A=b?.state.top??1;l({bottom:o.bottom*c,left:o.left*h,right:o.right*d,top:o.top*A})},[u,i,b?.state.bottom,b?.state.left,b?.state.right,b?.state.top,l]);p.current=d;let A=t(()=>{m.current&&cancelAnimationFrame(m.current),m.current=requestAnimationFrame(d)},[d]),M=t(()=>{h.current?.disconnect(),h.current=null},[]),x=t(()=>{let t=s.current,e=f.current;if(!u||!t||!e)return void M();M();let r=new ResizeObserver(A);r.observe(t),r.observe(e),h.current=r},[M,u,A]),F=t(t=>{s.current=t,x()},[x]),v=t(t=>{f.current=t,x()},[x]);return e(()=>(x(),()=>{M(),m.current&&cancelAnimationFrame(m.current)}),[x,M]),{containerRef:F,safeAreaRef:v,update:A}};
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * A layout attaches `containerRef` to the element that covers the whole canvas and `safeAreaRef`
5
5
  * to the region the scene should stay visible in. The hook measures the gap between the two,
6
- * again whenever either element resizes, and writes it to the responsive context as the canvas
6
+ * again whenever either element resizes, and writes it to the responsive state as the canvas
7
7
  * padding the camera frames the scene with.
8
8
  *
9
9
  * Returns:
@@ -4,3 +4,4 @@ export * from './phoenix-layout-elements/index.js';
4
4
  export * from './preset-layout/index.js';
5
5
  export * as Legacy from './legacy/index.js';
6
6
  export * from './ConfiguratorEncapsulatedTheme.js';
7
+ export { type AssistantFormElementRoleProps, type AssistantFormElementType, type CreateAssistantFormElement, type FormContainerProps, type FormInputProps, type FormOptionProps, createAssistantFormElementFactory, } from './assistant/index.js';
@@ -1 +1 @@
1
- export*from"./configurator-layout/index.js";export*from"./phoenix-entity-elements/index.js";export*from"./phoenix-layout-elements/index.js";export*from"./preset-layout/index.js";export*as Legacy from"./legacy/index.js";export*from"./ConfiguratorEncapsulatedTheme.js";
1
+ export*from"./configurator-layout/index.js";export*from"./phoenix-entity-elements/index.js";export*from"./phoenix-layout-elements/index.js";export*from"./preset-layout/index.js";export*as Legacy from"./legacy/index.js";export*from"./ConfiguratorEncapsulatedTheme.js";export{createAssistantFormElementFactory}from"./assistant/index.js";
@@ -1 +1 @@
1
- import{jsx as e,jsxs as t,Fragment as o}from"react/jsx-runtime";import{Box as i,styled as r}from"@mui/material";import{AnimatePresence as a}from"motion/react";import{Suspense as n,memo as l,useEffect as s,useState as m}from"react";import{useIsFullscreenActive as c,useLoadingStateManager as d,useResolveLocalizable as p}from"#package/react-sdk";import{useResponsive as u}from"#package/ui-sdk";import{usePreview as f}from"../../../../configurator-context/index.js";import{CanvasLoader as b}from"../../../phoenix-layout-elements/index.js";import{InterfaceLayout as g}from"../old/InterfaceLayout.js";import{PreviewLayout as v}from"../old/PreviewLayout.js";let x=({overlay:t})=>e("div",{style:{position:"absolute"},children:t}),h=r("div")({display:"grid",inset:0,placeItems:"center",pointerEvents:"none",position:"absolute"}),k=()=>null!==d()?null:e(h,{children:e(b,{})}),y=({canvas:t})=>{let[o,r]=m(!0),{isPreview:a}=f();return s(()=>{r(!1);let e=setTimeout(()=>{r(!0)},400);return()=>{clearTimeout(e)}},[a]),e(i,{component:"div",sx:{backgroundColor:"background.scene",inset:0,isolation:"isolate",maxBlockSize:"var(--phx-app-height)",position:"absolute"},children:e(n,{fallback:e(k,{}),children:o&&t})})},j={id:"sdk.preview.customize.title",message:"Customize product"},C={id:"sdk.preview.start.button.label",message:"Start configuring"};export const ReactiveInterfaceLayout=l(i=>{let{canvas:r,sidebar:n,topNavigation:l,branding:s,toolbar:m,fullScreenToolbar:d,viewControls:b,toolControls:h,overlay:k,mobileControls:S,mobileTopNavigation:L,mobileHeaderActionButton:w,mobileHeaderCenter:z,footer:B,sideEffects:I,LayoutContainer:P}=i,{setCanvasPadding:T}=u(),E=c(),{isPreview:F,isHidden:H}=f(),N=p();return t(o,{children:[e(y,{canvas:r}),e(x,{overlay:k}),t(a,{children:[!H&&F&&e(v,{title:N(j),startButtonLabel:N(C),updateScenePadding:T}),!H&&!F&&e(g,{sidebar:n,topNavigation:l,branding:s,toolbar:m,toolbarSecondary:d,mobileControls:S,mobileTopNavigation:L,mobileHeaderActionButton:w,mobileHeaderCenter:z,footer:B,sideEffects:I,isFullScreen:E,updateScenePadding:T,LayoutContainer:P,viewControls:b,toolControls:h})]})]})});
1
+ import{jsx as e,jsxs as t,Fragment as o}from"react/jsx-runtime";import{Box as i,styled as r}from"@mui/material";import{AnimatePresence as a}from"motion/react";import{Suspense as n,memo as s,useEffect as l,useState as m}from"react";import{BuiltInLoadingPhase as c,useExpectPhase as d,useIsFullscreenActive as p,useIsLoaderHosted as u,useResolveLocalizable as f}from"#package/react-sdk";import{useResponsive as b}from"#package/ui-sdk";import{usePreview as g}from"../../../../configurator-context/index.js";import{CanvasLoader as v}from"../../../phoenix-layout-elements/index.js";import{InterfaceLayout as x}from"../old/InterfaceLayout.js";import{PreviewLayout as h}from"../old/PreviewLayout.js";let k=({overlay:t})=>e("div",{style:{position:"absolute"},children:t}),y=r("div")({display:"grid",inset:0,placeItems:"center",pointerEvents:"none",position:"absolute"}),j=()=>u()?null:e(y,{children:e(v,{})}),C=({canvas:t})=>{d(c.SceneAssets);let[o,r]=m(!0),{isPreview:a}=g();return l(()=>{r(!1);let e=setTimeout(()=>{r(!0)},400);return()=>{clearTimeout(e)}},[a]),e(i,{component:"div",sx:{backgroundColor:"background.scene",inset:0,isolation:"isolate",maxBlockSize:"var(--phx-app-height)",position:"absolute"},children:e(n,{fallback:e(j,{}),children:o&&t})})},S={id:"sdk.preview.customize.title",message:"Customize product"},L={id:"sdk.preview.start.button.label",message:"Start configuring"};export const ReactiveInterfaceLayout=s(i=>{let{canvas:r,sidebar:n,topNavigation:s,branding:l,toolbar:m,fullScreenToolbar:c,viewControls:d,toolControls:u,overlay:v,mobileControls:y,mobileTopNavigation:j,mobileHeaderActionButton:w,mobileHeaderCenter:z,footer:B,sideEffects:I,LayoutContainer:P}=i,{setCanvasPadding:T}=b(),A=p(),{isPreview:E,isHidden:F}=g(),H=f();return t(o,{children:[e(C,{canvas:r}),e(k,{overlay:v}),t(a,{children:[!F&&E&&e(h,{title:H(S),startButtonLabel:H(L),updateScenePadding:T}),!F&&!E&&e(x,{sidebar:n,topNavigation:s,branding:l,toolbar:m,toolbarSecondary:c,mobileControls:y,mobileTopNavigation:j,mobileHeaderActionButton:w,mobileHeaderCenter:z,footer:B,sideEffects:I,isFullScreen:A,updateScenePadding:T,LayoutContainer:P,viewControls:d,toolControls:u})]})]})});
@@ -1,11 +1,4 @@
1
1
  import type { PropsWithChildren } from 'react';
2
- import type { PhoenixLayoutElementRegistration } from '#package/domain';
3
- import type { LoadingPhase } from '#package/react-sdk';
4
- export interface AppLoaderContentProps {
5
- readonly phases: readonly LoadingPhase[];
6
- }
7
- export declare const createAppLoader: (Element: (props: AppLoaderContentProps) => JSX.Element) => readonly PhoenixLayoutElementRegistration[];
8
- export type CreateAppLoader = (Element: (props: AppLoaderContentProps) => JSX.Element) => readonly PhoenixLayoutElementRegistration[];
9
2
  interface AppLoaderProps extends PropsWithChildren {
10
3
  readonly mode?: 'legacy' | 'universal';
11
4
  }
@@ -1,8 +1,4 @@
1
- import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{keyframes as a,styled as o}from"@mui/material";import{useRef as i}from"react";import{createCustomPhoenixLayoutElement as p}from"#package/domain";import{BuiltInLoadingPhase as s,PhoenixLayoutElement as n,useLoadingStateValue as m}from"#package/react-sdk";import{useResponsive as c}from"#package/ui-sdk";let d="AppLoaderContent";export const createAppLoader=t=>[p(d,()=>{let{phases:r}=m();return e(t,{phases:r})})];let l=a`
2
- 0% { transform: perspective(200px) rotateX(0deg) rotateY(0deg) }
3
- 50% { transform: perspective(200px) rotateX(-180deg) rotateY(0deg) }
4
- 100% { transform: perspective(200px) rotateX(-180deg) rotateY(-180deg) }
5
- `,g=o("span")(({theme:e})=>({animation:`${l} 1s linear infinite`,aspectRatio:1,background:e.palette.primary.main,height:36})),f=a`
1
+ import{jsx as e,jsxs as t,Fragment as i}from"react/jsx-runtime";import{keyframes as a,styled as r}from"@mui/material";import{AppLoaderContentName as s,BuiltInLoadingPhase as o,PhoenixLayoutElement as n,useIsAwaitingLoadingPhase as p,useLoadingStateValue as m,useResponsiveState as l}from"#package/react-sdk";let c=a`
6
2
  from { opacity: 0 }
7
3
  to { opacity: 1 }
8
- `,x=o("div")({animation:`${f} 1000ms linear 300ms forwards`,opacity:0,display:"grid",inset:0,maxBlockSize:"var(--phx-app-height)",placeItems:"center",pointerEvents:"none",position:"absolute",transition:"inset 100ms ease-in-out",zIndex:9999}),u=()=>e(g,{});export const AppLoader=({mode:a="universal",children:o})=>{let{isLoading:p,hasError:l,phases:g,expectedPhaseIds:f}=m(),{canvasPadding:h}=c(),k=i(!1);if(g.some(e=>e.id===s.SceneAssets)&&(k.current=!0),"legacy"===a)return o;let v=f.has(s.SceneAssets)&&!k.current;return t(r,{children:[o,!l&&(p||v)&&e(x,{style:{inset:`${h.top}px ${h.right}px ${h.bottom}px ${h.left}px`},children:e(n,{name:d,elementProps:{},defaultSlot:u})})]})};
4
+ `,x=r("div")({animation:`${c} 1000ms linear 300ms forwards`,opacity:0,display:"grid",inset:0,maxBlockSize:"var(--phx-app-height)",placeItems:"center",pointerEvents:"none",position:"absolute",transition:"inset 100ms ease-in-out",zIndex:9999});export const AppLoader=({mode:a="universal",children:r})=>{let{isLoading:c,hasError:d,phases:f}=m(),g=p(o.SceneAssets),{canvasPadding:h}=l();return"legacy"===a?r:t(i,{children:[r,!d&&(c||g)&&e(x,{style:{inset:`${h.top}px ${h.right}px ${h.bottom}px ${h.left}px`},children:e(n,{name:s,elementProps:{phases:f}})})]})};
@@ -1 +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})});
1
+ import{jsx as t}from"react/jsx-runtime";import{Badge as o}from"@mui/material";import{memo as r,useCallback as a}from"react";import{assistantToolbarButtonSchema as s,createPhoenixLayoutElement as i}from"#package/domain";import{useLocalizable as e}from"#package/react-sdk";import{DesktopToolbar as m,PhxIcon as n,useResponsive as l}from"#package/ui-sdk";import{useAssistantPanel as c}from"../../toolbar-actions/index.js";let p={id:"sdk.assistant.toolbarButton.label",message:"Assistant"};export const AssistantToolbarButton=i({schema:s,component:r(r=>{let{icon:s,showTitle:i=!0}=r,{available:d,open:u,hasUnreadReply:k,setOpen:f}=c(),b=e(p),{isPhone:A,isTablet:g}=l(),x=a(()=>{f(!u)},[f,u]);return d?t(m.Button,{title:b,onClick:x,showTitle:i&&!A&&!g,"aria-pressed":u,sx:{'&[aria-pressed="true"]':{backgroundColor:"action.selected"}},children:t(o,{color:"primary",variant:"dot",overlap:"circular",invisible:!k,children:t(n,{name:s??(u?"CustomAiAssistantBold":"CustomAiAssistant")})})}):null})});
@@ -1 +1 @@
1
- import{jsx as e,jsxs as a}from"react/jsx-runtime";import{useLingui as o,Trans as n}from"@lingui/react";import{Button as l,DialogActions as r,DialogContent as i,DialogTitle as t,ListItemText as m,MenuItem as s,MenuList as c,menuItemClasses as g,styled as u}from"@mui/material";import{memo as d,useCallback as p}from"react";import{createPhoenixLayoutElement as h,languageMenuActionSchema as f}from"#package/domain";import{useLinguiActivate as x}from"#package/react-sdk";import{LocaleIcon as C}from"./language/LocaleIcon.js";import{useLocaleOptions as k}from"./language/use-locale-options.js";import{useMenuRouting as j}from"./menu-actions/MenuRoutingContext.js";import{RoutingMenuAction as y}from"./menu-actions/RoutingMenuAction.js";let b=u(c)(({theme:{spacing:e}})=>({columnGap:e(2),display:"grid",gridTemplateColumns:"min-content auto",[`.${g.root}`]:{display:"grid",gridColumn:"1 / -1",gridTemplateColumns:"subgrid"}}));export const LanguageMenuAction=h({schema:f,component:d(()=>{let{i18n:c}=o(),g=k(),{close:u}=j(),d=x(),h=p(e=>{d(e),u()},[d,u]);return a(y,{label:e(n,{id:"sdk.layout.hamburgerMenu.language.label",message:"Change Language"}),icon:e(C,{children:c.locale}),children:[e(t,{children:e(n,{id:"sdk.layout.hamburgerMenu.language.dialogTitle",message:"Change Language"})}),e(i,{sx:{px:0},children:e(b,{children:g.map(o=>a(s,{onClick:()=>{h(o.locale)},children:[e(C,{sx:{color:"text.secondary"},children:o.locale}),e(m,{children:o.displayName})]},o.locale))})}),e(r,{children:e(l,{variant:"text",color:"inherit",onClick:u,children:e(n,{id:"sdk.layout.menu.language.close.label",message:"Close"})})})]})})});
1
+ import{jsx as e,jsxs as a}from"react/jsx-runtime";import{Trans as n}from"@lingui/react";import{Button as o,DialogActions as r,DialogContent as i,DialogTitle as l,ListItemText as t,MenuItem as m,MenuList as s,menuItemClasses as c,styled as g}from"@mui/material";import{memo as u,useCallback as d}from"react";import{createPhoenixLayoutElement as p,languageMenuActionSchema as h}from"#package/domain";import{useLocaleSwitch as x}from"#package/react-sdk";import{LocaleIcon as f}from"./language/LocaleIcon.js";import{useMenuRouting as C}from"./menu-actions/MenuRoutingContext.js";import{RoutingMenuAction as k}from"./menu-actions/RoutingMenuAction.js";let y=g(s)(({theme:{spacing:e}})=>({columnGap:e(2),display:"grid",gridTemplateColumns:"min-content auto",[`.${c.root}`]:{display:"grid",gridColumn:"1 / -1",gridTemplateColumns:"subgrid"}}));export const LanguageMenuAction=p({schema:h,component:u(()=>{let{locales:s,locale:c,setLocale:g}=x(),{close:u}=C(),p=d(e=>{g(e),u()},[g,u]);return a(k,{label:e(n,{id:"sdk.layout.hamburgerMenu.language.label",message:"Change Language"}),icon:e(f,{children:c}),children:[e(l,{children:e(n,{id:"sdk.layout.hamburgerMenu.language.dialogTitle",message:"Change Language"})}),e(i,{sx:{px:0},children:e(y,{children:s.map(n=>a(m,{onClick:()=>{p(n.locale)},children:[e(f,{sx:{color:"text.secondary"},children:n.locale}),e(t,{children:n.displayName})]},n.locale))})}),e(r,{children:e(o,{variant:"text",color:"inherit",onClick:u,children:e(n,{id:"sdk.layout.menu.language.close.label",message:"Close"})})})]})})});
@@ -1 +1 @@
1
- import{jsx as e,jsxs as a,Fragment as o}from"react/jsx-runtime";import{useLingui as r}from"@lingui/react";import{ListItemButton as l,ListItemText as t,List as i,listItemButtonClasses as n,styled as m}from"@mui/material";import{memo as c,useCallback as s}from"react";import{createPhoenixLayoutElement as p,languageToolbarButtonSchema as g}from"#package/domain";import{useLinguiActivate as u,useResolveLocalizable as d}from"#package/react-sdk";import{DesktopToolbar as h}from"#package/ui-sdk";import{LocaleIcon as f}from"./language/LocaleIcon.js";import{useLocaleOptions as x}from"./language/use-locale-options.js";let k=m(i)(({theme:{spacing:e}})=>({columnGap:e(2),display:"grid",gridTemplateColumns:"min-content auto",maxBlockSize:"calc(100cqb - 50px)",overflowY:"auto",[`.${n.root}`]:{display:"grid",gridColumn:"1 / -1",gridTemplateColumns:"subgrid"}})),b={id:"sdk.toolbar.language.title",message:"Switch language"},C="language-toolbar";export const LanguageToolbarButton=p({schema:g,component:c(()=>{let{i18n:i}=r(),{ref:n,handleClose:m,handleToggle:c,openedKey:p}=h.useToolbarPopper(),g=d(),j=u(),y=s(()=>{c("language-toolbar")},[c]),T=s(e=>{j(e),y()},[j,y]),z=x();return a(o,{children:[e(h.Button,{ref:n,title:g(b),size:"small","aria-expanded":p===C?"true":void 0,"aria-haspopup":"menu",onClick:y,children:e(f,{sx:{minInlineSize:24},children:i.locale})}),e(h.Popper,{placement:"top-start",anchorEl:n.current,isOpen:p===C,onClose:m,children:e(k,{children:z.map(o=>a(l,{onClick:()=>{T(o.locale)},children:[e(f,{sx:{color:"text.secondary"},children:o.locale}),e(t,{primary:o.displayName})]},o.locale))})})]})})});
1
+ import{jsx as e,jsxs as a,Fragment as o}from"react/jsx-runtime";import{ListItemButton as r,ListItemText as l,List as t,listItemButtonClasses as i,styled as n}from"@mui/material";import{memo as m,useCallback as c}from"react";import{createPhoenixLayoutElement as s,languageToolbarButtonSchema as p}from"#package/domain";import{useLocaleSwitch as d,useResolveLocalizable as g}from"#package/react-sdk";import{DesktopToolbar as u}from"#package/ui-sdk";import{LocaleIcon as h}from"./language/LocaleIcon.js";let x=n(t)(({theme:{spacing:e}})=>({columnGap:e(2),display:"grid",gridTemplateColumns:"min-content auto",maxBlockSize:"calc(100cqb - 50px)",overflowY:"auto",[`.${i.root}`]:{display:"grid",gridColumn:"1 / -1",gridTemplateColumns:"subgrid"}})),f={id:"sdk.toolbar.language.title",message:"Switch language"},k="language-toolbar";export const LanguageToolbarButton=s({schema:p,component:m(()=>{let{locales:t,locale:i,setLocale:n}=d(),{ref:m,handleClose:s,handleToggle:p,openedKey:b}=u.useToolbarPopper(),C=g(),y=c(()=>{p("language-toolbar")},[p]),T=c(e=>{n(e),y()},[n,y]);return a(o,{children:[e(u.Button,{ref:m,title:C(f),size:"small","aria-expanded":b===k?"true":void 0,"aria-haspopup":"menu",onClick:y,children:e(h,{sx:{minInlineSize:24},children:i})}),e(u.Popper,{placement:"top-start",anchorEl:m.current,isOpen:b===k,onClose:s,children:e(x,{children:t.map(o=>a(r,{onClick:()=>{T(o.locale)},children:[e(h,{sx:{color:"text.secondary"},children:o.locale}),e(l,{primary:o.displayName})]},o.locale))})})]})})});
@@ -1 +1 @@
1
- import{jsx as e,jsxs as m}from"react/jsx-runtime";import{Trans as s}from"@lingui/react";import{Button as r,DialogActions as n,DialogContent as t,DialogTitle as i,Stack as o}from"@mui/material";import{memo as a}from"react";import{createPhoenixLayoutElement as u,measurementsMenuActionSchema as c}from"#package/domain";import{useDimensionState as l}from"#package/react-sdk";import{DimensionUnitSelector as p}from"./measurements/DimensionUnitSelector.js";import{MeasurementsIcon as d}from"./measurements/MeasurementsIcon.js";import{MeasurementsIndicatorsSwitch as f}from"./measurements/MeasurementsIndicatorsSwitch.js";import{useMeasurementsVisibility as g}from"./measurements/use-measurements-visibility.js";import{useMenuRouting as h}from"./menu-actions/MenuRoutingContext.js";import{RoutingMenuAction as j}from"./menu-actions/RoutingMenuAction.js";export const MeasurementsMenuAction=u({schema:c,component:a(a=>{let{showIndicatorSwitch:u,icons:c}=a,{unit:k}=l(),{indicatorSwitchShown:x,measurementsShown:M}=g(u),{close:b}=h();return M?m(j,{label:e(s,{id:"sdk.layout.menu.measurements.label",message:"Change measure"}),icon:e(d,{unit:k,icons:c}),children:[e(i,{children:e(s,{id:"sdk.layout.menu.measurements.label",message:"Change measure"})}),e(t,{children:m(o,{spacing:2,direction:"column",children:[x&&e(f,{}),e(p,{})]})}),e(n,{children:e(r,{variant:"text",color:"inherit",onClick:b,children:e(s,{id:"sdk.layout.menu.measurements.close.label",message:"Close"})})})]}):null})});
1
+ import{jsx as e,jsxs as n}from"react/jsx-runtime";import{Trans as m}from"@lingui/react";import{Button as r,DialogActions as s,DialogContent as t,DialogTitle as o,Stack as i}from"@mui/material";import{memo as a}from"react";import{createPhoenixLayoutElement as u,measurementsMenuActionSchema as c}from"#package/domain";import{useMeasurements as l}from"../../toolbar-actions/index.js";import{DimensionUnitSelector as d}from"./measurements/DimensionUnitSelector.js";import{MeasurementsIcon as p}from"./measurements/MeasurementsIcon.js";import{MeasurementsIndicatorsSwitch as f}from"./measurements/MeasurementsIndicatorsSwitch.js";import{useMenuRouting as h}from"./menu-actions/MenuRoutingContext.js";import{RoutingMenuAction as g}from"./menu-actions/RoutingMenuAction.js";export const MeasurementsMenuAction=u({schema:c,component:a(a=>{let{showIndicatorSwitch:u,icons:c}=a,{unit:j,hasIndicatorSwitch:x,available:M}=l({showIndicatorSwitch:u}),{close:b}=h();return M?n(g,{label:e(m,{id:"sdk.layout.menu.measurements.label",message:"Change measure"}),icon:e(p,{unit:j,icons:c}),children:[e(o,{children:e(m,{id:"sdk.layout.menu.measurements.label",message:"Change measure"})}),e(t,{children:n(i,{spacing:2,direction:"column",children:[x&&e(f,{}),e(d,{})]})}),e(s,{children:e(r,{variant:"text",color:"inherit",onClick:b,children:e(m,{id:"sdk.layout.menu.measurements.close.label",message:"Close"})})})]}):null})});
@@ -1 +1 @@
1
- import{jsx as e,jsxs as r,Fragment as s}from"react/jsx-runtime";import{Box as m,Stack as a}from"@mui/material";import{memo as n,useCallback as t}from"react";import{createPhoenixLayoutElement as o,measurementsToolbarButtonSchema as i}from"#package/domain";import{FrontendAnalyticsFactory as u,useAnalyticsService as p,useDimensionState as l,useLocalizable as c}from"#package/react-sdk";import{DesktopToolbar as d}from"#package/ui-sdk";import{DimensionUnitSelector as h}from"./measurements/DimensionUnitSelector.js";import{MeasurementsIcon as g}from"./measurements/MeasurementsIcon.js";import{MeasurementsIndicatorsSwitch as f}from"./measurements/MeasurementsIndicatorsSwitch.js";import{useMeasurementsVisibility as k}from"./measurements/use-measurements-visibility.js";let j="measurements",M={id:"sdk.measurements",message:"Change measure"},x={id:"sdk.toolbar.measurements.change.aria",message:"open measure menu"};export const MeasurementsToolbarButton=o({schema:i,component:n(n=>{let{showIndicatorSwitch:o,icons:i}=n,{ref:b,handleClose:C,handleToggle:T,openedKey:v}=d.useToolbarPopper(),B=p(),{unit:I}=l(),{indicatorSwitchShown:P,measurementsShown:S}=k(o),w=t(()=>{B.push(u.MeasurementsMenuToggled()),T(j)},[B,T]),y=t(e=>{B.push(u.MeasurementsMenuClosed()),C(e)},[B,C]),z=c(M),D=c(x);return S?r(s,{children:[e(d.Button,{ref:b,title:z,size:"small","aria-expanded":v===j?"true":void 0,"aria-label":D,"aria-haspopup":"menu",onClick:w,children:e(g,{unit:I,icons:i})}),e(d.Popper,{placement:"top-start",anchorEl:b.current,isOpen:v===j,onClose:y,children:e(m,{component:"div",sx:{p:2},children:r(a,{spacing:2,direction:"column",children:[P&&e(f,{}),e(h,{})]})})})]}):null})});
1
+ import{jsx as e,jsxs as r,Fragment as s}from"react/jsx-runtime";import{Box as o,Stack as a}from"@mui/material";import{memo as n,useCallback as t}from"react";import{createPhoenixLayoutElement as m,measurementsToolbarButtonSchema as i}from"#package/domain";import{FrontendAnalyticsFactory as u,useAnalyticsService as p,useLocalizable as l}from"#package/react-sdk";import{DesktopToolbar as c}from"#package/ui-sdk";import{useMeasurements as d}from"../../toolbar-actions/index.js";import{DimensionUnitSelector as h}from"./measurements/DimensionUnitSelector.js";import{MeasurementsIcon as g}from"./measurements/MeasurementsIcon.js";import{MeasurementsIndicatorsSwitch as f}from"./measurements/MeasurementsIndicatorsSwitch.js";let k="measurements",j={id:"sdk.measurements",message:"Change measure"},x={id:"sdk.toolbar.measurements.change.aria",message:"open measure menu"};export const MeasurementsToolbarButton=m({schema:i,component:n(n=>{let{showIndicatorSwitch:m,icons:i}=n,{ref:M,handleClose:b,handleToggle:C,openedKey:T}=c.useToolbarPopper(),v=p(),{unit:B,hasIndicatorSwitch:I,available:P}=d({showIndicatorSwitch:m}),S=t(()=>{v.push(u.MeasurementsMenuToggled()),C(k)},[v,C]),w=t(e=>{v.push(u.MeasurementsMenuClosed()),b(e)},[v,b]),z=l(j),D=l(x);return P?r(s,{children:[e(c.Button,{ref:M,title:z,size:"small","aria-expanded":T===k?"true":void 0,"aria-label":D,"aria-haspopup":"menu",onClick:S,children:e(g,{unit:B,icons:i})}),e(c.Popper,{placement:"top-start",anchorEl:M.current,isOpen:T===k,onClose:w,children:e(o,{component:"div",sx:{p:2},children:r(a,{spacing:2,direction:"column",children:[I&&e(f,{}),e(h,{})]})})})]}):null})});
@@ -1 +1 @@
1
- import{jsx as r,jsxs as e,Fragment as o}from"react/jsx-runtime";import{memo as a,useCallback as t,useState as s}from"react";import{createPhoenixLayoutElement as m,shareToolbarButtonSchema as i}from"#package/domain";import{useResolveLocalizable as l}from"#package/react-sdk";import{DesktopToolbar as n,PhxIcon as p}from"#package/ui-sdk";import{ShareModal as c}from"./share/ShareModal.js";import{useShareSettings as h}from"./share/use-share.js";let d={id:"sdk.toolbar.share.open.label",message:"Share"};export const ShareToolbarButton=m({schema:i,component:a(a=>{let{icon:m}=a,[i,f]=s(!1),{disabled:k}=h(),u=t(()=>{f(!0)},[]),g=t(()=>{f(!1)},[]),j=l();return k?null:e(o,{children:[r(n.Button,{title:j(d),size:"small",onClick:u,children:r(p,{name:m??"Export"})}),i&&r(c,{onClose:g})]})})});
1
+ import{jsx as e,jsxs as r,Fragment as o}from"react/jsx-runtime";import{memo as a,useCallback as t,useState as m}from"react";import{createPhoenixLayoutElement as s,shareToolbarButtonSchema as l}from"#package/domain";import{useResolveLocalizable as n,useShareLinks as i}from"#package/react-sdk";import{DesktopToolbar as p,PhxIcon as c}from"#package/ui-sdk";import{ShareModal as d}from"./share/ShareModal.js";let h={id:"sdk.toolbar.share.open.label",message:"Share"};export const ShareToolbarButton=s({schema:l,component:a(a=>{let{icon:s}=a,[l,k]=m(!1),{available:f}=i({enabled:!1}),u=t(()=>{k(!0)},[]),g=t(()=>{k(!1)},[]),x=n();return f?r(o,{children:[e(p.Button,{title:x(h),size:"small",onClick:u,children:e(c,{name:s??"Export"})}),l&&e(d,{onClose:g})]}):null})});
@@ -38,7 +38,7 @@ export interface ThemeableDesktopNavigationStepsProps extends OwnerState {
38
38
  * - Renders horizontal step navigation for desktop layouts.
39
39
  * - Hides when no navigation steps are available.
40
40
  * - Integrates with MUI theming for customizable width behavior.
41
- * - Retrieves steps from the navigation steps domain component.
41
+ * - Retrieves the steps and moves between them with `useStepNavigation`.
42
42
  */
43
43
  export declare const DesktopNavigationSteps: () => import("react/jsx-runtime").JSX.Element | null;
44
44
  export {};
@@ -1 +1 @@
1
- import{jsx as t}from"react/jsx-runtime";import{stepClasses as o,stepperClasses as e,styled as i,useThemeProps as r}from"@mui/material";import{useMemo as a}from"react";import{navigationStepsComponent as n}from"#package/domain";import{useFirstRootComponent as l}from"#package/react-sdk";import{StepsNavigation as m}from"./StepsNavigation.js";let p="PhxDesktopStepsNavigation",s=i("div",{name:p,slot:"root",shouldForwardProp:t=>"ownerState"!==t})(({ownerState:t,theme:{spacing:i}})=>({flexGrow:1,marginBlock:i(1),marginInline:"auto",maxInlineSize:t.fullWidth?void 0:856,[`.${e.horizontal}`]:{overflow:"hidden"},[`.${o.horizontal}`]:{"&:first-child":{paddingInlineStart:0},"&:last-child":{paddingInlineEnd:0}}}));export const DesktopNavigationSteps=()=>{let{fullWidth:o=!1}=r({props:{fullWidth:void 0},name:p}),e=l(n),i=a(()=>e?.state.steps??[],[e]);return 0===i.length?null:t(s,{ownerState:{fullWidth:o},children:t(m,{steps:i})})};
1
+ import{jsx as t}from"react/jsx-runtime";import{stepClasses as o,stepperClasses as e,styled as i,useThemeProps as r}from"@mui/material";import{useStepNavigation as n}from"#package/react-sdk";import{StepsNavigation as a}from"./StepsNavigation.js";let l="PhxDesktopStepsNavigation",d=i("div",{name:l,slot:"root",shouldForwardProp:t=>"ownerState"!==t})(({ownerState:t,theme:{spacing:i}})=>({flexGrow:1,marginBlock:i(1),marginInline:"auto",maxInlineSize:t.fullWidth?void 0:856,[`.${e.horizontal}`]:{overflow:"hidden"},[`.${o.horizontal}`]:{"&:first-child":{paddingInlineStart:0},"&:last-child":{paddingInlineEnd:0}}}));export const DesktopNavigationSteps=()=>{let{fullWidth:o=!1}=r({props:{fullWidth:void 0},name:l}),{steps:e,activeIndex:i,goTo:s}=n();return 0===e.length?null:t(d,{ownerState:{fullWidth:o},children:t(a,{steps:e,activeIndex:i,goTo:s})})};
@@ -1,9 +1,3 @@
1
- import type { Localizable } from '@salsita-ai/common/utils';
2
- export interface TopNavigationStep {
3
- readonly navigationStates: readonly string[];
4
- label: Localizable;
5
- }
6
- export interface StepsNavigationComponentProps {
7
- steps: readonly TopNavigationStep[];
8
- }
1
+ import { type UseStepNavigationResult } from '#package/react-sdk';
2
+ export type StepsNavigationComponentProps = Pick<UseStepNavigationResult, 'steps' | 'activeIndex' | 'goTo'>;
9
3
  export declare const StepsNavigation: import("react").MemoExoticComponent<(props: StepsNavigationComponentProps) => import("react/jsx-runtime").JSX.Element>;
@@ -1 +1 @@
1
- import{jsx as t,jsxs as e}from"react/jsx-runtime";import{Trans as a}from"@lingui/react";import{memo as i,useCallback as o}from"react";import{FrontendAnalyticsFactory as s,useActiveNavigationState as n,useAnalyticsService as r,useDomain as p,usePresetEmbeddedState as c,useResolveLocalizable as l}from"#package/react-sdk";import{TopNavigation as d,useResponsive as m}from"#package/ui-sdk";import{useConfiguratorRouting as g,usePresetSelection as u}from"../../../../../configurator-context/index.js";export const StepsNavigation=i(i=>{let{steps:f}=i,k=r(),{navigationSystem:v,storeSystem:x}=p(),h=n(),C=g(),S=l(),{presetCategories:T}=u(),j=c(),N=T.flatMap(t=>t.presets).length>1,b=!j&&N,I=f.findIndex(t=>t.navigationStates.includes(h))+ +!!b,{isTablet:P}=m(),y=o(()=>{k.push(s.GoToProductsClicked()),C.goToIndex()},[k,C]);return e(d.Root,{activeStep:I,nonLinear:!0,compact:P,fullWidth:!0,children:[b&&t(d.Step,{isCompleted:!0,onClick:y,compact:P,children:t(a,{id:"sdk.layout.navigation.steps.first.label",message:"Products"})}),f.map((e,a)=>{let i=b?a<I-1:a<I,o=S(e.label);return t(d.Step,{isCompleted:i,isDisabled:!i,compact:P,onClick:()=>{let t=e.navigationStates[0];t&&(k.push(s.TopNavigationStepClicked(t)),x.stageAndCommit([v.getNavigationUpdate(t)]))},children:o},o)})]})});
1
+ import{jsx as t,jsxs as e}from"react/jsx-runtime";import{Trans as o}from"@lingui/react";import{memo as a,useCallback as i}from"react";import{FrontendAnalyticsFactory as r,useAnalyticsService as s,usePresetEmbeddedState as c}from"#package/react-sdk";import{TopNavigation as p,useResponsive as l}from"#package/ui-sdk";import{useConfiguratorRouting as n,usePresetSelection as m}from"../../../../../configurator-context/index.js";export const StepsNavigation=a(a=>{let{steps:d,activeIndex:u,goTo:f}=a,g=s(),k=n(),{presetCategories:x}=m(),h=c(),C=x.flatMap(t=>t.presets).length>1,b=!h&&C,{isTablet:j}=l(),v=i(()=>{g.push(r.GoToProductsClicked()),k.goToIndex()},[g,k]);return e(p.Root,{activeStep:u+ +!!b,nonLinear:!0,compact:j,fullWidth:!0,children:[b&&t(p.Step,{isCompleted:!0,onClick:v,compact:j,children:t(o,{id:"sdk.layout.navigation.steps.first.label",message:"Products"})}),d.map(e=>{let o="complete"===e.status;return t(p.Step,{isCompleted:o,isDisabled:!o,compact:j,onClick:()=>f(e.index),children:e.label},e.label)})]})});
@@ -25,7 +25,14 @@ export { SetAsRecipeButton } from './SetAsRecipeButton.js';
25
25
  export { LayoutDialog, createLayoutDialog, type CreateLayoutDialog } from './LayoutDialog.js';
26
26
  export { LayoutFooter, createLayoutFooter, type CreateLayoutFooter } from './LayoutFooter.js';
27
27
  export { CanvasLoader, createCanvasLoader, type CreateCanvasLoader } from './CanvasLoader.js';
28
- export { AppLoader, createAppLoader, type CreateAppLoader, type AppLoaderContentProps } from './AppLoader.js';
28
+ export { AppLoader } from './AppLoader.js';
29
+ export {
30
+ /** @deprecated Use `createAppLoader` from `@salsita-ai/sdk/react`. */
31
+ createAppLoader,
32
+ /** @deprecated Use `CreateAppLoader` from `@salsita-ai/sdk/react`. */
33
+ type CreateAppLoader,
34
+ /** @deprecated Use `AppLoaderContentProps` from `@salsita-ai/sdk/react`. */
35
+ type AppLoaderContentProps, } from '#package/react-sdk';
29
36
  export { ToolbarHelp, createToolbarHelp, type CreateToolbarHelp, useToolbarHelpExists } from './ToolbarHelp.js';
30
37
  export { LayoutToolbarDesktop, createLayoutToolbarDesktop, type LayoutToolbarDesktopProps, type CreateLayoutToolbarDesktop, } from './LayoutToolbarDesktop.js';
31
38
  export { LayoutToolbarDesktopFullScreen, createLayoutToolbarDesktopFullScreen, type LayoutToolbarDesktopFullScreenProps, type CreateLayoutToolbarDesktopFullScreen, } from './LayoutToolbarDesktopFullScreen.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{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
+ 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}from"./AppLoader.js";export{createAppLoader}from"#package/react-sdk";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 +1 @@
1
- import{jsx as t}from"react/jsx-runtime";import{useCallback as e,useMemo as i}from"react";import{match as m}from"ts-pattern";import{DimensionUnit as r}from"#package/domain";import{FrontendAnalyticsFactory as a,useAnalyticsService as n,useDimensionConfig as o,useDimensionState as l,useDimensions as s,useLocalizable as u}from"#package/react-sdk";import{ToggleSelector as c}from"#package/ui-sdk";let h=o=>{let{value:l}=o,u=n(),{setGlobalUnit:h}=s(),p=e(()=>{u.push(a.GlobalDimensionsButtonClicked(l)),h(l)},[u,l,h]),f=i(()=>m(l).with(r.mm,()=>"mm").with(r.cm,()=>"cm").with(r.m,()=>"m").with(r.inch,()=>"in").with(r.feet,()=>"ft").exhaustive(),[l]),w=i(()=>m(l).with(r.mm,()=>"millimeter").with(r.cm,()=>"centimeter").with(r.m,()=>"meter").with(r.inch,()=>"inches").with(r.feet,()=>"feet").exhaustive(),[l]);return t(c.Item,{value:l,"aria-label":w,onClick:p,children:f})},p={id:"sdk.toolbar.measurements.units.aria",message:"Measurement unit setup"};export const DimensionUnitSelector=()=>{let{availableDimensions:e}=o(),{unit:i}=l(),m=u(p);return e.length<=1?null:t(c.Root,{"aria-label":m,value:i,exclusive:!0,columnCount:"auto-fit",sx:{maxWidth:500},children:e.map(e=>t(h,{value:e},e))})};
1
+ import{jsx as t}from"react/jsx-runtime";import{useMemo as e}from"react";import{match as i}from"ts-pattern";import{DimensionUnit as m}from"#package/domain";import{useLocalizable as r}from"#package/react-sdk";import{ToggleSelector as a}from"#package/ui-sdk";import{useMeasurements as o}from"../../../toolbar-actions/index.js";let n=r=>{let{value:o,onSelect:n}=r,l=e(()=>i(o).with(m.mm,()=>"mm").with(m.cm,()=>"cm").with(m.m,()=>"m").with(m.inch,()=>"in").with(m.feet,()=>"ft").exhaustive(),[o]),s=e(()=>i(o).with(m.mm,()=>"millimeter").with(m.cm,()=>"centimeter").with(m.m,()=>"meter").with(m.inch,()=>"inches").with(m.feet,()=>"feet").exhaustive(),[o]);return t(a.Item,{value:o,"aria-label":s,onClick:()=>n(o),children:l})},l={id:"sdk.toolbar.measurements.units.aria",message:"Measurement unit setup"};export const DimensionUnitSelector=()=>{let{units:e,unit:i,setUnit:m}=o(),s=r(l);return e.length<=1?null:t(a.Root,{"aria-label":s,value:i,exclusive:!0,columnCount:"auto-fit",sx:{maxWidth:500},children:e.map(e=>t(n,{value:e,onSelect:m},e))})};
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{Trans as i}from"@lingui/react";import{Switch as t}from"@mui/material";import{useObservableEagerState as o}from"observable-hooks";import{useCallback as r}from"react";import{FrontendAnalyticsFactory as a,useAnalyticsService as s,useLocalizable as m}from"#package/react-sdk";import{MobileToolbar as n}from"#package/ui-sdk";import{useConfigurator as c}from"../../../application-runtime/index.js";let p={id:"sdk.toolbar.measurements.input.aria",message:"Switch measurements"};export const MeasurementsIndicatorsSwitch=()=>{let d=s(),{canvasSystem:l}=c(),u=o(l.dimensionIndicatorShown$),g=r(()=>{d.push(a.DimensionIndicatorsToggled()),l.toggleDimensionIndicator()},[d,l]),f=m(p);return e(n.SectionItem,{title:e(i,{id:"sdk.toolbar.measurements.indicators.label",message:"Dimension indicators"}),content:e(t,{inputProps:{"aria-label":f},checked:u,onChange:g})})};
1
+ import{jsx as e}from"react/jsx-runtime";import{Trans as t}from"@lingui/react";import{Switch as r}from"@mui/material";import{useLocalizable as a}from"#package/react-sdk";import{MobileToolbar as i}from"#package/ui-sdk";import{useMeasurements as o}from"../../../toolbar-actions/index.js";let s={id:"sdk.toolbar.measurements.input.aria",message:"Switch measurements"};export const MeasurementsIndicatorsSwitch=()=>{let{indicatorsShown:m,toggleIndicators:n}=o(),c=a(s);return e(i.SectionItem,{title:e(t,{id:"sdk.toolbar.measurements.indicators.label",message:"Dimension indicators"}),content:e(r,{inputProps:{"aria-label":c},checked:m,onChange:n})})};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as i}from"react/jsx-runtime";import{Trans as a}from"@lingui/react";import{Button as r,DialogActions as l,DialogContent as o,DialogTitle as s,FormControlLabel as n,LinearProgress as t,Stack as d,Switch as c,TextField as m}from"@mui/material";import{memo as h,useCallback as p,useState as k}from"react";import{applicationConfigComponent as g}from"#package/domain";import{useFirstRootComponent as b,useResolveLocalizable as u}from"#package/react-sdk";import{Dialog as x,PhxIcon as C}from"#package/ui-sdk";import{useShareData as f,useShareSettings as v}from"./use-share.js";let y=i=>{let{isLinkCopied:l,onCopy:o,disabled:s}=i;return l?e(r,{variant:"muted",color:"success",startIcon:e(C,{name:"Check"}),disabled:s,onClick:o,children:e(a,{id:"sdk.toolbar.share.linkCopied.label",message:"Copied"})}):e(r,{variant:"contained",disabled:s,onClick:o,children:e(a,{id:"sdk.toolbar.share.copyLink.label",message:"Copy link"})})},w={id:"sdk.toolbar.share.loading.label",message:"loading link..."},j=({link:a,onFocus:r})=>i(d,{sx:{display:"grid","& > *":{gridArea:"1 / 1"}},children:[e(m,{value:a??"",placeholder:u()(w),hiddenLabel:!0,InputProps:{readOnly:!0},onFocus:r}),e(t,{sx:{alignSelf:"end",visibility:null==a?"visible":"hidden"}})]});export const ShareModal=h(t=>{let{onClose:m}=t,h=b(g),u=h?.state.shareExpiration,{ownerLinkDisabled:C,readRevisionLinkDisabled:w}=v(),[T,L]=k(w),[S,A]=k(!1),{revisionData:E,ownerData:F}=f({expiration:u,ownerLinkDisabled:C,readRevisionLinkDisabled:w}),I=T?F?.link:E?.link,O=!C&&!w,M=p(async()=>{I&&(await navigator.clipboard.writeText(I),A(!0))},[I]),P=p(e=>{e.currentTarget.select()},[]),R=p(e=>{L(e.currentTarget.checked),A(!1)},[]);return i(x.Root,{sx:{maxWidth:"unset",width:"min(100%, 520px)"},isOpen:!0,onClose:m,children:[e(s,{children:e(a,{id:"sdk.toolbar.share.label",message:"Share configuration"})}),e(o,{children:i(d,{sx:{gap:2},children:[e(j,{link:I,onFocus:P}),O&&e(n,{control:e(c,{value:T,disabled:!I,onChange:R}),label:e(a,{id:"sdk.toolbar.share.allowEdit.label",message:"Allow the recipient to edit configuration"})})]})}),i(l,{children:[e(r,{variant:"text",color:"inherit",onClick:m,children:e(a,{id:"sdk.toolbar.share.close.label",message:"Close"})}),e(y,{isLinkCopied:S,disabled:!I,onCopy:M})]})]})});
1
+ import{jsx as e,jsxs as i}from"react/jsx-runtime";import{Trans as a}from"@lingui/react";import{Button as l,DialogActions as r,DialogContent as o,DialogTitle as n,FormControlLabel as s,LinearProgress as t,Stack as d,Switch as c,TextField as h}from"@mui/material";import{memo as m,useCallback as p,useState as b}from"react";import{useResolveLocalizable as g,useShareLinks as k}from"#package/react-sdk";import{Dialog as u,PhxIcon as x}from"#package/ui-sdk";let C=i=>{let{isLinkCopied:r,onCopy:o,disabled:n}=i;return r?e(l,{variant:"muted",color:"success",startIcon:e(x,{name:"Check"}),disabled:n,onClick:o,children:e(a,{id:"sdk.toolbar.share.linkCopied.label",message:"Copied"})}):e(l,{variant:"contained",disabled:n,onClick:o,children:e(a,{id:"sdk.toolbar.share.copyLink.label",message:"Copy link"})})},v={id:"sdk.toolbar.share.loading.label",message:"loading link..."},f=({link:a,onFocus:l})=>i(d,{sx:{display:"grid","& > *":{gridArea:"1 / 1"}},children:[e(h,{value:a??"",placeholder:g()(v),hiddenLabel:!0,InputProps:{readOnly:!0},onFocus:l}),e(t,{sx:{alignSelf:"end",visibility:null==a?"visible":"hidden"}})]});export const ShareModal=m(t=>{let{onClose:h}=t,{ownerLinkAvailable:m,readLinkAvailable:g,ownerLink:x,readLink:v}=k(),[y,w]=b(!g),[T,j]=b(null),L=(y?x:v)??void 0,S=void 0!==L&&L===T,A=p(async()=>{L&&(await navigator.clipboard.writeText(L),j(L))},[L]),F=p(e=>{e.currentTarget.select()},[]),I=p(e=>{w(e.currentTarget.checked)},[]);return i(u.Root,{sx:{maxWidth:"unset",width:"min(100%, 520px)"},isOpen:!0,onClose:h,children:[e(n,{children:e(a,{id:"sdk.toolbar.share.label",message:"Share configuration"})}),e(o,{children:i(d,{sx:{gap:2},children:[e(f,{link:L,onFocus:F}),m&&g&&e(s,{control:e(c,{value:y,disabled:!L,onChange:I}),label:e(a,{id:"sdk.toolbar.share.allowEdit.label",message:"Allow the recipient to edit configuration"})})]})}),i(r,{children:[e(l,{variant:"text",color:"inherit",onClick:h,children:e(a,{id:"sdk.toolbar.share.close.label",message:"Close"})}),e(C,{isLinkCopied:S,disabled:!L,onCopy:A})]})]})});
@@ -1,11 +1,3 @@
1
- import type { AccessLevel } from '@salsita-ai/contracts/api';
2
- export interface GenerateShareLinkOptions {
3
- access: AccessLevel;
4
- expiration?: number;
5
- }
6
- export declare const useGenerateShareLink: () => (options: GenerateShareLinkOptions) => Promise<{
7
- readonly link: string;
8
- }>;
9
1
  interface UseShareDataParams {
10
2
  /**
11
3
  * Expiration time in hours. When undefined, links do not expire.
@@ -14,6 +6,9 @@ interface UseShareDataParams {
14
6
  ownerLinkDisabled: boolean;
15
7
  readRevisionLinkDisabled: boolean;
16
8
  }
9
+ /**
10
+ * @deprecated Use useShareLinks() instead. This API will be removed in a future version.
11
+ */
17
12
  export declare const useShareData: (params: UseShareDataParams) => {
18
13
  isLoadingOwnerData: boolean;
19
14
  isLoadingRevisionData: boolean;
@@ -24,6 +19,10 @@ export declare const useShareData: (params: UseShareDataParams) => {
24
19
  readonly link: string;
25
20
  }> | undefined;
26
21
  };
22
+ /**
23
+ * @deprecated Use useShareLinks() instead, whose `available`, `ownerLinkAvailable` and `readLinkAvailable` say which
24
+ * links can be shared. This API will be removed in a future version.
25
+ */
27
26
  export declare const useShareSettings: () => {
28
27
  disabled: boolean;
29
28
  ownerLinkDisabled: boolean;
@@ -1 +1 @@
1
- import{useQuery as e}from"@tanstack/react-query";import{useCallback as t}from"react";import{match as r}from"ts-pattern";import{applicationConfigComponent as a}from"#package/domain";import{useAuthorizedClient as s,useConfigurationId as i,useDomain as n,useDomainApplication as o,useFirstRootComponent as d}from"#package/react-sdk";export const useGenerateShareLink=()=>{let e=d(a),n=e?.state.shareStrategy??"deployment-registered",{configurationPersistSystem:c}=o(),l=i(),h=s();return t(async e=>{let t=r(n).with("deployment-registered",()=>void 0).with("current-frontend",()=>{let e=new URL(window.location.href);return e.searchParams.delete("cid"),e.searchParams.delete("ca"),e.toString()}).exhaustive(),a=await c.save();return h.generateShareLink(l,"rr"===e.access?a:void 0,e.expiration,e.access,t)},[n,c,h,l])};export const useShareData=t=>{let{expiration:r,ownerLinkDisabled:a,readRevisionLinkDisabled:s}=t,o=useGenerateShareLink(),{storeSystem:d}=n(),c=i(),l=d.stateSlices.committed.value.state,{data:h,isLoading:m}=e({queryKey:["share-owner-link",c],staleTime:1/0,queryFn:()=>o({access:"o",expiration:r}),enabled:!a}),{data:u,isLoading:p,isFetchedAfterMount:y}=e({queryKey:["share-revision-link",c,l.entities,l.rootEntityId],queryFn:()=>o({access:"rr",expiration:r}),enabled:!s});return{isLoadingOwnerData:m,isLoadingRevisionData:p,ownerData:h,revisionData:y?u:void 0}};export const useShareSettings=()=>{let e=d(a),t=e?.state.shareDisabled??!1,r=t||(e?.state.shareOwnerLinkDisabled??!1),s=t||(e?.state.shareReadRevisionLinkDisabled??!1);return{disabled:r&&s,ownerLinkDisabled:r,readRevisionLinkDisabled:s}};
1
+ import{useQuery as e}from"@tanstack/react-query";import{applicationConfigComponent as a}from"#package/domain";import{useConfigurationId as t,useDomain as r,useFirstRootComponent as s,useGenerateShareLink as i}from"#package/react-sdk";export const useShareData=a=>{let{expiration:s,ownerLinkDisabled:n,readRevisionLinkDisabled:o}=a,d=i(),{storeSystem:c}=r(),l=t(),u=c.stateSlices.committed.value.state,{data:m,isLoading:h}=e({queryKey:["share-owner-link",l],staleTime:1/0,queryFn:()=>d({access:"o",expiration:s}),enabled:!n}),{data:k,isLoading:y,isFetchedAfterMount:p}=e({queryKey:["share-revision-link",l,u.entities,u.rootEntityId],queryFn:()=>d({access:"rr",expiration:s}),enabled:!o});return{isLoadingOwnerData:h,isLoadingRevisionData:y,ownerData:m,revisionData:p?k:void 0}};export const useShareSettings=()=>{let e=s(a),t=e?.state.shareDisabled??!1,r=t||(e?.state.shareOwnerLinkDisabled??!1),i=t||(e?.state.shareReadRevisionLinkDisabled??!1);return{disabled:r&&i,ownerLinkDisabled:r,readRevisionLinkDisabled:i}};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as r,Fragment as t}from"react/jsx-runtime";import{Trans as a}from"@lingui/react";import{Button as i,ButtonGroup as n,CircularProgress as o,ListItemIcon as l,ListItemText as s,Menu as m,MenuItem as d,buttonClasses as c,styled as p,svgIconClasses as h}from"@mui/material";import{useMutation as g}from"@tanstack/react-query";import{useSnackbar as f}from"notistack";import{useCallback as u,useState as z}from"react";import{finalizeActionComponent as k,getComponentSnapshotKey as y}from"#package/domain";import{LocalizableMessage as b,PhoenixHandlerBoundary as C,useComponents as v,useFinalizeViolations as x,useLocalizable as w,useLogger as F,usePhoenixHandler as S,useResolveLocalizable as j}from"#package/react-sdk";import{PhxIcon as O,TooltipWithArrow as T,useResponsive as E}from"#package/ui-sdk";import{CustomFinalizeButton as P}from"./CustomFinalizeButton.js";let $=p(n)({display:"grid",gridTemplateColumns:"minmax(0, 1fr) min-content "}),A=p(i)(({theme:{spacing:e}})=>({[`&.${c.containedSizeSmall}`]:{minInlineSize:0,[`.${h.root}`]:{fontSize:18}},[`&.${c.containedSizeLarge}`]:{paddingInline:e(1)}})),D=r=>e(C,{name:r.handler,children:e(I,{...r})}),I=r=>{let{handler:t,icon:i,title:n,tooltip:o}=r,{handler:l}=S(t),s=F(),{enqueueSnackbar:m}=f(),{mutate:d,isPending:c}=g({mutationFn:l,onError:r=>{s.error("Failed to finalize",{error:r.message}),m({message:e(a,{id:"sdk.messages.finalize.error",message:"Oops, something went wrong"}),variant:"error"})}}),{disabled:p,hints:h}=x(),u=j();return e(P,{hints:h??u(o),icon:i,busy:c,disabled:p,onClick:d,title:n})},L=r=>e(C,{name:r.handler,children:e(M,{...r})}),M=t=>{let{handler:i,icon:n,label:m,title:c,onClose:p}=t,{handler:h}=S(i),{enqueueSnackbar:z}=f(),k=F(),{mutateAsync:y,isPending:C}=g({mutationFn:h,onError:r=>{k.error("Failed to finalize",{error:r.message}),z({message:e(a,{id:"sdk.messages.finalize.error",message:"Oops, something went wrong"}),variant:"error"})}}),{disabled:v,hints:w}=x();return e(T,{title:w,placement:"top",children:e("span",{children:r(d,{disabled:v,onClick:u(async e=>{e.preventDefault(),e.stopPropagation(),await y(),p()},[y,p]),children:[e(l,{children:C?e(o,{size:20}):e(O,{name:n})}),e(s,{primary:e(b,{children:m}),secondary:e(b,{children:c})})]})})})};export const FinalizeActions=()=>{let a=w({id:"sdk.layout.finalize.moreActions",message:"More finalization options"}),i=v({componentTypes:[k]}),[n,o]=z(null),l=!!n,{isDesktop:s}=E(),d={color:"primary",variant:"contained",size:s?"large":"small"},c=u(e=>{o(e.currentTarget)},[]),p=u(()=>{o(null)},[]),h=i.find(e=>"primary"===e.state.variant)??i[0],g=i.filter(e=>e!==h);return h?1===i.length?e(D,{handler:h.state.handler,icon:h.state.icon,title:h.state.label,tooltip:h.state.title},y(h)):r(t,{children:[r($,{...d,children:[e(D,{handler:h.state.handler,icon:h.state.icon,title:h.state.label,tooltip:h.state.title},y(h)),e(A,{...d,"aria-label":a,"aria-haspopup":"menu","aria-expanded":l,onClick:c,children:e(O,{name:"CaretDown"})})]}),e(m,{anchorEl:n,anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"bottom",horizontal:"right"},MenuListProps:{dense:!0},slotProps:{paper:{sx:{mt:-2}}},open:l,onClose:p,children:g.map(r=>e(L,{handler:r.state.handler,icon:r.state.icon,label:r.state.label,title:r.state.title,onClose:p},y(r)))})]}):null};
1
+ import{jsx as e,jsxs as n,Fragment as r}from"react/jsx-runtime";import{Trans as t}from"@lingui/react";import{Button as i,ButtonGroup as a,CircularProgress as o,ListItemIcon as l,ListItemText as s,Menu as c,MenuItem as m,buttonClasses as p,styled as d,svgIconClasses as g}from"@mui/material";import{useSnackbar as u}from"notistack";import{useCallback as h,useContext as f,useRef as y,useState as k}from"react";import{FinalizeActionsContext as z,useFinalizeActions as b,useLocalizable as x}from"#package/react-sdk";import{PhxIcon as C,ResponsiveSidebarFooterButton as P,TooltipWithArrow as v,useResponsive as S}from"#package/ui-sdk";let w=d(a)({display:"grid",gridTemplateColumns:"minmax(0, 1fr) min-content "}),j=d(i)(({theme:{spacing:e}})=>({[`&.${p.containedSizeSmall}`]:{minInlineSize:0,[`.${g.root}`]:{fontSize:18}},[`&.${p.containedSizeLarge}`]:{paddingInline:e(1)}})),D=n=>{let{enqueueSnackbar:r}=u(),i=f(z),{key:a,disabled:o,isPending:l,run:s}=n,c=y(!1);return h(async()=>{if(o||l||c.current)return!1;c.current=!0;try{await s()}finally{c.current=!1}let n=i?.getSnapshot().get(a);return n?.status!=="ready"||!n.action.error||(r({message:e(t,{id:"sdk.messages.finalize.error",message:"Oops, something went wrong"}),variant:"error"}),!1)},[o,r,l,a,s,i])},I=({action:n,hints:r})=>{let t=D(n),i=h(e=>{e.preventDefault(),e.stopPropagation(),t()},[t]);return e(P,{tooltip:r??n.title,busy:n.isPending,disabled:n.disabled,onClick:i,slotProps:{button:{startIcon:e(C,{name:n.icon})}},children:n.label})},O=({action:r,hints:t,onClose:i})=>{let a=D(r),c=h(async e=>{e.preventDefault(),e.stopPropagation(),await a()&&i()},[a,i]);return e(v,{title:t,placement:"top",children:e("span",{children:n(m,{disabled:r.disabled,onClick:c,children:[e(l,{children:r.isPending?e(o,{size:20}):e(C,{name:r.icon})}),e(s,{primary:r.label,secondary:r.title})]})})})};export const FinalizeActions=()=>{let t=x({id:"sdk.layout.finalize.moreActions",message:"More finalization options"}),{actions:i,primary:a,secondary:o,hints:l}=b(),[s,m]=k(null),p=!!s,{isDesktop:d}=S(),g={color:"primary",variant:"contained",size:d?"large":"small"},u=h(e=>{m(e.currentTarget)},[]),f=h(()=>{m(null)},[]);return a?1===i.length?e(I,{action:a,hints:l},a.key):n(r,{children:[n(w,{...g,children:[e(I,{action:a,hints:l},a.key),e(j,{...g,"aria-label":t,"aria-haspopup":"menu","aria-expanded":p,onClick:u,children:e(C,{name:"CaretDown"})})]}),e(c,{anchorEl:s,anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"bottom",horizontal:"right"},MenuListProps:{dense:!0},slotProps:{paper:{sx:{mt:-2}}},open:p,onClose:f,children:o.map(n=>e(O,{action:n,hints:l,onClose:f},n.key))})]}):null};
@@ -1 +1 @@
1
- import{jsx as t}from"react/jsx-runtime";import{Trans as e}from"@lingui/react";import{Button as a}from"@mui/material";import{memo as i,useCallback as o}from"react";import{createPhoenixLayoutElement as r,nextStepButtonSchema as n}from"#package/domain";import{FrontendAnalyticsFactory as m,useAnalyticsService as s,useDomain as l}from"#package/react-sdk";import{useResponsive as c}from"#package/ui-sdk";import{useConfigurator as p}from"../../../../application-runtime/index.js";export const NextStepButton=r({schema:n,component:i(()=>{let i=s(),{layoutSystem:r}=p(),{navigationSystem:n,storeSystem:d}=l(),{isDesktop:g}=c(),u=o(()=>{let t=n.getActiveNavigationState(d.stateSlices.committed.value.state),e=r.getNavigationSteps(d.stateSlices.committed.value.state);i.push(m.NextStepButtonClicked());let a=e.findIndex(e=>e.navigationStates.includes(t)),o=e[a+1];if(!o)return;let s=o.navigationStates[0];s&&d.stageAndCommit([n.getNavigationUpdate(s)])},[i,n,d,r]);return g?t(a,{variant:"contained",color:"primary",size:"large",onClick:u,children:t(e,{id:"sdk.layout.sidebar.nextStep.label",message:"Next step"})}):t(a,{variant:"contained",color:"primary",size:"small",onClick:u,children:t(e,{id:"sdk.layout.sidebar.nextStepShort.label",message:"Next"})})})});
1
+ import{jsx as e}from"react/jsx-runtime";import{Trans as t}from"@lingui/react";import{Button as r}from"@mui/material";import{memo as a,useCallback as o}from"react";import{createPhoenixLayoutElement as i,nextStepButtonSchema as m}from"#package/domain";import{FrontendAnalyticsFactory as n,useAnalyticsService as s,useStepNavigation as p}from"#package/react-sdk";import{useResponsive as c}from"#package/ui-sdk";export const NextStepButton=i({schema:m,component:a(()=>{let a=s(),{canGoNext:i,next:m}=p(),{isDesktop:l}=c(),d=o(()=>{i?m():a.push(n.NextStepButtonClicked())},[a,i,m]);return l?e(r,{variant:"contained",color:"primary",size:"large",onClick:d,children:e(t,{id:"sdk.layout.sidebar.nextStep.label",message:"Next step"})}):e(r,{variant:"contained",color:"primary",size:"small",onClick:d,children:e(t,{id:"sdk.layout.sidebar.nextStepShort.label",message:"Next"})})})});
@@ -1 +1 @@
1
- import{jsx as t}from"react/jsx-runtime";import{IconButton as e,Tooltip as i}from"@mui/material";import{memo as a,useCallback as o}from"react";import{createPhoenixLayoutElement as r,previousStepButtonSchema as n}from"#package/domain";import{FrontendAnalyticsFactory as m,useAnalyticsService as s,useDomain as l,useLocalizable as c}from"#package/react-sdk";import{PhxIcon as p,useResponsive as d}from"#package/ui-sdk";import{useConfigurator as u}from"../../../../application-runtime/index.js";import{useBackToPresetEnabled as g,useConfiguratorRouting as f,useSteps as v}from"../../../../configurator-context/index.js";let S={id:"sdk.layout.sidebar.previousStep.label",message:"Previous step"};export const PreviousStepButton=r({schema:n,component:a(a=>{let{icon:r}=a,n=c(S),k=s(),x=g(),{layoutSystem:h}=u(),j=f(),{navigationSystem:C,storeSystem:b}=l(),{isDesktop:N}=d(),{previousStepDisabled:P}=v();return t(i,{title:n,placement:"top",children:t("span",{style:{alignSelf:"center"},children:t(e,{variant:"muted",color:"default",size:N?"medium":"small",disabled:P,onClick:o(()=>{let t=C.getActiveNavigationState(b.stateSlices.committed.value.state),e=h.getNavigationSteps(b.stateSlices.committed.value.state);k.push(m.PreviousStepButtonClicked());let i=e.findIndex(e=>e.navigationStates.includes(t)),a=e[i-1];if(!a){x&&j.goToIndex();return}let o=a.navigationStates[0];o&&b.stageAndCommit([C.getNavigationUpdate(o)])},[k,C,x,j,b,h]),children:t(p,{name:r??"CaretLeft"})})})})})});
1
+ import{jsx as e}from"react/jsx-runtime";import{IconButton as t,Tooltip as r}from"@mui/material";import{memo as o,useCallback as i}from"react";import{createPhoenixLayoutElement as a,previousStepButtonSchema as m}from"#package/domain";import{FrontendAnalyticsFactory as s,useAnalyticsService as n,useLocalizable as l,useStepNavigation as p}from"#package/react-sdk";import{PhxIcon as c,useResponsive as d}from"#package/ui-sdk";import{useBackToPresetEnabled as u,useConfiguratorRouting as f,useSteps as k}from"../../../../configurator-context/index.js";let g={id:"sdk.layout.sidebar.previousStep.label",message:"Previous step"};export const PreviousStepButton=a({schema:m,component:o(o=>{let{icon:a}=o,m=l(g),x=n(),h=u(),v=f(),{canGoPrevious:S,previous:b}=p(),{isDesktop:j}=d(),{previousStepDisabled:C}=k();return e(r,{title:m,placement:"top",children:e("span",{style:{alignSelf:"center"},children:e(t,{variant:"muted",color:"default",size:j?"medium":"small",disabled:C,onClick:i(()=>{S?b():(x.push(s.PreviousStepButtonClicked()),h&&v.goToIndex())},[x,h,S,b,v]),children:e(c,{name:a??"CaretLeft"})})})})})});
@@ -1,6 +1,4 @@
1
1
  import type { PhoenixLayoutElementRegistration } from '#package/domain';
2
- export declare const createPresetUi: (Element: () => JSX.Element) => PhoenixLayoutElementRegistration;
3
- export type CreatePresetUi = (Element: () => JSX.Element) => PhoenixLayoutElementRegistration;
4
2
  export type CreatePresetPageAction = (Element: () => JSX.Element) => PhoenixLayoutElementRegistration;
5
3
  export declare const createPresetPageAction: (Element: () => JSX.Element) => PhoenixLayoutElementRegistration;
6
4
  export declare const createPresetDeviceNotSupported: (Element: () => JSX.Element) => PhoenixLayoutElementRegistration;
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{createCustomPhoenixLayoutElement as t}from"#package/domain";import{PhoenixLayoutElement as r}from"#package/react-sdk";import{PresetDeviceNotSupportedName as o,PresetPageActionName as s}from"../../preset-screen-elements/index.js";let c="PresetUi";export const createPresetUi=e=>t(c,e);export const createPresetPageAction=e=>t(s,e);export const createPresetDeviceNotSupported=e=>t(o,e);export const PresetUi=()=>e(r,{name:c,elementProps:{}});
1
+ import{jsx as e}from"react/jsx-runtime";import{createCustomPhoenixLayoutElement as t}from"#package/domain";import{PhoenixLayoutElement as r,PresetUiName as o}from"#package/react-sdk";import{PresetDeviceNotSupportedName as s,PresetPageActionName as m}from"../../preset-screen-elements/index.js";export const createPresetPageAction=e=>t(m,e);export const createPresetDeviceNotSupported=e=>t(s,e);export const PresetUi=()=>e(r,{name:o,elementProps:{}});
@@ -3,4 +3,9 @@ export { PresetBackButton } from './PresetBackButton.js';
3
3
  export { PresetPreviewLayout, type PresetPreviewLayoutProps } from './PresetPreviewLayout.js';
4
4
  export { PresetSnackbarsRoot } from './PresetSnackbarsRoot.js';
5
5
  export { ClosePresetScreenButton as ClosePresetPreviewButton } from './ClosePresetScreenButton.js';
6
- export { PresetUi, createPresetUi, type CreatePresetUi, createPresetPageAction, type CreatePresetPageAction, createPresetDeviceNotSupported, type CreatePresetDeviceNotSupported, } from './PresetUi.js';
6
+ export { PresetUi, createPresetPageAction, type CreatePresetPageAction, createPresetDeviceNotSupported, type CreatePresetDeviceNotSupported, } from './PresetUi.js';
7
+ export {
8
+ /** @deprecated Use `createPresetUi` from `@salsita-ai/sdk/react`. */
9
+ createPresetUi,
10
+ /** @deprecated Use `CreatePresetUi` from `@salsita-ai/sdk/react`. */
11
+ type CreatePresetUi, } from '#package/react-sdk';
@@ -1 +1 @@
1
- export{CategoryPresetUi}from"./CategoryPresetUi.js";export{PresetBackButton}from"./PresetBackButton.js";export{PresetPreviewLayout}from"./PresetPreviewLayout.js";export{PresetSnackbarsRoot}from"./PresetSnackbarsRoot.js";export{ClosePresetScreenButton as ClosePresetPreviewButton}from"./ClosePresetScreenButton.js";export{PresetUi,createPresetUi,createPresetPageAction,createPresetDeviceNotSupported}from"./PresetUi.js";
1
+ export{CategoryPresetUi}from"./CategoryPresetUi.js";export{PresetBackButton}from"./PresetBackButton.js";export{PresetPreviewLayout}from"./PresetPreviewLayout.js";export{PresetSnackbarsRoot}from"./PresetSnackbarsRoot.js";export{ClosePresetScreenButton as ClosePresetPreviewButton}from"./ClosePresetScreenButton.js";export{PresetUi,createPresetPageAction,createPresetDeviceNotSupported}from"./PresetUi.js";export{createPresetUi}from"#package/react-sdk";
@@ -1 +1 @@
1
- import{jsx as r}from"react/jsx-runtime";import{Trans as e}from"@lingui/react";import{Button as s}from"@mui/material";import{useSnackbar as i}from"notistack";import{useEffect as t}from"react";import{useApplicationRuntime as o,useApplicationRuntimeSelector as a,useConfiguratorMessages as n}from"#package/react-sdk";let m="phx-configuration-persist-system-failure";export const SaveMessageSnackbars=()=>{let c=a(o().selectors.domainContext.configurator.getInitializationState).isViewMode,{enqueueSnackbar:d,closeSnackbar:p}=i();return t(()=>{c&&p(m)},[c,p]),n(i=>{c||("saveError"===i.kind&&d(r(e,{id:"sdk.persist.system.error.message",message:"An error occured when trying to update a configuration"}),{variant:"error",key:m,persist:!0,preventDuplicate:!0,action:i=>r(s,{color:"inherit",size:"small",onClick:()=>{p(i)},children:r(e,{id:"sdk.persist.system.error.dismiss",message:"Dismiss"})})}),"saveRecovery"===i.kind&&(p(m),d(r(e,{id:"sdk.persist.system.error.recovered",message:"Configuration updated"}),{variant:"info"})))}),null};
1
+ import{jsx as r}from"react/jsx-runtime";import{Trans as e}from"@lingui/react";import{Button as s}from"@mui/material";import{useSnackbar as i}from"notistack";import{useEffect as t}from"react";import{useApplicationRuntime as o,useApplicationRuntimeSelector as a,useConfiguratorMessages as n}from"#package/react-sdk";let m="phx-configuration-persist-system-failure";export const SaveMessageSnackbars=()=>{let c=a(o().selectors.domainContext.configurator.getIsViewMode),{enqueueSnackbar:d,closeSnackbar:p}=i();return t(()=>{c&&p(m)},[c,p]),n(i=>{c||("saveError"===i.kind&&d(r(e,{id:"sdk.persist.system.error.message",message:"An error occured when trying to update a configuration"}),{variant:"error",key:m,persist:!0,preventDuplicate:!0,action:i=>r(s,{color:"inherit",size:"small",onClick:()=>{p(i)},children:r(e,{id:"sdk.persist.system.error.dismiss",message:"Dismiss"})})}),"saveRecovery"===i.kind&&(p(m),d(r(e,{id:"sdk.persist.system.error.recovered",message:"Configuration updated"}),{variant:"info"})))}),null};
@@ -69,6 +69,8 @@ components:
69
69
 
70
70
  The toolMenuFab is scene HTML rendered at the entity's position in the 3D scene. It supports positioning properties (`offsetX`, `offsetY`, `offsetZ`) and appearance properties like opacity and visibility.
71
71
 
72
+ The FAB and its menu are the entity element `ToolMenuFab`. A project replaces them by registering its own with `phx.frontend.createToolMenuFab`, which receives the `options` and `onSelectTool(toolState)`. See [Configurator Interface → In-Scene Controls](?path=/docs/phoenix-configurator-interface--docs#in-scene-controls).
73
+
72
74
  ### Step 3: Add exitToolModeFab component
73
75
 
74
76
  The `exitToolModeFab` component renders a button in the call to action layout slot, providing a clear way to exit the current tool mode. This appears in the UI chrome, not in the scene:
@@ -131,6 +131,10 @@ components:
131
131
  - non-existent
132
132
  ```
133
133
 
134
+ ### Your own FABs
135
+
136
+ The FABs are the entity elements `DeleteEntityFab` and `AddEntityFab`. A project replaces their look by registering its own with `phx.frontend.createDeleteEntityFab` or `phx.frontend.createAddEntityFab`; the spec's settings and positions above still apply. The delete FAB's replacement gets `onDelete`, `disabled` and `disabledHint`; the add FAB's reads its recipes with `phx.frontend.useGroupedRecipeOptions`. See [Configurator Interface → In-Scene Controls](?path=/docs/phoenix-configurator-interface--docs#in-scene-controls).
137
+
134
138
  ## Example
135
139
 
136
140
  Here you can see the live example!