@salsita-ai/sdk 0.50.0-develop.eb204e0da4 → 0.50.0-develop.ecda3c6152

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 (2562) hide show
  1. package/README.md +33 -16
  2. package/dist/admin/AdminShell.js +1 -1
  3. package/dist/admin/create-admin-pages-from-spec.d.ts +1 -1
  4. package/dist/admin/default-admin-elements.d.ts +9 -0
  5. package/dist/admin/default-admin-elements.js +1 -0
  6. package/dist/admin/default-elements/built-in-entity-element.d.ts +10 -0
  7. package/dist/admin/default-elements/built-in-entity-element.js +1 -0
  8. package/dist/admin/default-elements/built-in-layout-element.d.ts +10 -0
  9. package/dist/admin/default-elements/built-in-layout-element.js +1 -0
  10. package/dist/admin/default-elements/index.d.ts +2 -0
  11. package/dist/admin/default-elements/index.js +1 -0
  12. package/dist/admin/index.d.ts +1 -0
  13. package/dist/admin/index.js +1 -1
  14. package/dist/admin/legacy-admin/Application.js +1 -1
  15. package/dist/application/index.d.ts +1 -0
  16. package/dist/application/index.js +1 -1
  17. package/dist/application/mount-application.d.ts +1 -1
  18. package/dist/application/mount-application.js +1 -1
  19. package/dist/application/mount-configurator.d.ts +19 -0
  20. package/dist/application/mount-configurator.js +1 -0
  21. package/dist/application/mounted-application-runtime.d.ts +4 -0
  22. package/dist/application/mounted-application-runtime.js +1 -0
  23. package/dist/application/register-web-component.d.ts +2 -0
  24. package/dist/application/register-web-component.js +1 -0
  25. package/dist/application-spec/caching/content-diff.js +1 -1
  26. package/dist/application-spec/core/application-file.d.ts +0 -2
  27. package/dist/application-spec/core/application-file.js +1 -1
  28. package/dist/application-spec/core/enhanced-json-value.d.ts +2 -99
  29. package/dist/application-spec/core/enhanced-json-value.js +1 -1
  30. package/dist/application-spec/core/index.d.ts +1 -1
  31. package/dist/application-spec/core/index.js +1 -1
  32. package/dist/application-spec/core/json-schema.d.ts +2 -52
  33. package/dist/application-spec/core/json-value.d.ts +1 -1
  34. package/dist/application-spec/core/markers/index.d.ts +1 -1
  35. package/dist/application-spec/core/markers/index.js +1 -1
  36. package/dist/application-spec/core/markers/msg-marker.d.ts +2 -28
  37. package/dist/application-spec/core/markers/msg-marker.js +1 -1
  38. package/dist/application-spec/core/markers/raw-eval-write-marker.d.ts +1 -1
  39. package/dist/application-spec/core/markers/raw-eval-write-marker.js +1 -1
  40. package/dist/application-spec/core/markers/raw-read-write-marker.js +1 -1
  41. package/dist/application-spec/enhanced-json/eval-to-constant.d.ts +14 -0
  42. package/dist/application-spec/enhanced-json/index.d.ts +4 -0
  43. package/dist/application-spec/enhanced-json/index.js +1 -0
  44. package/dist/application-spec/enhanced-json/is-enhanced-json-array.d.ts +2 -0
  45. package/dist/application-spec/enhanced-json/is-enhanced-json-array.js +1 -0
  46. package/dist/application-spec/enhanced-json/resolve-enhanced-json-value.d.ts +18 -0
  47. package/dist/application-spec/enhanced-json/resolve-enhanced-json-value.js +1 -0
  48. package/dist/application-spec/enhanced-json/schema-from-value.d.ts +24 -0
  49. package/dist/application-spec/enhanced-json/schema-from-value.js +1 -0
  50. package/dist/application-spec/enhanced-json/stringify-enhanced-json-value.d.ts +14 -0
  51. package/dist/application-spec/enhanced-json/stringify-enhanced-json-value.js +1 -0
  52. package/dist/application-spec/enhanced-json/validate-enhanced-json-value-caps.d.ts +12 -0
  53. package/dist/application-spec/enhanced-json/validate-enhanced-json-value-caps.js +1 -0
  54. package/dist/application-spec/enhanced-json/validate-no-legacy-code-ref.d.ts +13 -0
  55. package/dist/application-spec/enhanced-json/validate-no-legacy-code-ref.js +1 -0
  56. package/dist/application-spec/errors/diagnostic-codes.d.ts +37 -1
  57. package/dist/application-spec/errors/diagnostic-codes.js +1 -1
  58. package/dist/application-spec/errors/diagnostic-messages.d.ts +48 -2
  59. package/dist/application-spec/errors/diagnostic-messages.js +1 -1
  60. package/dist/application-spec/generate-application/code/common/code-imports.js +1 -1
  61. package/dist/application-spec/generate-application/code/common/env-reader.js +2 -2
  62. package/dist/application-spec/generate-application/code/common/index.d.ts +2 -0
  63. package/dist/application-spec/generate-application/code/common/index.js +1 -1
  64. package/dist/application-spec/generate-application/code/common/project-module-list.d.ts +8 -0
  65. package/dist/application-spec/generate-application/code/common/project-module-list.js +3 -0
  66. package/dist/application-spec/generate-application/code/common/single-quoted-string.d.ts +6 -0
  67. package/dist/application-spec/generate-application/code/common/single-quoted-string.js +1 -0
  68. package/dist/application-spec/generate-application/code/domain-runtime-files.js +1 -1
  69. package/dist/application-spec/generate-application/code/generate-application-code.d.ts +3 -2
  70. package/dist/application-spec/generate-application/code/generate-application-code.js +1 -1
  71. package/dist/application-spec/generate-application/code/project-scaffolding.d.ts +22 -14
  72. package/dist/application-spec/generate-application/code/project-scaffolding.js +2 -2
  73. package/dist/application-spec/generate-application/code/standalone-app-files.d.ts +2 -2
  74. package/dist/application-spec/generate-application/code/standalone-app-files.js +1 -1
  75. package/dist/application-spec/generate-application/code/story-files.js +1 -1
  76. package/dist/application-spec/generate-application/code/templates/admin-config.js +3 -0
  77. package/dist/application-spec/generate-application/code/templates/admin-domain-code.d.ts +1 -2
  78. package/dist/application-spec/generate-application/code/templates/admin-domain-code.js +6 -14
  79. package/dist/application-spec/generate-application/code/templates/admin-frontend-code.d.ts +1 -2
  80. package/dist/application-spec/generate-application/code/templates/admin-frontend-code.js +4 -4
  81. package/dist/application-spec/generate-application/code/templates/application-types.js +6 -6
  82. package/dist/application-spec/generate-application/code/templates/common/doc-comment.d.ts +2 -0
  83. package/dist/application-spec/generate-application/code/templates/common/doc-comment.js +1 -0
  84. package/dist/application-spec/generate-application/code/templates/common/format-property-key.d.ts +7 -0
  85. package/dist/application-spec/generate-application/code/templates/common/format-property-key.js +1 -0
  86. package/dist/application-spec/generate-application/code/templates/common/schema-to-type-string.js +3 -3
  87. package/dist/application-spec/generate-application/code/templates/configurator-config.js +6 -4
  88. package/dist/application-spec/generate-application/code/templates/configurator-domain-code.d.ts +2 -2
  89. package/dist/application-spec/generate-application/code/templates/configurator-domain-code.js +7 -13
  90. package/dist/application-spec/generate-application/code/templates/configurator-frontend-code.d.ts +1 -2
  91. package/dist/application-spec/generate-application/code/templates/configurator-frontend-code.js +7 -9
  92. package/dist/application-spec/generate-application/code/templates/configurator-globals.d.ts +2 -1
  93. package/dist/application-spec/generate-application/code/templates/configurator-globals.js +19 -6
  94. package/dist/application-spec/generate-application/code/templates/domain-spec/factory-types/domain-factory-types.d.ts +35 -0
  95. package/dist/application-spec/generate-application/code/templates/domain-spec/factory-types/domain-factory-types.js +5 -0
  96. package/dist/application-spec/generate-application/code/templates/domain-spec/factory-types/index.d.ts +1 -0
  97. package/dist/application-spec/generate-application/code/templates/domain-spec/factory-types/index.js +1 -0
  98. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-assistant.d.ts +2 -2
  99. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-assistant.js +1 -1
  100. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-component-optics.d.ts +1 -1
  101. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-component-optics.js +7 -7
  102. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.d.ts +4 -2
  103. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.js +1 -1
  104. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-domain-block.d.ts +3 -1
  105. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-domain-block.js +73 -73
  106. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-invariants.d.ts +9 -1
  107. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-invariants.js +1 -1
  108. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-phx-globals.js +6 -0
  109. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-presets.js +1 -1
  110. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-relation-expressions.js +1 -1
  111. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.d.ts +6 -8
  112. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.js +21 -21
  113. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-states.d.ts +1 -1
  114. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-states.js +2 -2
  115. package/dist/application-spec/generate-application/code/templates/domain-spec/index.d.ts +3 -2
  116. package/dist/application-spec/generate-application/code/templates/domain-spec/index.js +1 -1
  117. package/dist/application-spec/generate-application/code/templates/domain-spec.js +11 -11
  118. package/dist/application-spec/generate-application/code/templates/domain.js +4 -4
  119. package/dist/application-spec/generate-application/code/templates/eslint-config.d.ts +5 -0
  120. package/dist/application-spec/generate-application/code/templates/eslint-config.js +4 -5
  121. package/dist/application-spec/generate-application/code/templates/frontend-config.js +3 -5
  122. package/dist/application-spec/generate-application/code/templates/gitignore.js +0 -3
  123. package/dist/application-spec/generate-application/code/templates/global-definition/generate-action-types.d.ts +11 -0
  124. package/dist/application-spec/generate-application/code/templates/global-definition/generate-action-types.js +8 -0
  125. package/dist/application-spec/generate-application/code/templates/global-definition/generate-assistant-form-element-types.d.ts +12 -0
  126. package/dist/application-spec/generate-application/code/templates/global-definition/generate-assistant-form-element-types.js +7 -0
  127. package/dist/application-spec/generate-application/code/templates/global-definition/generate-phx-types.d.ts +43 -0
  128. package/dist/application-spec/generate-application/code/templates/global-definition/generate-phx-types.js +33 -0
  129. package/dist/application-spec/generate-application/code/templates/global-definition/index.d.ts +3 -0
  130. package/dist/application-spec/generate-application/code/templates/global-definition/index.js +1 -1
  131. package/dist/application-spec/generate-application/code/templates/globals.js +24 -42
  132. package/dist/application-spec/generate-application/code/templates/index.d.ts +5 -15
  133. package/dist/application-spec/generate-application/code/templates/index.js +1 -1
  134. package/dist/application-spec/generate-application/code/templates/lingui-rc.d.ts +5 -0
  135. package/dist/application-spec/generate-application/code/templates/lingui-rc.js +4 -4
  136. package/dist/application-spec/generate-application/code/templates/prettier-config.d.ts +5 -0
  137. package/dist/application-spec/generate-application/code/templates/prettier-config.js +4 -5
  138. package/dist/application-spec/generate-application/code/templates/root-tsconfig.d.ts +6 -0
  139. package/dist/application-spec/generate-application/code/templates/root-tsconfig.js +2 -0
  140. package/dist/application-spec/generate-application/code/templates/skills/phoenix-cli-skill.js +1 -1
  141. package/dist/application-spec/generate-application/code/templates/skills/phoenix-create-configurator-skill.js +95 -41
  142. package/dist/application-spec/generate-application/code/templates/skills/phoenix-feedback-skill.js +40 -17
  143. package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.js +13 -5
  144. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill-bundle.d.ts +10 -0
  145. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill-bundle.js +7 -0
  146. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill.js +1 -1
  147. package/dist/application-spec/generate-application/code/templates/skills/phoenix-variants-skill.d.ts +1 -0
  148. package/dist/application-spec/generate-application/code/templates/skills/phoenix-variants-skill.js +6 -0
  149. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +69 -16
  150. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +19 -7
  151. package/dist/application-spec/generate-application/code/templates/spec-code/collect-spec-code.d.ts +58 -0
  152. package/dist/application-spec/generate-application/code/templates/spec-code/collect-spec-code.js +1 -0
  153. package/dist/application-spec/generate-application/code/templates/spec-code/index.d.ts +2 -0
  154. package/dist/application-spec/generate-application/code/templates/spec-code/index.js +1 -0
  155. package/dist/application-spec/generate-application/code/templates/spec-code/spec-code.d.ts +18 -0
  156. package/dist/application-spec/generate-application/code/templates/spec-code/spec-code.js +41 -0
  157. package/dist/application-spec/generate-application/code/templates/spec-messages/index.d.ts +1 -0
  158. package/dist/application-spec/generate-application/code/templates/spec-messages/index.js +1 -0
  159. package/dist/application-spec/generate-application/code/templates/spec-messages/spec-messages.d.ts +20 -0
  160. package/dist/application-spec/generate-application/code/templates/spec-messages/spec-messages.js +6 -0
  161. package/dist/application-spec/generate-application/code/templates/story/phx-module.d.ts +8 -2
  162. package/dist/application-spec/generate-application/code/templates/story/phx-module.js +15 -3
  163. package/dist/application-spec/generate-application/code/templates/story/wrapper.d.ts +3 -0
  164. package/dist/application-spec/generate-application/code/templates/story/wrapper.js +4 -5
  165. package/dist/application-spec/generate-application/code/templates/tsconfig.d.ts +5 -0
  166. package/dist/application-spec/generate-application/code/templates/tsconfig.js +1 -1
  167. package/dist/application-spec/generate-application/code/templates/webhook-builders.js +9 -4
  168. package/dist/application-spec/generate-application/code/templates/webhook-index.d.ts +6 -1
  169. package/dist/application-spec/generate-application/code/templates/webhook-index.js +10 -1
  170. package/dist/application-spec/generate-application/code/templates/webhooks-config.js +2 -3
  171. package/dist/application-spec/generate-application/implementations/phx-application-types.d.ts +25 -0
  172. package/dist/application-spec/generate-application/implementations/phx-application-types.js +1 -0
  173. package/dist/application-spec/generate-application/implementations/phx-domain.d.ts +36 -0
  174. package/dist/application-spec/generate-application/implementations/phx-domain.js +1 -0
  175. package/dist/application-spec/generate-application/implementations/phx-model.d.ts +24 -0
  176. package/dist/application-spec/generate-application/implementations/phx-model.js +1 -0
  177. package/dist/application-spec/generate-application/implementations/phx.d.ts +22 -0
  178. package/dist/application-spec/generate-application/implementations/phx.js +1 -0
  179. package/dist/application-spec/generate-application/index.d.ts +4 -0
  180. package/dist/application-spec/generate-application/index.js +1 -1
  181. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-model-runtime.d.ts +6 -5
  182. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-model-runtime.js +1 -1
  183. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.d.ts +12 -4
  184. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.js +1 -1
  185. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-spec-runtime.d.ts +16 -0
  186. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-spec-runtime.js +1 -0
  187. package/dist/application-spec/generate-application/runtime/admin-runtime/states-runtime.d.ts +2 -2
  188. package/dist/application-spec/generate-application/runtime/application-runtime.d.ts +35 -10
  189. package/dist/application-spec/generate-application/runtime/application-runtime.js +1 -1
  190. package/dist/application-spec/generate-application/runtime/application-spec-slice.d.ts +71 -0
  191. package/dist/application-spec/generate-application/runtime/application-spec-slice.js +1 -0
  192. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-model-runtime.d.ts +7 -6
  193. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-model-runtime.js +1 -1
  194. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.d.ts +14 -7
  195. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.js +1 -1
  196. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-spec-runtime.d.ts +16 -0
  197. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-spec-runtime.js +1 -0
  198. package/dist/application-spec/generate-application/runtime/configurator-runtime/states-runtime.d.ts +2 -2
  199. package/dist/application-spec/generate-application/runtime/create-application.d.ts +57 -0
  200. package/dist/application-spec/generate-application/runtime/create-application.js +1 -0
  201. package/dist/application-spec/generate-application/runtime/factory-data/factory-data-runtime.d.ts +42 -0
  202. package/dist/application-spec/generate-application/runtime/factory-data/factory-data-runtime.js +1 -0
  203. package/dist/application-spec/generate-application/runtime/factory-data/index.d.ts +3 -0
  204. package/dist/application-spec/generate-application/runtime/factory-data/index.js +1 -0
  205. package/dist/application-spec/generate-application/runtime/factory-data/recipe-defaults.d.ts +13 -0
  206. package/dist/application-spec/generate-application/runtime/factory-data/recipe-defaults.js +1 -0
  207. package/dist/application-spec/generate-application/runtime/factory-data/static-violations.d.ts +15 -0
  208. package/dist/application-spec/generate-application/runtime/factory-data/static-violations.js +1 -0
  209. package/dist/application-spec/generate-application/runtime/generate-runtime-instance.d.ts +1 -1
  210. package/dist/application-spec/generate-application/runtime/generate-runtime-instance.js +1 -1
  211. package/dist/application-spec/generate-application/runtime/index.d.ts +8 -0
  212. package/dist/application-spec/generate-application/runtime/index.js +1 -0
  213. package/dist/application-spec/generate-application/runtime/migrations/index.d.ts +1 -0
  214. package/dist/application-spec/generate-application/runtime/migrations/index.js +1 -0
  215. package/dist/application-spec/generate-application/runtime/migrations/migration-runtime.d.ts +53 -0
  216. package/dist/application-spec/generate-application/runtime/migrations/migration-runtime.js +1 -0
  217. package/dist/application-spec/generate-application/runtime/sections/actions-runtime.d.ts +13 -0
  218. package/dist/application-spec/generate-application/runtime/sections/actions-runtime.js +1 -0
  219. package/dist/application-spec/generate-application/runtime/sections/assistant-runtime.d.ts +5 -4
  220. package/dist/application-spec/generate-application/runtime/sections/assistant-runtime.js +1 -1
  221. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.d.ts +3 -2
  222. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.js +1 -1
  223. package/dist/application-spec/generate-application/runtime/sections/build-user-bound-optic.d.ts +3 -2
  224. package/dist/application-spec/generate-application/runtime/sections/build-user-bound-optic.js +1 -1
  225. package/dist/application-spec/generate-application/runtime/sections/component-optic.d.ts +6 -3
  226. package/dist/application-spec/generate-application/runtime/sections/component-optic.js +1 -1
  227. package/dist/application-spec/generate-application/runtime/sections/data-runtime.d.ts +4 -4
  228. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.d.ts +14 -6
  229. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.js +1 -1
  230. package/dist/application-spec/generate-application/runtime/sections/generate-memo-eval-plan-runtime.d.ts +10 -7
  231. package/dist/application-spec/generate-application/runtime/sections/generate-memo-eval-plan-runtime.js +1 -1
  232. package/dist/application-spec/generate-application/runtime/sections/index.d.ts +1 -0
  233. package/dist/application-spec/generate-application/runtime/sections/index.js +1 -1
  234. package/dist/application-spec/generate-application/runtime/sections/preset-runtime.d.ts +2 -3
  235. package/dist/application-spec/generate-application/runtime/sections/reflection-constants-runtime.d.ts +4 -2
  236. package/dist/application-spec/generate-application/runtime/sections/reflection-constants-runtime.js +1 -1
  237. package/dist/application-spec/generate-application/runtime/sections/theme-runtime.d.ts +2 -2
  238. package/dist/application-spec/generate-application/runtime/sections/transformers-runtime.d.ts +4 -6
  239. package/dist/application-spec/generate-application/runtime/spec-code/index.d.ts +2 -0
  240. package/dist/application-spec/generate-application/runtime/spec-code/index.js +1 -0
  241. package/dist/application-spec/generate-application/runtime/spec-code/resolve-spec-code.d.ts +18 -0
  242. package/dist/application-spec/generate-application/runtime/spec-code/resolve-spec-code.js +1 -0
  243. package/dist/application-spec/generate-application/runtime/spec-code/spec-code-module.d.ts +17 -0
  244. package/dist/application-spec/generate-application/runtime/spec-runtime.d.ts +21 -0
  245. package/dist/application-spec/generate-application/runtime/spec-runtime.js +1 -0
  246. package/dist/application-spec/generate-application/runtime-spec/decode-runtime-spec.d.ts +9 -0
  247. package/dist/application-spec/generate-application/runtime-spec/decode-runtime-spec.js +1 -0
  248. package/dist/application-spec/generate-application/runtime-spec/encode-runtime-spec.d.ts +8 -0
  249. package/dist/application-spec/generate-application/runtime-spec/encode-runtime-spec.js +1 -0
  250. package/dist/application-spec/generate-application/runtime-spec/encoded-runtime-spec.d.ts +28 -0
  251. package/dist/application-spec/generate-application/runtime-spec/encoded-runtime-spec.js +1 -0
  252. package/dist/application-spec/generate-application/runtime-spec/index.d.ts +5 -0
  253. package/dist/application-spec/generate-application/runtime-spec/index.js +1 -0
  254. package/dist/application-spec/generate-application/runtime-spec/runtime-spec.d.ts +168 -0
  255. package/dist/application-spec/generate-application/runtime-spec/runtime-spec.js +1 -0
  256. package/dist/application-spec/generate-application/runtime-spec/spec-code-id.d.ts +40 -0
  257. package/dist/application-spec/generate-application/runtime-spec/spec-code-id.js +1 -0
  258. package/dist/application-spec/index.d.ts +1 -0
  259. package/dist/application-spec/index.js +1 -1
  260. package/dist/application-spec/parse-application-files/categorize/categorize-files.d.ts +37 -1
  261. package/dist/application-spec/parse-application-files/categorize/categorize-files.js +1 -1
  262. package/dist/application-spec/parse-application-files/categorize/earlier-generated-editor-configs.d.ts +16 -0
  263. package/dist/application-spec/parse-application-files/categorize/earlier-generated-editor-configs.js +9 -0
  264. package/dist/application-spec/parse-application-files/categorize/earlier-generated-tsconfig.d.ts +9 -0
  265. package/dist/application-spec/parse-application-files/categorize/earlier-generated-tsconfig.js +1 -0
  266. package/dist/application-spec/parse-application-files/categorize/module-analysis.d.ts +1 -1
  267. package/dist/application-spec/parse-application-files/categorize/module-analysis.js +1 -1
  268. package/dist/application-spec/parse-application-files/merge/index.d.ts +1 -0
  269. package/dist/application-spec/parse-application-files/merge/index.js +1 -1
  270. package/dist/application-spec/parse-application-files/merge/merged-actions.d.ts +11 -0
  271. package/dist/application-spec/parse-application-files/merge/merged-actions.js +1 -0
  272. package/dist/application-spec/parse-application-files/merge/merged-assistant.d.ts +13 -4
  273. package/dist/application-spec/parse-application-files/merge/merged-assistant.js +1 -1
  274. package/dist/application-spec/parse-application-files/merge/merged-infra.d.ts +4 -11
  275. package/dist/application-spec/parse-application-files/merge/merged-spec.d.ts +2 -0
  276. package/dist/application-spec/parse-application-files/merge/merged-spec.js +1 -1
  277. package/dist/application-spec/parse-application-files/merge/merged-transformers.d.ts +2 -4
  278. package/dist/application-spec/parse-application-files/parse-application-files.js +1 -1
  279. package/dist/application-spec/parse-application-files/raw-spec/index.d.ts +1 -0
  280. package/dist/application-spec/parse-application-files/raw-spec/index.js +1 -1
  281. package/dist/application-spec/parse-application-files/raw-spec/parse-yaml-spec-file.js +1 -1
  282. package/dist/application-spec/parse-application-files/raw-spec/raw-acl.d.ts +2 -2
  283. package/dist/application-spec/parse-application-files/raw-spec/raw-acl.js +1 -1
  284. package/dist/application-spec/parse-application-files/raw-spec/raw-actions.d.ts +18 -0
  285. package/dist/application-spec/parse-application-files/raw-spec/raw-actions.js +1 -0
  286. package/dist/application-spec/parse-application-files/raw-spec/raw-admin-pages.d.ts +3 -24
  287. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.d.ts +82 -22
  288. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.js +1 -1
  289. package/dist/application-spec/parse-application-files/raw-spec/raw-expressions.d.ts +1 -1
  290. package/dist/application-spec/parse-application-files/raw-spec/raw-expressions.js +1 -1
  291. package/dist/application-spec/parse-application-files/raw-spec/raw-resources.d.ts +19 -64
  292. package/dist/application-spec/parse-application-files/raw-spec/raw-spec-file.d.ts +2 -0
  293. package/dist/application-spec/parse-application-files/raw-spec/raw-spec-file.js +1 -1
  294. package/dist/application-spec/parse-application-files/resolve/resolve-import-modules.js +1 -1
  295. package/dist/application-spec/parse-application-files/spec/application/admin-spec/admin-pages.d.ts +3 -20
  296. package/dist/application-spec/parse-application-files/spec/application/admin-spec/admin-spec.js +1 -1
  297. package/dist/application-spec/parse-application-files/spec/application/admin-spec/states.d.ts +3 -5
  298. package/dist/application-spec/parse-application-files/spec/application/application-spec.js +1 -1
  299. package/dist/application-spec/parse-application-files/spec/application/configurator-spec/configurator-spec.d.ts +4 -2
  300. package/dist/application-spec/parse-application-files/spec/application/configurator-spec/configurator-spec.js +1 -1
  301. package/dist/application-spec/parse-application-files/spec/application/configurator-spec/states.d.ts +3 -8
  302. package/dist/application-spec/parse-application-files/spec/common/index.d.ts +2 -0
  303. package/dist/application-spec/parse-application-files/spec/common/index.js +1 -1
  304. package/dist/application-spec/parse-application-files/spec/common/schema-ref-resolver.d.ts +23 -0
  305. package/dist/application-spec/parse-application-files/spec/common/schema-ref-resolver.js +1 -0
  306. package/dist/application-spec/parse-application-files/spec/common/value-type/format-value-type.d.ts +3 -0
  307. package/dist/application-spec/parse-application-files/spec/common/value-type/format-value-type.js +1 -0
  308. package/dist/application-spec/parse-application-files/spec/common/value-type/index.d.ts +5 -0
  309. package/dist/application-spec/parse-application-files/spec/common/value-type/index.js +1 -0
  310. package/dist/application-spec/parse-application-files/spec/common/value-type/intersect-value-types.d.ts +6 -0
  311. package/dist/application-spec/parse-application-files/spec/common/value-type/intersect-value-types.js +1 -0
  312. package/dist/application-spec/parse-application-files/spec/common/value-type/is-assignable-value-type.d.ts +8 -0
  313. package/dist/application-spec/parse-application-files/spec/common/value-type/is-assignable-value-type.js +1 -0
  314. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type-at.d.ts +10 -0
  315. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type-at.js +1 -0
  316. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type.d.ts +98 -0
  317. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type.js +1 -0
  318. package/dist/application-spec/parse-application-files/spec/components/bindings/component-path.d.ts +13 -0
  319. package/dist/application-spec/parse-application-files/spec/components/bindings/component-path.js +1 -0
  320. package/dist/application-spec/parse-application-files/spec/components/bindings/index.d.ts +2 -0
  321. package/dist/application-spec/parse-application-files/spec/components/bindings/index.js +1 -1
  322. package/dist/application-spec/parse-application-files/spec/components/bindings/read-binding-type.d.ts +24 -0
  323. package/dist/application-spec/parse-application-files/spec/components/bindings/read-binding-type.js +1 -0
  324. package/dist/application-spec/parse-application-files/spec/components/bindings/read-binding.d.ts +3 -13
  325. package/dist/application-spec/parse-application-files/spec/components/bindings/write-binding.d.ts +4 -32
  326. package/dist/application-spec/parse-application-files/spec/components/component-filter.d.ts +3 -62
  327. package/dist/application-spec/parse-application-files/spec/components/component-filter.js +1 -1
  328. package/dist/application-spec/parse-application-files/spec/components/component-state-type.d.ts +8 -0
  329. package/dist/application-spec/parse-application-files/spec/components/component-state-type.js +1 -0
  330. package/dist/application-spec/parse-application-files/spec/components/components.d.ts +3 -4
  331. package/dist/application-spec/parse-application-files/spec/components/filter-criterion-types.d.ts +13 -0
  332. package/dist/application-spec/parse-application-files/spec/components/filter-criterion-types.js +1 -0
  333. package/dist/application-spec/parse-application-files/spec/components/index.d.ts +1 -2
  334. package/dist/application-spec/parse-application-files/spec/components/index.js +1 -1
  335. package/dist/application-spec/parse-application-files/spec/components/sdk-component-entry.d.ts +1 -1
  336. package/dist/application-spec/parse-application-files/spec/components/static-entity-id.d.ts +14 -0
  337. package/dist/application-spec/parse-application-files/spec/components/static-entity-id.js +1 -0
  338. package/dist/application-spec/parse-application-files/spec/components/user-component-entry.d.ts +8 -3
  339. package/dist/application-spec/parse-application-files/spec/components/user-component-entry.js +1 -1
  340. package/dist/application-spec/parse-application-files/spec/components/user-components.d.ts +9 -7
  341. package/dist/application-spec/parse-application-files/spec/components/user-components.js +1 -1
  342. package/dist/application-spec/parse-application-files/spec/expressions/expression-read-types.d.ts +24 -0
  343. package/dist/application-spec/parse-application-files/spec/expressions/expression-read-types.js +1 -0
  344. package/dist/application-spec/parse-application-files/spec/expressions/expression-read.d.ts +13 -0
  345. package/dist/application-spec/parse-application-files/spec/expressions/expression-value-type.d.ts +9 -0
  346. package/dist/application-spec/parse-application-files/spec/expressions/expression-value-type.js +1 -0
  347. package/dist/application-spec/parse-application-files/spec/expressions/expressions.d.ts +12 -30
  348. package/dist/application-spec/parse-application-files/spec/expressions/expressions.js +1 -1
  349. package/dist/application-spec/parse-application-files/spec/expressions/index.d.ts +0 -2
  350. package/dist/application-spec/parse-application-files/spec/expressions/index.js +1 -1
  351. package/dist/application-spec/parse-application-files/spec/expressions/memo-eval-plan.d.ts +4 -71
  352. package/dist/application-spec/parse-application-files/spec/expressions/memo-eval-plan.js +1 -1
  353. package/dist/application-spec/parse-application-files/spec/expressions/user-expressions.d.ts +5 -3
  354. package/dist/application-spec/parse-application-files/spec/expressions/user-expressions.js +1 -1
  355. package/dist/application-spec/parse-application-files/spec/invariants/invariant.d.ts +5 -21
  356. package/dist/application-spec/parse-application-files/spec/invariants/invariants.d.ts +6 -16
  357. package/dist/application-spec/parse-application-files/spec/invariants/invariants.js +1 -1
  358. package/dist/application-spec/parse-application-files/spec/model/aliases.d.ts +3 -9
  359. package/dist/application-spec/parse-application-files/spec/model/common-types.d.ts +6 -14
  360. package/dist/application-spec/parse-application-files/spec/model/defaults.d.ts +6 -26
  361. package/dist/application-spec/parse-application-files/spec/model/defaults.js +1 -1
  362. package/dist/application-spec/parse-application-files/spec/model/entity-types.d.ts +3 -8
  363. package/dist/application-spec/parse-application-files/spec/model/index.d.ts +1 -0
  364. package/dist/application-spec/parse-application-files/spec/model/index.js +1 -1
  365. package/dist/application-spec/parse-application-files/spec/model/model-type-resolution.d.ts +10 -0
  366. package/dist/application-spec/parse-application-files/spec/model/model-type-resolution.js +1 -0
  367. package/dist/application-spec/parse-application-files/spec/model/model-version-key.d.ts +3 -3
  368. package/dist/application-spec/parse-application-files/spec/model/names/action-name.d.ts +6 -0
  369. package/dist/application-spec/parse-application-files/spec/model/names/action-name.js +1 -0
  370. package/dist/application-spec/parse-application-files/spec/model/names/alias-name.d.ts +3 -7
  371. package/dist/application-spec/parse-application-files/spec/model/names/entity-or-alias-name.d.ts +3 -8
  372. package/dist/application-spec/parse-application-files/spec/model/names/entity-type-name.d.ts +3 -8
  373. package/dist/application-spec/parse-application-files/spec/model/names/expression-name.d.ts +3 -6
  374. package/dist/application-spec/parse-application-files/spec/model/names/index.d.ts +1 -0
  375. package/dist/application-spec/parse-application-files/spec/model/names/index.js +1 -1
  376. package/dist/application-spec/parse-application-files/spec/model/names/instance-name.d.ts +3 -7
  377. package/dist/application-spec/parse-application-files/spec/model/names/invariant-name.d.ts +3 -3
  378. package/dist/application-spec/parse-application-files/spec/model/names/shape-property-name.d.ts +3 -11
  379. package/dist/application-spec/parse-application-files/spec/model/names/violation-type-name.d.ts +3 -3
  380. package/dist/application-spec/parse-application-files/spec/model/presets.d.ts +6 -29
  381. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.d.ts +25 -0
  382. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.js +1 -0
  383. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.d.ts +46 -0
  384. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.js +1 -0
  385. package/dist/application-spec/parse-application-files/spec/relations/relations.d.ts +4 -3
  386. package/dist/application-spec/parse-application-files/spec/relations/relations.js +1 -1
  387. package/dist/application-spec/parse-application-files/spec/sections/actions.d.ts +18 -0
  388. package/dist/application-spec/parse-application-files/spec/sections/actions.js +1 -0
  389. package/dist/application-spec/parse-application-files/spec/sections/app-metadata.d.ts +3 -18
  390. package/dist/application-spec/parse-application-files/spec/sections/application-version.d.ts +3 -7
  391. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-field-type.d.ts +5 -21
  392. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-field-type.js +1 -1
  393. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-form-elements.d.ts +9 -0
  394. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-form-elements.js +1 -0
  395. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.d.ts +18 -40
  396. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  397. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-server-settings.d.ts +2 -2
  398. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant.d.ts +5 -19
  399. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant.js +1 -1
  400. package/dist/application-spec/parse-application-files/spec/sections/data-spec/chunks.d.ts +6 -23
  401. package/dist/application-spec/parse-application-files/spec/sections/data-spec/custom-data-spec.d.ts +1 -16
  402. package/dist/application-spec/parse-application-files/spec/sections/data-spec/data-entry-key.d.ts +3 -9
  403. package/dist/application-spec/parse-application-files/spec/sections/data-spec/data-spec.d.ts +1 -10
  404. package/dist/application-spec/parse-application-files/spec/sections/data-spec/swatch-data-spec.d.ts +1 -14
  405. package/dist/application-spec/parse-application-files/spec/sections/index.d.ts +1 -0
  406. package/dist/application-spec/parse-application-files/spec/sections/index.js +1 -1
  407. package/dist/application-spec/parse-application-files/spec/sections/infra.d.ts +2 -0
  408. package/dist/application-spec/parse-application-files/spec/sections/infra.js +1 -1
  409. package/dist/application-spec/parse-application-files/spec/sections/state-value.d.ts +3 -7
  410. package/dist/application-spec/parse-application-files/spec/sections/theme.d.ts +3 -10
  411. package/dist/application-spec/parse-application-files/spec/sections/transformers.d.ts +4 -11
  412. package/dist/application-spec/parse-application-files/spec/sections/ui.d.ts +3 -12
  413. package/dist/client/authorized-client.d.ts +5 -1
  414. package/dist/client/authorized-client.js +1 -1
  415. package/dist/client/contract.d.ts +63 -0
  416. package/dist/client/contract.js +1 -1
  417. package/dist/client/index.d.ts +2 -2
  418. package/dist/client/index.js +1 -1
  419. package/dist/client/local-authorized-client.d.ts +5 -1
  420. package/dist/client/local-authorized-client.js +1 -1
  421. package/dist/client/memory-authorized-client.d.ts +6 -1
  422. package/dist/client/memory-authorized-client.js +1 -1
  423. package/dist/client/phoenix-api.d.ts +1244 -282
  424. package/dist/configurator/ConfiguratorApp.js +1 -1
  425. package/dist/configurator/app-loader-content/DefaultAppLoaderContent.d.ts +2 -0
  426. package/dist/configurator/app-loader-content/DefaultAppLoaderContent.js +5 -0
  427. package/dist/configurator/app-loader-content/index.d.ts +1 -0
  428. package/dist/configurator/app-loader-content/index.js +1 -0
  429. package/dist/configurator/application-runtime/extensions/configurator-extension-systems.d.ts +2 -1
  430. package/dist/configurator/application-runtime/extensions/configurator-extension-systems.js +1 -1
  431. package/dist/configurator/application-runtime/extensions/create-configurator-extensions.js +1 -1
  432. package/dist/configurator/application-runtime/extensions/selectors.d.ts +5 -2
  433. package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
  434. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +363 -0
  435. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -0
  436. package/dist/configurator/application-runtime/extensions/systems/assistant-system/browser-details.d.ts +17 -0
  437. package/dist/configurator/application-runtime/extensions/systems/assistant-system/browser-details.js +1 -0
  438. package/dist/configurator/application-runtime/extensions/systems/assistant-system/change-recorder.d.ts +85 -0
  439. package/dist/configurator/application-runtime/extensions/systems/assistant-system/change-recorder.js +1 -0
  440. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.d.ts +209 -0
  441. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.js +1 -0
  442. package/dist/configurator/application-runtime/extensions/systems/camera-control-system/camera-control-system.d.ts +1 -1
  443. package/dist/configurator/application-runtime/extensions/systems/canvas-system.d.ts +8 -0
  444. package/dist/configurator/application-runtime/extensions/systems/canvas-system.js +1 -1
  445. package/dist/configurator/application-runtime/extensions/systems/drag-and-drop-system/drag-and-drop-system.d.ts +3 -3
  446. package/dist/configurator/application-runtime/extensions/systems/export-system/export-busy-error.d.ts +8 -0
  447. package/dist/configurator/application-runtime/extensions/systems/export-system/export-busy-error.js +1 -0
  448. package/dist/configurator/application-runtime/extensions/systems/export-system/export-system.d.ts +23 -1
  449. package/dist/configurator/application-runtime/extensions/systems/export-system/export-system.js +1 -1
  450. package/dist/configurator/application-runtime/extensions/systems/graphql-system/close-unclosed-braces.d.ts +12 -0
  451. package/dist/configurator/application-runtime/extensions/systems/graphql-system/close-unclosed-braces.js +1 -0
  452. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.d.ts +82 -51
  453. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.js +1 -1
  454. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +101 -8
  455. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  456. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.d.ts +11 -0
  457. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.js +1 -0
  458. package/dist/configurator/application-runtime/extensions/systems/graphql-system/side-effects.d.ts +9 -0
  459. package/dist/configurator/application-runtime/extensions/systems/graphql-system/side-effects.js +1 -0
  460. package/dist/configurator/application-runtime/extensions/systems/graphql-system/violations.d.ts +40 -0
  461. package/dist/configurator/application-runtime/extensions/systems/graphql-system/violations.js +1 -0
  462. package/dist/configurator/application-runtime/extensions/systems/image-rendering-system/image-rendering-system.d.ts +14 -5
  463. package/dist/configurator/application-runtime/extensions/systems/image-rendering-system/image-rendering-system.js +1 -1
  464. package/dist/configurator/application-runtime/extensions/systems/index.d.ts +2 -1
  465. package/dist/configurator/application-runtime/extensions/systems/index.js +1 -1
  466. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.d.ts +4 -2
  467. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.js +1 -1
  468. package/dist/configurator/common/configurator-interface.d.ts +145 -5
  469. package/dist/configurator/common/configurator-interface.js +1 -1
  470. package/dist/configurator/common/index.d.ts +3 -1
  471. package/dist/configurator/common/index.js +1 -1
  472. package/dist/configurator/common/use-reset-camera.d.ts +6 -0
  473. package/dist/configurator/common/use-reset-camera.js +1 -0
  474. package/dist/configurator/configuration-not-found-page/BuiltInConfigurationNotFoundPage.d.ts +5 -0
  475. package/dist/configurator/configuration-not-found-page/BuiltInConfigurationNotFoundPage.js +1 -0
  476. package/dist/configurator/configuration-not-found-page/ConfigurationNotFoundPageElement.d.ts +6 -0
  477. package/dist/configurator/configuration-not-found-page/ConfigurationNotFoundPageElement.js +1 -0
  478. package/dist/configurator/configuration-not-found-page/index.d.ts +2 -0
  479. package/dist/configurator/configuration-not-found-page/index.js +1 -0
  480. package/dist/configurator/configurator-context/PreviewContextProvider.js +1 -1
  481. package/dist/configurator/configurator-context/ViewportStateSync.d.ts +2 -2
  482. package/dist/configurator/configurator-context/ViewportStateSync.js +1 -1
  483. package/dist/configurator/configurator-context/configurator-hooks/index.d.ts +0 -1
  484. package/dist/configurator/configurator-context/configurator-hooks/index.js +1 -1
  485. package/dist/configurator/configurator-context/configurator-hooks/layout-hooks.d.ts +11 -1
  486. package/dist/configurator/configurator-context/configurator-hooks/layout-hooks.js +1 -1
  487. package/dist/configurator/configurator-context/index.d.ts +0 -5
  488. package/dist/configurator/configurator-context/index.js +1 -1
  489. package/dist/configurator/configurator-error-page/BuiltInConfiguratorErrorPage.d.ts +6 -0
  490. package/dist/configurator/configurator-error-page/BuiltInConfiguratorErrorPage.js +1 -0
  491. package/dist/configurator/configurator-error-page/ConfiguratorErrorPageElement.d.ts +7 -0
  492. package/dist/configurator/configurator-error-page/ConfiguratorErrorPageElement.js +1 -0
  493. package/dist/configurator/configurator-error-page/index.d.ts +2 -0
  494. package/dist/configurator/configurator-error-page/index.js +1 -0
  495. package/dist/configurator/index.d.ts +10 -1
  496. package/dist/configurator/index.js +1 -1
  497. package/dist/configurator/pages/ConfiguratorErrorPage.d.ts +0 -1
  498. package/dist/configurator/pages/ConfiguratorErrorPage.js +1 -1
  499. package/dist/configurator/pages/ConfiguratorNotFoundPage.js +1 -1
  500. package/dist/configurator/pages/DefaultConfiguratorLayout.d.ts +7 -0
  501. package/dist/configurator/pages/DefaultConfiguratorLayout.js +1 -0
  502. package/dist/configurator/pages/DefaultNotAuthenticatedPage.d.ts +8 -0
  503. package/dist/configurator/pages/DefaultNotAuthenticatedPage.js +1 -0
  504. package/dist/configurator/pages/DefaultPresetUi.d.ts +7 -0
  505. package/dist/configurator/pages/DefaultPresetUi.js +1 -0
  506. package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
  507. package/dist/configurator/pages/NewConfiguratorPage.js +1 -1
  508. package/dist/configurator/pages/PresetCreationErrorPage.d.ts +1 -1
  509. package/dist/configurator/pages/PresetCreationErrorPage.js +1 -1
  510. package/dist/configurator/pages/RootPage.js +1 -1
  511. package/dist/configurator/pages/configurator-layout-name.d.ts +2 -0
  512. package/dist/configurator/pages/configurator-layout-name.js +1 -0
  513. package/dist/configurator/pages/default-configurator-elements.d.ts +17 -0
  514. package/dist/configurator/pages/default-configurator-elements.js +1 -0
  515. package/dist/configurator/pages/default-elements/built-in-entity-element.d.ts +10 -0
  516. package/dist/configurator/pages/default-elements/built-in-entity-element.js +1 -0
  517. package/dist/configurator/pages/default-elements/built-in-layout-element.d.ts +10 -0
  518. package/dist/configurator/pages/default-elements/built-in-layout-element.js +1 -0
  519. package/dist/configurator/pages/default-elements/domain-control-elements.d.ts +6 -0
  520. package/dist/configurator/pages/default-elements/domain-control-elements.js +1 -0
  521. package/dist/configurator/pages/default-elements/index.d.ts +5 -0
  522. package/dist/configurator/pages/default-elements/index.js +1 -0
  523. package/dist/configurator/pages/default-elements/recipe-panel-elements.d.ts +3 -0
  524. package/dist/configurator/pages/default-elements/recipe-panel-elements.js +1 -0
  525. package/dist/configurator/pages/default-elements/scene-controls/BuiltInAddEntityFab.d.ts +3 -0
  526. package/dist/configurator/pages/default-elements/scene-controls/BuiltInAddEntityFab.js +1 -0
  527. package/dist/configurator/pages/default-elements/scene-controls/BuiltInDeleteEntityFab.d.ts +3 -0
  528. package/dist/configurator/pages/default-elements/scene-controls/BuiltInDeleteEntityFab.js +1 -0
  529. package/dist/configurator/pages/default-elements/scene-controls/BuiltInNavigationHotspot.d.ts +3 -0
  530. package/dist/configurator/pages/default-elements/scene-controls/BuiltInNavigationHotspot.js +1 -0
  531. package/dist/configurator/pages/default-elements/scene-controls/BuiltInSelectionHotspot.d.ts +3 -0
  532. package/dist/configurator/pages/default-elements/scene-controls/BuiltInSelectionHotspot.js +1 -0
  533. package/dist/configurator/pages/default-elements/scene-controls/BuiltInToolMenuFab.d.ts +3 -0
  534. package/dist/configurator/pages/default-elements/scene-controls/BuiltInToolMenuFab.js +1 -0
  535. package/dist/configurator/pages/default-elements/scene-controls/index.d.ts +6 -0
  536. package/dist/configurator/pages/default-elements/scene-controls/index.js +1 -0
  537. package/dist/configurator/pages/default-elements/scene-controls/scene-control-elements.d.ts +6 -0
  538. package/dist/configurator/pages/default-elements/scene-controls/scene-control-elements.js +1 -0
  539. package/dist/configurator/pages/default-elements/sidebar-footer-elements.d.ts +7 -0
  540. package/dist/configurator/pages/default-elements/sidebar-footer-elements.js +1 -0
  541. package/dist/configurator/pages/default-elements/toolbar-elements.d.ts +7 -0
  542. package/dist/configurator/pages/default-elements/toolbar-elements.js +1 -0
  543. package/dist/configurator/pages/error-boundaries/BuiltInGeneralErrorFallback.d.ts +5 -0
  544. package/dist/configurator/pages/error-boundaries/BuiltInGeneralErrorFallback.js +1 -0
  545. package/dist/configurator/pages/error-boundaries/DevContextFallback.js +1 -1
  546. package/dist/configurator/pages/error-boundaries/DevLoadingFallback.js +1 -1
  547. package/dist/configurator/pages/error-boundaries/GeneralErrorBoundary.js +1 -1
  548. package/dist/configurator/pages/error-boundaries/LoadingErrorBoundary.js +1 -1
  549. package/dist/configurator/pages/error-boundaries/index.d.ts +1 -0
  550. package/dist/configurator/pages/error-boundaries/index.js +1 -1
  551. package/dist/configurator/pages/index.d.ts +1 -0
  552. package/dist/configurator/pages/index.js +1 -1
  553. package/dist/configurator/pages/provider-slots/ConfiguratorResponsiveProvider.d.ts +12 -0
  554. package/dist/configurator/pages/provider-slots/ConfiguratorResponsiveProvider.js +1 -0
  555. package/dist/configurator/pages/provider-slots/ContainerSlotProvider.d.ts +3 -0
  556. package/dist/configurator/pages/provider-slots/ContainerSlotProvider.js +1 -0
  557. package/dist/configurator/pages/provider-slots/LoaderSlotProvider.d.ts +3 -0
  558. package/dist/configurator/pages/provider-slots/LoaderSlotProvider.js +1 -0
  559. package/dist/configurator/pages/provider-slots/MessageHostSlotProvider.d.ts +3 -0
  560. package/dist/configurator/pages/provider-slots/MessageHostSlotProvider.js +1 -0
  561. package/dist/configurator/pages/provider-slots/SceneResourcesSlotProvider.d.ts +3 -0
  562. package/dist/configurator/pages/provider-slots/SceneResourcesSlotProvider.js +1 -0
  563. package/dist/configurator/pages/provider-slots/ThemeSlotProvider.d.ts +3 -0
  564. package/dist/configurator/pages/provider-slots/ThemeSlotProvider.js +1 -0
  565. package/dist/configurator/pages/provider-slots/configurator-provider-slot-elements.d.ts +3 -0
  566. package/dist/configurator/pages/provider-slots/configurator-provider-slot-elements.js +1 -0
  567. package/dist/configurator/pages/provider-slots/index.d.ts +6 -0
  568. package/dist/configurator/pages/provider-slots/index.js +1 -0
  569. package/dist/configurator/pages/ui-elements/BuiltInInvalidDeploymentReload.d.ts +2 -0
  570. package/dist/configurator/pages/ui-elements/BuiltInInvalidDeploymentReload.js +1 -0
  571. package/dist/configurator/pages/ui-elements/configurator-ui-elements.d.ts +3 -0
  572. package/dist/configurator/pages/ui-elements/configurator-ui-elements.js +1 -0
  573. package/dist/configurator/pages/ui-elements/index.d.ts +2 -0
  574. package/dist/configurator/pages/ui-elements/index.js +1 -0
  575. package/dist/configurator/preset-screen-elements/PresetDeviceNotSupportedElement.d.ts +4 -0
  576. package/dist/configurator/preset-screen-elements/PresetDeviceNotSupportedElement.js +1 -0
  577. package/dist/configurator/preset-screen-elements/PresetPageActionElement.d.ts +4 -0
  578. package/dist/configurator/preset-screen-elements/PresetPageActionElement.js +1 -0
  579. package/dist/configurator/preset-screen-elements/index.d.ts +2 -0
  580. package/dist/configurator/preset-screen-elements/index.js +1 -0
  581. package/dist/configurator/scene/index.d.ts +1 -0
  582. package/dist/configurator/scene/index.js +1 -1
  583. package/dist/configurator/scene/scene-analytics/scene-analytics.d.ts +2 -2
  584. package/dist/configurator/scene/scene-controls/DeleteEntityFab.js +1 -1
  585. package/dist/configurator/scene/scene-controls/SelectionHotspot.js +1 -1
  586. package/dist/configurator/scene/scene-controls/ToolFab.d.ts +4 -0
  587. package/dist/configurator/scene/scene-controls/ToolFab.js +1 -1
  588. package/dist/configurator/scene/scene-controls/hotspot-drag-handle/HotspotDragHandle.d.ts +1 -1
  589. package/dist/configurator/scene/scene-controls/hotspot-drag-handle/HotspotDragSceneHandle.d.ts +1 -1
  590. package/dist/configurator/scene/scene-controls/use-scene-control-tooltip.d.ts +2 -1
  591. package/dist/configurator/scene/scene-entity/dimension-indicators/DimensionIndicator.d.ts +1 -1
  592. package/dist/configurator/scene/scene-entity/dimension-indicators/DimensionIndicatorInternal.d.ts +1 -1
  593. package/dist/configurator/scene/scene-entity/drag-and-drop/shared.d.ts +2 -2
  594. package/dist/configurator/scene/scene-entity/drag-and-drop/use-drag-object.d.ts +1 -1
  595. package/dist/configurator/scene/scene-entity/materials/RemoteReplacedMaterial.js +1 -1
  596. package/dist/configurator/scene/scene-entity/objects/SceneEntityObjectTextDecal.d.ts +1 -1
  597. package/dist/configurator/scene/scene-entity/scene-controls/SceneEntityHtmlHotspots.js +1 -1
  598. package/dist/configurator/toolbar-actions/index.d.ts +3 -0
  599. package/dist/configurator/toolbar-actions/index.js +1 -0
  600. package/dist/configurator/toolbar-actions/use-assistant-panel.d.ts +18 -0
  601. package/dist/configurator/toolbar-actions/use-assistant-panel.js +1 -0
  602. package/dist/configurator/toolbar-actions/use-measurements.d.ts +35 -0
  603. package/dist/configurator/toolbar-actions/use-measurements.js +1 -0
  604. package/dist/configurator/toolbar-actions/use-toolbar-actions.d.ts +100 -0
  605. package/dist/configurator/toolbar-actions/use-toolbar-actions.js +1 -0
  606. package/dist/configurator/toolbar-actions/use-toolbar-help.d.ts +7 -0
  607. package/dist/configurator/toolbar-actions/use-toolbar-help.js +1 -0
  608. package/dist/configurator/ui/assistant/AssistantChips.d.ts +18 -0
  609. package/dist/configurator/ui/assistant/AssistantChips.js +1 -0
  610. package/dist/configurator/ui/assistant/AssistantComposer.d.ts +13 -0
  611. package/dist/configurator/ui/assistant/AssistantComposer.js +2 -0
  612. package/dist/configurator/ui/assistant/AssistantMarkdown.d.ts +12 -0
  613. package/dist/configurator/ui/assistant/AssistantMarkdown.js +1 -0
  614. package/dist/configurator/ui/assistant/AssistantPanel.d.ts +11 -0
  615. package/dist/configurator/ui/assistant/AssistantPanel.js +1 -0
  616. package/dist/configurator/ui/assistant/AssistantThread.d.ts +10 -0
  617. package/dist/configurator/ui/assistant/AssistantThread.js +1 -0
  618. package/dist/configurator/ui/assistant/alert/AssistantAlert.d.ts +8 -0
  619. package/dist/configurator/ui/assistant/alert/AssistantAlert.js +1 -0
  620. package/dist/configurator/ui/assistant/alert/index.d.ts +2 -0
  621. package/dist/configurator/ui/assistant/alert/index.js +1 -0
  622. package/dist/configurator/ui/assistant/alert/remark-alerts.d.ts +10 -0
  623. package/dist/configurator/ui/assistant/alert/remark-alerts.js +1 -0
  624. package/dist/configurator/ui/assistant/assistant-failure.d.ts +18 -0
  625. package/dist/configurator/ui/assistant/assistant-failure.js +1 -0
  626. package/dist/configurator/ui/assistant/attachments/MessageImages.d.ts +11 -0
  627. package/dist/configurator/ui/assistant/attachments/MessageImages.js +1 -0
  628. package/dist/configurator/ui/assistant/attachments/index.d.ts +2 -0
  629. package/dist/configurator/ui/assistant/attachments/index.js +1 -0
  630. package/dist/configurator/ui/assistant/attachments/prepare-image.d.ts +19 -0
  631. package/dist/configurator/ui/assistant/attachments/prepare-image.js +1 -0
  632. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.d.ts +13 -0
  633. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.js +1 -0
  634. package/dist/configurator/ui/assistant/entity-link/entity-link-selection.d.ts +22 -0
  635. package/dist/configurator/ui/assistant/entity-link/entity-link-selection.js +1 -0
  636. package/dist/configurator/ui/assistant/entity-link/entity-link-state.d.ts +27 -0
  637. package/dist/configurator/ui/assistant/entity-link/entity-link-state.js +1 -0
  638. package/dist/configurator/ui/assistant/entity-link/index.d.ts +2 -0
  639. package/dist/configurator/ui/assistant/entity-link/index.js +1 -0
  640. package/dist/configurator/ui/assistant/form/AssistantForm.d.ts +19 -0
  641. package/dist/configurator/ui/assistant/form/AssistantForm.js +1 -0
  642. package/dist/configurator/ui/assistant/form/compose-answer.d.ts +11 -0
  643. package/dist/configurator/ui/assistant/form/compose-answer.js +1 -0
  644. package/dist/configurator/ui/assistant/form/describe-build-errors.d.ts +6 -0
  645. package/dist/configurator/ui/assistant/form/describe-build-errors.js +1 -0
  646. package/dist/configurator/ui/assistant/form/form-model.d.ts +37 -0
  647. package/dist/configurator/ui/assistant/form/form-state.d.ts +4 -0
  648. package/dist/configurator/ui/assistant/form/index.d.ts +4 -0
  649. package/dist/configurator/ui/assistant/form/index.js +1 -0
  650. package/dist/configurator/ui/assistant/form/parse-form-block.d.ts +10 -0
  651. package/dist/configurator/ui/assistant/form/parse-form-block.js +1 -0
  652. package/dist/configurator/ui/assistant/form/read-form-attributes.d.ts +13 -0
  653. package/dist/configurator/ui/assistant/form/read-form-attributes.js +1 -0
  654. package/dist/configurator/ui/assistant/form/registry/built-in-form-elements.d.ts +3 -0
  655. package/dist/configurator/ui/assistant/form/registry/built-in-form-elements.js +1 -0
  656. package/dist/configurator/ui/assistant/form/registry/create-assistant-form-element.d.ts +31 -0
  657. package/dist/configurator/ui/assistant/form/registry/create-assistant-form-element.js +1 -0
  658. package/dist/configurator/ui/assistant/form/registry/form-element-definition.d.ts +16 -0
  659. package/dist/configurator/ui/assistant/form/registry/form-element-definition.js +1 -0
  660. package/dist/configurator/ui/assistant/form/registry/form-registry.d.ts +31 -0
  661. package/dist/configurator/ui/assistant/form/registry/form-registry.js +1 -0
  662. package/dist/configurator/ui/assistant/form/registry/index.d.ts +6 -0
  663. package/dist/configurator/ui/assistant/form/registry/index.js +1 -0
  664. package/dist/configurator/ui/assistant/form/registry/use-form-registry.d.ts +8 -0
  665. package/dist/configurator/ui/assistant/form/registry/use-form-registry.js +1 -0
  666. package/dist/configurator/ui/assistant/form-elements/FormCard.d.ts +9 -0
  667. package/dist/configurator/ui/assistant/form-elements/FormCard.js +1 -0
  668. package/dist/configurator/ui/assistant/form-elements/FormConfirm.d.ts +9 -0
  669. package/dist/configurator/ui/assistant/form-elements/FormConfirm.js +1 -0
  670. package/dist/configurator/ui/assistant/form-elements/FormGroup.d.ts +6 -0
  671. package/dist/configurator/ui/assistant/form-elements/FormGroup.js +1 -0
  672. package/dist/configurator/ui/assistant/form-elements/FormNumber.d.ts +9 -0
  673. package/dist/configurator/ui/assistant/form-elements/FormNumber.js +1 -0
  674. package/dist/configurator/ui/assistant/form-elements/FormOptions.d.ts +6 -0
  675. package/dist/configurator/ui/assistant/form-elements/FormOptions.js +1 -0
  676. package/dist/configurator/ui/assistant/form-elements/FormReply.d.ts +6 -0
  677. package/dist/configurator/ui/assistant/form-elements/FormReply.js +1 -0
  678. package/dist/configurator/ui/assistant/form-elements/FormSwatch.d.ts +10 -0
  679. package/dist/configurator/ui/assistant/form-elements/FormSwatch.js +1 -0
  680. package/dist/configurator/ui/assistant/form-elements/FormText.d.ts +6 -0
  681. package/dist/configurator/ui/assistant/form-elements/FormText.js +1 -0
  682. package/dist/configurator/ui/assistant/form-elements/clamp-form-number.d.ts +10 -0
  683. package/dist/configurator/ui/assistant/form-elements/clamp-form-number.js +1 -0
  684. package/dist/configurator/ui/assistant/form-elements/form-element-props.d.ts +38 -0
  685. package/dist/configurator/ui/assistant/form-elements/index.d.ts +9 -0
  686. package/dist/configurator/ui/assistant/form-elements/index.js +1 -0
  687. package/dist/configurator/ui/assistant/index.d.ts +5 -0
  688. package/dist/configurator/ui/assistant/index.js +1 -0
  689. package/dist/configurator/ui/assistant/reference-link/AssistantReferenceLink.d.ts +16 -0
  690. package/dist/configurator/ui/assistant/reference-link/AssistantReferenceLink.js +1 -0
  691. package/dist/configurator/ui/assistant/reference-link/assistant-link-target.d.ts +34 -0
  692. package/dist/configurator/ui/assistant/reference-link/assistant-link-target.js +1 -0
  693. package/dist/configurator/ui/assistant/reference-link/assistant-reference-details.d.ts +25 -0
  694. package/dist/configurator/ui/assistant/reference-link/assistant-reference-details.js +1 -0
  695. package/dist/configurator/ui/assistant/reference-link/index.d.ts +3 -0
  696. package/dist/configurator/ui/assistant/reference-link/index.js +1 -0
  697. package/dist/configurator/ui/assistant/reference-link/reference-styles.d.ts +12 -0
  698. package/dist/configurator/ui/assistant/reference-link/reference-styles.js +1 -0
  699. package/dist/configurator/ui/assistant/reference-link/use-assistant-reference-details.d.ts +8 -0
  700. package/dist/configurator/ui/assistant/reference-link/use-assistant-reference-details.js +1 -0
  701. package/dist/configurator/ui/assistant/resource-image/AssistantImage.d.ts +9 -0
  702. package/dist/configurator/ui/assistant/resource-image/AssistantImage.js +1 -0
  703. package/dist/configurator/ui/assistant/resource-image/index.d.ts +3 -0
  704. package/dist/configurator/ui/assistant/resource-image/index.js +1 -0
  705. package/dist/configurator/ui/assistant/resource-image/resource-path.d.ts +2 -0
  706. package/dist/configurator/ui/assistant/resource-image/resource-path.js +1 -0
  707. package/dist/configurator/ui/assistant/resource-image/use-resource-image-url.d.ts +5 -0
  708. package/dist/configurator/ui/assistant/resource-image/use-resource-image-url.js +1 -0
  709. package/dist/configurator/ui/assistant/screenshots/ScreenshotThumbnails.d.ts +9 -0
  710. package/dist/configurator/ui/assistant/screenshots/ScreenshotThumbnails.js +1 -0
  711. package/dist/configurator/ui/assistant/screenshots/index.d.ts +3 -0
  712. package/dist/configurator/ui/assistant/screenshots/index.js +1 -0
  713. package/dist/configurator/ui/assistant/screenshots/tool-screenshots.d.ts +22 -0
  714. package/dist/configurator/ui/assistant/screenshots/tool-screenshots.js +1 -0
  715. package/dist/configurator/ui/assistant/screenshots/use-screenshot-src.d.ts +8 -0
  716. package/dist/configurator/ui/assistant/screenshots/use-screenshot-src.js +1 -0
  717. package/dist/configurator/ui/assistant/streamed-markdown.d.ts +8 -0
  718. package/dist/configurator/ui/assistant/streamed-markdown.js +2 -0
  719. package/dist/configurator/ui/assistant/theme.d.ts +2 -0
  720. package/dist/configurator/ui/assistant/theme.js +1 -0
  721. package/dist/configurator/ui/assistant/thread-items.d.ts +57 -0
  722. package/dist/configurator/ui/assistant/thread-items.js +1 -0
  723. package/dist/configurator/ui/assistant/tool-chip.d.ts +54 -0
  724. package/dist/configurator/ui/assistant/tool-chip.js +1 -0
  725. package/dist/configurator/ui/assistant/use-follow-stream.d.ts +17 -0
  726. package/dist/configurator/ui/assistant/use-follow-stream.js +1 -0
  727. package/dist/configurator/ui/assistant/use-is-assistant-panel-open.d.ts +5 -0
  728. package/dist/configurator/ui/assistant/use-is-assistant-panel-open.js +1 -0
  729. package/dist/configurator/ui/configurator-layout/sidebar-keys/index.d.ts +1 -0
  730. package/dist/configurator/ui/configurator-layout/sidebar-keys/index.js +1 -0
  731. package/dist/configurator/ui/configurator-layout/sidebar-keys/sidebar-keys.d.ts +11 -0
  732. package/dist/configurator/ui/configurator-layout/sidebar-keys/sidebar-keys.js +1 -0
  733. package/dist/configurator/ui/configurator-layout/slots/canvas/GPUAccelerationDisabled.js +1 -1
  734. package/dist/configurator/ui/configurator-layout/slots/canvas/LayoutCanvas.js +1 -1
  735. package/dist/configurator/ui/configurator-layout/slots/canvas/SharedCanvas.js +1 -1
  736. package/dist/configurator/ui/configurator-layout/slots/canvas/WebGLNotSupported.js +1 -1
  737. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/DesktopSidebar.d.ts +101 -0
  738. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/DesktopSidebar.js +16 -0
  739. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/index.d.ts +1 -0
  740. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/index.js +1 -0
  741. package/dist/configurator/ui/configurator-layout/slots/mobile-tabs/use-mobile-tabs.d.ts +1 -1
  742. package/dist/configurator/ui/configurator-layout/slots/mobile-tabs/use-mobile-tabs.js +1 -1
  743. package/dist/configurator/ui/configurator-layout/slots/readonly-banner/CloneToEditDialog.js +1 -1
  744. package/dist/configurator/ui/configurator-layout/slots/services/InvariantViolations.d.ts +4 -4
  745. package/dist/configurator/ui/configurator-layout/slots/services/InvariantViolations.js +1 -1
  746. package/dist/configurator/ui/configurator-layout/slots/services/Services.js +1 -1
  747. package/dist/configurator/ui/configurator-layout/slots/services/SideEffects.d.ts +3 -6
  748. package/dist/configurator/ui/configurator-layout/slots/services/SideEffects.js +1 -1
  749. package/dist/configurator/ui/configurator-layout/slots/sidebar-tabs/use-sidebar-tabs.d.ts +1 -1
  750. package/dist/configurator/ui/configurator-layout/slots/sidebar-tabs/use-sidebar-tabs.js +1 -1
  751. package/dist/configurator/ui/configurator-layout/slots/slots.d.ts +1 -0
  752. package/dist/configurator/ui/configurator-layout/slots/slots.js +1 -1
  753. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.d.ts +0 -74
  754. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.js +5 -20
  755. package/dist/configurator/ui/configurator-layout/universal/DesktopPreview.js +1 -1
  756. package/dist/configurator/ui/configurator-layout/universal/ExportingOverlay.d.ts +5 -0
  757. package/dist/configurator/ui/configurator-layout/universal/ExportingOverlay.js +1 -0
  758. package/dist/configurator/ui/configurator-layout/universal/Layout.js +1 -1
  759. package/dist/configurator/ui/configurator-layout/universal/MobileLayout.d.ts +2 -0
  760. package/dist/configurator/ui/configurator-layout/universal/MobileLayout.js +3 -3
  761. package/dist/configurator/ui/configurator-layout/universal/MobilePreview.js +1 -1
  762. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.d.ts +47 -0
  763. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.js +1 -0
  764. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.d.ts +11 -26
  765. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.js +1 -1
  766. package/dist/configurator/ui/index.d.ts +1 -0
  767. package/dist/configurator/ui/index.js +1 -1
  768. package/dist/configurator/ui/legacy/chat/MobileChat.js +1 -1
  769. package/dist/configurator/ui/legacy/layout/common/CommonFinalizeButton.js +1 -1
  770. package/dist/configurator/ui/legacy/layout/common/CommonSummaryButton.js +1 -1
  771. package/dist/configurator/ui/legacy/layout/common/CommonTopNavigation.js +1 -1
  772. package/dist/configurator/ui/legacy/layout/common/ReactiveInterfaceLayout.js +1 -1
  773. package/dist/configurator/ui/legacy/layout/common/ResponsiveFinalizeButton.js +1 -1
  774. package/dist/configurator/ui/legacy/layout/common/SummaryReadLayout.js +1 -1
  775. package/dist/configurator/ui/legacy/layout/simple/SimpleOwnerLayout.js +1 -1
  776. package/dist/configurator/ui/legacy/layout/simple/SimpleSidebar.js +1 -1
  777. package/dist/configurator/ui/legacy/layout/simple/SimpleTopNavigation.js +1 -1
  778. package/dist/configurator/ui/legacy/layout/steps/StepsNavigation.d.ts +2 -2
  779. package/dist/configurator/ui/legacy/layout/steps/StepsNavigation.js +1 -1
  780. package/dist/configurator/ui/legacy/layout/steps/StepsOwnerLayout.js +1 -1
  781. package/dist/configurator/ui/legacy/layout/steps/StepsSideBar.js +1 -1
  782. package/dist/configurator/ui/legacy/layout/steps/StepsSidebarFooter.js +1 -1
  783. package/dist/configurator/ui/legacy/layout/tabs/TabsOwnerLayout.js +1 -1
  784. package/dist/configurator/ui/legacy/layout/tabs/TabsSidebar.js +1 -1
  785. package/dist/configurator/ui/legacy/mobile-controls/MobileControls.d.ts +1 -1
  786. package/dist/configurator/ui/legacy/toolbar/common/DimensionUnitSelector.js +1 -1
  787. package/dist/configurator/ui/legacy/toolbar/common/MeasurementsIndicatorsSwitch.js +1 -1
  788. package/dist/configurator/ui/legacy/toolbar/desktop-toolbar/FullscreenToolbarAction.js +1 -1
  789. package/dist/configurator/ui/legacy/toolbar/desktop-toolbar/HelpToolbarAction.js +1 -1
  790. package/dist/configurator/ui/legacy/toolbar/desktop-toolbar/MeasurementsToolbarAction.js +1 -1
  791. package/dist/configurator/ui/legacy/toolbar/desktop-toolbar/UndoRedoToolbarGroup.js +1 -1
  792. package/dist/configurator/ui/phoenix-layout-elements/AppLoader.d.ts +0 -7
  793. package/dist/configurator/ui/phoenix-layout-elements/AppLoader.js +2 -6
  794. package/dist/configurator/ui/phoenix-layout-elements/AssistantToolbarButton.d.ts +10 -0
  795. package/dist/configurator/ui/phoenix-layout-elements/AssistantToolbarButton.js +1 -0
  796. package/dist/configurator/ui/phoenix-layout-elements/EnterFullscreenToolbarButton.js +1 -1
  797. package/dist/configurator/ui/phoenix-layout-elements/ExitFullscreenToolbarButton.js +1 -1
  798. package/dist/configurator/ui/phoenix-layout-elements/HelpToolbarButton.js +1 -1
  799. package/dist/configurator/ui/phoenix-layout-elements/LanguageMenuAction.js +1 -1
  800. package/dist/configurator/ui/phoenix-layout-elements/LanguageToolbarButton.js +1 -1
  801. package/dist/configurator/ui/phoenix-layout-elements/LayoutCustomOwnerUi.d.ts +1 -0
  802. package/dist/configurator/ui/phoenix-layout-elements/LayoutCustomOwnerUi.js +1 -1
  803. package/dist/configurator/ui/phoenix-layout-elements/LayoutCustomReadUi.d.ts +1 -0
  804. package/dist/configurator/ui/phoenix-layout-elements/LayoutCustomReadUi.js +1 -1
  805. package/dist/configurator/ui/phoenix-layout-elements/MeasurementsMenuAction.js +1 -1
  806. package/dist/configurator/ui/phoenix-layout-elements/MeasurementsToolbarButton.js +1 -1
  807. package/dist/configurator/ui/phoenix-layout-elements/RedoToolbarButton.js +1 -1
  808. package/dist/configurator/ui/phoenix-layout-elements/ShareToolbarButton.js +1 -1
  809. package/dist/configurator/ui/phoenix-layout-elements/UndoToolbarButton.js +1 -1
  810. package/dist/configurator/ui/phoenix-layout-elements/header/common/back-button/use-go-back-action.js +1 -1
  811. package/dist/configurator/ui/phoenix-layout-elements/header/common/horizontal-tabs/DesktopHorizontalTabs.js +1 -1
  812. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/DesktopNavigationSteps.d.ts +1 -1
  813. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/DesktopNavigationSteps.js +1 -1
  814. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.d.ts +2 -8
  815. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.js +1 -1
  816. package/dist/configurator/ui/phoenix-layout-elements/index.d.ts +9 -1
  817. package/dist/configurator/ui/phoenix-layout-elements/index.js +1 -1
  818. package/dist/configurator/ui/phoenix-layout-elements/measurements/DimensionUnitSelector.js +1 -1
  819. package/dist/configurator/ui/phoenix-layout-elements/measurements/MeasurementsIndicatorsSwitch.js +1 -1
  820. package/dist/configurator/ui/phoenix-layout-elements/share/ShareModal.js +1 -1
  821. package/dist/configurator/ui/phoenix-layout-elements/share/use-share.d.ts +7 -8
  822. package/dist/configurator/ui/phoenix-layout-elements/share/use-share.js +1 -1
  823. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/basic/BasicFinalizeButton.js +1 -1
  824. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/basic/use-basic-sidebar-footer.js +1 -1
  825. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/CustomFinalizeButton.js +1 -1
  826. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/EnterSummaryButton.js +1 -1
  827. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/FinalizeActions.js +1 -1
  828. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/NextStepButton.js +1 -1
  829. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/PreviousStepButton.js +1 -1
  830. package/dist/configurator/ui/preset-layout/CategoryPresetUi.js +1 -1
  831. package/dist/configurator/ui/preset-layout/PresetUi.d.ts +4 -2
  832. package/dist/configurator/ui/preset-layout/PresetUi.js +1 -1
  833. package/dist/configurator/ui/preset-layout/index.d.ts +6 -1
  834. package/dist/configurator/ui/preset-layout/index.js +1 -1
  835. package/dist/configurator/ui/save-message-snackbars/SaveMessageSnackbars.d.ts +10 -0
  836. package/dist/configurator/ui/save-message-snackbars/SaveMessageSnackbars.js +1 -0
  837. package/dist/configurator/ui/save-message-snackbars/index.d.ts +1 -0
  838. package/dist/configurator/ui/save-message-snackbars/index.js +1 -0
  839. package/dist/docs/3d-scene/cameras/custom.mdx +4 -2
  840. package/dist/docs/complex-use-cases/filtered-controls-with-fix-dialog.mdx +100 -117
  841. package/dist/docs/complex-use-cases/focus-mode.mdx +2 -0
  842. package/dist/docs/complex-use-cases/navigation-reset-selection.mdx +18 -12
  843. package/dist/docs/complex-use-cases/sketching.mdx +0 -38
  844. package/dist/docs/controls/select-attribute/cardselect.mdx +9 -13
  845. package/dist/docs/controls/select-child-entity/cardselect.mdx +1 -0
  846. package/dist/docs/dimensions/3d-scene-integration/dimension-indicators.mdx +2 -2
  847. package/dist/docs/dimensions/3d-scene-integration/editable-angle-indicator.mdx +1 -1
  848. package/dist/docs/dimensions/3d-scene-integration/editable-distance-dimension-indicator.mdx +1 -1
  849. package/dist/docs/dimensions/3d-scene-integration/list-selector-dimension-indicator.mdx +1 -1
  850. package/dist/docs/drag-and-drop/drag-handle.mdx +1 -1
  851. package/dist/docs/drag-and-drop/hotspot-handle.mdx +1 -1
  852. package/dist/docs/drag-and-drop/planes.mdx +1 -1
  853. package/dist/docs/drag-and-drop/room-planner.mdx +1 -1
  854. package/dist/docs/drag-and-drop/rotatable.mdx +2 -2
  855. package/dist/docs/fabs/basic.mdx +6 -2
  856. package/dist/docs/index.json +147 -2
  857. package/dist/docs/integrations/webcomponent-api/basics.mdx +2 -0
  858. package/dist/docs/integrations/woocommerce/local-development.mdx +1 -1
  859. package/dist/docs/layouts/custom-layout.mdx +2597 -0
  860. package/dist/docs/layouts/custom-price.mdx +14 -16
  861. package/dist/docs/layouts/gallery/ardent-compressor.mdx +3516 -0
  862. package/dist/docs/layouts/gallery/corvid-drone.mdx +3428 -0
  863. package/dist/docs/layouts/gallery/fenwick-window.mdx +2803 -0
  864. package/dist/docs/layouts/gallery/ferrule-bar-station.mdx +6567 -0
  865. package/dist/docs/layouts/gallery/kestrel-kettle.mdx +1858 -0
  866. package/dist/docs/layouts/gallery/nightjar-guitar.mdx +3698 -0
  867. package/dist/docs/layouts/gallery/sunfold-solar.mdx +2683 -0
  868. package/dist/docs/layouts/gallery/tidepool-aquascape.mdx +5203 -0
  869. package/dist/docs/layouts/header/fixed.mdx +2 -2
  870. package/dist/docs/layouts/header/floating.mdx +2 -2
  871. package/dist/docs/layouts/sidebar/in-a-custom-layout.mdx +380 -0
  872. package/dist/docs/layouts/sidebar/tabs.mdx +24 -21
  873. package/dist/docs/layouts/sidebar-footer/basic.mdx +32 -77
  874. package/dist/docs/layouts/toolbar.mdx +6 -0
  875. package/dist/docs/other-features/client-side-rendering/declarative.mdx +2 -2
  876. package/dist/docs/other-features/domain-actions.mdx +418 -0
  877. package/dist/docs/other-features/error-5xx.mdx +1 -1
  878. package/dist/docs/other-features/navigation-hotspot.mdx +2 -0
  879. package/dist/docs/other-features/not-found-404.mdx +1 -1
  880. package/dist/docs/other-features/side-effects.mdx +76 -45
  881. package/dist/docs/other-features/transformers.mdx +5 -1
  882. package/dist/docs/other-features/violation-messages.mdx +52 -56
  883. package/dist/docs/phoenix/admin.mdx +11 -26
  884. package/dist/docs/phoenix/application-states.mdx +9 -7
  885. package/dist/docs/phoenix/best-practices.mdx +1 -0
  886. package/dist/docs/phoenix/clerk-sign-in.mdx +1 -1
  887. package/dist/docs/phoenix/components.mdx +6 -0
  888. package/dist/docs/phoenix/configurator-interface.mdx +402 -81
  889. package/dist/docs/phoenix/deployments.mdx +14 -8
  890. package/dist/docs/phoenix/domain-model.mdx +10 -1
  891. package/dist/docs/phoenix/expression-context.mdx +11 -3
  892. package/dist/docs/phoenix/finalization.mdx +2 -2
  893. package/dist/docs/phoenix/getting-started.mdx +7 -4
  894. package/dist/docs/phoenix/integration/headless-mode-external.mdx +5 -5
  895. package/dist/docs/phoenix/integration/widget-mode-external.mdx +5 -5
  896. package/dist/docs/phoenix/layout-slots.mdx +137 -0
  897. package/dist/docs/phoenix/localization.mdx +13 -28
  898. package/dist/docs/phoenix/migration-guide.mdx +27 -14
  899. package/dist/docs/phoenix/phoenix-cli.mdx +283 -84
  900. package/dist/docs/phoenix/project-structure.mdx +95 -37
  901. package/dist/docs/phoenix/quickstart.mdx +9 -9
  902. package/dist/docs/phoenix/sdk-builder-workflow.mdx +26 -22
  903. package/dist/docs/phoenix/sessions-and-access.mdx +2 -0
  904. package/dist/docs/phoenix/testing.mdx +153 -0
  905. package/dist/docs/phoenix/webhook-membership.mdx +10 -9
  906. package/dist/docs/phoenix/webhooks.mdx +31 -6
  907. package/dist/docs/recipes-and-delete/recipe-hierarchy-selection.mdx +15 -13
  908. package/dist/docs/relations/hierarchy.mdx +13 -2
  909. package/dist/docs/selection-and-highlight/hotspots.mdx +2 -0
  910. package/dist/docs/ux-guidelines/choosing-a-control.mdx +11 -0
  911. package/dist/domain/admin-domain/__generated/enhanced-model.d.ts +1 -2
  912. package/dist/domain/admin-domain/__generated/model/versions/v1.d.ts +1 -1
  913. package/dist/domain/admin-domain/__generated/model/versions/v2.d.ts +1 -1
  914. package/dist/domain/admin-domain/__generated/model/versions/v3.d.ts +1 -1
  915. package/dist/domain/admin-domain/__generated/model/versions/v4.d.ts +1 -1
  916. package/dist/domain/admin-domain/__generated/model/versions/v5.d.ts +1 -1
  917. package/dist/domain/admin-domain/__generated/model/versions/v6.d.ts +2 -2
  918. package/dist/domain/admin-domain/__generated/model/versions/v6.js +1 -1
  919. package/dist/domain/admin-domain/implementation/common-admin-expressions.d.ts +26 -14
  920. package/dist/domain/admin-domain/implementation/common-admin-migrations.d.ts +1 -1
  921. package/dist/domain/admin-domain/implementation/common-admin-publish.d.ts +1 -2
  922. package/dist/domain/admin-domain/index.d.ts +9 -5
  923. package/dist/domain/admin-domain/index.js +1 -1
  924. package/dist/domain/application/GetApplicationWrapperHandler.d.ts +2 -2
  925. package/dist/domain/application/GetThemeHandler.d.ts +1 -1
  926. package/dist/domain/application/GetWebComponentOptions.d.ts +1 -1
  927. package/dist/domain/application/admin-page-factories.d.ts +1 -2
  928. package/dist/domain/application/application-config.d.ts +34 -117
  929. package/dist/domain/application/assistant/assistant-fields.d.ts +12 -0
  930. package/dist/domain/application/assistant/assistant-fields.js +1 -0
  931. package/dist/domain/application/assistant/assistant-manifest.d.ts +96 -0
  932. package/dist/domain/application/assistant/assistant-manifest.js +1 -0
  933. package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +134 -0
  934. package/dist/domain/application/assistant/assistant-value-type.d.ts +9 -0
  935. package/dist/domain/application/assistant/assistant-value-type.js +1 -0
  936. package/dist/domain/application/assistant/build-assistant-lenses.d.ts +14 -0
  937. package/dist/domain/application/assistant/build-assistant-lenses.js +5 -0
  938. package/dist/domain/application/assistant/build-assistant-manifest.d.ts +4 -0
  939. package/dist/domain/application/assistant/build-assistant-manifest.js +1 -0
  940. package/dist/domain/application/assistant/create-assistant-execution-schema.d.ts +32 -0
  941. package/dist/domain/application/assistant/create-assistant-execution-schema.js +1 -0
  942. package/dist/domain/application/assistant/form/assistant-form-element-name.d.ts +11 -0
  943. package/dist/domain/application/assistant/form/assistant-form-element-name.js +8 -0
  944. package/dist/domain/application/assistant/form/assistant-form-elements.d.ts +174 -0
  945. package/dist/domain/application/assistant/form/assistant-form-elements.js +1 -0
  946. package/dist/domain/application/assistant/form/assistant-resource-path.d.ts +10 -0
  947. package/dist/domain/application/assistant/form/assistant-resource-path.js +1 -0
  948. package/dist/domain/application/assistant/form/index.d.ts +4 -0
  949. package/dist/domain/application/assistant/form/index.js +1 -0
  950. package/dist/domain/application/assistant/generate-assistant-prompt.d.ts +6 -0
  951. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -0
  952. package/dist/domain/application/assistant/index.d.ts +10 -0
  953. package/dist/domain/application/assistant/index.js +1 -0
  954. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.d.ts +20 -0
  955. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.js +1 -0
  956. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.d.ts +10 -0
  957. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.js +1 -0
  958. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.d.ts +48 -0
  959. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.js +1 -0
  960. package/dist/domain/application/assistant/session-setup/create-session-assistant.d.ts +15 -0
  961. package/dist/domain/application/assistant/session-setup/create-session-assistant.js +1 -0
  962. package/dist/domain/application/assistant/session-setup/index.d.ts +4 -0
  963. package/dist/domain/application/assistant/session-setup/index.js +1 -0
  964. package/dist/domain/application/assistant-field-options.d.ts +2 -3
  965. package/dist/domain/application/assistant-mutations.d.ts +16 -17
  966. package/dist/domain/application/assistant-mutations.js +1 -1
  967. package/dist/domain/application/assistant-recipe-groups.d.ts +6 -8
  968. package/dist/domain/application/configurator-builder.d.ts +42 -18
  969. package/dist/domain/application/configurator-builder.js +1 -1
  970. package/dist/domain/application/create-initial-published-data.d.ts +6 -7
  971. package/dist/domain/application/index.d.ts +4 -7
  972. package/dist/domain/application/index.js +1 -1
  973. package/dist/domain/application/published-data/DataRowValidatorHandler.d.ts +1 -1
  974. package/dist/domain/application/published-data/FilterPublishedChunksHandler.d.ts +1 -1
  975. package/dist/domain/application/published-data/MapPublishedChunkedDataHandler.d.ts +1 -1
  976. package/dist/domain/application/published-data/MapPublishedRevisionDataHandler.d.ts +1 -1
  977. package/dist/domain/application/published-data/SheetValidatorHandler.d.ts +1 -1
  978. package/dist/domain/application/published-data/build-legend-data.d.ts +1 -1
  979. package/dist/domain/application/published-data/create-finalize-admin-domain.d.ts +1 -2
  980. package/dist/domain/application/published-data/format-field-type.d.ts +1 -1
  981. package/dist/domain/application/published-data/map-data-to-sheet.d.ts +1 -1
  982. package/dist/domain/application/published-data/map-published-chunked-data.d.ts +3 -3
  983. package/dist/domain/application/published-data/map-published-data.d.ts +7 -4
  984. package/dist/domain/application/published-data/validate-sheet-data.d.ts +1 -1
  985. package/dist/domain/application/standard-properties.js +1 -1
  986. package/dist/domain/application/web-component-property.d.ts +3 -1
  987. package/dist/domain/application/web-component-property.js +1 -1
  988. package/dist/domain/available-system-components/available-system-components.d.ts +11 -0
  989. package/dist/domain/available-system-components/available-system-components.js +1 -0
  990. package/dist/domain/available-system-components/index.d.ts +1 -0
  991. package/dist/domain/available-system-components/index.js +1 -0
  992. package/dist/domain/core/action/action-factory.d.ts +11 -0
  993. package/dist/domain/core/action/action-factory.js +1 -0
  994. package/dist/domain/core/action/action.d.ts +71 -0
  995. package/dist/domain/core/action/action.js +1 -0
  996. package/dist/domain/core/action/index.d.ts +2 -0
  997. package/dist/domain/core/action/index.js +1 -0
  998. package/dist/domain/core/component/component-reader-types.d.ts +43 -0
  999. package/dist/domain/core/component/component-reader-types.js +1 -0
  1000. package/dist/domain/core/component/debug-state-component.d.ts +14 -0
  1001. package/dist/domain/core/component/debug-state-component.js +1 -0
  1002. package/dist/domain/core/component/domain-component-optic.d.ts +65 -0
  1003. package/dist/domain/core/component/domain-component-optic.js +16 -0
  1004. package/dist/domain/core/component/drag-state-component.d.ts +16 -0
  1005. package/dist/domain/core/component/drag-state-component.js +1 -0
  1006. package/dist/domain/core/component/export-state-component.d.ts +15 -0
  1007. package/dist/domain/core/component/export-state-component.js +1 -0
  1008. package/dist/domain/core/component/fullscreen-state-component.d.ts +14 -0
  1009. package/dist/domain/core/component/fullscreen-state-component.js +1 -0
  1010. package/dist/domain/core/component/group-components-by-entity-id-and-name.d.ts +8 -0
  1011. package/dist/domain/core/component/group-components-by-entity-id-and-name.js +1 -0
  1012. package/dist/domain/core/component/hover-state-component.d.ts +14 -0
  1013. package/dist/domain/core/component/hover-state-component.js +1 -0
  1014. package/dist/domain/core/component/index.d.ts +18 -0
  1015. package/dist/domain/core/component/index.js +1 -0
  1016. package/dist/domain/core/component/legacy-filter.d.ts +498 -0
  1017. package/dist/domain/core/component/navigation-state-component.d.ts +15 -0
  1018. package/dist/domain/core/component/navigation-state-component.js +1 -0
  1019. package/dist/domain/core/component/selection-state-component.d.ts +14 -0
  1020. package/dist/domain/core/component/selection-state-component.js +1 -0
  1021. package/dist/domain/core/component/system-component-builder.d.ts +11 -0
  1022. package/dist/domain/core/component/system-component-builder.js +1 -0
  1023. package/dist/domain/core/component/system-component-filter.d.ts +811 -0
  1024. package/dist/domain/core/component/system-virtual-entity.js +1 -0
  1025. package/dist/domain/core/component/tool-state-component.d.ts +14 -0
  1026. package/dist/domain/core/component/tool-state-component.js +1 -0
  1027. package/dist/domain/core/component/updates.d.ts +123 -0
  1028. package/dist/domain/core/component/view-state-component.d.ts +14 -0
  1029. package/dist/domain/core/component/view-state-component.js +1 -0
  1030. package/dist/domain/core/component/viewport-state-component.d.ts +29 -0
  1031. package/dist/domain/core/component/viewport-state-component.js +1 -0
  1032. package/dist/domain/core/data-schema/data-cell-value.d.ts +4 -0
  1033. package/dist/domain/core/data-schema/data-cell-value.js +1 -0
  1034. package/dist/domain/core/data-schema/data-schema-array-field.d.ts +5 -0
  1035. package/dist/domain/core/data-schema/data-schema-array-field.js +1 -0
  1036. package/dist/domain/core/data-schema/data-schema-field-object.d.ts +4 -0
  1037. package/dist/domain/core/data-schema/data-schema-field-object.js +1 -0
  1038. package/dist/domain/core/data-schema/data-schema-field.d.ts +2 -0
  1039. package/dist/domain/core/data-schema/data-schema-field.js +1 -0
  1040. package/dist/domain/core/data-schema/data-schema-localized-field.d.ts +4 -0
  1041. package/dist/domain/core/data-schema/data-schema-localized-field.js +1 -0
  1042. package/dist/domain/core/data-schema/data-schema-primitive-field.d.ts +5 -0
  1043. package/dist/domain/core/data-schema/data-schema-primitive-field.js +1 -0
  1044. package/dist/domain/core/data-schema/data-schema.d.ts +2 -0
  1045. package/dist/domain/core/data-schema/data-schema.js +1 -0
  1046. package/dist/domain/core/data-schema/index.d.ts +7 -0
  1047. package/dist/domain/core/data-schema/index.js +1 -0
  1048. package/dist/domain/core/decoder/create-decoder.d.ts +6 -0
  1049. package/dist/domain/core/decoder/create-decoder.js +1 -0
  1050. package/dist/domain/core/decoder/decoder.d.ts +6 -0
  1051. package/dist/domain/core/decoder/decoder.js +1 -0
  1052. package/dist/domain/core/decoder/index.d.ts +2 -0
  1053. package/dist/domain/core/decoder/index.js +1 -0
  1054. package/dist/domain/core/domain-factory.d.ts +7 -4
  1055. package/dist/domain/core/domain-factory.js +1 -1
  1056. package/dist/domain/core/domain.d.ts +4 -5
  1057. package/dist/domain/core/domain.js +1 -1
  1058. package/dist/domain/core/emission/index.d.ts +8 -0
  1059. package/dist/domain/core/emission/index.js +1 -0
  1060. package/dist/domain/core/emission/reset-state-emission.d.ts +12 -0
  1061. package/dist/domain/core/emission/reset-state-emission.js +1 -0
  1062. package/dist/domain/core/emission/state-emission.d.ts +4 -0
  1063. package/dist/domain/core/emission/state-emission.js +1 -0
  1064. package/dist/domain/core/emission/state-update-emission.d.ts +14 -0
  1065. package/dist/domain/core/emission/state-update-emission.js +1 -0
  1066. package/dist/domain/core/emission/state-validation-result.d.ts +18 -0
  1067. package/dist/domain/core/emission/state-validation-result.js +1 -0
  1068. package/dist/domain/core/emission/transformation-log.d.ts +2 -0
  1069. package/dist/domain/core/emission/transformation-log.js +1 -0
  1070. package/dist/domain/core/emission/transformer-log-entry.d.ts +6 -0
  1071. package/dist/domain/core/emission/transformer-log-entry.js +1 -0
  1072. package/dist/domain/core/emission/transformer-log.d.ts +11 -0
  1073. package/dist/domain/core/emission/transformer-log.js +1 -0
  1074. package/dist/domain/core/emission/transformer-phase.d.ts +1 -0
  1075. package/dist/domain/core/emission/transformer-phase.js +1 -0
  1076. package/dist/domain/core/expression/aliased-expressions.d.ts +10 -0
  1077. package/dist/domain/core/expression/aliased-expressions.js +1 -0
  1078. package/dist/domain/core/expression/constant-expressions.d.ts +16 -0
  1079. package/dist/domain/core/expression/constant-expressions.js +1 -0
  1080. package/dist/domain/core/expression/custom-expression.d.ts +25 -0
  1081. package/dist/domain/core/expression/custom-expression.js +1 -0
  1082. package/dist/domain/core/expression/expression.d.ts +46 -0
  1083. package/dist/domain/core/expression/expression.js +1 -0
  1084. package/dist/domain/core/expression/index.d.ts +4 -0
  1085. package/dist/domain/core/expression/index.js +1 -0
  1086. package/dist/domain/core/index.d.ts +13 -16
  1087. package/dist/domain/core/index.js +1 -1
  1088. package/dist/domain/core/invariant/builtin-invariant.d.ts +5 -0
  1089. package/dist/domain/core/invariant/custom-invariants.d.ts +13 -0
  1090. package/dist/domain/core/invariant/custom-invariants.js +1 -0
  1091. package/dist/domain/core/invariant/index.d.ts +5 -0
  1092. package/dist/domain/core/invariant/index.js +1 -0
  1093. package/dist/domain/core/invariant/invariants.d.ts +10 -0
  1094. package/dist/domain/core/invariant/invariants.js +1 -0
  1095. package/dist/domain/core/invariant/violation-component.js +1 -0
  1096. package/dist/domain/core/invariant/violation.d.ts +133 -0
  1097. package/dist/domain/core/invariant/violation.js +1 -0
  1098. package/dist/domain/core/model/component.d.ts +46 -0
  1099. package/dist/domain/core/model/index.d.ts +6 -0
  1100. package/dist/domain/core/model/index.js +1 -0
  1101. package/dist/domain/core/model/model.d.ts +127 -0
  1102. package/dist/domain/core/model/reflection.d.ts +114 -0
  1103. package/dist/domain/core/model/reflection.js +1 -0
  1104. package/dist/domain/core/recipe/index.d.ts +1 -0
  1105. package/dist/domain/core/recipe/index.js +1 -0
  1106. package/dist/domain/core/recipe/recipes.d.ts +23 -0
  1107. package/dist/domain/core/recipe/recipes.js +1 -0
  1108. package/dist/domain/core/relation/all-of-type-relation.d.ts +19 -0
  1109. package/dist/domain/core/relation/all-of-type-relation.js +1 -0
  1110. package/dist/domain/core/relation/component-factories.d.ts +14 -0
  1111. package/dist/domain/core/relation/component-factories.js +1 -0
  1112. package/dist/domain/core/relation/composed-of.d.ts +12 -0
  1113. package/dist/domain/core/relation/composed-of.js +1 -0
  1114. package/dist/domain/core/relation/direct-relation.d.ts +17 -0
  1115. package/dist/domain/core/relation/index.d.ts +8 -0
  1116. package/dist/domain/core/relation/index.js +1 -0
  1117. package/dist/domain/core/relation/indirect-relation.d.ts +25 -0
  1118. package/dist/domain/core/relation/indirect-relation.js +1 -0
  1119. package/dist/domain/core/relation/reference-component.d.ts +17 -0
  1120. package/dist/domain/core/relation/reference-component.js +1 -0
  1121. package/dist/domain/core/relation/reference-field.d.ts +7 -0
  1122. package/dist/domain/core/relation/reference-field.js +1 -0
  1123. package/dist/domain/core/relation/relation-factory.d.ts +22 -0
  1124. package/dist/domain/core/relation/relation-factory.js +1 -0
  1125. package/dist/domain/core/schema/enhanced-json-schema.js +1 -0
  1126. package/dist/domain/core/schema/extended-schema-validator.js +1 -0
  1127. package/dist/domain/core/schema/index.d.ts +3 -0
  1128. package/dist/domain/core/schema/index.js +1 -0
  1129. package/dist/domain/core/schema/schema-validator.js +1 -0
  1130. package/dist/domain/core/state/id-sequence.d.ts +15 -0
  1131. package/dist/domain/core/state/id-sequence.js +1 -0
  1132. package/dist/domain/core/state/index.d.ts +3 -0
  1133. package/dist/domain/core/state/index.js +1 -0
  1134. package/dist/domain/core/state/migrations.d.ts +67 -0
  1135. package/dist/domain/core/state/migrations.js +1 -0
  1136. package/dist/domain/core/state/state.d.ts +9 -0
  1137. package/dist/domain/domain-builder/domain-builder.d.ts +46 -0
  1138. package/dist/domain/domain-builder/domain-builder.js +1 -0
  1139. package/dist/domain/domain-builder/index.d.ts +1 -0
  1140. package/dist/domain/domain-builder/index.js +1 -0
  1141. package/dist/domain/domain-context/action-system/action-system.d.ts +38 -0
  1142. package/dist/domain/domain-context/action-system/action-system.js +1 -0
  1143. package/dist/domain/domain-context/action-system/index.d.ts +1 -0
  1144. package/dist/domain/domain-context/action-system/index.js +1 -0
  1145. package/dist/domain/domain-context/analytics-system/index.d.ts +2 -0
  1146. package/dist/domain/domain-context/analytics-system/index.js +1 -0
  1147. package/dist/domain/domain-context/create-transformer.d.ts +2 -2
  1148. package/dist/domain/domain-context/dimension-system/dimension-state.js +1 -1
  1149. package/dist/domain/domain-context/dimension-system/dimension-system.d.ts +3 -4
  1150. package/dist/domain/domain-context/dimension-system/dimension-system.js +1 -1
  1151. package/dist/domain/domain-context/dimension-system/index.d.ts +1 -0
  1152. package/dist/domain/domain-context/dimension-system/index.js +1 -0
  1153. package/dist/domain/domain-context/domain-context-systems.d.ts +11 -10
  1154. package/dist/domain/domain-context/index.d.ts +8 -17
  1155. package/dist/domain/domain-context/index.js +1 -1
  1156. package/dist/domain/domain-context/navigation-system/index.d.ts +3 -0
  1157. package/dist/domain/domain-context/navigation-system/index.js +1 -0
  1158. package/dist/domain/domain-context/navigation-system/navigation-system.d.ts +5 -8
  1159. package/dist/domain/domain-context/navigation-system/navigation-system.js +1 -1
  1160. package/dist/domain/domain-context/navigation-system/navigation-updates.d.ts +1 -12
  1161. package/dist/domain/domain-context/navigation-system/navigation-updates.js +1 -1
  1162. package/dist/domain/domain-context/navigation-system/selection-transformers.d.ts +2 -2
  1163. package/dist/domain/domain-context/navigation-system/selection-transformers.js +1 -1
  1164. package/dist/domain/domain-context/recipe-system/index.d.ts +1 -0
  1165. package/dist/domain/domain-context/recipe-system/index.js +1 -0
  1166. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.d.ts +2 -4
  1167. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.js +1 -1
  1168. package/dist/domain/domain-context/relation-transformers/cascade-deletes.d.ts +3 -3
  1169. package/dist/domain/domain-context/relation-transformers/cascade-deletes.js +1 -1
  1170. package/dist/domain/domain-context/relation-transformers/cascade-ref-pruning.d.ts +3 -3
  1171. package/dist/domain/domain-context/relation-transformers/cascade-ref-pruning.js +1 -1
  1172. package/dist/domain/domain-context/relation-transformers/create-entity-refs.d.ts +3 -3
  1173. package/dist/domain/domain-context/relation-transformers/create-entity-refs.js +2 -2
  1174. package/dist/domain/domain-context/relation-transformers/index.d.ts +4 -0
  1175. package/dist/domain/domain-context/relation-transformers/index.js +1 -0
  1176. package/dist/domain/domain-context/relation-transformers/replace-refs.d.ts +3 -3
  1177. package/dist/domain/domain-context/relation-transformers/replace-refs.js +1 -1
  1178. package/dist/domain/domain-context/store-system/apply-updates.d.ts +1 -3
  1179. package/dist/domain/domain-context/store-system/apply-updates.js +1 -1
  1180. package/dist/domain/domain-context/store-system/index.d.ts +4 -0
  1181. package/dist/domain/domain-context/store-system/index.js +1 -0
  1182. package/dist/domain/domain-context/store-system/next-domain-entity-id.d.ts +1 -13
  1183. package/dist/domain/domain-context/store-system/next-domain-entity-id.js +1 -1
  1184. package/dist/domain/domain-context/store-system/reconcile-projected-entities.d.ts +1 -2
  1185. package/dist/domain/domain-context/store-system/reconcile-projected-entities.js +1 -1
  1186. package/dist/domain/domain-context/store-system/store-system.d.ts +7 -39
  1187. package/dist/domain/domain-context/store-system/store-system.js +2 -2
  1188. package/dist/domain/domain-context/store-system/system-state.d.ts +2 -4
  1189. package/dist/domain/domain-context/store-system/system-state.js +1 -1
  1190. package/dist/domain/domain-context/transformers/actions-builder.d.ts +1 -2
  1191. package/dist/domain/domain-context/transformers/actions-builder.js +1 -1
  1192. package/dist/domain/domain-context/transformers/auto-snap-transformer.d.ts +6 -10
  1193. package/dist/domain/domain-context/transformers/auto-snap-transformer.js +1 -1
  1194. package/dist/domain/domain-context/transformers/chain-builder.d.ts +3 -3
  1195. package/dist/domain/domain-context/transformers/context.d.ts +2 -7
  1196. package/dist/domain/domain-context/transformers/context.js +1 -1
  1197. package/dist/domain/domain-context/transformers/entity-builder.d.ts +1 -5
  1198. package/dist/domain/domain-context/transformers/entity-builder.js +1 -1
  1199. package/dist/domain/domain-context/transformers/index.d.ts +1 -1
  1200. package/dist/domain/domain-context/transformers/index.js +1 -1
  1201. package/dist/domain/domain-context/transformers/then-builder.d.ts +1 -2
  1202. package/dist/domain/domain-context/transformers/then-builder.js +1 -1
  1203. package/dist/domain/domain-context/transformers/when-builder.d.ts +3 -9
  1204. package/dist/domain/domain-context/transformers/when-builder.js +1 -1
  1205. package/dist/domain/domain-context/undo-system.d.ts +29 -3
  1206. package/dist/domain/domain-context/undo-system.js +1 -1
  1207. package/dist/domain/domain-runtime/access/selectors.d.ts +9 -0
  1208. package/dist/domain/domain-runtime/access/selectors.js +1 -1
  1209. package/dist/domain/domain-runtime/access/types.d.ts +2 -0
  1210. package/dist/domain/domain-runtime/access/types.js +1 -1
  1211. package/dist/domain/domain-runtime/application.d.ts +39 -0
  1212. package/dist/domain/domain-runtime/application.js +1 -0
  1213. package/dist/domain/domain-runtime/domain-context/action-context.d.ts +11 -0
  1214. package/dist/domain/domain-runtime/domain-context/action-context.js +1 -0
  1215. package/dist/domain/domain-runtime/domain-context/component-reader.d.ts +1 -4
  1216. package/dist/domain/domain-runtime/domain-context/component-reader.js +1 -1
  1217. package/dist/domain/domain-runtime/domain-context/domain-context.js +1 -1
  1218. package/dist/domain/domain-runtime/domain-context/expression-context.d.ts +8 -0
  1219. package/dist/domain/domain-runtime/domain-context/expression-context.js +1 -0
  1220. package/dist/domain/domain-runtime/domain-context/index.d.ts +3 -0
  1221. package/dist/domain/domain-runtime/domain-context/runtime-expression-context.d.ts +18 -0
  1222. package/dist/domain/domain-runtime/domain-context/runtime-expression-context.js +1 -0
  1223. package/dist/domain/domain-runtime/domain-context/selectors.d.ts +23 -24
  1224. package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
  1225. package/dist/domain/domain-runtime/domain-context/types.d.ts +4 -1
  1226. package/dist/domain/domain-runtime/domain-runtime.d.ts +144 -76
  1227. package/dist/domain/domain-runtime/domain-runtime.js +1 -1
  1228. package/dist/domain/domain-runtime/environment/initialize.d.ts +1 -1
  1229. package/dist/domain/domain-runtime/environment/types.d.ts +1 -1
  1230. package/dist/domain/domain-runtime/errors/implementation-error-collector.d.ts +21 -0
  1231. package/dist/domain/domain-runtime/errors/implementation-error-collector.js +1 -0
  1232. package/dist/domain/domain-runtime/errors/implementation-error.d.ts +46 -0
  1233. package/dist/domain/domain-runtime/errors/implementation-error.js +1 -0
  1234. package/dist/domain/domain-runtime/errors/implementation-errors.d.ts +13 -0
  1235. package/dist/domain/domain-runtime/errors/implementation-errors.js +1 -0
  1236. package/dist/domain/domain-runtime/errors/index.d.ts +4 -0
  1237. package/dist/domain/domain-runtime/errors/index.js +1 -0
  1238. package/dist/domain/domain-runtime/errors/to-implementation-errors.d.ts +10 -0
  1239. package/dist/domain/domain-runtime/errors/to-implementation-errors.js +1 -0
  1240. package/dist/domain/domain-runtime/index.d.ts +2 -0
  1241. package/dist/domain/domain-runtime/index.js +1 -1
  1242. package/dist/domain/domain-runtime/spec/create-violation-expressions.d.ts +24 -0
  1243. package/dist/domain/domain-runtime/spec/create-violation-expressions.js +1 -0
  1244. package/dist/domain/domain-runtime/spec/index.d.ts +5 -0
  1245. package/dist/domain/domain-runtime/spec/index.js +1 -1
  1246. package/dist/domain/domain-runtime/spec/initialize.d.ts +11 -0
  1247. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  1248. package/dist/domain/domain-runtime/spec/memoize-expression.d.ts +16 -0
  1249. package/dist/domain/domain-runtime/spec/module-checks/element-registration.d.ts +125 -0
  1250. package/dist/domain/domain-runtime/spec/module-checks/element-registration.js +1 -0
  1251. package/dist/domain/domain-runtime/spec/module-checks/find-assistant-form-element-errors.d.ts +12 -0
  1252. package/dist/domain/domain-runtime/spec/module-checks/find-assistant-form-element-errors.js +1 -0
  1253. package/dist/domain/domain-runtime/spec/module-checks/handler-registration.d.ts +34 -0
  1254. package/dist/domain/domain-runtime/spec/module-checks/handler-registration.js +1 -0
  1255. package/dist/domain/domain-runtime/spec/module-checks/index.d.ts +10 -0
  1256. package/dist/domain/domain-runtime/spec/module-checks/index.js +1 -0
  1257. package/dist/domain/domain-runtime/spec/module-checks/merge-expression-modules.d.ts +23 -0
  1258. package/dist/domain/domain-runtime/spec/module-checks/merge-expression-modules.js +1 -0
  1259. package/dist/domain/domain-runtime/spec/module-checks/project-modules.d.ts +32 -0
  1260. package/dist/domain/domain-runtime/spec/module-checks/project-modules.js +1 -0
  1261. package/dist/domain/domain-runtime/spec/module-checks/resolve-action-modules.d.ts +4 -0
  1262. package/dist/domain/domain-runtime/spec/module-checks/resolve-action-modules.js +1 -0
  1263. package/dist/domain/domain-runtime/spec/module-checks/resolve-component-optic-modules.d.ts +4 -0
  1264. package/dist/domain/domain-runtime/spec/module-checks/resolve-component-optic-modules.js +1 -0
  1265. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.d.ts +14 -0
  1266. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.js +1 -0
  1267. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.d.ts +22 -0
  1268. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.js +1 -0
  1269. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.d.ts +6 -0
  1270. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.js +1 -0
  1271. package/dist/domain/domain-runtime/spec/prepare-action-implementations.d.ts +15 -0
  1272. package/dist/domain/domain-runtime/spec/prepare-action-implementations.js +5 -0
  1273. package/dist/domain/domain-runtime/spec/prepare-domain-expressions.d.ts +16 -0
  1274. package/dist/domain/domain-runtime/spec/selectors.d.ts +10 -9
  1275. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  1276. package/dist/domain/domain-runtime/spec/types.d.ts +22 -6
  1277. package/dist/domain/domain-runtime/web-component/actions.d.ts +3 -0
  1278. package/dist/domain/domain-runtime/web-component/actions.js +1 -1
  1279. package/dist/domain/domain-runtime/web-component/initialize.d.ts +1 -0
  1280. package/dist/domain/domain-runtime/web-component/initialize.js +1 -1
  1281. package/dist/domain/domain-runtime/web-component/selectors.d.ts +2 -0
  1282. package/dist/domain/domain-runtime/web-component/selectors.js +1 -1
  1283. package/dist/domain/domain-runtime/web-component/types.d.ts +6 -3
  1284. package/dist/domain/extensions/angle-indicator.d.ts +21 -0
  1285. package/dist/domain/extensions/angle-indicator.js +1 -0
  1286. package/dist/domain/extensions/attribute-switch.d.ts +8 -0
  1287. package/dist/domain/extensions/attribute-switch.js +1 -0
  1288. package/dist/domain/extensions/autorotate-camera-component.d.ts +19 -0
  1289. package/dist/domain/extensions/autorotate-camera-component.js +1 -0
  1290. package/dist/domain/extensions/basic-sidebar-footer.d.ts +8 -0
  1291. package/dist/domain/extensions/basic-sidebar-footer.js +1 -0
  1292. package/dist/domain/extensions/camera-based-hidden-entity-object.js +1 -0
  1293. package/dist/domain/extensions/camera-based-hidden-entity.js +1 -0
  1294. package/dist/domain/extensions/canvas-config.d.ts +87 -0
  1295. package/dist/domain/extensions/canvas-config.js +1 -0
  1296. package/dist/domain/extensions/canvas-custom-environment.js +1 -0
  1297. package/dist/domain/extensions/canvas-padding.d.ts +25 -0
  1298. package/dist/domain/extensions/canvas-padding.js +1 -0
  1299. package/dist/domain/extensions/canvas-preset-environment.d.ts +37 -0
  1300. package/dist/domain/extensions/canvas-preset-environment.js +1 -0
  1301. package/dist/domain/extensions/child-entity-recipe-hierarchy.d.ts +21 -0
  1302. package/dist/domain/extensions/child-entity-recipe-hierarchy.js +1 -0
  1303. package/dist/domain/extensions/color-value.js +1 -0
  1304. package/dist/domain/extensions/common/angle-indicator-schema.d.ts +292 -0
  1305. package/dist/domain/extensions/common/angle-indicator-schema.js +1 -0
  1306. package/dist/domain/extensions/common/dimension-indicator-schema.d.ts +607 -0
  1307. package/dist/domain/extensions/common/dimension-indicator-schema.js +1 -0
  1308. package/dist/domain/extensions/common/index.d.ts +4 -0
  1309. package/dist/domain/extensions/common/index.js +1 -0
  1310. package/dist/domain/extensions/custom-header.d.ts +11 -0
  1311. package/dist/domain/extensions/custom-header.js +1 -0
  1312. package/dist/domain/extensions/custom-price-footer.js +1 -0
  1313. package/dist/domain/extensions/custom-sidebar-footer.d.ts +11 -0
  1314. package/dist/domain/extensions/custom-sidebar-footer.js +1 -0
  1315. package/dist/domain/extensions/dimension-indicator.d.ts +31 -0
  1316. package/dist/domain/extensions/dimension-indicator.js +1 -0
  1317. package/dist/domain/extensions/editable-angle-indicator.d.ts +39 -0
  1318. package/dist/domain/extensions/editable-angle-indicator.js +1 -0
  1319. package/dist/domain/extensions/editable-distance-dimension-indicator.d.ts +43 -0
  1320. package/dist/domain/extensions/editable-distance-dimension-indicator.js +1 -0
  1321. package/dist/domain/extensions/editable-offset-indicator.d.ts +42 -0
  1322. package/dist/domain/extensions/editable-offset-indicator.js +1 -0
  1323. package/dist/domain/extensions/editable-size-indicator.d.ts +39 -0
  1324. package/dist/domain/extensions/editable-size-indicator.js +1 -0
  1325. package/dist/domain/extensions/entity-header.d.ts +22 -0
  1326. package/dist/domain/extensions/entity-header.js +1 -0
  1327. package/dist/domain/extensions/exit-tool-mode-fab.d.ts +25 -0
  1328. package/dist/domain/extensions/exit-tool-mode-fab.js +1 -0
  1329. package/dist/domain/extensions/export-images/agent-screenshot.d.ts +30 -0
  1330. package/dist/domain/extensions/export-images/agent-screenshot.js +1 -0
  1331. package/dist/domain/extensions/export-images/client-side-image.d.ts +14 -0
  1332. package/dist/domain/extensions/export-images/client-side-image.js +1 -0
  1333. package/dist/domain/extensions/export-images/index.d.ts +3 -0
  1334. package/dist/domain/extensions/export-images/index.js +1 -0
  1335. package/dist/domain/extensions/export-images/save-template-thumbnail.d.ts +14 -0
  1336. package/dist/domain/extensions/export-images/save-template-thumbnail.js +1 -0
  1337. package/dist/domain/extensions/finalize-action.d.ts +20 -0
  1338. package/dist/domain/extensions/finalize-action.js +1 -0
  1339. package/dist/domain/extensions/finalize-component.js +1 -0
  1340. package/dist/domain/extensions/fit-selection-orthographic-camera-component.js +1 -0
  1341. package/dist/domain/extensions/fit-selection-perspective-camera-component.js +1 -0
  1342. package/dist/domain/extensions/fixed-header.d.ts +10 -0
  1343. package/dist/domain/extensions/fixed-header.js +1 -0
  1344. package/dist/domain/extensions/floating-header.d.ts +10 -0
  1345. package/dist/domain/extensions/floating-header.js +1 -0
  1346. package/dist/domain/extensions/hidden-header.d.ts +8 -0
  1347. package/dist/domain/extensions/hidden-header.js +1 -0
  1348. package/dist/domain/extensions/hidden-sidebar-footer.d.ts +21 -0
  1349. package/dist/domain/extensions/hidden-sidebar-footer.js +1 -0
  1350. package/dist/domain/extensions/horizontal-tabs.d.ts +28 -0
  1351. package/dist/domain/extensions/horizontal-tabs.js +1 -0
  1352. package/dist/domain/extensions/index.d.ts +68 -0
  1353. package/dist/domain/extensions/index.js +1 -0
  1354. package/dist/domain/extensions/list-selector-dimension-indicator.d.ts +31 -0
  1355. package/dist/domain/extensions/list-selector-dimension-indicator.js +1 -0
  1356. package/dist/domain/extensions/multilingual-text-value.js +1 -0
  1357. package/dist/domain/extensions/navigation-steps.d.ts +19 -0
  1358. package/dist/domain/extensions/navigation-steps.js +1 -0
  1359. package/dist/domain/extensions/offset-anchors.d.ts +20 -0
  1360. package/dist/domain/extensions/offset-anchors.js +1 -0
  1361. package/dist/domain/extensions/offset-indicator.d.ts +83 -0
  1362. package/dist/domain/extensions/offset-indicator.js +1 -0
  1363. package/dist/domain/extensions/offset.d.ts +31 -0
  1364. package/dist/domain/extensions/offset.js +1 -0
  1365. package/dist/domain/extensions/other-action.d.ts +14 -0
  1366. package/dist/domain/extensions/other-action.js +1 -0
  1367. package/dist/domain/extensions/property-page.d.ts +16 -0
  1368. package/dist/domain/extensions/property-page.js +1 -0
  1369. package/dist/domain/extensions/read-sidebar-footer.d.ts +8 -0
  1370. package/dist/domain/extensions/read-sidebar-footer.js +1 -0
  1371. package/dist/domain/extensions/replace-entity-recipe-hierarchy.d.ts +21 -0
  1372. package/dist/domain/extensions/replace-entity-recipe-hierarchy.js +1 -0
  1373. package/dist/domain/extensions/rotatable.js +1 -0
  1374. package/dist/domain/extensions/rotation-handle.d.ts +53 -0
  1375. package/dist/domain/extensions/rotation-handle.js +1 -0
  1376. package/dist/domain/extensions/scene-entity-add-fab.d.ts +32 -0
  1377. package/dist/domain/extensions/scene-entity-add-fab.js +1 -0
  1378. package/dist/domain/extensions/scene-entity-animation.js +1 -0
  1379. package/dist/domain/extensions/scene-entity-control.js +1 -0
  1380. package/dist/domain/extensions/scene-entity-delete-fab.d.ts +19 -0
  1381. package/dist/domain/extensions/scene-entity-delete-fab.js +1 -0
  1382. package/dist/domain/extensions/scene-entity-floor-object.js +1 -0
  1383. package/dist/domain/extensions/scene-entity-html-hotspot.d.ts +27 -0
  1384. package/dist/domain/extensions/scene-entity-html-hotspot.js +1 -0
  1385. package/dist/domain/extensions/scene-entity-navigation-hotspot.d.ts +20 -0
  1386. package/dist/domain/extensions/scene-entity-navigation-hotspot.js +1 -0
  1387. package/dist/domain/extensions/scene-entity-object-html-hotspot.d.ts +31 -0
  1388. package/dist/domain/extensions/scene-entity-object-html-hotspot.js +1 -0
  1389. package/dist/domain/extensions/scene-entity-select-hotspot.d.ts +5 -0
  1390. package/dist/domain/extensions/scene-entity-select-hotspot.js +1 -0
  1391. package/dist/domain/extensions/scene-entity-wall-object.js +1 -0
  1392. package/dist/domain/extensions/selectable-component.js +1 -0
  1393. package/dist/domain/extensions/sidebar-tabs.d.ts +29 -0
  1394. package/dist/domain/extensions/sidebar-tabs.js +1 -0
  1395. package/dist/domain/extensions/simple-summary.js +1 -0
  1396. package/dist/domain/extensions/size.d.ts +21 -0
  1397. package/dist/domain/extensions/size.js +1 -0
  1398. package/dist/domain/extensions/sketching-draw.d.ts +17 -0
  1399. package/dist/domain/extensions/sketching-draw.js +1 -0
  1400. package/dist/domain/extensions/sketching-edit.d.ts +28 -0
  1401. package/dist/domain/extensions/sketching-edit.js +1 -0
  1402. package/dist/domain/extensions/summary-component.js +1 -0
  1403. package/dist/domain/extensions/text-value.js +1 -0
  1404. package/dist/domain/extensions/tool-controls.js +1 -0
  1405. package/dist/domain/extensions/tool-menu-fab.d.ts +40 -0
  1406. package/dist/domain/extensions/tool-menu-fab.js +1 -0
  1407. package/dist/domain/extensions/toolbar.d.ts +13 -0
  1408. package/dist/domain/extensions/toolbar.js +1 -0
  1409. package/dist/domain/extensions/universal-sidebar-footer.d.ts +12 -0
  1410. package/dist/domain/extensions/universal-sidebar-footer.js +1 -0
  1411. package/dist/domain/extensions/view-controls.js +1 -0
  1412. package/dist/domain/index.d.ts +4 -31
  1413. package/dist/domain/index.js +1 -1
  1414. package/dist/domain/mocks/create-mock-domain-context.d.ts +1 -1
  1415. package/dist/domain/mocks/create-mock-domain-runtime-services.d.ts +1 -1
  1416. package/dist/domain/mocks/create-mock-domain-runtime.d.ts +45 -21
  1417. package/dist/domain/mocks/create-mock-domain-runtime.js +1 -1
  1418. package/dist/domain/mocks/create-mock-domain.d.ts +1 -1
  1419. package/dist/domain/mocks/create-mock-domain.js +1 -1
  1420. package/dist/domain/mocks/create-mock-state.d.ts +2 -2
  1421. package/dist/domain/mocks/create-test-application-config.d.ts +59 -0
  1422. package/dist/domain/mocks/create-test-application-config.js +1 -0
  1423. package/dist/domain/mocks/index.d.ts +1 -0
  1424. package/dist/domain/mocks/index.js +1 -1
  1425. package/dist/domain/projections/blender-projections/blender-projections.d.ts +2 -3
  1426. package/dist/domain/projections/blender-projections/blender-projections.js +1 -1
  1427. package/dist/domain/projections/blender-projections/camera.d.ts +2 -2
  1428. package/dist/domain/projections/collision-projections.d.ts +1 -1
  1429. package/dist/domain/projections/composition-projections.d.ts +1 -1
  1430. package/dist/domain/projections/composition-projections.js +1 -1
  1431. package/dist/domain/projections/constraint-projections.d.ts +1 -1
  1432. package/dist/domain/projections/index.d.ts +1 -1
  1433. package/dist/domain/projections/position-projections.d.ts +1 -1
  1434. package/dist/domain/projections/projected-entities-projections.d.ts +2 -3
  1435. package/dist/domain/projections/snap-matching.d.ts +1 -2
  1436. package/dist/domain/projections/snap-utils.d.ts +1 -2
  1437. package/dist/domain/projections/snapping-projections.d.ts +1 -1
  1438. package/dist/domain/projections/validation-projections.d.ts +3 -20
  1439. package/dist/domain/projections/validation-projections.js +1 -1
  1440. package/dist/domain/sketching/sketching-projections.d.ts +1 -1
  1441. package/dist/domain/spec/application/admin-pages-section.d.ts +29 -0
  1442. package/dist/domain/spec/application/admin-pages-section.js +1 -0
  1443. package/dist/domain/spec/application/admin-pages.d.ts +26 -0
  1444. package/dist/domain/spec/application/admin-pages.js +1 -0
  1445. package/dist/domain/spec/application/admin-states.d.ts +5 -0
  1446. package/dist/domain/spec/application/admin-states.js +1 -0
  1447. package/dist/domain/spec/application/configurator-states.d.ts +8 -0
  1448. package/dist/domain/spec/application/configurator-states.js +1 -0
  1449. package/dist/domain/spec/application/index.d.ts +5 -0
  1450. package/dist/domain/spec/application/index.js +1 -0
  1451. package/dist/domain/spec/components/bindings/index.d.ts +2 -0
  1452. package/dist/domain/spec/components/bindings/index.js +1 -0
  1453. package/dist/domain/spec/components/bindings/read-binding.d.ts +13 -0
  1454. package/dist/domain/spec/components/bindings/read-binding.js +1 -0
  1455. package/dist/domain/spec/components/bindings/write-binding.d.ts +32 -0
  1456. package/dist/domain/spec/components/bindings/write-binding.js +1 -0
  1457. package/dist/domain/spec/components/component-entry.d.ts +90 -0
  1458. package/dist/domain/spec/components/component-entry.js +1 -0
  1459. package/dist/domain/spec/components/component-filter.d.ts +54 -0
  1460. package/dist/domain/spec/components/component-filter.js +1 -0
  1461. package/dist/domain/spec/components/component-filters.d.ts +10 -0
  1462. package/dist/domain/spec/components/component-filters.js +1 -0
  1463. package/dist/domain/spec/components/components.d.ts +4 -0
  1464. package/dist/domain/spec/components/components.js +1 -0
  1465. package/dist/domain/spec/components/index.d.ts +6 -0
  1466. package/dist/domain/spec/components/index.js +1 -0
  1467. package/dist/domain/spec/components/sdk-code-ref.d.ts +9 -0
  1468. package/dist/domain/spec/enhanced-json/enhanced-json-value.d.ts +30 -0
  1469. package/dist/domain/spec/enhanced-json/enhanced-json-value.js +1 -0
  1470. package/dist/domain/spec/enhanced-json/index.d.ts +1 -0
  1471. package/dist/domain/spec/enhanced-json/index.js +1 -0
  1472. package/dist/domain/spec/expressions/expression.d.ts +49 -0
  1473. package/dist/domain/spec/expressions/expression.js +1 -0
  1474. package/dist/domain/spec/expressions/expressions.d.ts +27 -0
  1475. package/dist/domain/spec/expressions/expressions.js +1 -0
  1476. package/dist/domain/spec/expressions/index.d.ts +5 -0
  1477. package/dist/domain/spec/expressions/index.js +1 -0
  1478. package/dist/domain/spec/expressions/memo-eval-plan.d.ts +70 -0
  1479. package/dist/domain/spec/expressions/memo-eval-plan.js +1 -0
  1480. package/dist/domain/spec/expressions/relation-expression-params.d.ts +11 -0
  1481. package/dist/domain/spec/expressions/relation-expression-params.js +1 -0
  1482. package/dist/domain/spec/expressions/sdk-expression-implementation.d.ts +24 -0
  1483. package/dist/domain/spec/index.d.ts +9 -0
  1484. package/dist/domain/spec/index.js +1 -0
  1485. package/dist/domain/spec/invariants/index.d.ts +2 -0
  1486. package/dist/domain/spec/invariants/index.js +1 -0
  1487. package/dist/domain/spec/invariants/invariant.d.ts +24 -0
  1488. package/dist/domain/spec/invariants/invariant.js +1 -0
  1489. package/dist/domain/spec/invariants/invariants.d.ts +14 -0
  1490. package/dist/domain/spec/invariants/invariants.js +1 -0
  1491. package/dist/domain/spec/json-schema.d.ts +52 -0
  1492. package/dist/domain/spec/json-schema.js +1 -0
  1493. package/dist/domain/spec/markers/index.d.ts +3 -0
  1494. package/dist/domain/spec/markers/index.js +1 -0
  1495. package/dist/domain/spec/markers/msg-marker.d.ts +28 -0
  1496. package/dist/domain/spec/markers/msg-marker.js +1 -0
  1497. package/dist/domain/spec/model/aliases.d.ts +9 -0
  1498. package/dist/domain/spec/model/aliases.js +1 -0
  1499. package/dist/domain/spec/model/common-types.d.ts +15 -0
  1500. package/dist/domain/spec/model/common-types.js +1 -0
  1501. package/dist/domain/spec/model/defaults.d.ts +33 -0
  1502. package/dist/domain/spec/model/defaults.js +1 -0
  1503. package/dist/domain/spec/model/entity-types.d.ts +8 -0
  1504. package/dist/domain/spec/model/entity-types.js +1 -0
  1505. package/dist/domain/spec/model/index.d.ts +7 -0
  1506. package/dist/domain/spec/model/index.js +1 -0
  1507. package/dist/domain/spec/model/model-version-key.d.ts +3 -0
  1508. package/dist/domain/spec/model/model-version-key.js +1 -0
  1509. package/dist/domain/spec/model/names/action-name.d.ts +7 -0
  1510. package/dist/domain/spec/model/names/action-name.js +1 -0
  1511. package/dist/domain/spec/model/names/alias-name.d.ts +7 -0
  1512. package/dist/domain/spec/model/names/alias-name.js +1 -0
  1513. package/dist/domain/spec/model/names/entity-or-alias-name.d.ts +8 -0
  1514. package/dist/domain/spec/model/names/entity-or-alias-name.js +1 -0
  1515. package/dist/domain/spec/model/names/entity-type-name.d.ts +8 -0
  1516. package/dist/domain/spec/model/names/entity-type-name.js +1 -0
  1517. package/dist/domain/spec/model/names/expression-name.d.ts +6 -0
  1518. package/dist/domain/spec/model/names/expression-name.js +1 -0
  1519. package/dist/domain/spec/model/names/index.d.ts +9 -0
  1520. package/dist/domain/spec/model/names/index.js +1 -0
  1521. package/dist/domain/spec/model/names/instance-name.d.ts +7 -0
  1522. package/dist/domain/spec/model/names/instance-name.js +1 -0
  1523. package/dist/domain/spec/model/names/invariant-name.d.ts +3 -0
  1524. package/dist/domain/spec/model/names/invariant-name.js +1 -0
  1525. package/dist/domain/spec/model/names/shape-property-name.d.ts +11 -0
  1526. package/dist/domain/spec/model/names/shape-property-name.js +1 -0
  1527. package/dist/domain/spec/model/names/violation-type-name.d.ts +3 -0
  1528. package/dist/domain/spec/model/names/violation-type-name.js +1 -0
  1529. package/dist/domain/spec/model/presets.d.ts +30 -0
  1530. package/dist/domain/spec/model/presets.js +1 -0
  1531. package/dist/domain/spec/sections/actions.d.ts +23 -0
  1532. package/dist/domain/spec/sections/actions.js +1 -0
  1533. package/dist/domain/spec/sections/app-metadata.d.ts +18 -0
  1534. package/dist/domain/spec/sections/app-metadata.js +1 -0
  1535. package/dist/domain/spec/sections/application-version.d.ts +7 -0
  1536. package/dist/domain/spec/sections/application-version.js +1 -0
  1537. package/dist/domain/spec/sections/data-spec/chunks.d.ts +23 -0
  1538. package/dist/domain/spec/sections/data-spec/chunks.js +1 -0
  1539. package/dist/domain/spec/sections/data-spec/custom-data-spec-entry.d.ts +16 -0
  1540. package/dist/domain/spec/sections/data-spec/custom-data-spec-entry.js +1 -0
  1541. package/dist/domain/spec/sections/data-spec/data-entry-key.d.ts +9 -0
  1542. package/dist/domain/spec/sections/data-spec/data-entry-key.js +1 -0
  1543. package/dist/domain/spec/sections/data-spec/index.d.ts +5 -0
  1544. package/dist/domain/spec/sections/data-spec/index.js +1 -0
  1545. package/dist/domain/spec/sections/data-spec/parsed-data-spec-entries.d.ts +10 -0
  1546. package/dist/domain/spec/sections/data-spec/parsed-data-spec-entries.js +1 -0
  1547. package/dist/domain/spec/sections/data-spec/swatch-data-spec-entry.d.ts +14 -0
  1548. package/dist/domain/spec/sections/data-spec/swatch-data-spec-entry.js +1 -0
  1549. package/dist/domain/spec/sections/index.d.ts +9 -0
  1550. package/dist/domain/spec/sections/index.js +1 -0
  1551. package/dist/domain/spec/sections/infra/acl.d.ts +12 -0
  1552. package/dist/domain/spec/sections/infra/acl.js +1 -0
  1553. package/dist/domain/spec/sections/infra/index.d.ts +3 -0
  1554. package/dist/domain/spec/sections/infra/index.js +1 -0
  1555. package/dist/domain/spec/sections/infra/resource-entry.d.ts +46 -0
  1556. package/dist/domain/spec/sections/infra/resource-entry.js +1 -0
  1557. package/dist/domain/spec/sections/infra/resources-config.d.ts +10 -0
  1558. package/dist/domain/spec/sections/infra/resources-config.js +1 -0
  1559. package/dist/domain/spec/sections/state-value.d.ts +7 -0
  1560. package/dist/domain/spec/sections/state-value.js +1 -0
  1561. package/dist/domain/spec/sections/theme.d.ts +10 -0
  1562. package/dist/domain/spec/sections/theme.js +1 -0
  1563. package/dist/domain/spec/sections/transformers.d.ts +15 -0
  1564. package/dist/domain/spec/sections/transformers.js +1 -0
  1565. package/dist/domain/spec/sections/ui.d.ts +12 -0
  1566. package/dist/domain/spec/sections/ui.js +1 -0
  1567. package/dist/domain/system-components/admin-sidebar.d.ts +1 -1
  1568. package/dist/domain/system-components/admin-sidebar.js +1 -1
  1569. package/dist/domain/system-components/angle-dimension.js +1 -1
  1570. package/dist/domain/system-components/application-config.d.ts +3 -3
  1571. package/dist/domain/system-components/application-config.js +1 -1
  1572. package/dist/domain/system-components/attribute-selection.js +1 -1
  1573. package/dist/domain/system-components/bounding-box-component.d.ts +1 -1
  1574. package/dist/domain/system-components/bounding-box-component.js +1 -1
  1575. package/dist/domain/system-components/bounding-sphere-component.d.ts +1 -1
  1576. package/dist/domain/system-components/bounding-sphere-component.js +1 -1
  1577. package/dist/domain/system-components/child-entity-recipes.d.ts +1 -1
  1578. package/dist/domain/system-components/child-entity-recipes.js +1 -1
  1579. package/dist/domain/system-components/child-entity-selection.d.ts +1 -2
  1580. package/dist/domain/system-components/child-entity-selection.js +1 -1
  1581. package/dist/domain/system-components/collision-box-geometry.d.ts +5 -3
  1582. package/dist/domain/system-components/collision-box-geometry.js +1 -1
  1583. package/dist/domain/system-components/collision-geometries.d.ts +1 -1
  1584. package/dist/domain/system-components/collision-geometry.d.ts +5 -3
  1585. package/dist/domain/system-components/collision-geometry.js +1 -1
  1586. package/dist/domain/system-components/collision-point-geometry.d.ts +5 -3
  1587. package/dist/domain/system-components/collision-point-geometry.js +1 -1
  1588. package/dist/domain/system-components/common/index.d.ts +0 -4
  1589. package/dist/domain/system-components/common/index.js +1 -1
  1590. package/dist/domain/system-components/common/material-override-schema.d.ts +2 -2
  1591. package/dist/domain/system-components/common/recipes.d.ts +21 -4
  1592. package/dist/domain/system-components/common/recipes.js +1 -1
  1593. package/dist/domain/system-components/common/scene-entity-control-schema.d.ts +3 -0
  1594. package/dist/domain/system-components/common/scene-entity-control-schema.js +1 -1
  1595. package/dist/domain/system-components/constraint.d.ts +11 -24
  1596. package/dist/domain/system-components/constraint.js +1 -1
  1597. package/dist/domain/system-components/create-blueprint.d.ts +1 -1
  1598. package/dist/domain/system-components/custom-scene-entity.d.ts +1 -1
  1599. package/dist/domain/system-components/custom-scene-entity.js +1 -1
  1600. package/dist/domain/system-components/detail.js +1 -1
  1601. package/dist/domain/system-components/distance-dimension-select.d.ts +1 -1
  1602. package/dist/domain/system-components/distance-dimension-select.js +1 -1
  1603. package/dist/domain/system-components/distance-dimension.d.ts +1 -1
  1604. package/dist/domain/system-components/distance-dimension.js +1 -1
  1605. package/dist/domain/system-components/drag-handle.d.ts +2 -2
  1606. package/dist/domain/system-components/drag-handle.js +1 -1
  1607. package/dist/domain/system-components/fit-entity-orthographic-camera-component.js +1 -1
  1608. package/dist/domain/system-components/fit-entity-perspective-camera-component.js +1 -1
  1609. package/dist/domain/system-components/fit-root-orthographic-camera-component.js +1 -1
  1610. package/dist/domain/system-components/fit-root-perspective-camera-component.js +1 -1
  1611. package/dist/domain/system-components/generic-dimension.d.ts +1 -1
  1612. package/dist/domain/system-components/generic-dimension.js +1 -1
  1613. package/dist/domain/system-components/hidden-entity.js +1 -1
  1614. package/dist/domain/system-components/hotspot-drag-handle.d.ts +2 -3
  1615. package/dist/domain/system-components/hotspot-drag-handle.js +1 -1
  1616. package/dist/domain/system-components/index.d.ts +0 -68
  1617. package/dist/domain/system-components/index.js +1 -1
  1618. package/dist/domain/system-components/material-override-property-transition.js +1 -1
  1619. package/dist/domain/system-components/material-override-transformer.js +1 -1
  1620. package/dist/domain/system-components/material-swatch.js +1 -1
  1621. package/dist/domain/system-components/navigation-page.js +1 -1
  1622. package/dist/domain/system-components/navigation-panel-list.js +1 -1
  1623. package/dist/domain/system-components/phoenix-entity-elements/admin-data-table-sidebar.d.ts +1 -1
  1624. package/dist/domain/system-components/phoenix-layout-elements/admin-connected-resource-page.d.ts +1 -1
  1625. package/dist/domain/system-components/phoenix-layout-elements/admin-data-table-actions.d.ts +1 -1
  1626. package/dist/domain/system-components/phoenix-layout-elements/admin-data-table-page.d.ts +1 -1
  1627. package/dist/domain/system-components/phoenix-layout-elements/assistant-toolbar-button.d.ts +44 -0
  1628. package/dist/domain/system-components/phoenix-layout-elements/assistant-toolbar-button.js +1 -0
  1629. package/dist/domain/system-components/phoenix-layout-elements/index.d.ts +1 -0
  1630. package/dist/domain/system-components/phoenix-layout-elements/index.js +1 -1
  1631. package/dist/domain/system-components/phoenix-layout-elements/phoenix-layout-element.d.ts +2 -1
  1632. package/dist/domain/system-components/phoenix-layout-elements/phoenix-layout-element.js +1 -1
  1633. package/dist/domain/system-components/pivot-point.d.ts +1 -1
  1634. package/dist/domain/system-components/pivot-point.js +1 -1
  1635. package/dist/domain/system-components/price.js +1 -1
  1636. package/dist/domain/system-components/projected-entities.d.ts +1 -1
  1637. package/dist/domain/system-components/projected-entities.js +1 -1
  1638. package/dist/domain/system-components/replace-entity-recipes.d.ts +1 -1
  1639. package/dist/domain/system-components/replace-entity-recipes.js +1 -1
  1640. package/dist/domain/system-components/scene-entity-ambient-light.js +1 -1
  1641. package/dist/domain/system-components/scene-entity-box-object.js +1 -1
  1642. package/dist/domain/system-components/scene-entity-directional-light.js +1 -1
  1643. package/dist/domain/system-components/scene-entity-local-material-override.js +1 -1
  1644. package/dist/domain/system-components/scene-entity-material-override.d.ts +1 -1
  1645. package/dist/domain/system-components/scene-entity-material-override.js +1 -1
  1646. package/dist/domain/system-components/scene-entity-object-clip.js +1 -1
  1647. package/dist/domain/system-components/scene-entity-object-decal.js +1 -1
  1648. package/dist/domain/system-components/scene-entity-object-group.js +1 -1
  1649. package/dist/domain/system-components/scene-entity-object-local-material-override.js +1 -1
  1650. package/dist/domain/system-components/scene-entity-object-material-override.d.ts +1 -1
  1651. package/dist/domain/system-components/scene-entity-object-material-override.js +1 -1
  1652. package/dist/domain/system-components/scene-entity-object-properties.js +1 -1
  1653. package/dist/domain/system-components/scene-entity-object-remote-material-override.js +1 -1
  1654. package/dist/domain/system-components/scene-entity-object-text-decal.d.ts +1 -1
  1655. package/dist/domain/system-components/scene-entity-object-text-decal.js +1 -1
  1656. package/dist/domain/system-components/scene-entity-object-transformer.js +1 -1
  1657. package/dist/domain/system-components/scene-entity-object-transimissive-material-override.d.ts +1 -1
  1658. package/dist/domain/system-components/scene-entity-object-transimissive-material-override.js +1 -1
  1659. package/dist/domain/system-components/scene-entity-object.js +1 -1
  1660. package/dist/domain/system-components/scene-entity-point-light.js +1 -1
  1661. package/dist/domain/system-components/scene-entity-properties.js +1 -1
  1662. package/dist/domain/system-components/scene-entity-rect-area-light.js +1 -1
  1663. package/dist/domain/system-components/scene-entity-remote-material-override.js +1 -1
  1664. package/dist/domain/system-components/scene-entity-remote-object.js +1 -1
  1665. package/dist/domain/system-components/scene-entity-spot-light.js +1 -1
  1666. package/dist/domain/system-components/scene-entity-transimissive-material-override.d.ts +1 -1
  1667. package/dist/domain/system-components/scene-entity-transimissive-material-override.js +1 -1
  1668. package/dist/domain/system-components/sketching-line.d.ts +1 -1
  1669. package/dist/domain/system-components/sketching-line.js +1 -1
  1670. package/dist/domain/system-components/sketching-rectangle.d.ts +1 -1
  1671. package/dist/domain/system-components/sketching-rectangle.js +1 -1
  1672. package/dist/domain/system-components/sketching.d.ts +1 -1
  1673. package/dist/domain/system-components/sketching.js +1 -1
  1674. package/dist/domain/system-components/snap-axis.d.ts +1 -1
  1675. package/dist/domain/system-components/snap-axis.js +1 -1
  1676. package/dist/domain/system-components/snap-edge.d.ts +1 -1
  1677. package/dist/domain/system-components/snap-edge.js +1 -1
  1678. package/dist/domain/system-components/snap-plane.d.ts +1 -1
  1679. package/dist/domain/system-components/snap-plane.js +1 -1
  1680. package/dist/domain/system-components/snap-point.d.ts +1 -1
  1681. package/dist/domain/system-components/snap-point.js +1 -1
  1682. package/dist/domain/system-components/static-orthographic-camera-component.d.ts +1 -1
  1683. package/dist/domain/system-components/static-orthographic-camera-component.js +1 -1
  1684. package/dist/domain/system-components/static-perspective-camera-component.d.ts +1 -1
  1685. package/dist/domain/system-components/static-perspective-camera-component.js +1 -1
  1686. package/dist/domain/system-definitions.js +1 -1
  1687. package/dist/domain/utils/eval-cache.d.ts +2 -3
  1688. package/dist/domain/utils/index.d.ts +2 -0
  1689. package/dist/domain/utils/index.js +1 -0
  1690. package/dist/domain/utils/map-nested-object.d.ts +1 -1
  1691. package/dist/domain/utils/memo-eval.d.ts +2 -4
  1692. package/dist/editor/Editor.d.ts +7 -0
  1693. package/dist/editor/Editor.js +1 -1
  1694. package/dist/editor/domain-editors/DomainSpecContext.js +1 -1
  1695. package/dist/editor/domain-editors/apply-spec-update.d.ts +10 -2
  1696. package/dist/editor/domain-editors/apply-spec-update.js +1 -1
  1697. package/dist/editor/domain-editors/use-implementation-files.d.ts +12 -16
  1698. package/dist/editor/domain-editors/use-implementation-files.js +1 -1
  1699. package/dist/editor/graphql/GraphQLPanel.js +1 -1
  1700. package/dist/editor/mocks/CreateMockYaml.js +2 -2
  1701. package/dist/editor/mocks/EditorMockContext.d.ts +2 -0
  1702. package/dist/editor/mocks/EditorMockContext.js +1 -1
  1703. package/dist/editor/screenshot/ScreenshotHandler.js +1 -1
  1704. package/dist/editor/variants/VariantAnswerFooter.d.ts +17 -0
  1705. package/dist/editor/variants/VariantAnswerFooter.js +1 -0
  1706. package/dist/editor/variants/VariantPreviewHandler.d.ts +6 -0
  1707. package/dist/editor/variants/VariantPreviewHandler.js +1 -0
  1708. package/dist/editor/variants/variant-preview-styles.d.ts +49 -0
  1709. package/dist/editor/variants/variant-preview-styles.js +1 -0
  1710. package/dist/globals/index.d.ts +2 -0
  1711. package/dist/i18n/locales/cs/messages.js +1 -1
  1712. package/dist/i18n/locales/da/messages.js +1 -1
  1713. package/dist/i18n/locales/de/messages.js +1 -1
  1714. package/dist/i18n/locales/de-AT/messages.js +1 -1
  1715. package/dist/i18n/locales/en/messages.js +1 -1
  1716. package/dist/i18n/locales/en-AU/messages.js +1 -1
  1717. package/dist/i18n/locales/en-GB/messages.js +1 -1
  1718. package/dist/i18n/locales/es/messages.js +1 -1
  1719. package/dist/i18n/locales/fr/messages.js +1 -1
  1720. package/dist/i18n/locales/hu/messages.js +1 -1
  1721. package/dist/i18n/locales/it/messages.js +1 -1
  1722. package/dist/i18n/locales/nl/messages.js +1 -1
  1723. package/dist/i18n/locales/pl/messages.js +1 -1
  1724. package/dist/i18n/locales/pt/messages.js +1 -1
  1725. package/dist/i18n/locales/ro/messages.js +1 -1
  1726. package/dist/i18n/locales/sk/messages.js +1 -1
  1727. package/dist/i18n/locales/tr/messages.js +1 -1
  1728. package/dist/legacy/domain-cli/gen/configurator-builder.js +30 -16
  1729. package/dist/legacy/domain-cli/gen/constant-expressions.js +1 -3
  1730. package/dist/legacy/domain-cli/gen/defaults.js +1 -7
  1731. package/dist/legacy/domain-cli/gen/implementation.js +7 -11
  1732. package/dist/legacy/domain-cli/gen/invariants.js +7 -6
  1733. package/dist/legacy/domain-cli/gen/relations.js +1 -1
  1734. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  1735. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  1736. package/dist/legacy/domain-spec/__generated/domain-schema.d.ts +182 -148
  1737. package/dist/legacy/domain-spec/spec/domain-spec.js +1 -1
  1738. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/claude-md.d.ts +1 -1
  1739. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/cursor-rules.d.ts +1 -1
  1740. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.d.ts +1 -1
  1741. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.js +13 -0
  1742. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/domain-index.js +17 -15
  1743. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/env-example.d.ts +1 -1
  1744. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/env-example.js +4 -0
  1745. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-admin.js +18 -18
  1746. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-configurator.js +16 -15
  1747. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-admin.js +24 -24
  1748. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-configurator.js +16 -15
  1749. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/generator-shared.d.ts +7 -2
  1750. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/generator-shared.js +8 -12
  1751. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/index.d.ts +1 -1
  1752. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/index.js +1 -1
  1753. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/webhook-builders.js +7 -7
  1754. package/dist/legacy/phoenix-cli/services/webhook-service/transport.js +1 -1
  1755. package/dist/legacy/phoenix-cli/services/webhook-service/tunnel.d.ts +1 -0
  1756. package/dist/legacy/phoenix-cli/services/webhook-service/tunnel.js +1 -1
  1757. package/dist/legacy/webhook-cli/lambda-local/index.js +1 -1
  1758. package/dist/phoenix/application-spec/application-spec-builder.d.ts +0 -2
  1759. package/dist/phoenix/application-spec/application-spec-builder.js +1 -1
  1760. package/dist/phoenix/application-spec/generate-application-spec-project.d.ts +1 -2
  1761. package/dist/phoenix/application-spec/generate-application-spec-project.js +2 -2
  1762. package/dist/phoenix/application-spec/generate-application-spec-story.js +2 -2
  1763. package/dist/phoenix/application-spec/generate-project-files.d.ts +1 -2
  1764. package/dist/phoenix/application-spec/index.d.ts +1 -0
  1765. package/dist/phoenix/application-spec/index.js +1 -1
  1766. package/dist/phoenix/application-spec/project-files.js +1 -1
  1767. package/dist/phoenix/application-spec/resolve-deployment-data.d.ts +15 -3
  1768. package/dist/phoenix/application-spec/resolve-deployment-data.js +2 -2
  1769. package/dist/phoenix/bin.d.ts +2 -0
  1770. package/dist/phoenix/bin.js +2 -0
  1771. package/dist/phoenix/check-configs/built-in-eslint-config.d.ts +9 -0
  1772. package/dist/phoenix/check-configs/built-in-eslint-config.js +1 -0
  1773. package/dist/phoenix/check-configs/eslint-config.d.ts +10 -0
  1774. package/dist/phoenix/check-configs/eslint-config.js +1 -0
  1775. package/dist/phoenix/check-configs/index.d.ts +8 -0
  1776. package/dist/phoenix/check-configs/index.js +1 -0
  1777. package/dist/phoenix/check-configs/typescript-project.d.ts +5 -0
  1778. package/dist/phoenix/check-configs/typescript-project.js +1 -0
  1779. package/dist/phoenix/cli.d.ts +0 -1
  1780. package/dist/phoenix/cli.js +1 -2
  1781. package/dist/phoenix/commands/activate-deployment.js +1 -1
  1782. package/dist/phoenix/commands/build.d.ts +5 -0
  1783. package/dist/phoenix/commands/build.js +1 -1
  1784. package/dist/phoenix/commands/changelog.js +1 -1
  1785. package/dist/phoenix/commands/check.js +1 -1
  1786. package/dist/phoenix/commands/clean.js +1 -1
  1787. package/dist/phoenix/commands/cleanup-environment.js +2 -2
  1788. package/dist/phoenix/commands/create-environment.js +1 -1
  1789. package/dist/phoenix/commands/data.js +1 -1
  1790. package/dist/phoenix/commands/deploy.js +2 -2
  1791. package/dist/phoenix/commands/deployment-build-envs-command.js +1 -1
  1792. package/dist/phoenix/commands/deps/deps.d.ts +73 -0
  1793. package/dist/phoenix/commands/deps/deps.js +3 -0
  1794. package/dist/phoenix/commands/deps/index.d.ts +1 -0
  1795. package/dist/phoenix/commands/deps/index.js +1 -0
  1796. package/dist/phoenix/commands/deps/sdk-manifest.d.ts +12 -0
  1797. package/dist/phoenix/commands/deps/sdk-manifest.js +1 -0
  1798. package/dist/phoenix/commands/dev.js +4 -5
  1799. package/dist/phoenix/commands/docs.js +1 -1
  1800. package/dist/phoenix/commands/feedback.d.ts +2 -1
  1801. package/dist/phoenix/commands/feedback.js +1 -1
  1802. package/dist/phoenix/commands/finish-deployment-command.js +1 -1
  1803. package/dist/phoenix/commands/fix.js +1 -1
  1804. package/dist/phoenix/commands/index.d.ts +2 -0
  1805. package/dist/phoenix/commands/index.js +1 -1
  1806. package/dist/phoenix/commands/init.d.ts +17 -5
  1807. package/dist/phoenix/commands/init.js +1 -1
  1808. package/dist/phoenix/commands/inspect-assets.js +1 -1
  1809. package/dist/phoenix/commands/link.js +1 -1
  1810. package/dist/phoenix/commands/list-environments.js +1 -1
  1811. package/dist/phoenix/commands/login.d.ts +28 -7
  1812. package/dist/phoenix/commands/login.js +2 -2
  1813. package/dist/phoenix/commands/prepare-deployment-command.js +2 -2
  1814. package/dist/phoenix/commands/prepare-local-environment-command.js +1 -1
  1815. package/dist/phoenix/commands/prettier.js +1 -1
  1816. package/dist/phoenix/commands/register-deployment.js +1 -1
  1817. package/dist/phoenix/commands/scene.js +1 -1
  1818. package/dist/phoenix/commands/screenshot.js +1 -1
  1819. package/dist/phoenix/commands/state.js +1 -1
  1820. package/dist/phoenix/commands/story-build.js +3 -3
  1821. package/dist/phoenix/commands/story-create.js +1 -1
  1822. package/dist/phoenix/commands/story-dev.js +2 -2
  1823. package/dist/phoenix/commands/sync.js +1 -1
  1824. package/dist/phoenix/commands/unlink.js +1 -1
  1825. package/dist/phoenix/commands/variants.d.ts +35 -0
  1826. package/dist/phoenix/commands/variants.js +1 -0
  1827. package/dist/phoenix/editor-server/commands-router.d.ts +68 -1
  1828. package/dist/phoenix/editor-server/commands-router.js +1 -1
  1829. package/dist/phoenix/editor-server/editor-router.d.ts +65 -0
  1830. package/dist/phoenix/editor-server/editor-server.d.ts +3 -14
  1831. package/dist/phoenix/editor-server/editor-server.js +1 -1
  1832. package/dist/phoenix/editor-server/protocol.d.ts +1 -0
  1833. package/dist/phoenix/editor-server/spec-router.js +1 -1
  1834. package/dist/phoenix/editor-server/trpc.d.ts +2 -9
  1835. package/dist/phoenix/lingui/index.d.ts +1 -0
  1836. package/dist/phoenix/lingui/index.js +1 -0
  1837. package/dist/phoenix/lingui/lingui.d.ts +18 -0
  1838. package/dist/phoenix/lingui/lingui.js +1 -0
  1839. package/dist/phoenix/scripts/build-admin.js +1 -1
  1840. package/dist/phoenix/services/application-spec-project-watcher.d.ts +26 -10
  1841. package/dist/phoenix/services/application-spec-project-watcher.js +3 -3
  1842. package/dist/phoenix/services/cli-credentials.d.ts +3 -0
  1843. package/dist/phoenix/services/cli-credentials.js +1 -1
  1844. package/dist/phoenix/services/cli-exit.d.ts +5 -0
  1845. package/dist/phoenix/services/cli-exit.js +1 -0
  1846. package/dist/phoenix/services/deployment/deployment-preparation-service.d.ts +28 -0
  1847. package/dist/phoenix/services/deployment/deployment-preparation-service.js +1 -0
  1848. package/dist/phoenix/services/deployment/generated-env-markers.d.ts +8 -0
  1849. package/dist/phoenix/services/deployment/generated-env-markers.js +1 -0
  1850. package/dist/phoenix/services/deployment/index.d.ts +2 -0
  1851. package/dist/phoenix/services/deployment/index.js +1 -0
  1852. package/dist/phoenix/services/index.d.ts +9 -0
  1853. package/dist/phoenix/services/index.js +1 -1
  1854. package/dist/phoenix/services/lingui-watcher.js +1 -1
  1855. package/dist/phoenix/services/phoenix-store.d.ts +51 -0
  1856. package/dist/phoenix/services/phoenix-store.js +1 -0
  1857. package/dist/phoenix/services/phx-banner-plugin.d.ts +32 -0
  1858. package/dist/phoenix/services/phx-banner-plugin.js +1 -0
  1859. package/dist/phoenix/services/phx-licenses-plugin.d.ts +55 -0
  1860. package/dist/phoenix/services/phx-licenses-plugin.js +8 -0
  1861. package/dist/phoenix/services/phx-variant-previews-plugin.d.ts +9 -0
  1862. package/dist/phoenix/services/phx-variant-previews-plugin.js +1 -0
  1863. package/dist/phoenix/services/prepare-development-environment.js +1 -1
  1864. package/dist/phoenix/services/session/editor-server-handle.d.ts +5 -0
  1865. package/dist/phoenix/services/session/editor-server-handle.js +1 -0
  1866. package/dist/phoenix/services/session/index.d.ts +2 -0
  1867. package/dist/phoenix/services/session/index.js +1 -0
  1868. package/dist/phoenix/services/session/phoenix-application.d.ts +82 -0
  1869. package/dist/phoenix/services/session/phoenix-application.js +2 -0
  1870. package/dist/phoenix/services/source-archive.d.ts +1 -0
  1871. package/dist/phoenix/services/source-archive.js +1 -1
  1872. package/dist/phoenix/services/swc.js +1 -1
  1873. package/dist/phoenix/services/telemetry/amplitude-telemetry-transport.d.ts +9 -0
  1874. package/dist/phoenix/services/telemetry/amplitude-telemetry-transport.js +1 -0
  1875. package/dist/phoenix/services/telemetry/index.d.ts +3 -0
  1876. package/dist/phoenix/services/telemetry/index.js +1 -0
  1877. package/dist/phoenix/services/telemetry/telemetry-client.d.ts +25 -0
  1878. package/dist/phoenix/services/telemetry/telemetry-client.js +1 -0
  1879. package/dist/phoenix/services/telemetry/telemetry-command.d.ts +2 -0
  1880. package/dist/phoenix/services/telemetry/telemetry-command.js +1 -0
  1881. package/dist/phoenix/services/telemetry/telemetry-event.d.ts +44 -0
  1882. package/dist/phoenix/services/telemetry/telemetry-event.js +1 -0
  1883. package/dist/phoenix/services/telemetry/telemetry-state.d.ts +25 -0
  1884. package/dist/phoenix/services/telemetry/telemetry-state.js +2 -0
  1885. package/dist/phoenix/services/variant-file-session.d.ts +36 -0
  1886. package/dist/phoenix/services/variant-file-session.js +1 -0
  1887. package/dist/phoenix/services/variant-preview-service.d.ts +80 -0
  1888. package/dist/phoenix/services/variant-preview-service.js +1 -0
  1889. package/dist/phoenix/services/vite-config.d.ts +2 -0
  1890. package/dist/phoenix/services/vite-config.js +1 -1
  1891. package/dist/phoenix/services/webhook-service/transport.js +1 -1
  1892. package/dist/phoenix/services/webhook-service/tunnel.d.ts +1 -0
  1893. package/dist/phoenix/services/webhook-service/tunnel.js +1 -1
  1894. package/dist/phoenix/utils/git/index.d.ts +1 -0
  1895. package/dist/phoenix/utils/git/index.js +1 -0
  1896. package/dist/phoenix/utils/git/is-inside-git-repository.d.ts +6 -0
  1897. package/dist/phoenix/utils/git/is-inside-git-repository.js +1 -0
  1898. package/dist/phoenix/utils/index.d.ts +6 -2
  1899. package/dist/phoenix/utils/index.js +1 -1
  1900. package/dist/phoenix/utils/node-version/index.d.ts +1 -0
  1901. package/dist/phoenix/utils/node-version/index.js +1 -0
  1902. package/dist/phoenix/utils/node-version/supported-node-version.d.ts +12 -0
  1903. package/dist/phoenix/utils/node-version/supported-node-version.js +4 -0
  1904. package/dist/phoenix/utils/package-info.d.ts +0 -9
  1905. package/dist/phoenix/utils/package-info.js +1 -1
  1906. package/dist/phoenix/utils/package-manager/index.d.ts +2 -0
  1907. package/dist/phoenix/utils/package-manager/index.js +1 -0
  1908. package/dist/phoenix/utils/package-manager/package-manager-commands.d.ts +19 -0
  1909. package/dist/phoenix/utils/package-manager/package-manager-commands.js +1 -0
  1910. package/dist/phoenix/utils/package-manager/pnpm-project.d.ts +9 -0
  1911. package/dist/phoenix/utils/package-manager/pnpm-project.js +1 -0
  1912. package/dist/phoenix/utils/read-git-commit.d.ts +14 -0
  1913. package/dist/phoenix/utils/read-git-commit.js +1 -0
  1914. package/dist/phoenix/utils/run-command.d.ts +11 -0
  1915. package/dist/phoenix/utils/run-command.js +1 -1
  1916. package/dist/phoenix/utils/sdk-tool/index.d.ts +1 -0
  1917. package/dist/phoenix/utils/sdk-tool/index.js +1 -0
  1918. package/dist/phoenix/utils/sdk-tool/resolve-sdk-tool-bin.d.ts +15 -0
  1919. package/dist/phoenix/utils/sdk-tool/resolve-sdk-tool-bin.js +1 -0
  1920. package/dist/react-sdk/application-runtime/common-services/analytics/analytics-service.d.ts +3 -3
  1921. package/dist/react-sdk/application-runtime/common-services/analytics/domain-controls-analytics.d.ts +21 -21
  1922. package/dist/react-sdk/application-runtime/common-services/analytics/frontend-analytics.d.ts +52 -0
  1923. package/dist/react-sdk/application-runtime/common-services/analytics/frontend-analytics.js +1 -0
  1924. package/dist/react-sdk/application-runtime/common-services/analytics/index.d.ts +1 -0
  1925. package/dist/react-sdk/application-runtime/common-services/analytics/index.js +1 -1
  1926. package/dist/react-sdk/application-runtime/common-services/initialize.d.ts +2 -2
  1927. package/dist/react-sdk/application-runtime/domain-application-context/chat-system.d.ts +1 -1
  1928. package/dist/react-sdk/application-runtime/hooks/data/use-published-data.d.ts +1 -1
  1929. package/dist/react-sdk/application-runtime/hooks/index.d.ts +2 -0
  1930. package/dist/react-sdk/application-runtime/hooks/index.js +1 -1
  1931. package/dist/react-sdk/application-runtime/hooks/loading/index.d.ts +5 -0
  1932. package/dist/react-sdk/application-runtime/hooks/loading/index.js +1 -0
  1933. package/dist/react-sdk/application-runtime/hooks/loading/loader-host-context.d.ts +11 -0
  1934. package/dist/react-sdk/application-runtime/hooks/loading/loader-host-context.js +1 -0
  1935. package/dist/react-sdk/application-runtime/hooks/loading/use-is-awaiting-loading-phase.d.ts +8 -0
  1936. package/dist/react-sdk/application-runtime/hooks/loading/use-is-awaiting-loading-phase.js +1 -0
  1937. package/dist/react-sdk/application-runtime/hooks/loading/use-is-loader-hosted.d.ts +7 -0
  1938. package/dist/react-sdk/application-runtime/hooks/loading/use-is-loader-hosted.js +1 -0
  1939. package/dist/react-sdk/application-runtime/hooks/loading/use-loading-actions.d.ts +9 -0
  1940. package/dist/react-sdk/application-runtime/hooks/loading/use-loading-actions.js +1 -0
  1941. package/dist/react-sdk/application-runtime/hooks/loading/use-loading-application.d.ts +24 -0
  1942. package/dist/react-sdk/application-runtime/hooks/loading/use-loading-application.js +1 -0
  1943. package/dist/react-sdk/application-runtime/hooks/responsive/index.d.ts +3 -0
  1944. package/dist/react-sdk/application-runtime/hooks/responsive/index.js +1 -0
  1945. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-actions.d.ts +9 -0
  1946. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-actions.js +1 -0
  1947. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-application.d.ts +26 -0
  1948. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-application.js +1 -0
  1949. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-state.d.ts +10 -0
  1950. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-state.js +1 -0
  1951. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-store.d.ts +24 -0
  1952. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-store.js +1 -0
  1953. package/dist/react-sdk/application-runtime/hooks/use-access-service.d.ts +7 -0
  1954. package/dist/react-sdk/application-runtime/hooks/use-access-service.js +1 -1
  1955. package/dist/react-sdk/application-runtime/hooks/use-domain-application-props.d.ts +5 -2
  1956. package/dist/react-sdk/application-runtime/hooks/use-phoenix-element-slots.d.ts +2 -1
  1957. package/dist/react-sdk/application-runtime/hooks/use-spec.d.ts +1 -1
  1958. package/dist/react-sdk/application-runtime/hooks/use-web-component-readonly-sync.d.ts +4 -11
  1959. package/dist/react-sdk/application-runtime/hooks/use-web-component-readonly-sync.js +1 -1
  1960. package/dist/react-sdk/application-runtime/hooks/use-web-component.d.ts +5 -0
  1961. package/dist/react-sdk/application-runtime/hooks/use-web-component.js +1 -1
  1962. package/dist/react-sdk/application-runtime/host-properties/actions.d.ts +15 -0
  1963. package/dist/react-sdk/application-runtime/host-properties/actions.js +1 -0
  1964. package/dist/react-sdk/application-runtime/host-properties/connect-host-properties.d.ts +30 -0
  1965. package/dist/react-sdk/application-runtime/host-properties/connect-host-properties.js +1 -0
  1966. package/dist/react-sdk/application-runtime/host-properties/domain-host-properties.d.ts +7 -0
  1967. package/dist/react-sdk/application-runtime/host-properties/domain-host-properties.js +1 -0
  1968. package/dist/react-sdk/application-runtime/host-properties/host-property-descriptors.d.ts +21 -0
  1969. package/dist/react-sdk/application-runtime/host-properties/host-property-descriptors.js +1 -0
  1970. package/dist/react-sdk/application-runtime/host-properties/host-property-scopes.d.ts +42 -0
  1971. package/dist/react-sdk/application-runtime/host-properties/host-property-scopes.js +1 -0
  1972. package/dist/react-sdk/application-runtime/host-properties/index.d.ts +8 -0
  1973. package/dist/react-sdk/application-runtime/host-properties/index.js +1 -0
  1974. package/dist/react-sdk/application-runtime/host-properties/initialize.d.ts +7 -0
  1975. package/dist/react-sdk/application-runtime/host-properties/initialize.js +1 -0
  1976. package/dist/react-sdk/application-runtime/host-properties/selectors.d.ts +54 -0
  1977. package/dist/react-sdk/application-runtime/host-properties/selectors.js +1 -0
  1978. package/dist/react-sdk/application-runtime/host-properties/types.d.ts +18 -0
  1979. package/dist/react-sdk/application-runtime/host-properties/types.js +1 -0
  1980. package/dist/react-sdk/application-runtime/index.d.ts +3 -0
  1981. package/dist/react-sdk/application-runtime/integration/initialize.d.ts +7 -6
  1982. package/dist/react-sdk/application-runtime/integration/initialize.js +1 -1
  1983. package/dist/react-sdk/application-runtime/integration/selectors.d.ts +11 -2
  1984. package/dist/react-sdk/application-runtime/integration/selectors.js +1 -1
  1985. package/dist/react-sdk/application-runtime/integration/types.d.ts +5 -2
  1986. package/dist/react-sdk/application-runtime/loading/actions.d.ts +45 -0
  1987. package/dist/react-sdk/application-runtime/loading/actions.js +1 -0
  1988. package/dist/react-sdk/application-runtime/loading/index.d.ts +4 -0
  1989. package/dist/react-sdk/application-runtime/loading/index.js +1 -0
  1990. package/dist/react-sdk/application-runtime/loading/initialize.d.ts +3 -0
  1991. package/dist/react-sdk/application-runtime/loading/initialize.js +1 -0
  1992. package/dist/react-sdk/application-runtime/loading/selectors.d.ts +18 -0
  1993. package/dist/react-sdk/application-runtime/loading/selectors.js +1 -0
  1994. package/dist/react-sdk/application-runtime/loading/types.d.ts +59 -0
  1995. package/dist/react-sdk/application-runtime/loading/types.js +1 -0
  1996. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.d.ts +1 -1
  1997. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
  1998. package/dist/react-sdk/application-runtime/provider/ApplicationRuntime.d.ts +6 -0
  1999. package/dist/react-sdk/application-runtime/provider/ApplicationRuntime.js +1 -1
  2000. package/dist/react-sdk/application-runtime/provider/ApplicationType.d.ts +7 -0
  2001. package/dist/react-sdk/application-runtime/provider/ApplicationType.js +1 -1
  2002. package/dist/react-sdk/application-runtime/responsive/actions.d.ts +47 -0
  2003. package/dist/react-sdk/application-runtime/responsive/actions.js +1 -0
  2004. package/dist/react-sdk/application-runtime/responsive/index.d.ts +4 -0
  2005. package/dist/react-sdk/application-runtime/responsive/index.js +1 -0
  2006. package/dist/react-sdk/application-runtime/responsive/initialize.d.ts +3 -0
  2007. package/dist/react-sdk/application-runtime/responsive/initialize.js +1 -0
  2008. package/dist/react-sdk/application-runtime/responsive/selectors.d.ts +20 -0
  2009. package/dist/react-sdk/application-runtime/responsive/selectors.js +1 -0
  2010. package/dist/react-sdk/application-runtime/responsive/types.d.ts +104 -0
  2011. package/dist/react-sdk/application-runtime/responsive/types.js +1 -0
  2012. package/dist/react-sdk/application-runtime/routing/access-service.d.ts +1 -0
  2013. package/dist/react-sdk/application-runtime/routing/routing-service.d.ts +34 -2
  2014. package/dist/react-sdk/application-runtime/routing/routing-service.js +1 -1
  2015. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +382 -50
  2016. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.js +1 -1
  2017. package/dist/react-sdk/configurator-routing/ConfiguratorRoutingProvider.d.ts +11 -0
  2018. package/dist/react-sdk/configurator-routing/ConfiguratorRoutingProvider.js +1 -0
  2019. package/dist/react-sdk/configurator-routing/OnGoToIndexHandler.d.ts +9 -0
  2020. package/dist/react-sdk/configurator-routing/OnGoToIndexHandler.js +1 -0
  2021. package/dist/react-sdk/configurator-routing/index.d.ts +3 -0
  2022. package/dist/react-sdk/configurator-routing/index.js +1 -0
  2023. package/dist/react-sdk/configurator-routing/use-power-routing-lifecycle.d.ts +11 -0
  2024. package/dist/react-sdk/configurator-routing/use-power-routing-lifecycle.js +1 -0
  2025. package/dist/react-sdk/configurator-ui-elements/ConfiguratorUiElementHost.d.ts +7 -0
  2026. package/dist/react-sdk/configurator-ui-elements/ConfiguratorUiElementHost.js +1 -0
  2027. package/dist/react-sdk/configurator-ui-elements/ErrorFallbackElement.d.ts +14 -0
  2028. package/dist/react-sdk/configurator-ui-elements/ErrorFallbackElement.js +1 -0
  2029. package/dist/react-sdk/configurator-ui-elements/ErrorFallbackPropsProvider.d.ts +18 -0
  2030. package/dist/react-sdk/configurator-ui-elements/ErrorFallbackPropsProvider.js +1 -0
  2031. package/dist/react-sdk/configurator-ui-elements/PlainErrorFallback.d.ts +5 -0
  2032. package/dist/react-sdk/configurator-ui-elements/PlainErrorFallback.js +1 -0
  2033. package/dist/react-sdk/configurator-ui-elements/configurator-ui-element.d.ts +17 -0
  2034. package/dist/react-sdk/configurator-ui-elements/configurator-ui-element.js +1 -0
  2035. package/dist/react-sdk/configurator-ui-elements/create-configurator-ui-element.d.ts +5 -0
  2036. package/dist/react-sdk/configurator-ui-elements/create-configurator-ui-element.js +1 -0
  2037. package/dist/react-sdk/configurator-ui-elements/index.d.ts +6 -0
  2038. package/dist/react-sdk/configurator-ui-elements/index.js +1 -0
  2039. package/dist/react-sdk/domain-application-context/BackendDataProvider.js +1 -1
  2040. package/dist/react-sdk/domain-application-context/ConfigurationPersistSystemFailureHandler.js +1 -1
  2041. package/dist/react-sdk/domain-application-context/DomainLifecycleBoundary.js +1 -1
  2042. package/dist/react-sdk/domain-application-context/FrontendDataProvider.js +1 -1
  2043. package/dist/react-sdk/domain-application-context/OnPresetLoadedHandler.js +1 -0
  2044. package/dist/react-sdk/domain-application-context/PublishedDataProvider.js +1 -1
  2045. package/dist/react-sdk/domain-application-context/chat-hooks.d.ts +4 -0
  2046. package/dist/react-sdk/domain-application-context/chat-hooks.js +1 -0
  2047. package/dist/react-sdk/domain-application-context/index.d.ts +2 -0
  2048. package/dist/react-sdk/domain-application-context/index.js +1 -1
  2049. package/dist/react-sdk/domain-context/common-hooks/index.d.ts +9 -0
  2050. package/dist/react-sdk/domain-context/common-hooks/index.js +1 -0
  2051. package/dist/react-sdk/domain-context/common-hooks/use-configuration-save-state.d.ts +23 -0
  2052. package/dist/react-sdk/domain-context/common-hooks/use-configuration-save-state.js +1 -0
  2053. package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.d.ts +41 -0
  2054. package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.js +1 -0
  2055. package/dist/react-sdk/domain-context/common-hooks/use-domain-context.d.ts +13 -9
  2056. package/dist/react-sdk/domain-context/component-hooks/index.d.ts +1 -0
  2057. package/dist/react-sdk/domain-context/component-hooks/index.js +1 -0
  2058. package/dist/react-sdk/domain-context/component-hooks/use-component.js +1 -1
  2059. package/dist/react-sdk/domain-context/entity-hooks/use-domain-entity-state.js +1 -1
  2060. package/dist/react-sdk/domain-context/entity-hooks/use-entity-price.js +1 -1
  2061. package/dist/react-sdk/domain-context/entity-hooks/use-root-entity-id.js +1 -1
  2062. package/dist/react-sdk/domain-context/entity-hooks/use-root-entity-state.js +1 -1
  2063. package/dist/react-sdk/domain-context/index.d.ts +9 -1
  2064. package/dist/react-sdk/domain-context/index.js +1 -1
  2065. package/dist/react-sdk/domain-context/system-hooks/composition-hooks.js +1 -1
  2066. package/dist/react-sdk/domain-context/system-hooks/dimension-hooks.js +1 -1
  2067. package/dist/react-sdk/domain-context/system-hooks/generate-share-link-hooks.d.ts +8 -0
  2068. package/dist/react-sdk/domain-context/system-hooks/generate-share-link-hooks.js +1 -0
  2069. package/dist/react-sdk/domain-context/system-hooks/hover-hooks.js +1 -1
  2070. package/dist/react-sdk/domain-context/system-hooks/locale-switch-hooks.d.ts +24 -0
  2071. package/dist/react-sdk/domain-context/system-hooks/locale-switch-hooks.js +1 -0
  2072. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.d.ts +11 -0
  2073. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.js +1 -1
  2074. package/dist/react-sdk/domain-context/system-hooks/selection-hooks.js +1 -1
  2075. package/dist/react-sdk/domain-context/system-hooks/share-links-hooks.d.ts +32 -0
  2076. package/dist/react-sdk/domain-context/system-hooks/share-links-hooks.js +1 -0
  2077. package/dist/react-sdk/domain-context/system-hooks/step-navigation-hooks.d.ts +57 -0
  2078. package/dist/react-sdk/domain-context/system-hooks/step-navigation-hooks.js +1 -0
  2079. package/dist/react-sdk/domain-context/system-hooks/tab-navigation-hooks.d.ts +61 -0
  2080. package/dist/react-sdk/domain-context/system-hooks/tab-navigation-hooks.js +1 -0
  2081. package/dist/react-sdk/domain-context/system-hooks/undo-redo-hooks.d.ts +20 -0
  2082. package/dist/react-sdk/domain-context/system-hooks/undo-redo-hooks.js +1 -0
  2083. package/dist/react-sdk/domain-controls/hooks/use-angle-dimension.d.ts +1 -1
  2084. package/dist/react-sdk/elements/PhoenixEntityElement.js +1 -1
  2085. package/dist/react-sdk/elements/PhoenixLayoutElement.js +1 -1
  2086. package/dist/react-sdk/handlers/FinalizeActionRunner.d.ts +13 -0
  2087. package/dist/react-sdk/handlers/FinalizeActionRunner.js +1 -0
  2088. package/dist/react-sdk/handlers/FinalizeActionsHost.d.ts +10 -0
  2089. package/dist/react-sdk/handlers/FinalizeActionsHost.js +1 -0
  2090. package/dist/react-sdk/handlers/FinalizeActionsProvider.d.ts +11 -0
  2091. package/dist/react-sdk/handlers/FinalizeActionsProvider.js +1 -0
  2092. package/dist/react-sdk/handlers/finalize-actions-context.d.ts +6 -0
  2093. package/dist/react-sdk/handlers/finalize-actions-context.js +1 -0
  2094. package/dist/react-sdk/handlers/finalize-actions-store.d.ts +23 -0
  2095. package/dist/react-sdk/handlers/finalize-actions-store.js +1 -0
  2096. package/dist/react-sdk/handlers/index.d.ts +6 -0
  2097. package/dist/react-sdk/handlers/index.js +1 -1
  2098. package/dist/react-sdk/handlers/use-finalize-action.d.ts +32 -0
  2099. package/dist/react-sdk/handlers/use-finalize-action.js +1 -0
  2100. package/dist/react-sdk/handlers/use-finalize-actions.d.ts +53 -0
  2101. package/dist/react-sdk/handlers/use-finalize-actions.js +1 -0
  2102. package/dist/react-sdk/index.d.ts +9 -0
  2103. package/dist/react-sdk/index.js +1 -1
  2104. package/dist/react-sdk/integration/IntegrationSubscription.js +1 -0
  2105. package/dist/react-sdk/integration/index.d.ts +1 -0
  2106. package/dist/react-sdk/integration/index.js +1 -0
  2107. package/dist/react-sdk/lifecycle-providers/ConfiguratorDataProvider.d.ts +8 -0
  2108. package/dist/react-sdk/lifecycle-providers/ConfiguratorDataProvider.js +1 -0
  2109. package/dist/react-sdk/lifecycle-providers/LifecycleProviders.js +1 -0
  2110. package/dist/react-sdk/lifecycle-providers/index.d.ts +2 -0
  2111. package/dist/react-sdk/lifecycle-providers/index.js +1 -0
  2112. package/dist/react-sdk/loading-state/LoaderHost.d.ts +20 -0
  2113. package/dist/react-sdk/loading-state/LoaderHost.js +1 -0
  2114. package/dist/react-sdk/loading-state/built-in-loading-phase.d.ts +9 -0
  2115. package/dist/react-sdk/loading-state/built-in-loading-phase.js +1 -0
  2116. package/dist/react-sdk/loading-state/create-app-loader.d.ts +18 -0
  2117. package/dist/react-sdk/loading-state/create-app-loader.js +1 -0
  2118. package/dist/react-sdk/loading-state/index.d.ts +4 -2
  2119. package/dist/react-sdk/loading-state/index.js +1 -1
  2120. package/dist/react-sdk/loading-state/loading-state-hooks.d.ts +22 -0
  2121. package/dist/react-sdk/loading-state/loading-state-hooks.js +1 -0
  2122. package/dist/react-sdk/notifications/index.d.ts +1 -0
  2123. package/dist/react-sdk/notifications/index.js +1 -0
  2124. package/dist/react-sdk/notifications/snackbar-action-button.d.ts +30 -0
  2125. package/dist/react-sdk/notifications/snackbar-action-button.js +1 -0
  2126. package/dist/react-sdk/page-elements/ConfigurationNotFoundPagePropsProvider.d.ts +17 -0
  2127. package/dist/react-sdk/page-elements/ConfigurationNotFoundPagePropsProvider.js +1 -0
  2128. package/dist/react-sdk/page-elements/ConfiguratorErrorPagePropsProvider.d.ts +17 -0
  2129. package/dist/react-sdk/page-elements/ConfiguratorErrorPagePropsProvider.js +1 -0
  2130. package/dist/react-sdk/page-elements/configurator-error-page-props.d.ts +20 -0
  2131. package/dist/react-sdk/page-elements/configurator-error-page-props.js +1 -0
  2132. package/dist/react-sdk/page-elements/create-configuration-not-found-page.d.ts +15 -0
  2133. package/dist/react-sdk/page-elements/create-configuration-not-found-page.js +1 -0
  2134. package/dist/react-sdk/page-elements/create-configurator-error-page.d.ts +14 -0
  2135. package/dist/react-sdk/page-elements/create-configurator-error-page.js +1 -0
  2136. package/dist/react-sdk/page-elements/create-preset-ui.d.ts +9 -0
  2137. package/dist/react-sdk/page-elements/create-preset-ui.js +1 -0
  2138. package/dist/react-sdk/page-elements/index.d.ts +6 -0
  2139. package/dist/react-sdk/page-elements/index.js +1 -0
  2140. package/dist/react-sdk/preset-selection/PresetSelectionProvider.js +1 -0
  2141. package/dist/react-sdk/preset-selection/index.d.ts +1 -0
  2142. package/dist/react-sdk/preset-selection/index.js +1 -0
  2143. package/dist/react-sdk/provider-slots/ConfiguratorProviderSlotHost.d.ts +11 -0
  2144. package/dist/react-sdk/provider-slots/ConfiguratorProviderSlotHost.js +1 -0
  2145. package/dist/react-sdk/provider-slots/configurator-provider-slot.d.ts +24 -0
  2146. package/dist/react-sdk/provider-slots/configurator-provider-slot.js +1 -0
  2147. package/dist/react-sdk/provider-slots/create-configurator-provider-slot.d.ts +5 -0
  2148. package/dist/react-sdk/provider-slots/create-configurator-provider-slot.js +1 -0
  2149. package/dist/react-sdk/provider-slots/index.d.ts +3 -0
  2150. package/dist/react-sdk/provider-slots/index.js +1 -0
  2151. package/dist/react-sdk/scene-control-elements/AddEntityFabElement.d.ts +36 -0
  2152. package/dist/react-sdk/scene-control-elements/AddEntityFabElement.js +1 -0
  2153. package/dist/react-sdk/scene-control-elements/DeleteEntityFabElement.d.ts +44 -0
  2154. package/dist/react-sdk/scene-control-elements/DeleteEntityFabElement.js +1 -0
  2155. package/dist/react-sdk/scene-control-elements/NavigationHotspotElement.d.ts +38 -0
  2156. package/dist/react-sdk/scene-control-elements/NavigationHotspotElement.js +1 -0
  2157. package/dist/react-sdk/scene-control-elements/SelectionHotspotElement.d.ts +30 -0
  2158. package/dist/react-sdk/scene-control-elements/SelectionHotspotElement.js +1 -0
  2159. package/dist/react-sdk/scene-control-elements/ToolMenuFabElement.d.ts +30 -0
  2160. package/dist/react-sdk/scene-control-elements/ToolMenuFabElement.js +1 -0
  2161. package/dist/react-sdk/scene-control-elements/create-add-entity-fab.d.ts +9 -0
  2162. package/dist/react-sdk/scene-control-elements/create-add-entity-fab.js +1 -0
  2163. package/dist/react-sdk/scene-control-elements/create-delete-entity-fab.d.ts +9 -0
  2164. package/dist/react-sdk/scene-control-elements/create-delete-entity-fab.js +1 -0
  2165. package/dist/react-sdk/scene-control-elements/create-navigation-hotspot.d.ts +10 -0
  2166. package/dist/react-sdk/scene-control-elements/create-navigation-hotspot.js +1 -0
  2167. package/dist/react-sdk/scene-control-elements/create-selection-hotspot.d.ts +9 -0
  2168. package/dist/react-sdk/scene-control-elements/create-selection-hotspot.js +1 -0
  2169. package/dist/react-sdk/scene-control-elements/create-tool-menu-fab.d.ts +9 -0
  2170. package/dist/react-sdk/scene-control-elements/create-tool-menu-fab.js +1 -0
  2171. package/dist/react-sdk/scene-control-elements/index.d.ts +11 -0
  2172. package/dist/react-sdk/scene-control-elements/index.js +1 -0
  2173. package/dist/react-sdk/scene-control-elements/scene-control-tooltip-visibility.d.ts +5 -0
  2174. package/dist/react-sdk/scene-control-elements/scene-control-tooltip-visibility.js +1 -0
  2175. package/dist/react-sdk/session/NotAuthenticatedPage.d.ts +4 -0
  2176. package/dist/react-sdk/session/NotAuthenticatedPage.js +1 -1
  2177. package/dist/react-sdk/session/SessionServiceProvider.d.ts +5 -0
  2178. package/dist/react-sdk/session/SessionServiceProvider.js +1 -1
  2179. package/dist/react-sdk/web-component/create-web-component.js +1 -1
  2180. package/dist/react-sdk/web-component/god-mode/god-mode-registry.d.ts +30 -0
  2181. package/dist/react-sdk/web-component/god-mode/god-mode-registry.js +1 -0
  2182. package/dist/react-sdk/web-component/god-mode/index.d.ts +1 -0
  2183. package/dist/react-sdk/web-component/god-mode/index.js +1 -0
  2184. package/dist/ui-sdk/common/use-viewport-size.d.ts +4 -1
  2185. package/dist/ui-sdk/common/use-viewport-size.js +1 -1
  2186. package/dist/ui-sdk/components/mobile-controls/index.d.ts +1 -1
  2187. package/dist/ui-sdk/components/snackbar/Snackbar.d.ts +24 -3
  2188. package/dist/ui-sdk/components/snackbar/Snackbar.js +1 -1
  2189. package/dist/ui-sdk/icons/__generated/Lightbulb.d.ts +3 -0
  2190. package/dist/ui-sdk/icons/__generated/Lightbulb.js +1 -0
  2191. package/dist/ui-sdk/icons/__generated/Paperclip.d.ts +3 -0
  2192. package/dist/ui-sdk/icons/__generated/Paperclip.js +1 -0
  2193. package/dist/ui-sdk/icons/__generated/XCircle.d.ts +3 -0
  2194. package/dist/ui-sdk/icons/__generated/XCircle.js +1 -0
  2195. package/dist/ui-sdk/icons/__generated/index.d.ts +6 -0
  2196. package/dist/ui-sdk/icons/__generated/index.js +1 -1
  2197. package/dist/ui-sdk/icons/icons-registry.js +1 -1
  2198. package/dist/ui-sdk/responsive-application/ResponsiveApplicationProvider.d.ts +9 -0
  2199. package/dist/ui-sdk/responsive-application/ResponsiveApplicationProvider.js +1 -1
  2200. package/dist/ui-sdk/responsive-application/index.d.ts +1 -0
  2201. package/dist/ui-sdk/responsive-application/responsive-state-store.d.ts +59 -0
  2202. package/dist/ui-sdk/responsive-application/responsive-state-store.js +1 -0
  2203. package/dist/ui-sdk/responsive-application/use-store-responsive-info.d.ts +7 -0
  2204. package/dist/ui-sdk/responsive-application/use-store-responsive-info.js +1 -0
  2205. package/dist/ui-sdk/theme/types.d.ts +8 -0
  2206. package/dist/watch/glob-matcher.d.ts +4 -4
  2207. package/dist/watch/glob-matcher.js +1 -1
  2208. package/dist/watch/watch.d.ts +4 -4
  2209. package/dist/watch/watch.js +1 -1
  2210. package/dist/webhook/builders/common.d.ts +8 -0
  2211. package/dist/webhook/builders/webhook-builder.d.ts +1 -1
  2212. package/dist/webhook/builders/webhook-builder.js +1 -1
  2213. package/package.json +60 -41
  2214. package/schema/domain-spec.json +1383 -217
  2215. package/dist/application-spec/core/eval-to-constant.d.ts +0 -14
  2216. package/dist/application-spec/generate-application/code/templates/env-ci.d.ts +0 -1
  2217. package/dist/application-spec/generate-application/code/templates/env-ci.js +0 -25
  2218. package/dist/application-spec/generate-application/code/templates/env-example.d.ts +0 -1
  2219. package/dist/application-spec/generate-application/code/templates/env-example.js +0 -90
  2220. package/dist/application-spec/generate-application/code/templates/nvmrc.d.ts +0 -1
  2221. package/dist/application-spec/generate-application/code/templates/nvmrc.js +0 -2
  2222. package/dist/application-spec/generate-application/code/templates/package-json.d.ts +0 -10
  2223. package/dist/application-spec/generate-application/code/templates/package-json.js +0 -1
  2224. package/dist/application-spec/generate-application/code/templates/prettier-ignore.d.ts +0 -1
  2225. package/dist/application-spec/generate-application/code/templates/prettier-ignore.js +0 -6
  2226. package/dist/application-spec/generate-application/code/templates/private-assets-readme.d.ts +0 -1
  2227. package/dist/application-spec/generate-application/code/templates/private-assets-readme.js +0 -24
  2228. package/dist/application-spec/generate-application/code/templates/public-assets-readme.d.ts +0 -1
  2229. package/dist/application-spec/generate-application/code/templates/public-assets-readme.js +0 -24
  2230. package/dist/application-spec/generate-application/code/templates/readme.d.ts +0 -1
  2231. package/dist/application-spec/generate-application/code/templates/readme.js +0 -23
  2232. package/dist/application-spec/generate-application/code/templates/skills/agents-md.d.ts +0 -1
  2233. package/dist/application-spec/generate-application/code/templates/skills/agents-md.js +0 -2
  2234. package/dist/application-spec/generate-application/code/templates/webhook-implementation.d.ts +0 -1
  2235. package/dist/application-spec/generate-application/code/templates/webhook-implementation.js +0 -7
  2236. package/dist/application-spec/parse-application-files/spec/components/component-entry.d.ts +0 -98
  2237. package/dist/application-spec/parse-application-files/spec/expressions/expression.d.ts +0 -70
  2238. package/dist/configurator/assistant/browser-details.d.ts +0 -17
  2239. package/dist/configurator/assistant/browser-details.js +0 -1
  2240. package/dist/configurator/assistant/graphql-tools.d.ts +0 -156
  2241. package/dist/configurator/assistant/graphql-tools.js +0 -1
  2242. package/dist/configurator/assistant/index.d.ts +0 -1
  2243. package/dist/configurator/assistant/index.js +0 -1
  2244. package/dist/configurator/assistant/use-assistant-chat.d.ts +0 -20
  2245. package/dist/configurator/assistant/use-assistant-chat.js +0 -1
  2246. package/dist/configurator/common/frontend-analytics.d.ts +0 -46
  2247. package/dist/configurator/common/frontend-analytics.js +0 -1
  2248. package/dist/configurator/configurator-context/ConfiguratorDataProvider.d.ts +0 -2
  2249. package/dist/configurator/configurator-context/ConfiguratorDataProvider.js +0 -1
  2250. package/dist/configurator/configurator-context/IntegrationSubscription.js +0 -1
  2251. package/dist/configurator/configurator-context/LifecycleProviders.js +0 -1
  2252. package/dist/configurator/configurator-context/OnPresetLoadedHandler.js +0 -1
  2253. package/dist/configurator/configurator-context/PresetSelectionProvider.js +0 -1
  2254. package/dist/configurator/configurator-context/configurator-hooks/chat-hooks.d.ts +0 -1
  2255. package/dist/configurator/configurator-context/configurator-hooks/chat-hooks.js +0 -1
  2256. package/dist/configurator/configurator-context/configurator-routing/ConfiguratorRoutingProvider.d.ts +0 -11
  2257. package/dist/configurator/configurator-context/configurator-routing/ConfiguratorRoutingProvider.js +0 -1
  2258. package/dist/configurator/configurator-context/configurator-routing/OnGoToIndexHandler.d.ts +0 -10
  2259. package/dist/configurator/configurator-context/configurator-routing/OnGoToIndexHandler.js +0 -1
  2260. package/dist/configurator/configurator-context/configurator-routing/index.d.ts +0 -2
  2261. package/dist/configurator/configurator-context/configurator-routing/index.js +0 -1
  2262. package/dist/configurator/configurator-context/configurator-routing/use-power-routing-lifecycle.d.ts +0 -9
  2263. package/dist/configurator/configurator-context/configurator-routing/use-power-routing-lifecycle.js +0 -1
  2264. package/dist/configurator/ui/phoenix-layout-elements/language/use-locale-options.d.ts +0 -4
  2265. package/dist/configurator/ui/phoenix-layout-elements/language/use-locale-options.js +0 -1
  2266. package/dist/configurator/ui/phoenix-layout-elements/measurements/use-measurements-visibility.d.ts +0 -4
  2267. package/dist/configurator/ui/phoenix-layout-elements/measurements/use-measurements-visibility.js +0 -1
  2268. package/dist/domain/application/element-registration.d.ts +0 -105
  2269. package/dist/domain/application/element-registration.js +0 -1
  2270. package/dist/domain/application/handler-registration.d.ts +0 -29
  2271. package/dist/domain/application/handler-registration.js +0 -1
  2272. package/dist/domain/application/resolve-imported-transformers.d.ts +0 -13
  2273. package/dist/domain/application/resolve-imported-transformers.js +0 -1
  2274. package/dist/domain/application/resource-builder.d.ts +0 -13
  2275. package/dist/domain/application/resource-builder.js +0 -1
  2276. package/dist/domain/available-system-components.d.ts +0 -11
  2277. package/dist/domain/available-system-components.js +0 -1
  2278. package/dist/domain/components/component-reader-types.d.ts +0 -44
  2279. package/dist/domain/components/debug-state-component.d.ts +0 -14
  2280. package/dist/domain/components/debug-state-component.js +0 -1
  2281. package/dist/domain/components/domain-component-optic.d.ts +0 -76
  2282. package/dist/domain/components/domain-component-optic.js +0 -16
  2283. package/dist/domain/components/drag-state-component.d.ts +0 -16
  2284. package/dist/domain/components/drag-state-component.js +0 -1
  2285. package/dist/domain/components/export-state-component.d.ts +0 -15
  2286. package/dist/domain/components/export-state-component.js +0 -1
  2287. package/dist/domain/components/fullscreen-state-component.d.ts +0 -14
  2288. package/dist/domain/components/fullscreen-state-component.js +0 -1
  2289. package/dist/domain/components/group-components-by-entity-id-and-name.d.ts +0 -9
  2290. package/dist/domain/components/group-components-by-entity-id-and-name.js +0 -1
  2291. package/dist/domain/components/hover-state-component.d.ts +0 -14
  2292. package/dist/domain/components/hover-state-component.js +0 -1
  2293. package/dist/domain/components/index.d.ts +0 -2
  2294. package/dist/domain/components/index.js +0 -1
  2295. package/dist/domain/components/legacy-filter.d.ts +0 -513
  2296. package/dist/domain/components/navigation-state-component.d.ts +0 -15
  2297. package/dist/domain/components/navigation-state-component.js +0 -1
  2298. package/dist/domain/components/selection-state-component.d.ts +0 -14
  2299. package/dist/domain/components/selection-state-component.js +0 -1
  2300. package/dist/domain/components/system-component-builder.d.ts +0 -12
  2301. package/dist/domain/components/system-component-builder.js +0 -1
  2302. package/dist/domain/components/system-component-filter.d.ts +0 -793
  2303. package/dist/domain/components/system-virtual-entity.js +0 -1
  2304. package/dist/domain/components/tool-state-component.d.ts +0 -14
  2305. package/dist/domain/components/tool-state-component.js +0 -1
  2306. package/dist/domain/components/updates.d.ts +0 -108
  2307. package/dist/domain/components/view-state-component.d.ts +0 -14
  2308. package/dist/domain/components/view-state-component.js +0 -1
  2309. package/dist/domain/components/viewport-state-component.d.ts +0 -29
  2310. package/dist/domain/components/viewport-state-component.js +0 -1
  2311. package/dist/domain/core/component.d.ts +0 -46
  2312. package/dist/domain/core/expression.d.ts +0 -50
  2313. package/dist/domain/core/json-schema.js +0 -1
  2314. package/dist/domain/core/migrations.d.ts +0 -99
  2315. package/dist/domain/core/migrations.js +0 -1
  2316. package/dist/domain/core/model.d.ts +0 -127
  2317. package/dist/domain/core/reflection.d.ts +0 -114
  2318. package/dist/domain/core/reflection.js +0 -1
  2319. package/dist/domain/core/state.d.ts +0 -10
  2320. package/dist/domain/domain-builder.d.ts +0 -33
  2321. package/dist/domain/domain-builder.js +0 -1
  2322. package/dist/domain/domain-context/recipe-system/recipes.d.ts +0 -57
  2323. package/dist/domain/domain-context/recipe-system/recipes.js +0 -1
  2324. package/dist/domain/expressions/constant-expressions.d.ts +0 -9
  2325. package/dist/domain/expressions/constant-expressions.js +0 -1
  2326. package/dist/domain/expressions/custom-expression.d.ts +0 -13
  2327. package/dist/domain/expressions/custom-expression.js +0 -1
  2328. package/dist/domain/expressions/index.d.ts +0 -1
  2329. package/dist/domain/expressions/index.js +0 -1
  2330. package/dist/domain/expressions/memoize-expression.d.ts +0 -17
  2331. package/dist/domain/expressions/prepare-domain-expressions.d.ts +0 -16
  2332. package/dist/domain/invariants/builtin-invariant.d.ts +0 -5
  2333. package/dist/domain/invariants/custom-invariants.d.ts +0 -22
  2334. package/dist/domain/invariants/custom-invariants.js +0 -1
  2335. package/dist/domain/invariants/invariants.d.ts +0 -68
  2336. package/dist/domain/invariants/invariants.js +0 -1
  2337. package/dist/domain/invariants/violation-component.js +0 -1
  2338. package/dist/domain/invariants/violation.d.ts +0 -85
  2339. package/dist/domain/invariants/violation.js +0 -1
  2340. package/dist/domain/relations/all-of-type-relation.d.ts +0 -33
  2341. package/dist/domain/relations/all-of-type-relation.js +0 -1
  2342. package/dist/domain/relations/component-factories.d.ts +0 -15
  2343. package/dist/domain/relations/component-factories.js +0 -1
  2344. package/dist/domain/relations/composed-of.d.ts +0 -12
  2345. package/dist/domain/relations/composed-of.js +0 -1
  2346. package/dist/domain/relations/direct-relation.d.ts +0 -29
  2347. package/dist/domain/relations/indirect-relation.d.ts +0 -81
  2348. package/dist/domain/relations/indirect-relation.js +0 -1
  2349. package/dist/domain/relations/reference-component.d.ts +0 -18
  2350. package/dist/domain/relations/reference-component.js +0 -1
  2351. package/dist/domain/relations/reference-field.d.ts +0 -7
  2352. package/dist/domain/relations/relation-factory.d.ts +0 -19
  2353. package/dist/domain/relations/relation-factory.js +0 -1
  2354. package/dist/domain/relations/relation-implementation.d.ts +0 -8
  2355. package/dist/domain/system-components/angle-indicator.d.ts +0 -21
  2356. package/dist/domain/system-components/angle-indicator.js +0 -1
  2357. package/dist/domain/system-components/attribute-switch.d.ts +0 -8
  2358. package/dist/domain/system-components/attribute-switch.js +0 -1
  2359. package/dist/domain/system-components/autorotate-camera-component.d.ts +0 -19
  2360. package/dist/domain/system-components/autorotate-camera-component.js +0 -1
  2361. package/dist/domain/system-components/basic-sidebar-footer.d.ts +0 -8
  2362. package/dist/domain/system-components/basic-sidebar-footer.js +0 -1
  2363. package/dist/domain/system-components/camera-based-hidden-entity-object.js +0 -1
  2364. package/dist/domain/system-components/camera-based-hidden-entity.js +0 -1
  2365. package/dist/domain/system-components/canvas-config.d.ts +0 -87
  2366. package/dist/domain/system-components/canvas-config.js +0 -1
  2367. package/dist/domain/system-components/canvas-custom-environment.js +0 -1
  2368. package/dist/domain/system-components/canvas-padding.d.ts +0 -25
  2369. package/dist/domain/system-components/canvas-padding.js +0 -1
  2370. package/dist/domain/system-components/canvas-preset-environment.d.ts +0 -37
  2371. package/dist/domain/system-components/canvas-preset-environment.js +0 -1
  2372. package/dist/domain/system-components/child-entity-recipe-hierarchy.d.ts +0 -21
  2373. package/dist/domain/system-components/child-entity-recipe-hierarchy.js +0 -1
  2374. package/dist/domain/system-components/client-side-image.d.ts +0 -14
  2375. package/dist/domain/system-components/client-side-image.js +0 -1
  2376. package/dist/domain/system-components/color-value.js +0 -1
  2377. package/dist/domain/system-components/common/angle-indicator-schema.d.ts +0 -292
  2378. package/dist/domain/system-components/common/angle-indicator-schema.js +0 -1
  2379. package/dist/domain/system-components/common/dimension-indicator-schema.d.ts +0 -607
  2380. package/dist/domain/system-components/common/dimension-indicator-schema.js +0 -1
  2381. package/dist/domain/system-components/custom-header.d.ts +0 -11
  2382. package/dist/domain/system-components/custom-header.js +0 -1
  2383. package/dist/domain/system-components/custom-price-footer.js +0 -1
  2384. package/dist/domain/system-components/custom-sidebar-footer.d.ts +0 -11
  2385. package/dist/domain/system-components/custom-sidebar-footer.js +0 -1
  2386. package/dist/domain/system-components/dimension-indicator.d.ts +0 -31
  2387. package/dist/domain/system-components/dimension-indicator.js +0 -1
  2388. package/dist/domain/system-components/editable-angle-indicator.d.ts +0 -38
  2389. package/dist/domain/system-components/editable-angle-indicator.js +0 -1
  2390. package/dist/domain/system-components/editable-distance-dimension-indicator.d.ts +0 -42
  2391. package/dist/domain/system-components/editable-distance-dimension-indicator.js +0 -1
  2392. package/dist/domain/system-components/editable-offset-indicator.d.ts +0 -41
  2393. package/dist/domain/system-components/editable-offset-indicator.js +0 -1
  2394. package/dist/domain/system-components/editable-size-indicator.d.ts +0 -38
  2395. package/dist/domain/system-components/editable-size-indicator.js +0 -1
  2396. package/dist/domain/system-components/entity-header.d.ts +0 -22
  2397. package/dist/domain/system-components/entity-header.js +0 -1
  2398. package/dist/domain/system-components/exit-tool-mode-fab.d.ts +0 -25
  2399. package/dist/domain/system-components/exit-tool-mode-fab.js +0 -1
  2400. package/dist/domain/system-components/finalize-action.d.ts +0 -20
  2401. package/dist/domain/system-components/finalize-action.js +0 -1
  2402. package/dist/domain/system-components/finalize-component.js +0 -1
  2403. package/dist/domain/system-components/fit-selection-orthographic-camera-component.js +0 -1
  2404. package/dist/domain/system-components/fit-selection-perspective-camera-component.js +0 -1
  2405. package/dist/domain/system-components/fixed-header.d.ts +0 -10
  2406. package/dist/domain/system-components/fixed-header.js +0 -1
  2407. package/dist/domain/system-components/floating-header.d.ts +0 -10
  2408. package/dist/domain/system-components/floating-header.js +0 -1
  2409. package/dist/domain/system-components/hidden-header.d.ts +0 -8
  2410. package/dist/domain/system-components/hidden-header.js +0 -1
  2411. package/dist/domain/system-components/hidden-sidebar-footer.d.ts +0 -21
  2412. package/dist/domain/system-components/hidden-sidebar-footer.js +0 -1
  2413. package/dist/domain/system-components/horizontal-tabs.d.ts +0 -28
  2414. package/dist/domain/system-components/horizontal-tabs.js +0 -1
  2415. package/dist/domain/system-components/list-selector-dimension-indicator.d.ts +0 -30
  2416. package/dist/domain/system-components/list-selector-dimension-indicator.js +0 -1
  2417. package/dist/domain/system-components/multilingual-text-value.js +0 -1
  2418. package/dist/domain/system-components/navigation-steps.d.ts +0 -19
  2419. package/dist/domain/system-components/navigation-steps.js +0 -1
  2420. package/dist/domain/system-components/offset-anchors.d.ts +0 -20
  2421. package/dist/domain/system-components/offset-anchors.js +0 -1
  2422. package/dist/domain/system-components/offset-indicator.d.ts +0 -84
  2423. package/dist/domain/system-components/offset-indicator.js +0 -1
  2424. package/dist/domain/system-components/offset.d.ts +0 -31
  2425. package/dist/domain/system-components/offset.js +0 -1
  2426. package/dist/domain/system-components/other-action.d.ts +0 -14
  2427. package/dist/domain/system-components/other-action.js +0 -1
  2428. package/dist/domain/system-components/property-page.d.ts +0 -16
  2429. package/dist/domain/system-components/property-page.js +0 -1
  2430. package/dist/domain/system-components/read-sidebar-footer.d.ts +0 -8
  2431. package/dist/domain/system-components/read-sidebar-footer.js +0 -1
  2432. package/dist/domain/system-components/replace-entity-recipe-hierarchy.d.ts +0 -21
  2433. package/dist/domain/system-components/replace-entity-recipe-hierarchy.js +0 -1
  2434. package/dist/domain/system-components/rotatable.js +0 -1
  2435. package/dist/domain/system-components/rotation-handle.d.ts +0 -53
  2436. package/dist/domain/system-components/rotation-handle.js +0 -1
  2437. package/dist/domain/system-components/save-template-thumbnail.d.ts +0 -14
  2438. package/dist/domain/system-components/save-template-thumbnail.js +0 -1
  2439. package/dist/domain/system-components/scene-entity-add-fab.d.ts +0 -32
  2440. package/dist/domain/system-components/scene-entity-add-fab.js +0 -1
  2441. package/dist/domain/system-components/scene-entity-animation.js +0 -1
  2442. package/dist/domain/system-components/scene-entity-control.js +0 -1
  2443. package/dist/domain/system-components/scene-entity-delete-fab.d.ts +0 -19
  2444. package/dist/domain/system-components/scene-entity-delete-fab.js +0 -1
  2445. package/dist/domain/system-components/scene-entity-floor-object.js +0 -1
  2446. package/dist/domain/system-components/scene-entity-html-hotspot.d.ts +0 -27
  2447. package/dist/domain/system-components/scene-entity-html-hotspot.js +0 -1
  2448. package/dist/domain/system-components/scene-entity-navigation-hotspot.d.ts +0 -20
  2449. package/dist/domain/system-components/scene-entity-navigation-hotspot.js +0 -1
  2450. package/dist/domain/system-components/scene-entity-object-html-hotspot.d.ts +0 -31
  2451. package/dist/domain/system-components/scene-entity-object-html-hotspot.js +0 -1
  2452. package/dist/domain/system-components/scene-entity-select-hotspot.d.ts +0 -5
  2453. package/dist/domain/system-components/scene-entity-select-hotspot.js +0 -1
  2454. package/dist/domain/system-components/scene-entity-wall-object.js +0 -1
  2455. package/dist/domain/system-components/selectable-component.js +0 -1
  2456. package/dist/domain/system-components/sidebar-tabs.d.ts +0 -29
  2457. package/dist/domain/system-components/sidebar-tabs.js +0 -1
  2458. package/dist/domain/system-components/simple-summary.js +0 -1
  2459. package/dist/domain/system-components/size.d.ts +0 -21
  2460. package/dist/domain/system-components/size.js +0 -1
  2461. package/dist/domain/system-components/sketching-draw.d.ts +0 -17
  2462. package/dist/domain/system-components/sketching-draw.js +0 -1
  2463. package/dist/domain/system-components/sketching-edit.d.ts +0 -28
  2464. package/dist/domain/system-components/sketching-edit.js +0 -1
  2465. package/dist/domain/system-components/summary-component.js +0 -1
  2466. package/dist/domain/system-components/text-value.js +0 -1
  2467. package/dist/domain/system-components/tool-controls.js +0 -1
  2468. package/dist/domain/system-components/tool-menu-fab.d.ts +0 -40
  2469. package/dist/domain/system-components/tool-menu-fab.js +0 -1
  2470. package/dist/domain/system-components/toolbar.d.ts +0 -13
  2471. package/dist/domain/system-components/toolbar.js +0 -1
  2472. package/dist/domain/system-components/universal-sidebar-footer.d.ts +0 -12
  2473. package/dist/domain/system-components/universal-sidebar-footer.js +0 -1
  2474. package/dist/domain/system-components/view-controls.js +0 -1
  2475. package/dist/extras/assistant/AssistantChat.d.ts +0 -6
  2476. package/dist/extras/assistant/AssistantChat.js +0 -1
  2477. package/dist/extras/assistant/index.d.ts +0 -1
  2478. package/dist/extras/assistant/index.js +0 -1
  2479. package/dist/phoenix/application-spec/generate-assistant-prompt.d.ts +0 -12
  2480. package/dist/phoenix/application-spec/generate-assistant-prompt.js +0 -1
  2481. package/dist/phoenix/commands/generate-project-files.d.ts +0 -6
  2482. package/dist/phoenix/commands/generate-project-files.js +0 -1
  2483. package/dist/phoenix/commands/generated-env-markers.d.ts +0 -7
  2484. package/dist/phoenix/commands/generated-env-markers.js +0 -1
  2485. package/dist/phoenix/services/lingui.d.ts +0 -7
  2486. package/dist/phoenix/services/lingui.js +0 -1
  2487. package/dist/react-sdk/application-runtime/runtime/god-mode.d.ts +0 -19
  2488. package/dist/react-sdk/application-runtime/runtime/god-mode.js +0 -1
  2489. package/dist/react-sdk/loading-state/LoadingStateProvider.d.ts +0 -31
  2490. package/dist/react-sdk/loading-state/LoadingStateProvider.js +0 -1
  2491. package/dist/react-sdk/loading-state/loading-state-manager.d.ts +0 -32
  2492. package/dist/react-sdk/loading-state/loading-state-manager.js +0 -1
  2493. /package/dist/application-spec/{core → enhanced-json}/eval-code-uses-self.d.ts +0 -0
  2494. /package/dist/application-spec/{core → enhanced-json}/eval-code-uses-self.js +0 -0
  2495. /package/dist/application-spec/{core → enhanced-json}/eval-to-constant.js +0 -0
  2496. /package/dist/{domain/components/component-reader-types.js → application-spec/generate-application/runtime/spec-code/spec-code-module.js} +0 -0
  2497. /package/dist/{domain/core/enhanced-json-schema.js → application-spec/parse-application-files/spec/expressions/expression-read.js} +0 -0
  2498. /package/dist/{domain/core/schema-validator.js → configurator/ui/assistant/form/form-model.js} +0 -0
  2499. /package/dist/{domain/relations/reference-field.js → configurator/ui/assistant/form/form-state.js} +0 -0
  2500. /package/dist/{domain/core/expression.js → configurator/ui/assistant/form-elements/form-element-props.js} +0 -0
  2501. /package/dist/domain/{relations/relation-implementation.js → application/assistant/assistant-resolved-manifest.js} +0 -0
  2502. /package/dist/domain/{components → core/component}/legacy-filter.js +0 -0
  2503. /package/dist/domain/{components → core/component}/system-component-filter.js +0 -0
  2504. /package/dist/domain/{components → core/component}/system-virtual-entity.d.ts +0 -0
  2505. /package/dist/domain/{components → core/component}/updates.js +0 -0
  2506. /package/dist/domain/{invariants → core/invariant}/builtin-invariant.js +0 -0
  2507. /package/dist/domain/{invariants → core/invariant}/violation-component.d.ts +0 -0
  2508. /package/dist/domain/core/{alias.d.ts → model/alias.d.ts} +0 -0
  2509. /package/dist/domain/core/{alias.js → model/alias.js} +0 -0
  2510. /package/dist/domain/core/{common-definitions.d.ts → model/common-definitions.d.ts} +0 -0
  2511. /package/dist/domain/core/{common-definitions.js → model/common-definitions.js} +0 -0
  2512. /package/dist/domain/core/{component.js → model/component.js} +0 -0
  2513. /package/dist/domain/core/{model.js → model/model.js} +0 -0
  2514. /package/dist/domain/core/{preset.d.ts → model/preset.d.ts} +0 -0
  2515. /package/dist/domain/core/{preset.js → model/preset.js} +0 -0
  2516. /package/dist/domain/{relations → core/relation}/direct-relation.js +0 -0
  2517. /package/dist/domain/core/{schema-validator-ajv.d.ts → schema/create-ajv-schema-validator.d.ts} +0 -0
  2518. /package/dist/domain/core/{schema-validator-ajv.js → schema/create-ajv-schema-validator.js} +0 -0
  2519. /package/dist/domain/core/{schema-validator-csp.d.ts → schema/create-csp-schema-validator.d.ts} +0 -0
  2520. /package/dist/domain/core/{schema-validator-csp.js → schema/create-csp-schema-validator.js} +0 -0
  2521. /package/dist/domain/core/{enhanced-json-schema.d.ts → schema/enhanced-json-schema.d.ts} +0 -0
  2522. /package/dist/domain/core/{json-schema.d.ts → schema/extended-schema-validator.d.ts} +0 -0
  2523. /package/dist/domain/core/{schema-validator.d.ts → schema/schema-validator.d.ts} +0 -0
  2524. /package/dist/domain/core/{state.js → state/state.js} +0 -0
  2525. /package/dist/domain/{expressions → domain-runtime/spec}/memoize-expression.js +0 -0
  2526. /package/dist/domain/{expressions → domain-runtime/spec}/prepare-domain-expressions.js +0 -0
  2527. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity-object.d.ts +0 -0
  2528. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity.d.ts +0 -0
  2529. /package/dist/domain/{system-components → extensions}/canvas-custom-environment.d.ts +0 -0
  2530. /package/dist/domain/{system-components → extensions}/color-value.d.ts +0 -0
  2531. /package/dist/domain/{system-components → extensions}/common/dimension-indicators.d.ts +0 -0
  2532. /package/dist/domain/{system-components → extensions}/common/dimension-indicators.js +0 -0
  2533. /package/dist/domain/{system-components → extensions}/common/editable-indicator-button-variant.d.ts +0 -0
  2534. /package/dist/domain/{system-components → extensions}/common/editable-indicator-button-variant.js +0 -0
  2535. /package/dist/domain/{system-components → extensions}/custom-price-footer.d.ts +0 -0
  2536. /package/dist/domain/{system-components → extensions}/finalize-component.d.ts +0 -0
  2537. /package/dist/domain/{system-components → extensions}/fit-selection-orthographic-camera-component.d.ts +0 -0
  2538. /package/dist/domain/{system-components → extensions}/fit-selection-perspective-camera-component.d.ts +0 -0
  2539. /package/dist/domain/{system-components → extensions}/multilingual-text-value.d.ts +0 -0
  2540. /package/dist/domain/{system-components → extensions}/rotatable.d.ts +0 -0
  2541. /package/dist/domain/{system-components → extensions}/scene-entity-animation.d.ts +0 -0
  2542. /package/dist/domain/{system-components → extensions}/scene-entity-control.d.ts +0 -0
  2543. /package/dist/domain/{system-components → extensions}/scene-entity-floor-object.d.ts +0 -0
  2544. /package/dist/domain/{system-components → extensions}/scene-entity-wall-object.d.ts +0 -0
  2545. /package/dist/domain/{system-components → extensions}/selectable-component.d.ts +0 -0
  2546. /package/dist/domain/{system-components → extensions}/simple-summary.d.ts +0 -0
  2547. /package/dist/domain/{system-components → extensions}/summary-component.d.ts +0 -0
  2548. /package/dist/domain/{system-components → extensions}/text-value.d.ts +0 -0
  2549. /package/dist/domain/{system-components → extensions}/tool-controls.d.ts +0 -0
  2550. /package/dist/domain/{system-components → extensions}/view-controls.d.ts +0 -0
  2551. /package/dist/{application-spec/core → domain/spec/application}/application-instance.d.ts +0 -0
  2552. /package/dist/{application-spec/core → domain/spec/application}/application-instance.js +0 -0
  2553. /package/dist/{application-spec/parse-application-files/spec/components/component-entry.js → domain/spec/components/sdk-code-ref.js} +0 -0
  2554. /package/dist/{application-spec/parse-application-files/spec/expressions/expression.js → domain/spec/expressions/sdk-expression-implementation.js} +0 -0
  2555. /package/dist/{application-spec/parse-application-files/spec/components → domain/spec/markers}/component-prop-target.d.ts +0 -0
  2556. /package/dist/{application-spec/parse-application-files/spec/components → domain/spec/markers}/component-prop-target.js +0 -0
  2557. /package/dist/{application-spec/core → domain/spec}/markers/eval-marker.d.ts +0 -0
  2558. /package/dist/{application-spec/core → domain/spec}/markers/eval-marker.js +0 -0
  2559. /package/dist/{configurator/configurator-context → react-sdk/domain-application-context}/OnPresetLoadedHandler.d.ts +0 -0
  2560. /package/dist/{configurator/configurator-context → react-sdk/integration}/IntegrationSubscription.d.ts +0 -0
  2561. /package/dist/{configurator/configurator-context → react-sdk/lifecycle-providers}/LifecycleProviders.d.ts +0 -0
  2562. /package/dist/{configurator/configurator-context → react-sdk/preset-selection}/PresetSelectionProvider.d.ts +0 -0
@@ -0,0 +1,2683 @@
1
+ # Sunfold Solar
2
+
3
+ Help a household decide on a system by showing what it would do for them. A solar installer, Sunfold, lets a homeowner plan panels and a battery for their roof: the roof's area and direction, the number of panels, the battery, the tariff and the home's yearly use. The page answers with a dashboard: four figures, the solar year month by month, the year the system pays for itself, and how much of the power the home uses. Every figure is an expression of the spec, so the dashboard changes the moment an input does, and **Book a home survey** is a finalize action. There is no 3D model; the tiles and charts are React and hand-written SVG.
4
+
5
+ - [Try it](#try-it)
6
+ - [What the example demonstrates](#what-the-example-demonstrates)
7
+ - [A dashboard instead of a scene](#a-dashboard-instead-of-a-scene)
8
+ - [Every figure is an expression](#every-figure-is-an-expression)
9
+ - [Figures on tiles](#figures-on-tiles)
10
+ - [Charts in SVG](#charts-in-svg)
11
+ - [A warning and a notice](#a-warning-and-a-notice)
12
+ - [Book a home survey](#book-a-home-survey)
13
+ - [On a phone](#on-a-phone)
14
+ - [Test cases](#test-cases)
15
+ - [What this layout leaves out](#what-this-layout-leaves-out)
16
+ - [Related pages](#related-pages)
17
+ - [Complete Implementation](#complete-implementation)
18
+
19
+ ## Try it
20
+
21
+ The phone version is under [On a phone](#on-a-phone).
22
+
23
+ ## What the example demonstrates
24
+
25
+ | Piece | Where |
26
+ | ----------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
27
+ | A `ConfiguratorLayout` that mounts no `LayoutSlots.SharedCanvas` | [A dashboard instead of a scene](#a-dashboard-instead-of-a-scene) |
28
+ | Numbers and series declared in `expressions:` and read with `phx.frontend.useRootEntityState()` | [Every figure is an expression](#every-figure-is-an-expression) |
29
+ | KPI tiles | `KpiTiles`, [Figures on tiles](#figures-on-tiles) |
30
+ | A stacked column chart with a line, a payback curve and a split bar, with tooltips | `MonthlyEnergyChart`, `PaybackChart`, `EnergySplitBar`, [Charts in SVG](#charts-in-svg) |
31
+ | A `warning` that blocks finalizing beside a `notice` that does not | `PlannerInputs`, [A warning and a notice](#a-warning-and-a-notice) |
32
+ | `phx.frontend.useFinalizeActions()` for the spec's `survey` action | `SurveyPanel`, [Book a home survey](#book-a-home-survey) |
33
+
34
+ ## A dashboard instead of a scene
35
+
36
+ `src/elements/ConfiguratorLayout.tsx` mounts the services and a page, never `LayoutSlots.SharedCanvas`, so no scene loads and the app loader does not wait for one. On a desktop the inputs are a sidebar with the cost and the booking at its foot, and the dashboard fills the rest; on a phone everything is one scrolling column with the cost in a bar at the bottom.
37
+
38
+ ```tsx
39
+ import { Box } from '@mui/material'
40
+
41
+ import { LayoutSlots } from '@salsita-ai/sdk/configurator'
42
+
43
+ import { phx } from '../../.phoenix/phx.js'
44
+ import { DesktopPage } from '../_shared/DesktopPage.js'
45
+ import { PhonePage } from '../_shared/PhonePage.js'
46
+ import { SUNFOLD } from '../_shared/tokens.js'
47
+
48
+ // A planning dashboard with no scene: the layout never mounts `LayoutSlots.SharedCanvas`, and every tile and chart is
49
+ // React and SVG drawn from the spec's expressions
50
+ const ConfiguratorLayout = () => {
51
+ // `null` until the container has been measured
52
+ const viewports = phx.frontend.useActiveViewports()
53
+ const isDesktop = viewports?.includes('desktop') ?? false
54
+
55
+ return (
56
+ <Box component="div" sx={{ position: 'absolute', inset: 0, overflow: 'clip', bgcolor: SUNFOLD.linen }}>
57
+ <LayoutSlots.Services />
58
+ {viewports !== null && (isDesktop ? <DesktopPage /> : <PhonePage />)}
59
+ </Box>
60
+ )
61
+ }
62
+
63
+ export default phx.frontend.createCustomPhoenixLayoutElement('ConfiguratorLayout', ConfiguratorLayout)
64
+ ```
65
+
66
+ ## Every figure is an expression
67
+
68
+ The dashboard computes nothing itself. The system's size, its production month by month, how the production splits between the home and the grid, the yearly saving, the cost and the money returned year by year are expressions of the root entity. Declaring them in `expressions:` gives them their types, so the layout reads `$monthly` as an array of months and `$cumulativeSavings` as an array of numbers with `phx.frontend.useRootEntityState()`.
69
+
70
+ ```yaml
71
+ expressions:
72
+ SolarPlan:
73
+ $systemKwp:
74
+ type: number
75
+ $roofPanelLimit:
76
+ type: number
77
+ $panelAreaM2:
78
+ type: number
79
+ $annualProductionKwh:
80
+ type: number
81
+ $monthly:
82
+ type: array
83
+ items:
84
+ type: object
85
+ properties:
86
+ month:
87
+ type: string
88
+ productionKwh:
89
+ type: number
90
+ consumptionKwh:
91
+ type: number
92
+ selfUseKwh:
93
+ type: number
94
+ exportKwh:
95
+ type: number
96
+ required:
97
+ - month
98
+ - productionKwh
99
+ - consumptionKwh
100
+ - selfUseKwh
101
+ - exportKwh
102
+ additionalProperties: false
103
+ $selfConsumption:
104
+ type: number
105
+ $selfSufficiency:
106
+ type: number
107
+ $annualSavings:
108
+ type: number
109
+ $systemCost:
110
+ type: number
111
+ $cumulativeSavings:
112
+ type: array
113
+ items:
114
+ type: number
115
+ $paybackYears:
116
+ type: number
117
+ $co2Tonnes:
118
+ type: number
119
+ ```
120
+
121
+ The model in `src/expressions/solar.ts` is deliberately simple: a south-facing kWp yields 1,000 kWh a year, spread over the months by a typical central European sun curve. Without a battery the home uses solar power only while the sun shines; a battery carries the day's surplus into the evening. The saving counts the power the home no longer buys and the power it sells, and the running total grows with prices rising 2 % a year while the panels lose half a percent.
122
+
123
+ ```ts
124
+ import { phx } from '../../.phoenix/phx.js'
125
+
126
+ const PANEL_KWP = 0.43
127
+ const PANEL_AREA_M2 = 1.95
128
+ // Vents, chimneys and the edge clearance leave about 85 % of a roof for panels
129
+ const USABLE_ROOF = 0.85
130
+ // A south-facing kWp in central Europe yields about 1,000 kWh a year
131
+ const YIELD_KWH_PER_KWP = 1000
132
+ const ORIENTATION_FACTOR = { South: 1, SouthEastWest: 0.95, EastWest: 0.82, North: 0.6 }
133
+
134
+ const MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
135
+ // The share of the year's sun and of the household's use that falls in each month
136
+ const SUN_SHARE = [0.04, 0.045, 0.08, 0.105, 0.125, 0.13, 0.13, 0.115, 0.09, 0.065, 0.04, 0.035]
137
+ const USE_SHARE = [0.1, 0.09, 0.088, 0.08, 0.075, 0.07, 0.07, 0.072, 0.076, 0.085, 0.094, 0.1]
138
+ const DAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
139
+
140
+ const BATTERY_KWH = { None: 0, Kwh5: 5, Kwh10: 10, Kwh15: 15 }
141
+ const BATTERY_PRICE = { None: 0, Kwh5: 3600, Kwh10: 6400, Kwh15: 8900 }
142
+ const TARIFF = {
143
+ Flat: { buy: 0.32, sell: 0.08, shiftBonus: 0 },
144
+ TimeOfUse: { buy: 0.29, sell: 0.1, shiftBonus: 0.09 },
145
+ ExportPlus: { buy: 0.32, sell: 0.15, shiftBonus: 0 },
146
+ }
147
+ // Panels lose half a percent a year; electricity gets 2 % dearer a year
148
+ const DEGRADATION = 0.995
149
+ const PRICE_GROWTH = 1.02
150
+ const YEARS = 25
151
+
152
+ export default phx.domain.implementCustomExpressions({
153
+ SolarPlan: {
154
+ $systemKwp: s => {
155
+ return s.panels * PANEL_KWP
156
+ },
157
+ $roofPanelLimit: s => {
158
+ return Math.floor((s.roofArea * USABLE_ROOF) / PANEL_AREA_M2)
159
+ },
160
+ // The roof the panels cover, rounded up to whole square metres, as the tiles and the roof warning quote it
161
+ $panelAreaM2: s => {
162
+ return Math.ceil(s.panels * PANEL_AREA_M2)
163
+ },
164
+ $annualProductionKwh: s => {
165
+ return s.$systemKwp * YIELD_KWH_PER_KWP * ORIENTATION_FACTOR[s.orientation]
166
+ },
167
+ // Each month's production and use, and how the production splits between the home and the grid. Without a
168
+ // battery the home uses solar power only while the sun shines; a battery carries the surplus into the evening,
169
+ // one charge a day, and covers the evening but not the early morning.
170
+ $monthly: s => {
171
+ const batteryKwh = BATTERY_KWH[s.battery] * 0.9
172
+
173
+ return MONTHS.map((month, index) => {
174
+ const productionKwh = s.$annualProductionKwh * (SUN_SHARE[index] ?? 0)
175
+ const consumptionKwh = s.annualUse * (USE_SHARE[index] ?? 0)
176
+ const direct = Math.min(productionKwh * 0.55, consumptionKwh * 0.45)
177
+ const stored = Math.min(
178
+ productionKwh - direct,
179
+ batteryKwh * (DAYS[index] ?? 30),
180
+ (consumptionKwh - direct) * 0.6
181
+ )
182
+ const selfUseKwh = direct + stored
183
+
184
+ return { month, productionKwh, consumptionKwh, selfUseKwh, exportKwh: productionKwh - selfUseKwh }
185
+ })
186
+ },
187
+ $selfConsumption: s => {
188
+ const selfUse = s.$monthly.reduce((sum, month) => sum + month.selfUseKwh, 0)
189
+
190
+ return s.$annualProductionKwh > 0 ? selfUse / s.$annualProductionKwh : 0
191
+ },
192
+ $selfSufficiency: s => {
193
+ const selfUse = s.$monthly.reduce((sum, month) => sum + month.selfUseKwh, 0)
194
+
195
+ return selfUse / s.annualUse
196
+ },
197
+ // A year's saving: power the home no longer buys, power sold to the grid, and on a time-of-use tariff the
198
+ // evening power a battery shifts away from the dear hours
199
+ $annualSavings: s => {
200
+ const tariff = TARIFF[s.tariff]
201
+ const selfUse = s.$monthly.reduce((sum, month) => sum + month.selfUseKwh, 0)
202
+ const exported = s.$monthly.reduce((sum, month) => sum + month.exportKwh, 0)
203
+ const shifted = s.battery === 'None' ? 0 : selfUse * 0.4
204
+
205
+ return selfUse * tariff.buy + exported * tariff.sell + shifted * tariff.shiftBonus
206
+ },
207
+ $systemCost: s => {
208
+ return Math.round(1500 + s.$systemKwp * 1050 + BATTERY_PRICE[s.battery])
209
+ },
210
+ // The money the system has returned at the end of each year, starting at minus its cost in year 0
211
+ $cumulativeSavings: s => {
212
+ return Array.from({ length: YEARS + 1 }, (_, year) => {
213
+ const earned = Array.from(
214
+ { length: year },
215
+ (__, past) => s.$annualSavings * (PRICE_GROWTH * DEGRADATION) ** past
216
+ ).reduce((sum, value) => sum + value, 0)
217
+
218
+ return earned - s.$systemCost
219
+ })
220
+ },
221
+ // The year the running total crosses zero, between whole years; beyond the panels' 25 years it is `Infinity`
222
+ $paybackYears: s => {
223
+ const totals = s.$cumulativeSavings
224
+ const year = totals.findIndex(total => total >= 0)
225
+
226
+ if (year <= 0) {
227
+ return year === 0 ? 0 : Infinity
228
+ }
229
+
230
+ const before = totals[year - 1] ?? 0
231
+ const after = totals[year] ?? 0
232
+
233
+ return year - 1 + -before / (after - before)
234
+ },
235
+ $co2Tonnes: s => {
236
+ return (s.$annualProductionKwh * 0.35) / 1000
237
+ },
238
+ },
239
+ })
240
+ ```
241
+
242
+ The cost is the `price` component's value, so `phx.frontend.useRootEntityPrice()` formats it in euros:
243
+
244
+ ```yaml
245
+ components:
246
+ SolarPlan:
247
+ price:
248
+ main:
249
+ price:
250
+ $read: $systemCost
251
+ currency: EUR
252
+ ```
253
+
254
+ ## Figures on tiles
255
+
256
+ `KpiTiles` shows the four figures a household asks first, each with the context that makes it mean something: the panels and roof behind the system size, the CO₂ behind the production, what the self-consumption share means, and the first year's saving behind the payback.
257
+
258
+ ```tsx
259
+ import { Box, Typography } from '@mui/material'
260
+
261
+ import { phx } from '../../.phoenix/phx.js'
262
+ import { CARD_SX, SUNFOLD } from './tokens.js'
263
+
264
+ const euro = (value: number) => {
265
+ return value.toLocaleString('en-IE', { style: 'currency', currency: 'EUR', maximumFractionDigits: 0 })
266
+ }
267
+
268
+ interface KpiTilesProps {
269
+ readonly columns: number
270
+ }
271
+
272
+ // The four figures a household asks first, each with the context that makes it mean something. Every value is an
273
+ // expression of the spec, read from the root entity.
274
+ export const KpiTiles = ({ columns }: KpiTilesProps) => {
275
+ const plan = phx.frontend.useRootEntityState()
276
+ const payback = plan.$paybackYears
277
+ const tiles = [
278
+ {
279
+ label: 'System size',
280
+ value: `${plan.$systemKwp.toFixed(1)} kWp`,
281
+ context: `${plan.panels} panels, ${plan.$panelAreaM2} m² of roof`,
282
+ },
283
+ {
284
+ label: 'Annual production',
285
+ value: `${Math.round(plan.$annualProductionKwh).toLocaleString('en')} kWh`,
286
+ context: `About ${plan.$co2Tonnes.toFixed(1)} t of CO₂ avoided a year`,
287
+ },
288
+ {
289
+ label: 'Self-consumption',
290
+ value: `${Math.round(plan.$selfConsumption * 100)} %`,
291
+ context: 'of the solar power is used at home',
292
+ },
293
+ {
294
+ label: 'Payback',
295
+ value: Number.isFinite(payback) ? `${payback.toFixed(1)} years` : 'Over 25 years',
296
+ context: `${euro(plan.$annualSavings)} saved in the first year`,
297
+ },
298
+ ]
299
+
300
+ return (
301
+ <Box component="div" sx={{ display: 'grid', gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))`, gap: 2 }}>
302
+ {tiles.map(tile => (
303
+ <Box
304
+ component="section"
305
+ key={tile.label}
306
+ aria-label={tile.label}
307
+ sx={{ ...CARD_SX, display: 'grid', gap: 0.5, padding: 2 }}
308
+ >
309
+ <Typography sx={{ fontFamily: SUNFOLD.font, fontSize: 13, color: SUNFOLD.muted }}>{tile.label}</Typography>
310
+ <Typography
311
+ sx={{
312
+ fontFamily: SUNFOLD.font,
313
+ fontSize: columns > 2 ? 30 : 24,
314
+ fontWeight: 600,
315
+ lineHeight: 1.15,
316
+ color: SUNFOLD.ink,
317
+ }}
318
+ >
319
+ {tile.value}
320
+ </Typography>
321
+ <Typography sx={{ fontFamily: SUNFOLD.font, fontSize: 12, color: SUNFOLD.muted }}>{tile.context}</Typography>
322
+ </Box>
323
+ ))}
324
+ </Box>
325
+ )
326
+ }
327
+ ```
328
+
329
+ ## Charts in SVG
330
+
331
+ The charts are hand-written SVG; the example adds no chart library. Each chart measures its width with a `ResizeObserver` and draws its text at its real size.
332
+
333
+ - **Your solar year.** `MonthlyEnergyChart` draws each month's production as a column split into what the home uses and what goes to the grid, with a 2-pixel gap between the parts and a rounded top, and the home's use as a line across it. A legend names the three series, hovering a month shows its figures, and **Show figures** swaps the chart for a table of the same numbers.
334
+ - **When it pays back.** `PaybackChart` draws `$cumulativeSavings`, which starts at minus the system's cost, marks the year it crosses zero, and reads off any year under the pointer.
335
+ - **Where the power goes.** `EnergySplitBar` splits a year of production between the home and the grid, and says how much of the home's use solar covers.
336
+
337
+ The series colours are a fixed set checked together for colour-vision deficiencies; two are lighter than 3:1 against white, which is why every chart also has a legend, a tooltip or the figures written out.
338
+
339
+ ```tsx
340
+ import { Box, ButtonBase, Typography } from '@mui/material'
341
+ import { useState } from 'react'
342
+
343
+ import { phx } from '../../.phoenix/phx.js'
344
+ import { CHART, SERIES } from './chart-style.js'
345
+ import { niceScale } from './nice-scale.js'
346
+ import { useWidth } from './use-width.js'
347
+
348
+ const MARGIN = { top: 12, right: 8, bottom: 26, left: 48 }
349
+ const GAP = 2
350
+ const RADIUS = 4
351
+
352
+ const kwh = (value: number) => {
353
+ return `${Math.round(value).toLocaleString('en')} kWh`
354
+ }
355
+
356
+ // A column segment whose top corners are rounded, so the stack ends in a 4px data-end and stays square at the
357
+ // baseline
358
+ const roundedTop = (x: number, y: number, width: number, height: number) => {
359
+ const r = Math.min(RADIUS, height, width / 2)
360
+
361
+ return `M${x},${y + height} V${y + r} Q${x},${y} ${x + r},${y} H${x + width - r} Q${x + width},${y} ${x + width},${y + r} V${y + height} Z`
362
+ }
363
+
364
+ const LEGEND = [
365
+ { key: 'selfUse', label: 'Solar used at home', color: SERIES.selfUse, line: false },
366
+ { key: 'exported', label: 'Solar sent to the grid', color: SERIES.exported, line: false },
367
+ { key: 'consumption', label: 'Home use', color: SERIES.consumption, line: true },
368
+ ]
369
+
370
+ interface MonthlyEnergyChartProps {
371
+ readonly height: number
372
+ }
373
+
374
+ // Each month's solar production as a column split into what the home uses and what goes to the grid, with the
375
+ // home's use as a line across it. All figures come from the spec's `$monthly` expression. Hovering a month shows its
376
+ // figures; "Show figures" swaps the chart for a table of the same numbers.
377
+ export const MonthlyEnergyChart = ({ height }: MonthlyEnergyChartProps) => {
378
+ const plan = phx.frontend.useRootEntityState()
379
+ const { ref, width } = useWidth()
380
+ const [hovered, setHovered] = useState<number | null>(null)
381
+ const [asTable, setAsTable] = useState(false)
382
+ const months = plan.$monthly
383
+ const peak = Math.max(...months.map(month => Math.max(month.productionKwh, month.consumptionKwh)))
384
+ const { high, ticks } = niceScale(0, peak, 4)
385
+ const plotWidth = Math.max(width - MARGIN.left - MARGIN.right, 0)
386
+ const plotHeight = height - MARGIN.top - MARGIN.bottom
387
+ const band = plotWidth / months.length
388
+ const barWidth = Math.min(24, band * 0.62)
389
+ const y = (value: number) => MARGIN.top + plotHeight - (value / high) * plotHeight
390
+ const x = (index: number) => MARGIN.left + band * index + band / 2
391
+ const active = hovered === null ? undefined : months[hovered]
392
+
393
+ return (
394
+ <Box component="div" sx={{ display: 'grid', gap: 1.5 }}>
395
+ <Box component="div" sx={{ display: 'flex', flexWrap: 'wrap', alignItems: 'center', columnGap: 2, rowGap: 0.5 }}>
396
+ {LEGEND.map(item => (
397
+ <Box component="span" key={item.key} sx={{ display: 'inline-flex', alignItems: 'center', gap: 0.75 }}>
398
+ <Box
399
+ component="span"
400
+ aria-hidden
401
+ sx={
402
+ item.line
403
+ ? { inlineSize: 14, blockSize: 2, borderRadius: 1, bgcolor: item.color }
404
+ : { inlineSize: 10, blockSize: 10, borderRadius: 0.5, bgcolor: item.color }
405
+ }
406
+ />
407
+ <Typography component="span" sx={{ fontFamily: CHART.font, fontSize: 12, color: CHART.inkSoft }}>
408
+ {item.label}
409
+ </Typography>
410
+ </Box>
411
+ ))}
412
+ <ButtonBase
413
+ onClick={() => setAsTable(shown => !shown)}
414
+ sx={{
415
+ marginInlineStart: 'auto',
416
+ fontFamily: CHART.font,
417
+ fontSize: 12,
418
+ color: CHART.ink,
419
+ textDecoration: 'underline',
420
+ }}
421
+ >
422
+ {asTable ? 'Show chart' : 'Show figures'}
423
+ </ButtonBase>
424
+ </Box>
425
+
426
+ {/* Measured whether the chart or the table shows, so the chart comes back at the current width */}
427
+ <Box component="div" ref={ref}>
428
+ {asTable ? (
429
+ <Box
430
+ component="table"
431
+ sx={{
432
+ inlineSize: '100%',
433
+ borderCollapse: 'collapse',
434
+ fontFamily: CHART.font,
435
+ fontSize: 12,
436
+ color: CHART.ink,
437
+ }}
438
+ >
439
+ <thead>
440
+ <tr>
441
+ {['Month', 'Produced', 'Used at home', 'Sent to grid', 'Home use'].map(heading => (
442
+ <Box
443
+ component="th"
444
+ key={heading}
445
+ sx={{
446
+ paddingBlock: 0.5,
447
+ textAlign: 'end',
448
+ fontWeight: 500,
449
+ color: CHART.inkSoft,
450
+ '&:first-of-type': { textAlign: 'start' },
451
+ }}
452
+ >
453
+ {heading}
454
+ </Box>
455
+ ))}
456
+ </tr>
457
+ </thead>
458
+ <tbody>
459
+ {months.map(month => (
460
+ <Box component="tr" key={month.month} sx={{ borderBlockStart: `1px solid ${CHART.grid}` }}>
461
+ <Box component="td" sx={{ paddingBlock: 0.5 }}>
462
+ {month.month}
463
+ </Box>
464
+ {[month.productionKwh, month.selfUseKwh, month.exportKwh, month.consumptionKwh].map(
465
+ (value, index) => (
466
+ <Box component="td" key={index} sx={{ textAlign: 'end', fontVariantNumeric: 'tabular-nums' }}>
467
+ {Math.round(value).toLocaleString('en')}
468
+ </Box>
469
+ )
470
+ )}
471
+ </Box>
472
+ ))}
473
+ </tbody>
474
+ </Box>
475
+ ) : (
476
+ <Box component="div" sx={{ position: 'relative', blockSize: height }}>
477
+ {width > 0 && (
478
+ <svg
479
+ width={width}
480
+ height={height}
481
+ role="img"
482
+ aria-label="Solar production and home use by month"
483
+ onMouseLeave={() => setHovered(null)}
484
+ >
485
+ {ticks.map(tick => (
486
+ <g key={tick}>
487
+ <line
488
+ x1={MARGIN.left}
489
+ x2={width - MARGIN.right}
490
+ y1={y(tick)}
491
+ y2={y(tick)}
492
+ stroke={tick === 0 ? CHART.axis : CHART.grid}
493
+ strokeWidth={1}
494
+ />
495
+ <text
496
+ x={MARGIN.left - 8}
497
+ y={y(tick)}
498
+ textAnchor="end"
499
+ dominantBaseline="middle"
500
+ fill={CHART.inkSoft}
501
+ fontFamily={CHART.font}
502
+ fontSize={11}
503
+ >
504
+ {tick.toLocaleString('en')}
505
+ </text>
506
+ </g>
507
+ ))}
508
+
509
+ {hovered !== null && (
510
+ <rect
511
+ x={MARGIN.left + band * hovered}
512
+ y={MARGIN.top}
513
+ width={band}
514
+ height={plotHeight}
515
+ fill={CHART.grid}
516
+ opacity={0.6}
517
+ />
518
+ )}
519
+
520
+ {months.map((month, index) => {
521
+ const left = x(index) - barWidth / 2
522
+ const selfTop = y(month.selfUseKwh)
523
+ const exportTop = y(month.productionKwh)
524
+ const exportHeight = Math.max(selfTop - exportTop - GAP, 0)
525
+
526
+ return (
527
+ <g key={month.month}>
528
+ {exportHeight > 0.5 ? (
529
+ <>
530
+ <rect x={left} y={selfTop} width={barWidth} height={y(0) - selfTop} fill={SERIES.selfUse} />
531
+ <path d={roundedTop(left, exportTop, barWidth, exportHeight)} fill={SERIES.exported} />
532
+ </>
533
+ ) : (
534
+ <path d={roundedTop(left, selfTop, barWidth, y(0) - selfTop)} fill={SERIES.selfUse} />
535
+ )}
536
+ <text
537
+ x={x(index)}
538
+ y={height - 8}
539
+ textAnchor="middle"
540
+ fill={CHART.inkSoft}
541
+ fontFamily={CHART.font}
542
+ fontSize={11}
543
+ >
544
+ {/* A narrow chart keeps only the initial */}
545
+ {band < 34 ? month.month.slice(0, 1) : month.month}
546
+ </text>
547
+ </g>
548
+ )
549
+ })}
550
+
551
+ <polyline
552
+ points={months.map((month, index) => `${x(index)},${y(month.consumptionKwh)}`).join(' ')}
553
+ fill="none"
554
+ stroke={SERIES.consumption}
555
+ strokeWidth={2}
556
+ strokeLinejoin="round"
557
+ strokeLinecap="round"
558
+ />
559
+ {months.map((month, index) => (
560
+ <circle
561
+ key={month.month}
562
+ cx={x(index)}
563
+ cy={y(month.consumptionKwh)}
564
+ r={4}
565
+ fill={SERIES.consumption}
566
+ stroke={CHART.surface}
567
+ strokeWidth={2}
568
+ />
569
+ ))}
570
+
571
+ {/* Hit areas a full band wide and the plot's height, larger than the marks */}
572
+ {months.map((month, index) => (
573
+ <rect
574
+ key={month.month}
575
+ x={MARGIN.left + band * index}
576
+ y={MARGIN.top}
577
+ width={band}
578
+ height={plotHeight}
579
+ fill="transparent"
580
+ onMouseEnter={() => setHovered(index)}
581
+ />
582
+ ))}
583
+ </svg>
584
+ )}
585
+
586
+ {active !== undefined && hovered !== null && (
587
+ <Box
588
+ component="div"
589
+ role="tooltip"
590
+ sx={{
591
+ position: 'absolute',
592
+ insetBlockStart: 0,
593
+ insetInlineStart: Math.min(Math.max(x(hovered) - 90, 0), Math.max(width - 180, 0)),
594
+ inlineSize: 180,
595
+ padding: 1.25,
596
+ borderRadius: 1.5,
597
+ bgcolor: CHART.surface,
598
+ boxShadow: '0 6px 24px rgba(28, 40, 38, 0.16)',
599
+ pointerEvents: 'none',
600
+ fontFamily: CHART.font,
601
+ }}
602
+ >
603
+ <Typography sx={{ fontFamily: CHART.font, fontSize: 12, fontWeight: 600, color: CHART.ink }}>
604
+ {active.month}
605
+ </Typography>
606
+ {[
607
+ { label: 'Used at home', value: active.selfUseKwh, color: SERIES.selfUse },
608
+ { label: 'Sent to grid', value: active.exportKwh, color: SERIES.exported },
609
+ { label: 'Home use', value: active.consumptionKwh, color: SERIES.consumption },
610
+ ].map(row => (
611
+ <Box component="div" key={row.label} sx={{ display: 'flex', alignItems: 'center', gap: 0.75 }}>
612
+ <Box
613
+ component="span"
614
+ aria-hidden
615
+ sx={{ inlineSize: 8, blockSize: 8, borderRadius: '50%', bgcolor: row.color }}
616
+ />
617
+ <Typography
618
+ component="span"
619
+ sx={{ flex: 1, fontFamily: CHART.font, fontSize: 12, color: CHART.inkSoft }}
620
+ >
621
+ {row.label}
622
+ </Typography>
623
+ <Typography
624
+ component="span"
625
+ sx={{
626
+ fontFamily: CHART.font,
627
+ fontSize: 12,
628
+ color: CHART.ink,
629
+ fontVariantNumeric: 'tabular-nums',
630
+ }}
631
+ >
632
+ {kwh(row.value)}
633
+ </Typography>
634
+ </Box>
635
+ ))}
636
+ </Box>
637
+ )}
638
+ </Box>
639
+ )}
640
+ </Box>
641
+ </Box>
642
+ )
643
+ }
644
+ ```
645
+
646
+ ## A warning and a notice
647
+
648
+ The plan has two rules. More panels than the roof holds is a `warning`: the dashboard keeps showing the figures, so the household sees what the larger system would do, but a survey cannot be booked until the panels fit. A north-facing roof is a `notice`: it informs and never blocks.
649
+
650
+ ```yaml
651
+ invariants:
652
+ SolarPlan:
653
+ panelsFitRoof:
654
+ types:
655
+ - panelsExceedRoof
656
+ northFacing:
657
+ type: northFacing
658
+ severity: notice
659
+ message: A north-facing roof yields about 40 % less. An east-west layout on another roof usually pays back sooner.
660
+ ```
661
+
662
+ ```ts
663
+ import { phx } from '../../.phoenix/phx.js'
664
+
665
+ // More panels than the roof holds is a warning: the dashboard keeps showing the figures, and a survey cannot be
666
+ // booked until the panel count fits. A north-facing roof is only a notice, so it never blocks the booking.
667
+ export default phx.domain.implementCustomInvariants({
668
+ SolarPlan: {
669
+ panelsFitRoof: s => {
670
+ if (s.panels <= s.$roofPanelLimit) {
671
+ return []
672
+ }
673
+
674
+ return [
675
+ {
676
+ type: 'panelsExceedRoof',
677
+ severity: 'warning',
678
+ message: `${s.panels} panels need about ${s.$panelAreaM2} m² of roof; ${s.roofArea} m² holds at most ${s.$roofPanelLimit}. Lower the panel count or measure the roof again.`,
679
+ },
680
+ ]
681
+ },
682
+ northFacing: s => {
683
+ return s.orientation !== 'North'
684
+ },
685
+ },
686
+ })
687
+ ```
688
+
689
+ `PlannerInputs` shows both under the roof's inputs, from `phx.frontend.useFinalizeViolations()`, which lists the violations of the committed plan with their severity: the warning in amber, the notice in blue. `phx.frontend.useFinalizeActions()` reports the survey action `disabled` only for the warning.
690
+
691
+ ```tsx
692
+ import { Box, Typography } from '@mui/material'
693
+ import type { ReactNode } from 'react'
694
+
695
+ import { phx } from '../../.phoenix/phx.js'
696
+ import { PillField } from './PillField.js'
697
+ import { SliderField } from './SliderField.js'
698
+ import { SUNFOLD } from './tokens.js'
699
+
700
+ interface GroupProps {
701
+ readonly title: string
702
+ // The invariant types whose message belongs under this group
703
+ readonly messageTypes?: readonly string[]
704
+ readonly children: ReactNode
705
+ }
706
+
707
+ // A group of inputs with the message of an invariant the group can resolve: a warning, which blocks the booking, in
708
+ // amber, a notice, which only informs, in blue. `useFinalizeViolations` lists both.
709
+ const Group = ({ title, messageTypes = [], children }: GroupProps) => {
710
+ const { violations } = phx.frontend.useFinalizeViolations()
711
+ const resolve = phx.frontend.useResolveLocalizable()
712
+ const messages = (violations ?? []).filter(({ violation }) => messageTypes.includes(violation.type))
713
+
714
+ return (
715
+ <Box component="section" sx={{ display: 'grid', gap: 2 }}>
716
+ <Typography component="h3" sx={{ fontFamily: SUNFOLD.font, fontSize: 13, fontWeight: 600, color: SUNFOLD.muted }}>
717
+ {title}
718
+ </Typography>
719
+ {children}
720
+ {messages.map(({ violation }) => {
721
+ const isNotice = violation.severity === 'notice'
722
+
723
+ return (
724
+ <Typography
725
+ key={violation.type}
726
+ role={isNotice ? 'status' : 'alert'}
727
+ sx={{
728
+ paddingInline: 1.5,
729
+ paddingBlock: 1,
730
+ borderRadius: 2,
731
+ bgcolor: isNotice ? SUNFOLD.infoTint : SUNFOLD.warningTint,
732
+ color: isNotice ? SUNFOLD.info : SUNFOLD.warning,
733
+ fontFamily: SUNFOLD.font,
734
+ fontSize: 13,
735
+ lineHeight: 1.45,
736
+ }}
737
+ >
738
+ {resolve(violation.message)}
739
+ </Typography>
740
+ )
741
+ })}
742
+ </Box>
743
+ )
744
+ }
745
+
746
+ interface PlannerInputsProps {
747
+ readonly readOnly: boolean
748
+ }
749
+
750
+ // The household's inputs: the roof, the panels on it, the home's use and tariff, and the battery
751
+ export const PlannerInputs = ({ readOnly }: PlannerInputsProps) => {
752
+ const plan = phx.frontend.useRootEntityState()
753
+
754
+ return (
755
+ <Box component="div" sx={{ display: 'grid', gap: 3.5 }}>
756
+ <Group title="Your roof" messageTypes={['panelsExceedRoof', 'northFacing']}>
757
+ <SliderField instanceName="roofArea" label="Usable roof area" step={1} readOnly={readOnly} />
758
+ <PillField instanceName="orientation" label="Facing" readOnly={readOnly} />
759
+ <SliderField instanceName="panels" label="Panels" step={1} readOnly={readOnly} />
760
+ <Typography sx={{ marginBlockStart: -1.5, fontFamily: SUNFOLD.font, fontSize: 12, color: SUNFOLD.muted }}>
761
+ 430 W panels, 1.95 m² each. This roof holds up to {plan.$roofPanelLimit}.
762
+ </Typography>
763
+ </Group>
764
+ <Group title="Your home">
765
+ <SliderField instanceName="annualUse" label="Electricity used a year" step={100} readOnly={readOnly} />
766
+ <PillField instanceName="tariff" label="Tariff" readOnly={readOnly} />
767
+ </Group>
768
+ <Group title="Storage">
769
+ <PillField instanceName="battery" label="Home battery" readOnly={readOnly} />
770
+ </Group>
771
+ </Box>
772
+ )
773
+ }
774
+ ```
775
+
776
+ ## Book a home survey
777
+
778
+ The spec declares one finalize action. Its handler, `src/handlers/book-survey.ts`, stands in for the installer's booking service: it waits, then enters the `booked` navigation state. In that state the panel confirms the request and the inputs are locked until **Back to the plan**. A viewer of a shared configuration sees the cost and no button.
779
+
780
+ ```yaml
781
+ components:
782
+ SolarPlan:
783
+ finalizeAction:
784
+ survey:
785
+ variant: primary
786
+ label: Book a home survey
787
+ title: Ask an installer to survey the roof and confirm the plan
788
+ icon: CalendarCheck
789
+ handler: bookSurvey
790
+ ```
791
+
792
+ ```tsx
793
+ import { Alert, Box, Button, CircularProgress, Typography } from '@mui/material'
794
+
795
+ import { phx } from '../../.phoenix/phx.js'
796
+ import { SUNFOLD } from './tokens.js'
797
+
798
+ interface SurveyPanelProps {
799
+ // On a phone the panel is a bar: the cost beside the button, without the hints
800
+ readonly compact: boolean
801
+ }
802
+
803
+ // The system's cost, the `price` component's value, and the spec's `survey` finalize action. A warning blocks the
804
+ // booking and its `hints` say why; a notice does not. In the `booked` navigation state the panel confirms the
805
+ // request instead.
806
+ export const SurveyPanel = ({ compact }: SurveyPanelProps) => {
807
+ const cost = phx.frontend.useRootEntityPrice()
808
+ const { primary, hints } = phx.frontend.useFinalizeActions()
809
+ const navigationState = phx.frontend.useActiveNavigationState()
810
+ const navigate = phx.frontend.useNavigate()
811
+ const { accessInfo } = phx.frontend.useAccessService()
812
+ const isPending = primary?.isPending ?? false
813
+
814
+ if (navigationState === 'booked') {
815
+ return (
816
+ <Box component="div" role="status" sx={{ display: 'flex', alignItems: 'center', gap: 2 }}>
817
+ <Box component="div" sx={{ display: 'grid', flex: 1 }}>
818
+ <Typography sx={{ fontFamily: SUNFOLD.font, fontSize: 16, fontWeight: 600, color: SUNFOLD.green }}>
819
+ Survey requested
820
+ </Typography>
821
+ <Typography sx={{ fontFamily: SUNFOLD.font, fontSize: 13, color: SUNFOLD.muted }}>
822
+ An installer calls within two working days.
823
+ </Typography>
824
+ </Box>
825
+ <Button
826
+ onClick={() => navigate('plan')}
827
+ sx={{
828
+ fontFamily: SUNFOLD.font,
829
+ fontSize: 13,
830
+ color: SUNFOLD.ink,
831
+ textTransform: 'none',
832
+ textDecoration: 'underline',
833
+ }}
834
+ >
835
+ Back to the plan
836
+ </Button>
837
+ </Box>
838
+ )
839
+ }
840
+
841
+ const showButton = primary !== null && !accessInfo.viewMode
842
+
843
+ return (
844
+ <Box component="div" sx={{ display: 'grid', gap: 1.25 }}>
845
+ <Box
846
+ component="div"
847
+ sx={{
848
+ display: 'flex',
849
+ flexDirection: compact ? 'row' : 'column',
850
+ alignItems: compact ? 'center' : 'stretch',
851
+ justifyContent: 'space-between',
852
+ gap: compact ? 2 : 1.5,
853
+ }}
854
+ >
855
+ <Box component="div" sx={{ display: 'grid' }}>
856
+ <Typography sx={{ fontFamily: SUNFOLD.font, fontSize: 12, color: SUNFOLD.muted }}>Installed cost</Typography>
857
+ <Typography
858
+ sx={{ fontFamily: SUNFOLD.font, fontSize: compact ? 20 : 26, fontWeight: 600, color: SUNFOLD.ink }}
859
+ >
860
+ {cost}
861
+ </Typography>
862
+ </Box>
863
+ {showButton && (
864
+ <Button
865
+ variant="contained"
866
+ disableElevation
867
+ disabled={primary.disabled || isPending}
868
+ onClick={() => void primary.run()}
869
+ title={primary.title}
870
+ startIcon={isPending ? <CircularProgress size={16} color="inherit" /> : undefined}
871
+ sx={{
872
+ minBlockSize: 46,
873
+ paddingInline: 2.5,
874
+ borderRadius: 999,
875
+ bgcolor: SUNFOLD.green,
876
+ fontFamily: SUNFOLD.font,
877
+ fontSize: 14,
878
+ fontWeight: 500,
879
+ textTransform: 'none',
880
+ '&:hover': { bgcolor: SUNFOLD.greenDark },
881
+ '&.Mui-disabled': { bgcolor: SUNFOLD.line, color: SUNFOLD.muted },
882
+ }}
883
+ >
884
+ {isPending ? 'Booking…' : primary.label}
885
+ </Button>
886
+ )}
887
+ </Box>
888
+ {!compact && showButton && primary.disabled && hints && (
889
+ <Typography sx={{ fontFamily: SUNFOLD.font, fontSize: 12, color: SUNFOLD.warning }}>{hints}</Typography>
890
+ )}
891
+ {primary?.error && <Alert severity="error">The survey could not be booked: {primary.error.message}</Alert>}
892
+ </Box>
893
+ )
894
+ }
895
+ ```
896
+
897
+ ## On a phone
898
+
899
+ The same layout in a frame 390 pixels wide: the four figures in two rows, the inputs in a card below them, the charts stacked under the inputs, and the cost with **Book a home survey** in a bar at the bottom. Opened on its own from the sidebar, the **Phone** story sets Storybook's viewport to 390 × 844.
900
+
901
+ ## Test cases
902
+
903
+ - The plan opens with 14 panels on a 42 m² south-facing roof, no battery, a flat rate and 4,500 kWh a year. The tiles read **6.0 kWp**, **6,020 kWh**, **30 %** and **8.2 years**, the installed cost is **€7,821.00**, and the split bar shows 30 % used at home.
904
+ - In **Your solar year**, the summer columns are mostly sent to the grid and the winter ones mostly used at home, and the home's use is a line that is higher in winter. Hovering June shows 142 kWh used at home, 641 kWh sent to the grid and 315 kWh of home use.
905
+ - Moving the pointer across **When it pays back** reads off the year; the curve crosses zero at the marked payback year.
906
+ - A 10 kWh battery, the time-of-use tariff and 18 panels change every tile and chart: 7.7 kWp, 7,740 kWh, 44 % used at home and 9.8 years, at €16,027.00. The columns' home part grows.
907
+ - 22 panels on the 42 m² roof show "22 panels need about 43 m² of roof; 42 m² holds at most 18. …" and disable **Book a home survey**; a roof of 52 m² clears it.
908
+ - **North** shows the notice "A north-facing roof yields about 40 % less. …" in blue, lowers the production and lengthens the payback, and leaves **Book a home survey** enabled.
909
+ - **Show figures** shows a table of the twelve months; **Show chart** brings the chart back.
910
+ - **Book a home survey** shows a spinner and "Booking…", then "Survey requested"; the inputs are locked until **Back to the plan**.
911
+ - In the **Phone** story the tiles sit in two rows, the inputs and charts scroll below, the same changes update every figure, and the bottom bar confirms the booking.
912
+ - The browser console shows no errors, the page has no `canvas` element, and no model or texture is requested.
913
+
914
+ ## What this layout leaves out
915
+
916
+ - **Read mode.** The inputs are inert and **Book a home survey** is hidden while `phx.frontend.useAccessService().accessInfo.viewMode` is set, but the example ships no read template; [Custom Layout → Serve read mode](?path=/docs/layouts-custom-layout--docs#serve-read-mode) shows one.
917
+ - **Real yields and prices.** The model is an illustration. A deployed planner would read the site's irradiance and the household's tariff from data the project publishes, see [Data Sources](?path=/docs/phoenix-data-sources--docs).
918
+ - **A dark theme.** The page is the installer's own light design; the configurator's theme does not switch it.
919
+ - **The built-in arrangement.** Header, sidebar, footer, tabs and the preview start screen are not mounted; [Layout Slots](?path=/docs/phoenix-layout-slots--docs) lists every slot a project layout can mount.
920
+
921
+ ## Related pages
922
+
923
+ - [Ardent Compressor](?path=/docs/layouts-gallery-ardent-compressor--docs) is a quote form with steps, and [Fenwick Window](?path=/docs/layouts-gallery-fenwick-window--docs) a live shop drawing; neither mounts a canvas either.
924
+ - [Custom Layout](?path=/docs/layouts-custom-layout--docs) explains a project layout step by step.
925
+ - [Configurator Interface → Hooks for a Project Layout](?path=/docs/phoenix-configurator-interface--docs#hooks-for-a-project-layout) lists the hooks used here.
926
+ - [Domain Model → Expressions](?path=/docs/phoenix-domain-model--docs#expressions) and [Domain Model → Invariants](?path=/docs/phoenix-domain-model--docs#invariants) describe declared expressions and severities.
927
+
928
+ ## Complete Implementation
929
+
930
+ {/* AUTO-GENERATED SECTION: This section is automatically updated by 'phoenix story build' */}
931
+
932
+ <details>
933
+ <summary>Click to view the complete implementation files</summary>
934
+
935
+ ### ./spec/domain.yaml
936
+
937
+ ```yaml
938
+ model:
939
+ latest:
940
+ entityTypes:
941
+ - SolarPlan
942
+ aliases:
943
+ RootEntity:
944
+ - SolarPlan
945
+ commonTypes:
946
+ Orientation:
947
+ enum:
948
+ - South
949
+ - SouthEastWest
950
+ - EastWest
951
+ - North
952
+ Battery:
953
+ enum:
954
+ - None
955
+ - Kwh5
956
+ - Kwh10
957
+ - Kwh15
958
+ Tariff:
959
+ enum:
960
+ - Flat
961
+ - TimeOfUse
962
+ - ExportPlus
963
+ shapes:
964
+ SolarPlan:
965
+ roofArea:
966
+ type: number
967
+ orientation:
968
+ $ref: '#/model/latest/commonTypes/Orientation'
969
+ panels:
970
+ type: number
971
+ battery:
972
+ $ref: '#/model/latest/commonTypes/Battery'
973
+ tariff:
974
+ $ref: '#/model/latest/commonTypes/Tariff'
975
+ annualUse:
976
+ type: number
977
+
978
+ presets:
979
+ - rootEntityType: SolarPlan
980
+ initialDomainEntities:
981
+ - id: SolarPlan-1
982
+ type: SolarPlan
983
+ roofArea: 42
984
+ orientation: South
985
+ panels: 14
986
+ battery: None
987
+ tariff: Flat
988
+ annualUse: 4500
989
+
990
+ navigationStates:
991
+ - plan
992
+ - booked
993
+
994
+ # Every figure on the dashboard: declared here, computed in src/expressions/solar.ts from the roof, the panels, the
995
+ # battery, the tariff and the household's use
996
+ expressions:
997
+ SolarPlan:
998
+ $systemKwp:
999
+ type: number
1000
+ $roofPanelLimit:
1001
+ type: number
1002
+ $panelAreaM2:
1003
+ type: number
1004
+ $annualProductionKwh:
1005
+ type: number
1006
+ $monthly:
1007
+ type: array
1008
+ items:
1009
+ type: object
1010
+ properties:
1011
+ month:
1012
+ type: string
1013
+ productionKwh:
1014
+ type: number
1015
+ consumptionKwh:
1016
+ type: number
1017
+ selfUseKwh:
1018
+ type: number
1019
+ exportKwh:
1020
+ type: number
1021
+ required:
1022
+ - month
1023
+ - productionKwh
1024
+ - consumptionKwh
1025
+ - selfUseKwh
1026
+ - exportKwh
1027
+ additionalProperties: false
1028
+ $selfConsumption:
1029
+ type: number
1030
+ $selfSufficiency:
1031
+ type: number
1032
+ $annualSavings:
1033
+ type: number
1034
+ $systemCost:
1035
+ type: number
1036
+ $cumulativeSavings:
1037
+ type: array
1038
+ items:
1039
+ type: number
1040
+ $paybackYears:
1041
+ type: number
1042
+ $co2Tonnes:
1043
+ type: number
1044
+
1045
+ invariants:
1046
+ SolarPlan:
1047
+ panelsFitRoof:
1048
+ types:
1049
+ - panelsExceedRoof
1050
+ northFacing:
1051
+ type: northFacing
1052
+ severity: notice
1053
+ message: A north-facing roof yields about 40 % less. An east-west layout on another roof usually pays back sooner.
1054
+
1055
+ components:
1056
+ SolarPlan:
1057
+ price:
1058
+ main:
1059
+ price:
1060
+ $read: $systemCost
1061
+ currency: EUR
1062
+ finalizeAction:
1063
+ survey:
1064
+ variant: primary
1065
+ label: Book a home survey
1066
+ title: Ask an installer to survey the roof and confirm the plan
1067
+ icon: CalendarCheck
1068
+ handler: bookSurvey
1069
+ genericDimension:
1070
+ roofArea:
1071
+ value:
1072
+ $bind: roofArea
1073
+ min: 10
1074
+ max: 120
1075
+ unit: m²
1076
+ decimalPlaces: 0
1077
+ panels:
1078
+ value:
1079
+ $bind: panels
1080
+ min: 4
1081
+ max: 40
1082
+ unit: panels
1083
+ decimalPlaces: 0
1084
+ annualUse:
1085
+ value:
1086
+ $bind: annualUse
1087
+ min: 1500
1088
+ max: 12000
1089
+ unit: kWh
1090
+ decimalPlaces: 0
1091
+ attributeSelection:
1092
+ orientation:
1093
+ value:
1094
+ $bind: orientation
1095
+ options:
1096
+ - label: South
1097
+ value: South
1098
+ - label: South-east or south-west
1099
+ value: SouthEastWest
1100
+ - label: East and west
1101
+ value: EastWest
1102
+ - label: North
1103
+ value: North
1104
+ battery:
1105
+ value:
1106
+ $bind: battery
1107
+ options:
1108
+ - label: None
1109
+ value: None
1110
+ - label: 5 kWh
1111
+ value: Kwh5
1112
+ - label: 10 kWh
1113
+ value: Kwh10
1114
+ - label: 15 kWh
1115
+ value: Kwh15
1116
+ tariff:
1117
+ value:
1118
+ $bind: tariff
1119
+ options:
1120
+ - label: Flat rate
1121
+ description: €0.32 per kWh bought, €0.08 per kWh sold
1122
+ value: Flat
1123
+ - label: Time of use
1124
+ description: Cheap nights, dear evenings; a battery shifts the evening
1125
+ value: TimeOfUse
1126
+ - label: Export plus
1127
+ description: €0.15 per kWh sold to the grid
1128
+ value: ExportPlus
1129
+ ```
1130
+
1131
+ ### ./src/\_charts/EnergySplitBar.tsx
1132
+
1133
+ ```tsx
1134
+ import { Box, Typography } from '@mui/material'
1135
+
1136
+ import { phx } from '../../.phoenix/phx.js'
1137
+ import { CHART, SERIES } from './chart-style.js'
1138
+
1139
+ // Where a year of solar power goes, as one bar split between the home and the grid, from the spec's `$monthly` and
1140
+ // `$selfConsumption` expressions. A battery moves the split towards the home.
1141
+ export const EnergySplitBar = () => {
1142
+ const plan = phx.frontend.useRootEntityState()
1143
+ const selfUse = plan.$monthly.reduce((sum, month) => sum + month.selfUseKwh, 0)
1144
+ const exported = plan.$monthly.reduce((sum, month) => sum + month.exportKwh, 0)
1145
+ const share = plan.$selfConsumption
1146
+ const parts = [
1147
+ { key: 'home', label: 'Used at home', kwh: selfUse, share, color: SERIES.selfUse },
1148
+ { key: 'grid', label: 'Sent to the grid', kwh: exported, share: 1 - share, color: SERIES.exported },
1149
+ ]
1150
+
1151
+ return (
1152
+ <Box component="div" sx={{ display: 'grid', gap: 1.5 }}>
1153
+ <Box
1154
+ component="div"
1155
+ role="img"
1156
+ aria-label={`${Math.round(share * 100)} % of the solar power is used at home`}
1157
+ sx={{ display: 'flex', gap: '2px', blockSize: 20 }}
1158
+ >
1159
+ {parts.map((part, index) => (
1160
+ <Box
1161
+ component="span"
1162
+ key={part.key}
1163
+ sx={{
1164
+ flexBasis: `${part.share * 100}%`,
1165
+ minInlineSize: part.share > 0 ? 4 : 0,
1166
+ bgcolor: part.color,
1167
+ borderStartStartRadius: index === 0 ? 4 : 0,
1168
+ borderEndStartRadius: index === 0 ? 4 : 0,
1169
+ borderStartEndRadius: index === parts.length - 1 ? 4 : 0,
1170
+ borderEndEndRadius: index === parts.length - 1 ? 4 : 0,
1171
+ transition: 'flex-basis 240ms ease-out',
1172
+ }}
1173
+ />
1174
+ ))}
1175
+ </Box>
1176
+ <Box component="div" sx={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 2 }}>
1177
+ {parts.map(part => (
1178
+ <Box component="div" key={part.key} sx={{ display: 'grid', gap: 0.25 }}>
1179
+ <Box component="div" sx={{ display: 'flex', alignItems: 'center', gap: 0.75 }}>
1180
+ <Box
1181
+ component="span"
1182
+ aria-hidden
1183
+ sx={{ inlineSize: 10, blockSize: 10, borderRadius: 0.5, bgcolor: part.color }}
1184
+ />
1185
+ <Typography sx={{ fontFamily: CHART.font, fontSize: 12, color: CHART.inkSoft }}>{part.label}</Typography>
1186
+ </Box>
1187
+ <Typography sx={{ fontFamily: CHART.font, fontSize: 20, fontWeight: 600, color: CHART.ink }}>
1188
+ {Math.round(part.share * 100)} %
1189
+ </Typography>
1190
+ <Typography sx={{ fontFamily: CHART.font, fontSize: 12, color: CHART.inkSoft }}>
1191
+ {Math.round(part.kwh).toLocaleString('en')} kWh a year
1192
+ </Typography>
1193
+ </Box>
1194
+ ))}
1195
+ </Box>
1196
+ <Typography sx={{ fontFamily: CHART.font, fontSize: 13, color: CHART.ink }}>
1197
+ Solar covers {Math.round(plan.$selfSufficiency * 100)} % of the home's {plan.annualUse.toLocaleString('en')}{' '}
1198
+ kWh.
1199
+ </Typography>
1200
+ </Box>
1201
+ )
1202
+ }
1203
+ ```
1204
+
1205
+ ### ./src/\_charts/MonthlyEnergyChart.tsx
1206
+
1207
+ ```tsx
1208
+ import { Box, ButtonBase, Typography } from '@mui/material'
1209
+ import { useState } from 'react'
1210
+
1211
+ import { phx } from '../../.phoenix/phx.js'
1212
+ import { CHART, SERIES } from './chart-style.js'
1213
+ import { niceScale } from './nice-scale.js'
1214
+ import { useWidth } from './use-width.js'
1215
+
1216
+ const MARGIN = { top: 12, right: 8, bottom: 26, left: 48 }
1217
+ const GAP = 2
1218
+ const RADIUS = 4
1219
+
1220
+ const kwh = (value: number) => {
1221
+ return `${Math.round(value).toLocaleString('en')} kWh`
1222
+ }
1223
+
1224
+ // A column segment whose top corners are rounded, so the stack ends in a 4px data-end and stays square at the
1225
+ // baseline
1226
+ const roundedTop = (x: number, y: number, width: number, height: number) => {
1227
+ const r = Math.min(RADIUS, height, width / 2)
1228
+
1229
+ return `M${x},${y + height} V${y + r} Q${x},${y} ${x + r},${y} H${x + width - r} Q${x + width},${y} ${x + width},${y + r} V${y + height} Z`
1230
+ }
1231
+
1232
+ const LEGEND = [
1233
+ { key: 'selfUse', label: 'Solar used at home', color: SERIES.selfUse, line: false },
1234
+ { key: 'exported', label: 'Solar sent to the grid', color: SERIES.exported, line: false },
1235
+ { key: 'consumption', label: 'Home use', color: SERIES.consumption, line: true },
1236
+ ]
1237
+
1238
+ interface MonthlyEnergyChartProps {
1239
+ readonly height: number
1240
+ }
1241
+
1242
+ // Each month's solar production as a column split into what the home uses and what goes to the grid, with the
1243
+ // home's use as a line across it. All figures come from the spec's `$monthly` expression. Hovering a month shows its
1244
+ // figures; "Show figures" swaps the chart for a table of the same numbers.
1245
+ export const MonthlyEnergyChart = ({ height }: MonthlyEnergyChartProps) => {
1246
+ const plan = phx.frontend.useRootEntityState()
1247
+ const { ref, width } = useWidth()
1248
+ const [hovered, setHovered] = useState<number | null>(null)
1249
+ const [asTable, setAsTable] = useState(false)
1250
+ const months = plan.$monthly
1251
+ const peak = Math.max(...months.map(month => Math.max(month.productionKwh, month.consumptionKwh)))
1252
+ const { high, ticks } = niceScale(0, peak, 4)
1253
+ const plotWidth = Math.max(width - MARGIN.left - MARGIN.right, 0)
1254
+ const plotHeight = height - MARGIN.top - MARGIN.bottom
1255
+ const band = plotWidth / months.length
1256
+ const barWidth = Math.min(24, band * 0.62)
1257
+ const y = (value: number) => MARGIN.top + plotHeight - (value / high) * plotHeight
1258
+ const x = (index: number) => MARGIN.left + band * index + band / 2
1259
+ const active = hovered === null ? undefined : months[hovered]
1260
+
1261
+ return (
1262
+ <Box component="div" sx={{ display: 'grid', gap: 1.5 }}>
1263
+ <Box component="div" sx={{ display: 'flex', flexWrap: 'wrap', alignItems: 'center', columnGap: 2, rowGap: 0.5 }}>
1264
+ {LEGEND.map(item => (
1265
+ <Box component="span" key={item.key} sx={{ display: 'inline-flex', alignItems: 'center', gap: 0.75 }}>
1266
+ <Box
1267
+ component="span"
1268
+ aria-hidden
1269
+ sx={
1270
+ item.line
1271
+ ? { inlineSize: 14, blockSize: 2, borderRadius: 1, bgcolor: item.color }
1272
+ : { inlineSize: 10, blockSize: 10, borderRadius: 0.5, bgcolor: item.color }
1273
+ }
1274
+ />
1275
+ <Typography component="span" sx={{ fontFamily: CHART.font, fontSize: 12, color: CHART.inkSoft }}>
1276
+ {item.label}
1277
+ </Typography>
1278
+ </Box>
1279
+ ))}
1280
+ <ButtonBase
1281
+ onClick={() => setAsTable(shown => !shown)}
1282
+ sx={{
1283
+ marginInlineStart: 'auto',
1284
+ fontFamily: CHART.font,
1285
+ fontSize: 12,
1286
+ color: CHART.ink,
1287
+ textDecoration: 'underline',
1288
+ }}
1289
+ >
1290
+ {asTable ? 'Show chart' : 'Show figures'}
1291
+ </ButtonBase>
1292
+ </Box>
1293
+
1294
+ {/* Measured whether the chart or the table shows, so the chart comes back at the current width */}
1295
+ <Box component="div" ref={ref}>
1296
+ {asTable ? (
1297
+ <Box
1298
+ component="table"
1299
+ sx={{
1300
+ inlineSize: '100%',
1301
+ borderCollapse: 'collapse',
1302
+ fontFamily: CHART.font,
1303
+ fontSize: 12,
1304
+ color: CHART.ink,
1305
+ }}
1306
+ >
1307
+ <thead>
1308
+ <tr>
1309
+ {['Month', 'Produced', 'Used at home', 'Sent to grid', 'Home use'].map(heading => (
1310
+ <Box
1311
+ component="th"
1312
+ key={heading}
1313
+ sx={{
1314
+ paddingBlock: 0.5,
1315
+ textAlign: 'end',
1316
+ fontWeight: 500,
1317
+ color: CHART.inkSoft,
1318
+ '&:first-of-type': { textAlign: 'start' },
1319
+ }}
1320
+ >
1321
+ {heading}
1322
+ </Box>
1323
+ ))}
1324
+ </tr>
1325
+ </thead>
1326
+ <tbody>
1327
+ {months.map(month => (
1328
+ <Box component="tr" key={month.month} sx={{ borderBlockStart: `1px solid ${CHART.grid}` }}>
1329
+ <Box component="td" sx={{ paddingBlock: 0.5 }}>
1330
+ {month.month}
1331
+ </Box>
1332
+ {[month.productionKwh, month.selfUseKwh, month.exportKwh, month.consumptionKwh].map(
1333
+ (value, index) => (
1334
+ <Box component="td" key={index} sx={{ textAlign: 'end', fontVariantNumeric: 'tabular-nums' }}>
1335
+ {Math.round(value).toLocaleString('en')}
1336
+ </Box>
1337
+ )
1338
+ )}
1339
+ </Box>
1340
+ ))}
1341
+ </tbody>
1342
+ </Box>
1343
+ ) : (
1344
+ <Box component="div" sx={{ position: 'relative', blockSize: height }}>
1345
+ {width > 0 && (
1346
+ <svg
1347
+ width={width}
1348
+ height={height}
1349
+ role="img"
1350
+ aria-label="Solar production and home use by month"
1351
+ onMouseLeave={() => setHovered(null)}
1352
+ >
1353
+ {ticks.map(tick => (
1354
+ <g key={tick}>
1355
+ <line
1356
+ x1={MARGIN.left}
1357
+ x2={width - MARGIN.right}
1358
+ y1={y(tick)}
1359
+ y2={y(tick)}
1360
+ stroke={tick === 0 ? CHART.axis : CHART.grid}
1361
+ strokeWidth={1}
1362
+ />
1363
+ <text
1364
+ x={MARGIN.left - 8}
1365
+ y={y(tick)}
1366
+ textAnchor="end"
1367
+ dominantBaseline="middle"
1368
+ fill={CHART.inkSoft}
1369
+ fontFamily={CHART.font}
1370
+ fontSize={11}
1371
+ >
1372
+ {tick.toLocaleString('en')}
1373
+ </text>
1374
+ </g>
1375
+ ))}
1376
+
1377
+ {hovered !== null && (
1378
+ <rect
1379
+ x={MARGIN.left + band * hovered}
1380
+ y={MARGIN.top}
1381
+ width={band}
1382
+ height={plotHeight}
1383
+ fill={CHART.grid}
1384
+ opacity={0.6}
1385
+ />
1386
+ )}
1387
+
1388
+ {months.map((month, index) => {
1389
+ const left = x(index) - barWidth / 2
1390
+ const selfTop = y(month.selfUseKwh)
1391
+ const exportTop = y(month.productionKwh)
1392
+ const exportHeight = Math.max(selfTop - exportTop - GAP, 0)
1393
+
1394
+ return (
1395
+ <g key={month.month}>
1396
+ {exportHeight > 0.5 ? (
1397
+ <>
1398
+ <rect x={left} y={selfTop} width={barWidth} height={y(0) - selfTop} fill={SERIES.selfUse} />
1399
+ <path d={roundedTop(left, exportTop, barWidth, exportHeight)} fill={SERIES.exported} />
1400
+ </>
1401
+ ) : (
1402
+ <path d={roundedTop(left, selfTop, barWidth, y(0) - selfTop)} fill={SERIES.selfUse} />
1403
+ )}
1404
+ <text
1405
+ x={x(index)}
1406
+ y={height - 8}
1407
+ textAnchor="middle"
1408
+ fill={CHART.inkSoft}
1409
+ fontFamily={CHART.font}
1410
+ fontSize={11}
1411
+ >
1412
+ {/* A narrow chart keeps only the initial */}
1413
+ {band < 34 ? month.month.slice(0, 1) : month.month}
1414
+ </text>
1415
+ </g>
1416
+ )
1417
+ })}
1418
+
1419
+ <polyline
1420
+ points={months.map((month, index) => `${x(index)},${y(month.consumptionKwh)}`).join(' ')}
1421
+ fill="none"
1422
+ stroke={SERIES.consumption}
1423
+ strokeWidth={2}
1424
+ strokeLinejoin="round"
1425
+ strokeLinecap="round"
1426
+ />
1427
+ {months.map((month, index) => (
1428
+ <circle
1429
+ key={month.month}
1430
+ cx={x(index)}
1431
+ cy={y(month.consumptionKwh)}
1432
+ r={4}
1433
+ fill={SERIES.consumption}
1434
+ stroke={CHART.surface}
1435
+ strokeWidth={2}
1436
+ />
1437
+ ))}
1438
+
1439
+ {/* Hit areas a full band wide and the plot's height, larger than the marks */}
1440
+ {months.map((month, index) => (
1441
+ <rect
1442
+ key={month.month}
1443
+ x={MARGIN.left + band * index}
1444
+ y={MARGIN.top}
1445
+ width={band}
1446
+ height={plotHeight}
1447
+ fill="transparent"
1448
+ onMouseEnter={() => setHovered(index)}
1449
+ />
1450
+ ))}
1451
+ </svg>
1452
+ )}
1453
+
1454
+ {active !== undefined && hovered !== null && (
1455
+ <Box
1456
+ component="div"
1457
+ role="tooltip"
1458
+ sx={{
1459
+ position: 'absolute',
1460
+ insetBlockStart: 0,
1461
+ insetInlineStart: Math.min(Math.max(x(hovered) - 90, 0), Math.max(width - 180, 0)),
1462
+ inlineSize: 180,
1463
+ padding: 1.25,
1464
+ borderRadius: 1.5,
1465
+ bgcolor: CHART.surface,
1466
+ boxShadow: '0 6px 24px rgba(28, 40, 38, 0.16)',
1467
+ pointerEvents: 'none',
1468
+ fontFamily: CHART.font,
1469
+ }}
1470
+ >
1471
+ <Typography sx={{ fontFamily: CHART.font, fontSize: 12, fontWeight: 600, color: CHART.ink }}>
1472
+ {active.month}
1473
+ </Typography>
1474
+ {[
1475
+ { label: 'Used at home', value: active.selfUseKwh, color: SERIES.selfUse },
1476
+ { label: 'Sent to grid', value: active.exportKwh, color: SERIES.exported },
1477
+ { label: 'Home use', value: active.consumptionKwh, color: SERIES.consumption },
1478
+ ].map(row => (
1479
+ <Box component="div" key={row.label} sx={{ display: 'flex', alignItems: 'center', gap: 0.75 }}>
1480
+ <Box
1481
+ component="span"
1482
+ aria-hidden
1483
+ sx={{ inlineSize: 8, blockSize: 8, borderRadius: '50%', bgcolor: row.color }}
1484
+ />
1485
+ <Typography
1486
+ component="span"
1487
+ sx={{ flex: 1, fontFamily: CHART.font, fontSize: 12, color: CHART.inkSoft }}
1488
+ >
1489
+ {row.label}
1490
+ </Typography>
1491
+ <Typography
1492
+ component="span"
1493
+ sx={{
1494
+ fontFamily: CHART.font,
1495
+ fontSize: 12,
1496
+ color: CHART.ink,
1497
+ fontVariantNumeric: 'tabular-nums',
1498
+ }}
1499
+ >
1500
+ {kwh(row.value)}
1501
+ </Typography>
1502
+ </Box>
1503
+ ))}
1504
+ </Box>
1505
+ )}
1506
+ </Box>
1507
+ )}
1508
+ </Box>
1509
+ </Box>
1510
+ )
1511
+ }
1512
+ ```
1513
+
1514
+ ### ./src/\_charts/PaybackChart.tsx
1515
+
1516
+ ```tsx
1517
+ import { Box, Typography } from '@mui/material'
1518
+ import type { MouseEvent } from 'react'
1519
+ import { useState } from 'react'
1520
+
1521
+ import { phx } from '../../.phoenix/phx.js'
1522
+ import { CHART } from './chart-style.js'
1523
+ import { niceScale } from './nice-scale.js'
1524
+ import { useWidth } from './use-width.js'
1525
+
1526
+ const MARGIN = { top: 16, right: 16, bottom: 26, left: 56 }
1527
+ const LINE = '#1f6f54'
1528
+ const YEAR_TICKS = [0, 5, 10, 15, 20, 25]
1529
+
1530
+ const euro = (value: number) => {
1531
+ return value.toLocaleString('en-IE', { style: 'currency', currency: 'EUR', maximumFractionDigits: 0 })
1532
+ }
1533
+
1534
+ interface PaybackChartProps {
1535
+ readonly height: number
1536
+ }
1537
+
1538
+ // The money the system has returned, year by year over the panels' 25 years, from the spec's `$cumulativeSavings`
1539
+ // expression: it starts at minus the system's cost and crosses zero in the payback year, which is marked. Moving the
1540
+ // pointer across the chart reads off any year.
1541
+ export const PaybackChart = ({ height }: PaybackChartProps) => {
1542
+ const plan = phx.frontend.useRootEntityState()
1543
+ const { ref, width } = useWidth()
1544
+ const [year, setYear] = useState<number | null>(null)
1545
+ const totals = plan.$cumulativeSavings
1546
+ const lastYear = totals.length - 1
1547
+ const { low, high, ticks } = niceScale(Math.min(...totals), Math.max(...totals, 0), 4)
1548
+ const plotWidth = Math.max(width - MARGIN.left - MARGIN.right, 0)
1549
+ const plotHeight = height - MARGIN.top - MARGIN.bottom
1550
+ const x = (value: number) => MARGIN.left + (value / lastYear) * plotWidth
1551
+ const y = (value: number) => MARGIN.top + ((high - value) / (high - low)) * plotHeight
1552
+ const points = totals.map((total, index) => `${x(index)},${y(total)}`)
1553
+ const payback = plan.$paybackYears
1554
+ const paysBack = Number.isFinite(payback) && payback <= lastYear
1555
+ const hoveredTotal = year === null ? null : totals[year]
1556
+
1557
+ const handleMove = (event: MouseEvent<SVGRectElement>) => {
1558
+ const bounds = event.currentTarget.getBoundingClientRect()
1559
+ const fraction = (event.clientX - bounds.left) / bounds.width
1560
+
1561
+ setYear(Math.min(lastYear, Math.max(0, Math.round(fraction * lastYear))))
1562
+ }
1563
+
1564
+ return (
1565
+ <Box component="div" ref={ref} sx={{ position: 'relative', blockSize: height }}>
1566
+ {width > 0 && (
1567
+ <svg
1568
+ width={width}
1569
+ height={height}
1570
+ role="img"
1571
+ aria-label={
1572
+ paysBack
1573
+ ? `The system pays back after ${payback.toFixed(1)} years`
1574
+ : 'The system does not pay back within 25 years'
1575
+ }
1576
+ >
1577
+ {ticks.map(tick => (
1578
+ <g key={tick}>
1579
+ <line
1580
+ x1={MARGIN.left}
1581
+ x2={width - MARGIN.right}
1582
+ y1={y(tick)}
1583
+ y2={y(tick)}
1584
+ stroke={tick === 0 ? CHART.axis : CHART.grid}
1585
+ strokeWidth={1}
1586
+ />
1587
+ <text
1588
+ x={MARGIN.left - 8}
1589
+ y={y(tick)}
1590
+ textAnchor="end"
1591
+ dominantBaseline="middle"
1592
+ fill={CHART.inkSoft}
1593
+ fontFamily={CHART.font}
1594
+ fontSize={11}
1595
+ >
1596
+ {tick === 0 ? '€0' : `${tick < 0 ? '−' : ''}€${Math.abs(tick / 1000)}k`}
1597
+ </text>
1598
+ </g>
1599
+ ))}
1600
+ {YEAR_TICKS.map(tick => (
1601
+ <text
1602
+ key={tick}
1603
+ x={x(tick)}
1604
+ y={height - 8}
1605
+ textAnchor="middle"
1606
+ fill={CHART.inkSoft}
1607
+ fontFamily={CHART.font}
1608
+ fontSize={11}
1609
+ >
1610
+ {tick === 0 ? 'Year 0' : tick}
1611
+ </text>
1612
+ ))}
1613
+
1614
+ {/* A wash between the line and zero: what is still owed below, what is earned above */}
1615
+ <polygon points={`${x(0)},${y(0)} ${points.join(' ')} ${x(lastYear)},${y(0)}`} fill={LINE} opacity={0.1} />
1616
+ <polyline
1617
+ points={points.join(' ')}
1618
+ fill="none"
1619
+ stroke={LINE}
1620
+ strokeWidth={2}
1621
+ strokeLinejoin="round"
1622
+ strokeLinecap="round"
1623
+ />
1624
+
1625
+ {paysBack && (
1626
+ <g>
1627
+ <line
1628
+ x1={x(payback)}
1629
+ x2={x(payback)}
1630
+ y1={y(0)}
1631
+ y2={MARGIN.top + plotHeight}
1632
+ stroke={CHART.axis}
1633
+ strokeWidth={1}
1634
+ />
1635
+ <circle cx={x(payback)} cy={y(0)} r={5} fill={LINE} stroke={CHART.surface} strokeWidth={2} />
1636
+ {/* Right of the point the line runs above zero and left of it below, so the label takes the empty side */}
1637
+ <text
1638
+ x={x(payback) + (x(payback) > width * 0.7 ? -10 : 10)}
1639
+ y={x(payback) > width * 0.7 ? y(0) - 10 : y(0) + 20}
1640
+ textAnchor={x(payback) > width * 0.7 ? 'end' : 'start'}
1641
+ fill={CHART.ink}
1642
+ fontFamily={CHART.font}
1643
+ fontSize={12}
1644
+ fontWeight={600}
1645
+ >
1646
+ Pays back in year {Math.ceil(payback)}
1647
+ </text>
1648
+ </g>
1649
+ )}
1650
+
1651
+ {year !== null && hoveredTotal !== undefined && hoveredTotal !== null && (
1652
+ <g>
1653
+ <line
1654
+ x1={x(year)}
1655
+ x2={x(year)}
1656
+ y1={MARGIN.top}
1657
+ y2={MARGIN.top + plotHeight}
1658
+ stroke={CHART.inkSoft}
1659
+ strokeWidth={1}
1660
+ />
1661
+ <circle cx={x(year)} cy={y(hoveredTotal)} r={4} fill={LINE} stroke={CHART.surface} strokeWidth={2} />
1662
+ </g>
1663
+ )}
1664
+ <rect
1665
+ x={MARGIN.left}
1666
+ y={MARGIN.top}
1667
+ width={plotWidth}
1668
+ height={plotHeight}
1669
+ fill="transparent"
1670
+ onMouseMove={handleMove}
1671
+ onMouseLeave={() => setYear(null)}
1672
+ />
1673
+ </svg>
1674
+ )}
1675
+
1676
+ {year !== null && hoveredTotal !== undefined && hoveredTotal !== null && (
1677
+ <Box
1678
+ component="div"
1679
+ role="tooltip"
1680
+ sx={{
1681
+ position: 'absolute',
1682
+ insetBlockStart: 0,
1683
+ insetInlineStart: Math.min(Math.max(x(year) - 80, 0), Math.max(width - 160, 0)),
1684
+ inlineSize: 160,
1685
+ padding: 1.25,
1686
+ borderRadius: 1.5,
1687
+ bgcolor: CHART.surface,
1688
+ boxShadow: '0 6px 24px rgba(28, 40, 38, 0.16)',
1689
+ pointerEvents: 'none',
1690
+ }}
1691
+ >
1692
+ <Typography sx={{ fontFamily: CHART.font, fontSize: 12, fontWeight: 600, color: CHART.ink }}>
1693
+ After year {year}
1694
+ </Typography>
1695
+ <Typography sx={{ fontFamily: CHART.font, fontSize: 12, color: CHART.inkSoft }}>
1696
+ {hoveredTotal >= 0 ? `${euro(hoveredTotal)} ahead` : `${euro(-hoveredTotal)} still to recover`}
1697
+ </Typography>
1698
+ </Box>
1699
+ )}
1700
+ </Box>
1701
+ )
1702
+ }
1703
+ ```
1704
+
1705
+ ### ./src/\_charts/chart-style.ts
1706
+
1707
+ ```ts
1708
+ // The charts' series colours, in a fixed order and checked as a set for colour-vision deficiencies on the white
1709
+ // card. Two of them sit below 3:1 against white, so every chart keeps a legend, a tooltip and a table of its figures.
1710
+ export const SERIES = {
1711
+ selfUse: '#e8770e',
1712
+ exported: '#1baf7a',
1713
+ consumption: '#2a78d6',
1714
+ } as const
1715
+
1716
+ export const CHART = {
1717
+ surface: '#ffffff',
1718
+ ink: '#1c2826',
1719
+ inkSoft: '#5b6664',
1720
+ grid: '#e9e6df',
1721
+ axis: '#c9c4b8',
1722
+ font: "'Poppins', 'Helvetica Neue', Arial, sans-serif",
1723
+ } as const
1724
+ ```
1725
+
1726
+ ### ./src/\_charts/nice-scale.ts
1727
+
1728
+ ```ts
1729
+ // Round axis bounds and ticks for a value range: steps of 1, 2 or 5 times a power of ten, about `count` of them
1730
+ export const niceScale = (min: number, max: number, count: number) => {
1731
+ const span = Math.max(max - min, 1)
1732
+ const raw = span / count
1733
+ const magnitude = 10 ** Math.floor(Math.log10(raw))
1734
+ const step = [1, 2, 5, 10].map(factor => factor * magnitude).find(candidate => candidate >= raw) ?? 10 * magnitude
1735
+ const low = Math.floor(min / step) * step
1736
+ const high = Math.ceil(max / step) * step
1737
+ const ticks = Array.from({ length: Math.round((high - low) / step) + 1 }, (_, index) => low + index * step)
1738
+
1739
+ return { low, high, ticks }
1740
+ }
1741
+ ```
1742
+
1743
+ ### ./src/\_charts/use-width.ts
1744
+
1745
+ ```ts
1746
+ import { useLayoutEffect, useRef, useState } from 'react'
1747
+
1748
+ // The element's width in pixels, measured again whenever it changes, so a chart draws its text at its real size
1749
+ // instead of scaling a fixed drawing
1750
+ export const useWidth = () => {
1751
+ const ref = useRef<HTMLDivElement>(null)
1752
+ const [width, setWidth] = useState(0)
1753
+
1754
+ useLayoutEffect(() => {
1755
+ const element = ref.current
1756
+
1757
+ if (element === null) {
1758
+ return
1759
+ }
1760
+
1761
+ const observer = new ResizeObserver(([entry]) => {
1762
+ if (entry) {
1763
+ setWidth(entry.contentRect.width)
1764
+ }
1765
+ })
1766
+ observer.observe(element)
1767
+
1768
+ return () => observer.disconnect()
1769
+ }, [])
1770
+
1771
+ return { ref, width }
1772
+ }
1773
+ ```
1774
+
1775
+ ### ./src/\_shared/ChartCards.tsx
1776
+
1777
+ ```tsx
1778
+ import { Box, Typography } from '@mui/material'
1779
+ import type { ReactNode } from 'react'
1780
+
1781
+ import { EnergySplitBar, MonthlyEnergyChart, PaybackChart } from '../_charts/index.js'
1782
+ import { CARD_SX, SUNFOLD } from './tokens.js'
1783
+
1784
+ interface ChartCardProps {
1785
+ readonly title: string
1786
+ readonly subtitle: string
1787
+ readonly area?: string
1788
+ readonly children: ReactNode
1789
+ }
1790
+
1791
+ const ChartCard = ({ title, subtitle, area, children }: ChartCardProps) => {
1792
+ return (
1793
+ <Box
1794
+ component="section"
1795
+ aria-label={title}
1796
+ sx={{ ...CARD_SX, display: 'grid', alignContent: 'start', gap: 2, gridArea: area }}
1797
+ >
1798
+ <Box component="header" sx={{ display: 'grid', gap: 0.25 }}>
1799
+ <Typography component="h2" sx={{ fontFamily: SUNFOLD.font, fontSize: 16, fontWeight: 600, color: SUNFOLD.ink }}>
1800
+ {title}
1801
+ </Typography>
1802
+ <Typography sx={{ fontFamily: SUNFOLD.font, fontSize: 12, color: SUNFOLD.muted }}>{subtitle}</Typography>
1803
+ </Box>
1804
+ {children}
1805
+ </Box>
1806
+ )
1807
+ }
1808
+
1809
+ interface ChartCardsProps {
1810
+ readonly compact: boolean
1811
+ }
1812
+
1813
+ // The dashboard's charts: the year month by month across the full width, then the payback curve beside where the
1814
+ // power goes. On a phone they stack.
1815
+ export const ChartCards = ({ compact }: ChartCardsProps) => {
1816
+ return (
1817
+ <Box
1818
+ component="div"
1819
+ sx={{
1820
+ display: 'grid',
1821
+ gap: 2,
1822
+ gridTemplateColumns: compact ? 'minmax(0, 1fr)' : 'minmax(0, 3fr) minmax(0, 2fr)',
1823
+ gridTemplateAreas: compact ? '"monthly" "payback" "split"' : '"monthly monthly" "payback split"',
1824
+ }}
1825
+ >
1826
+ <ChartCard
1827
+ area="monthly"
1828
+ title="Your solar year"
1829
+ subtitle="Production by month, how much the home uses, and the home's own use"
1830
+ >
1831
+ <MonthlyEnergyChart height={compact ? 200 : 240} />
1832
+ </ChartCard>
1833
+ <ChartCard
1834
+ area="payback"
1835
+ title="When it pays back"
1836
+ subtitle="Money returned after the installed cost, with prices rising 2 % a year"
1837
+ >
1838
+ <PaybackChart height={compact ? 190 : 210} />
1839
+ </ChartCard>
1840
+ <ChartCard
1841
+ area="split"
1842
+ title="Where the power goes"
1843
+ subtitle="A year of production, split between the home and the grid"
1844
+ >
1845
+ <EnergySplitBar />
1846
+ </ChartCard>
1847
+ </Box>
1848
+ )
1849
+ }
1850
+ ```
1851
+
1852
+ ### ./src/\_shared/DesktopPage.tsx
1853
+
1854
+ ```tsx
1855
+ import { Box, Typography } from '@mui/material'
1856
+
1857
+ import { LayoutSlots } from '@salsita-ai/sdk/configurator'
1858
+
1859
+ import { phx } from '../../.phoenix/phx.js'
1860
+ import { ChartCards } from './ChartCards.js'
1861
+ import { KpiTiles } from './KpiTiles.js'
1862
+ import { PlannerInputs } from './PlannerInputs.js'
1863
+ import { SurveyPanel } from './SurveyPanel.js'
1864
+ import { SUNFOLD } from './tokens.js'
1865
+
1866
+ const SIDEBAR_WIDTH = 340
1867
+
1868
+ // The desktop page: the inputs in a sidebar with the cost and the booking at its foot, and the dashboard beside it,
1869
+ // four figures above three charts
1870
+ export const DesktopPage = () => {
1871
+ const { accessInfo } = phx.frontend.useAccessService()
1872
+ const navigationState = phx.frontend.useActiveNavigationState()
1873
+ // A booked plan keeps its inputs until the household returns to the plan
1874
+ const readOnly = accessInfo.viewMode || navigationState === 'booked'
1875
+
1876
+ return (
1877
+ <Box
1878
+ component="div"
1879
+ sx={{
1880
+ position: 'absolute',
1881
+ inset: 0,
1882
+ display: 'grid',
1883
+ gridTemplateColumns: `${SIDEBAR_WIDTH}px minmax(0, 1fr)`,
1884
+ bgcolor: SUNFOLD.linen,
1885
+ fontFamily: SUNFOLD.font,
1886
+ }}
1887
+ >
1888
+ <Box
1889
+ component="aside"
1890
+ aria-label="Your plan"
1891
+ sx={{
1892
+ display: 'flex',
1893
+ flexDirection: 'column',
1894
+ minBlockSize: 0,
1895
+ bgcolor: SUNFOLD.card,
1896
+ borderInlineEnd: `1px solid ${SUNFOLD.line}`,
1897
+ }}
1898
+ >
1899
+ <Box
1900
+ component="div"
1901
+ sx={{ display: 'flex', alignItems: 'center', gap: 1.25, paddingInline: 3, paddingBlock: 2.5 }}
1902
+ >
1903
+ <Box
1904
+ component="span"
1905
+ aria-hidden
1906
+ sx={{
1907
+ inlineSize: 26,
1908
+ blockSize: 26,
1909
+ borderRadius: '50%',
1910
+ bgcolor: SUNFOLD.amber,
1911
+ boxShadow: `0 0 0 5px ${SUNFOLD.amberTint}`,
1912
+ }}
1913
+ />
1914
+ <Typography sx={{ fontFamily: SUNFOLD.font, fontSize: 20, fontWeight: 600, color: SUNFOLD.ink }}>
1915
+ sunfold
1916
+ </Typography>
1917
+ </Box>
1918
+ <Box component="div" sx={{ flex: 1, minBlockSize: 0, overflowY: 'auto', paddingInline: 3, paddingBlockEnd: 3 }}>
1919
+ <PlannerInputs readOnly={readOnly} />
1920
+ </Box>
1921
+ <Box component="div" sx={{ padding: 3, borderBlockStart: `1px solid ${SUNFOLD.line}` }}>
1922
+ <SurveyPanel compact={false} />
1923
+ </Box>
1924
+ </Box>
1925
+
1926
+ <Box component="main" sx={{ minBlockSize: 0, overflowY: 'auto' }}>
1927
+ <Box component="div" sx={{ display: 'grid', gap: 2.5, maxInlineSize: 1180, marginInline: 'auto', padding: 4 }}>
1928
+ <Box component="header" sx={{ display: 'grid', gap: 0.5 }}>
1929
+ <Typography
1930
+ component="h1"
1931
+ sx={{ fontFamily: SUNFOLD.font, fontSize: 28, fontWeight: 600, color: SUNFOLD.ink }}
1932
+ >
1933
+ Your solar plan
1934
+ </Typography>
1935
+ <Typography sx={{ fontFamily: SUNFOLD.font, fontSize: 14, color: SUNFOLD.muted }}>
1936
+ Estimates for a home in central Europe. Every figure follows the plan on the left.
1937
+ </Typography>
1938
+ </Box>
1939
+ <KpiTiles columns={4} />
1940
+ <ChartCards compact={false} />
1941
+ </Box>
1942
+ </Box>
1943
+
1944
+ {/* Snackbars, such as a failed save, stack upwards from the dashboard's bottom right corner */}
1945
+ <Box component="div" sx={{ position: 'absolute', insetBlockEnd: 24, insetInlineEnd: 24, inlineSize: 320 }}>
1946
+ <LayoutSlots.DesktopSnackbarsRoot />
1947
+ </Box>
1948
+ </Box>
1949
+ )
1950
+ }
1951
+ ```
1952
+
1953
+ ### ./src/\_shared/KpiTiles.tsx
1954
+
1955
+ ```tsx
1956
+ import { Box, Typography } from '@mui/material'
1957
+
1958
+ import { phx } from '../../.phoenix/phx.js'
1959
+ import { CARD_SX, SUNFOLD } from './tokens.js'
1960
+
1961
+ const euro = (value: number) => {
1962
+ return value.toLocaleString('en-IE', { style: 'currency', currency: 'EUR', maximumFractionDigits: 0 })
1963
+ }
1964
+
1965
+ interface KpiTilesProps {
1966
+ readonly columns: number
1967
+ }
1968
+
1969
+ // The four figures a household asks first, each with the context that makes it mean something. Every value is an
1970
+ // expression of the spec, read from the root entity.
1971
+ export const KpiTiles = ({ columns }: KpiTilesProps) => {
1972
+ const plan = phx.frontend.useRootEntityState()
1973
+ const payback = plan.$paybackYears
1974
+ const tiles = [
1975
+ {
1976
+ label: 'System size',
1977
+ value: `${plan.$systemKwp.toFixed(1)} kWp`,
1978
+ context: `${plan.panels} panels, ${plan.$panelAreaM2} m² of roof`,
1979
+ },
1980
+ {
1981
+ label: 'Annual production',
1982
+ value: `${Math.round(plan.$annualProductionKwh).toLocaleString('en')} kWh`,
1983
+ context: `About ${plan.$co2Tonnes.toFixed(1)} t of CO₂ avoided a year`,
1984
+ },
1985
+ {
1986
+ label: 'Self-consumption',
1987
+ value: `${Math.round(plan.$selfConsumption * 100)} %`,
1988
+ context: 'of the solar power is used at home',
1989
+ },
1990
+ {
1991
+ label: 'Payback',
1992
+ value: Number.isFinite(payback) ? `${payback.toFixed(1)} years` : 'Over 25 years',
1993
+ context: `${euro(plan.$annualSavings)} saved in the first year`,
1994
+ },
1995
+ ]
1996
+
1997
+ return (
1998
+ <Box component="div" sx={{ display: 'grid', gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))`, gap: 2 }}>
1999
+ {tiles.map(tile => (
2000
+ <Box
2001
+ component="section"
2002
+ key={tile.label}
2003
+ aria-label={tile.label}
2004
+ sx={{ ...CARD_SX, display: 'grid', gap: 0.5, padding: 2 }}
2005
+ >
2006
+ <Typography sx={{ fontFamily: SUNFOLD.font, fontSize: 13, color: SUNFOLD.muted }}>{tile.label}</Typography>
2007
+ <Typography
2008
+ sx={{
2009
+ fontFamily: SUNFOLD.font,
2010
+ fontSize: columns > 2 ? 30 : 24,
2011
+ fontWeight: 600,
2012
+ lineHeight: 1.15,
2013
+ color: SUNFOLD.ink,
2014
+ }}
2015
+ >
2016
+ {tile.value}
2017
+ </Typography>
2018
+ <Typography sx={{ fontFamily: SUNFOLD.font, fontSize: 12, color: SUNFOLD.muted }}>{tile.context}</Typography>
2019
+ </Box>
2020
+ ))}
2021
+ </Box>
2022
+ )
2023
+ }
2024
+ ```
2025
+
2026
+ ### ./src/\_shared/PhonePage.tsx
2027
+
2028
+ ```tsx
2029
+ import { Box, Typography } from '@mui/material'
2030
+
2031
+ import { LayoutSlots } from '@salsita-ai/sdk/configurator'
2032
+
2033
+ import { phx } from '../../.phoenix/phx.js'
2034
+ import { ChartCards } from './ChartCards.js'
2035
+ import { KpiTiles } from './KpiTiles.js'
2036
+ import { PlannerInputs } from './PlannerInputs.js'
2037
+ import { SurveyPanel } from './SurveyPanel.js'
2038
+ import { CARD_SX, SUNFOLD } from './tokens.js'
2039
+
2040
+ // The phone page: one scrolling column with the figures first, the inputs below them and the charts last, and the
2041
+ // cost with the booking in a bar at the bottom
2042
+ export const PhonePage = () => {
2043
+ const { accessInfo } = phx.frontend.useAccessService()
2044
+ const navigationState = phx.frontend.useActiveNavigationState()
2045
+ const readOnly = accessInfo.viewMode || navigationState === 'booked'
2046
+
2047
+ return (
2048
+ <Box
2049
+ component="div"
2050
+ sx={{
2051
+ position: 'absolute',
2052
+ inset: 0,
2053
+ display: 'grid',
2054
+ gridTemplateRows: 'minmax(0, 1fr) auto',
2055
+ bgcolor: SUNFOLD.linen,
2056
+ fontFamily: SUNFOLD.font,
2057
+ }}
2058
+ >
2059
+ <Box component="main" sx={{ minBlockSize: 0, overflowY: 'auto' }}>
2060
+ <Box component="div" sx={{ display: 'grid', gap: 2, padding: 2 }}>
2061
+ <Box component="header" sx={{ display: 'flex', alignItems: 'center', gap: 1.25 }}>
2062
+ <Box
2063
+ component="span"
2064
+ aria-hidden
2065
+ sx={{
2066
+ inlineSize: 22,
2067
+ blockSize: 22,
2068
+ borderRadius: '50%',
2069
+ bgcolor: SUNFOLD.amber,
2070
+ boxShadow: `0 0 0 4px ${SUNFOLD.amberTint}`,
2071
+ }}
2072
+ />
2073
+ <Typography
2074
+ component="h1"
2075
+ sx={{ fontFamily: SUNFOLD.font, fontSize: 20, fontWeight: 600, color: SUNFOLD.ink }}
2076
+ >
2077
+ Your solar plan
2078
+ </Typography>
2079
+ </Box>
2080
+ <KpiTiles columns={2} />
2081
+ <Box component="div" sx={CARD_SX}>
2082
+ <PlannerInputs readOnly={readOnly} />
2083
+ </Box>
2084
+ <ChartCards compact />
2085
+ </Box>
2086
+ </Box>
2087
+ <Box
2088
+ component="footer"
2089
+ sx={{
2090
+ padding: 2,
2091
+ bgcolor: SUNFOLD.card,
2092
+ borderBlockStart: `1px solid ${SUNFOLD.line}`,
2093
+ boxShadow: '0 -8px 24px rgba(28, 40, 38, 0.08)',
2094
+ }}
2095
+ >
2096
+ <SurveyPanel compact />
2097
+ </Box>
2098
+ <LayoutSlots.MobileSnackbarsRoot />
2099
+ </Box>
2100
+ )
2101
+ }
2102
+ ```
2103
+
2104
+ ### ./src/\_shared/PillField.tsx
2105
+
2106
+ ```tsx
2107
+ import { Box, ButtonBase, Typography } from '@mui/material'
2108
+ import type { KeyboardEvent } from 'react'
2109
+
2110
+ import { phx } from '../../.phoenix/phx.js'
2111
+ import { SUNFOLD } from './tokens.js'
2112
+
2113
+ // Arrow keys move the selection between the pills, as in a native radio group
2114
+ const ARROW_STEPS: Readonly<Record<string, number | undefined>> = {
2115
+ ArrowRight: 1,
2116
+ ArrowDown: 1,
2117
+ ArrowLeft: -1,
2118
+ ArrowUp: -1,
2119
+ }
2120
+
2121
+ interface PillFieldProps {
2122
+ readonly instanceName: string
2123
+ readonly label: string
2124
+ readonly readOnly: boolean
2125
+ }
2126
+
2127
+ // One `attributeSelection` of the spec as a row of pills, with the chosen option's description below it
2128
+ export const PillField = ({ instanceName, label, readOnly }: PillFieldProps) => {
2129
+ const resolve = phx.frontend.useResolveLocalizable()
2130
+ const planId = phx.frontend.useRootEntityId()
2131
+ const { value, options } = phx.frontend.useAttributeSelection(planId, instanceName)
2132
+ const selected = options.find(option => option.value === value)
2133
+ const labelId = `sunfold-${instanceName}-label`
2134
+
2135
+ const handleKeyDown = (event: KeyboardEvent<HTMLElement>, index: number) => {
2136
+ const step = ARROW_STEPS[event.key]
2137
+
2138
+ if (step === undefined) {
2139
+ return
2140
+ }
2141
+
2142
+ event.preventDefault()
2143
+ const next = (index + step + options.length) % options.length
2144
+ options[next]?.onSelect()
2145
+ event.currentTarget.parentElement?.querySelectorAll<HTMLElement>('[role="radio"]')[next]?.focus()
2146
+ }
2147
+
2148
+ return (
2149
+ <Box component="div" sx={{ display: 'grid', gap: 0.75 }}>
2150
+ <Typography id={labelId} sx={{ fontFamily: SUNFOLD.font, fontSize: 14, color: SUNFOLD.ink }}>
2151
+ {label}
2152
+ </Typography>
2153
+ <Box
2154
+ component="div"
2155
+ role="radiogroup"
2156
+ aria-labelledby={labelId}
2157
+ sx={{ display: 'flex', flexWrap: 'wrap', gap: 0.75 }}
2158
+ >
2159
+ {options.map((option, index) => {
2160
+ const isSelected = option.value === value
2161
+
2162
+ return (
2163
+ <ButtonBase
2164
+ key={String(option.value)}
2165
+ role="radio"
2166
+ aria-checked={isSelected}
2167
+ tabIndex={isSelected ? 0 : -1}
2168
+ disabled={readOnly && !isSelected}
2169
+ onClick={readOnly ? undefined : option.onSelect}
2170
+ onKeyDown={readOnly ? undefined : event => handleKeyDown(event, index)}
2171
+ sx={{
2172
+ paddingInline: 1.5,
2173
+ paddingBlock: 0.75,
2174
+ borderRadius: 999,
2175
+ border: `1px solid ${isSelected ? SUNFOLD.green : SUNFOLD.line}`,
2176
+ bgcolor: isSelected ? SUNFOLD.green : SUNFOLD.card,
2177
+ color: isSelected ? SUNFOLD.card : SUNFOLD.ink,
2178
+ fontFamily: SUNFOLD.font,
2179
+ fontSize: 13,
2180
+ fontWeight: isSelected ? 500 : 400,
2181
+ transition: 'background-color 120ms',
2182
+ '&:hover': { borderColor: SUNFOLD.green },
2183
+ '&.Mui-focusVisible': { outline: `2px solid ${SUNFOLD.amber}`, outlineOffset: 2 },
2184
+ }}
2185
+ >
2186
+ {resolve(option.title)}
2187
+ </ButtonBase>
2188
+ )
2189
+ })}
2190
+ </Box>
2191
+ {selected?.description && (
2192
+ <Typography sx={{ fontFamily: SUNFOLD.font, fontSize: 12, color: SUNFOLD.muted }}>
2193
+ {resolve(selected.description)}
2194
+ </Typography>
2195
+ )}
2196
+ </Box>
2197
+ )
2198
+ }
2199
+ ```
2200
+
2201
+ ### ./src/\_shared/PlannerInputs.tsx
2202
+
2203
+ ```tsx
2204
+ import { Box, Typography } from '@mui/material'
2205
+ import type { ReactNode } from 'react'
2206
+
2207
+ import { phx } from '../../.phoenix/phx.js'
2208
+ import { PillField } from './PillField.js'
2209
+ import { SliderField } from './SliderField.js'
2210
+ import { SUNFOLD } from './tokens.js'
2211
+
2212
+ interface GroupProps {
2213
+ readonly title: string
2214
+ // The invariant types whose message belongs under this group
2215
+ readonly messageTypes?: readonly string[]
2216
+ readonly children: ReactNode
2217
+ }
2218
+
2219
+ // A group of inputs with the message of an invariant the group can resolve: a warning, which blocks the booking, in
2220
+ // amber, a notice, which only informs, in blue. `useFinalizeViolations` lists both.
2221
+ const Group = ({ title, messageTypes = [], children }: GroupProps) => {
2222
+ const { violations } = phx.frontend.useFinalizeViolations()
2223
+ const resolve = phx.frontend.useResolveLocalizable()
2224
+ const messages = (violations ?? []).filter(({ violation }) => messageTypes.includes(violation.type))
2225
+
2226
+ return (
2227
+ <Box component="section" sx={{ display: 'grid', gap: 2 }}>
2228
+ <Typography component="h3" sx={{ fontFamily: SUNFOLD.font, fontSize: 13, fontWeight: 600, color: SUNFOLD.muted }}>
2229
+ {title}
2230
+ </Typography>
2231
+ {children}
2232
+ {messages.map(({ violation }) => {
2233
+ const isNotice = violation.severity === 'notice'
2234
+
2235
+ return (
2236
+ <Typography
2237
+ key={violation.type}
2238
+ role={isNotice ? 'status' : 'alert'}
2239
+ sx={{
2240
+ paddingInline: 1.5,
2241
+ paddingBlock: 1,
2242
+ borderRadius: 2,
2243
+ bgcolor: isNotice ? SUNFOLD.infoTint : SUNFOLD.warningTint,
2244
+ color: isNotice ? SUNFOLD.info : SUNFOLD.warning,
2245
+ fontFamily: SUNFOLD.font,
2246
+ fontSize: 13,
2247
+ lineHeight: 1.45,
2248
+ }}
2249
+ >
2250
+ {resolve(violation.message)}
2251
+ </Typography>
2252
+ )
2253
+ })}
2254
+ </Box>
2255
+ )
2256
+ }
2257
+
2258
+ interface PlannerInputsProps {
2259
+ readonly readOnly: boolean
2260
+ }
2261
+
2262
+ // The household's inputs: the roof, the panels on it, the home's use and tariff, and the battery
2263
+ export const PlannerInputs = ({ readOnly }: PlannerInputsProps) => {
2264
+ const plan = phx.frontend.useRootEntityState()
2265
+
2266
+ return (
2267
+ <Box component="div" sx={{ display: 'grid', gap: 3.5 }}>
2268
+ <Group title="Your roof" messageTypes={['panelsExceedRoof', 'northFacing']}>
2269
+ <SliderField instanceName="roofArea" label="Usable roof area" step={1} readOnly={readOnly} />
2270
+ <PillField instanceName="orientation" label="Facing" readOnly={readOnly} />
2271
+ <SliderField instanceName="panels" label="Panels" step={1} readOnly={readOnly} />
2272
+ <Typography sx={{ marginBlockStart: -1.5, fontFamily: SUNFOLD.font, fontSize: 12, color: SUNFOLD.muted }}>
2273
+ 430 W panels, 1.95 m² each. This roof holds up to {plan.$roofPanelLimit}.
2274
+ </Typography>
2275
+ </Group>
2276
+ <Group title="Your home">
2277
+ <SliderField instanceName="annualUse" label="Electricity used a year" step={100} readOnly={readOnly} />
2278
+ <PillField instanceName="tariff" label="Tariff" readOnly={readOnly} />
2279
+ </Group>
2280
+ <Group title="Storage">
2281
+ <PillField instanceName="battery" label="Home battery" readOnly={readOnly} />
2282
+ </Group>
2283
+ </Box>
2284
+ )
2285
+ }
2286
+ ```
2287
+
2288
+ ### ./src/\_shared/SliderField.tsx
2289
+
2290
+ ```tsx
2291
+ import { Box, Slider, Typography } from '@mui/material'
2292
+
2293
+ import { phx } from '../../.phoenix/phx.js'
2294
+ import { SUNFOLD } from './tokens.js'
2295
+
2296
+ interface SliderFieldProps {
2297
+ readonly instanceName: string
2298
+ readonly label: string
2299
+ readonly step: number
2300
+ readonly readOnly: boolean
2301
+ }
2302
+
2303
+ // One `genericDimension` of the spec as a slider with its value and unit above it. Dragging stages each value, so
2304
+ // every tile and chart follows the thumb, and letting go commits it.
2305
+ export const SliderField = ({ instanceName, label, step, readOnly }: SliderFieldProps) => {
2306
+ const planId = phx.frontend.useRootEntityId()
2307
+ const dimension = phx.frontend.useGenericDimension(planId, instanceName)
2308
+ const labelId = `sunfold-${instanceName}-label`
2309
+
2310
+ return (
2311
+ <Box component="div" sx={{ display: 'grid', gap: 0.25 }}>
2312
+ <Box component="div" sx={{ display: 'flex', alignItems: 'baseline', justifyContent: 'space-between', gap: 2 }}>
2313
+ <Typography id={labelId} sx={{ fontFamily: SUNFOLD.font, fontSize: 14, color: SUNFOLD.ink }}>
2314
+ {label}
2315
+ </Typography>
2316
+ <Typography sx={{ fontFamily: SUNFOLD.font, fontSize: 15, fontWeight: 600, color: SUNFOLD.ink }}>
2317
+ {dimension.value.toLocaleString('en')} {dimension.unit}
2318
+ </Typography>
2319
+ </Box>
2320
+ <Slider
2321
+ value={dimension.value}
2322
+ min={dimension.min ?? 0}
2323
+ max={dimension.max ?? 100}
2324
+ step={step}
2325
+ disabled={readOnly}
2326
+ onChange={(_, value) => dimension.update(Array.isArray(value) ? (value[0] ?? 0) : value)}
2327
+ onChangeCommitted={() => dimension.resolve()}
2328
+ slotProps={{ input: { 'aria-labelledby': labelId } }}
2329
+ sx={{
2330
+ color: SUNFOLD.green,
2331
+ '& .MuiSlider-rail': { bgcolor: SUNFOLD.line, opacity: 1 },
2332
+ '& .MuiSlider-thumb': {
2333
+ inlineSize: 18,
2334
+ blockSize: 18,
2335
+ bgcolor: SUNFOLD.card,
2336
+ border: `3px solid ${SUNFOLD.green}`,
2337
+ },
2338
+ }}
2339
+ />
2340
+ </Box>
2341
+ )
2342
+ }
2343
+ ```
2344
+
2345
+ ### ./src/\_shared/SurveyPanel.tsx
2346
+
2347
+ ```tsx
2348
+ import { Alert, Box, Button, CircularProgress, Typography } from '@mui/material'
2349
+
2350
+ import { phx } from '../../.phoenix/phx.js'
2351
+ import { SUNFOLD } from './tokens.js'
2352
+
2353
+ interface SurveyPanelProps {
2354
+ // On a phone the panel is a bar: the cost beside the button, without the hints
2355
+ readonly compact: boolean
2356
+ }
2357
+
2358
+ // The system's cost, the `price` component's value, and the spec's `survey` finalize action. A warning blocks the
2359
+ // booking and its `hints` say why; a notice does not. In the `booked` navigation state the panel confirms the
2360
+ // request instead.
2361
+ export const SurveyPanel = ({ compact }: SurveyPanelProps) => {
2362
+ const cost = phx.frontend.useRootEntityPrice()
2363
+ const { primary, hints } = phx.frontend.useFinalizeActions()
2364
+ const navigationState = phx.frontend.useActiveNavigationState()
2365
+ const navigate = phx.frontend.useNavigate()
2366
+ const { accessInfo } = phx.frontend.useAccessService()
2367
+ const isPending = primary?.isPending ?? false
2368
+
2369
+ if (navigationState === 'booked') {
2370
+ return (
2371
+ <Box component="div" role="status" sx={{ display: 'flex', alignItems: 'center', gap: 2 }}>
2372
+ <Box component="div" sx={{ display: 'grid', flex: 1 }}>
2373
+ <Typography sx={{ fontFamily: SUNFOLD.font, fontSize: 16, fontWeight: 600, color: SUNFOLD.green }}>
2374
+ Survey requested
2375
+ </Typography>
2376
+ <Typography sx={{ fontFamily: SUNFOLD.font, fontSize: 13, color: SUNFOLD.muted }}>
2377
+ An installer calls within two working days.
2378
+ </Typography>
2379
+ </Box>
2380
+ <Button
2381
+ onClick={() => navigate('plan')}
2382
+ sx={{
2383
+ fontFamily: SUNFOLD.font,
2384
+ fontSize: 13,
2385
+ color: SUNFOLD.ink,
2386
+ textTransform: 'none',
2387
+ textDecoration: 'underline',
2388
+ }}
2389
+ >
2390
+ Back to the plan
2391
+ </Button>
2392
+ </Box>
2393
+ )
2394
+ }
2395
+
2396
+ const showButton = primary !== null && !accessInfo.viewMode
2397
+
2398
+ return (
2399
+ <Box component="div" sx={{ display: 'grid', gap: 1.25 }}>
2400
+ <Box
2401
+ component="div"
2402
+ sx={{
2403
+ display: 'flex',
2404
+ flexDirection: compact ? 'row' : 'column',
2405
+ alignItems: compact ? 'center' : 'stretch',
2406
+ justifyContent: 'space-between',
2407
+ gap: compact ? 2 : 1.5,
2408
+ }}
2409
+ >
2410
+ <Box component="div" sx={{ display: 'grid' }}>
2411
+ <Typography sx={{ fontFamily: SUNFOLD.font, fontSize: 12, color: SUNFOLD.muted }}>Installed cost</Typography>
2412
+ <Typography
2413
+ sx={{ fontFamily: SUNFOLD.font, fontSize: compact ? 20 : 26, fontWeight: 600, color: SUNFOLD.ink }}
2414
+ >
2415
+ {cost}
2416
+ </Typography>
2417
+ </Box>
2418
+ {showButton && (
2419
+ <Button
2420
+ variant="contained"
2421
+ disableElevation
2422
+ disabled={primary.disabled || isPending}
2423
+ onClick={() => void primary.run()}
2424
+ title={primary.title}
2425
+ startIcon={isPending ? <CircularProgress size={16} color="inherit" /> : undefined}
2426
+ sx={{
2427
+ minBlockSize: 46,
2428
+ paddingInline: 2.5,
2429
+ borderRadius: 999,
2430
+ bgcolor: SUNFOLD.green,
2431
+ fontFamily: SUNFOLD.font,
2432
+ fontSize: 14,
2433
+ fontWeight: 500,
2434
+ textTransform: 'none',
2435
+ '&:hover': { bgcolor: SUNFOLD.greenDark },
2436
+ '&.Mui-disabled': { bgcolor: SUNFOLD.line, color: SUNFOLD.muted },
2437
+ }}
2438
+ >
2439
+ {isPending ? 'Booking…' : primary.label}
2440
+ </Button>
2441
+ )}
2442
+ </Box>
2443
+ {!compact && showButton && primary.disabled && hints && (
2444
+ <Typography sx={{ fontFamily: SUNFOLD.font, fontSize: 12, color: SUNFOLD.warning }}>{hints}</Typography>
2445
+ )}
2446
+ {primary?.error && <Alert severity="error">The survey could not be booked: {primary.error.message}</Alert>}
2447
+ </Box>
2448
+ )
2449
+ }
2450
+ ```
2451
+
2452
+ ### ./src/\_shared/tokens.ts
2453
+
2454
+ ```ts
2455
+ // Sunfold's palette and type: warm linen, a deep green ink and the amber of the logo. Poppins is the brand's typeface;
2456
+ // the stack falls back to system fonts where it is not loaded.
2457
+ export const SUNFOLD = {
2458
+ linen: '#f6f3ec',
2459
+ card: '#ffffff',
2460
+ ink: '#1c2826',
2461
+ muted: '#5b6664',
2462
+ line: '#e7e2d8',
2463
+ green: '#1f6f54',
2464
+ greenDark: '#17583f',
2465
+ amber: '#f2a516',
2466
+ amberTint: '#fff4dc',
2467
+ warning: '#9a4b00',
2468
+ warningTint: '#fff3e0',
2469
+ info: '#2a5c8a',
2470
+ infoTint: '#e9f1f9',
2471
+ font: "'Poppins', 'Helvetica Neue', Arial, sans-serif",
2472
+ } as const
2473
+
2474
+ export const CARD_SX = {
2475
+ padding: 2.5,
2476
+ borderRadius: 3,
2477
+ bgcolor: SUNFOLD.card,
2478
+ boxShadow: '0 1px 2px rgba(28, 40, 38, 0.06)',
2479
+ border: `1px solid ${SUNFOLD.line}`,
2480
+ } as const
2481
+ ```
2482
+
2483
+ ### ./src/elements/ConfiguratorLayout.tsx
2484
+
2485
+ ```tsx
2486
+ import { Box } from '@mui/material'
2487
+
2488
+ import { LayoutSlots } from '@salsita-ai/sdk/configurator'
2489
+
2490
+ import { phx } from '../../.phoenix/phx.js'
2491
+ import { DesktopPage } from '../_shared/DesktopPage.js'
2492
+ import { PhonePage } from '../_shared/PhonePage.js'
2493
+ import { SUNFOLD } from '../_shared/tokens.js'
2494
+
2495
+ // A planning dashboard with no scene: the layout never mounts `LayoutSlots.SharedCanvas`, and every tile and chart is
2496
+ // React and SVG drawn from the spec's expressions
2497
+ const ConfiguratorLayout = () => {
2498
+ // `null` until the container has been measured
2499
+ const viewports = phx.frontend.useActiveViewports()
2500
+ const isDesktop = viewports?.includes('desktop') ?? false
2501
+
2502
+ return (
2503
+ <Box component="div" sx={{ position: 'absolute', inset: 0, overflow: 'clip', bgcolor: SUNFOLD.linen }}>
2504
+ <LayoutSlots.Services />
2505
+ {viewports !== null && (isDesktop ? <DesktopPage /> : <PhonePage />)}
2506
+ </Box>
2507
+ )
2508
+ }
2509
+
2510
+ export default phx.frontend.createCustomPhoenixLayoutElement('ConfiguratorLayout', ConfiguratorLayout)
2511
+ ```
2512
+
2513
+ ### ./src/expressions/solar.ts
2514
+
2515
+ ```ts
2516
+ import { phx } from '../../.phoenix/phx.js'
2517
+
2518
+ const PANEL_KWP = 0.43
2519
+ const PANEL_AREA_M2 = 1.95
2520
+ // Vents, chimneys and the edge clearance leave about 85 % of a roof for panels
2521
+ const USABLE_ROOF = 0.85
2522
+ // A south-facing kWp in central Europe yields about 1,000 kWh a year
2523
+ const YIELD_KWH_PER_KWP = 1000
2524
+ const ORIENTATION_FACTOR = { South: 1, SouthEastWest: 0.95, EastWest: 0.82, North: 0.6 }
2525
+
2526
+ const MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
2527
+ // The share of the year's sun and of the household's use that falls in each month
2528
+ const SUN_SHARE = [0.04, 0.045, 0.08, 0.105, 0.125, 0.13, 0.13, 0.115, 0.09, 0.065, 0.04, 0.035]
2529
+ const USE_SHARE = [0.1, 0.09, 0.088, 0.08, 0.075, 0.07, 0.07, 0.072, 0.076, 0.085, 0.094, 0.1]
2530
+ const DAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
2531
+
2532
+ const BATTERY_KWH = { None: 0, Kwh5: 5, Kwh10: 10, Kwh15: 15 }
2533
+ const BATTERY_PRICE = { None: 0, Kwh5: 3600, Kwh10: 6400, Kwh15: 8900 }
2534
+ const TARIFF = {
2535
+ Flat: { buy: 0.32, sell: 0.08, shiftBonus: 0 },
2536
+ TimeOfUse: { buy: 0.29, sell: 0.1, shiftBonus: 0.09 },
2537
+ ExportPlus: { buy: 0.32, sell: 0.15, shiftBonus: 0 },
2538
+ }
2539
+ // Panels lose half a percent a year; electricity gets 2 % dearer a year
2540
+ const DEGRADATION = 0.995
2541
+ const PRICE_GROWTH = 1.02
2542
+ const YEARS = 25
2543
+
2544
+ export default phx.domain.implementCustomExpressions({
2545
+ SolarPlan: {
2546
+ $systemKwp: s => {
2547
+ return s.panels * PANEL_KWP
2548
+ },
2549
+ $roofPanelLimit: s => {
2550
+ return Math.floor((s.roofArea * USABLE_ROOF) / PANEL_AREA_M2)
2551
+ },
2552
+ // The roof the panels cover, rounded up to whole square metres, as the tiles and the roof warning quote it
2553
+ $panelAreaM2: s => {
2554
+ return Math.ceil(s.panels * PANEL_AREA_M2)
2555
+ },
2556
+ $annualProductionKwh: s => {
2557
+ return s.$systemKwp * YIELD_KWH_PER_KWP * ORIENTATION_FACTOR[s.orientation]
2558
+ },
2559
+ // Each month's production and use, and how the production splits between the home and the grid. Without a
2560
+ // battery the home uses solar power only while the sun shines; a battery carries the surplus into the evening,
2561
+ // one charge a day, and covers the evening but not the early morning.
2562
+ $monthly: s => {
2563
+ const batteryKwh = BATTERY_KWH[s.battery] * 0.9
2564
+
2565
+ return MONTHS.map((month, index) => {
2566
+ const productionKwh = s.$annualProductionKwh * (SUN_SHARE[index] ?? 0)
2567
+ const consumptionKwh = s.annualUse * (USE_SHARE[index] ?? 0)
2568
+ const direct = Math.min(productionKwh * 0.55, consumptionKwh * 0.45)
2569
+ const stored = Math.min(
2570
+ productionKwh - direct,
2571
+ batteryKwh * (DAYS[index] ?? 30),
2572
+ (consumptionKwh - direct) * 0.6
2573
+ )
2574
+ const selfUseKwh = direct + stored
2575
+
2576
+ return { month, productionKwh, consumptionKwh, selfUseKwh, exportKwh: productionKwh - selfUseKwh }
2577
+ })
2578
+ },
2579
+ $selfConsumption: s => {
2580
+ const selfUse = s.$monthly.reduce((sum, month) => sum + month.selfUseKwh, 0)
2581
+
2582
+ return s.$annualProductionKwh > 0 ? selfUse / s.$annualProductionKwh : 0
2583
+ },
2584
+ $selfSufficiency: s => {
2585
+ const selfUse = s.$monthly.reduce((sum, month) => sum + month.selfUseKwh, 0)
2586
+
2587
+ return selfUse / s.annualUse
2588
+ },
2589
+ // A year's saving: power the home no longer buys, power sold to the grid, and on a time-of-use tariff the
2590
+ // evening power a battery shifts away from the dear hours
2591
+ $annualSavings: s => {
2592
+ const tariff = TARIFF[s.tariff]
2593
+ const selfUse = s.$monthly.reduce((sum, month) => sum + month.selfUseKwh, 0)
2594
+ const exported = s.$monthly.reduce((sum, month) => sum + month.exportKwh, 0)
2595
+ const shifted = s.battery === 'None' ? 0 : selfUse * 0.4
2596
+
2597
+ return selfUse * tariff.buy + exported * tariff.sell + shifted * tariff.shiftBonus
2598
+ },
2599
+ $systemCost: s => {
2600
+ return Math.round(1500 + s.$systemKwp * 1050 + BATTERY_PRICE[s.battery])
2601
+ },
2602
+ // The money the system has returned at the end of each year, starting at minus its cost in year 0
2603
+ $cumulativeSavings: s => {
2604
+ return Array.from({ length: YEARS + 1 }, (_, year) => {
2605
+ const earned = Array.from(
2606
+ { length: year },
2607
+ (__, past) => s.$annualSavings * (PRICE_GROWTH * DEGRADATION) ** past
2608
+ ).reduce((sum, value) => sum + value, 0)
2609
+
2610
+ return earned - s.$systemCost
2611
+ })
2612
+ },
2613
+ // The year the running total crosses zero, between whole years; beyond the panels' 25 years it is `Infinity`
2614
+ $paybackYears: s => {
2615
+ const totals = s.$cumulativeSavings
2616
+ const year = totals.findIndex(total => total >= 0)
2617
+
2618
+ if (year <= 0) {
2619
+ return year === 0 ? 0 : Infinity
2620
+ }
2621
+
2622
+ const before = totals[year - 1] ?? 0
2623
+ const after = totals[year] ?? 0
2624
+
2625
+ return year - 1 + -before / (after - before)
2626
+ },
2627
+ $co2Tonnes: s => {
2628
+ return (s.$annualProductionKwh * 0.35) / 1000
2629
+ },
2630
+ },
2631
+ })
2632
+ ```
2633
+
2634
+ ### ./src/handlers/book-survey.ts
2635
+
2636
+ ```ts
2637
+ import { useCallback } from 'react'
2638
+
2639
+ import { phx } from '../../.phoenix/phx.js'
2640
+
2641
+ // Stands in for the installer's booking service: the request takes a moment, then the page shows the confirmation
2642
+ export default phx.frontend.createPhoenixHandler('bookSurvey', () => {
2643
+ const navigate = phx.frontend.useNavigate()
2644
+
2645
+ return {
2646
+ handler: useCallback(async () => {
2647
+ await new Promise(resolve => setTimeout(resolve, 1200))
2648
+ navigate('booked')
2649
+ }, [navigate]),
2650
+ }
2651
+ })
2652
+ ```
2653
+
2654
+ ### ./src/invariants/solar.ts
2655
+
2656
+ ```ts
2657
+ import { phx } from '../../.phoenix/phx.js'
2658
+
2659
+ // More panels than the roof holds is a warning: the dashboard keeps showing the figures, and a survey cannot be
2660
+ // booked until the panel count fits. A north-facing roof is only a notice, so it never blocks the booking.
2661
+ export default phx.domain.implementCustomInvariants({
2662
+ SolarPlan: {
2663
+ panelsFitRoof: s => {
2664
+ if (s.panels <= s.$roofPanelLimit) {
2665
+ return []
2666
+ }
2667
+
2668
+ return [
2669
+ {
2670
+ type: 'panelsExceedRoof',
2671
+ severity: 'warning',
2672
+ message: `${s.panels} panels need about ${s.$panelAreaM2} m² of roof; ${s.roofArea} m² holds at most ${s.$roofPanelLimit}. Lower the panel count or measure the roof again.`,
2673
+ },
2674
+ ]
2675
+ },
2676
+ northFacing: s => {
2677
+ return s.orientation !== 'North'
2678
+ },
2679
+ },
2680
+ })
2681
+ ```
2682
+
2683
+ </details>