@salsita-ai/sdk 0.50.0-develop.6d8967bc99 → 0.50.0-develop.70dc8d05b6

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 (670) hide show
  1. package/README.md +3 -3
  2. package/dist/admin/create-admin-pages-from-spec.d.ts +1 -1
  3. package/dist/application-spec/errors/diagnostic-codes.d.ts +9 -0
  4. package/dist/application-spec/errors/diagnostic-codes.js +1 -1
  5. package/dist/application-spec/errors/diagnostic-messages.d.ts +12 -0
  6. package/dist/application-spec/errors/diagnostic-messages.js +1 -1
  7. package/dist/application-spec/generate-application/code/project-scaffolding.d.ts +8 -1
  8. package/dist/application-spec/generate-application/code/project-scaffolding.js +2 -2
  9. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.d.ts +4 -2
  10. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-domain-block.js +56 -56
  11. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-invariants.d.ts +1 -1
  12. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-invariants.js +1 -1
  13. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-phx-globals.js +3 -0
  14. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-relation-expressions.js +1 -1
  15. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.d.ts +6 -8
  16. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.js +11 -11
  17. package/dist/application-spec/generate-application/code/templates/domain-spec/index.d.ts +1 -1
  18. package/dist/application-spec/generate-application/code/templates/domain-spec/index.js +1 -1
  19. package/dist/application-spec/generate-application/code/templates/domain-spec.js +12 -12
  20. package/dist/application-spec/generate-application/code/templates/domain.js +3 -3
  21. package/dist/application-spec/generate-application/code/templates/globals.js +5 -4
  22. package/dist/application-spec/generate-application/code/templates/index.d.ts +0 -7
  23. package/dist/application-spec/generate-application/code/templates/index.js +1 -1
  24. package/dist/application-spec/generate-application/code/templates/package-json.js +1 -1
  25. package/dist/application-spec/generate-application/code/templates/skills/phoenix-create-configurator-skill.js +66 -42
  26. package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.js +8 -2
  27. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +13 -14
  28. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +6 -8
  29. package/dist/application-spec/generate-application/code/templates/webhook-builders.js +4 -3
  30. package/dist/application-spec/generate-application/code/templates/webhooks-config.js +2 -2
  31. package/dist/application-spec/generate-application/runtime/application-runtime.d.ts +1 -3
  32. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.d.ts +1 -3
  33. package/dist/application-spec/generate-application/runtime/sections/component-optic.d.ts +2 -1
  34. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.js +1 -1
  35. package/dist/application-spec/generate-application/runtime/sections/transformers-runtime.d.ts +2 -4
  36. package/dist/application-spec/parse-application-files/categorize/module-analysis.d.ts +1 -1
  37. package/dist/application-spec/parse-application-files/categorize/module-analysis.js +1 -1
  38. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.d.ts +16 -3
  39. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.js +1 -1
  40. package/dist/application-spec/parse-application-files/spec/application/admin-spec/admin-spec.js +1 -1
  41. package/dist/application-spec/parse-application-files/spec/application/configurator-spec/configurator-spec.js +1 -1
  42. package/dist/application-spec/parse-application-files/spec/model/defaults.d.ts +7 -2
  43. package/dist/application-spec/parse-application-files/spec/model/defaults.js +1 -1
  44. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.d.ts +25 -0
  45. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.js +1 -0
  46. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.d.ts +46 -0
  47. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.js +1 -0
  48. package/dist/application-spec/parse-application-files/spec/relations/relations.d.ts +4 -3
  49. package/dist/application-spec/parse-application-files/spec/relations/relations.js +1 -1
  50. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  51. package/dist/application-spec/parse-application-files/spec/sections/infra.d.ts +2 -0
  52. package/dist/application-spec/parse-application-files/spec/sections/infra.js +1 -1
  53. package/dist/client/authorized-client.d.ts +3 -1
  54. package/dist/client/authorized-client.js +1 -1
  55. package/dist/client/contract.d.ts +34 -0
  56. package/dist/client/contract.js +1 -1
  57. package/dist/client/index.d.ts +2 -2
  58. package/dist/client/index.js +1 -1
  59. package/dist/client/local-authorized-client.d.ts +3 -1
  60. package/dist/client/local-authorized-client.js +1 -1
  61. package/dist/client/memory-authorized-client.d.ts +3 -1
  62. package/dist/client/memory-authorized-client.js +1 -1
  63. package/dist/client/phoenix-api.d.ts +215 -2
  64. package/dist/configurator/application-runtime/extensions/create-configurator-extensions.js +1 -1
  65. package/dist/configurator/application-runtime/extensions/selectors.d.ts +3 -1
  66. package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
  67. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +92 -3
  68. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  69. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.js +1 -1
  70. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +14 -4
  71. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  72. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.d.ts +11 -0
  73. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.js +1 -0
  74. package/dist/configurator/application-runtime/extensions/systems/index.d.ts +1 -1
  75. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.js +1 -1
  76. package/dist/configurator/common/configurator-interface.d.ts +5 -1
  77. package/dist/configurator/common/configurator-interface.js +1 -1
  78. package/dist/configurator/pages/DefaultConfiguratorLayout.d.ts +6 -0
  79. package/dist/configurator/pages/DefaultConfiguratorLayout.js +1 -0
  80. package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
  81. package/dist/configurator/ui/assistant/AssistantComposer.d.ts +2 -1
  82. package/dist/configurator/ui/assistant/AssistantComposer.js +1 -1
  83. package/dist/configurator/ui/assistant/AssistantThread.d.ts +6 -2
  84. package/dist/configurator/ui/assistant/AssistantThread.js +1 -1
  85. package/dist/configurator/ui/assistant/thread-items.d.ts +13 -2
  86. package/dist/configurator/ui/assistant/thread-items.js +1 -1
  87. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.d.ts +1 -75
  88. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.js +5 -20
  89. package/dist/configurator/ui/configurator-layout/universal/DesktopPreview.js +1 -1
  90. package/dist/configurator/ui/configurator-layout/universal/DesktopSidebar.d.ts +92 -0
  91. package/dist/configurator/ui/configurator-layout/universal/DesktopSidebar.js +16 -0
  92. package/dist/configurator/ui/configurator-layout/universal/MobileLayout.js +4 -4
  93. package/dist/configurator/ui/configurator-layout/universal/MobilePreview.js +1 -1
  94. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.d.ts +47 -0
  95. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.js +1 -0
  96. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.d.ts +11 -26
  97. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.js +1 -1
  98. package/dist/docs/complex-use-cases/filtered-controls-with-fix-dialog.mdx +16 -19
  99. package/dist/docs/complex-use-cases/sketching.mdx +0 -38
  100. package/dist/docs/controls/select-attribute/cardselect.mdx +9 -13
  101. package/dist/docs/index.json +11 -1
  102. package/dist/docs/integrations/woocommerce/local-development.mdx +1 -1
  103. package/dist/docs/layouts/custom-layout.mdx +981 -0
  104. package/dist/docs/other-features/side-effects.mdx +8 -11
  105. package/dist/docs/other-features/violation-messages.mdx +52 -56
  106. package/dist/docs/phoenix/configurator-interface.mdx +105 -65
  107. package/dist/docs/phoenix/deployments.mdx +1 -1
  108. package/dist/docs/phoenix/domain-model.mdx +4 -0
  109. package/dist/docs/phoenix/expression-context.mdx +11 -3
  110. package/dist/docs/phoenix/getting-started.mdx +1 -1
  111. package/dist/docs/phoenix/phoenix-cli.mdx +43 -47
  112. package/dist/docs/phoenix/project-structure.mdx +16 -10
  113. package/dist/docs/phoenix/quickstart.mdx +2 -2
  114. package/dist/docs/phoenix/sdk-builder-workflow.mdx +8 -8
  115. package/dist/docs/phoenix/webhook-membership.mdx +10 -9
  116. package/dist/docs/phoenix/webhooks.mdx +2 -2
  117. package/dist/docs/ux-guidelines/choosing-a-control.mdx +11 -0
  118. package/dist/domain/admin-domain/implementation/common-admin-expressions.d.ts +26 -11
  119. package/dist/domain/admin-domain/implementation/common-admin-publish.d.ts +1 -2
  120. package/dist/domain/admin-domain/index.d.ts +8 -3
  121. package/dist/domain/admin-domain/index.js +1 -1
  122. package/dist/domain/application/GetApplicationWrapperHandler.d.ts +2 -2
  123. package/dist/domain/application/GetThemeHandler.d.ts +1 -1
  124. package/dist/domain/application/GetWebComponentOptions.d.ts +1 -1
  125. package/dist/domain/application/admin-page-factories.d.ts +1 -2
  126. package/dist/domain/application/application-config.d.ts +7 -26
  127. package/dist/domain/application/assistant/assistant-fields.d.ts +12 -0
  128. package/dist/domain/application/assistant/assistant-fields.js +1 -0
  129. package/dist/domain/application/assistant/assistant-manifest.d.ts +11 -1
  130. package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +38 -2
  131. package/dist/domain/application/assistant/assistant-resolved-manifest.js +1 -1
  132. package/dist/domain/application/assistant/assistant-value-type.js +1 -1
  133. package/dist/domain/application/assistant/build-assistant-lenses.d.ts +14 -0
  134. package/dist/domain/application/assistant/build-assistant-lenses.js +5 -0
  135. package/dist/domain/application/assistant/build-assistant-manifest.js +1 -1
  136. package/dist/domain/application/assistant/create-assistant-execution-schema.d.ts +32 -0
  137. package/dist/domain/application/assistant/create-assistant-execution-schema.js +1 -0
  138. package/dist/domain/application/assistant/generate-assistant-prompt.d.ts +1 -11
  139. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -1
  140. package/dist/domain/application/assistant/index.d.ts +6 -1
  141. package/dist/domain/application/assistant/index.js +1 -1
  142. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.d.ts +20 -0
  143. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.js +1 -0
  144. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.d.ts +10 -0
  145. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.js +1 -0
  146. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.d.ts +48 -0
  147. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.js +1 -0
  148. package/dist/domain/application/assistant/session-setup/create-session-assistant.d.ts +15 -0
  149. package/dist/domain/application/assistant/session-setup/create-session-assistant.js +1 -0
  150. package/dist/domain/application/assistant/session-setup/index.d.ts +4 -0
  151. package/dist/domain/application/assistant/session-setup/index.js +1 -0
  152. package/dist/domain/application/assistant-mutations.d.ts +2 -1
  153. package/dist/domain/application/assistant-mutations.js +1 -1
  154. package/dist/domain/application/assistant-recipe-groups.d.ts +1 -1
  155. package/dist/domain/application/configurator-builder.d.ts +2 -2
  156. package/dist/domain/application/configurator-builder.js +1 -1
  157. package/dist/domain/application/create-initial-published-data.d.ts +6 -7
  158. package/dist/domain/application/index.d.ts +2 -6
  159. package/dist/domain/application/index.js +1 -1
  160. package/dist/domain/application/published-data/DataRowValidatorHandler.d.ts +1 -1
  161. package/dist/domain/application/published-data/FilterPublishedChunksHandler.d.ts +1 -1
  162. package/dist/domain/application/published-data/MapPublishedChunkedDataHandler.d.ts +1 -1
  163. package/dist/domain/application/published-data/MapPublishedRevisionDataHandler.d.ts +1 -1
  164. package/dist/domain/application/published-data/SheetValidatorHandler.d.ts +1 -1
  165. package/dist/domain/application/published-data/build-legend-data.d.ts +1 -1
  166. package/dist/domain/application/published-data/format-field-type.d.ts +1 -1
  167. package/dist/domain/application/published-data/map-data-to-sheet.d.ts +1 -1
  168. package/dist/domain/application/published-data/map-published-chunked-data.d.ts +3 -3
  169. package/dist/domain/application/published-data/map-published-data.d.ts +7 -3
  170. package/dist/domain/application/published-data/validate-sheet-data.d.ts +1 -1
  171. package/dist/domain/available-system-components.js +1 -1
  172. package/dist/domain/core/action/action-factory.d.ts +11 -0
  173. package/dist/domain/core/{action.d.ts → action/action.d.ts} +21 -16
  174. package/dist/domain/core/action/index.d.ts +2 -0
  175. package/dist/domain/core/action/index.js +1 -0
  176. package/dist/domain/core/component/domain-component-optic.d.ts +29 -40
  177. package/dist/domain/core/component/domain-component-optic.js +2 -2
  178. package/dist/domain/core/component/legacy-filter.d.ts +2 -17
  179. package/dist/domain/core/component/system-component-filter.d.ts +36 -18
  180. package/dist/domain/core/data-schema/data-cell-value.d.ts +4 -0
  181. package/dist/domain/core/data-schema/data-schema-array-field.d.ts +5 -0
  182. package/dist/domain/core/data-schema/data-schema-field-object.d.ts +4 -0
  183. package/dist/domain/core/data-schema/data-schema-field-object.js +1 -0
  184. package/dist/domain/core/data-schema/data-schema-field.d.ts +2 -0
  185. package/dist/domain/core/data-schema/data-schema-field.js +1 -0
  186. package/dist/domain/core/data-schema/data-schema-localized-field.d.ts +4 -0
  187. package/dist/domain/core/data-schema/data-schema-localized-field.js +1 -0
  188. package/dist/domain/core/data-schema/data-schema-primitive-field.d.ts +5 -0
  189. package/dist/domain/core/data-schema/data-schema-primitive-field.js +1 -0
  190. package/dist/domain/core/data-schema/data-schema.d.ts +2 -0
  191. package/dist/domain/core/data-schema/data-schema.js +1 -0
  192. package/dist/domain/core/data-schema/index.d.ts +7 -0
  193. package/dist/domain/core/data-schema/index.js +1 -0
  194. package/dist/domain/core/domain-factory.d.ts +1 -1
  195. package/dist/domain/core/domain.d.ts +2 -2
  196. package/dist/domain/core/emission/index.d.ts +8 -0
  197. package/dist/domain/core/emission/index.js +1 -0
  198. package/dist/domain/core/emission/reset-state-emission.d.ts +12 -0
  199. package/dist/domain/core/emission/reset-state-emission.js +1 -0
  200. package/dist/domain/core/emission/state-emission.d.ts +4 -0
  201. package/dist/domain/core/emission/state-emission.js +1 -0
  202. package/dist/domain/core/emission/state-update-emission.d.ts +14 -0
  203. package/dist/domain/core/emission/state-update-emission.js +1 -0
  204. package/dist/domain/core/emission/state-validation-result.d.ts +18 -0
  205. package/dist/domain/core/emission/state-validation-result.js +1 -0
  206. package/dist/domain/core/emission/transformation-log.d.ts +2 -0
  207. package/dist/domain/core/emission/transformation-log.js +1 -0
  208. package/dist/domain/core/emission/transformer-log-entry.d.ts +6 -0
  209. package/dist/domain/core/emission/transformer-log-entry.js +1 -0
  210. package/dist/domain/core/emission/transformer-log.d.ts +11 -0
  211. package/dist/domain/core/emission/transformer-log.js +1 -0
  212. package/dist/domain/core/emission/transformer-phase.d.ts +1 -0
  213. package/dist/domain/core/emission/transformer-phase.js +1 -0
  214. package/dist/domain/core/expression/aliased-expressions.d.ts +10 -0
  215. package/dist/domain/core/expression/aliased-expressions.js +1 -0
  216. package/dist/domain/core/expression/constant-expressions.d.ts +16 -8
  217. package/dist/domain/core/expression/constant-expressions.js +1 -1
  218. package/dist/domain/core/expression/custom-expression.d.ts +21 -8
  219. package/dist/domain/core/expression/custom-expression.js +1 -1
  220. package/dist/domain/core/expression/expression.d.ts +15 -17
  221. package/dist/domain/core/expression/index.d.ts +1 -2
  222. package/dist/domain/core/expression/index.js +1 -1
  223. package/dist/domain/core/index.d.ts +5 -1
  224. package/dist/domain/core/index.js +1 -1
  225. package/dist/domain/core/invariant/custom-invariants.d.ts +8 -16
  226. package/dist/domain/core/invariant/index.d.ts +1 -1
  227. package/dist/domain/core/invariant/index.js +1 -1
  228. package/dist/domain/core/invariant/invariants.d.ts +4 -70
  229. package/dist/domain/core/invariant/invariants.js +1 -1
  230. package/dist/domain/core/invariant/violation.d.ts +1 -1
  231. package/dist/domain/core/recipe/index.d.ts +1 -0
  232. package/dist/domain/core/recipe/index.js +1 -0
  233. package/dist/domain/core/recipe/recipes.d.ts +23 -0
  234. package/dist/domain/core/recipe/recipes.js +1 -0
  235. package/dist/domain/core/relation/all-of-type-relation.d.ts +19 -0
  236. package/dist/domain/core/relation/all-of-type-relation.js +1 -0
  237. package/dist/domain/{relations → core/relation}/component-factories.d.ts +1 -1
  238. package/dist/domain/core/relation/component-factories.js +1 -0
  239. package/dist/domain/{relations → core/relation}/composed-of.d.ts +1 -1
  240. package/dist/domain/core/relation/composed-of.js +1 -0
  241. package/dist/domain/core/relation/direct-relation.d.ts +17 -0
  242. package/dist/domain/core/relation/index.d.ts +8 -0
  243. package/dist/domain/core/relation/index.js +1 -0
  244. package/dist/domain/core/relation/indirect-relation.d.ts +25 -0
  245. package/dist/domain/core/relation/indirect-relation.js +1 -0
  246. package/dist/domain/{relations → core/relation}/reference-component.d.ts +4 -3
  247. package/dist/domain/core/relation/reference-component.js +1 -0
  248. package/dist/domain/{relations → core/relation}/reference-field.d.ts +1 -1
  249. package/dist/domain/core/relation/reference-field.js +1 -0
  250. package/dist/domain/core/relation/relation-factory.d.ts +22 -0
  251. package/dist/domain/core/relation/relation-factory.js +1 -0
  252. package/dist/domain/core/state/migrations.d.ts +14 -45
  253. package/dist/domain/core/state/migrations.js +1 -1
  254. package/dist/domain/core/state/state.d.ts +1 -1
  255. package/dist/domain/domain-builder.d.ts +2 -5
  256. package/dist/domain/domain-builder.js +1 -1
  257. package/dist/domain/domain-context/action-system/action-system.d.ts +2 -2
  258. package/dist/domain/domain-context/action-system/action-system.js +1 -1
  259. package/dist/domain/domain-context/action-system/index.d.ts +1 -0
  260. package/dist/domain/domain-context/action-system/index.js +1 -0
  261. package/dist/domain/domain-context/analytics-system/index.d.ts +2 -0
  262. package/dist/domain/domain-context/analytics-system/index.js +1 -0
  263. package/dist/domain/domain-context/create-transformer.d.ts +1 -1
  264. package/dist/domain/domain-context/dimension-system/dimension-system.d.ts +2 -2
  265. package/dist/domain/domain-context/dimension-system/dimension-system.js +1 -1
  266. package/dist/domain/domain-context/dimension-system/index.d.ts +1 -0
  267. package/dist/domain/domain-context/dimension-system/index.js +1 -0
  268. package/dist/domain/domain-context/domain-context-systems.d.ts +7 -7
  269. package/dist/domain/domain-context/index.d.ts +8 -18
  270. package/dist/domain/domain-context/index.js +1 -1
  271. package/dist/domain/domain-context/navigation-system/index.d.ts +3 -0
  272. package/dist/domain/domain-context/navigation-system/index.js +1 -0
  273. package/dist/domain/domain-context/navigation-system/navigation-system.d.ts +2 -3
  274. package/dist/domain/domain-context/navigation-system/navigation-system.js +1 -1
  275. package/dist/domain/domain-context/navigation-system/selection-transformers.d.ts +1 -1
  276. package/dist/domain/domain-context/recipe-system/index.d.ts +1 -0
  277. package/dist/domain/domain-context/recipe-system/index.js +1 -0
  278. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.d.ts +2 -3
  279. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.js +1 -1
  280. package/dist/domain/domain-context/relation-transformers/cascade-deletes.d.ts +2 -2
  281. package/dist/domain/domain-context/relation-transformers/cascade-ref-pruning.d.ts +2 -2
  282. package/dist/domain/domain-context/relation-transformers/cascade-ref-pruning.js +1 -1
  283. package/dist/domain/domain-context/relation-transformers/create-entity-refs.d.ts +2 -2
  284. package/dist/domain/domain-context/relation-transformers/create-entity-refs.js +2 -2
  285. package/dist/domain/domain-context/relation-transformers/index.d.ts +4 -0
  286. package/dist/domain/domain-context/relation-transformers/index.js +1 -0
  287. package/dist/domain/domain-context/relation-transformers/replace-refs.d.ts +2 -2
  288. package/dist/domain/domain-context/relation-transformers/replace-refs.js +1 -1
  289. package/dist/domain/domain-context/store-system/index.d.ts +4 -0
  290. package/dist/domain/domain-context/store-system/index.js +1 -0
  291. package/dist/domain/domain-context/store-system/reconcile-projected-entities.js +1 -1
  292. package/dist/domain/domain-context/store-system/store-system.d.ts +2 -35
  293. package/dist/domain/domain-context/store-system/store-system.js +2 -2
  294. package/dist/domain/domain-context/store-system/system-state.d.ts +1 -1
  295. package/dist/domain/domain-context/transformers/actions-builder.js +1 -1
  296. package/dist/domain/domain-context/transformers/auto-snap-transformer.d.ts +5 -7
  297. package/dist/domain/domain-context/transformers/auto-snap-transformer.js +1 -1
  298. package/dist/domain/domain-context/transformers/chain-builder.d.ts +1 -1
  299. package/dist/domain/domain-context/transformers/context.d.ts +2 -3
  300. package/dist/domain/domain-context/transformers/context.js +1 -1
  301. package/dist/domain/domain-context/transformers/entity-builder.js +1 -1
  302. package/dist/domain/domain-context/transformers/index.d.ts +1 -1
  303. package/dist/domain/domain-context/transformers/index.js +1 -1
  304. package/dist/domain/domain-context/transformers/when-builder.d.ts +2 -3
  305. package/dist/domain/domain-context/transformers/when-builder.js +1 -1
  306. package/dist/domain/domain-context/undo-system.d.ts +2 -3
  307. package/dist/domain/domain-runtime/access/selectors.d.ts +9 -0
  308. package/dist/domain/domain-runtime/access/selectors.js +1 -1
  309. package/dist/domain/domain-runtime/access/types.d.ts +2 -0
  310. package/dist/domain/domain-runtime/access/types.js +1 -1
  311. package/dist/domain/domain-runtime/domain-context/action-context.d.ts +11 -0
  312. package/dist/domain/domain-runtime/domain-context/action-context.js +1 -0
  313. package/dist/domain/domain-runtime/domain-context/domain-context.js +1 -1
  314. package/dist/domain/domain-runtime/domain-context/expression-context.d.ts +8 -0
  315. package/dist/domain/domain-runtime/domain-context/expression-context.js +1 -0
  316. package/dist/domain/domain-runtime/domain-context/index.d.ts +3 -0
  317. package/dist/domain/domain-runtime/domain-context/runtime-expression-context.d.ts +18 -0
  318. package/dist/domain/domain-runtime/domain-context/runtime-expression-context.js +1 -0
  319. package/dist/domain/domain-runtime/domain-context/selectors.d.ts +19 -23
  320. package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
  321. package/dist/domain/domain-runtime/domain-context/types.d.ts +4 -1
  322. package/dist/domain/domain-runtime/domain-runtime.d.ts +84 -68
  323. package/dist/domain/domain-runtime/errors/implementation-error-collector.d.ts +19 -0
  324. package/dist/domain/domain-runtime/errors/implementation-error-collector.js +1 -0
  325. package/dist/domain/domain-runtime/errors/implementation-error.d.ts +46 -0
  326. package/dist/domain/domain-runtime/errors/implementation-error.js +1 -0
  327. package/dist/domain/domain-runtime/errors/implementation-errors.d.ts +13 -0
  328. package/dist/domain/domain-runtime/errors/implementation-errors.js +1 -0
  329. package/dist/domain/domain-runtime/errors/index.d.ts +4 -0
  330. package/dist/domain/domain-runtime/errors/index.js +1 -0
  331. package/dist/domain/domain-runtime/errors/to-implementation-errors.d.ts +10 -0
  332. package/dist/domain/domain-runtime/errors/to-implementation-errors.js +1 -0
  333. package/dist/domain/domain-runtime/index.d.ts +1 -0
  334. package/dist/domain/domain-runtime/index.js +1 -1
  335. package/dist/domain/domain-runtime/spec/create-violation-expressions.d.ts +24 -0
  336. package/dist/domain/domain-runtime/spec/create-violation-expressions.js +1 -0
  337. package/dist/domain/domain-runtime/spec/index.d.ts +5 -0
  338. package/dist/domain/domain-runtime/spec/index.js +1 -1
  339. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  340. package/dist/domain/{core/expression → domain-runtime/spec}/memoize-expression.d.ts +1 -2
  341. package/dist/domain/{application → domain-runtime/spec/module-checks}/element-registration.d.ts +2 -2
  342. package/dist/domain/domain-runtime/spec/module-checks/element-registration.js +1 -0
  343. package/dist/domain/{application → domain-runtime/spec/module-checks}/handler-registration.d.ts +1 -1
  344. package/dist/domain/domain-runtime/spec/module-checks/handler-registration.js +1 -0
  345. package/dist/domain/domain-runtime/spec/module-checks/index.d.ts +8 -0
  346. package/dist/domain/domain-runtime/spec/module-checks/index.js +1 -0
  347. package/dist/domain/{project-modules → domain-runtime/spec/module-checks}/project-modules.d.ts +8 -17
  348. package/dist/domain/domain-runtime/spec/module-checks/project-modules.js +1 -0
  349. package/dist/domain/domain-runtime/spec/module-checks/resolve-action-modules.d.ts +4 -0
  350. package/dist/domain/domain-runtime/spec/module-checks/resolve-action-modules.js +1 -0
  351. package/dist/domain/domain-runtime/spec/module-checks/resolve-component-optic-modules.d.ts +4 -0
  352. package/dist/domain/domain-runtime/spec/module-checks/resolve-component-optic-modules.js +1 -0
  353. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.d.ts +15 -0
  354. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.js +1 -0
  355. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.d.ts +22 -0
  356. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.js +1 -0
  357. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.d.ts +6 -0
  358. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.js +1 -0
  359. package/dist/domain/{actions → domain-runtime/spec}/prepare-action-implementations.d.ts +1 -1
  360. package/dist/domain/domain-runtime/spec/prepare-action-implementations.js +5 -0
  361. package/dist/domain/{core/expression → domain-runtime/spec}/prepare-domain-expressions.d.ts +1 -1
  362. package/dist/domain/domain-runtime/spec/selectors.d.ts +5 -6
  363. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  364. package/dist/domain/domain-runtime/spec/types.d.ts +3 -2
  365. package/dist/domain/{system-components → extensions}/child-entity-recipe-hierarchy.d.ts +1 -1
  366. package/dist/domain/extensions/child-entity-recipe-hierarchy.js +1 -0
  367. package/dist/domain/{system-components → extensions}/common/angle-indicator-schema.d.ts +1 -1
  368. package/dist/domain/extensions/common/angle-indicator-schema.js +1 -0
  369. package/dist/domain/extensions/common/index.d.ts +4 -0
  370. package/dist/domain/extensions/common/index.js +1 -0
  371. package/dist/domain/{system-components → extensions}/custom-header.d.ts +1 -1
  372. package/dist/domain/extensions/custom-header.js +1 -0
  373. package/dist/domain/{system-components → extensions}/custom-price-footer.js +1 -1
  374. package/dist/domain/{system-components → extensions}/custom-sidebar-footer.d.ts +1 -1
  375. package/dist/domain/extensions/custom-sidebar-footer.js +1 -0
  376. package/dist/domain/{system-components → extensions}/editable-angle-indicator.d.ts +2 -1
  377. package/dist/domain/extensions/editable-angle-indicator.js +1 -0
  378. package/dist/domain/{system-components → extensions}/editable-distance-dimension-indicator.d.ts +2 -1
  379. package/dist/domain/extensions/editable-distance-dimension-indicator.js +1 -0
  380. package/dist/domain/{system-components → extensions}/editable-offset-indicator.d.ts +2 -1
  381. package/dist/domain/extensions/editable-offset-indicator.js +1 -0
  382. package/dist/domain/{system-components → extensions}/editable-size-indicator.d.ts +2 -1
  383. package/dist/domain/extensions/editable-size-indicator.js +1 -0
  384. package/dist/domain/{system-components → extensions}/entity-header.d.ts +1 -1
  385. package/dist/domain/extensions/entity-header.js +1 -0
  386. package/dist/domain/{system-components → extensions}/finalize-component.js +1 -1
  387. package/dist/domain/extensions/index.d.ts +69 -0
  388. package/dist/domain/extensions/index.js +1 -0
  389. package/dist/domain/{system-components → extensions}/list-selector-dimension-indicator.d.ts +2 -1
  390. package/dist/domain/extensions/list-selector-dimension-indicator.js +1 -0
  391. package/dist/domain/{system-components → extensions}/property-page.d.ts +1 -1
  392. package/dist/domain/extensions/property-page.js +1 -0
  393. package/dist/domain/{system-components → extensions}/replace-entity-recipe-hierarchy.d.ts +1 -1
  394. package/dist/domain/extensions/replace-entity-recipe-hierarchy.js +1 -0
  395. package/dist/domain/{system-components → extensions}/scene-entity-add-fab.d.ts +1 -1
  396. package/dist/domain/extensions/scene-entity-add-fab.js +1 -0
  397. package/dist/domain/{system-components → extensions}/scene-entity-delete-fab.d.ts +1 -1
  398. package/dist/domain/extensions/scene-entity-delete-fab.js +1 -0
  399. package/dist/domain/{system-components → extensions}/scene-entity-html-hotspot.d.ts +1 -1
  400. package/dist/domain/extensions/scene-entity-html-hotspot.js +1 -0
  401. package/dist/domain/{system-components → extensions}/scene-entity-navigation-hotspot.d.ts +1 -1
  402. package/dist/domain/extensions/scene-entity-navigation-hotspot.js +1 -0
  403. package/dist/domain/{system-components → extensions}/scene-entity-object-html-hotspot.d.ts +1 -1
  404. package/dist/domain/extensions/scene-entity-object-html-hotspot.js +1 -0
  405. package/dist/domain/{system-components → extensions}/scene-entity-select-hotspot.d.ts +1 -1
  406. package/dist/domain/extensions/scene-entity-select-hotspot.js +1 -0
  407. package/dist/domain/{system-components → extensions}/sketching-edit.d.ts +1 -1
  408. package/dist/domain/extensions/sketching-edit.js +1 -0
  409. package/dist/domain/{system-components → extensions}/summary-component.js +1 -1
  410. package/dist/domain/{system-components → extensions}/tool-menu-fab.d.ts +1 -1
  411. package/dist/domain/extensions/tool-menu-fab.js +1 -0
  412. package/dist/domain/{system-components → extensions}/toolbar.d.ts +1 -1
  413. package/dist/domain/extensions/toolbar.js +1 -0
  414. package/dist/domain/index.d.ts +2 -8
  415. package/dist/domain/index.js +1 -1
  416. package/dist/domain/mocks/create-mock-domain-context.d.ts +1 -1
  417. package/dist/domain/mocks/create-mock-domain-runtime-services.d.ts +1 -1
  418. package/dist/domain/mocks/create-mock-domain-runtime.d.ts +28 -19
  419. package/dist/domain/mocks/create-mock-domain-runtime.js +1 -1
  420. package/dist/domain/mocks/create-mock-domain.d.ts +1 -1
  421. package/dist/domain/mocks/create-mock-domain.js +1 -1
  422. package/dist/domain/mocks/create-mock-state.d.ts +2 -2
  423. package/dist/domain/projections/blender-projections/blender-projections.d.ts +1 -2
  424. package/dist/domain/projections/blender-projections/camera.d.ts +2 -2
  425. package/dist/domain/projections/collision-projections.d.ts +1 -1
  426. package/dist/domain/projections/composition-projections.d.ts +1 -1
  427. package/dist/domain/projections/composition-projections.js +1 -1
  428. package/dist/domain/projections/constraint-projections.d.ts +1 -1
  429. package/dist/domain/projections/index.d.ts +1 -1
  430. package/dist/domain/projections/position-projections.d.ts +1 -1
  431. package/dist/domain/projections/projected-entities-projections.d.ts +1 -1
  432. package/dist/domain/projections/snapping-projections.d.ts +1 -1
  433. package/dist/domain/projections/validation-projections.d.ts +3 -19
  434. package/dist/domain/sketching/sketching-projections.d.ts +1 -1
  435. package/dist/domain/system-components/child-entity-selection.d.ts +1 -2
  436. package/dist/domain/system-components/common/index.d.ts +0 -4
  437. package/dist/domain/system-components/common/index.js +1 -1
  438. package/dist/domain/system-components/common/recipes.d.ts +1 -2
  439. package/dist/domain/system-components/index.d.ts +0 -68
  440. package/dist/domain/system-components/index.js +1 -1
  441. package/dist/domain/system-components/phoenix-entity-elements/admin-data-table-sidebar.d.ts +1 -1
  442. package/dist/domain/system-components/phoenix-layout-elements/admin-connected-resource-page.d.ts +1 -1
  443. package/dist/domain/system-components/phoenix-layout-elements/admin-data-table-actions.d.ts +1 -1
  444. package/dist/domain/system-components/phoenix-layout-elements/admin-data-table-page.d.ts +1 -1
  445. package/dist/domain/utils/eval-cache.d.ts +1 -1
  446. package/dist/domain/utils/map-nested-object.d.ts +1 -1
  447. package/dist/domain/utils/memo-eval.d.ts +2 -2
  448. package/dist/editor/domain-editors/use-implementation-files.d.ts +1 -2
  449. package/dist/editor/mocks/EditorMockContext.js +1 -1
  450. package/dist/i18n/locales/cs/messages.js +1 -1
  451. package/dist/i18n/locales/da/messages.js +1 -1
  452. package/dist/i18n/locales/de/messages.js +1 -1
  453. package/dist/i18n/locales/de-AT/messages.js +1 -1
  454. package/dist/i18n/locales/en/messages.js +1 -1
  455. package/dist/i18n/locales/en-AU/messages.js +1 -1
  456. package/dist/i18n/locales/en-GB/messages.js +1 -1
  457. package/dist/i18n/locales/es/messages.js +1 -1
  458. package/dist/i18n/locales/fr/messages.js +1 -1
  459. package/dist/i18n/locales/hu/messages.js +1 -1
  460. package/dist/i18n/locales/it/messages.js +1 -1
  461. package/dist/i18n/locales/nl/messages.js +1 -1
  462. package/dist/i18n/locales/pl/messages.js +1 -1
  463. package/dist/i18n/locales/pt/messages.js +1 -1
  464. package/dist/i18n/locales/ro/messages.js +1 -1
  465. package/dist/i18n/locales/sk/messages.js +1 -1
  466. package/dist/i18n/locales/tr/messages.js +1 -1
  467. package/dist/legacy/domain-cli/gen/configurator-builder.js +13 -12
  468. package/dist/legacy/domain-cli/gen/constant-expressions.js +1 -3
  469. package/dist/legacy/domain-cli/gen/defaults.js +1 -7
  470. package/dist/legacy/domain-cli/gen/implementation.js +7 -11
  471. package/dist/legacy/domain-cli/gen/invariants.js +7 -6
  472. package/dist/legacy/domain-cli/gen/relations.js +1 -1
  473. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  474. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  475. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/claude-md.d.ts +1 -1
  476. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/cursor-rules.d.ts +1 -1
  477. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.d.ts +1 -1
  478. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.js +1 -0
  479. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/domain-index.js +17 -15
  480. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/env-example.d.ts +1 -1
  481. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/env-example.js +4 -0
  482. package/dist/phoenix/application-spec/application-spec-builder.js +1 -1
  483. package/dist/phoenix/commands/init.d.ts +4 -4
  484. package/dist/phoenix/commands/init.js +1 -1
  485. package/dist/phoenix/commands/prettier.js +1 -1
  486. package/dist/phoenix/utils/git/index.d.ts +1 -0
  487. package/dist/phoenix/utils/git/index.js +1 -0
  488. package/dist/phoenix/utils/git/is-inside-git-repository.d.ts +6 -0
  489. package/dist/phoenix/utils/git/is-inside-git-repository.js +1 -0
  490. package/dist/phoenix/utils/index.d.ts +1 -0
  491. package/dist/phoenix/utils/index.js +1 -1
  492. package/dist/react-sdk/application-runtime/hooks/use-access-service.d.ts +2 -0
  493. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
  494. package/dist/react-sdk/application-runtime/routing/access-service.d.ts +1 -0
  495. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +53 -36
  496. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.js +1 -1
  497. package/dist/react-sdk/domain-context/common-hooks/use-domain-context.d.ts +9 -9
  498. package/dist/react-sdk/domain-context/index.d.ts +1 -1
  499. package/dist/react-sdk/domain-context/index.js +1 -1
  500. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.d.ts +6 -0
  501. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.js +1 -1
  502. package/dist/ui-sdk/theme/types.d.ts +1 -1
  503. package/dist/webhook/builders/common.d.ts +5 -0
  504. package/dist/webhook/builders/webhook-builder.js +1 -1
  505. package/package.json +3 -3
  506. package/dist/application-spec/generate-application/code/templates/env-ci.d.ts +0 -1
  507. package/dist/application-spec/generate-application/code/templates/env-ci.js +0 -25
  508. package/dist/application-spec/generate-application/code/templates/env-example.d.ts +0 -1
  509. package/dist/application-spec/generate-application/code/templates/env-example.js +0 -90
  510. package/dist/application-spec/generate-application/code/templates/prettier-ignore.d.ts +0 -1
  511. package/dist/application-spec/generate-application/code/templates/prettier-ignore.js +0 -6
  512. package/dist/application-spec/generate-application/code/templates/private-assets-readme.d.ts +0 -1
  513. package/dist/application-spec/generate-application/code/templates/private-assets-readme.js +0 -24
  514. package/dist/application-spec/generate-application/code/templates/public-assets-readme.d.ts +0 -1
  515. package/dist/application-spec/generate-application/code/templates/public-assets-readme.js +0 -24
  516. package/dist/application-spec/generate-application/code/templates/readme.d.ts +0 -1
  517. package/dist/application-spec/generate-application/code/templates/readme.js +0 -23
  518. package/dist/application-spec/generate-application/code/templates/skills/agents-md.d.ts +0 -1
  519. package/dist/application-spec/generate-application/code/templates/skills/agents-md.js +0 -2
  520. package/dist/domain/actions/action-factory.d.ts +0 -10
  521. package/dist/domain/actions/prepare-action-implementations.js +0 -5
  522. package/dist/domain/application/element-registration.js +0 -1
  523. package/dist/domain/application/handler-registration.js +0 -1
  524. package/dist/domain/application/resolve-imported-transformers.d.ts +0 -23
  525. package/dist/domain/application/resolve-imported-transformers.js +0 -1
  526. package/dist/domain/application/resource-builder.d.ts +0 -13
  527. package/dist/domain/application/resource-builder.js +0 -1
  528. package/dist/domain/domain-context/recipe-system/recipes.d.ts +0 -55
  529. package/dist/domain/domain-context/recipe-system/recipes.js +0 -1
  530. package/dist/domain/project-modules/index.d.ts +0 -1
  531. package/dist/domain/project-modules/index.js +0 -1
  532. package/dist/domain/project-modules/project-modules.js +0 -1
  533. package/dist/domain/relations/all-of-type-relation.d.ts +0 -30
  534. package/dist/domain/relations/all-of-type-relation.js +0 -1
  535. package/dist/domain/relations/component-factories.js +0 -1
  536. package/dist/domain/relations/composed-of.js +0 -1
  537. package/dist/domain/relations/direct-relation.d.ts +0 -27
  538. package/dist/domain/relations/indirect-relation.d.ts +0 -78
  539. package/dist/domain/relations/indirect-relation.js +0 -1
  540. package/dist/domain/relations/reference-component.js +0 -1
  541. package/dist/domain/relations/relation-factory.d.ts +0 -17
  542. package/dist/domain/relations/relation-factory.js +0 -1
  543. package/dist/domain/relations/relation-implementation.d.ts +0 -5
  544. package/dist/domain/system-components/child-entity-recipe-hierarchy.js +0 -1
  545. package/dist/domain/system-components/common/angle-indicator-schema.js +0 -1
  546. package/dist/domain/system-components/custom-header.js +0 -1
  547. package/dist/domain/system-components/custom-sidebar-footer.js +0 -1
  548. package/dist/domain/system-components/editable-angle-indicator.js +0 -1
  549. package/dist/domain/system-components/editable-distance-dimension-indicator.js +0 -1
  550. package/dist/domain/system-components/editable-offset-indicator.js +0 -1
  551. package/dist/domain/system-components/editable-size-indicator.js +0 -1
  552. package/dist/domain/system-components/entity-header.js +0 -1
  553. package/dist/domain/system-components/list-selector-dimension-indicator.js +0 -1
  554. package/dist/domain/system-components/property-page.js +0 -1
  555. package/dist/domain/system-components/replace-entity-recipe-hierarchy.js +0 -1
  556. package/dist/domain/system-components/scene-entity-add-fab.js +0 -1
  557. package/dist/domain/system-components/scene-entity-delete-fab.js +0 -1
  558. package/dist/domain/system-components/scene-entity-html-hotspot.js +0 -1
  559. package/dist/domain/system-components/scene-entity-navigation-hotspot.js +0 -1
  560. package/dist/domain/system-components/scene-entity-object-html-hotspot.js +0 -1
  561. package/dist/domain/system-components/scene-entity-select-hotspot.js +0 -1
  562. package/dist/domain/system-components/sketching-edit.js +0 -1
  563. package/dist/domain/system-components/tool-menu-fab.js +0 -1
  564. package/dist/domain/system-components/toolbar.js +0 -1
  565. /package/dist/domain/{actions → core/action}/action-factory.js +0 -0
  566. /package/dist/domain/core/{action.js → action/action.js} +0 -0
  567. /package/dist/domain/{relations/reference-field.js → core/data-schema/data-cell-value.js} +0 -0
  568. /package/dist/domain/{relations/relation-implementation.js → core/data-schema/data-schema-array-field.js} +0 -0
  569. /package/dist/domain/{relations → core/relation}/direct-relation.js +0 -0
  570. /package/dist/domain/{core/expression → domain-runtime/spec}/memoize-expression.js +0 -0
  571. /package/dist/domain/{core/expression → domain-runtime/spec}/prepare-domain-expressions.js +0 -0
  572. /package/dist/domain/{system-components → extensions}/angle-indicator.d.ts +0 -0
  573. /package/dist/domain/{system-components → extensions}/angle-indicator.js +0 -0
  574. /package/dist/domain/{system-components → extensions}/attribute-switch.d.ts +0 -0
  575. /package/dist/domain/{system-components → extensions}/attribute-switch.js +0 -0
  576. /package/dist/domain/{system-components → extensions}/autorotate-camera-component.d.ts +0 -0
  577. /package/dist/domain/{system-components → extensions}/autorotate-camera-component.js +0 -0
  578. /package/dist/domain/{system-components → extensions}/basic-sidebar-footer.d.ts +0 -0
  579. /package/dist/domain/{system-components → extensions}/basic-sidebar-footer.js +0 -0
  580. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity-object.d.ts +0 -0
  581. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity-object.js +0 -0
  582. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity.d.ts +0 -0
  583. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity.js +0 -0
  584. /package/dist/domain/{system-components → extensions}/canvas-config.d.ts +0 -0
  585. /package/dist/domain/{system-components → extensions}/canvas-config.js +0 -0
  586. /package/dist/domain/{system-components → extensions}/canvas-custom-environment.d.ts +0 -0
  587. /package/dist/domain/{system-components → extensions}/canvas-custom-environment.js +0 -0
  588. /package/dist/domain/{system-components → extensions}/canvas-padding.d.ts +0 -0
  589. /package/dist/domain/{system-components → extensions}/canvas-padding.js +0 -0
  590. /package/dist/domain/{system-components → extensions}/canvas-preset-environment.d.ts +0 -0
  591. /package/dist/domain/{system-components → extensions}/canvas-preset-environment.js +0 -0
  592. /package/dist/domain/{system-components → extensions}/client-side-image.d.ts +0 -0
  593. /package/dist/domain/{system-components → extensions}/client-side-image.js +0 -0
  594. /package/dist/domain/{system-components → extensions}/color-value.d.ts +0 -0
  595. /package/dist/domain/{system-components → extensions}/color-value.js +0 -0
  596. /package/dist/domain/{system-components → extensions}/common/dimension-indicator-schema.d.ts +0 -0
  597. /package/dist/domain/{system-components → extensions}/common/dimension-indicator-schema.js +0 -0
  598. /package/dist/domain/{system-components → extensions}/common/dimension-indicators.d.ts +0 -0
  599. /package/dist/domain/{system-components → extensions}/common/dimension-indicators.js +0 -0
  600. /package/dist/domain/{system-components → extensions}/common/editable-indicator-button-variant.d.ts +0 -0
  601. /package/dist/domain/{system-components → extensions}/common/editable-indicator-button-variant.js +0 -0
  602. /package/dist/domain/{system-components → extensions}/custom-price-footer.d.ts +0 -0
  603. /package/dist/domain/{system-components → extensions}/dimension-indicator.d.ts +0 -0
  604. /package/dist/domain/{system-components → extensions}/dimension-indicator.js +0 -0
  605. /package/dist/domain/{system-components → extensions}/exit-tool-mode-fab.d.ts +0 -0
  606. /package/dist/domain/{system-components → extensions}/exit-tool-mode-fab.js +0 -0
  607. /package/dist/domain/{system-components → extensions}/finalize-action.d.ts +0 -0
  608. /package/dist/domain/{system-components → extensions}/finalize-action.js +0 -0
  609. /package/dist/domain/{system-components → extensions}/finalize-component.d.ts +0 -0
  610. /package/dist/domain/{system-components → extensions}/fit-selection-orthographic-camera-component.d.ts +0 -0
  611. /package/dist/domain/{system-components → extensions}/fit-selection-orthographic-camera-component.js +0 -0
  612. /package/dist/domain/{system-components → extensions}/fit-selection-perspective-camera-component.d.ts +0 -0
  613. /package/dist/domain/{system-components → extensions}/fit-selection-perspective-camera-component.js +0 -0
  614. /package/dist/domain/{system-components → extensions}/fixed-header.d.ts +0 -0
  615. /package/dist/domain/{system-components → extensions}/fixed-header.js +0 -0
  616. /package/dist/domain/{system-components → extensions}/floating-header.d.ts +0 -0
  617. /package/dist/domain/{system-components → extensions}/floating-header.js +0 -0
  618. /package/dist/domain/{system-components → extensions}/hidden-header.d.ts +0 -0
  619. /package/dist/domain/{system-components → extensions}/hidden-header.js +0 -0
  620. /package/dist/domain/{system-components → extensions}/hidden-sidebar-footer.d.ts +0 -0
  621. /package/dist/domain/{system-components → extensions}/hidden-sidebar-footer.js +0 -0
  622. /package/dist/domain/{system-components → extensions}/horizontal-tabs.d.ts +0 -0
  623. /package/dist/domain/{system-components → extensions}/horizontal-tabs.js +0 -0
  624. /package/dist/domain/{system-components → extensions}/multilingual-text-value.d.ts +0 -0
  625. /package/dist/domain/{system-components → extensions}/multilingual-text-value.js +0 -0
  626. /package/dist/domain/{system-components → extensions}/navigation-steps.d.ts +0 -0
  627. /package/dist/domain/{system-components → extensions}/navigation-steps.js +0 -0
  628. /package/dist/domain/{system-components → extensions}/offset-anchors.d.ts +0 -0
  629. /package/dist/domain/{system-components → extensions}/offset-anchors.js +0 -0
  630. /package/dist/domain/{system-components → extensions}/offset-indicator.d.ts +0 -0
  631. /package/dist/domain/{system-components → extensions}/offset-indicator.js +0 -0
  632. /package/dist/domain/{system-components → extensions}/offset.d.ts +0 -0
  633. /package/dist/domain/{system-components → extensions}/offset.js +0 -0
  634. /package/dist/domain/{system-components → extensions}/other-action.d.ts +0 -0
  635. /package/dist/domain/{system-components → extensions}/other-action.js +0 -0
  636. /package/dist/domain/{system-components → extensions}/read-sidebar-footer.d.ts +0 -0
  637. /package/dist/domain/{system-components → extensions}/read-sidebar-footer.js +0 -0
  638. /package/dist/domain/{system-components → extensions}/rotatable.d.ts +0 -0
  639. /package/dist/domain/{system-components → extensions}/rotatable.js +0 -0
  640. /package/dist/domain/{system-components → extensions}/rotation-handle.d.ts +0 -0
  641. /package/dist/domain/{system-components → extensions}/rotation-handle.js +0 -0
  642. /package/dist/domain/{system-components → extensions}/save-template-thumbnail.d.ts +0 -0
  643. /package/dist/domain/{system-components → extensions}/save-template-thumbnail.js +0 -0
  644. /package/dist/domain/{system-components → extensions}/scene-entity-animation.d.ts +0 -0
  645. /package/dist/domain/{system-components → extensions}/scene-entity-animation.js +0 -0
  646. /package/dist/domain/{system-components → extensions}/scene-entity-control.d.ts +0 -0
  647. /package/dist/domain/{system-components → extensions}/scene-entity-control.js +0 -0
  648. /package/dist/domain/{system-components → extensions}/scene-entity-floor-object.d.ts +0 -0
  649. /package/dist/domain/{system-components → extensions}/scene-entity-floor-object.js +0 -0
  650. /package/dist/domain/{system-components → extensions}/scene-entity-wall-object.d.ts +0 -0
  651. /package/dist/domain/{system-components → extensions}/scene-entity-wall-object.js +0 -0
  652. /package/dist/domain/{system-components → extensions}/selectable-component.d.ts +0 -0
  653. /package/dist/domain/{system-components → extensions}/selectable-component.js +0 -0
  654. /package/dist/domain/{system-components → extensions}/sidebar-tabs.d.ts +0 -0
  655. /package/dist/domain/{system-components → extensions}/sidebar-tabs.js +0 -0
  656. /package/dist/domain/{system-components → extensions}/simple-summary.d.ts +0 -0
  657. /package/dist/domain/{system-components → extensions}/simple-summary.js +0 -0
  658. /package/dist/domain/{system-components → extensions}/size.d.ts +0 -0
  659. /package/dist/domain/{system-components → extensions}/size.js +0 -0
  660. /package/dist/domain/{system-components → extensions}/sketching-draw.d.ts +0 -0
  661. /package/dist/domain/{system-components → extensions}/sketching-draw.js +0 -0
  662. /package/dist/domain/{system-components → extensions}/summary-component.d.ts +0 -0
  663. /package/dist/domain/{system-components → extensions}/text-value.d.ts +0 -0
  664. /package/dist/domain/{system-components → extensions}/text-value.js +0 -0
  665. /package/dist/domain/{system-components → extensions}/tool-controls.d.ts +0 -0
  666. /package/dist/domain/{system-components → extensions}/tool-controls.js +0 -0
  667. /package/dist/domain/{system-components → extensions}/universal-sidebar-footer.d.ts +0 -0
  668. /package/dist/domain/{system-components → extensions}/universal-sidebar-footer.js +0 -0
  669. /package/dist/domain/{system-components → extensions}/view-controls.d.ts +0 -0
  670. /package/dist/domain/{system-components → extensions}/view-controls.js +0 -0
@@ -0,0 +1,16 @@
1
+ import{jsx as r,jsxs as a}from"react/jsx-runtime";import{paperClasses as e,styled as d,useTheme as i,useThemeProps as t}from"@mui/material";import{useMemo as o,useState as n}from"react";import{useIsFullscreenActive as s}from"#package/react-sdk";import{attrf as b,commonStyles as l,useInvalidateScrollTimeline as p,useIsEmpty as c}from"#package/ui-sdk";import{ASSISTANT_PANEL_SLOT as h,AssistantPanel as m,useIsAssistantPanelOpen as S}from"../../assistant/index.js";import{LayoutSlots as u}from"../slots/index.js";let k="PhxDesktopSidebar";export const SidebarKeys={Minimalist:"minimalist",Split:"split",Visible:"visible",Hidden:"hidden",Assistant:"assistant"};let g={Root:d("div",{name:k,slot:"root",shouldForwardProp:r=>"ownerState"!==r})(({ownerState:r})=>[`
2
+ --phx-sidebar-background: ${r.background};
3
+ --phx-sidebar-border: ${r.border};
4
+ --phx-sidebar-filter: ${r.filter};
5
+ --phx-sidebar-padding: ${r.padding};
6
+ --phx-sidebar-radius: ${r.borderRadius}px;
7
+ --phx-sidebar-scrollable-indicator-background: ${r.scrollableIndicatorBackground};
8
+ `,{borderRadius:"var(--phx-sidebar-radius)",display:"grid",filter:"var(--phx-sidebar-filter)",gridTemplateRows:"min-content minmax(0, 1fr) min-content",inlineSize:r.width,position:"relative","& > *":{pointerEvents:"auto"},"@container style(--inspect: on)":{"--phx-sidebar-background":"hsl(from gold h s l / 50%)"},[`&[data-sidebar*="${SidebarKeys.Visible}"]`]:{opacity:1},[`&[data-sidebar*="${SidebarKeys.Hidden}"]`]:{opacity:0},[`&[data-sidebar*="${SidebarKeys.Assistant}"] > :not([data-sidebar="${h}"])`]:{visibility:"hidden"}}]),Tabs:d("div",{name:k,slot:"tabs",shouldForwardProp:r=>"ownerState"!==r})(({theme:{spacing:r}})=>({insetBlockStart:0,insetInlineEnd:"100%",maxInlineSize:150,paddingInlineEnd:r(2),position:"absolute","&:is(:empty)":{padding:0},[`.${e.root}`]:{boxShadow:"none"}})),Header:d("header",{name:k,slot:"header",shouldForwardProp:r=>"ownerState"!==r})({background:"var(--phx-sidebar-background)",border:"var(--phx-sidebar-border)",borderBlockEnd:0,borderStartStartRadius:"inherit",borderStartEndRadius:"inherit",paddingBlock:"calc(0.6 * var(--phx-sidebar-padding))",paddingInline:"var(--phx-sidebar-padding)","&:is(:empty)":{border:0,paddingBlock:0}}),Body:d("div",{name:k,slot:"body",shouldForwardProp:r=>"ownerState"!==r})(({ownerState:r})=>({background:"var(--phx-sidebar-background)",border:"var(--phx-sidebar-border)",borderBlockStart:0,borderBlockEnd:0,display:"grid",position:"relative",'[data-layout*="slot[sidebar]"]:where(:has([data-sidebar="slot[header]"])) &':{...r.isHeaderEmpty&&{borderBlockStart:"var(--phx-sidebar-border)",borderStartStartRadius:"inherit",borderStartEndRadius:"inherit",paddingBlockStart:"var(--phx-sidebar-padding)"}},'&:has([data-sidebar*="slot[content]"]:empty)':{...r.isContentEmpty&&{paddingBlock:0}},[`[data-sidebar*="${SidebarKeys.Minimalist}"] &`]:{...r.isContentEmpty&&{border:0}},[`[data-sidebar*="${SidebarKeys.Split}"] &`]:{borderBlockEnd:"var(--phx-sidebar-border)",borderEndStartRadius:"inherit",borderEndEndRadius:"inherit",paddingBlockEnd:"var(--phx-sidebar-padding)"}})),Content:d("div",{name:k,slot:"content",shouldForwardProp:r=>"ownerState"!==r})(({ownerState:r,theme:{spacing:a}})=>({...l.layout.normalizeScrollableContainer,alignContent:"start",borderRadius:"inherit",display:"grid",gap:a(3),padding:"var(--phx-sidebar-padding)","@supports (animation-timeline: scroll())":{"&[data-scrollable]":{scrollTimeline:"--phx-sidebar-timeline y","&::after, &::before":{animation:`${l.keyframes.fadeIn} both`,animationTimeline:"--phx-sidebar-timeline",background:"var(--phx-sidebar-scrollable-indicator-background)",backgroundRepeat:"no-repeat",content:'""',display:"block",insetInline:0,opacity:0,pointerEvents:"none",position:"absolute",zIndex:1},"&::after":{animationDirection:"reverse",animationRange:`calc(100% - ${a(4)}) 100%`,borderEndStartRadius:"inherit",borderEndEndRadius:"inherit",insetBlockStart:"50%",insetBlockEnd:0,scale:"1 -1"},"&::before":{animationRange:`0 ${a(4)}`,borderStartStartRadius:"inherit",borderStartEndRadius:"inherit",insetBlockStart:0,insetBlockEnd:"50%"}}},"&:is(:empty)":{paddingBlock:0},'[data-layout*="slot[sidebar]"] &':{...r.isHeaderEmpty&&{paddingBlockStart:0,"&::before":{borderStartStartRadius:0,borderStartEndRadius:0,insetBlockStart:"var(--phx-sidebar-padding)"}}},[`[data-sidebar*="${SidebarKeys.Split}"] &`]:{paddingBlockEnd:0,"&::after":{borderEndStartRadius:0,borderEndEndRadius:0,insetBlockEnd:"var(--phx-sidebar-padding)"}}})),Footer:d("footer",{name:k,slot:"footer",shouldForwardProp:r=>"ownerState"!==r})(({ownerState:r,theme:{palette:a,spacing:e}})=>({background:"var(--phx-sidebar-background)",border:"var(--phx-sidebar-border)",borderBlockStart:`1px solid ${a.divider}`,borderEndStartRadius:"inherit",borderEndEndRadius:"inherit",padding:"var(--phx-sidebar-padding)","&:is(:empty)":{border:0,paddingBlock:0},[`[data-sidebar*="${SidebarKeys.Minimalist}"] &`]:{...r.isContentEmpty&&{borderBlockStart:"var(--phx-sidebar-border)",borderStartStartRadius:"inherit",borderStartEndRadius:"inherit"}},[`[data-sidebar*="${SidebarKeys.Split}"] &`]:{borderBlockStart:"var(--phx-sidebar-border)",borderStartStartRadius:"inherit",borderStartEndRadius:"inherit",marginBlockStart:e(2)}}))};export const DesktopSidebar=({width:e})=>{let[d,l]=n(null),[h,x]=n(null),y=o(()=>({current:d}),[d]),E=o(()=>({current:h}),[h]),{palette:v,shape:f,spacing:B}=i(),{background:R=v.background.paper,border:$=0,borderRadius:w=f.sidebarBorderRadius??f.borderRadius,filter:K=`
9
+ drop-shadow(0 1px 1.5px hsl(from ${v.common.black} h s l / 12%))
10
+ drop-shadow(0 1px 0.5px hsl(from ${v.common.black} h s l / 14%))
11
+ drop-shadow(0 2px 0.5px hsl(from ${v.common.black} h s l / 20%))
12
+ `,padding:C=B(2.5),scrollableIndicatorBackground:F=`linear-gradient(
13
+ 180deg,
14
+ hsl(from black h s l / 12%),
15
+ hsl(from black h s l / 0%) 8px
16
+ )`}=t({props:{},name:k}),{hasMiniSidebar:H,hasSplitSidebar:I}=u.useSidebarContent(),D=S(),P=!s(),T=c(y,{disabled:!P}),j=c(E,{disabled:!P});p(E,{disabled:!P});let z={background:R,border:$,borderRadius:w,filter:K,isHeaderEmpty:T,isContentEmpty:j,padding:C,scrollableIndicatorBackground:F,width:e};return a(g.Root,{ownerState:z,"data-sidebar":b({variant:{[`${SidebarKeys.Minimalist}`]:H,[`${SidebarKeys.Split}`]:I},state:{[`${SidebarKeys.Visible}`]:P,[`${SidebarKeys.Hidden}`]:!P,[`${SidebarKeys.Assistant}`]:D}}),inert:P?void 0:"",children:[r(g.Tabs,{ownerState:z,"data-sidebar":"slot[tabs]",children:r(u.DesktopSidebarTabs,{})}),r(g.Header,{ref:l,ownerState:z,"data-sidebar":"slot[header]",children:r(u.DesktopSidebarBackButton,{})}),r(g.Body,{ownerState:z,"data-sidebar":"slot[body]",children:r(g.Content,{ref:x,ownerState:z,"data-sidebar":"slot[content]",children:r(u.DesktopSidebarContent,{})})}),r(g.Footer,{ownerState:z,"data-sidebar":"slot[footer]",children:r(u.DesktopSidebarFooter,{})}),r(m,{})]})};
@@ -1,11 +1,11 @@
1
- import{jsx as t,jsxs as a,Fragment as e}from"react/jsx-runtime";import{snackbarClasses as o,styled as i,useTheme as r,useThemeProps as n}from"@mui/material";import d from"lodash/noop.js";import{AnimatePresence as s}from"motion/react";import{useRef as l}from"react";import{useAccessService as m,useEagerObservableSelector as c,useIsFullscreenActive as p}from"#package/react-sdk";import{attrf as u,commonStyles as b,numToPx as h,useIsEmpty as g,useResponsive as f,useViewportSize as y}from"#package/ui-sdk";import{useConfigurator as x}from"../../../application-runtime/index.js";import{usePreview as v}from"../../../configurator-context/index.js";import{ASSISTANT_PANEL_SLOT as w,AssistantPanel as S,useIsAssistantPanelOpen as $}from"../../assistant/index.js";import{LayoutSlots as k}from"../slots/index.js";import{MobileHeader as C}from"../slots/slots.js";import{MobilePreview as F}from"./MobilePreview.js";import{useSceneSafeArea as M}from"./use-scene-safe-area.js";let T="visible",I="hidden",R=i("div",{name:"PhxMobileHeader",slot:"root"})(({theme:{spacing:t}})=>({...b.transition.fadeInFrom,alignItems:"center",display:"flex",gap:t(1),justifyContent:"space-between",position:"relative","@container style(--inspect: on)":{background:"hsl(from tomato h s l / 50%)"},'[data-header*="slot"]':{display:"flex",gap:t(2),"& > *":{pointerEvents:"auto"}},'[data-header="slot[center]"]':{display:"grid",inset:0,placeItems:"center",position:"absolute"},[`&[data-header*="${T}"]`]:{opacity:1,transitionDuration:"200ms, 300ms",transitionTimingFunction:"linear, ease-out",translate:"0 0"},[`&[data-header*="${I}"]`]:{opacity:0,transitionDuration:"100ms, 100ms",transitionTimingFunction:"linear, ease-in",translate:"0 -60%"}})),B="visible",E="hidden",P=i("div",{name:"PhxMobileControls",slot:"root"})(({theme:{spacing:t}})=>({alignItems:"end",display:"flex",position:"relative","@container style(--inspect: on)":{background:"hsl(from tomato h s l / 50%)"},'[data-controls*="slot"]':{"& > *":{pointerEvents:"auto"}},'[data-controls="slot[toolControls]"]':{...b.transition.fadeInFrom,"&:not(:empty)":{marginInlineEnd:t(2)},"& > *":{...b.transition.fadeIn,transitionDelay:"300ms",transitionDuration:"300ms"}},'[data-controls="slot[viewControls]"]':{...b.transition.fadeInFrom,marginInlineStart:"auto"},'[data-controls="slot[toolbar]"]':{"&:not(:empty)":{marginInlineStart:t(2)}},[`&[data-controls*="${B}"]`]:{'[data-controls="slot[toolControls]"], [data-controls="slot[viewControls]"]':{opacity:1,transitionDuration:"200ms, 300ms",transitionTimingFunction:"linear, ease-out",translate:"0 0"}},[`&[data-controls*="${E}"]`]:{'[data-controls="slot[toolControls]"], [data-controls="slot[viewControls]"]':{opacity:0,transitionDuration:"100ms, 100ms",transitionTimingFunction:"linear, ease-in",translate:"0 60%"}}})),D="PhxMobileSidebar",j="visible",A="hidden",z="assistant",H={Root:i("div",{name:D,slot:"root",shouldForwardProp:t=>"ownerState"!==t})(({ownerState:t})=>[`
1
+ import{jsx as t,jsxs as a,Fragment as e}from"react/jsx-runtime";import{snackbarClasses as o,styled as i,useTheme as r,useThemeProps as n}from"@mui/material";import{AnimatePresence as d}from"motion/react";import{useRef as s}from"react";import{useAccessService as l,useEagerObservableSelector as m,useIsFullscreenActive as c}from"#package/react-sdk";import{attrf as p,commonStyles as u,numToPx as b,useIsEmpty as h,useViewportSize as g}from"#package/ui-sdk";import{useConfigurator as f}from"../../../application-runtime/index.js";import{usePreview as y}from"../../../configurator-context/index.js";import{ASSISTANT_PANEL_SLOT as x,AssistantPanel as v,useIsAssistantPanelOpen as w}from"../../assistant/index.js";import{LayoutSlots as S}from"../slots/index.js";import{MobileHeader as $}from"../slots/slots.js";import{MobilePreview as k}from"./MobilePreview.js";import{useLayoutSceneSafeArea as C}from"./use-layout-scene-safe-area.js";let F="visible",M="hidden",T=i("div",{name:"PhxMobileHeader",slot:"root"})(({theme:{spacing:t}})=>({...u.transition.fadeInFrom,alignItems:"center",display:"flex",gap:t(1),justifyContent:"space-between",position:"relative","@container style(--inspect: on)":{background:"hsl(from tomato h s l / 50%)"},'[data-header*="slot"]':{display:"flex",gap:t(2),"& > *":{pointerEvents:"auto"}},'[data-header="slot[center]"]':{display:"grid",inset:0,placeItems:"center",position:"absolute"},[`&[data-header*="${F}"]`]:{opacity:1,transitionDuration:"200ms, 300ms",transitionTimingFunction:"linear, ease-out",translate:"0 0"},[`&[data-header*="${M}"]`]:{opacity:0,transitionDuration:"100ms, 100ms",transitionTimingFunction:"linear, ease-in",translate:"0 -60%"}})),I="visible",R="hidden",B=i("div",{name:"PhxMobileControls",slot:"root"})(({theme:{spacing:t}})=>({alignItems:"end",display:"flex",position:"relative","@container style(--inspect: on)":{background:"hsl(from tomato h s l / 50%)"},'[data-controls*="slot"]':{"& > *":{pointerEvents:"auto"}},'[data-controls="slot[toolControls]"]':{...u.transition.fadeInFrom,"&:not(:empty)":{marginInlineEnd:t(2)},"& > *":{...u.transition.fadeIn,transitionDelay:"300ms",transitionDuration:"300ms"}},'[data-controls="slot[viewControls]"]':{...u.transition.fadeInFrom,marginInlineStart:"auto"},'[data-controls="slot[toolbar]"]':{"&:not(:empty)":{marginInlineStart:t(2)}},[`&[data-controls*="${I}"]`]:{'[data-controls="slot[toolControls]"], [data-controls="slot[viewControls]"]':{opacity:1,transitionDuration:"200ms, 300ms",transitionTimingFunction:"linear, ease-out",translate:"0 0"}},[`&[data-controls*="${R}"]`]:{'[data-controls="slot[toolControls]"], [data-controls="slot[viewControls]"]':{opacity:0,transitionDuration:"100ms, 100ms",transitionTimingFunction:"linear, ease-in",translate:"0 60%"}}})),E="PhxMobileSidebar",P="visible",D="hidden",j="assistant",A={Root:i("div",{name:E,slot:"root",shouldForwardProp:t=>"ownerState"!==t})(({ownerState:t})=>[`
2
2
  --phx-sidebar-background: ${t.background};
3
3
  --phx-sidebar-padding: ${t.padding};
4
4
  --phx-sidebar-radius: ${t.borderRadius}px;
5
- `,{...b.transition.fadeInFrom,background:"var(--phx-sidebar-background)",borderStartStartRadius:"var(--phx-sidebar-radius)",borderStartEndRadius:"var(--phx-sidebar-radius)",display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gridTemplateRows:"min-content minmax(0, 1fr) min-content",position:"relative","& > *":{pointerEvents:"auto"},"@container style(--inspect: on)":{background:"hsl(from gold h s l / 50%)"},'&:has([data-sidebar*="slot[content]"])':{...t.isContentEmpty&&{"--phx-sidebar-radius":0,'[data-sidebar*="slot[header]"]':{paddingBlock:0,"& > *":{display:"none"}}}},[`&[data-sidebar*="${j}"]`]:{opacity:1,transitionDuration:"200ms, 300ms",transitionTimingFunction:"linear, ease-out",translate:"0 0"},[`&[data-sidebar*="${A}"]`]:{opacity:0,transitionDuration:"100ms, 100ms",transitionTimingFunction:"linear, ease-in",translate:"0 60%"},[`&[data-sidebar*="${z}"] > :not([data-sidebar="${w}"])`]:{visibility:"hidden"}}]),Header:i("header",{name:D,slot:"header",shouldForwardProp:t=>"ownerState"!==t})(({theme:{spacing:t}})=>({alignItems:"center",borderStartStartRadius:"inherit",borderStartEndRadius:"inherit",display:"grid",gap:t(1),gridTemplateColumns:"repeat(2, minmax(0, 1fr))",paddingBlock:"calc(var(--phx-sidebar-padding) * 0.5)",paddingInline:"var(--phx-sidebar-padding)","& > *":{...b.transition.fadeIn,transitionDelay:"100ms",transitionDuration:"300ms"},'[data-sidebar="slot[header.start]"]':{},'[data-sidebar="slot[header.end]"]':{justifySelf:"end"}})),Body:i("div",{name:D,slot:"body",shouldForwardProp:t=>"ownerState"!==t})({display:"grid",gridTemplateRows:"minmax(0, 1fr)"}),Content:i("div",{name:D,slot:"content",shouldForwardProp:t=>"ownerState"!==t})(({theme:{spacing:t}})=>({...b.layout.normalizeScrollableContainer,display:"grid",gap:t(2),gridAutoRows:"min-content",paddingBlock:"calc(var(--phx-sidebar-padding) * 0.5)",paddingInline:"var(--phx-sidebar-padding)","&:empty":{paddingBlock:0}})),Tabs:i("div",{name:D,slot:"tabs",shouldForwardProp:t=>"ownerState"!==t})(({theme:{palette:t}})=>({borderBlockStart:`1px solid ${t.divider}`,paddingBlock:"calc(var(--phx-sidebar-padding) * 0.5)",paddingInline:"calc(var(--phx-sidebar-padding) * 0.75)","&:is(:empty)":{border:0,padding:0}})),Footer:i("footer",{name:D,slot:"footer",shouldForwardProp:t=>"ownerState"!==t})(({theme:{palette:t}})=>({borderBlockStart:`1px solid ${t.divider}`,paddingBlock:"calc(var(--phx-sidebar-padding) * 0.5)",paddingInline:"var(--phx-sidebar-padding)","&:is(:empty)":{borderColor:"transparent",paddingBlock:0}}))};export const PhxMobileLayoutName="PhxMobileLayout";let L="initial",q="fullscreen",N="min(480px, 50cqb)",V=["auto","min-content","max-content","fit-content"],G=i("div",{name:"PhxMobileLayout",slot:"root",shouldForwardProp:t=>"ownerState"!==t})(({ownerState:t,theme:{spacing:a}})=>[`
5
+ `,{...u.transition.fadeInFrom,background:"var(--phx-sidebar-background)",borderStartStartRadius:"var(--phx-sidebar-radius)",borderStartEndRadius:"var(--phx-sidebar-radius)",display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gridTemplateRows:"min-content minmax(0, 1fr) min-content",position:"relative","& > *":{pointerEvents:"auto"},"@container style(--inspect: on)":{background:"hsl(from gold h s l / 50%)"},'&:has([data-sidebar*="slot[content]"])':{...t.isContentEmpty&&{"--phx-sidebar-radius":0,'[data-sidebar*="slot[header]"]':{paddingBlock:0,"& > *":{display:"none"}}}},[`&[data-sidebar*="${P}"]`]:{opacity:1,transitionDuration:"200ms, 300ms",transitionTimingFunction:"linear, ease-out",translate:"0 0"},[`&[data-sidebar*="${D}"]`]:{opacity:0,transitionDuration:"100ms, 100ms",transitionTimingFunction:"linear, ease-in",translate:"0 60%"},[`&[data-sidebar*="${j}"] > :not([data-sidebar="${x}"])`]:{visibility:"hidden"}}]),Header:i("header",{name:E,slot:"header",shouldForwardProp:t=>"ownerState"!==t})(({theme:{spacing:t}})=>({alignItems:"center",borderStartStartRadius:"inherit",borderStartEndRadius:"inherit",display:"grid",gap:t(1),gridTemplateColumns:"repeat(2, minmax(0, 1fr))",paddingBlock:"calc(var(--phx-sidebar-padding) * 0.5)",paddingInline:"var(--phx-sidebar-padding)","& > *":{...u.transition.fadeIn,transitionDelay:"100ms",transitionDuration:"300ms"},'[data-sidebar="slot[header.start]"]':{},'[data-sidebar="slot[header.end]"]':{justifySelf:"end"}})),Body:i("div",{name:E,slot:"body",shouldForwardProp:t=>"ownerState"!==t})({display:"grid",gridTemplateRows:"minmax(0, 1fr)"}),Content:i("div",{name:E,slot:"content",shouldForwardProp:t=>"ownerState"!==t})(({theme:{spacing:t}})=>({...u.layout.normalizeScrollableContainer,display:"grid",gap:t(2),gridAutoRows:"min-content",paddingBlock:"calc(var(--phx-sidebar-padding) * 0.5)",paddingInline:"var(--phx-sidebar-padding)","&:empty":{paddingBlock:0}})),Tabs:i("div",{name:E,slot:"tabs",shouldForwardProp:t=>"ownerState"!==t})(({theme:{palette:t}})=>({borderBlockStart:`1px solid ${t.divider}`,paddingBlock:"calc(var(--phx-sidebar-padding) * 0.5)",paddingInline:"calc(var(--phx-sidebar-padding) * 0.75)","&:is(:empty)":{border:0,padding:0}})),Footer:i("footer",{name:E,slot:"footer",shouldForwardProp:t=>"ownerState"!==t})(({theme:{palette:t}})=>({borderBlockStart:`1px solid ${t.divider}`,paddingBlock:"calc(var(--phx-sidebar-padding) * 0.5)",paddingInline:"var(--phx-sidebar-padding)","&:is(:empty)":{borderColor:"transparent",paddingBlock:0}}))};export const PhxMobileLayoutName="PhxMobileLayout";let z="initial",H="fullscreen",L="min(480px, 50cqb)",q=["auto","min-content","max-content","fit-content"],N=i("div",{name:"PhxMobileLayout",slot:"root",shouldForwardProp:t=>"ownerState"!==t})(({ownerState:t,theme:{spacing:a}})=>[`
6
6
  --inspect: off; // 🕹️ inspection mode toggle
7
7
 
8
- --phx-layout-sidebar-track-size: ${h(t.sidebarHeight)};
8
+ --phx-layout-sidebar-track-size: ${b(t.sidebarHeight)};
9
9
  --phx-layout-gutter: ${a(2)};
10
10
  `,{display:"grid",gridTemplateColumns:`
11
11
  [full-start]
@@ -39,4 +39,4 @@ import{jsx as t,jsxs as a,Fragment as e}from"react/jsx-runtime";import{snackbarC
39
39
  [footer-end]
40
40
  var(--phx-layout-gutter)
41
41
  [full-end]
42
- `},'[data-layout*="slot[body.header]"]':{gridArea:"header-start / main-start / header-end / main-end"},'[data-layout*="slot[body.footer]"]':{gridArea:"footer-start / main-start / footer-end / main-end",position:"relative"},'[data-layout*="slot[body.safeSceneArea]"]':{gridArea:"full","@container style(--inspect: on)":{background:"hsl(from lime h s l / 50%)"}},'[data-layout="slot[body.sideEffects]"]':{insetBlockEnd:`calc(100% + ${a(2)})`,position:"absolute"},'[data-layout*="slot[sidebar]"]':{display:"grid",gridArea:"sidebar-start / full-start / sidebar-end / full-end",gridTemplateColumns:"minmax(0, 1fr)",gridTemplateRows:"minmax(0, auto)"},'[data-layout*="slot[footer]"]':{gridArea:"footer-start / full-start / footer-end / full-end",zIndex:1},'&:has([data-sidebar*="slot[content]"])':{...t.isContentEmpty&&{"--phx-layout-sidebar-track-size":"min-content"}},[`&[data-layout*="${L}"]`]:{transitionDelay:"200ms",transitionDuration:"300ms"},[`&[data-layout*="${q}"]`]:{transitionDelay:"0ms",transitionDuration:"300ms"},[`&:has([data-sidebar*="${A}"])[class]`]:{"--phx-layout-sidebar-track-size":0}},null!=t.assistantFocusHeight&&{'[data-layout*="slot[sidebar]"]':{alignSelf:"start",blockSize:`min(100%, ${t.assistantFocusHeight}px)`,gridRow:"full-start / full-end",zIndex:2}}]),J=i("div")({gridArea:"1 / 1 / -1 / -1"}),K=t=>({inert:t?"":void 0});export const MobileLayout=()=>{let o=l(null),{palette:i,shape:b,spacing:h}=r(),{sidebarHeight:w=N}=n({props:{},name:"PhxMobileLayout"}),{background:O=i.background.paper,borderRadius:Q=b.sidebarBorderRadius??b.borderRadius,padding:U=h(2)}=n({props:{},name:D}),{accessInfo:W}=m(),X=p(),{isPreview:Y,isHidden:Z}=v(),_=!Z&&!Y,tt=!X&&_,ta=!X&&_,te=!X,{setCanvasPadding:to}=f(),{containerRef:ti,safeAreaRef:tr}=M(_?to:d,!1),tn=g(o,{disabled:!te}),{assistantSystem:td}=x(),ts=$(),tl=c(td.panel$,t=>t.isInputFocused,[]),tm=ts&&te&&tl,tc=y(tm),tp=tn&&!ts,tu={isContentEmpty:tp,sidebarHeight:ts?V.includes(w)?N:w:w,assistantFocusHeight:tm?tc?.[1]:void 0},tb={background:O,borderRadius:Q,padding:U,isContentEmpty:tp};return a(e,{children:[t(s,{initial:!1,children:!Z&&Y&&t(F,{})}),a(G,{ownerState:tu,"data-layout":u({state:{[`${L}`]:!X,[`${q}`]:X}}),...K(!_),children:[t(J,{ref:ti}),t("div",{"data-layout":"slot[sideEffects]",children:t(k.MobileSnackbarsRoot,{})}),a("main",{"data-layout":"slot[body]",children:[t("header",{"data-layout":"slot[body.header]",children:a(R,{"data-header":u({state:{[`${T}`]:tt,[`${I}`]:!tt}}),...K(!tt),children:[t("div",{"data-header":"slot[start]",children:t(C,{})}),t("div",{"data-header":"slot[center]",children:t(k.MobileCallToAction,{})}),a("div",{"data-header":"slot[end]",children:[W.viewMode&&!X&&t(k.MobileReadonlyBanner,{}),t(k.MobileHamburgerMenu,{})]})]})}),t("div",{ref:tr,"data-layout":"slot[body.safeSceneArea]"}),t("div",{"data-layout":"slot[body.footer] interactive",children:a(P,{"data-controls":u({state:{[`${B}`]:ta,[`${E}`]:!ta}}),children:[t("div",{"data-controls":"slot[toolControls]",...K(!ta),children:t(k.MobileToolControls,{})}),t("div",{"data-controls":"slot[viewControls]",...K(!ta),children:t(k.MobileViewControls,{})}),t("div",{"data-controls":"slot[toolbar]",children:_&&t(k.MobileToolbar,{})})]})})]}),t("aside",{"data-layout":"slot[sidebar]",children:a(H.Root,{ownerState:tb,"data-sidebar":u({state:{[`${j}`]:te,[`${A}`]:!te,[`${z}`]:ts}}),...K(!te),children:[a(H.Header,{ownerState:tb,"data-sidebar":"slot[header]",children:[t("div",{"data-sidebar":"slot[header.start]",children:t(k.MobileSidebarBackButton,{})}),t("div",{"data-sidebar":"slot[header.end]",children:t(k.MobilePoweredBy,{})})]}),t(H.Body,{ownerState:tb,"data-sidebar":"slot[body]",children:t(H.Content,{ref:o,ownerState:tb,"data-sidebar":"slot[content]",children:t(k.MobileSidebarContent,{})})}),t(H.Tabs,{ownerState:tb,"data-sidebar":"slot[tabs]",children:t(k.MobileTabs,{})}),t(H.Footer,{ownerState:tb,"data-sidebar":"slot[footer]",children:t(k.MobileSidebarFooter,{})}),t(S,{})]})}),t("footer",{"data-layout":"slot[footer] interactive",children:t(k.MobileFooter,{})})]})]})};
42
+ `},'[data-layout*="slot[body.header]"]':{gridArea:"header-start / main-start / header-end / main-end"},'[data-layout*="slot[body.footer]"]':{gridArea:"footer-start / main-start / footer-end / main-end",position:"relative"},'[data-layout*="slot[body.safeSceneArea]"]':{gridArea:"full","@container style(--inspect: on)":{background:"hsl(from lime h s l / 50%)"}},'[data-layout="slot[body.sideEffects]"]':{insetBlockEnd:`calc(100% + ${a(2)})`,position:"absolute"},'[data-layout*="slot[sidebar]"]':{display:"grid",gridArea:"sidebar-start / full-start / sidebar-end / full-end",gridTemplateColumns:"minmax(0, 1fr)",gridTemplateRows:"minmax(0, auto)"},'[data-layout*="slot[footer]"]':{gridArea:"footer-start / full-start / footer-end / full-end",zIndex:1},'&:has([data-sidebar*="slot[content]"])':{...t.isContentEmpty&&{"--phx-layout-sidebar-track-size":"min-content"}},[`&[data-layout*="${z}"]`]:{transitionDelay:"200ms",transitionDuration:"300ms"},[`&[data-layout*="${H}"]`]:{transitionDelay:"0ms",transitionDuration:"300ms"},[`&:has([data-sidebar*="${D}"])[class]`]:{"--phx-layout-sidebar-track-size":0}},null!=t.assistantFocusHeight&&{'[data-layout*="slot[sidebar]"]':{alignSelf:"start",blockSize:`min(100%, ${t.assistantFocusHeight}px)`,gridRow:"full-start / full-end",zIndex:2}}]),V=i("div")({gridArea:"1 / 1 / -1 / -1"}),G=t=>({inert:t?"":void 0});export const MobileLayout=()=>{let o=s(null),{palette:i,shape:u,spacing:b}=r(),{sidebarHeight:x=L}=n({props:{},name:"PhxMobileLayout"}),{background:J=i.background.paper,borderRadius:K=u.sidebarBorderRadius??u.borderRadius,padding:O=b(2)}=n({props:{},name:E}),{accessInfo:Q}=l(),U=c(),{isPreview:W,isHidden:X}=y(),Y=!X&&!W,Z=!U&&Y,_=!U&&Y,tt=!U,{containerRef:ta,safeAreaRef:te}=C({enabled:Y,hasMiniSidebar:!1}),to=h(o,{disabled:!tt}),{assistantSystem:ti}=f(),tr=w(),tn=m(ti.panel$,t=>t.isInputFocused,[]),td=tr&&tt&&tn,ts=g(td),tl=to&&!tr,tm={isContentEmpty:tl,sidebarHeight:tr?q.includes(x)?L:x:x,assistantFocusHeight:td?ts?.[1]:void 0},tc={background:J,borderRadius:K,padding:O,isContentEmpty:tl};return a(e,{children:[t(d,{initial:!1,children:!X&&W&&t(k,{})}),a(N,{ownerState:tm,"data-layout":p({state:{[`${z}`]:!U,[`${H}`]:U}}),...G(!Y),children:[t(V,{ref:ta}),t("div",{"data-layout":"slot[sideEffects]",children:t(S.MobileSnackbarsRoot,{})}),a("main",{"data-layout":"slot[body]",children:[t("header",{"data-layout":"slot[body.header]",children:a(T,{"data-header":p({state:{[`${F}`]:Z,[`${M}`]:!Z}}),...G(!Z),children:[t("div",{"data-header":"slot[start]",children:t($,{})}),t("div",{"data-header":"slot[center]",children:t(S.MobileCallToAction,{})}),a("div",{"data-header":"slot[end]",children:[Q.viewMode&&!U&&t(S.MobileReadonlyBanner,{}),t(S.MobileHamburgerMenu,{})]})]})}),t("div",{ref:te,"data-layout":"slot[body.safeSceneArea]"}),t("div",{"data-layout":"slot[body.footer] interactive",children:a(B,{"data-controls":p({state:{[`${I}`]:_,[`${R}`]:!_}}),children:[t("div",{"data-controls":"slot[toolControls]",...G(!_),children:t(S.MobileToolControls,{})}),t("div",{"data-controls":"slot[viewControls]",...G(!_),children:t(S.MobileViewControls,{})}),t("div",{"data-controls":"slot[toolbar]",children:Y&&t(S.MobileToolbar,{})})]})})]}),t("aside",{"data-layout":"slot[sidebar]",children:a(A.Root,{ownerState:tc,"data-sidebar":p({state:{[`${P}`]:tt,[`${D}`]:!tt,[`${j}`]:tr}}),...G(!tt),children:[a(A.Header,{ownerState:tc,"data-sidebar":"slot[header]",children:[t("div",{"data-sidebar":"slot[header.start]",children:t(S.MobileSidebarBackButton,{})}),t("div",{"data-sidebar":"slot[header.end]",children:t(S.MobilePoweredBy,{})})]}),t(A.Body,{ownerState:tc,"data-sidebar":"slot[body]",children:t(A.Content,{ref:o,ownerState:tc,"data-sidebar":"slot[content]",children:t(S.MobileSidebarContent,{})})}),t(A.Tabs,{ownerState:tc,"data-sidebar":"slot[tabs]",children:t(S.MobileTabs,{})}),t(A.Footer,{ownerState:tc,"data-sidebar":"slot[footer]",children:t(S.MobileSidebarFooter,{})}),t(v,{})]})}),t("footer",{"data-layout":"slot[footer] interactive",children:t(S.MobileFooter,{})})]})]})};
@@ -1 +1 @@
1
- import{jsx as t}from"react/jsx-runtime";import e from"lodash/noop.js";import{useCallback as o,useMemo as i}from"react";import{useResolveLocalizable as r}from"#package/react-sdk";import{Preview as a,useResponsive as s}from"#package/ui-sdk";import{usePresetSelection as n,usePreview as m}from"../../../configurator-context/index.js";import{useSceneSafeArea as p}from"./use-scene-safe-area.js";let c={id:"sdk.preview.customize.title",message:"Customize product"},l={id:"sdk.preview.start.button.label",message:"Start configuring"},u={initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{opacity:{duration:.1,ease:"linear"}}};export const MobilePreview=f=>{let{slotProps:d={},slots:g}=f,{enter:k,isPreview:x}=m(),{hasMultiplePresets:b}=n(),{setCanvasPadding:j}=s(),{containerRef:y,safeAreaRef:w,update:v}=p(x?j:e,!1),S=r(),h=o(()=>{v()},[v]),z=i(()=>({...d,root:{...u,onLayoutAnimationComplete:h,...d.root}}),[h,d]);return t(a,{title:S(c),buttonLabel:S(l),containerRef:y,safeAreaRef:w,withScene:!b,slots:g,slotProps:z,onStart:k})};
1
+ import{jsx as t}from"react/jsx-runtime";import{useCallback as e,useMemo as o}from"react";import{useResolveLocalizable as i}from"#package/react-sdk";import{Preview as a}from"#package/ui-sdk";import{usePresetSelection as r,usePreview as s}from"../../../configurator-context/index.js";import{useLayoutSceneSafeArea as n}from"./use-layout-scene-safe-area.js";let m={id:"sdk.preview.customize.title",message:"Customize product"},p={id:"sdk.preview.start.button.label",message:"Start configuring"},c={initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{opacity:{duration:.1,ease:"linear"}}};export const MobilePreview=l=>{let{slotProps:u={},slots:d}=l,{enter:f,isPreview:b}=s(),{hasMultiplePresets:g}=r(),{containerRef:k,safeAreaRef:x,update:y}=n({enabled:b,hasMiniSidebar:!1}),j=i(),w=e(()=>{y()},[y]),S=o(()=>({...u,root:{...c,onLayoutAnimationComplete:w,...u.root}}),[w,u]);return t(a,{title:j(m),buttonLabel:j(p),containerRef:k,safeAreaRef:x,withScene:!g,slots:d,slotProps:S,onStart:f})};
@@ -0,0 +1,47 @@
1
+ /** What a built-in layout tells the safe-area measurement about itself. */
2
+ export interface LayoutSceneSafeAreaOptions {
3
+ /** Whether the layout owns the canvas padding now. See `useLayoutSceneSafeArea`. */
4
+ readonly enabled: boolean;
5
+ /** Whether the sidebar is collapsed to its mini form, which the scene clears only in part. */
6
+ readonly hasMiniSidebar: boolean;
7
+ }
8
+ /**
9
+ * Measures the gap between a full-area container and an inner "safe area" element,
10
+ * and writes the resulting gaps to the responsive context as canvas padding — letting the
11
+ * 3D scene render only in the region not covered by overlay UI (preview body, sidebar, etc.).
12
+ *
13
+ * The implementation behind `useSceneSafeArea`, with the two things only the built-in
14
+ * layouts need: `enabled` and `hasMiniSidebar`.
15
+ *
16
+ * Returns:
17
+ * - `containerRef` — attach to the full-area measurement element.
18
+ * - `safeAreaRef` — attach to the region the scene should remain visible in.
19
+ * - `update` — trigger a manual re-measure on demand.
20
+ *
21
+ * `containerRef` / `safeAreaRef` are *callback* refs: the `ResizeObserver` (re)connects
22
+ * whenever a node attaches or detaches. This matters because the owning layout can mount
23
+ * late — `AnimatePresence mode="wait"` only mounts the interface after the preview has
24
+ * finished exiting, well after a one-shot mount effect would have run and bailed on null
25
+ * refs (leaving the scene stuck at the preview's padding).
26
+ *
27
+ * `enabled` is for a layout that stays mounted while another one owns the padding (e.g. the
28
+ * mobile interface while previewing, or a preview that lingers through its exit fade). While
29
+ * it is `false` the observer is disconnected, and a measurement started by the `update` of that
30
+ * render or by a pending retry writes nothing. An `update` that was created while the hook was
31
+ * enabled, such as a handler an animation already holds, still measures and writes. Turning
32
+ * `enabled` back on reconnects the observer, which measures again.
33
+ *
34
+ * `getBoundingClientRect()` returns *visually transformed* rects, so `measure` skips
35
+ * transformed frames automatically (retrying until the transform clears) to avoid feeding
36
+ * the scene a scaled gap mid layout animation.
37
+ *
38
+ * `update` exists for the complementary case: when only an ancestor's `transform` changes
39
+ * (e.g. motion FLIP settling), `ResizeObserver` doesn't fire, so nothing re-triggers
40
+ * `measure`. Call `update()` once the transform settles (e.g. from
41
+ * `onLayoutAnimationComplete`) to re-measure against the actual layout box.
42
+ */
43
+ export declare const useLayoutSceneSafeArea: (options: LayoutSceneSafeAreaOptions) => {
44
+ containerRef: (node: HTMLDivElement | null) => void;
45
+ safeAreaRef: (node: HTMLDivElement | null) => void;
46
+ update: () => void;
47
+ };
@@ -0,0 +1 @@
1
+ import{useCallback as t,useEffect as e,useRef as r}from"react";import{canvasPaddingComponent as n}from"#package/domain";import{useFirstComponent as o}from"#package/react-sdk";import{useResponsive as a}from"#package/ui-sdk";export const useLayoutSceneSafeArea=c=>{let{enabled:u,hasMiniSidebar:i}=c,{setCanvasPadding:m}=a(),l=r(null),s=r(null),f=r(null),h=r(null),p=r(0),g=r(()=>{}),b=o({componentTypes:[n]}),d=t(()=>{let t=s.current,e=f.current;if(!u||!t||!e)return;let r=t.getBoundingClientRect(),n=e.getBoundingClientRect();if(Math.abs(r.width-t.offsetWidth)>1||Math.abs(r.height-t.offsetHeight)>1){if(p.current+=1,p.current>60){p.current=0;return}l.current&&cancelAnimationFrame(l.current),l.current=requestAnimationFrame(()=>g.current());return}p.current=0;let o={bottom:Math.max(0,r.bottom-n.bottom),left:Math.max(0,n.left-r.left),right:Math.max(0,r.right-n.right),top:Math.max(0,n.top-r.top)},a=i?.3:1,c=b?.state.bottom??1,h=b?.state.left??1,d=b?.state.right??a,A=b?.state.top??1;m({bottom:o.bottom*c,left:o.left*h,right:o.right*d,top:o.top*A})},[u,i,b?.state.bottom,b?.state.left,b?.state.right,b?.state.top,m]);g.current=d;let A=t(()=>{l.current&&cancelAnimationFrame(l.current),l.current=requestAnimationFrame(d)},[d]),M=t(()=>{h.current?.disconnect(),h.current=null},[]),k=t(()=>{let t=s.current,e=f.current;if(!u||!t||!e)return void M();M();let r=new ResizeObserver(A);r.observe(t),r.observe(e),h.current=r},[M,u,A]),x=t(t=>{s.current=t,k()},[k]),F=t(t=>{f.current=t,k()},[k]);return e(()=>(k(),()=>{M(),l.current&&cancelAnimationFrame(l.current)}),[k,M]),{containerRef:x,safeAreaRef:F,update:A}};
@@ -1,33 +1,18 @@
1
- import type { CanvasPadding } from '#package/ui-sdk';
2
1
  /**
3
- * Measures the gap between a full-area container and an inner "safe area" element,
4
- * and forwards the resulting gaps as canvas padding — letting the 3D scene render
5
- * only in the region not covered by overlay UI (preview body, sidebar, etc.).
2
+ * Tells the camera which part of the canvas a layout leaves free for the scene.
6
3
  *
7
- * Returns:
8
- * - `containerRef` — attach to the full-area measurement element.
9
- * - `safeAreaRef` — attach to the region the scene should remain visible in.
10
- * - `update` — trigger a manual re-measure on demand.
11
- *
12
- * `containerRef` / `safeAreaRef` are *callback* refs: the `ResizeObserver` (re)connects
13
- * whenever a node attaches or detaches. This matters because the owning layout can mount
14
- * late — `AnimatePresence mode="wait"` only mounts the interface after the preview has
15
- * finished exiting, well after a one-shot mount effect would have run and bailed on null
16
- * refs (leaving the scene stuck at the preview's padding).
17
- *
18
- * `enabled` gates the whole thing: when `false` the observer is disconnected so an inactive
19
- * layout (e.g. the interface while previewing) neither measures nor writes padding.
4
+ * A layout attaches `containerRef` to the element that covers the whole canvas and `safeAreaRef`
5
+ * to the region the scene should stay visible in. The hook measures the gap between the two,
6
+ * again whenever either element resizes, and writes it to the responsive context as the canvas
7
+ * padding the camera frames the scene with.
20
8
  *
21
- * `getBoundingClientRect()` returns *visually transformed* rects, so `measure` skips
22
- * transformed frames automatically (retrying until the transform clears) to avoid feeding
23
- * the scene a scaled gap mid layout animation.
24
- *
25
- * `update` exists for the complementary case: when only an ancestor's `transform` changes
26
- * (e.g. motion FLIP settling), `ResizeObserver` doesn't fire, so nothing re-triggers
27
- * `measure`. Call `update()` once the transform settles (e.g. from
28
- * `onLayoutAnimationComplete`) to re-measure against the actual layout box.
9
+ * Returns:
10
+ * - `containerRef` — attach to the element that covers the whole canvas.
11
+ * - `safeAreaRef` — attach to the region the scene should stay visible in.
12
+ * - `update` — measures again on demand, for a change no resize reports, such as a `transform`
13
+ * on an ancestor settling at the end of an animation.
29
14
  */
30
- export declare const useSceneSafeArea: (setCanvasPadding: (padding: CanvasPadding) => void, hasMiniSidebar: boolean, enabled?: boolean) => {
15
+ export declare const useSceneSafeArea: () => {
31
16
  containerRef: (node: HTMLDivElement | null) => void;
32
17
  safeAreaRef: (node: HTMLDivElement | null) => void;
33
18
  update: () => void;
@@ -1 +1 @@
1
- import{useCallback as t,useEffect as e,useRef as r}from"react";import{canvasPaddingComponent as n}from"#package/domain";import{useFirstComponent as o}from"#package/react-sdk";export const useSceneSafeArea=(a,c,u=!0)=>{let i=r(null),l=r(null),m=r(null),s=r(null),f=r(0),h=r(()=>{}),g=o({componentTypes:[n]}),p=t(()=>{let t=l.current,e=m.current;if(!t||!e)return;let r=t.getBoundingClientRect(),n=e.getBoundingClientRect();if(Math.abs(r.width-t.offsetWidth)>1||Math.abs(r.height-t.offsetHeight)>1){if(f.current+=1,f.current>60){f.current=0;return}i.current&&cancelAnimationFrame(i.current),i.current=requestAnimationFrame(()=>h.current());return}f.current=0;let o={bottom:Math.max(0,r.bottom-n.bottom),left:Math.max(0,n.left-r.left),right:Math.max(0,r.right-n.right),top:Math.max(0,n.top-r.top)},u=c?.3:1,s=g?.state.bottom??1,p=g?.state.left??1,b=g?.state.right??u,d=g?.state.top??1;a({bottom:o.bottom*s,left:o.left*p,right:o.right*b,top:o.top*d})},[c,g?.state.bottom,g?.state.left,g?.state.right,g?.state.top,a]);h.current=p;let b=t(()=>{i.current&&cancelAnimationFrame(i.current),i.current=requestAnimationFrame(p)},[p]),d=t(()=>{s.current?.disconnect(),s.current=null},[]),A=t(()=>{let t=l.current,e=m.current;if(!u||!t||!e)return void d();d();let r=new ResizeObserver(b);r.observe(t),r.observe(e),s.current=r},[d,u,b]),M=t(t=>{l.current=t,A()},[A]),x=t(t=>{m.current=t,A()},[A]);return e(()=>(A(),()=>{d(),i.current&&cancelAnimationFrame(i.current)}),[A,d]),{containerRef:M,safeAreaRef:x,update:b}};
1
+ import{useLayoutSceneSafeArea as e}from"./use-layout-scene-safe-area.js";export const useSceneSafeArea=()=>e({enabled:!0,hasMiniSidebar:!1});
@@ -46,25 +46,22 @@ countersinkNotAvailable:
46
46
  ```
47
47
 
48
48
  ```ts
49
- const violationExpressions = invariantBuilder
50
- .withInvariants(
51
- implementCustomInvariants({
52
- Plate: {
53
- finishNotAvailable: s => {
54
- return availableMaterials.some(state => state.material === s.material && state.finish === s.finish)
55
- },
56
- thicknessNotAvailable: s => {
57
- return availableMaterials.some(
58
- state => state.material === s.material && state.finish === s.finish && state.thickness === s.thickness
59
- )
60
- },
61
- countersinkNotAvailable: s => {
62
- return !s.someCounterSinkAdded || counterSinkThicknesses.includes(s.thickness)
63
- },
64
- },
65
- })
66
- )
67
- .buildViolationExpressions()
49
+ // src/invariants/invariants.ts
50
+ export default phx.domain.implementCustomInvariants({
51
+ Plate: {
52
+ finishNotAvailable: s => {
53
+ return availableMaterials.some(state => state.material === s.material && state.finish === s.finish)
54
+ },
55
+ thicknessNotAvailable: s => {
56
+ return availableMaterials.some(
57
+ state => state.material === s.material && state.finish === s.finish && state.thickness === s.thickness
58
+ )
59
+ },
60
+ countersinkNotAvailable: s => {
61
+ return !s.someCounterSinkAdded || counterSinkThicknesses.includes(s.thickness)
62
+ },
63
+ },
64
+ })
68
65
  ```
69
66
 
70
67
  With following control structure. Note the hierarchy of `fixableViolations`. The top input "fixes" all violations as it should never be disabled.
@@ -669,44 +669,6 @@ import { Model, attachComponent, configuratorBuilder } from './domain/index.js'
669
669
  // ... identical to the Code section above ...
670
670
  ```
671
671
 
672
- ### Domain Setup (`domain/index.ts`)
673
-
674
- ```typescript
675
- import { memoEval } from '@salsita-ai/sdk/domain'
676
-
677
- import { adminDomainBuilder } from './__generated/admin-implementation.js'
678
- import { generatedConfiguratorBuilder } from './__generated/configurator-builder.js'
679
- import {
680
- domainBuilder,
681
- implementCustomExpressions,
682
- implementCustomInvariants,
683
- invariantBuilder,
684
- } from './__generated/implementation.js'
685
-
686
- const violationExpressions = invariantBuilder.withInvariants(implementCustomInvariants({})).buildViolationExpressions()
687
-
688
- const customExpressions = implementCustomExpressions({
689
- // ... as shown in Code section ...
690
- })
691
-
692
- const domainFactory = domainBuilder.withExpressions(violationExpressions).withExpressions(customExpressions).build()
693
- const adminDomainFactory = adminDomainBuilder.build()
694
-
695
- export const configuratorBuilder = generatedConfiguratorBuilder
696
- .withDomainFactory(domainFactory)
697
- .withAdminDomainFactory(adminDomainFactory)
698
-
699
- export * as AdminEnhancedDomain from './__generated/admin-enhanced-model.js'
700
- export * as AdminModel from './__generated/admin-model/index.js'
701
- export * as ApplicationTypes from './__generated/application-types.js'
702
- export * as EnhancedDomain from './__generated/enhanced-model.js'
703
- export * as Model from './__generated/model/index.js'
704
-
705
- export { attachAdminComponent, createAdminRecipe } from './__generated/admin-implementation.js'
706
- export { attachComponent, createRecipe } from './__generated/implementation.js'
707
- export { createPresets } from './__generated/presets.js'
708
- ```
709
-
710
672
  ### Domain Configuration (`domain/domain.yaml`)
711
673
 
712
674
  ```yaml
@@ -99,19 +99,15 @@ components:
99
99
  Optionally disable specific options using invariants. The control performs a dry run for each option and disables those that would violate your rules. Provide a clear message; if multiple violations apply, messages are concatenated.
100
100
 
101
101
  ```typescript
102
- // domain/index.ts (extract)
103
- const violationExpressions = invariantBuilder
104
- .withInvariants(
105
- implementCustomInvariants({
106
- Table: {
107
- trunkDisabled: s =>
108
- s.edgeFinish === 'TreeTrunk'
109
- ? [{ type: 'trunkDisabled', severity: 'fatal', message: 'TreeTrunk finish is disabled because stuff!' }]
110
- : [],
111
- },
112
- })
113
- )
114
- .buildViolationExpressions()
102
+ // src/invariants/trunk-disabled.ts
103
+ export default phx.domain.implementCustomInvariants({
104
+ Table: {
105
+ trunkDisabled: s =>
106
+ s.edgeFinish === 'TreeTrunk'
107
+ ? [{ type: 'trunkDisabled', severity: 'fatal', message: 'TreeTrunk finish is disabled because stuff!' }]
108
+ : [],
109
+ },
110
+ })
115
111
  ```
116
112
 
117
113
  Register the invariant type in YAML so the system knows about it.
@@ -1,5 +1,5 @@
1
1
  {
2
- "generatedAt": "2026-10-13T07:24:40.854Z",
2
+ "generatedAt": "2026-10-14T10:55:48.160Z",
3
3
  "categories": [
4
4
  {
5
5
  "name": "Phoenix",
@@ -686,6 +686,16 @@
686
686
  ],
687
687
  "source": "storybook-example"
688
688
  },
689
+ {
690
+ "title": "Custom Layout",
691
+ "description": "Make the configurator look like the brand's own product page. A furniture shop wants its table configurator to read like the rest of its site: a floating panel on the left with the product's name,...",
692
+ "path": "docs/layouts/custom-layout.mdx",
693
+ "category": [
694
+ "Layouts",
695
+ "Custom Layout"
696
+ ],
697
+ "source": "storybook-example"
698
+ },
689
699
  {
690
700
  "title": "Custom Price",
691
701
  "description": "The custom price footer component replaces the standard price display in the sidebar footer with a fully customizable React component. This allows you to create custom pricing interfaces, add...",
@@ -133,7 +133,7 @@ The value of `WOOCOMMERCE_API_KEY` must correspond to the value of the 'API key'
133
133
  settings page and `WOOCOMMERCE_PRODUCT_NAME` must correspond to the name of the product template you created.
134
134
 
135
135
  - run development server (from this repo): `pnpm dev:server`
136
- - prepare local deployment (from the implementation project): `pnpm deployment:prepare-local`
136
+ - prepare local deployment (from the implementation project): `pnpm phoenix deployment:prepare-local`
137
137
  - start the dev process (from the implementation project): `pnpm dev`
138
138
  - run bundle build (from the implementation project): `pnpm build`
139
139