@salsita-ai/sdk 0.50.0-develop.24077d65e6 → 0.50.0-develop.257ef311fd

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 (542) hide show
  1. package/README.md +19 -14
  2. package/dist/admin/default-admin-elements.d.ts +9 -0
  3. package/dist/admin/default-admin-elements.js +1 -0
  4. package/dist/admin/default-elements/built-in-entity-element.d.ts +10 -0
  5. package/dist/admin/default-elements/built-in-entity-element.js +1 -0
  6. package/dist/admin/default-elements/built-in-layout-element.d.ts +10 -0
  7. package/dist/admin/default-elements/built-in-layout-element.js +1 -0
  8. package/dist/admin/default-elements/index.d.ts +2 -0
  9. package/dist/admin/default-elements/index.js +1 -0
  10. package/dist/admin/index.d.ts +1 -0
  11. package/dist/admin/index.js +1 -1
  12. package/dist/application-spec/caching/content-diff.js +1 -1
  13. package/dist/application-spec/core/application-file.d.ts +0 -2
  14. package/dist/application-spec/core/application-file.js +1 -1
  15. package/dist/application-spec/errors/diagnostic-codes.d.ts +5 -0
  16. package/dist/application-spec/errors/diagnostic-codes.js +1 -1
  17. package/dist/application-spec/errors/diagnostic-messages.d.ts +5 -0
  18. package/dist/application-spec/errors/diagnostic-messages.js +1 -1
  19. package/dist/application-spec/generate-application/code/common/code-imports.js +1 -1
  20. package/dist/application-spec/generate-application/code/common/env-reader.js +2 -2
  21. package/dist/application-spec/generate-application/code/common/index.d.ts +1 -0
  22. package/dist/application-spec/generate-application/code/common/index.js +1 -1
  23. package/dist/application-spec/generate-application/code/common/single-quoted-string.d.ts +6 -0
  24. package/dist/application-spec/generate-application/code/common/single-quoted-string.js +1 -0
  25. package/dist/application-spec/generate-application/code/domain-runtime-files.js +1 -1
  26. package/dist/application-spec/generate-application/code/generate-application-code.d.ts +3 -2
  27. package/dist/application-spec/generate-application/code/generate-application-code.js +1 -1
  28. package/dist/application-spec/generate-application/code/project-scaffolding.d.ts +15 -14
  29. package/dist/application-spec/generate-application/code/project-scaffolding.js +2 -2
  30. package/dist/application-spec/generate-application/code/standalone-app-files.d.ts +2 -2
  31. package/dist/application-spec/generate-application/code/standalone-app-files.js +1 -1
  32. package/dist/application-spec/generate-application/code/story-files.js +1 -1
  33. package/dist/application-spec/generate-application/code/templates/admin-config.js +3 -0
  34. package/dist/application-spec/generate-application/code/templates/common/format-property-key.d.ts +7 -0
  35. package/dist/application-spec/generate-application/code/templates/common/format-property-key.js +1 -0
  36. package/dist/application-spec/generate-application/code/templates/common/schema-to-type-string.js +3 -3
  37. package/dist/application-spec/generate-application/code/templates/configurator-config.js +6 -4
  38. package/dist/application-spec/generate-application/code/templates/domain-spec/factory-types/domain-factory-types.d.ts +35 -0
  39. package/dist/application-spec/generate-application/code/templates/domain-spec/factory-types/domain-factory-types.js +5 -0
  40. package/dist/application-spec/generate-application/code/templates/domain-spec/factory-types/index.d.ts +1 -0
  41. package/dist/application-spec/generate-application/code/templates/domain-spec/factory-types/index.js +1 -0
  42. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-component-optics.d.ts +1 -1
  43. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-component-optics.js +6 -6
  44. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-domain-block.js +59 -63
  45. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-invariants.d.ts +8 -0
  46. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-invariants.js +1 -1
  47. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-presets.js +1 -1
  48. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.js +13 -13
  49. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-states.d.ts +1 -1
  50. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-states.js +2 -2
  51. package/dist/application-spec/generate-application/code/templates/domain-spec/index.d.ts +2 -1
  52. package/dist/application-spec/generate-application/code/templates/domain-spec/index.js +1 -1
  53. package/dist/application-spec/generate-application/code/templates/eslint-config.d.ts +5 -0
  54. package/dist/application-spec/generate-application/code/templates/eslint-config.js +4 -5
  55. package/dist/application-spec/generate-application/code/templates/frontend-config.js +3 -5
  56. package/dist/application-spec/generate-application/code/templates/gitignore.js +0 -3
  57. package/dist/application-spec/generate-application/code/templates/global-definition/generate-phx-types.d.ts +43 -0
  58. package/dist/application-spec/generate-application/code/templates/global-definition/generate-phx-types.js +31 -0
  59. package/dist/application-spec/generate-application/code/templates/global-definition/index.d.ts +1 -0
  60. package/dist/application-spec/generate-application/code/templates/global-definition/index.js +1 -1
  61. package/dist/application-spec/generate-application/code/templates/globals.js +24 -44
  62. package/dist/application-spec/generate-application/code/templates/index.d.ts +3 -3
  63. package/dist/application-spec/generate-application/code/templates/index.js +1 -1
  64. package/dist/application-spec/generate-application/code/templates/lingui-rc.d.ts +5 -0
  65. package/dist/application-spec/generate-application/code/templates/lingui-rc.js +4 -4
  66. package/dist/application-spec/generate-application/code/templates/prettier-config.d.ts +5 -0
  67. package/dist/application-spec/generate-application/code/templates/prettier-config.js +4 -5
  68. package/dist/application-spec/generate-application/code/templates/root-tsconfig.d.ts +6 -0
  69. package/dist/application-spec/generate-application/code/templates/root-tsconfig.js +2 -0
  70. package/dist/application-spec/generate-application/code/templates/skills/phoenix-cli-skill.js +1 -1
  71. package/dist/application-spec/generate-application/code/templates/skills/phoenix-create-configurator-skill.js +1 -1
  72. package/dist/application-spec/generate-application/code/templates/skills/phoenix-feedback-skill.js +5 -5
  73. package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.js +3 -3
  74. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill.js +1 -1
  75. package/dist/application-spec/generate-application/code/templates/skills/phoenix-variants-skill.js +2 -2
  76. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +24 -7
  77. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +2 -2
  78. package/dist/application-spec/generate-application/code/templates/spec-code/collect-spec-code.d.ts +58 -0
  79. package/dist/application-spec/generate-application/code/templates/spec-code/collect-spec-code.js +1 -0
  80. package/dist/application-spec/generate-application/code/templates/spec-code/index.d.ts +2 -0
  81. package/dist/application-spec/generate-application/code/templates/spec-code/index.js +1 -0
  82. package/dist/application-spec/generate-application/code/templates/spec-code/spec-code.d.ts +18 -0
  83. package/dist/application-spec/generate-application/code/templates/spec-code/spec-code.js +41 -0
  84. package/dist/application-spec/generate-application/code/templates/spec-messages/index.d.ts +1 -0
  85. package/dist/application-spec/generate-application/code/templates/spec-messages/index.js +1 -0
  86. package/dist/application-spec/generate-application/code/templates/spec-messages/spec-messages.d.ts +20 -0
  87. package/dist/application-spec/generate-application/code/templates/spec-messages/spec-messages.js +6 -0
  88. package/dist/application-spec/generate-application/code/templates/story/phx-module.d.ts +8 -2
  89. package/dist/application-spec/generate-application/code/templates/story/phx-module.js +15 -3
  90. package/dist/application-spec/generate-application/code/templates/story/wrapper.d.ts +3 -0
  91. package/dist/application-spec/generate-application/code/templates/story/wrapper.js +2 -1
  92. package/dist/application-spec/generate-application/code/templates/tsconfig.d.ts +5 -0
  93. package/dist/application-spec/generate-application/code/templates/tsconfig.js +1 -1
  94. package/dist/application-spec/generate-application/code/templates/webhook-index.d.ts +6 -1
  95. package/dist/application-spec/generate-application/code/templates/webhook-index.js +10 -1
  96. package/dist/application-spec/generate-application/code/templates/webhooks-config.js +2 -3
  97. package/dist/application-spec/generate-application/index.d.ts +2 -0
  98. package/dist/application-spec/generate-application/index.js +1 -1
  99. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-model-runtime.d.ts +6 -4
  100. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-model-runtime.js +1 -1
  101. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.d.ts +8 -3
  102. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.js +1 -1
  103. package/dist/application-spec/generate-application/runtime/admin-runtime/states-runtime.d.ts +2 -2
  104. package/dist/application-spec/generate-application/runtime/application-runtime.d.ts +19 -5
  105. package/dist/application-spec/generate-application/runtime/application-runtime.js +1 -1
  106. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-model-runtime.d.ts +6 -4
  107. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-model-runtime.js +1 -1
  108. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.d.ts +7 -2
  109. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.js +1 -1
  110. package/dist/application-spec/generate-application/runtime/configurator-runtime/states-runtime.d.ts +2 -2
  111. package/dist/application-spec/generate-application/runtime/factory-data/factory-data-runtime.d.ts +43 -0
  112. package/dist/application-spec/generate-application/runtime/factory-data/factory-data-runtime.js +1 -0
  113. package/dist/application-spec/generate-application/runtime/factory-data/index.d.ts +3 -0
  114. package/dist/application-spec/generate-application/runtime/factory-data/index.js +1 -0
  115. package/dist/application-spec/generate-application/runtime/factory-data/recipe-defaults.d.ts +13 -0
  116. package/dist/application-spec/generate-application/runtime/factory-data/recipe-defaults.js +1 -0
  117. package/dist/application-spec/generate-application/runtime/factory-data/static-violations.d.ts +16 -0
  118. package/dist/application-spec/generate-application/runtime/factory-data/static-violations.js +1 -0
  119. package/dist/application-spec/generate-application/runtime/migrations/index.d.ts +1 -0
  120. package/dist/application-spec/generate-application/runtime/migrations/index.js +1 -0
  121. package/dist/application-spec/generate-application/runtime/migrations/migration-runtime.d.ts +53 -0
  122. package/dist/application-spec/generate-application/runtime/migrations/migration-runtime.js +1 -0
  123. package/dist/application-spec/generate-application/runtime/sections/assistant-runtime.d.ts +2 -2
  124. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.d.ts +2 -1
  125. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.js +1 -1
  126. package/dist/application-spec/generate-application/runtime/sections/build-user-bound-optic.d.ts +2 -1
  127. package/dist/application-spec/generate-application/runtime/sections/build-user-bound-optic.js +1 -1
  128. package/dist/application-spec/generate-application/runtime/sections/component-optic.d.ts +3 -0
  129. package/dist/application-spec/generate-application/runtime/sections/component-optic.js +1 -1
  130. package/dist/application-spec/generate-application/runtime/sections/data-runtime.d.ts +4 -4
  131. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.d.ts +7 -4
  132. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.js +1 -1
  133. package/dist/application-spec/generate-application/runtime/sections/generate-memo-eval-plan-runtime.d.ts +9 -5
  134. package/dist/application-spec/generate-application/runtime/sections/generate-memo-eval-plan-runtime.js +1 -1
  135. package/dist/application-spec/generate-application/runtime/sections/reflection-constants-runtime.d.ts +3 -1
  136. package/dist/application-spec/generate-application/runtime/sections/reflection-constants-runtime.js +1 -1
  137. package/dist/application-spec/generate-application/runtime/sections/theme-runtime.d.ts +2 -2
  138. package/dist/application-spec/generate-application/runtime/sections/transformers-runtime.d.ts +3 -3
  139. package/dist/application-spec/generate-application/runtime/spec-code/index.d.ts +2 -0
  140. package/dist/application-spec/generate-application/runtime/spec-code/index.js +1 -0
  141. package/dist/application-spec/generate-application/runtime/spec-code/resolve-spec-code.d.ts +18 -0
  142. package/dist/application-spec/generate-application/runtime/spec-code/resolve-spec-code.js +1 -0
  143. package/dist/application-spec/generate-application/runtime/spec-code/spec-code-module.d.ts +17 -0
  144. package/dist/application-spec/generate-application/runtime/spec-code/spec-code-module.js +1 -0
  145. package/dist/application-spec/generate-application/runtime-spec/decode-runtime-spec.d.ts +9 -0
  146. package/dist/application-spec/generate-application/runtime-spec/decode-runtime-spec.js +1 -0
  147. package/dist/application-spec/generate-application/runtime-spec/encode-runtime-spec.d.ts +8 -0
  148. package/dist/application-spec/generate-application/runtime-spec/encode-runtime-spec.js +1 -0
  149. package/dist/application-spec/generate-application/runtime-spec/encoded-runtime-spec.d.ts +27 -0
  150. package/dist/application-spec/generate-application/runtime-spec/encoded-runtime-spec.js +1 -0
  151. package/dist/application-spec/generate-application/runtime-spec/index.d.ts +5 -0
  152. package/dist/application-spec/generate-application/runtime-spec/index.js +1 -0
  153. package/dist/application-spec/generate-application/runtime-spec/runtime-spec.d.ts +68 -0
  154. package/dist/application-spec/generate-application/runtime-spec/runtime-spec.js +1 -0
  155. package/dist/application-spec/generate-application/runtime-spec/spec-code-id.d.ts +40 -0
  156. package/dist/application-spec/generate-application/runtime-spec/spec-code-id.js +1 -0
  157. package/dist/application-spec/parse-application-files/categorize/categorize-files.d.ts +34 -0
  158. package/dist/application-spec/parse-application-files/categorize/categorize-files.js +1 -1
  159. package/dist/application-spec/parse-application-files/categorize/earlier-generated-editor-configs.d.ts +16 -0
  160. package/dist/application-spec/parse-application-files/categorize/earlier-generated-editor-configs.js +9 -0
  161. package/dist/application-spec/parse-application-files/categorize/earlier-generated-tsconfig.d.ts +9 -0
  162. package/dist/application-spec/parse-application-files/categorize/earlier-generated-tsconfig.js +1 -0
  163. package/dist/application-spec/parse-application-files/raw-spec/parse-yaml-spec-file.js +1 -1
  164. package/dist/application-spec/parse-application-files/spec/application/admin-spec/admin-spec.js +1 -1
  165. package/dist/application-spec/parse-application-files/spec/application/configurator-spec/configurator-spec.js +1 -1
  166. package/dist/application-spec/parse-application-files/spec/common/index.d.ts +1 -0
  167. package/dist/application-spec/parse-application-files/spec/common/index.js +1 -1
  168. package/dist/application-spec/parse-application-files/spec/common/value-type/format-value-type.d.ts +3 -0
  169. package/dist/application-spec/parse-application-files/spec/common/value-type/format-value-type.js +1 -0
  170. package/dist/application-spec/parse-application-files/spec/common/value-type/index.d.ts +5 -0
  171. package/dist/application-spec/parse-application-files/spec/common/value-type/index.js +1 -0
  172. package/dist/application-spec/parse-application-files/spec/common/value-type/intersect-value-types.d.ts +6 -0
  173. package/dist/application-spec/parse-application-files/spec/common/value-type/intersect-value-types.js +1 -0
  174. package/dist/application-spec/parse-application-files/spec/common/value-type/is-assignable-value-type.d.ts +8 -0
  175. package/dist/application-spec/parse-application-files/spec/common/value-type/is-assignable-value-type.js +1 -0
  176. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type-at.d.ts +10 -0
  177. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type-at.js +1 -0
  178. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type.d.ts +98 -0
  179. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type.js +1 -0
  180. package/dist/application-spec/parse-application-files/spec/components/bindings/component-path.d.ts +13 -0
  181. package/dist/application-spec/parse-application-files/spec/components/bindings/component-path.js +1 -0
  182. package/dist/application-spec/parse-application-files/spec/components/bindings/index.d.ts +2 -0
  183. package/dist/application-spec/parse-application-files/spec/components/bindings/index.js +1 -1
  184. package/dist/application-spec/parse-application-files/spec/components/bindings/read-binding-type.d.ts +24 -0
  185. package/dist/application-spec/parse-application-files/spec/components/bindings/read-binding-type.js +1 -0
  186. package/dist/application-spec/parse-application-files/spec/components/component-state-type.d.ts +8 -0
  187. package/dist/application-spec/parse-application-files/spec/components/component-state-type.js +1 -0
  188. package/dist/application-spec/parse-application-files/spec/components/filter-criterion-types.d.ts +13 -0
  189. package/dist/application-spec/parse-application-files/spec/components/filter-criterion-types.js +1 -0
  190. package/dist/application-spec/parse-application-files/spec/components/static-entity-id.d.ts +14 -0
  191. package/dist/application-spec/parse-application-files/spec/components/static-entity-id.js +1 -0
  192. package/dist/application-spec/parse-application-files/spec/components/user-component-entry.d.ts +6 -0
  193. package/dist/application-spec/parse-application-files/spec/components/user-component-entry.js +1 -1
  194. package/dist/application-spec/parse-application-files/spec/components/user-components.d.ts +7 -4
  195. package/dist/application-spec/parse-application-files/spec/components/user-components.js +1 -1
  196. package/dist/application-spec/parse-application-files/spec/expressions/expression-read-types.d.ts +24 -0
  197. package/dist/application-spec/parse-application-files/spec/expressions/expression-read-types.js +1 -0
  198. package/dist/application-spec/parse-application-files/spec/expressions/expression-read.d.ts +13 -0
  199. package/dist/application-spec/parse-application-files/spec/expressions/expression-read.js +1 -0
  200. package/dist/application-spec/parse-application-files/spec/expressions/expression-value-type.d.ts +9 -0
  201. package/dist/application-spec/parse-application-files/spec/expressions/expression-value-type.js +1 -0
  202. package/dist/application-spec/parse-application-files/spec/expressions/expressions.d.ts +6 -2
  203. package/dist/application-spec/parse-application-files/spec/expressions/expressions.js +1 -1
  204. package/dist/application-spec/parse-application-files/spec/expressions/user-expressions.d.ts +3 -1
  205. package/dist/application-spec/parse-application-files/spec/expressions/user-expressions.js +1 -1
  206. package/dist/application-spec/parse-application-files/spec/invariants/invariants.d.ts +2 -2
  207. package/dist/application-spec/parse-application-files/spec/invariants/invariants.js +1 -1
  208. package/dist/application-spec/parse-application-files/spec/model/index.d.ts +1 -0
  209. package/dist/application-spec/parse-application-files/spec/model/index.js +1 -1
  210. package/dist/application-spec/parse-application-files/spec/model/model-type-resolution.d.ts +10 -0
  211. package/dist/application-spec/parse-application-files/spec/model/model-type-resolution.js +1 -0
  212. package/dist/client/phoenix-api.d.ts +367 -0
  213. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +36 -1
  214. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  215. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.d.ts +7 -1
  216. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.js +1 -1
  217. package/dist/configurator/application-runtime/extensions/systems/graphql-system/close-unclosed-braces.d.ts +12 -0
  218. package/dist/configurator/application-runtime/extensions/systems/graphql-system/close-unclosed-braces.js +1 -0
  219. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +7 -1
  220. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  221. package/dist/configurator/common/configurator-interface.d.ts +21 -1
  222. package/dist/configurator/common/configurator-interface.js +1 -1
  223. package/dist/configurator/common/index.d.ts +3 -1
  224. package/dist/configurator/common/index.js +1 -1
  225. package/dist/configurator/common/use-finalize-action.d.ts +31 -0
  226. package/dist/configurator/common/use-finalize-action.js +1 -0
  227. package/dist/configurator/common/use-reset-camera.d.ts +6 -0
  228. package/dist/configurator/common/use-reset-camera.js +1 -0
  229. package/dist/configurator/configuration-not-found-page/ConfigurationNotFoundPageElement.d.ts +12 -0
  230. package/dist/configurator/configuration-not-found-page/ConfigurationNotFoundPageElement.js +1 -0
  231. package/dist/configurator/configuration-not-found-page/index.d.ts +1 -0
  232. package/dist/configurator/configuration-not-found-page/index.js +1 -0
  233. package/dist/configurator/configurator-context/PresetSelectionProvider.js +1 -1
  234. package/dist/configurator/pages/ConfiguratorNotFoundPage.js +1 -1
  235. package/dist/configurator/pages/DefaultConfiguratorLayout.d.ts +3 -2
  236. package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
  237. package/dist/configurator/pages/RootPage.js +1 -1
  238. package/dist/configurator/pages/configurator-layout-name.d.ts +2 -0
  239. package/dist/configurator/pages/configurator-layout-name.js +1 -0
  240. package/dist/configurator/pages/default-configurator-elements.d.ts +9 -0
  241. package/dist/configurator/pages/default-configurator-elements.js +1 -0
  242. package/dist/configurator/pages/default-elements/built-in-entity-element.d.ts +10 -0
  243. package/dist/configurator/pages/default-elements/built-in-entity-element.js +1 -0
  244. package/dist/configurator/pages/default-elements/built-in-layout-element.d.ts +10 -0
  245. package/dist/configurator/pages/default-elements/built-in-layout-element.js +1 -0
  246. package/dist/configurator/pages/default-elements/domain-control-elements.d.ts +6 -0
  247. package/dist/configurator/pages/default-elements/domain-control-elements.js +1 -0
  248. package/dist/configurator/pages/default-elements/index.d.ts +4 -0
  249. package/dist/configurator/pages/default-elements/index.js +1 -0
  250. package/dist/configurator/pages/default-elements/recipe-panel-elements.d.ts +3 -0
  251. package/dist/configurator/pages/default-elements/recipe-panel-elements.js +1 -0
  252. package/dist/configurator/pages/default-elements/sidebar-footer-elements.d.ts +7 -0
  253. package/dist/configurator/pages/default-elements/sidebar-footer-elements.js +1 -0
  254. package/dist/configurator/pages/default-elements/toolbar-elements.d.ts +7 -0
  255. package/dist/configurator/pages/default-elements/toolbar-elements.js +1 -0
  256. package/dist/configurator/pages/index.d.ts +1 -0
  257. package/dist/configurator/pages/index.js +1 -1
  258. package/dist/configurator/scene/scene-controls/DeleteEntityFab.js +1 -1
  259. package/dist/configurator/scene/scene-controls/SelectionHotspot.js +1 -1
  260. package/dist/configurator/ui/assistant/AssistantChips.d.ts +8 -2
  261. package/dist/configurator/ui/assistant/AssistantChips.js +1 -1
  262. package/dist/configurator/ui/assistant/AssistantMarkdown.d.ts +7 -2
  263. package/dist/configurator/ui/assistant/AssistantMarkdown.js +1 -1
  264. package/dist/configurator/ui/assistant/AssistantPanel.js +1 -1
  265. package/dist/configurator/ui/assistant/AssistantThread.js +1 -1
  266. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.d.ts +1 -1
  267. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.js +1 -1
  268. package/dist/configurator/ui/assistant/entity-link/entity-link-state.d.ts +1 -1
  269. package/dist/configurator/ui/assistant/entity-link/index.d.ts +0 -1
  270. package/dist/configurator/ui/assistant/entity-link/index.js +1 -1
  271. package/dist/configurator/ui/assistant/form/AssistantForm.d.ts +19 -0
  272. package/dist/configurator/ui/assistant/form/AssistantForm.js +1 -0
  273. package/dist/configurator/ui/assistant/form/built-in-form-registry.d.ts +10 -0
  274. package/dist/configurator/ui/assistant/form/built-in-form-registry.js +1 -0
  275. package/dist/configurator/ui/assistant/form/compose-answer.d.ts +11 -0
  276. package/dist/configurator/ui/assistant/form/compose-answer.js +1 -0
  277. package/dist/configurator/ui/assistant/form/describe-build-errors.d.ts +6 -0
  278. package/dist/configurator/ui/assistant/form/describe-build-errors.js +1 -0
  279. package/dist/configurator/ui/assistant/form/form-element-definition.d.ts +14 -0
  280. package/dist/configurator/ui/assistant/form/form-element-definition.js +1 -0
  281. package/dist/configurator/ui/assistant/form/form-model.d.ts +38 -0
  282. package/dist/configurator/ui/assistant/form/form-model.js +1 -0
  283. package/dist/configurator/ui/assistant/form/form-registry.d.ts +31 -0
  284. package/dist/configurator/ui/assistant/form/form-registry.js +8 -0
  285. package/dist/configurator/ui/assistant/form/form-state.d.ts +4 -0
  286. package/dist/configurator/ui/assistant/form/form-state.js +1 -0
  287. package/dist/configurator/ui/assistant/form/index.d.ts +2 -0
  288. package/dist/configurator/ui/assistant/form/index.js +1 -0
  289. package/dist/configurator/ui/assistant/form/parse-form-block.d.ts +9 -0
  290. package/dist/configurator/ui/assistant/form/parse-form-block.js +1 -0
  291. package/dist/configurator/ui/assistant/form/read-form-attributes.d.ts +13 -0
  292. package/dist/configurator/ui/assistant/form/read-form-attributes.js +1 -0
  293. package/dist/configurator/ui/assistant/form-elements/FormGroup.d.ts +3 -0
  294. package/dist/configurator/ui/assistant/form-elements/FormGroup.js +1 -0
  295. package/dist/configurator/ui/assistant/form-elements/FormOptions.d.ts +3 -0
  296. package/dist/configurator/ui/assistant/form-elements/FormOptions.js +1 -0
  297. package/dist/configurator/ui/assistant/form-elements/FormReply.d.ts +3 -0
  298. package/dist/configurator/ui/assistant/form-elements/FormReply.js +1 -0
  299. package/dist/configurator/ui/assistant/form-elements/FormText.d.ts +3 -0
  300. package/dist/configurator/ui/assistant/form-elements/FormText.js +1 -0
  301. package/dist/configurator/ui/assistant/form-elements/form-element-props.d.ts +34 -0
  302. package/dist/configurator/ui/assistant/form-elements/form-element-props.js +1 -0
  303. package/dist/configurator/ui/assistant/form-elements/index.d.ts +5 -0
  304. package/dist/configurator/ui/assistant/form-elements/index.js +1 -0
  305. package/dist/configurator/ui/assistant/reference-link/AssistantReferenceLink.d.ts +16 -0
  306. package/dist/configurator/ui/assistant/reference-link/AssistantReferenceLink.js +1 -0
  307. package/dist/configurator/ui/assistant/reference-link/assistant-link-target.d.ts +34 -0
  308. package/dist/configurator/ui/assistant/reference-link/assistant-link-target.js +1 -0
  309. package/dist/configurator/ui/assistant/reference-link/assistant-reference-details.d.ts +25 -0
  310. package/dist/configurator/ui/assistant/reference-link/assistant-reference-details.js +1 -0
  311. package/dist/configurator/ui/assistant/reference-link/index.d.ts +3 -0
  312. package/dist/configurator/ui/assistant/reference-link/index.js +1 -0
  313. package/dist/configurator/ui/assistant/reference-link/reference-styles.d.ts +12 -0
  314. package/dist/configurator/ui/assistant/reference-link/reference-styles.js +1 -0
  315. package/dist/configurator/ui/assistant/reference-link/use-assistant-reference-details.d.ts +8 -0
  316. package/dist/configurator/ui/assistant/reference-link/use-assistant-reference-details.js +1 -0
  317. package/dist/configurator/ui/assistant/resource-image/AssistantImage.d.ts +9 -0
  318. package/dist/configurator/ui/assistant/resource-image/AssistantImage.js +1 -0
  319. package/dist/configurator/ui/assistant/resource-image/index.d.ts +3 -0
  320. package/dist/configurator/ui/assistant/resource-image/index.js +1 -0
  321. package/dist/configurator/ui/assistant/resource-image/resource-path.d.ts +11 -0
  322. package/dist/configurator/ui/assistant/resource-image/resource-path.js +1 -0
  323. package/dist/configurator/ui/assistant/resource-image/use-resource-image-url.d.ts +5 -0
  324. package/dist/configurator/ui/assistant/resource-image/use-resource-image-url.js +1 -0
  325. package/dist/configurator/ui/assistant/streamed-markdown.d.ts +2 -0
  326. package/dist/configurator/ui/assistant/streamed-markdown.js +2 -2
  327. package/dist/configurator/ui/assistant/thread-items.d.ts +8 -1
  328. package/dist/configurator/ui/assistant/thread-items.js +1 -1
  329. package/dist/configurator/ui/assistant/use-follow-stream.js +1 -1
  330. package/dist/configurator/ui/configurator-layout/slots/services/InvariantViolations.js +1 -1
  331. package/dist/configurator/ui/configurator-layout/slots/services/Services.js +1 -1
  332. package/dist/configurator/ui/legacy/layout/common/CommonFinalizeButton.js +1 -1
  333. package/dist/configurator/ui/legacy/layout/common/CommonSummaryButton.js +1 -1
  334. package/dist/configurator/ui/legacy/layout/common/CommonTopNavigation.js +1 -1
  335. package/dist/configurator/ui/legacy/layout/common/ResponsiveFinalizeButton.js +1 -1
  336. package/dist/configurator/ui/legacy/layout/common/SummaryReadLayout.js +1 -1
  337. package/dist/configurator/ui/legacy/layout/simple/SimpleOwnerLayout.js +1 -1
  338. package/dist/configurator/ui/legacy/layout/simple/SimpleTopNavigation.js +1 -1
  339. package/dist/configurator/ui/legacy/layout/steps/StepsNavigation.js +1 -1
  340. package/dist/configurator/ui/legacy/layout/steps/StepsOwnerLayout.js +1 -1
  341. package/dist/configurator/ui/legacy/layout/steps/StepsSidebarFooter.js +1 -1
  342. package/dist/configurator/ui/legacy/layout/tabs/TabsOwnerLayout.js +1 -1
  343. package/dist/configurator/ui/legacy/toolbar/common/DimensionUnitSelector.js +1 -1
  344. package/dist/configurator/ui/legacy/toolbar/common/MeasurementsIndicatorsSwitch.js +1 -1
  345. package/dist/configurator/ui/legacy/toolbar/desktop-toolbar/FullscreenToolbarAction.js +1 -1
  346. package/dist/configurator/ui/legacy/toolbar/desktop-toolbar/HelpToolbarAction.js +1 -1
  347. package/dist/configurator/ui/legacy/toolbar/desktop-toolbar/MeasurementsToolbarAction.js +1 -1
  348. package/dist/configurator/ui/legacy/toolbar/desktop-toolbar/UndoRedoToolbarGroup.js +1 -1
  349. package/dist/configurator/ui/phoenix-layout-elements/EnterFullscreenToolbarButton.js +1 -1
  350. package/dist/configurator/ui/phoenix-layout-elements/ExitFullscreenToolbarButton.js +1 -1
  351. package/dist/configurator/ui/phoenix-layout-elements/HelpToolbarButton.js +1 -1
  352. package/dist/configurator/ui/phoenix-layout-elements/LayoutCustomOwnerUi.d.ts +1 -0
  353. package/dist/configurator/ui/phoenix-layout-elements/LayoutCustomOwnerUi.js +1 -1
  354. package/dist/configurator/ui/phoenix-layout-elements/LayoutCustomReadUi.d.ts +1 -0
  355. package/dist/configurator/ui/phoenix-layout-elements/LayoutCustomReadUi.js +1 -1
  356. package/dist/configurator/ui/phoenix-layout-elements/MeasurementsToolbarButton.js +1 -1
  357. package/dist/configurator/ui/phoenix-layout-elements/RedoToolbarButton.js +1 -1
  358. package/dist/configurator/ui/phoenix-layout-elements/UndoToolbarButton.js +1 -1
  359. package/dist/configurator/ui/phoenix-layout-elements/header/common/back-button/use-go-back-action.js +1 -1
  360. package/dist/configurator/ui/phoenix-layout-elements/header/common/horizontal-tabs/DesktopHorizontalTabs.js +1 -1
  361. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.js +1 -1
  362. package/dist/configurator/ui/phoenix-layout-elements/measurements/DimensionUnitSelector.js +1 -1
  363. package/dist/configurator/ui/phoenix-layout-elements/measurements/MeasurementsIndicatorsSwitch.js +1 -1
  364. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/basic/BasicFinalizeButton.js +1 -1
  365. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/CustomFinalizeButton.js +1 -1
  366. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/EnterSummaryButton.js +1 -1
  367. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/NextStepButton.js +1 -1
  368. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/PreviousStepButton.js +1 -1
  369. package/dist/configurator/ui/preset-layout/CategoryPresetUi.js +1 -1
  370. package/dist/configurator/ui/save-message-snackbars/SaveMessageSnackbars.d.ts +10 -0
  371. package/dist/configurator/ui/save-message-snackbars/SaveMessageSnackbars.js +1 -0
  372. package/dist/configurator/ui/save-message-snackbars/index.d.ts +1 -0
  373. package/dist/configurator/ui/save-message-snackbars/index.js +1 -0
  374. package/dist/docs/controls/select-child-entity/cardselect.mdx +1 -0
  375. package/dist/docs/fabs/basic.mdx +2 -2
  376. package/dist/docs/index.json +1 -1
  377. package/dist/docs/layouts/custom-layout.mdx +1471 -200
  378. package/dist/docs/other-features/not-found-404.mdx +1 -1
  379. package/dist/docs/phoenix/clerk-sign-in.mdx +1 -1
  380. package/dist/docs/phoenix/components.mdx +6 -0
  381. package/dist/docs/phoenix/configurator-interface.mdx +99 -21
  382. package/dist/docs/phoenix/deployments.mdx +2 -6
  383. package/dist/docs/phoenix/domain-model.mdx +2 -0
  384. package/dist/docs/phoenix/finalization.mdx +1 -1
  385. package/dist/docs/phoenix/getting-started.mdx +6 -3
  386. package/dist/docs/phoenix/layout-slots.mdx +12 -10
  387. package/dist/docs/phoenix/localization.mdx +10 -6
  388. package/dist/docs/phoenix/migration-guide.mdx +24 -11
  389. package/dist/docs/phoenix/phoenix-cli.mdx +67 -20
  390. package/dist/docs/phoenix/project-structure.mdx +70 -33
  391. package/dist/docs/phoenix/quickstart.mdx +7 -7
  392. package/dist/docs/phoenix/sdk-builder-workflow.mdx +7 -7
  393. package/dist/docs/phoenix/testing.mdx +8 -0
  394. package/dist/docs/phoenix/webhooks.mdx +21 -4
  395. package/dist/domain/application/application-config.d.ts +3 -1
  396. package/dist/domain/application/assistant/assistant-form-elements.d.ts +28 -0
  397. package/dist/domain/application/assistant/assistant-form-elements.js +1 -0
  398. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -1
  399. package/dist/domain/application/assistant/index.d.ts +2 -0
  400. package/dist/domain/application/assistant/index.js +1 -1
  401. package/dist/domain/application/assistant-recipe-groups.d.ts +3 -1
  402. package/dist/domain/application/configurator-builder.d.ts +4 -1
  403. package/dist/domain/application/configurator-builder.js +1 -1
  404. package/dist/domain/core/schema/extended-schema-validator.js +1 -1
  405. package/dist/domain/domain-context/index.d.ts +1 -1
  406. package/dist/domain/domain-context/undo-system.d.ts +28 -1
  407. package/dist/domain/domain-context/undo-system.js +1 -1
  408. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  409. package/dist/domain/domain-runtime/spec/module-checks/element-registration.d.ts +12 -11
  410. package/dist/domain/domain-runtime/spec/module-checks/element-registration.js +1 -1
  411. package/dist/domain/domain-runtime/spec/module-checks/index.d.ts +1 -1
  412. package/dist/domain/domain-runtime/spec/module-checks/index.js +1 -1
  413. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  414. package/dist/domain/domain-runtime/spec/types.d.ts +2 -0
  415. package/dist/domain/system-components/child-entity-selection.js +1 -1
  416. package/dist/domain/system-components/common/scene-entity-control-schema.d.ts +3 -0
  417. package/dist/domain/system-components/common/scene-entity-control-schema.js +1 -1
  418. package/dist/editor/Editor.d.ts +7 -0
  419. package/dist/editor/Editor.js +1 -1
  420. package/dist/editor/mocks/CreateMockYaml.js +2 -2
  421. package/dist/editor/mocks/EditorMockContext.d.ts +2 -0
  422. package/dist/editor/mocks/EditorMockContext.js +1 -1
  423. package/dist/globals/index.d.ts +2 -0
  424. package/dist/i18n/locales/cs/messages.js +1 -1
  425. package/dist/i18n/locales/da/messages.js +1 -1
  426. package/dist/i18n/locales/de/messages.js +1 -1
  427. package/dist/i18n/locales/de-AT/messages.js +1 -1
  428. package/dist/i18n/locales/en/messages.js +1 -1
  429. package/dist/i18n/locales/en-AU/messages.js +1 -1
  430. package/dist/i18n/locales/en-GB/messages.js +1 -1
  431. package/dist/i18n/locales/es/messages.js +1 -1
  432. package/dist/i18n/locales/fr/messages.js +1 -1
  433. package/dist/i18n/locales/hu/messages.js +1 -1
  434. package/dist/i18n/locales/it/messages.js +1 -1
  435. package/dist/i18n/locales/nl/messages.js +1 -1
  436. package/dist/i18n/locales/pl/messages.js +1 -1
  437. package/dist/i18n/locales/pt/messages.js +1 -1
  438. package/dist/i18n/locales/ro/messages.js +1 -1
  439. package/dist/i18n/locales/sk/messages.js +1 -1
  440. package/dist/i18n/locales/tr/messages.js +1 -1
  441. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  442. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  443. package/dist/legacy/domain-spec/__generated/domain-schema.d.ts +79 -80
  444. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/claude-md.d.ts +1 -1
  445. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/cursor-rules.d.ts +1 -1
  446. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.d.ts +1 -1
  447. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.js +7 -2
  448. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-admin.js +15 -14
  449. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-configurator.js +14 -12
  450. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-admin.js +14 -13
  451. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-configurator.js +13 -11
  452. package/dist/phoenix/application-spec/application-spec-builder.d.ts +0 -2
  453. package/dist/phoenix/application-spec/application-spec-builder.js +1 -1
  454. package/dist/phoenix/application-spec/generate-application-spec-project.d.ts +0 -2
  455. package/dist/phoenix/application-spec/generate-application-spec-project.js +2 -2
  456. package/dist/phoenix/application-spec/generate-application-spec-story.js +2 -2
  457. package/dist/phoenix/application-spec/generate-project-files.d.ts +0 -2
  458. package/dist/phoenix/application-spec/project-files.js +1 -1
  459. package/dist/phoenix/bin.d.ts +2 -0
  460. package/dist/phoenix/bin.js +2 -0
  461. package/dist/phoenix/check-configs/built-in-eslint-config.d.ts +9 -0
  462. package/dist/phoenix/check-configs/built-in-eslint-config.js +1 -0
  463. package/dist/phoenix/check-configs/eslint-config.d.ts +10 -0
  464. package/dist/phoenix/check-configs/eslint-config.js +1 -0
  465. package/dist/phoenix/check-configs/index.d.ts +8 -0
  466. package/dist/phoenix/check-configs/index.js +1 -0
  467. package/dist/phoenix/check-configs/typescript-project.d.ts +5 -0
  468. package/dist/phoenix/check-configs/typescript-project.js +1 -0
  469. package/dist/phoenix/cli.d.ts +0 -1
  470. package/dist/phoenix/cli.js +1 -2
  471. package/dist/phoenix/commands/build.js +1 -1
  472. package/dist/phoenix/commands/check.js +1 -1
  473. package/dist/phoenix/commands/clean.js +1 -1
  474. package/dist/phoenix/commands/deploy.js +2 -2
  475. package/dist/phoenix/commands/deps/deps.d.ts +73 -0
  476. package/dist/phoenix/commands/deps/deps.js +3 -0
  477. package/dist/phoenix/commands/deps/index.d.ts +1 -0
  478. package/dist/phoenix/commands/deps/index.js +1 -0
  479. package/dist/phoenix/commands/deps/sdk-manifest.d.ts +12 -0
  480. package/dist/phoenix/commands/deps/sdk-manifest.js +1 -0
  481. package/dist/phoenix/commands/dev.js +5 -5
  482. package/dist/phoenix/commands/fix.js +1 -1
  483. package/dist/phoenix/commands/index.d.ts +1 -0
  484. package/dist/phoenix/commands/index.js +1 -1
  485. package/dist/phoenix/commands/init.d.ts +17 -5
  486. package/dist/phoenix/commands/init.js +1 -1
  487. package/dist/phoenix/commands/link.js +1 -1
  488. package/dist/phoenix/commands/prettier.js +1 -1
  489. package/dist/phoenix/commands/sync.js +1 -1
  490. package/dist/phoenix/commands/unlink.js +1 -1
  491. package/dist/phoenix/services/application-spec-project-watcher.d.ts +2 -2
  492. package/dist/phoenix/services/application-spec-project-watcher.js +3 -3
  493. package/dist/phoenix/services/lingui.d.ts +8 -0
  494. package/dist/phoenix/services/lingui.js +1 -1
  495. package/dist/phoenix/services/swc.js +1 -1
  496. package/dist/phoenix/services/vite-config.js +1 -1
  497. package/dist/phoenix/utils/index.d.ts +4 -2
  498. package/dist/phoenix/utils/index.js +1 -1
  499. package/dist/phoenix/utils/node-version/index.d.ts +1 -0
  500. package/dist/phoenix/utils/node-version/index.js +1 -0
  501. package/dist/phoenix/utils/node-version/supported-node-version.d.ts +12 -0
  502. package/dist/phoenix/utils/node-version/supported-node-version.js +4 -0
  503. package/dist/phoenix/utils/package-info.d.ts +0 -9
  504. package/dist/phoenix/utils/package-info.js +1 -1
  505. package/dist/phoenix/utils/package-manager/index.d.ts +2 -0
  506. package/dist/phoenix/utils/package-manager/index.js +1 -0
  507. package/dist/phoenix/utils/package-manager/package-manager-commands.d.ts +19 -0
  508. package/dist/phoenix/utils/package-manager/package-manager-commands.js +1 -0
  509. package/dist/phoenix/utils/package-manager/pnpm-project.d.ts +9 -0
  510. package/dist/phoenix/utils/package-manager/pnpm-project.js +1 -0
  511. package/dist/phoenix/utils/run-command.d.ts +11 -0
  512. package/dist/phoenix/utils/run-command.js +1 -1
  513. package/dist/phoenix/utils/sdk-tool/index.d.ts +1 -0
  514. package/dist/phoenix/utils/sdk-tool/index.js +1 -0
  515. package/dist/phoenix/utils/sdk-tool/resolve-sdk-tool-bin.d.ts +15 -0
  516. package/dist/phoenix/utils/sdk-tool/resolve-sdk-tool-bin.js +1 -0
  517. package/dist/react-sdk/application-runtime/common-services/analytics/index.d.ts +1 -0
  518. package/dist/react-sdk/application-runtime/common-services/analytics/index.js +1 -1
  519. package/dist/react-sdk/domain-application-context/DomainLifecycleBoundary.js +1 -1
  520. package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.d.ts +15 -4
  521. package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.js +1 -1
  522. package/dist/react-sdk/domain-context/index.d.ts +2 -1
  523. package/dist/react-sdk/domain-context/index.js +1 -1
  524. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.d.ts +5 -0
  525. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.js +1 -1
  526. package/dist/react-sdk/domain-context/system-hooks/undo-redo-hooks.d.ts +20 -0
  527. package/dist/react-sdk/domain-context/system-hooks/undo-redo-hooks.js +1 -0
  528. package/dist/ui-sdk/theme/types.d.ts +1 -1
  529. package/package.json +46 -35
  530. package/schema/domain-spec.json +86 -8
  531. package/dist/application-spec/generate-application/code/templates/nvmrc.d.ts +0 -1
  532. package/dist/application-spec/generate-application/code/templates/nvmrc.js +0 -2
  533. package/dist/application-spec/generate-application/code/templates/package-json.d.ts +0 -10
  534. package/dist/application-spec/generate-application/code/templates/package-json.js +0 -1
  535. package/dist/application-spec/generate-application/code/templates/webhook-implementation.d.ts +0 -1
  536. package/dist/application-spec/generate-application/code/templates/webhook-implementation.js +0 -7
  537. package/dist/configurator/ui/assistant/entity-link/entity-link-target.d.ts +0 -5
  538. package/dist/configurator/ui/assistant/entity-link/entity-link-target.js +0 -1
  539. package/dist/phoenix/commands/generate-project-files.d.ts +0 -6
  540. package/dist/phoenix/commands/generate-project-files.js +0 -1
  541. /package/dist/{configurator/common → react-sdk/application-runtime/common-services/analytics}/frontend-analytics.d.ts +0 -0
  542. /package/dist/{configurator/common → react-sdk/application-runtime/common-services/analytics}/frontend-analytics.js +0 -0
@@ -8,6 +8,12 @@ export interface AssistantToolItem {
8
8
  readonly input: unknown;
9
9
  readonly result: unknown;
10
10
  }
11
+ /**
12
+ * What the forms in a stretch of assistant text are: shown only in the last message of the thread,
13
+ * and usable only once its reply has ended. A form in any earlier message has been answered or
14
+ * passed over, so it is not shown at all.
15
+ */
16
+ export type AssistantFormsVisibility = 'hidden' | 'disabled' | 'enabled';
11
17
  /**
12
18
  * One block of the thread, in reading order: a user bubble, a stretch of assistant Markdown, a row
13
19
  * of chips for the tool calls that follow each other without text in between, or the line that
@@ -22,6 +28,7 @@ export type AssistantThreadItem = {
22
28
  readonly id: string;
23
29
  readonly markdown: string;
24
30
  readonly isStreaming: boolean;
31
+ readonly forms: AssistantFormsVisibility;
25
32
  } | {
26
33
  readonly kind: 'tools';
27
34
  readonly id: string;
@@ -39,7 +46,7 @@ export interface AssistantThreadView {
39
46
  * Lays the messages of the chat out as the blocks the thread renders. Reasoning is left out; tool
40
47
  * results are not shown on their own but decide the state of the chip of their call.
41
48
  */
42
- export declare const buildThreadView: (messages: ReadonlyArray<UIMessage>, isReplying: boolean) => AssistantThreadView;
49
+ export declare const buildThreadView: (messages: ReadonlyArray<UIMessage>, isReplying: boolean, isResuming: boolean) => AssistantThreadView;
43
50
  /**
44
51
  * Lays the closed threads of the conversation out above the thread that continues them, oldest
45
52
  * first, each ended by a separator: the assistant read on from a summary of it, not from the
@@ -1 +1 @@
1
- import{describeToolCall as t}from"./tool-chip.js";let e=t=>{try{return JSON.parse(t)}catch{return t}},r=t=>t.map(t=>"text"===t.type?t.content:"").join("").trim();export const buildThreadView=(o,i)=>{let l=(t=>{let r=new Map;for(let o of t)for(let t of o.parts)"tool-result"===t.type&&r.set(t.toolCallId,{result:"string"==typeof t.content?e(t.content):t.content,error:"error"===t.state?t.error??"The tool call failed.":void 0});return r})(o),n=[],a=o.at(-1),s=t=>{let e=n.at(-1);e?.kind==="tools"?n[n.length-1]={...e,tools:[...e.tools,t]}:n.push({kind:"tools",id:t.id,tools:[t]})};for(let e of o){if("user"===e.role){let t=r(e.parts);t&&n.push({kind:"user",id:e.id,text:t});continue}let o=i&&e===a;e.parts.forEach((r,i)=>{let a=`${e.id}:${i}`;if("text"===r.type){if(r.content.trim()){let t=o&&i===e.parts.length-1;n.push({kind:"text",id:a,markdown:r.content,isStreaming:t})}return}if("tool-call"!==r.type)return;let d=l.get(r.id),p=r.input,u=r.output??d?.result;s({id:r.id,input:p,result:u,chip:t({name:r.name,input:p,result:u,error:d?.error,isReplyRunning:o})})})}let d=n.at(-1),p=a?.role==="assistant"&&(d?.kind==="text"&&d.isStreaming||d?.kind==="tools");return{items:n,isThinking:i&&!p}};export const buildEarlierThreadItems=t=>t.flatMap(({threadId:t,messages:e})=>[...buildThreadView(e,!1).items.map(e=>({...e,id:`${t}:${e.id}`})),{kind:"separator",id:`${t}:separator`}]);
1
+ import{match as t}from"ts-pattern";import{describeToolCall as e}from"./tool-chip.js";let r=t=>{try{return JSON.parse(t)}catch{return t}},i=t=>t.map(t=>"text"===t.type?t.content:"").join("").trim();export const buildThreadView=(o,n,s)=>{let l=(t=>{let e=new Map;for(let i of t)for(let t of i.parts)"tool-result"===t.type&&e.set(t.toolCallId,{result:"string"==typeof t.content?r(t.content):t.content,error:"error"===t.state?t.error??"The tool call failed.":void 0});return e})(o),a=[],d=o.at(-1),p=t=>{let e=a.at(-1);e?.kind==="tools"?a[a.length-1]={...e,tools:[...e.tools,t]}:a.push({kind:"tools",id:t.id,tools:[t]})};for(let r of o){if("user"===r.role){let t=i(r.parts);t&&a.push({kind:"user",id:r.id,text:t});continue}let o=n&&r===d,u=t({isLast:r===d,isBusy:o||s}).with({isLast:!1},()=>"hidden").with({isBusy:!0},()=>"disabled").otherwise(()=>"enabled");r.parts.forEach((t,i)=>{let n=`${r.id}:${i}`;if("text"===t.type){if(t.content.trim()){let e=o&&i===r.parts.length-1;a.push({kind:"text",id:n,markdown:t.content,isStreaming:e,forms:u})}return}if("tool-call"!==t.type)return;let s=l.get(t.id),d=t.input,h=t.output??s?.result;p({id:t.id,input:d,result:h,chip:e({name:t.name,input:d,result:h,error:s?.error,isReplyRunning:o})})})}let u=a.at(-1),h=d?.role==="assistant"&&(u?.kind==="text"&&u.isStreaming||u?.kind==="tools");return{items:a,isThinking:n&&!h}};export const buildEarlierThreadItems=t=>t.flatMap(({threadId:t,messages:e})=>[...buildThreadView(e,!1,!1).items.map(e=>"text"===e.kind?{...e,id:`${t}:${e.id}`,forms:"hidden"}:{...e,id:`${t}:${e.id}`}),{kind:"separator",id:`${t}:separator`}]);
@@ -1 +1 @@
1
- import{useCallback as r,useEffect as e,useLayoutEffect as t,useRef as l,useState as c}from"react";export const useFollowStream=(o,n)=>{let s=l(null),u=l(!0),[i,g]=c(!1),h=r(()=>{let r=s.current;u.current=!0,g(!1),r&&(r.scrollTop=r.scrollHeight)},[]),H=r(()=>{let r=s.current;r&&(u.current=r.scrollHeight-r.scrollTop-r.clientHeight<=24,u.current&&g(!1))},[]);return t(()=>{h()},[n,h]),t(()=>{let r=s.current;r&&(u.current?r.scrollTop=r.scrollHeight:r.scrollHeight>r.clientHeight&&g(!0))},[o]),e(()=>{let r=s.current;if(!r)return;let e=new ResizeObserver(()=>{u.current&&(r.scrollTop=r.scrollHeight)});return e.observe(r),()=>{e.disconnect()}},[]),{scrollerRef:s,hasUnseenContent:i,handleScroll:H,scrollToEnd:h}};
1
+ import{useCallback as e,useEffect as r,useLayoutEffect as t,useRef as l,useState as c}from"react";export const useFollowStream=(o,n)=>{let s=l(null),i=l(!0),[u,g]=c(!1),h=e(()=>{let e=s.current;i.current=!0,g(!1),e&&(e.scrollTop=e.scrollHeight)},[]),H=e(()=>{let e=s.current;e&&(i.current=e.scrollHeight-e.scrollTop-e.clientHeight<=24,i.current&&g(!1))},[]);return t(()=>{h()},[n,h]),t(()=>{let e=s.current;e&&(i.current?e.scrollTop=e.scrollHeight:e.scrollHeight>e.clientHeight&&g(!0))},[o]),r(()=>{let e=s.current;if(!e)return;let r=()=>{i.current&&(e.scrollTop=e.scrollHeight)},t=new ResizeObserver(r);return t.observe(e),e.addEventListener("load",r,!0),()=>{t.disconnect(),e.removeEventListener("load",r,!0)}},[]),{scrollerRef:s,hasUnseenContent:u,handleScroll:H,scrollToEnd:h}};
@@ -1 +1 @@
1
- import{jsx as r}from"react/jsx-runtime";import{Trans as t}from"@lingui/react";import{useSnackbar as i}from"notistack";import{match as e}from"ts-pattern";import{useConfiguratorMessages as a,useLogger as n}from"#package/react-sdk";export const InvariantViolations=()=>{let{enqueueSnackbar:o}=i(),s=n();return a(i=>{e(i).with({kind:"error"},({error:i})=>{s.error("Uncaught error",i),o(r(t,{id:"sdk.messages.validation.uncaughtError.message",message:"Oops, something went wrong"}),{variant:"error"})}).with({kind:"violation"},({entityId:r,violation:t,text:i})=>{o(`${String(r)}: ${i}`,{variant:e(t.severity).with("notice",()=>"info").with("warning",()=>"warning").with("fixable",()=>"error").with("fatal",()=>"error").exhaustive()})}).with({kind:"sideEffect"},()=>{}).exhaustive()}),null};
1
+ import{jsx as r}from"react/jsx-runtime";import{Trans as i}from"@lingui/react";import{useSnackbar as t}from"notistack";import{match as e}from"ts-pattern";import{useConfiguratorMessages as a,useLogger as n}from"#package/react-sdk";export const InvariantViolations=()=>{let{enqueueSnackbar:o}=t(),s=n();return a(t=>{e(t).with({kind:"error"},({error:t})=>{s.error("Uncaught error",t),o(r(i,{id:"sdk.messages.validation.uncaughtError.message",message:"Oops, something went wrong"}),{variant:"error"})}).with({kind:"violation"},({entityId:r,violation:i,text:t})=>{o(`${String(r)}: ${t}`,{variant:e(i.severity).with("notice",()=>"info").with("warning",()=>"warning").with("fixable",()=>"error").with("fatal",()=>"error").exhaustive()})}).with({kind:"sideEffect"},()=>{}).with({kind:"saveError"},{kind:"saveRecovery"},()=>{}).exhaustive()}),null};
@@ -1 +1 @@
1
- import{jsx as r,jsxs as s,Fragment as t}from"react/jsx-runtime";import{memo as o}from"react";import{InvariantViolations as i}from"./InvariantViolations.js";import{SideEffects as e}from"./SideEffects.js";export const Services=o(()=>s(t,{children:[r(i,{}),r(e,{})]}));
1
+ import{jsx as r,jsxs as s,Fragment as e}from"react/jsx-runtime";import{memo as o}from"react";import{SaveMessageSnackbars as t}from"../../../save-message-snackbars/index.js";import{InvariantViolations as a}from"./InvariantViolations.js";import{SideEffects as i}from"./SideEffects.js";export const Services=o(()=>s(e,{children:[r(a,{}),r(i,{}),r(t,{})]}));
@@ -1 +1 @@
1
- import{jsx as t}from"react/jsx-runtime";import{Trans as e}from"@lingui/react";import{useCallback as i}from"react";import{finalizeButtonComponent as a,finalizePageComponent as o}from"#package/domain";import{useAnalyticsService as n,useDomain as r,useFinalizeViolations as s,useFirstRootComponent as l,useLocalizable as m}from"#package/react-sdk";import{TooltipWithArrow as d,useResponsive as c}from"#package/ui-sdk";import{FrontendAnalyticsFactory as p}from"../../../../common/index.js";import{ResponsiveFinalizeButton as u}from"./ResponsiveFinalizeButton.js";import{MobileThemeableFinalizeButton as f,ThemeableFinalizeButton as g}from"./ThemeableFinalizeButton.js";let h={id:"sdk.finalize.notConfigured.tooltip",message:"Finalize feature is not configured."},k=()=>{let{isMobile:i}=c(),a=m(h);return i?t(d,{title:a,children:t("span",{children:t(f,{disabled:!0})})}):t(d,{title:a,children:t("span",{children:t(g,{disabled:!0,children:t(e,{id:"sdk.layout.sidebar.finalize.label",message:"Add to cart"})})})})},z=e=>{let{finalizeNavigationStates:a}=e,{navigationSystem:o,storeSystem:l}=r(),m=n(),d=i(async()=>{let t=a[0];t&&(m.push(p.FinalizeButtonClicked()),l.stageAndCommit([o.getPushNavigationUpdate(t,l.stateSlices.committed.value.state)]))},[a,o,m,l]),{disabled:c,hints:f}=s();return t(u,{onClick:d,disabled:c,hints:f})};export const CommonFinalizeButton=()=>{let e=l(a),i=l(o);return e?e?.state.button:i?t(z,{finalizeNavigationStates:i.state.finalizeNavigationStates}):t(k,{})};
1
+ import{jsx as t}from"react/jsx-runtime";import{Trans as e}from"@lingui/react";import{useCallback as i}from"react";import{finalizeButtonComponent as a,finalizePageComponent as n}from"#package/domain";import{FrontendAnalyticsFactory as o,useAnalyticsService as r,useDomain as s,useFinalizeViolations as l,useFirstRootComponent as d,useLocalizable as m}from"#package/react-sdk";import{TooltipWithArrow as c,useResponsive as p}from"#package/ui-sdk";import{ResponsiveFinalizeButton as u}from"./ResponsiveFinalizeButton.js";import{MobileThemeableFinalizeButton as f,ThemeableFinalizeButton as g}from"./ThemeableFinalizeButton.js";let h={id:"sdk.finalize.notConfigured.tooltip",message:"Finalize feature is not configured."},k=()=>{let{isMobile:i}=p(),a=m(h);return i?t(c,{title:a,children:t("span",{children:t(f,{disabled:!0})})}):t(c,{title:a,children:t("span",{children:t(g,{disabled:!0,children:t(e,{id:"sdk.layout.sidebar.finalize.label",message:"Add to cart"})})})})},z=e=>{let{finalizeNavigationStates:a}=e,{navigationSystem:n,storeSystem:d}=s(),m=r(),c=i(async()=>{let t=a[0];t&&(m.push(o.FinalizeButtonClicked()),d.stageAndCommit([n.getPushNavigationUpdate(t,d.stateSlices.committed.value.state)]))},[a,n,m,d]),{disabled:p,hints:f}=l();return t(u,{onClick:c,disabled:p,hints:f})};export const CommonFinalizeButton=()=>{let e=d(a),i=d(n);return e?e?.state.button:i?t(z,{finalizeNavigationStates:i.state.finalizeNavigationStates}):t(k,{})};
@@ -1 +1 @@
1
- import{jsx as r}from"react/jsx-runtime";import{Trans as t}from"@lingui/react";import{Button as m,Fab as o,styled as a}from"@mui/material";import{useCallback as e}from"react";import{useAnalyticsService as i}from"#package/react-sdk";import{PhxIcon as n,useResponsive as l}from"#package/ui-sdk";import{FrontendAnalyticsFactory as c}from"../../../../common/index.js";let p=a(o)(({theme:r})=>({backgroundColor:r.palette.primary.main,color:r.palette.getContrastText(r.palette.primary.main)}));export const CommonSummaryButton=o=>{let{onEnterSummary:a}=o,{isMobile:s}=l(),u=i(),d=e(()=>{u.push(c.SummaryButtonClicked()),a()},[u,a]);return s?r(p,{onClick:d,children:r(n,{name:"List"})}):r(m,{color:"primary",variant:"contained",size:"large",fullWidth:!0,endIcon:r(n,{name:"ArrowRight"}),onClick:d,children:r(t,{id:"sdk.layout.summary.button.label",message:"Summary"})})};
1
+ import{jsx as r}from"react/jsx-runtime";import{Trans as t}from"@lingui/react";import{Button as a,Fab as m,styled as o}from"@mui/material";import{useCallback as e}from"react";import{FrontendAnalyticsFactory as i,useAnalyticsService as n}from"#package/react-sdk";import{PhxIcon as l,useResponsive as c}from"#package/ui-sdk";let p=o(m)(({theme:r})=>({backgroundColor:r.palette.primary.main,color:r.palette.getContrastText(r.palette.primary.main)}));export const CommonSummaryButton=m=>{let{onEnterSummary:o}=m,{isMobile:s}=c(),u=n(),d=e(()=>{u.push(i.SummaryButtonClicked()),o()},[u,o]);return s?r(p,{onClick:d,children:r(l,{name:"List"})}):r(a,{color:"primary",variant:"contained",size:"large",fullWidth:!0,endIcon:r(l,{name:"ArrowRight"}),onClick:d,children:r(t,{id:"sdk.layout.summary.button.label",message:"Summary"})})};
@@ -1 +1 @@
1
- import{jsx as o}from"react/jsx-runtime";import{Trans as r}from"@lingui/react";import{Button as t}from"@mui/material";import{memo as e,useCallback as i}from"react";import{useAnalyticsService as m,useIntegrationState as a}from"#package/react-sdk";import{PhxIcon as n}from"#package/ui-sdk";import{FrontendAnalyticsFactory as s}from"../../../../common/index.js";import{useConfiguratorRouting as c,usePresetSelection as p,usePreview as l}from"../../../../configurator-context/index.js";import{CloseConfiguratorButton as d}from"./CloseConfiguratorButton.js";export const CommonTopNavigation=e(()=>{let e=m(),f=c(),{presetCategories:u}=p(),{isPreview:g,isPreviewEnabled:k}=l(),x=u.flatMap(o=>o.presets).length>1,j=a(),C=i(()=>{e.push(s.GoToProductsClicked()),f.goToIndex()},[e,f]);if(!j.embeddedView)return x||!k||g?x?o(t,{size:"small",startIcon:o(n,{name:"ArrowLeft"}),onClick:C,children:o(r,{id:"sdk.layout.navigation.common.product.label",message:"Website"})}):null:o(d,{})});
1
+ import{jsx as o}from"react/jsx-runtime";import{Trans as r}from"@lingui/react";import{Button as t}from"@mui/material";import{memo as e,useCallback as i}from"react";import{FrontendAnalyticsFactory as a,useAnalyticsService as m,useIntegrationState as n}from"#package/react-sdk";import{PhxIcon as s}from"#package/ui-sdk";import{useConfiguratorRouting as c,usePresetSelection as l,usePreview as p}from"../../../../configurator-context/index.js";import{CloseConfiguratorButton as d}from"./CloseConfiguratorButton.js";export const CommonTopNavigation=e(()=>{let e=m(),f=c(),{presetCategories:u}=l(),{isPreview:g,isPreviewEnabled:k}=p(),x=u.flatMap(o=>o.presets).length>1,C=n(),j=i(()=>{e.push(a.GoToProductsClicked()),f.goToIndex()},[e,f]);if(!C.embeddedView)return x||!k||g?x?o(t,{size:"small",startIcon:o(s,{name:"ArrowLeft"}),onClick:j,children:o(r,{id:"sdk.layout.navigation.common.product.label",message:"Website"})}):null:o(d,{})});
@@ -1 +1 @@
1
- import{jsx as i}from"react/jsx-runtime";import{Trans as e}from"@lingui/react";import{tooltipClasses as t}from"@mui/material";import{useCallback as o}from"react";import{useAnalyticsService as a,useResolveLocalizable as r}from"#package/react-sdk";import{TooltipWithArrow as l,useResponsive as m}from"#package/ui-sdk";import{FrontendAnalyticsFactory as n}from"../../../../common/index.js";import{MobileThemeableFinalizeButton as s,ThemeableFinalizeButton as p}from"./ThemeableFinalizeButton.js";export const ResponsiveFinalizeButton=c=>{let{title:d,onClick:u,disabled:f,hints:h}=c,{isMobile:k}=m(),x=r(),b=a(),g=o(()=>{b.push(n.FinalizeButtonClicked()),u()},[b,u]);return k?i(l,{title:h,placement:"top",sx:{[`& .${t.tooltip}`]:{maxWidth:130}},children:i("span",{children:i(s,{onClick:g,disabled:f})})}):i(l,{title:h,placement:"top",sx:{[`& .${t.tooltip}`]:{maxWidth:130}},children:i("span",{children:i(p,{disabled:f,onClick:g,children:d?x(d):i(e,{id:"sdk.layout.sidebar.finalizePage.label",message:"Finalize"})})})})};
1
+ import{jsx as i}from"react/jsx-runtime";import{Trans as e}from"@lingui/react";import{tooltipClasses as t}from"@mui/material";import{useCallback as a}from"react";import{FrontendAnalyticsFactory as r,useAnalyticsService as o,useResolveLocalizable as l}from"#package/react-sdk";import{TooltipWithArrow as n,useResponsive as m}from"#package/ui-sdk";import{MobileThemeableFinalizeButton as s,ThemeableFinalizeButton as p}from"./ThemeableFinalizeButton.js";export const ResponsiveFinalizeButton=c=>{let{title:d,onClick:u,disabled:h,hints:f}=c,{isMobile:k}=m(),x=l(),b=o(),g=a(()=>{b.push(r.FinalizeButtonClicked()),u()},[b,u]);return k?i(n,{title:f,placement:"top",sx:{[`& .${t.tooltip}`]:{maxWidth:130}},children:i("span",{children:i(s,{onClick:g,disabled:h})})}):i(n,{title:f,placement:"top",sx:{[`& .${t.tooltip}`]:{maxWidth:130}},children:i("span",{children:i(p,{disabled:h,onClick:g,children:d?x(d):i(e,{id:"sdk.layout.sidebar.finalizePage.label",message:"Finalize"})})})})};
@@ -1 +1 @@
1
- import{jsx as o,jsxs as t}from"react/jsx-runtime";import{Stack as r,Typography as e}from"@mui/material";import{match as a}from"ts-pattern";import{isCustomSummaryComponentSnapshot as n,isSimpleSummaryComponentSnapshot as l}from"#package/domain";import{useIsFullscreenActive as i,useRootEntityPrice as m}from"#package/react-sdk";import{Sidebar as s,MobileControls as p}from"#package/ui-sdk";import{usePreview as u,useSidebarSummary as f}from"../../../../configurator-context/index.js";import{LayoutSlots as d}from"../../../configurator-layout/index.js";import{LayoutFooter as c,LayoutToolbarReadDesktop as b,LayoutToolbarReadDesktopFullScreen as C,SimpleSummary as j}from"../../../phoenix-layout-elements/index.js";import{FullscreenDesktopToolbar as g}from"../../toolbar/desktop-toolbar/FullscreenDesktopToolbar.js";import{CloseConfiguratorButton as h}from"./CloseConfiguratorButton.js";import{CommonDesktopToolbar as k}from"./CommonDesktopToolbar.js";import{CommonMobileToolbar as x}from"./CommonMobileToolbar.js";import{ReactiveInterfaceLayout as y}from"./ReactiveInterfaceLayout.js";import{ToolControls as v}from"./ToolControls.js";import{ViewControls as w}from"./ViewControls.js";export const SummaryReadLayout=()=>{let{page:T}=f(),B=a(T).with(null,()=>null).when(n,o=>o.state.page).when(l,t=>o(j,{summary:t.state.items})).otherwise(()=>null),L=i(),M=m(),{isPreview:S,isPreviewEnabled:D}=u(),R=!L&&!S&&D;return o(y,{canvas:o(d.Canvas,{}),sidebar:B&&o(s.Layout,{content:B,chat:null,footer:null}),topNavigation:R&&o(h,{}),branding:null,toolbar:o(b,{defaultSlot:()=>o(k,{readMode:!0})}),fullScreenToolbar:o(C,{defaultSlot:()=>o(g,{})}),viewControls:o(w,{}),toolControls:o(v,{}),overlay:null,mobileControls:o(p.OrientationContainer,{portraitComponent:o(p.Layout,{chat:null,toolbar:o(x,{readMode:!0}),navigation:null,drawer:!L&&B}),landscapeComponent:null}),mobileTopNavigation:R&&o(h,{}),mobileHeaderActionButton:null,mobileHeaderCenter:!L&&o(e,{variant:"h6",sx:{paddingBlock:1},children:M}),sideEffects:null,footer:t(r,{children:[o(d.DesktopReadonlyBanner,{}),o(c,{})]})})};
1
+ import{jsx as o,jsxs as t}from"react/jsx-runtime";import{Stack as r,Typography as e}from"@mui/material";import{match as a}from"ts-pattern";import{isCustomSummaryComponentSnapshot as n,isSimpleSummaryComponentSnapshot as l}from"#package/domain";import{useIsFullscreenActive as i,useRootEntityPrice as m}from"#package/react-sdk";import{Sidebar as s,MobileControls as p}from"#package/ui-sdk";import{usePreview as u,useSidebarSummary as f}from"../../../../configurator-context/index.js";import{LayoutSlots as d}from"../../../configurator-layout/index.js";import{LayoutFooter as c,LayoutToolbarReadDesktop as b,LayoutToolbarReadDesktopFullScreen as C,SimpleSummary as j}from"../../../phoenix-layout-elements/index.js";import{SaveMessageSnackbars as g}from"../../../save-message-snackbars/index.js";import{FullscreenDesktopToolbar as k}from"../../toolbar/desktop-toolbar/FullscreenDesktopToolbar.js";import{CloseConfiguratorButton as x}from"./CloseConfiguratorButton.js";import{CommonDesktopToolbar as h}from"./CommonDesktopToolbar.js";import{CommonMobileToolbar as v}from"./CommonMobileToolbar.js";import{ReactiveInterfaceLayout as y}from"./ReactiveInterfaceLayout.js";import{ToolControls as w}from"./ToolControls.js";import{ViewControls as T}from"./ViewControls.js";export const SummaryReadLayout=()=>{let{page:B}=f(),L=a(B).with(null,()=>null).when(n,o=>o.state.page).when(l,t=>o(j,{summary:t.state.items})).otherwise(()=>null),M=i(),S=m(),{isPreview:D,isPreviewEnabled:R}=u(),H=!M&&!D&&R;return o(y,{canvas:o(d.Canvas,{}),sidebar:L&&o(s.Layout,{content:L,chat:null,footer:null}),topNavigation:H&&o(x,{}),branding:null,toolbar:o(b,{defaultSlot:()=>o(h,{readMode:!0})}),fullScreenToolbar:o(C,{defaultSlot:()=>o(k,{})}),viewControls:o(T,{}),toolControls:o(w,{}),overlay:o(g,{}),mobileControls:o(p.OrientationContainer,{portraitComponent:o(p.Layout,{chat:null,toolbar:o(v,{readMode:!0}),navigation:null,drawer:!M&&L}),landscapeComponent:null}),mobileTopNavigation:H&&o(x,{}),mobileHeaderActionButton:null,mobileHeaderCenter:!M&&o(e,{variant:"h6",sx:{paddingBlock:1},children:S}),sideEffects:null,footer:t(r,{children:[o(d.DesktopReadonlyBanner,{}),o(c,{})]})})};
@@ -1 +1 @@
1
- import{jsx as o,jsxs as m,Fragment as r}from"react/jsx-runtime";import{Typography as t}from"@mui/material";import{match as e}from"ts-pattern";import{customPriceFooterComponent as a,isCustomSummaryComponentSnapshot as i,isSimpleSummaryComponentSnapshot as n}from"#package/domain";import{useFirstRootComponent as s,useIsFullscreenActive as l,useRootEntityPrice as p}from"#package/react-sdk";import{MobileControls as c,MobileControls as f}from"#package/ui-sdk";import{useEnterSidebarSummary as u,useHasSidebarSummary as d,useLeaveSidebarSummary as b,useSidebarSummary as g}from"../../../../configurator-context/index.js";import{LayoutSlots as j}from"../../../configurator-layout/index.js";import{LayoutDialog as y,LayoutFooter as C,SimpleSummary as S}from"../../../phoenix-layout-elements/index.js";import{MobileChat as v}from"../../chat/MobileChat.js";import{FullscreenDesktopToolbar as h}from"../../toolbar/desktop-toolbar/FullscreenDesktopToolbar.js";import{CommonDesktopToolbar as k}from"../common/CommonDesktopToolbar.js";import{CommonFinalizePage as w}from"../common/CommonFinalizePage.js";import{CommonMobileToolbar as x}from"../common/CommonMobileToolbar.js";import{CommonTopNavigation as A}from"../common/CommonTopNavigation.js";import{DefaultViewOnlyMessage as T}from"../common/DefaultViewOnlyMessage.js";import{InvariantViolations as M}from"../common/InvariantViolations.js";import{ReactiveInterfaceLayout as L}from"../common/ReactiveInterfaceLayout.js";import{SideEffects as N}from"../common/SideEffects.js";import{ToolControls as P}from"../common/ToolControls.js";import{ViewControls as E}from"../common/ViewControls.js";import{SimpleMobileHeaderAction as O}from"./SimpleMobileHeaderAction.js";import{SimpleSidebar as V}from"./SimpleSidebar.js";import{SimpleSidebarContent as B}from"./SimpleSidebarContent.js";import{SimpleMobileTopNavigation as D}from"./SimpleTopNavigation.js";export const SimpleOwnerLayout=()=>{let F=s(a),H=d(),{isSummaryActive:I,page:z}=g(),R=e(z).with(null,()=>null).when(i,o=>o.state.page).when(n,m=>o(S,{summary:m.state.items})).otherwise(()=>null),q=u(),G=b(),J=p(),K=l();return o(L,{canvas:o(j.Canvas,{}),sidebar:o(V,{hasSummary:H,isSummaryActive:I,summaryPage:R,price:J,onEnterSummary:q,onLeaveSummary:G,customPriceNode:F?.state.node}),topNavigation:o(A,{}),branding:null,toolbar:o(k,{}),fullScreenToolbar:o(h,{}),viewControls:o(E,{}),toolControls:o(P,{}),overlay:m(r,{children:[o(M,{}),o(w,{}),o(y,{})]}),mobileControls:o(f.OrientationContainer,{portraitComponent:o(f.Layout,{chat:!K&&o(v,{icon:"CustomBigAiAssistant",label:{id:"sdk.chat.mobile.assistant.label",message:"AI Assistant"}}),toolbar:o(x,{}),navigation:null,drawer:!K&&o(B,{summaryPage:R,isSummaryActive:I,onLeaveSummary:G})}),landscapeComponent:o(c.ViewOnlyMode,{message:o(T,{})})}),mobileTopNavigation:!K&&o(D,{}),mobileHeaderActionButton:!K&&o(O,{isSummaryPageActive:I,onEnterSummary:q,hasSummary:H}),mobileHeaderCenter:!K&&o(t,{variant:"h6",sx:{paddingBlock:1},children:J}),sideEffects:o(N,{}),footer:o(C,{})})};
1
+ import{jsx as o,jsxs as m,Fragment as r}from"react/jsx-runtime";import{Typography as e}from"@mui/material";import{match as t}from"ts-pattern";import{customPriceFooterComponent as a,isCustomSummaryComponentSnapshot as i,isSimpleSummaryComponentSnapshot as n}from"#package/domain";import{useFirstRootComponent as s,useIsFullscreenActive as l,useRootEntityPrice as p}from"#package/react-sdk";import{MobileControls as c,MobileControls as f}from"#package/ui-sdk";import{useEnterSidebarSummary as u,useHasSidebarSummary as d,useLeaveSidebarSummary as b,useSidebarSummary as g}from"../../../../configurator-context/index.js";import{LayoutSlots as j}from"../../../configurator-layout/index.js";import{LayoutDialog as y,LayoutFooter as v,SimpleSummary as C}from"../../../phoenix-layout-elements/index.js";import{SaveMessageSnackbars as S}from"../../../save-message-snackbars/index.js";import{MobileChat as h}from"../../chat/MobileChat.js";import{FullscreenDesktopToolbar as k}from"../../toolbar/desktop-toolbar/FullscreenDesktopToolbar.js";import{CommonDesktopToolbar as x}from"../common/CommonDesktopToolbar.js";import{CommonFinalizePage as w}from"../common/CommonFinalizePage.js";import{CommonMobileToolbar as A}from"../common/CommonMobileToolbar.js";import{CommonTopNavigation as T}from"../common/CommonTopNavigation.js";import{DefaultViewOnlyMessage as M}from"../common/DefaultViewOnlyMessage.js";import{InvariantViolations as L}from"../common/InvariantViolations.js";import{ReactiveInterfaceLayout as N}from"../common/ReactiveInterfaceLayout.js";import{SideEffects as P}from"../common/SideEffects.js";import{ToolControls as E}from"../common/ToolControls.js";import{ViewControls as O}from"../common/ViewControls.js";import{SimpleMobileHeaderAction as V}from"./SimpleMobileHeaderAction.js";import{SimpleSidebar as B}from"./SimpleSidebar.js";import{SimpleSidebarContent as D}from"./SimpleSidebarContent.js";import{SimpleMobileTopNavigation as F}from"./SimpleTopNavigation.js";export const SimpleOwnerLayout=()=>{let H=s(a),I=d(),{isSummaryActive:z,page:R}=g(),q=t(R).with(null,()=>null).when(i,o=>o.state.page).when(n,m=>o(C,{summary:m.state.items})).otherwise(()=>null),G=u(),J=b(),K=p(),Q=l();return o(N,{canvas:o(j.Canvas,{}),sidebar:o(B,{hasSummary:I,isSummaryActive:z,summaryPage:q,price:K,onEnterSummary:G,onLeaveSummary:J,customPriceNode:H?.state.node}),topNavigation:o(T,{}),branding:null,toolbar:o(x,{}),fullScreenToolbar:o(k,{}),viewControls:o(O,{}),toolControls:o(E,{}),overlay:m(r,{children:[o(L,{}),o(S,{}),o(w,{}),o(y,{})]}),mobileControls:o(f.OrientationContainer,{portraitComponent:o(f.Layout,{chat:!Q&&o(h,{icon:"CustomBigAiAssistant",label:{id:"sdk.chat.mobile.assistant.label",message:"AI Assistant"}}),toolbar:o(A,{}),navigation:null,drawer:!Q&&o(D,{summaryPage:q,isSummaryActive:z,onLeaveSummary:J})}),landscapeComponent:o(c.ViewOnlyMode,{message:o(M,{})})}),mobileTopNavigation:!Q&&o(F,{}),mobileHeaderActionButton:!Q&&o(V,{isSummaryPageActive:z,onEnterSummary:G,hasSummary:I}),mobileHeaderCenter:!Q&&o(e,{variant:"h6",sx:{paddingBlock:1},children:K}),sideEffects:o(P,{}),footer:o(v,{})})};
@@ -1 +1 @@
1
- import{jsx as o}from"react/jsx-runtime";import{Trans as r}from"@lingui/react";import{Button as t}from"@mui/material";import{memo as i,useCallback as e}from"react";import{useAnalyticsService as m,usePresetEmbeddedState as a}from"#package/react-sdk";import{PhxIcon as n}from"#package/ui-sdk";import{FrontendAnalyticsFactory as s}from"../../../../common/index.js";import{useConfiguratorRouting as l,usePresetSelection as p,usePreview as c}from"../../../../configurator-context/index.js";import{CloseConfiguratorButton as f}from"../common/CloseConfiguratorButton.js";export const SimpleMobileTopNavigation=i(()=>{let i=m(),u=l(),{presetCategories:d}=p(),{isPreview:g,isPreviewEnabled:k}=c(),x=d.flatMap(o=>o.presets).length>1,j=e(()=>{i.push(s.GoToProductsClicked()),u.goToIndex()},[i,u]);if(!a())return x||g||!k?x?o(t,{size:"small",startIcon:o(n,{name:"ArrowLeft"}),onClick:j,children:o(r,{id:"sdk.layout.navigation.mobile.product.label",message:"Website"})}):null:o(f,{})});
1
+ import{jsx as o}from"react/jsx-runtime";import{Trans as r}from"@lingui/react";import{Button as t}from"@mui/material";import{memo as e,useCallback as i}from"react";import{FrontendAnalyticsFactory as a,useAnalyticsService as m,usePresetEmbeddedState as s}from"#package/react-sdk";import{PhxIcon as n}from"#package/ui-sdk";import{useConfiguratorRouting as l,usePresetSelection as p,usePreview as c}from"../../../../configurator-context/index.js";import{CloseConfiguratorButton as f}from"../common/CloseConfiguratorButton.js";export const SimpleMobileTopNavigation=e(()=>{let e=m(),u=l(),{presetCategories:d}=p(),{isPreview:g,isPreviewEnabled:k}=c(),x=d.flatMap(o=>o.presets).length>1,b=i(()=>{e.push(a.GoToProductsClicked()),u.goToIndex()},[e,u]);if(!s())return x||g||!k?x?o(t,{size:"small",startIcon:o(n,{name:"ArrowLeft"}),onClick:b,children:o(r,{id:"sdk.layout.navigation.mobile.product.label",message:"Website"})}):null:o(f,{})});
@@ -1 +1 @@
1
- import{jsx as t,jsxs as e}from"react/jsx-runtime";import{Trans as o}from"@lingui/react";import{memo as i,useCallback as a}from"react";import{useActiveNavigationState as n,useAnalyticsService as r,useDomain as s,usePresetEmbeddedState as p,useResolveLocalizable as c}from"#package/react-sdk";import{TopNavigation as m,useResponsive as l}from"#package/ui-sdk";import{FrontendAnalyticsFactory as d}from"../../../../common/index.js";import{useConfiguratorRouting as g,usePresetSelection as u}from"../../../../configurator-context/index.js";export const StepsNavigation=i(i=>{let{steps:f}=i,k=r(),{navigationSystem:x,storeSystem:v}=s(),h=n(),C=g(),S=c(),{presetCategories:j}=u(),T=p(),N=j.flatMap(t=>t.presets).length>1,b=!T&&N,I=f.findIndex(t=>t.navigationStates.includes(h))+ +!!b,{isTablet:P}=l(),y=a(()=>{k.push(d.GoToProductsClicked()),C.goToIndex()},[k,C]);return e(m.Root,{activeStep:I,nonLinear:!0,compact:P,fullWidth:!0,children:[b&&t(m.Step,{isCompleted:!0,onClick:y,compact:P,children:t(o,{id:"sdk.layout.navigation.steps.first.label",message:"Products"})}),f.map((e,o)=>{let i=b?o<I-1:o<I,a=S(e.label);return t(m.Step,{isCompleted:i,isDisabled:!i,compact:P,onClick:()=>{let t=e.navigationStates[0];t&&(k.push(d.TopNavigationStepClicked(t)),v.stageAndCommit([x.getNavigationUpdate(t)]))},children:a},a)})]})});
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 +1 @@
1
- import{jsx as o,jsxs as t,Fragment as e}from"react/jsx-runtime";import{useCallback as a,useMemo as i}from"react";import{customPriceFooterComponent as n,navigationStepsComponent as r,sidebarTabsComponent as s}from"#package/domain";import{useActiveNavigationState as m,useComponents as l,useDomain as p,useFirstRootComponent as c,usePresetEmbeddedState as f,useResolveLocalizable as d,useRootEntityPrice as g,useSelectedDomainEntityId as u,useStoreSelector as v}from"#package/react-sdk";import{MobileControls as b}from"#package/ui-sdk";import{useConfiguratorRouting as j,usePresetSelection as S}from"../../../../configurator-context/index.js";import{LayoutSlots as x}from"../../../configurator-layout/index.js";import{LayoutDialog as C}from"../../../phoenix-layout-elements/LayoutDialog.js";import{LayoutFooter as y,LayoutToolbarDesktop as k,LayoutToolbarDesktopFullScreen as T}from"../../../phoenix-layout-elements/index.js";import{FullscreenDesktopToolbar as I}from"../../toolbar/desktop-toolbar/FullscreenDesktopToolbar.js";import{CommonDesktopToolbar as h}from"../common/CommonDesktopToolbar.js";import{CommonFinalizePage as N}from"../common/CommonFinalizePage.js";import{DefaultViewOnlyMessage as w}from"../common/DefaultViewOnlyMessage.js";import{InvariantViolations as A}from"../common/InvariantViolations.js";import{ReactiveInterfaceLayout as D}from"../common/ReactiveInterfaceLayout.js";import{SideEffects as E}from"../common/SideEffects.js";import{ToolControls as L}from"../common/ToolControls.js";import{ViewControls as M}from"../common/ViewControls.js";import{StepsNavigation as P}from"./StepsNavigation.js";import{StepsSideBar as V}from"./StepsSideBar.js";export const StepsOwnerLayout=()=>{let{storeSystem:F,navigationSystem:O}=p(),B=d(),H=m(),R=u(),U=c(r),z=c(n),$=l({componentTypes:[s],entityIds:[R]}),q=i(()=>U?.state.steps??[],[U]),G=i(()=>($??[]).flatMap(o=>o.state.tabs).map(o=>{let t=o.navigationStates[0];if(!t)throw Error(`Tab ${t} has no navigation states!`);return{label:B(o.label),icon:o.icon,value:t,isActive:o.navigationStates.includes(H)}}),[$,H,B]),J=i(()=>{let o=G.find(o=>o.isActive);return o?.value??"none"},[G]),K=v(o=>R===o.state.rootEntityId,[R]),Q=g(),W=j(),{presetCategories:X}=S(),Y=f(),Z=X.flatMap(o=>o.presets).length>1,_=!Y&&Z,oo=a(()=>{let o=q.findIndex(o=>o.navigationStates.includes(H)),t=q[o-1];if(!t){_&&W.goToIndex();return}let e=t.navigationStates[0];e&&F.stageAndCommit([O.getNavigationUpdate(e)])},[O,H,q,_,W,F]),ot=a(()=>{let o=q.findIndex(o=>o.navigationStates.includes(H)),t=q[o+1];if(!t)return;let e=t.navigationStates[0];e&&F.stageAndCommit([O.getNavigationUpdate(e)])},[O,H,q,F]),oe=i(()=>q.findIndex(o=>o.navigationStates.includes(H))===q.length-1,[q,H]);return o(D,{canvas:o(x.Canvas,{}),sidebar:o(V,{price:Q,tabs:G,activeTab:J,isRootPage:K,customPriceNode:z?.state.node,isLastStep:oe,onNextStepClick:ot,onPreviousStepClick:oo}),viewControls:o(M,{}),toolControls:o(L,{}),topNavigation:o(P,{steps:q}),branding:null,toolbar:o(k,{defaultSlot:()=>o(h,{})}),fullScreenToolbar:o(T,{defaultSlot:()=>o(I,{})}),overlay:t(e,{children:[o(A,{}),o(N,{}),o(C,{})]}),mobileControls:o(b.ViewOnlyMode,{message:o(w,{})}),mobileTopNavigation:null,mobileHeaderActionButton:null,mobileHeaderCenter:null,sideEffects:o(E,{}),footer:o(y,{})})};
1
+ import{jsx as o,jsxs as t,Fragment as e}from"react/jsx-runtime";import{useCallback as a,useMemo as i}from"react";import{customPriceFooterComponent as n,navigationStepsComponent as r,sidebarTabsComponent as s}from"#package/domain";import{useActiveNavigationState as m,useComponents as l,useDomain as p,useFirstRootComponent as c,usePresetEmbeddedState as f,useResolveLocalizable as d,useRootEntityPrice as g,useSelectedDomainEntityId as u,useStoreSelector as v}from"#package/react-sdk";import{MobileControls as b}from"#package/ui-sdk";import{useConfiguratorRouting as j,usePresetSelection as S}from"../../../../configurator-context/index.js";import{LayoutSlots as x}from"../../../configurator-layout/index.js";import{LayoutDialog as C}from"../../../phoenix-layout-elements/LayoutDialog.js";import{LayoutFooter as y,LayoutToolbarDesktop as k,LayoutToolbarDesktopFullScreen as T}from"../../../phoenix-layout-elements/index.js";import{SaveMessageSnackbars as I}from"../../../save-message-snackbars/index.js";import{FullscreenDesktopToolbar as h}from"../../toolbar/desktop-toolbar/FullscreenDesktopToolbar.js";import{CommonDesktopToolbar as N}from"../common/CommonDesktopToolbar.js";import{CommonFinalizePage as w}from"../common/CommonFinalizePage.js";import{DefaultViewOnlyMessage as A}from"../common/DefaultViewOnlyMessage.js";import{InvariantViolations as D}from"../common/InvariantViolations.js";import{ReactiveInterfaceLayout as E}from"../common/ReactiveInterfaceLayout.js";import{SideEffects as L}from"../common/SideEffects.js";import{ToolControls as M}from"../common/ToolControls.js";import{ViewControls as P}from"../common/ViewControls.js";import{StepsNavigation as V}from"./StepsNavigation.js";import{StepsSideBar as F}from"./StepsSideBar.js";export const StepsOwnerLayout=()=>{let{storeSystem:O,navigationSystem:B}=p(),H=d(),R=m(),U=u(),z=c(r),$=c(n),q=l({componentTypes:[s],entityIds:[U]}),G=i(()=>z?.state.steps??[],[z]),J=i(()=>(q??[]).flatMap(o=>o.state.tabs).map(o=>{let t=o.navigationStates[0];if(!t)throw Error(`Tab ${t} has no navigation states!`);return{label:H(o.label),icon:o.icon,value:t,isActive:o.navigationStates.includes(R)}}),[q,R,H]),K=i(()=>{let o=J.find(o=>o.isActive);return o?.value??"none"},[J]),Q=v(o=>U===o.state.rootEntityId,[U]),W=g(),X=j(),{presetCategories:Y}=S(),Z=f(),_=Y.flatMap(o=>o.presets).length>1,oo=!Z&&_,ot=a(()=>{let o=G.findIndex(o=>o.navigationStates.includes(R)),t=G[o-1];if(!t){oo&&X.goToIndex();return}let e=t.navigationStates[0];e&&O.stageAndCommit([B.getNavigationUpdate(e)])},[B,R,G,oo,X,O]),oe=a(()=>{let o=G.findIndex(o=>o.navigationStates.includes(R)),t=G[o+1];if(!t)return;let e=t.navigationStates[0];e&&O.stageAndCommit([B.getNavigationUpdate(e)])},[B,R,G,O]),oa=i(()=>G.findIndex(o=>o.navigationStates.includes(R))===G.length-1,[G,R]);return o(E,{canvas:o(x.Canvas,{}),sidebar:o(F,{price:W,tabs:J,activeTab:K,isRootPage:Q,customPriceNode:$?.state.node,isLastStep:oa,onNextStepClick:oe,onPreviousStepClick:ot}),viewControls:o(P,{}),toolControls:o(M,{}),topNavigation:o(V,{steps:G}),branding:null,toolbar:o(k,{defaultSlot:()=>o(N,{})}),fullScreenToolbar:o(T,{defaultSlot:()=>o(h,{})}),overlay:t(e,{children:[o(D,{}),o(I,{}),o(w,{}),o(C,{})]}),mobileControls:o(b.ViewOnlyMode,{message:o(A,{})}),mobileTopNavigation:null,mobileHeaderActionButton:null,mobileHeaderCenter:null,sideEffects:o(L,{}),footer:o(y,{})})};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as t,Fragment as o}from"react/jsx-runtime";import{Trans as r}from"@lingui/react";import{Button as i,Stack as n}from"@mui/material";import{useCallback as a}from"react";import{useAnalyticsService as l,usePresetEmbeddedState as m,useResolveLocalizable as s,useSession as c}from"#package/react-sdk";import{PhxIcon as p,SidebarPrice as d,StepsSidebarFooterLayout as u}from"#package/ui-sdk";import{FrontendAnalyticsFactory as f}from"../../../../common/index.js";import{CommonFinalizeButton as k}from"../common/CommonFinalizeButton.js";import{SaveTemplateButton as g}from"../common/SaveTemplateButton.js";import{SetAsTemplateButton as h}from"../common/SetAsTemplateButton.js";let x={id:"sdk.totalPrice",message:"Total price"},S=t=>{let{onClick:o}=t,n=l(),m=a(()=>{n.push(f.PreviousStepButtonClicked()),o()},[n,o]);return e(i,{size:"large",startIcon:e(p,{name:"ArrowLeft"}),fullWidth:!0,onClick:m,children:e(r,{id:"sdk.layout.sidebar.previousStep.label",message:"Previous step"})})},B=t=>{let{onClick:o}=t,n=l(),m=a(()=>{n.push(f.NextStepButtonClicked()),o()},[n,o]);return e(i,{variant:"contained",size:"large",endIcon:e(p,{name:"ArrowRight"}),fullWidth:!0,onClick:m,children:e(r,{id:"sdk.layout.sidebar.nextStep.label",message:"Next step"})})};export const StepsSidebarFooter=r=>{let{formattedPrice:i,customPriceNode:a,isLastStep:l,onPreviousStepClick:p,onNextStepClick:f}=r,b=m(),j=s(),C=null!=c().rawAdminSessionToken,v=C&&b,A=C&&!b;return e(u,{priceNode:t(o,{children:[a,!a&&i&&t(n,{alignItems:"center",flexWrap:"wrap",direction:"row",children:[e(d.Label,{label:j(x),sx:{marginInlineEnd:"auto"}}),e(d.Value,{value:i})]})]}),startActionButton:e(S,{onClick:p}),endActionButton:t(o,{children:[!l&&e(B,{onClick:f}),l&&!v&&e(k,{}),l&&v&&e(g,{})]}),templateButton:l&&A&&e(h,{})})};
1
+ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{Trans as o}from"@lingui/react";import{Button as i,Stack as n}from"@mui/material";import{useCallback as a}from"react";import{FrontendAnalyticsFactory as l,useAnalyticsService as s,usePresetEmbeddedState as m,useResolveLocalizable as c,useSession as p}from"#package/react-sdk";import{PhxIcon as u,SidebarPrice as d,StepsSidebarFooterLayout as k}from"#package/ui-sdk";import{CommonFinalizeButton as f}from"../common/CommonFinalizeButton.js";import{SaveTemplateButton as g}from"../common/SaveTemplateButton.js";import{SetAsTemplateButton as h}from"../common/SetAsTemplateButton.js";let x={id:"sdk.totalPrice",message:"Total price"},S=t=>{let{onClick:r}=t,n=s(),m=a(()=>{n.push(l.PreviousStepButtonClicked()),r()},[n,r]);return e(i,{size:"large",startIcon:e(u,{name:"ArrowLeft"}),fullWidth:!0,onClick:m,children:e(o,{id:"sdk.layout.sidebar.previousStep.label",message:"Previous step"})})},B=t=>{let{onClick:r}=t,n=s(),m=a(()=>{n.push(l.NextStepButtonClicked()),r()},[n,r]);return e(i,{variant:"contained",size:"large",endIcon:e(u,{name:"ArrowRight"}),fullWidth:!0,onClick:m,children:e(o,{id:"sdk.layout.sidebar.nextStep.label",message:"Next step"})})};export const StepsSidebarFooter=o=>{let{formattedPrice:i,customPriceNode:a,isLastStep:l,onPreviousStepClick:s,onNextStepClick:u}=o,b=m(),C=c(),j=null!=p().rawAdminSessionToken,v=j&&b,A=j&&!b;return e(k,{priceNode:t(r,{children:[a,!a&&i&&t(n,{alignItems:"center",flexWrap:"wrap",direction:"row",children:[e(d.Label,{label:C(x),sx:{marginInlineEnd:"auto"}}),e(d.Value,{value:i})]})]}),startActionButton:e(S,{onClick:s}),endActionButton:t(r,{children:[!l&&e(B,{onClick:u}),l&&!v&&e(f,{}),l&&v&&e(g,{})]}),templateButton:l&&A&&e(h,{})})};
@@ -1 +1 @@
1
- import{jsx as o,jsxs as t,Fragment as e}from"react/jsx-runtime";import{useMemo as r}from"react";import{match as a}from"ts-pattern";import{customPriceFooterComponent as m,isCustomSummaryComponentSnapshot as n,isSimpleSummaryComponentSnapshot as i,sidebarTabsComponent as s}from"#package/domain";import{useActiveNavigationState as l,useComponents as c,useFirstRootComponent as p,useResolveLocalizable as f,useRootEntityPrice as u,useSelectedDomainEntityId as d,useStoreSelector as b}from"#package/react-sdk";import{MobileControls as g}from"#package/ui-sdk";import{useEnterSidebarSummary as v,useHasSidebarSummary as j,useLeaveSidebarSummary as y,useSidebarSummary as T}from"../../../../configurator-context/index.js";import{LayoutSlots as h}from"../../../configurator-layout/index.js";import{LayoutDialog as w,LayoutFooter as C,SimpleSummary as x}from"../../../phoenix-layout-elements/index.js";import{FullscreenDesktopToolbar as S}from"../../toolbar/desktop-toolbar/FullscreenDesktopToolbar.js";import{CommonDesktopToolbar as k}from"../common/CommonDesktopToolbar.js";import{CommonFinalizePage as E}from"../common/CommonFinalizePage.js";import{CommonTopNavigation as A}from"../common/CommonTopNavigation.js";import{DefaultViewOnlyMessage as I}from"../common/DefaultViewOnlyMessage.js";import{InvariantViolations as N}from"../common/InvariantViolations.js";import{ReactiveInterfaceLayout as P}from"../common/ReactiveInterfaceLayout.js";import{SideEffects as V}from"../common/SideEffects.js";import{ToolControls as D}from"../common/ToolControls.js";import{ViewControls as F}from"../common/ViewControls.js";import{TabsSidebar as L}from"./TabsSidebar.js";export const TabsOwnerLayout=()=>{let M=f(),O=l(),H=d(),{isSummaryActive:R,page:z}=T(),B=a(z).with(null,()=>null).when(n,o=>o.state.page).when(i,t=>o(x,{summary:t.state.items})).otherwise(()=>null),$=j(),q=v(),G=y(),J=c({componentTypes:[s],entityIds:[H]}),K=p(m),Q=b(o=>H===o.state.rootEntityId,[H]),U=r(()=>(J??[]).flatMap(o=>o.state.tabs).map(o=>{let t=o.navigationStates[0];if(!t)throw Error(`Tab ${t} has no navigation states!`);return{label:M(o.label),icon:o.icon,value:t,isActive:o.navigationStates.includes(O)}}),[J,O,M]),W=r(()=>{let o=U.find(o=>o.isActive);return o?.value??"none"},[U]),X=u();return o(e,{children:o(P,{canvas:o(h.Canvas,{}),sidebar:o(L,{hasSummary:$,isSummaryActive:R,summaryPage:B,price:X,onEnterSummary:q,onLeaveSummary:G,tabs:U,activeTab:W,isRootPage:Q,customPriceNode:K?.state.node}),topNavigation:o(A,{}),branding:null,toolbar:o(k,{}),fullScreenToolbar:o(S,{}),viewControls:o(F,{}),toolControls:o(D,{}),overlay:t(e,{children:[o(N,{}),o(E,{}),o(w,{})]}),mobileControls:o(g.ViewOnlyMode,{message:o(I,{})}),mobileTopNavigation:null,mobileHeaderActionButton:null,mobileHeaderCenter:null,sideEffects:o(V,{}),footer:o(C,{})})})};
1
+ import{jsx as o,jsxs as t,Fragment as e}from"react/jsx-runtime";import{useMemo as r}from"react";import{match as a}from"ts-pattern";import{customPriceFooterComponent as m,isCustomSummaryComponentSnapshot as n,isSimpleSummaryComponentSnapshot as i,sidebarTabsComponent as s}from"#package/domain";import{useActiveNavigationState as l,useComponents as c,useFirstRootComponent as p,useResolveLocalizable as f,useRootEntityPrice as u,useSelectedDomainEntityId as d,useStoreSelector as b}from"#package/react-sdk";import{MobileControls as g}from"#package/ui-sdk";import{useEnterSidebarSummary as v,useHasSidebarSummary as j,useLeaveSidebarSummary as y,useSidebarSummary as T}from"../../../../configurator-context/index.js";import{LayoutSlots as h}from"../../../configurator-layout/index.js";import{LayoutDialog as w,LayoutFooter as x,SimpleSummary as C}from"../../../phoenix-layout-elements/index.js";import{SaveMessageSnackbars as k}from"../../../save-message-snackbars/index.js";import{FullscreenDesktopToolbar as S}from"../../toolbar/desktop-toolbar/FullscreenDesktopToolbar.js";import{CommonDesktopToolbar as E}from"../common/CommonDesktopToolbar.js";import{CommonFinalizePage as A}from"../common/CommonFinalizePage.js";import{CommonTopNavigation as I}from"../common/CommonTopNavigation.js";import{DefaultViewOnlyMessage as N}from"../common/DefaultViewOnlyMessage.js";import{InvariantViolations as P}from"../common/InvariantViolations.js";import{ReactiveInterfaceLayout as V}from"../common/ReactiveInterfaceLayout.js";import{SideEffects as D}from"../common/SideEffects.js";import{ToolControls as F}from"../common/ToolControls.js";import{ViewControls as L}from"../common/ViewControls.js";import{TabsSidebar as M}from"./TabsSidebar.js";export const TabsOwnerLayout=()=>{let O=f(),H=l(),R=d(),{isSummaryActive:z,page:B}=T(),$=a(B).with(null,()=>null).when(n,o=>o.state.page).when(i,t=>o(C,{summary:t.state.items})).otherwise(()=>null),q=j(),G=v(),J=y(),K=c({componentTypes:[s],entityIds:[R]}),Q=p(m),U=b(o=>R===o.state.rootEntityId,[R]),W=r(()=>(K??[]).flatMap(o=>o.state.tabs).map(o=>{let t=o.navigationStates[0];if(!t)throw Error(`Tab ${t} has no navigation states!`);return{label:O(o.label),icon:o.icon,value:t,isActive:o.navigationStates.includes(H)}}),[K,H,O]),X=r(()=>{let o=W.find(o=>o.isActive);return o?.value??"none"},[W]),Y=u();return o(e,{children:o(V,{canvas:o(h.Canvas,{}),sidebar:o(M,{hasSummary:q,isSummaryActive:z,summaryPage:$,price:Y,onEnterSummary:G,onLeaveSummary:J,tabs:W,activeTab:X,isRootPage:U,customPriceNode:Q?.state.node}),topNavigation:o(I,{}),branding:null,toolbar:o(E,{}),fullScreenToolbar:o(S,{}),viewControls:o(L,{}),toolControls:o(F,{}),overlay:t(e,{children:[o(P,{}),o(k,{}),o(A,{}),o(w,{})]}),mobileControls:o(g.ViewOnlyMode,{message:o(N,{})}),mobileTopNavigation:null,mobileHeaderActionButton:null,mobileHeaderCenter:null,sideEffects:o(D,{}),footer:o(x,{})})})};
@@ -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{useAnalyticsService as a,useDimensionConfig as o,useDimensionState as n,useDimensions as l,useLocalizable as s}from"#package/react-sdk";import{ToggleSelector as c}from"#package/ui-sdk";import{FrontendAnalyticsFactory as u}from"../../../../common/index.js";let h=o=>{let{value:n}=o,s=a(),{setGlobalUnit:h}=l(),p=e(()=>{s.push(u.GlobalDimensionsButtonClicked(n)),h(n)},[s,n,h]),f=i(()=>m(n).with(r.mm,()=>"mm").with(r.cm,()=>"cm").with(r.m,()=>"m").with(r.inch,()=>"in").with(r.feet,()=>"ft").exhaustive(),[n]),d=i(()=>m(n).with(r.mm,()=>"millimeter").with(r.cm,()=>"centimeter").with(r.m,()=>"meter").with(r.inch,()=>"inches").with(r.feet,()=>"feet").exhaustive(),[n]);return t(c.Item,{value:n,"aria-label":d,onClick:p,children:f})},p={id:"sdk.toolbar.measurements.units.aria",message:"Measurement unit setup"};export const DimensionUnitSelector=()=>{let{availableDimensions:e}=o(),{unit:i}=n(),m=s(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{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 +1 @@
1
- import{jsx as i}from"react/jsx-runtime";import{useLingui as e,Trans as o}from"@lingui/react";import{Switch as r}from"@mui/material";import{useObservableEagerState as t}from"observable-hooks";import{useCallback as a}from"react";import{applicationConfigComponent as m}from"#package/domain";import{useAnalyticsService as n,useFirstRootComponent as s}from"#package/react-sdk";import{MobileToolbar as c}from"#package/ui-sdk";import{useConfigurator as l}from"../../../../application-runtime/index.js";import{FrontendAnalyticsFactory as p}from"../../../../common/index.js";let d={"aria-label":{id:"sdk.toolbar.measurements.input.aria",message:"Switch measurements"}};export const MeasurementsIndicatorsSwitch=()=>{let{_:u}=e(),g=s(m),f=g?.state.indicatorSwitch??!0,k=n(),{canvasSystem:b}=l(),h=t(b.dimensionIndicatorShown$),x=a(()=>{k.push(p.DimensionIndicatorsToggled()),b.toggleDimensionIndicator()},[k,b]);return f?i(c.SectionItem,{title:i(o,{id:"sdk.toolbar.measurements.indicators.label",message:"Dimension indicators"}),content:i(r,{inputProps:{...d,"aria-label":u(d["aria-label"])},checked:h,onChange:x})}):null};
1
+ import{jsx as e}from"react/jsx-runtime";import{useLingui as i,Trans as t}from"@lingui/react";import{Switch as a}from"@mui/material";import{useObservableEagerState as r}from"observable-hooks";import{useCallback as o}from"react";import{applicationConfigComponent as m}from"#package/domain";import{FrontendAnalyticsFactory as n,useAnalyticsService as s,useFirstRootComponent as c}from"#package/react-sdk";import{MobileToolbar as l}from"#package/ui-sdk";import{useConfigurator as p}from"../../../../application-runtime/index.js";let d={"aria-label":{id:"sdk.toolbar.measurements.input.aria",message:"Switch measurements"}};export const MeasurementsIndicatorsSwitch=()=>{let{_:u}=i(),g=c(m),f=g?.state.indicatorSwitch??!0,k=s(),{canvasSystem:b}=p(),h=r(b.dimensionIndicatorShown$),I=o(()=>{k.push(n.DimensionIndicatorsToggled()),b.toggleDimensionIndicator()},[k,b]);return f?e(l.SectionItem,{title:e(t,{id:"sdk.toolbar.measurements.indicators.label",message:"Dimension indicators"}),content:e(a,{inputProps:{...d,"aria-label":u(d["aria-label"])},checked:h,onChange:I})}):null};
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{memo as l,useCallback as t}from"react";import{useAnalyticsService as o,useDomain as r,useLocalizable as s}from"#package/react-sdk";import{DesktopToolbar as n,PhxIcon as i}from"#package/ui-sdk";import{FrontendAnalyticsFactory as a}from"../../../../common/index.js";let c={id:"sdk.toolbar.fullscreen.enter.label",message:"Open fullscreen"};export const EnterFullscreenToolbarAction=l(({openFullscreenButtonTitle:l=c,showTitle:m=!1})=>{let u=o(),{navigationSystem:d,storeSystem:g}=r(),p=t(()=>{u.push(a.FullScreenModeToggled()),g.stageAndCommit([d.getToggleFullscreenUpdate()])},[d,u,g]),f=s(l);return e(n.Button,{title:f,size:"small",onClick:p,showTitle:m,children:e(i,{name:"ArrowsOut"})})});let m={id:"sdk.toolbar.fullscreen.exit.label",message:"Exit fullscreen"};export const ExitFullscreenToolbarAction=l(({exitFullscreenButtonTitle:l=m,showTitle:c=!1})=>{let u=o(),{navigationSystem:d,storeSystem:g}=r(),p=t(()=>{u.push(a.FullScreenModeToggled()),g.stageAndCommit([d.getToggleFullscreenUpdate()])},[u,d,g]),f=s(l);return e(n.Button,{title:f,size:"small",onClick:p,showTitle:c,children:e(i,{name:"ArrowsIn"})})});
1
+ import{jsx as e}from"react/jsx-runtime";import{memo as l,useCallback as t}from"react";import{FrontendAnalyticsFactory as r,useAnalyticsService as o,useDomain as s,useLocalizable as n}from"#package/react-sdk";import{DesktopToolbar as i,PhxIcon as a}from"#package/ui-sdk";let c={id:"sdk.toolbar.fullscreen.enter.label",message:"Open fullscreen"};export const EnterFullscreenToolbarAction=l(({openFullscreenButtonTitle:l=c,showTitle:m=!1})=>{let u=o(),{navigationSystem:d,storeSystem:g}=s(),p=t(()=>{u.push(r.FullScreenModeToggled()),g.stageAndCommit([d.getToggleFullscreenUpdate()])},[d,u,g]),f=n(l);return e(i.Button,{title:f,size:"small",onClick:p,showTitle:m,children:e(a,{name:"ArrowsOut"})})});let m={id:"sdk.toolbar.fullscreen.exit.label",message:"Exit fullscreen"};export const ExitFullscreenToolbarAction=l(({exitFullscreenButtonTitle:l=m,showTitle:c=!1})=>{let u=o(),{navigationSystem:d,storeSystem:g}=s(),p=t(()=>{u.push(r.FullScreenModeToggled()),g.stageAndCommit([d.getToggleFullscreenUpdate()])},[u,d,g]),f=n(l);return e(i.Button,{title:f,size:"small",onClick:p,showTitle:c,children:e(a,{name:"ArrowsIn"})})});
@@ -1 +1 @@
1
- import{jsx as o,jsxs as e,Fragment as r}from"react/jsx-runtime";import{Trans as t}from"@lingui/react";import{Button as l}from"@mui/material";import{useCallback as a,useState as i}from"react";import{useAnalyticsService as s,useResolveLocalizable as n}from"#package/react-sdk";import{DesktopToolbar as m,Dialog as p,PhxIcon as c}from"#package/ui-sdk";import{FrontendAnalyticsFactory as d}from"../../../../common/index.js";let u={id:"sdk.toolbar.help.label",message:"Help"};export const HelpToolbarAction=g=>{let{content:h}=g,[k,f]=i(!1),b=s(),C=a(()=>{b.push(d.HelpDialogOpened()),f(!0)},[b]),x=a(()=>{b.push(d.HelpDialogClosed()),f(!1)},[b]),j=n();return e(r,{children:[o(m.Button,{title:j(u),onClick:C,children:o(c,{name:"Question"})}),o(p.Root,{isOpen:k,onClose:x,children:o(p.ContentLayout,{body:h,controls:o(l,{variant:"contained",onClick:x,children:o(t,{id:"sdk.toolbar.help.close.label",message:"Close"})})})})]})};
1
+ import{jsx as e,jsxs as o,Fragment as t}from"react/jsx-runtime";import{Trans as r}from"@lingui/react";import{Button as l}from"@mui/material";import{useCallback as a,useState as i}from"react";import{FrontendAnalyticsFactory as s,useAnalyticsService as n,useResolveLocalizable as m}from"#package/react-sdk";import{DesktopToolbar as p,Dialog as c,PhxIcon as d}from"#package/ui-sdk";let u={id:"sdk.toolbar.help.label",message:"Help"};export const HelpToolbarAction=g=>{let{content:h}=g,[k,b]=i(!1),f=n(),C=a(()=>{f.push(s.HelpDialogOpened()),b(!0)},[f]),x=a(()=>{f.push(s.HelpDialogClosed()),b(!1)},[f]),H=m();return o(t,{children:[e(p.Button,{title:H(u),onClick:C,children:e(d,{name:"Question"})}),e(c.Root,{isOpen:k,onClose:x,children:e(c.ContentLayout,{body:h,controls:e(l,{variant:"contained",onClick:x,children:e(r,{id:"sdk.toolbar.help.close.label",message:"Close"})})})})]})};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{useLingui as a}from"@lingui/react";import{Box as m,Stack as n}from"@mui/material";import{memo as o,useCallback as s,useMemo as i}from"react";import{match as u}from"ts-pattern";import{DimensionUnit as c}from"#package/domain";import{useAnalyticsService as p,useDimensionState as l}from"#package/react-sdk";import{DesktopToolbar as h,PhxIcon as d}from"#package/ui-sdk";import{FrontendAnalyticsFactory as M}from"../../../../common/index.js";import{DimensionUnitSelector as g}from"../common/DimensionUnitSelector.js";import{MeasurementsIndicatorsSwitch as f}from"../common/MeasurementsIndicatorsSwitch.js";export const MeasurementIcon=t=>{let{unit:r}=t;return u(r).with(c.mm,()=>e(d,{name:"CustomMeasureMm"})).with(c.cm,()=>e(d,{name:"CustomMeasureCm"})).with(c.m,()=>e(d,{name:"CustomMeasureM"})).with(c.inch,()=>e(d,{name:"CustomMeasureIn"})).with(c.feet,()=>e(d,{name:"CustomMeasureFt"})).exhaustive()};let C="measurements";export const MeasurementsToolbarAction=o(o=>{let{anchorRef:u,onClose:c,onToggle:d,openedKey:x,i18n:k}=o,{_:j}=a(),w=i(()=>({changeMeasureButtonTitle:j({id:"sdk.measurements",message:"Change measure"}),changeMeasureButtonAriaLabel:j({id:"sdk.toolbar.measurements.change.aria",message:"open measure menu"}),...k}),[k,j]),b=p(),{unit:B}=l(),I=s(()=>{b.push(M.MeasurementsMenuToggled()),d(C)},[b,d]),T=s(e=>{b.push(M.MeasurementsMenuClosed()),c(e)},[b,c]);return t(r,{children:[e(h.Button,{title:w.changeMeasureButtonTitle,size:"small","aria-expanded":x===C?"true":void 0,"aria-label":w.changeMeasureButtonAriaLabel,"aria-haspopup":"menu",onClick:I,children:e(MeasurementIcon,{unit:B})}),e(h.Popper,{placement:"top-start",anchorEl:u.current,isOpen:x===C,onClose:T,children:e(m,{component:"div",sx:{p:2},children:t(n,{spacing:2,direction:"column",children:[e(f,{}),e(g,{})]})})})]})});
1
+ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{useLingui as a}from"@lingui/react";import{Box as n,Stack as m}from"@mui/material";import{memo as s,useCallback as o,useMemo as i}from"react";import{match as u}from"ts-pattern";import{DimensionUnit as c}from"#package/domain";import{FrontendAnalyticsFactory as p,useAnalyticsService as l,useDimensionState as h}from"#package/react-sdk";import{DesktopToolbar as d,PhxIcon as M}from"#package/ui-sdk";import{DimensionUnitSelector as g}from"../common/DimensionUnitSelector.js";import{MeasurementsIndicatorsSwitch as f}from"../common/MeasurementsIndicatorsSwitch.js";export const MeasurementIcon=t=>{let{unit:r}=t;return u(r).with(c.mm,()=>e(M,{name:"CustomMeasureMm"})).with(c.cm,()=>e(M,{name:"CustomMeasureCm"})).with(c.m,()=>e(M,{name:"CustomMeasureM"})).with(c.inch,()=>e(M,{name:"CustomMeasureIn"})).with(c.feet,()=>e(M,{name:"CustomMeasureFt"})).exhaustive()};let C="measurements";export const MeasurementsToolbarAction=s(s=>{let{anchorRef:u,onClose:c,onToggle:M,openedKey:k,i18n:x}=s,{_:w}=a(),b=i(()=>({changeMeasureButtonTitle:w({id:"sdk.measurements",message:"Change measure"}),changeMeasureButtonAriaLabel:w({id:"sdk.toolbar.measurements.change.aria",message:"open measure menu"}),...x}),[x,w]),j=l(),{unit:B}=h(),I=o(()=>{j.push(p.MeasurementsMenuToggled()),M(C)},[j,M]),T=o(e=>{j.push(p.MeasurementsMenuClosed()),c(e)},[j,c]);return t(r,{children:[e(d.Button,{title:b.changeMeasureButtonTitle,size:"small","aria-expanded":k===C?"true":void 0,"aria-label":b.changeMeasureButtonAriaLabel,"aria-haspopup":"menu",onClick:I,children:e(MeasurementIcon,{unit:B})}),e(d.Popper,{placement:"top-start",anchorEl:u.current,isOpen:k===C,onClose:T,children:e(n,{component:"div",sx:{p:2},children:t(m,{spacing:2,direction:"column",children:[e(f,{}),e(g,{})]})})})]})});
@@ -1 +1 @@
1
- import{jsx as o,jsxs as e}from"react/jsx-runtime";import{useThemeProps as r}from"@mui/material";import{useObservableEagerState as t}from"observable-hooks";import{memo as d,useCallback as i}from"react";import{useAnalyticsService as l,useDomain as s,useResolveLocalizable as a}from"#package/react-sdk";import{DesktopToolbar as n,PhxIcon as m}from"#package/ui-sdk";import{FrontendAnalyticsFactory as p}from"../../../../common/index.js";let u={id:"sdk.toolbar.undoRedo.undo.label",message:"Undo"},c={id:"sdk.toolbar.undoRedo.redo.label",message:"Redo"};export const UndoRedoToolbarGroup=d(d=>{let{showLabels:k=!1,disableTooltip:b=!1,undoButtonTitle:h=u,redoButtonTitle:f=c}=r({name:"PhxToolbarUndoRedo",props:d}),C=l(),{undoSystem:w}=s(),{canUndo:x,canRedo:R}=t(w.can$),T=a(),B=i(()=>{C.push(p.UndoButtonClicked()),w.undo()},[C,w]),g=i(()=>{C.push(p.RedoButtonClicked()),w.redo()},[C,w]);return e(n.ButtonGroup,{children:[o(n.Button,{title:T(h),onClick:B,disabled:!x,showTitle:k,disableTooltip:b,children:o(m,{name:"ArrowCounterClockwise"})}),o(n.Button,{title:T(f),onClick:g,disabled:!R,showTitle:k,disableTooltip:b,children:o(m,{name:"ArrowClockwise"})})]})});
1
+ import{jsx as o,jsxs as e}from"react/jsx-runtime";import{useThemeProps as r}from"@mui/material";import{useObservableEagerState as t}from"observable-hooks";import{memo as d,useCallback as i}from"react";import{FrontendAnalyticsFactory as l,useAnalyticsService as a,useDomain as s,useResolveLocalizable as n}from"#package/react-sdk";import{DesktopToolbar as m,PhxIcon as u}from"#package/ui-sdk";let p={id:"sdk.toolbar.undoRedo.undo.label",message:"Undo"},c={id:"sdk.toolbar.undoRedo.redo.label",message:"Redo"};export const UndoRedoToolbarGroup=d(d=>{let{showLabels:k=!1,disableTooltip:b=!1,undoButtonTitle:h=p,redoButtonTitle:C=c}=r({name:"PhxToolbarUndoRedo",props:d}),f=a(),{undoSystem:w}=s(),{canUndo:R,canRedo:T}=t(w.can$),x=n(),B=i(()=>{f.push(l.UndoButtonClicked()),w.undo()},[f,w]),g=i(()=>{f.push(l.RedoButtonClicked()),w.redo()},[f,w]);return e(m.ButtonGroup,{children:[o(m.Button,{title:x(h),onClick:B,disabled:!R,showTitle:k,disableTooltip:b,children:o(u,{name:"ArrowCounterClockwise"})}),o(m.Button,{title:x(C),onClick:g,disabled:!T,showTitle:k,disableTooltip:b,children:o(u,{name:"ArrowClockwise"})})]})});
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{memo as o,useCallback as r}from"react";import{createPhoenixLayoutElement as t,enterFullscreenToolbarButtonSchema as l}from"#package/domain";import{useAnalyticsService as m,useDomain as n,useLocalizable as s}from"#package/react-sdk";import{DesktopToolbar as a,PhxIcon as c}from"#package/ui-sdk";import{FrontendAnalyticsFactory as i}from"../../common/index.js";let p={id:"sdk.toolbar.fullscreen.enter.label",message:"Open fullscreen"};export const EnterFullscreenToolbarButton=t({schema:l,component:o(o=>{let{icon:t,showTitle:l=!1}=o,u=m(),{navigationSystem:d,storeSystem:g}=n(),f=r(()=>{u.push(i.FullScreenModeToggled()),g.stageAndCommit([d.getToggleFullscreenUpdate()])},[d,u,g]),k=s(p);return e(a.Button,{title:k,size:"small",onClick:f,showTitle:l,children:e(c,{name:t??"ArrowsOut"})})})});
1
+ import{jsx as e}from"react/jsx-runtime";import{memo as t,useCallback as r}from"react";import{createPhoenixLayoutElement as o,enterFullscreenToolbarButtonSchema as l}from"#package/domain";import{FrontendAnalyticsFactory as a,useAnalyticsService as n,useDomain as s,useLocalizable as m}from"#package/react-sdk";import{DesktopToolbar as c,PhxIcon as i}from"#package/ui-sdk";let p={id:"sdk.toolbar.fullscreen.enter.label",message:"Open fullscreen"};export const EnterFullscreenToolbarButton=o({schema:l,component:t(t=>{let{icon:o,showTitle:l=!1}=t,u=n(),{navigationSystem:d,storeSystem:g}=s(),f=r(()=>{u.push(a.FullScreenModeToggled()),g.stageAndCommit([d.getToggleFullscreenUpdate()])},[d,u,g]),k=m(p);return e(c.Button,{title:k,size:"small",onClick:f,showTitle:l,children:e(i,{name:o??"ArrowsOut"})})})});
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{memo as o,useCallback as t}from"react";import{createPhoenixLayoutElement as r,exitFullscreenToolbarButtonSchema as l}from"#package/domain";import{useAnalyticsService as m,useDomain as s,useLocalizable as a}from"#package/react-sdk";import{DesktopToolbar as i,PhxIcon as n}from"#package/ui-sdk";import{FrontendAnalyticsFactory as c}from"../../common/index.js";let p={id:"sdk.toolbar.fullscreen.exit.label",message:"Exit fullscreen"};export const ExitFullscreenToolbarButton=r({schema:l,component:o(o=>{let{icon:r,showTitle:l=!1}=o,d=m(),{navigationSystem:u,storeSystem:g}=s(),f=t(()=>{d.push(c.FullScreenModeToggled()),g.stageAndCommit([u.getToggleFullscreenUpdate()])},[d,u,g]),k=a(p);return e(i.Button,{title:k,size:"small",onClick:f,showTitle:l,children:e(n,{name:r??"ArrowsIn"})})})});
1
+ import{jsx as e}from"react/jsx-runtime";import{memo as t,useCallback as o}from"react";import{createPhoenixLayoutElement as r,exitFullscreenToolbarButtonSchema as l}from"#package/domain";import{FrontendAnalyticsFactory as a,useAnalyticsService as s,useDomain as m,useLocalizable as i}from"#package/react-sdk";import{DesktopToolbar as n,PhxIcon as c}from"#package/ui-sdk";let p={id:"sdk.toolbar.fullscreen.exit.label",message:"Exit fullscreen"};export const ExitFullscreenToolbarButton=r({schema:l,component:t(t=>{let{icon:r,showTitle:l=!1}=t,u=s(),{navigationSystem:d,storeSystem:g}=m(),f=o(()=>{u.push(a.FullScreenModeToggled()),g.stageAndCommit([d.getToggleFullscreenUpdate()])},[u,d,g]),k=i(p);return e(n.Button,{title:k,size:"small",onClick:f,showTitle:l,children:e(c,{name:r??"ArrowsIn"})})})});
@@ -1 +1 @@
1
- import{jsx as o,jsxs as e,Fragment as r}from"react/jsx-runtime";import{Trans as t}from"@lingui/react";import{Button as a}from"@mui/material";import{memo as l,useCallback as i,useState as m}from"react";import{createPhoenixLayoutElement as n,helpToolbarButtonSchema as s}from"#package/domain";import{useAnalyticsService as p,useLocalizable as c}from"#package/react-sdk";import{DesktopToolbar as d,Dialog as u,PhxIcon as f}from"#package/ui-sdk";import{FrontendAnalyticsFactory as g}from"../../common/index.js";import{ToolbarHelp as h}from"./ToolbarHelp.js";let k={id:"sdk.toolbar.help.label",message:"Help"};export const HelpToolbarButton=n({schema:s,component:l(l=>{let{children:n,icon:s}=l,[b,C]=m(!1),j=p(),x=i(()=>{j.push(g.HelpDialogOpened()),C(!0)},[j]),H=i(()=>{j.push(g.HelpDialogClosed()),C(!1)},[j]),T=c(k);return e(r,{children:[o(d.Button,{title:T,onClick:x,children:o(f,{name:s??"Question"})}),o(u.Root,{isOpen:b,onClose:H,children:o(u.ContentLayout,{body:n??o(h,{}),controls:o(a,{variant:"contained",onClick:H,children:o(t,{id:"sdk.toolbar.help.close.label",message:"Close"})})})})]})})});
1
+ import{jsx as o,jsxs as e,Fragment as r}from"react/jsx-runtime";import{Trans as t}from"@lingui/react";import{Button as a}from"@mui/material";import{memo as l,useCallback as i,useState as s}from"react";import{createPhoenixLayoutElement as n,helpToolbarButtonSchema as m}from"#package/domain";import{FrontendAnalyticsFactory as p,useAnalyticsService as c,useLocalizable as d}from"#package/react-sdk";import{DesktopToolbar as u,Dialog as g,PhxIcon as h}from"#package/ui-sdk";import{ToolbarHelp as k}from"./ToolbarHelp.js";let f={id:"sdk.toolbar.help.label",message:"Help"};export const HelpToolbarButton=n({schema:m,component:l(l=>{let{children:n,icon:m}=l,[b,C]=s(!1),H=c(),j=i(()=>{H.push(p.HelpDialogOpened()),C(!0)},[H]),x=i(()=>{H.push(p.HelpDialogClosed()),C(!1)},[H]),T=d(f);return e(r,{children:[o(u.Button,{title:T,onClick:j,children:o(h,{name:m??"Question"})}),o(g.Root,{isOpen:b,onClose:x,children:o(g.ContentLayout,{body:n??o(k,{}),controls:o(a,{variant:"contained",onClick:x,children:o(t,{id:"sdk.toolbar.help.close.label",message:"Close"})})})})]})})});
@@ -1,4 +1,5 @@
1
1
  import type { PhoenixLayoutElementRegistration } from '#package/domain';
2
2
  export declare const createLayoutCustomOwnerUi: (Element: () => JSX.Element) => PhoenixLayoutElementRegistration;
3
3
  export type CreateLayoutCustomOwnerUi = (Element: () => JSX.Element) => PhoenixLayoutElementRegistration;
4
+ /** The owner UI of `layout: custom`. The project's element mounts no message services, so the save snackbars come from here. */
4
5
  export declare const LayoutCustomOwnerUi: () => import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- import{jsx as t}from"react/jsx-runtime";import{createCustomPhoenixLayoutElement as o}from"#package/domain";import{PhoenixLayoutElement as e}from"#package/react-sdk";let r="LayoutCustomOwnerUi";export const createLayoutCustomOwnerUi=t=>o(r,t);export const LayoutCustomOwnerUi=()=>t(e,{name:r,elementProps:{},defaultSlot:()=>null});
1
+ import{jsx as e,jsxs as t,Fragment as a}from"react/jsx-runtime";import{createCustomPhoenixLayoutElement as o}from"#package/domain";import{PhoenixLayoutElement as r}from"#package/react-sdk";import{SaveMessageSnackbars as s}from"../save-message-snackbars/index.js";let m="LayoutCustomOwnerUi";export const createLayoutCustomOwnerUi=e=>o(m,e);export const LayoutCustomOwnerUi=()=>t(a,{children:[e(s,{}),e(r,{name:m,elementProps:{},defaultSlot:()=>null})]});
@@ -1,4 +1,5 @@
1
1
  import type { PhoenixLayoutElementRegistration } from '#package/domain';
2
2
  export declare const createLayoutCustomReadUi: (Element: () => JSX.Element) => PhoenixLayoutElementRegistration;
3
3
  export type CreateLayoutCustomReadUi = (Element: () => JSX.Element) => PhoenixLayoutElementRegistration;
4
+ /** The read UI of `layout: custom`. Read mode shows no save messages; the save snackbars are mounted so that one left from owner mode closes. */
4
5
  export declare const LayoutCustomReadUi: () => import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- import{jsx as t}from"react/jsx-runtime";import{createCustomPhoenixLayoutElement as o}from"#package/domain";import{PhoenixLayoutElement as e}from"#package/react-sdk";let a="LayoutCustomReadUi";export const createLayoutCustomReadUi=t=>o(a,t);export const LayoutCustomReadUi=()=>t(e,{name:a,elementProps:{},defaultSlot:()=>null});
1
+ import{jsx as a,jsxs as e,Fragment as t}from"react/jsx-runtime";import{createCustomPhoenixLayoutElement as o}from"#package/domain";import{PhoenixLayoutElement as s}from"#package/react-sdk";import{SaveMessageSnackbars as r}from"../save-message-snackbars/index.js";let m="LayoutCustomReadUi";export const createLayoutCustomReadUi=a=>o(m,a);export const LayoutCustomReadUi=()=>e(t,{children:[a(r,{}),a(s,{name:m,elementProps:{},defaultSlot:()=>null})]});
@@ -1 +1 @@
1
- import{jsx as e,jsxs as r,Fragment as s}from"react/jsx-runtime";import{Box as m,Stack as o}from"@mui/material";import{memo as n,useCallback as a}from"react";import{createPhoenixLayoutElement as t,measurementsToolbarButtonSchema as i}from"#package/domain";import{useAnalyticsService as u,useDimensionState as p,useLocalizable as l}from"#package/react-sdk";import{DesktopToolbar as c}from"#package/ui-sdk";import{FrontendAnalyticsFactory as d}from"../../common/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";import{useMeasurementsVisibility as j}from"./measurements/use-measurements-visibility.js";let k="measurements",x={id:"sdk.measurements",message:"Change measure"},M={id:"sdk.toolbar.measurements.change.aria",message:"open measure menu"};export const MeasurementsToolbarButton=t({schema:i,component:n(n=>{let{showIndicatorSwitch:t,icons:i}=n,{ref:b,handleClose:C,handleToggle:T,openedKey:v}=c.useToolbarPopper(),B=u(),{unit:I}=p(),{indicatorSwitchShown:P,measurementsShown:S}=j(t),w=a(()=>{B.push(d.MeasurementsMenuToggled()),T(k)},[B,T]),y=a(e=>{B.push(d.MeasurementsMenuClosed()),C(e)},[B,C]),z=l(x),D=l(M);return S?r(s,{children:[e(c.Button,{ref:b,title:z,size:"small","aria-expanded":v===k?"true":void 0,"aria-label":D,"aria-haspopup":"menu",onClick:w,children:e(g,{unit:I,icons:i})}),e(c.Popper,{placement:"top-start",anchorEl:b.current,isOpen:v===k,onClose:y,children:e(m,{component:"div",sx:{p:2},children:r(o,{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 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 +1 @@
1
- import{jsx as o}from"react/jsx-runtime";import{memo as e,useCallback as r}from"react";import{createPhoenixLayoutElement as t,redoToolbarButtonSchema as m}from"#package/domain";import{useAnalyticsService as a,useDomain as i,useEagerObservableValue as d,useLocalizable as n}from"#package/react-sdk";import{DesktopToolbar as c,PhxIcon as s}from"#package/ui-sdk";import{FrontendAnalyticsFactory as l}from"../../common/index.js";let p={id:"sdk.toolbar.undoRedo.redo.label",message:"Redo"};export const RedoToolbarButton=t({schema:m,component:e(e=>{let{icon:t,showTitle:m=!1}=e,k=a(),{undoSystem:u}=i(),{canRedo:f}=d(u.can$),b=r(()=>{k.push(l.RedoButtonClicked()),u.redo()},[k,u]),g=n(p);return o(c.Button,{title:g,onClick:b,disabled:!f,showTitle:m,children:o(s,{name:t??"ArrowClockwise"})})})});
1
+ import{jsx as o}from"react/jsx-runtime";import{memo as e}from"react";import{createPhoenixLayoutElement as r,redoToolbarButtonSchema as t}from"#package/domain";import{useLocalizable as a,useUndoRedo as m}from"#package/react-sdk";import{DesktopToolbar as i,PhxIcon as d}from"#package/ui-sdk";let s={id:"sdk.toolbar.undoRedo.redo.label",message:"Redo"};export const RedoToolbarButton=r({schema:t,component:e(e=>{let{icon:r,showTitle:t=!1}=e,{canRedo:c,redo:l}=m(),n=a(s);return o(i.Button,{title:n,onClick:l,disabled:!c,showTitle:t,children:o(d,{name:r??"ArrowClockwise"})})})});
@@ -1 +1 @@
1
- import{jsx as o}from"react/jsx-runtime";import{memo as t,useCallback as e}from"react";import{createPhoenixLayoutElement as r,undoToolbarButtonSchema as n}from"#package/domain";import{useAnalyticsService as m,useDomain as a,useEagerObservableValue as i,useLocalizable as d}from"#package/react-sdk";import{DesktopToolbar as c,PhxIcon as s}from"#package/ui-sdk";import{FrontendAnalyticsFactory as l}from"../../common/index.js";let p={id:"sdk.toolbar.undoRedo.undo.label",message:"Undo"};export const UndoToolbarButton=r({schema:n,component:t(t=>{let{icon:r,showTitle:n=!1}=t,u=m(),{undoSystem:k}=a(),{canUndo:f}=i(k.can$),b=e(()=>{u.push(l.UndoButtonClicked()),k.undo()},[u,k]),g=d(p);return o(c.Button,{title:g,onClick:b,disabled:!f,showTitle:n,children:o(s,{name:r??"ArrowCounterClockwise"})})})});
1
+ import{jsx as o}from"react/jsx-runtime";import{memo as e}from"react";import{createPhoenixLayoutElement as t,undoToolbarButtonSchema as r}from"#package/domain";import{useLocalizable as a,useUndoRedo as m}from"#package/react-sdk";import{DesktopToolbar as n,PhxIcon as i}from"#package/ui-sdk";let d={id:"sdk.toolbar.undoRedo.undo.label",message:"Undo"};export const UndoToolbarButton=t({schema:r,component:e(e=>{let{icon:t,showTitle:r=!1}=e,{canUndo:s,undo:c}=m(),l=a(d);return o(n.Button,{title:l,onClick:c,disabled:!s,showTitle:r,children:o(i,{name:t??"ArrowCounterClockwise"})})})});
@@ -1 +1 @@
1
- import{useMemo as e}from"react";import{useAccessService as o,useAnalyticsService as t,useDomainApplication as i,useIntegrationState as r}from"#package/react-sdk";import{FrontendAnalyticsFactory as a}from"../../../../../common/index.js";import{useConfiguratorRouting as d,usePresetSelection as n,usePreview as s}from"../../../../../configurator-context/index.js";import{useCloseAction as c}from"../../../../../integration/index.js";export const useGoBackAction=()=>{let m=t(),{configurationPersistSystem:l}=i(),p=d(),{presetCategories:u}=n(),{isPreview:w,isPreviewEnabled:f,leave:x}=s(),{accessInfo:g}=o(),k=u.flatMap(e=>e.presets).length>1,v=r(),C=c();return e(()=>v.embeddedView?null:k?async()=>{m.push(a.GoToProductsClicked()),g.viewMode||await l.save(),p.goToIndex()}:null!==C?async()=>{m.push(a.CloseConfiguratorClicked()),g.viewMode||await l.save(),await C()}:f&&!w?()=>{m.push(a.ExpandedViewClosed()),x()}:null,[m,l,k,v.embeddedView,w,f,x,p,C,g.viewMode])};
1
+ import{useMemo as e}from"react";import{FrontendAnalyticsFactory as o,useAccessService as t,useAnalyticsService as i,useDomainApplication as a,useIntegrationState as r}from"#package/react-sdk";import{useConfiguratorRouting as d,usePresetSelection as n,usePreview as s}from"../../../../../configurator-context/index.js";import{useCloseAction as c}from"../../../../../integration/index.js";export const useGoBackAction=()=>{let l=i(),{configurationPersistSystem:p}=a(),u=d(),{presetCategories:m}=n(),{isPreview:w,isPreviewEnabled:f,leave:g}=s(),{accessInfo:x}=t(),k=m.flatMap(e=>e.presets).length>1,v=r(),C=c();return e(()=>v.embeddedView?null:k?async()=>{l.push(o.GoToProductsClicked()),x.viewMode||await p.save(),u.goToIndex()}:null!==C?async()=>{l.push(o.CloseConfiguratorClicked()),x.viewMode||await p.save(),await C()}:f&&!w?()=>{l.push(o.ExpandedViewClosed()),g()}:null,[l,p,k,v.embeddedView,w,f,g,u,C,x.viewMode])};
@@ -1 +1 @@
1
- import{jsx as t}from"react/jsx-runtime";import{Tab as a,Tabs as o}from"@mui/material";import{memo as e,useCallback as n}from"react";import{horizontalTabsComponent as i}from"#package/domain";import{getI18nKey as r,useActiveNavigationState as s,useAnalyticsService as l,useComponents as m,useDomain as c,useResolveLocalizable as p}from"#package/react-sdk";import{PhxIcon as b}from"#package/ui-sdk";import{FrontendAnalyticsFactory as d}from"../../../../../common/index.js";let u=e(e=>{let{component:i}=e,m=s(),u=l(),{navigationSystem:f,storeSystem:g}=c(),h=p(),v=i.state.tabs.findIndex(t=>t.navigationStates.includes(m));return t(o,{variant:"scrollable",value:-1!==v&&v,onChange:n((t,a)=>{let o=i.state.tabs[a];if(!o)return;let e=o.navigationStates[0];e&&(u.push(d.TopNavigationStepClicked(e)),g.stageAndCommit([f.getNavigationUpdate(e)]))},[i.state.tabs,u,g,f]),children:i.state.tabs.map(o=>t(a,{label:h(o.label),icon:o.icon?t(b,{name:o.icon}):void 0,iconPosition:"start"},r(o.label)))})});export const DesktopHorizontalTabs=e(()=>{let a=m({componentTypes:[i]});if(0===a.length)return null;if(a.length>1)throw Error("Multiple horizontal tabs components are active, only one horizontal tabs component can be active at a time, check your domain configuration to ensure only one horizontalTabs component is defined");return t(u,{component:a.at(0)})});
1
+ import{jsx as t}from"react/jsx-runtime";import{Tab as a,Tabs as e}from"@mui/material";import{memo as o,useCallback as n}from"react";import{horizontalTabsComponent as i}from"#package/domain";import{FrontendAnalyticsFactory as r,getI18nKey as s,useActiveNavigationState as l,useAnalyticsService as m,useComponents as c,useDomain as p,useResolveLocalizable as b}from"#package/react-sdk";import{PhxIcon as u}from"#package/ui-sdk";let d=o(o=>{let{component:i}=o,c=l(),d=m(),{navigationSystem:g,storeSystem:f}=p(),h=b(),v=i.state.tabs.findIndex(t=>t.navigationStates.includes(c));return t(e,{variant:"scrollable",value:-1!==v&&v,onChange:n((t,a)=>{let e=i.state.tabs[a];if(!e)return;let o=e.navigationStates[0];o&&(d.push(r.TopNavigationStepClicked(o)),f.stageAndCommit([g.getNavigationUpdate(o)]))},[i.state.tabs,d,f,g]),children:i.state.tabs.map(e=>t(a,{label:h(e.label),icon:e.icon?t(u,{name:e.icon}):void 0,iconPosition:"start"},s(e.label)))})});export const DesktopHorizontalTabs=o(()=>{let a=c({componentTypes:[i]});if(0===a.length)return null;if(a.length>1)throw Error("Multiple horizontal tabs components are active, only one horizontal tabs component can be active at a time, check your domain configuration to ensure only one horizontalTabs component is defined");return t(d,{component:a.at(0)})});
@@ -1 +1 @@
1
- import{jsx as t,jsxs as e}from"react/jsx-runtime";import{Trans as o}from"@lingui/react";import{memo as i,useCallback as a}from"react";import{useActiveNavigationState as n,useAnalyticsService as r,useDomain as s,usePresetEmbeddedState as p,useResolveLocalizable as c}from"#package/react-sdk";import{TopNavigation as m,useResponsive as l}from"#package/ui-sdk";import{FrontendAnalyticsFactory as d}from"../../../../../common/index.js";import{useConfiguratorRouting as g,usePresetSelection as u}from"../../../../../configurator-context/index.js";export const StepsNavigation=i(i=>{let{steps:f}=i,k=r(),{navigationSystem:x,storeSystem:v}=s(),h=n(),C=g(),S=c(),{presetCategories:j}=u(),T=p(),N=j.flatMap(t=>t.presets).length>1,b=!T&&N,I=f.findIndex(t=>t.navigationStates.includes(h))+ +!!b,{isTablet:P}=l(),y=a(()=>{k.push(d.GoToProductsClicked()),C.goToIndex()},[k,C]);return e(m.Root,{activeStep:I,nonLinear:!0,compact:P,fullWidth:!0,children:[b&&t(m.Step,{isCompleted:!0,onClick:y,compact:P,children:t(o,{id:"sdk.layout.navigation.steps.first.label",message:"Products"})}),f.map((e,o)=>{let i=b?o<I-1:o<I,a=S(e.label);return t(m.Step,{isCompleted:i,isDisabled:!i,compact:P,onClick:()=>{let t=e.navigationStates[0];t&&(k.push(d.TopNavigationStepClicked(t)),v.stageAndCommit([x.getNavigationUpdate(t)]))},children:a},a)})]})});
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 +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{useAnalyticsService as a,useDimensionConfig as o,useDimensionState as n,useDimensions as l,useLocalizable as s}from"#package/react-sdk";import{ToggleSelector as c}from"#package/ui-sdk";import{FrontendAnalyticsFactory as u}from"../../../common/index.js";let h=o=>{let{value:n}=o,s=a(),{setGlobalUnit:h}=l(),p=e(()=>{s.push(u.GlobalDimensionsButtonClicked(n)),h(n)},[s,n,h]),f=i(()=>m(n).with(r.mm,()=>"mm").with(r.cm,()=>"cm").with(r.m,()=>"m").with(r.inch,()=>"in").with(r.feet,()=>"ft").exhaustive(),[n]),d=i(()=>m(n).with(r.mm,()=>"millimeter").with(r.cm,()=>"centimeter").with(r.m,()=>"meter").with(r.inch,()=>"inches").with(r.feet,()=>"feet").exhaustive(),[n]);return t(c.Item,{value:n,"aria-label":d,onClick:p,children:f})},p={id:"sdk.toolbar.measurements.units.aria",message:"Measurement unit setup"};export const DimensionUnitSelector=()=>{let{availableDimensions:e}=o(),{unit:i}=n(),m=s(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{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 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{Trans as o}from"@lingui/react";import{Switch as t}from"@mui/material";import{useObservableEagerState as i}from"observable-hooks";import{useCallback as r}from"react";import{useAnalyticsService as a,useLocalizable as m}from"#package/react-sdk";import{MobileToolbar as n}from"#package/ui-sdk";import{useConfigurator as s}from"../../../application-runtime/index.js";import{FrontendAnalyticsFactory as c}from"../../../common/frontend-analytics.js";let p={id:"sdk.toolbar.measurements.input.aria",message:"Switch measurements"};export const MeasurementsIndicatorsSwitch=()=>{let d=a(),{canvasSystem:l}=s(),u=i(l.dimensionIndicatorShown$),f=r(()=>{d.push(c.DimensionIndicatorsToggled()),l.toggleDimensionIndicator()},[d,l]),g=m(p);return e(n.SectionItem,{title:e(o,{id:"sdk.toolbar.measurements.indicators.label",message:"Dimension indicators"}),content:e(t,{inputProps:{"aria-label":g},checked:u,onChange:f})})};
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 +1 @@
1
- import{jsx as t}from"react/jsx-runtime";import i from"lodash/noop.js";import{useCallback as e}from"react";import{finalizeButtonComponent as o,finalizePageComponent as a}from"#package/domain";import{useAnalyticsService as n,useDomain as s,useFinalizeViolations as m,useFirstRootComponent as r}from"#package/react-sdk";import{FrontendAnalyticsFactory as l}from"../../../../common/index.js";import{CustomFinalizeButton as c}from"../common/CustomFinalizeButton.js";let d=()=>t(c,{hints:"Finalize feature is not configured.",disabled:!0,onClick:i}),p=i=>{let{finalizeNavigationStates:o}=i,{navigationSystem:a,storeSystem:r}=s(),d=n(),p=e(async()=>{let t=o[0];t&&(d.push(l.FinalizeButtonClicked()),r.stageAndCommit([a.getPushNavigationUpdate(t,r.stateSlices.committed.value.state)]))},[o,a,d,r]),{disabled:u,hints:f}=m();return t(c,{hints:f,disabled:u,onClick:p})};export const BasicFinalizeButton=()=>{let i=r(o),e=r(a);return i?i?.state.button:e?t(p,{finalizeNavigationStates:e.state.finalizeNavigationStates}):t(d,{})};
1
+ import{jsx as t}from"react/jsx-runtime";import i from"lodash/noop.js";import{useCallback as e}from"react";import{finalizeButtonComponent as a,finalizePageComponent as o}from"#package/domain";import{FrontendAnalyticsFactory as n,useAnalyticsService as s,useDomain as r,useFinalizeViolations as m,useFirstRootComponent as l}from"#package/react-sdk";import{CustomFinalizeButton as c}from"../common/CustomFinalizeButton.js";let u=()=>t(c,{hints:"Finalize feature is not configured.",disabled:!0,onClick:i}),d=i=>{let{finalizeNavigationStates:a}=i,{navigationSystem:o,storeSystem:l}=r(),u=s(),d=e(async()=>{let t=a[0];t&&(u.push(n.FinalizeButtonClicked()),l.stageAndCommit([o.getPushNavigationUpdate(t,l.stateSlices.committed.value.state)]))},[a,o,u,l]),{disabled:p,hints:f}=m();return t(c,{hints:f,disabled:p,onClick:d})};export const BasicFinalizeButton=()=>{let i=l(a),e=l(o);return i?i?.state.button:e?t(d,{finalizeNavigationStates:e.state.finalizeNavigationStates}):t(u,{})};
@@ -1 +1 @@
1
- import{jsx as t}from"react/jsx-runtime";import{Trans as o}from"@lingui/react";import{useCallback as i}from"react";import{useAnalyticsService as e,useResolveLocalizable as r}from"#package/react-sdk";import{PhxIcon as a,ResponsiveSidebarFooterButton as s}from"#package/ui-sdk";import{FrontendAnalyticsFactory as n}from"../../../../common/index.js";export const CustomFinalizeButton=m=>{let{busy:l,disabled:p,hints:c,icon:u,onClick:d,title:f}=m,k=r(),g=e();return t(s,{tooltip:c,busy:l,disabled:p,onClick:i(t=>{t.preventDefault(),t.stopPropagation(),g.push(n.FinalizeButtonClicked()),d?.()},[g,d]),slotProps:{button:{startIcon:u?t(a,{name:u}):void 0}},children:f?k(f):t(o,{id:"sdk.layout.sidebar.finalizePage.label",message:"Finalize"})})};
1
+ import{jsx as t}from"react/jsx-runtime";import{Trans as o}from"@lingui/react";import{useCallback as a}from"react";import{FrontendAnalyticsFactory as e,useAnalyticsService as i,useResolveLocalizable as r}from"#package/react-sdk";import{PhxIcon as s,ResponsiveSidebarFooterButton as n}from"#package/ui-sdk";export const CustomFinalizeButton=l=>{let{busy:m,disabled:p,hints:u,icon:c,onClick:d,title:f}=l,k=r(),g=i();return t(n,{tooltip:u,busy:m,disabled:p,onClick:a(t=>{t.preventDefault(),t.stopPropagation(),g.push(e.FinalizeButtonClicked()),d?.()},[g,d]),slotProps:{button:{startIcon:c?t(s,{name:c}):void 0}},children:f?k(f):t(o,{id:"sdk.layout.sidebar.finalizePage.label",message:"Finalize"})})};
@@ -1 +1 @@
1
- import{jsx as r}from"react/jsx-runtime";import{Trans as m}from"@lingui/react";import{memo as o,useCallback as t}from"react";import{createPhoenixLayoutElement as a,enterSummaryButtonSchema as e}from"#package/domain";import{useAnalyticsService as i}from"#package/react-sdk";import{ResponsiveSidebarFooterButton as n}from"#package/ui-sdk";import{FrontendAnalyticsFactory as c}from"../../../../common/index.js";import{useEnterSidebarSummary as s}from"../../../../configurator-context/index.js";export const EnterSummaryButton=a({schema:e,component:o(()=>{let o=i(),a=s();return r(n,{onClick:t(()=>{o.push(c.SummaryButtonClicked()),a()},[o,a]),children:r(m,{id:"sdk.layout.summary.button.label",message:"Summary"})})})});
1
+ import{jsx as r}from"react/jsx-runtime";import{Trans as t}from"@lingui/react";import{memo as m,useCallback as o}from"react";import{createPhoenixLayoutElement as a,enterSummaryButtonSchema as e}from"#package/domain";import{FrontendAnalyticsFactory as i,useAnalyticsService as n}from"#package/react-sdk";import{ResponsiveSidebarFooterButton as c}from"#package/ui-sdk";import{useEnterSidebarSummary as s}from"../../../../configurator-context/index.js";export const EnterSummaryButton=a({schema:e,component:m(()=>{let m=n(),a=s();return r(c,{onClick:o(()=>{m.push(i.SummaryButtonClicked()),a()},[m,a]),children:r(t,{id:"sdk.layout.summary.button.label",message:"Summary"})})})});
@@ -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{useAnalyticsService as m,useDomain as s}from"#package/react-sdk";import{useResponsive as l}from"#package/ui-sdk";import{useConfigurator as c}from"../../../../application-runtime/index.js";import{FrontendAnalyticsFactory as p}from"../../../../common/index.js";export const NextStepButton=r({schema:n,component:i(()=>{let i=m(),{layoutSystem:r}=c(),{navigationSystem:n,storeSystem:d}=s(),{isDesktop:g}=l(),u=o(()=>{let t=n.getActiveNavigationState(d.stateSlices.committed.value.state),e=r.getNavigationSteps(d.stateSlices.committed.value.state);i.push(p.NextStepButtonClicked());let a=e.findIndex(e=>e.navigationStates.includes(t)),o=e[a+1];if(!o)return;let m=o.navigationStates[0];m&&d.stageAndCommit([n.getNavigationUpdate(m)])},[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 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 +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 m}from"#package/domain";import{useAnalyticsService as n,useDomain as s,useLocalizable as l}from"#package/react-sdk";import{PhxIcon as c,useResponsive as p}from"#package/ui-sdk";import{useConfigurator as d}from"../../../../application-runtime/index.js";import{FrontendAnalyticsFactory as u}from"../../../../common/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:m,component:a(a=>{let{icon:r}=a,m=l(S),x=n(),k=g(),{layoutSystem:h}=d(),j=f(),{navigationSystem:C,storeSystem:b}=s(),{isDesktop:N}=p(),{previousStepDisabled:P}=v();return t(i,{title:m,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);x.push(u.PreviousStepButtonClicked());let i=e.findIndex(e=>e.navigationStates.includes(t)),a=e[i-1];if(!a){k&&j.goToIndex();return}let o=a.navigationStates[0];o&&b.stageAndCommit([C.getNavigationUpdate(o)])},[x,C,k,j,b,h]),children:t(c,{name:r??"CaretLeft"})})})})})});
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 +1 @@
1
- import{jsx as e,jsxs as t,Fragment as i}from"react/jsx-runtime";import{useCallback as r,useState as s}from"react";import{ConfigurationNotFoundPage as l,useResolveLocalizable as o,useResourceUrl as n}from"#package/react-sdk";import{Preset as a}from"#package/ui-sdk";import{usePresetSelection as d,usePreview as m}from"../../configurator-context/index.js";import{ClosePresetScreenButton as c}from"./ClosePresetScreenButton.js";import{PresetBackButton as g}from"./PresetBackButton.js";import{PresetPreviewLayout as p}from"./PresetPreviewLayout.js";import{PresetSnackbarsRoot as u}from"./PresetSnackbarsRoot.js";let f={id:"sdk.presets.select.button.label",message:"Select"},k={id:"sdk.presets.detail.close.label",message:"Close"},S={id:"sdk.presets.detail.learnMore.label",message:"Learn more"},h={id:"sdk.presets.detail.select.label",message:"Select"},B=t=>{let{id:i,name:s,description:l,img:m,imgAlt:c,detailTitle:g,detailDescription:p}=t,{selectPreset:u,creatingPresetId:B}=d(),b=o(),{getResourceUrl:C}=n(),T=r(()=>{u(i)},[u,i]),y=(m&&C(m))??"",A=B===i;return e(a.Card,{title:b(s),description:b(l),imgSrc:y,imgAlt:b(c),selectButtonTitle:b(f),loading:A,disabled:null!==B&&!A,onSelect:T,additionalInfoButton:void 0!==g&&void 0!==p&&e(a.DetailDialog,{img:y,imgAlt:b(c),detailTitle:b(g),detailDescription:b(p),closeButtonTitle:b(k),learnMoreLinkTitle:b(S),selectButtonTitle:b(h),onSelect:T})},b(s))},b=t=>{let{id:i,name:s,description:l,img:d,imgAlt:m,onSelect:c}=t,g=o(),{getResourceUrl:p}=n(),u=r(()=>{c(i)},[c,i]);return e(a.Card,{title:g(s),description:g(l),imgSrc:(d&&p(d))??"",imgAlt:g(m),selectButtonTitle:g(f),onSelect:u},g(s))},C={id:"sdk.presets.category.count.message",message:"{presetCount, plural, one {# preset} other {# presets}}"},T=t=>{let{selectedCategory:r,onCategorySelected:s}=t,{presetCategories:l}=d(),n=o();if(1===l.length)return e(i,{children:l[0].presets.map(t=>e(B,{id:t.id,name:t.name,description:t.description,img:t.img,imgAlt:t.imgAlt,detailTitle:t.detailTitle,detailDescription:t.detailDescription},t.id))});if(null!==r){let t=l.find(e=>e.id===r);if(void 0===t)throw Error(`Category with id ${r} not found!`);return e(i,{children:t.presets.map(t=>e(B,{id:t.id,name:t.name,description:t.description,img:t.img,imgAlt:t.imgAlt,detailTitle:t.detailTitle,detailDescription:t.detailDescription},t.id))})}return e(i,{children:l.map(t=>e(b,{id:t.id,name:t.name,description:t.description??n({...C,values:{presetCount:t.presets.length}}),img:t.img,imgAlt:t.imgAlt,onSelect:s},t.id))})},y={id:"sdk.presets.category.heading.title",message:"Select starting preset"},A={id:"sdk.presets.preview.title",message:"Customize product"},j={id:"sdk.presets.start.button.label",message:"Start configuring"};export const CategoryPresetUi=n=>{let{action:f,footer:k,overlay:S}=n,[h,B]=s(null),{isPreview:b}=m(),C=o(),v=r(()=>{B(null)},[]),{presetCategories:D}=d();return b?e(p,{title:C(A),startButtonLabel:C(j)}):0===D.length?e(l,{}):t(i,{children:[e(a.ScreenLayout,{heading:C(y),action:f,footer:k,overlay:S,backButton:h&&e(g,{onBack:v}),closeButton:!h&&e(c,{}),children:e(T,{selectedCategory:h,onCategorySelected:B})}),e(u,{})]})};
1
+ import{jsx as e,jsxs as t,Fragment as i}from"react/jsx-runtime";import{useCallback as r,useState as s}from"react";import{useResolveLocalizable as o,useResourceUrl as l}from"#package/react-sdk";import{Preset as n}from"#package/ui-sdk";import{ConfigurationNotFoundPageElement as a}from"../../configuration-not-found-page/index.js";import{usePresetSelection as d,usePreview as m}from"../../configurator-context/index.js";import{ClosePresetScreenButton as c}from"./ClosePresetScreenButton.js";import{PresetBackButton as g}from"./PresetBackButton.js";import{PresetPreviewLayout as p}from"./PresetPreviewLayout.js";import{PresetSnackbarsRoot as u}from"./PresetSnackbarsRoot.js";let f={id:"sdk.presets.select.button.label",message:"Select"},k={id:"sdk.presets.detail.close.label",message:"Close"},S={id:"sdk.presets.detail.learnMore.label",message:"Learn more"},h={id:"sdk.presets.detail.select.label",message:"Select"},B=t=>{let{id:i,name:s,description:a,img:m,imgAlt:c,detailTitle:g,detailDescription:p}=t,{selectPreset:u,creatingPresetId:B}=d(),b=o(),{getResourceUrl:C}=l(),T=r(()=>{u(i)},[u,i]),j=(m&&C(m))??"",y=B===i;return e(n.Card,{title:b(s),description:b(a),imgSrc:j,imgAlt:b(c),selectButtonTitle:b(f),loading:y,disabled:null!==B&&!y,onSelect:T,additionalInfoButton:void 0!==g&&void 0!==p&&e(n.DetailDialog,{img:j,imgAlt:b(c),detailTitle:b(g),detailDescription:b(p),closeButtonTitle:b(k),learnMoreLinkTitle:b(S),selectButtonTitle:b(h),onSelect:T})},b(s))},b=t=>{let{id:i,name:s,description:a,img:d,imgAlt:m,onSelect:c}=t,g=o(),{getResourceUrl:p}=l(),u=r(()=>{c(i)},[c,i]);return e(n.Card,{title:g(s),description:g(a),imgSrc:(d&&p(d))??"",imgAlt:g(m),selectButtonTitle:g(f),onSelect:u},g(s))},C={id:"sdk.presets.category.count.message",message:"{presetCount, plural, one {# preset} other {# presets}}"},T=t=>{let{selectedCategory:r,onCategorySelected:s}=t,{presetCategories:l}=d(),n=o();if(1===l.length)return e(i,{children:l[0].presets.map(t=>e(B,{id:t.id,name:t.name,description:t.description,img:t.img,imgAlt:t.imgAlt,detailTitle:t.detailTitle,detailDescription:t.detailDescription},t.id))});if(null!==r){let t=l.find(e=>e.id===r);if(void 0===t)throw Error(`Category with id ${r} not found!`);return e(i,{children:t.presets.map(t=>e(B,{id:t.id,name:t.name,description:t.description,img:t.img,imgAlt:t.imgAlt,detailTitle:t.detailTitle,detailDescription:t.detailDescription},t.id))})}return e(i,{children:l.map(t=>e(b,{id:t.id,name:t.name,description:t.description??n({...C,values:{presetCount:t.presets.length}}),img:t.img,imgAlt:t.imgAlt,onSelect:s},t.id))})},j={id:"sdk.presets.category.heading.title",message:"Select starting preset"},y={id:"sdk.presets.preview.title",message:"Customize product"},A={id:"sdk.presets.start.button.label",message:"Start configuring"};export const CategoryPresetUi=l=>{let{action:f,footer:k,overlay:S}=l,[h,B]=s(null),{isPreview:b}=m(),C=o(),v=r(()=>{B(null)},[]),{presetCategories:x}=d();return b?e(p,{title:C(y),startButtonLabel:C(A)}):0===x.length?e(a,{}):t(i,{children:[e(n.ScreenLayout,{heading:C(j),action:f,footer:k,overlay:S,backButton:h&&e(g,{onBack:v}),closeButton:!h&&e(c,{}),children:e(T,{selectedCategory:h,onCategorySelected:B})}),e(u,{})]})};
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Shows the save messages of `useConfiguratorMessages` as snackbars: a `saveError` as an error snackbar that stays
3
+ * until it is dismissed or a later save succeeds, and a `saveRecovery` as an informational one. Mounted wherever a
4
+ * layout mounts its message services: `LayoutSlots.Services`, the legacy layouts' overlays and the `custom` owner UI.
5
+ * In read mode, from the access or the web component's `readonly`, nothing is saved: an error snackbar left from
6
+ * owner mode is closed and no message is shown. The read UIs that replace an owner UI in read mode
7
+ * (`SummaryReadLayout`, the `custom` read UI) mount it too, since the owner UI's instance unmounts before it can close
8
+ * the snackbar.
9
+ */
10
+ export declare const SaveMessageSnackbars: () => null;
@@ -0,0 +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};
@@ -0,0 +1 @@
1
+ export { SaveMessageSnackbars } from './SaveMessageSnackbars.js';
@@ -0,0 +1 @@
1
+ export{SaveMessageSnackbars}from"./SaveMessageSnackbars.js";
@@ -189,6 +189,7 @@ interface ChildEntityCardSelectorSchema {
189
189
  interface ChildEntitySelectionComponentState {
190
190
  value: { $read: string } // Read-only - system manages DomainEntityId updates
191
191
  options: { $read: string } // Expression returning ChildEntitySelectionOption[]
192
+ keepChildren?: boolean // Keep the children of the replaced entity; by default they are deleted
192
193
  }
193
194
 
194
195
  // Each selectable option configuration