@salsita-ai/sdk 0.50.0-develop.f6390cb584 → 0.50.0-develop.f9cd9b3a12

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 (357) hide show
  1. package/dist/application-spec/errors/diagnostic-codes.d.ts +9 -0
  2. package/dist/application-spec/errors/diagnostic-codes.js +1 -1
  3. package/dist/application-spec/errors/diagnostic-messages.d.ts +10 -1
  4. package/dist/application-spec/errors/diagnostic-messages.js +1 -1
  5. package/dist/application-spec/generate-application/code/domain-runtime-files.js +1 -1
  6. package/dist/application-spec/generate-application/code/templates/application-types.js +6 -6
  7. package/dist/application-spec/generate-application/code/templates/common/doc-comment.d.ts +2 -0
  8. package/dist/application-spec/generate-application/code/templates/common/doc-comment.js +1 -0
  9. package/dist/application-spec/generate-application/code/templates/configurator-globals.d.ts +2 -1
  10. package/dist/application-spec/generate-application/code/templates/configurator-globals.js +19 -6
  11. package/dist/application-spec/generate-application/code/templates/global-definition/generate-action-types.js +7 -7
  12. package/dist/application-spec/generate-application/code/templates/global-definition/generate-assistant-form-element-types.d.ts +12 -0
  13. package/dist/application-spec/generate-application/code/templates/global-definition/generate-assistant-form-element-types.js +7 -0
  14. package/dist/application-spec/generate-application/code/templates/global-definition/generate-phx-types.js +24 -22
  15. package/dist/application-spec/generate-application/code/templates/global-definition/index.d.ts +1 -0
  16. package/dist/application-spec/generate-application/code/templates/global-definition/index.js +1 -1
  17. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +13 -6
  18. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +2 -2
  19. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.d.ts +33 -3
  20. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.js +1 -1
  21. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-form-elements.d.ts +9 -0
  22. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-form-elements.js +1 -0
  23. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.d.ts +4 -1
  24. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  25. package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
  26. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +4 -3
  27. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  28. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.d.ts +33 -7
  29. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.js +1 -1
  30. package/dist/configurator/application-runtime/extensions/systems/canvas-system.d.ts +8 -0
  31. package/dist/configurator/application-runtime/extensions/systems/canvas-system.js +1 -1
  32. package/dist/configurator/application-runtime/extensions/systems/export-system/export-busy-error.d.ts +8 -0
  33. package/dist/configurator/application-runtime/extensions/systems/export-system/export-busy-error.js +1 -0
  34. package/dist/configurator/application-runtime/extensions/systems/export-system/export-system.d.ts +23 -1
  35. package/dist/configurator/application-runtime/extensions/systems/export-system/export-system.js +1 -1
  36. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.d.ts +14 -1
  37. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.js +1 -1
  38. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +45 -4
  39. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  40. package/dist/configurator/application-runtime/extensions/systems/image-rendering-system/image-rendering-system.d.ts +14 -5
  41. package/dist/configurator/application-runtime/extensions/systems/image-rendering-system/image-rendering-system.js +1 -1
  42. package/dist/configurator/application-runtime/extensions/systems/index.d.ts +1 -1
  43. package/dist/configurator/common/configurator-interface.d.ts +38 -2
  44. package/dist/configurator/common/configurator-interface.js +1 -1
  45. package/dist/configurator/configurator-context/ConfiguratorResponsiveProvider.d.ts +3 -3
  46. package/dist/configurator/configurator-context/ConfiguratorResponsiveProvider.js +1 -1
  47. package/dist/configurator/configurator-context/PreviewContextProvider.js +1 -1
  48. package/dist/configurator/configurator-context/configurator-hooks/layout-hooks.d.ts +4 -0
  49. package/dist/configurator/configurator-context/configurator-routing/ConfiguratorRoutingProvider.js +1 -1
  50. package/dist/configurator/pages/default-configurator-elements.d.ts +3 -2
  51. package/dist/configurator/pages/default-configurator-elements.js +1 -1
  52. package/dist/configurator/pages/default-elements/index.d.ts +1 -0
  53. package/dist/configurator/pages/default-elements/index.js +1 -1
  54. package/dist/configurator/pages/default-elements/scene-controls/BuiltInAddEntityFab.d.ts +3 -0
  55. package/dist/configurator/pages/default-elements/scene-controls/BuiltInAddEntityFab.js +1 -0
  56. package/dist/configurator/pages/default-elements/scene-controls/BuiltInDeleteEntityFab.d.ts +3 -0
  57. package/dist/configurator/pages/default-elements/scene-controls/BuiltInDeleteEntityFab.js +1 -0
  58. package/dist/configurator/pages/default-elements/scene-controls/BuiltInNavigationHotspot.d.ts +3 -0
  59. package/dist/configurator/pages/default-elements/scene-controls/BuiltInNavigationHotspot.js +1 -0
  60. package/dist/configurator/pages/default-elements/scene-controls/BuiltInSelectionHotspot.d.ts +3 -0
  61. package/dist/configurator/pages/default-elements/scene-controls/BuiltInSelectionHotspot.js +1 -0
  62. package/dist/configurator/pages/default-elements/scene-controls/BuiltInToolMenuFab.d.ts +3 -0
  63. package/dist/configurator/pages/default-elements/scene-controls/BuiltInToolMenuFab.js +1 -0
  64. package/dist/configurator/pages/default-elements/scene-controls/index.d.ts +6 -0
  65. package/dist/configurator/pages/default-elements/scene-controls/index.js +1 -0
  66. package/dist/configurator/pages/default-elements/scene-controls/scene-control-elements.d.ts +6 -0
  67. package/dist/configurator/pages/default-elements/scene-controls/scene-control-elements.js +1 -0
  68. package/dist/configurator/scene/index.d.ts +1 -0
  69. package/dist/configurator/scene/index.js +1 -1
  70. package/dist/configurator/scene/scene-controls/ToolFab.d.ts +4 -0
  71. package/dist/configurator/scene/scene-controls/ToolFab.js +1 -1
  72. package/dist/configurator/scene/scene-controls/use-scene-control-tooltip.d.ts +2 -1
  73. package/dist/configurator/scene/scene-entity/scene-controls/SceneEntityHtmlHotspots.js +1 -1
  74. package/dist/configurator/toolbar-actions/index.d.ts +1 -0
  75. package/dist/configurator/toolbar-actions/index.js +1 -1
  76. package/dist/configurator/toolbar-actions/use-toolbar-actions.d.ts +100 -0
  77. package/dist/configurator/toolbar-actions/use-toolbar-actions.js +1 -0
  78. package/dist/configurator/toolbar-actions/use-toolbar-help.d.ts +7 -0
  79. package/dist/configurator/toolbar-actions/use-toolbar-help.js +1 -0
  80. package/dist/configurator/ui/assistant/AssistantChips.d.ts +3 -2
  81. package/dist/configurator/ui/assistant/AssistantChips.js +1 -1
  82. package/dist/configurator/ui/assistant/AssistantMarkdown.d.ts +1 -1
  83. package/dist/configurator/ui/assistant/AssistantMarkdown.js +1 -1
  84. package/dist/configurator/ui/assistant/alert/AssistantAlert.d.ts +8 -0
  85. package/dist/configurator/ui/assistant/alert/AssistantAlert.js +1 -0
  86. package/dist/configurator/ui/assistant/alert/index.d.ts +2 -0
  87. package/dist/configurator/ui/assistant/alert/index.js +1 -0
  88. package/dist/configurator/ui/assistant/alert/remark-alerts.d.ts +10 -0
  89. package/dist/configurator/ui/assistant/alert/remark-alerts.js +1 -0
  90. package/dist/configurator/ui/assistant/form/AssistantForm.js +1 -1
  91. package/dist/configurator/ui/assistant/form/compose-answer.d.ts +1 -1
  92. package/dist/configurator/ui/assistant/form/compose-answer.js +1 -1
  93. package/dist/configurator/ui/assistant/form/form-model.d.ts +3 -4
  94. package/dist/configurator/ui/assistant/form/form-state.d.ts +1 -1
  95. package/dist/configurator/ui/assistant/form/index.d.ts +2 -0
  96. package/dist/configurator/ui/assistant/form/index.js +1 -1
  97. package/dist/configurator/ui/assistant/form/parse-form-block.d.ts +3 -2
  98. package/dist/configurator/ui/assistant/form/parse-form-block.js +1 -1
  99. package/dist/configurator/ui/assistant/form/read-form-attributes.d.ts +1 -1
  100. package/dist/configurator/ui/assistant/form/read-form-attributes.js +1 -1
  101. package/dist/configurator/ui/assistant/form/registry/built-in-form-elements.d.ts +3 -0
  102. package/dist/configurator/ui/assistant/form/registry/built-in-form-elements.js +1 -0
  103. package/dist/configurator/ui/assistant/form/registry/create-assistant-form-element.d.ts +31 -0
  104. package/dist/configurator/ui/assistant/form/registry/create-assistant-form-element.js +1 -0
  105. package/dist/configurator/ui/assistant/form/{form-element-definition.d.ts → registry/form-element-definition.d.ts} +3 -1
  106. package/dist/configurator/ui/assistant/form/registry/form-element-definition.js +1 -0
  107. package/dist/configurator/ui/assistant/form/{form-registry.d.ts → registry/form-registry.d.ts} +2 -2
  108. package/dist/configurator/ui/assistant/form/registry/form-registry.js +1 -0
  109. package/dist/configurator/ui/assistant/form/registry/index.d.ts +6 -0
  110. package/dist/configurator/ui/assistant/form/registry/index.js +1 -0
  111. package/dist/configurator/ui/assistant/form/registry/use-form-registry.d.ts +8 -0
  112. package/dist/configurator/ui/assistant/form/registry/use-form-registry.js +1 -0
  113. package/dist/configurator/ui/assistant/form-elements/FormCard.d.ts +9 -0
  114. package/dist/configurator/ui/assistant/form-elements/FormCard.js +1 -0
  115. package/dist/configurator/ui/assistant/form-elements/FormConfirm.d.ts +9 -0
  116. package/dist/configurator/ui/assistant/form-elements/FormConfirm.js +1 -0
  117. package/dist/configurator/ui/assistant/form-elements/FormGroup.d.ts +4 -1
  118. package/dist/configurator/ui/assistant/form-elements/FormNumber.d.ts +9 -0
  119. package/dist/configurator/ui/assistant/form-elements/FormNumber.js +1 -0
  120. package/dist/configurator/ui/assistant/form-elements/FormOptions.d.ts +4 -1
  121. package/dist/configurator/ui/assistant/form-elements/FormReply.d.ts +4 -1
  122. package/dist/configurator/ui/assistant/form-elements/FormReply.js +1 -1
  123. package/dist/configurator/ui/assistant/form-elements/FormSwatch.d.ts +10 -0
  124. package/dist/configurator/ui/assistant/form-elements/FormSwatch.js +1 -0
  125. package/dist/configurator/ui/assistant/form-elements/FormText.d.ts +4 -1
  126. package/dist/configurator/ui/assistant/form-elements/FormText.js +1 -1
  127. package/dist/configurator/ui/assistant/form-elements/clamp-form-number.d.ts +10 -0
  128. package/dist/configurator/ui/assistant/form-elements/clamp-form-number.js +1 -0
  129. package/dist/configurator/ui/assistant/form-elements/form-element-props.d.ts +20 -16
  130. package/dist/configurator/ui/assistant/form-elements/index.d.ts +4 -0
  131. package/dist/configurator/ui/assistant/form-elements/index.js +1 -1
  132. package/dist/configurator/ui/assistant/index.d.ts +3 -0
  133. package/dist/configurator/ui/assistant/index.js +1 -1
  134. package/dist/configurator/ui/assistant/resource-image/index.d.ts +1 -1
  135. package/dist/configurator/ui/assistant/resource-image/index.js +1 -1
  136. package/dist/configurator/ui/assistant/resource-image/resource-path.d.ts +0 -9
  137. package/dist/configurator/ui/assistant/resource-image/resource-path.js +1 -1
  138. package/dist/configurator/ui/assistant/screenshots/ScreenshotThumbnails.d.ts +9 -0
  139. package/dist/configurator/ui/assistant/screenshots/ScreenshotThumbnails.js +1 -0
  140. package/dist/configurator/ui/assistant/screenshots/index.d.ts +2 -0
  141. package/dist/configurator/ui/assistant/screenshots/index.js +1 -0
  142. package/dist/configurator/ui/assistant/screenshots/tool-screenshots.d.ts +14 -0
  143. package/dist/configurator/ui/assistant/screenshots/tool-screenshots.js +1 -0
  144. package/dist/configurator/ui/assistant/streamed-markdown.d.ts +2 -2
  145. package/dist/configurator/ui/assistant/streamed-markdown.js +2 -2
  146. package/dist/configurator/ui/assistant/tool-chip.js +1 -1
  147. package/dist/configurator/ui/configurator-layout/universal/ExportingOverlay.d.ts +5 -0
  148. package/dist/configurator/ui/configurator-layout/universal/ExportingOverlay.js +1 -0
  149. package/dist/configurator/ui/configurator-layout/universal/Layout.js +1 -1
  150. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.js +1 -1
  151. package/dist/configurator/ui/index.d.ts +1 -0
  152. package/dist/configurator/ui/index.js +1 -1
  153. package/dist/configurator/ui/save-message-snackbars/SaveMessageSnackbars.js +1 -1
  154. package/dist/docs/complex-use-cases/focus-mode.mdx +2 -0
  155. package/dist/docs/fabs/basic.mdx +4 -0
  156. package/dist/docs/index.json +62 -1
  157. package/dist/docs/integrations/webcomponent-api/basics.mdx +2 -0
  158. package/dist/docs/layouts/custom-layout.mdx +320 -158
  159. package/dist/docs/layouts/gallery/ardent-compressor.mdx +3516 -0
  160. package/dist/docs/layouts/gallery/fenwick-window.mdx +2803 -0
  161. package/dist/docs/layouts/gallery/ferrule-bar-station.mdx +6567 -0
  162. package/dist/docs/layouts/gallery/kestrel-kettle.mdx +1858 -0
  163. package/dist/docs/layouts/gallery/sunfold-solar.mdx +2683 -0
  164. package/dist/docs/other-features/client-side-rendering/declarative.mdx +1 -1
  165. package/dist/docs/other-features/navigation-hotspot.mdx +2 -0
  166. package/dist/docs/phoenix/configurator-interface.mdx +68 -11
  167. package/dist/docs/phoenix/sdk-builder-workflow.mdx +1 -1
  168. package/dist/docs/phoenix/sessions-and-access.mdx +2 -0
  169. package/dist/docs/selection-and-highlight/hotspots.mdx +2 -0
  170. package/dist/domain/application/assistant/assistant-manifest.d.ts +16 -1
  171. package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +8 -1
  172. package/dist/domain/application/assistant/build-assistant-manifest.js +1 -1
  173. package/dist/domain/application/assistant/form/assistant-form-element-name.d.ts +11 -0
  174. package/dist/domain/application/assistant/form/assistant-form-element-name.js +8 -0
  175. package/dist/domain/application/assistant/form/assistant-form-elements.d.ts +174 -0
  176. package/dist/domain/application/assistant/form/assistant-form-elements.js +1 -0
  177. package/dist/domain/application/assistant/form/assistant-resource-path.d.ts +10 -0
  178. package/dist/domain/application/assistant/form/assistant-resource-path.js +1 -0
  179. package/dist/domain/application/assistant/form/index.d.ts +4 -0
  180. package/dist/domain/application/assistant/form/index.js +1 -0
  181. package/dist/domain/application/assistant/generate-assistant-prompt.d.ts +3 -0
  182. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -1
  183. package/dist/domain/application/assistant/index.d.ts +2 -3
  184. package/dist/domain/application/assistant/index.js +1 -1
  185. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.js +1 -1
  186. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.d.ts +2 -0
  187. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.js +1 -1
  188. package/dist/domain/application/web-component-property.d.ts +3 -1
  189. package/dist/domain/application/web-component-property.js +1 -1
  190. package/dist/domain/available-system-components.d.ts +1 -1
  191. package/dist/domain/available-system-components.js +1 -1
  192. package/dist/domain/domain-context/store-system/store-system.d.ts +5 -0
  193. package/dist/domain/domain-context/store-system/store-system.js +1 -1
  194. package/dist/domain/domain-runtime/domain-context/selectors.d.ts +1 -0
  195. package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
  196. package/dist/domain/domain-runtime/domain-runtime.d.ts +8 -0
  197. package/dist/domain/domain-runtime/environment/types.d.ts +1 -1
  198. package/dist/domain/domain-runtime/spec/index.d.ts +1 -1
  199. package/dist/domain/domain-runtime/spec/index.js +1 -1
  200. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  201. package/dist/domain/domain-runtime/spec/module-checks/element-registration.d.ts +15 -1
  202. package/dist/domain/domain-runtime/spec/module-checks/element-registration.js +1 -1
  203. package/dist/domain/domain-runtime/spec/module-checks/find-assistant-form-element-errors.d.ts +12 -0
  204. package/dist/domain/domain-runtime/spec/module-checks/find-assistant-form-element-errors.js +1 -0
  205. package/dist/domain/domain-runtime/spec/module-checks/index.d.ts +2 -1
  206. package/dist/domain/domain-runtime/spec/module-checks/index.js +1 -1
  207. package/dist/domain/domain-runtime/spec/selectors.d.ts +3 -1
  208. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  209. package/dist/domain/extensions/export-images/agent-screenshot.d.ts +24 -0
  210. package/dist/domain/extensions/export-images/agent-screenshot.js +1 -0
  211. package/dist/domain/extensions/{client-side-image.d.ts → export-images/client-side-image.d.ts} +2 -2
  212. package/dist/domain/extensions/export-images/client-side-image.js +1 -0
  213. package/dist/domain/extensions/export-images/index.d.ts +3 -0
  214. package/dist/domain/extensions/export-images/index.js +1 -0
  215. package/dist/domain/extensions/{save-template-thumbnail.d.ts → export-images/save-template-thumbnail.d.ts} +2 -2
  216. package/dist/domain/extensions/export-images/save-template-thumbnail.js +1 -0
  217. package/dist/domain/extensions/index.d.ts +1 -2
  218. package/dist/domain/extensions/index.js +1 -1
  219. package/dist/domain/mocks/create-mock-domain-runtime.d.ts +4 -0
  220. package/dist/editor/domain-editors/DomainSpecContext.js +1 -1
  221. package/dist/editor/domain-editors/apply-spec-update.d.ts +8 -1
  222. package/dist/editor/domain-editors/apply-spec-update.js +1 -1
  223. package/dist/editor/domain-editors/use-implementation-files.js +1 -1
  224. package/dist/editor/screenshot/ScreenshotHandler.js +1 -1
  225. package/dist/i18n/locales/cs/messages.js +1 -1
  226. package/dist/i18n/locales/da/messages.js +1 -1
  227. package/dist/i18n/locales/de/messages.js +1 -1
  228. package/dist/i18n/locales/de-AT/messages.js +1 -1
  229. package/dist/i18n/locales/en/messages.js +1 -1
  230. package/dist/i18n/locales/en-AU/messages.js +1 -1
  231. package/dist/i18n/locales/en-GB/messages.js +1 -1
  232. package/dist/i18n/locales/es/messages.js +1 -1
  233. package/dist/i18n/locales/fr/messages.js +1 -1
  234. package/dist/i18n/locales/hu/messages.js +1 -1
  235. package/dist/i18n/locales/it/messages.js +1 -1
  236. package/dist/i18n/locales/nl/messages.js +1 -1
  237. package/dist/i18n/locales/pl/messages.js +1 -1
  238. package/dist/i18n/locales/pt/messages.js +1 -1
  239. package/dist/i18n/locales/ro/messages.js +1 -1
  240. package/dist/i18n/locales/sk/messages.js +1 -1
  241. package/dist/i18n/locales/tr/messages.js +1 -1
  242. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  243. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  244. package/dist/legacy/domain-spec/__generated/domain-schema.d.ts +16 -0
  245. package/dist/legacy/domain-spec/spec/domain-spec.js +1 -1
  246. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/claude-md.d.ts +1 -1
  247. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/cursor-rules.d.ts +1 -1
  248. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.d.ts +1 -1
  249. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.js +11 -5
  250. package/dist/react-sdk/application-runtime/hooks/index.d.ts +1 -0
  251. package/dist/react-sdk/application-runtime/hooks/index.js +1 -1
  252. package/dist/react-sdk/application-runtime/hooks/responsive/index.d.ts +3 -0
  253. package/dist/react-sdk/application-runtime/hooks/responsive/index.js +1 -0
  254. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-actions.d.ts +9 -0
  255. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-actions.js +1 -0
  256. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-application.d.ts +26 -0
  257. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-application.js +1 -0
  258. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-state.d.ts +10 -0
  259. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-state.js +1 -0
  260. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-store.d.ts +24 -0
  261. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-store.js +1 -0
  262. package/dist/react-sdk/application-runtime/hooks/use-access-service.d.ts +5 -0
  263. package/dist/react-sdk/application-runtime/hooks/use-access-service.js +1 -1
  264. package/dist/react-sdk/application-runtime/hooks/use-phoenix-element-slots.d.ts +2 -1
  265. package/dist/react-sdk/application-runtime/index.d.ts +1 -0
  266. package/dist/react-sdk/application-runtime/integration/initialize.d.ts +7 -6
  267. package/dist/react-sdk/application-runtime/integration/initialize.js +1 -1
  268. package/dist/react-sdk/application-runtime/integration/selectors.d.ts +11 -2
  269. package/dist/react-sdk/application-runtime/integration/selectors.js +1 -1
  270. package/dist/react-sdk/application-runtime/integration/types.d.ts +5 -2
  271. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
  272. package/dist/react-sdk/application-runtime/responsive/actions.d.ts +47 -0
  273. package/dist/react-sdk/application-runtime/responsive/actions.js +1 -0
  274. package/dist/react-sdk/application-runtime/responsive/index.d.ts +4 -0
  275. package/dist/react-sdk/application-runtime/responsive/index.js +1 -0
  276. package/dist/react-sdk/application-runtime/responsive/initialize.d.ts +3 -0
  277. package/dist/react-sdk/application-runtime/responsive/initialize.js +1 -0
  278. package/dist/react-sdk/application-runtime/responsive/selectors.d.ts +20 -0
  279. package/dist/react-sdk/application-runtime/responsive/selectors.js +1 -0
  280. package/dist/react-sdk/application-runtime/responsive/types.d.ts +104 -0
  281. package/dist/react-sdk/application-runtime/routing/routing-service.d.ts +34 -2
  282. package/dist/react-sdk/application-runtime/routing/routing-service.js +1 -1
  283. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +95 -2
  284. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.js +1 -1
  285. package/dist/react-sdk/domain-context/common-hooks/index.d.ts +1 -0
  286. package/dist/react-sdk/domain-context/common-hooks/index.js +1 -1
  287. package/dist/react-sdk/domain-context/common-hooks/use-configuration-save-state.d.ts +23 -0
  288. package/dist/react-sdk/domain-context/common-hooks/use-configuration-save-state.js +1 -0
  289. package/dist/react-sdk/domain-context/common-hooks/use-domain-context.d.ts +1 -0
  290. package/dist/react-sdk/domain-context/index.d.ts +1 -0
  291. package/dist/react-sdk/domain-context/index.js +1 -1
  292. package/dist/react-sdk/domain-context/system-hooks/undo-redo-hooks.js +1 -1
  293. package/dist/react-sdk/index.d.ts +1 -1
  294. package/dist/react-sdk/index.js +1 -1
  295. package/dist/react-sdk/scene-control-elements/AddEntityFabElement.d.ts +36 -0
  296. package/dist/react-sdk/scene-control-elements/AddEntityFabElement.js +1 -0
  297. package/dist/react-sdk/scene-control-elements/DeleteEntityFabElement.d.ts +44 -0
  298. package/dist/react-sdk/scene-control-elements/DeleteEntityFabElement.js +1 -0
  299. package/dist/react-sdk/scene-control-elements/NavigationHotspotElement.d.ts +38 -0
  300. package/dist/react-sdk/scene-control-elements/NavigationHotspotElement.js +1 -0
  301. package/dist/react-sdk/scene-control-elements/SelectionHotspotElement.d.ts +30 -0
  302. package/dist/react-sdk/scene-control-elements/SelectionHotspotElement.js +1 -0
  303. package/dist/react-sdk/scene-control-elements/ToolMenuFabElement.d.ts +30 -0
  304. package/dist/react-sdk/scene-control-elements/ToolMenuFabElement.js +1 -0
  305. package/dist/react-sdk/scene-control-elements/create-add-entity-fab.d.ts +9 -0
  306. package/dist/react-sdk/scene-control-elements/create-add-entity-fab.js +1 -0
  307. package/dist/react-sdk/scene-control-elements/create-delete-entity-fab.d.ts +9 -0
  308. package/dist/react-sdk/scene-control-elements/create-delete-entity-fab.js +1 -0
  309. package/dist/react-sdk/scene-control-elements/create-navigation-hotspot.d.ts +10 -0
  310. package/dist/react-sdk/scene-control-elements/create-navigation-hotspot.js +1 -0
  311. package/dist/react-sdk/scene-control-elements/create-selection-hotspot.d.ts +9 -0
  312. package/dist/react-sdk/scene-control-elements/create-selection-hotspot.js +1 -0
  313. package/dist/react-sdk/scene-control-elements/create-tool-menu-fab.d.ts +9 -0
  314. package/dist/react-sdk/scene-control-elements/create-tool-menu-fab.js +1 -0
  315. package/dist/react-sdk/scene-control-elements/index.d.ts +11 -0
  316. package/dist/react-sdk/scene-control-elements/index.js +1 -0
  317. package/dist/react-sdk/scene-control-elements/scene-control-tooltip-visibility.d.ts +5 -0
  318. package/dist/react-sdk/web-component/create-web-component.js +1 -1
  319. package/dist/react-sdk/web-component/god-mode/god-mode-registry.d.ts +30 -0
  320. package/dist/react-sdk/web-component/god-mode/god-mode-registry.js +1 -0
  321. package/dist/react-sdk/web-component/god-mode/index.d.ts +1 -0
  322. package/dist/react-sdk/web-component/god-mode/index.js +1 -0
  323. package/dist/ui-sdk/icons/__generated/Lightbulb.d.ts +3 -0
  324. package/dist/ui-sdk/icons/__generated/Lightbulb.js +1 -0
  325. package/dist/ui-sdk/icons/__generated/XCircle.d.ts +3 -0
  326. package/dist/ui-sdk/icons/__generated/XCircle.js +1 -0
  327. package/dist/ui-sdk/icons/__generated/index.d.ts +4 -0
  328. package/dist/ui-sdk/icons/__generated/index.js +1 -1
  329. package/dist/ui-sdk/icons/icons-registry.js +1 -1
  330. package/dist/ui-sdk/responsive-application/ResponsiveApplicationProvider.d.ts +2 -2
  331. package/dist/ui-sdk/responsive-application/responsive-state-store.d.ts +11 -9
  332. package/dist/ui-sdk/responsive-application/use-store-responsive-info.js +1 -1
  333. package/dist/ui-sdk/theme/types.d.ts +5 -1
  334. package/package.json +13 -3
  335. package/schema/domain-spec.json +140 -0
  336. package/dist/configurator/ui/assistant/form/built-in-form-registry.d.ts +0 -10
  337. package/dist/configurator/ui/assistant/form/built-in-form-registry.js +0 -1
  338. package/dist/configurator/ui/assistant/form/form-registry.js +0 -8
  339. package/dist/domain/application/assistant/assistant-form-elements.d.ts +0 -28
  340. package/dist/domain/application/assistant/assistant-form-elements.js +0 -1
  341. package/dist/domain/extensions/client-side-image.js +0 -1
  342. package/dist/domain/extensions/save-template-thumbnail.js +0 -1
  343. package/dist/react-sdk/application-runtime/runtime/god-mode.d.ts +0 -19
  344. package/dist/react-sdk/application-runtime/runtime/god-mode.js +0 -1
  345. package/dist/react-sdk/responsive-state/ResponsiveStateProvider.d.ts +0 -25
  346. package/dist/react-sdk/responsive-state/ResponsiveStateProvider.js +0 -1
  347. package/dist/react-sdk/responsive-state/canvas-padding.d.ts +0 -14
  348. package/dist/react-sdk/responsive-state/index.d.ts +0 -5
  349. package/dist/react-sdk/responsive-state/index.js +0 -1
  350. package/dist/react-sdk/responsive-state/responsive-state-manager.d.ts +0 -111
  351. package/dist/react-sdk/responsive-state/responsive-state-manager.js +0 -1
  352. package/dist/react-sdk/responsive-state/use-responsive-state-manager.d.ts +0 -10
  353. package/dist/react-sdk/responsive-state/use-responsive-state-manager.js +0 -1
  354. package/dist/react-sdk/responsive-state/use-responsive-state.d.ts +0 -11
  355. package/dist/react-sdk/responsive-state/use-responsive-state.js +0 -1
  356. /package/dist/{configurator/ui/assistant/form/form-element-definition.js → react-sdk/application-runtime/responsive/types.js} +0 -0
  357. /package/dist/react-sdk/{responsive-state/canvas-padding.js → scene-control-elements/scene-control-tooltip-visibility.js} +0 -0
@@ -1 +1 @@
1
- import{Kind as e,parse as t}from"graphql";import{z as n}from"zod";import{ASSISTANT_TOOL_ERROR_CODES as r,AssistantToolError as a,applyTool as i,queryTool as o}from"@salsita-ai/contracts/assistant";let l=n.object({operations:n.array(n.object({query:n.string(),operationName:n.string().nullish()}))}),s=n.object({results:n.array(n.object({errors:n.array(n.unknown()).optional()})),committed:n.boolean()});export const describeToolCall=n=>{let d=(({name:n,input:r})=>{let a,s=(a=l.safeParse(r)).success?a.data.operations.flatMap(({query:n,operationName:r})=>r??(n=>{try{let r=t(n).definitions.find(t=>t.kind===e.OPERATION_DEFINITION);return r?.kind===e.OPERATION_DEFINITION?r.name?.value:void 0}catch{return}})(n)??[]):[];return s.length>0?{kind:"text",text:s.join(", ")}:n===i.name?{kind:"updateDesign"}:n===o.name?{kind:"readDesign"}:{kind:"text",text:n}})(n);if(null==n.result&&null==n.error)return{label:d,state:n.isReplyRunning?"running":"done",errorCode:void 0};let u=(e=>{let t=a.safeParse(e);if(t.success)return r.find(e=>e===t.data.code)})(n.result);return{label:d,state:(({name:e,result:t,error:n},r)=>{if(null!=n||null!=r)return e===o.name?"flawed":"failed";if(e!==i.name&&e!==o.name)return"done";let a=s.safeParse(t);if(!a.success)return e===o.name?"flawed":"failed";let{results:l,committed:d}=a.data;return e===i.name?d?"done":"failed":l.some(({errors:e})=>(e?.length??0)>0)||0===l.length?"flawed":"done"})(n,u),errorCode:u}};
1
+ import{Kind as e,parse as t}from"graphql";import{z as n}from"zod";import{ASSISTANT_TOOL_ERROR_CODES as r,AssistantToolError as a,applyTool as s,queryTool as o}from"@salsita-ai/contracts/assistant";let i=n.object({operations:n.array(n.object({query:n.string(),operationName:n.string().nullish()}))}),l=n.object({results:n.array(n.object({errors:n.array(n.unknown()).optional()})),committed:n.boolean()}),u=n.tuple([n.object({type:n.literal("text"),content:n.string()})]).rest(n.unknown());export const describeToolCall=n=>{let d=(({name:n,input:r})=>{let a,l=(a=i.safeParse(r)).success?a.data.operations.flatMap(({query:n,operationName:r})=>r??(n=>{try{let r=t(n).definitions.find(t=>t.kind===e.OPERATION_DEFINITION);return r?.kind===e.OPERATION_DEFINITION?r.name?.value:void 0}catch{return}})(n)??[]):[];return l.length>0?{kind:"text",text:l.join(", ")}:n===s.name?{kind:"updateDesign"}:n===o.name?{kind:"readDesign"}:{kind:"text",text:n}})(n);if(null==n.result&&null==n.error)return{label:d,state:n.isReplyRunning?"running":"done",errorCode:void 0};let c=(e=>{let t=a.safeParse(e);if(t.success)return r.find(e=>e===t.data.code)})(n.result);return{label:d,state:(({name:e,result:t,error:n},r)=>{if(null!=n||null!=r)return e===o.name?"flawed":"failed";if(e!==s.name&&e!==o.name)return"done";let a=l.safeParse((e=>{let t=u.safeParse(e);if(!t.success)return e;try{return JSON.parse(t.data[0].content)}catch{return e}})(t));if(!a.success)return e===o.name?"flawed":"failed";let{results:i,committed:d}=a.data;return e===s.name?d?"done":"failed":i.some(({errors:e})=>(e?.length??0)>0)||0===i.length?"flawed":"done"})(n,c),errorCode:c}};
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Covers the configurator while an export runs, which keeps it inert: a press anywhere shows for a
3
+ * moment why nothing responds, instead of a configurator that silently ignores the user.
4
+ */
5
+ export declare const ExportingOverlay: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ import{jsx as e}from"react/jsx-runtime";import{Trans as r}from"@lingui/react";import{styled as t}from"@mui/material";import{useCallback as o,useEffect as i,useState as a}from"react";let n=t("div",{name:"PhxExportingOverlay",slot:"root"})(({theme:{zIndex:e}})=>({alignItems:"center",cursor:"wait",display:"flex",inset:0,justifyContent:"center",position:"absolute",zIndex:e.modal+1})),l=t("div",{name:"PhxExportingOverlay",slot:"message"})(({theme:{palette:e,shape:r,shadows:t,spacing:o,typography:i}})=>({...i.body2,background:e.background.paper,borderRadius:r.borderRadius,boxShadow:t[4],color:e.text.primary,padding:o(1,2)}));export const ExportingOverlay=()=>{let[t,s]=a(null),m=o(()=>s(Date.now()),[]);return i(()=>{if(null===t)return;let e=setTimeout(()=>s(null),2e3);return()=>clearTimeout(e)},[t]),e(n,{onPointerDown:m,children:null!==t&&e(l,{role:"status",children:e(r,{id:"sdk.layout.exporting.message",message:"Configurator is exporting… please wait"})})})};
@@ -1 +1 @@
1
- import{jsx as r,jsxs as o,Fragment as s}from"react/jsx-runtime";import{useResponsive as t}from"#package/ui-sdk";import{LayoutSlots as e}from"../slots/index.js";import{DesktopLayout as a}from"./DesktopLayout.js";import{MobileLayout as m}from"./MobileLayout.js";export const Layout=()=>{let{isDesktop:i}=t();return o(s,{children:[r(e.Services,{}),r(e.SharedCanvas,{}),i?r(a,{}):r(m,{})]})};
1
+ import{jsx as t,jsxs as e,Fragment as r}from"react/jsx-runtime";import{styled as o}from"@mui/material";import{useEffect as i}from"react";import{useEagerObservableValue as m}from"#package/react-sdk";import{useResponsive as n}from"#package/ui-sdk";import{useConfigurator as a}from"../../../application-runtime/index.js";import{LayoutSlots as s}from"../slots/index.js";import{DesktopLayout as c}from"./DesktopLayout.js";import{ExportingOverlay as p}from"./ExportingOverlay.js";import{MobileLayout as d}from"./MobileLayout.js";let l=o("div")({display:"contents"});export const Layout=()=>{let{isDesktop:o}=n(),{exportSystem:u}=a(),f=m(u.exporting$);return i(()=>{if(!f)return;let t=document.activeElement;return()=>{t instanceof HTMLElement&&t.isConnected&&document.activeElement===document.body&&t.focus()}},[f]),e(r,{children:[e(l,{...{inert:f?"":void 0},children:[t(s.Services,{}),t(s.SharedCanvas,{}),o?t(c,{}):t(d,{})]}),f&&t(p,{})]})};
@@ -1 +1 @@
1
- import{useCallback as t,useEffect as e,useRef as r}from"react";import{canvasPaddingComponent as n}from"#package/domain";import{useFirstComponent as o,useResponsiveStateManager as a}from"#package/react-sdk";export const useLayoutSceneSafeArea=c=>{let{enabled:u,hasMiniSidebar:i}=c,{setCanvasPadding:l}=a(),m=r(null),s=r(null),f=r(null),h=r(null),g=r(0),p=r(()=>{}),b=o({componentTypes:[n]}),d=t(()=>{let t=s.current,e=f.current;if(!u||!t||!e)return;let r=t.getBoundingClientRect(),n=e.getBoundingClientRect();if(Math.abs(r.width-t.offsetWidth)>1||Math.abs(r.height-t.offsetHeight)>1){if(g.current+=1,g.current>60){g.current=0;return}m.current&&cancelAnimationFrame(m.current),m.current=requestAnimationFrame(()=>p.current());return}g.current=0;let o={bottom:Math.max(0,r.bottom-n.bottom),left:Math.max(0,n.left-r.left),right:Math.max(0,r.right-n.right),top:Math.max(0,n.top-r.top)},a=i?.3:1,c=b?.state.bottom??1,h=b?.state.left??1,d=b?.state.right??a,A=b?.state.top??1;l({bottom:o.bottom*c,left:o.left*h,right:o.right*d,top:o.top*A})},[u,i,b?.state.bottom,b?.state.left,b?.state.right,b?.state.top,l]);p.current=d;let A=t(()=>{m.current&&cancelAnimationFrame(m.current),m.current=requestAnimationFrame(d)},[d]),M=t(()=>{h.current?.disconnect(),h.current=null},[]),x=t(()=>{let t=s.current,e=f.current;if(!u||!t||!e)return void M();M();let r=new ResizeObserver(A);r.observe(t),r.observe(e),h.current=r},[M,u,A]),F=t(t=>{s.current=t,x()},[x]),v=t(t=>{f.current=t,x()},[x]);return e(()=>(x(),()=>{M(),m.current&&cancelAnimationFrame(m.current)}),[x,M]),{containerRef:F,safeAreaRef:v,update:A}};
1
+ import{useCallback as t,useEffect as e,useRef as r}from"react";import{canvasPaddingComponent as n}from"#package/domain";import{useFirstComponent as o,useResponsiveActions as a}from"#package/react-sdk";export const useLayoutSceneSafeArea=c=>{let{enabled:u,hasMiniSidebar:i}=c,{setCanvasPadding:l}=a(),m=r(null),s=r(null),f=r(null),h=r(null),g=r(0),p=r(()=>{}),b=o({componentTypes:[n]}),d=t(()=>{let t=s.current,e=f.current;if(!u||!t||!e)return;let r=t.getBoundingClientRect(),n=e.getBoundingClientRect();if(Math.abs(r.width-t.offsetWidth)>1||Math.abs(r.height-t.offsetHeight)>1){if(g.current+=1,g.current>60){g.current=0;return}m.current&&cancelAnimationFrame(m.current),m.current=requestAnimationFrame(()=>p.current());return}g.current=0;let o={bottom:Math.max(0,r.bottom-n.bottom),left:Math.max(0,n.left-r.left),right:Math.max(0,r.right-n.right),top:Math.max(0,n.top-r.top)},a=i?.3:1,c=b?.state.bottom??1,h=b?.state.left??1,d=b?.state.right??a,A=b?.state.top??1;l({bottom:o.bottom*c,left:o.left*h,right:o.right*d,top:o.top*A})},[u,i,b?.state.bottom,b?.state.left,b?.state.right,b?.state.top,l]);p.current=d;let A=t(()=>{m.current&&cancelAnimationFrame(m.current),m.current=requestAnimationFrame(d)},[d]),M=t(()=>{h.current?.disconnect(),h.current=null},[]),x=t(()=>{let t=s.current,e=f.current;if(!u||!t||!e)return void M();M();let r=new ResizeObserver(A);r.observe(t),r.observe(e),h.current=r},[M,u,A]),F=t(t=>{s.current=t,x()},[x]),v=t(t=>{f.current=t,x()},[x]);return e(()=>(x(),()=>{M(),m.current&&cancelAnimationFrame(m.current)}),[x,M]),{containerRef:F,safeAreaRef:v,update:A}};
@@ -4,3 +4,4 @@ export * from './phoenix-layout-elements/index.js';
4
4
  export * from './preset-layout/index.js';
5
5
  export * as Legacy from './legacy/index.js';
6
6
  export * from './ConfiguratorEncapsulatedTheme.js';
7
+ export { type AssistantFormElementRoleProps, type AssistantFormElementType, type CreateAssistantFormElement, type FormContainerProps, type FormInputProps, type FormOptionProps, createAssistantFormElementFactory, } from './assistant/index.js';
@@ -1 +1 @@
1
- export*from"./configurator-layout/index.js";export*from"./phoenix-entity-elements/index.js";export*from"./phoenix-layout-elements/index.js";export*from"./preset-layout/index.js";export*as Legacy from"./legacy/index.js";export*from"./ConfiguratorEncapsulatedTheme.js";
1
+ export*from"./configurator-layout/index.js";export*from"./phoenix-entity-elements/index.js";export*from"./phoenix-layout-elements/index.js";export*from"./preset-layout/index.js";export*as Legacy from"./legacy/index.js";export*from"./ConfiguratorEncapsulatedTheme.js";export{createAssistantFormElementFactory}from"./assistant/index.js";
@@ -1 +1 @@
1
- import{jsx as r}from"react/jsx-runtime";import{Trans as e}from"@lingui/react";import{Button as s}from"@mui/material";import{useSnackbar as i}from"notistack";import{useEffect as t}from"react";import{useApplicationRuntime as o,useApplicationRuntimeSelector as a,useConfiguratorMessages as n}from"#package/react-sdk";let m="phx-configuration-persist-system-failure";export const SaveMessageSnackbars=()=>{let c=a(o().selectors.domainContext.configurator.getInitializationState).isViewMode,{enqueueSnackbar:d,closeSnackbar:p}=i();return t(()=>{c&&p(m)},[c,p]),n(i=>{c||("saveError"===i.kind&&d(r(e,{id:"sdk.persist.system.error.message",message:"An error occured when trying to update a configuration"}),{variant:"error",key:m,persist:!0,preventDuplicate:!0,action:i=>r(s,{color:"inherit",size:"small",onClick:()=>{p(i)},children:r(e,{id:"sdk.persist.system.error.dismiss",message:"Dismiss"})})}),"saveRecovery"===i.kind&&(p(m),d(r(e,{id:"sdk.persist.system.error.recovered",message:"Configuration updated"}),{variant:"info"})))}),null};
1
+ import{jsx as r}from"react/jsx-runtime";import{Trans as e}from"@lingui/react";import{Button as s}from"@mui/material";import{useSnackbar as i}from"notistack";import{useEffect as t}from"react";import{useApplicationRuntime as o,useApplicationRuntimeSelector as a,useConfiguratorMessages as n}from"#package/react-sdk";let m="phx-configuration-persist-system-failure";export const SaveMessageSnackbars=()=>{let c=a(o().selectors.domainContext.configurator.getIsViewMode),{enqueueSnackbar:d,closeSnackbar:p}=i();return t(()=>{c&&p(m)},[c,p]),n(i=>{c||("saveError"===i.kind&&d(r(e,{id:"sdk.persist.system.error.message",message:"An error occured when trying to update a configuration"}),{variant:"error",key:m,persist:!0,preventDuplicate:!0,action:i=>r(s,{color:"inherit",size:"small",onClick:()=>{p(i)},children:r(e,{id:"sdk.persist.system.error.dismiss",message:"Dismiss"})})}),"saveRecovery"===i.kind&&(p(m),d(r(e,{id:"sdk.persist.system.error.recovered",message:"Configuration updated"}),{variant:"info"})))}),null};
@@ -69,6 +69,8 @@ components:
69
69
 
70
70
  The toolMenuFab is scene HTML rendered at the entity's position in the 3D scene. It supports positioning properties (`offsetX`, `offsetY`, `offsetZ`) and appearance properties like opacity and visibility.
71
71
 
72
+ The FAB and its menu are the entity element `ToolMenuFab`. A project replaces them by registering its own with `phx.frontend.createToolMenuFab`, which receives the `options` and `onSelectTool(toolState)`. See [Configurator Interface → In-Scene Controls](?path=/docs/phoenix-configurator-interface--docs#in-scene-controls).
73
+
72
74
  ### Step 3: Add exitToolModeFab component
73
75
 
74
76
  The `exitToolModeFab` component renders a button in the call to action layout slot, providing a clear way to exit the current tool mode. This appears in the UI chrome, not in the scene:
@@ -131,6 +131,10 @@ components:
131
131
  - non-existent
132
132
  ```
133
133
 
134
+ ### Your own FABs
135
+
136
+ The FABs are the entity elements `DeleteEntityFab` and `AddEntityFab`. A project replaces their look by registering its own with `phx.frontend.createDeleteEntityFab` or `phx.frontend.createAddEntityFab`; the spec's settings and positions above still apply. The delete FAB's replacement gets `onDelete`, `disabled` and `disabledHint`; the add FAB's reads its recipes with `phx.frontend.useGroupedRecipeOptions`. See [Configurator Interface → In-Scene Controls](?path=/docs/phoenix-configurator-interface--docs#in-scene-controls).
137
+
134
138
  ## Example
135
139
 
136
140
  Here you can see the live example!
@@ -1,5 +1,5 @@
1
1
  {
2
- "generatedAt": "2026-10-16T09:06:42.377Z",
2
+ "generatedAt": "2026-10-17T09:01:44.367Z",
3
3
  "categories": [
4
4
  {
5
5
  "name": "Phoenix",
@@ -881,6 +881,67 @@
881
881
  ],
882
882
  "subcategories": []
883
883
  },
884
+ {
885
+ "name": "Gallery",
886
+ "docs": [
887
+ {
888
+ "title": "Ardent Compressor",
889
+ "description": "Quote an engineered product from a form, with no 3D model at all. An industrial compressor maker, Ardent Air, lets plant engineers size a rotary screw compressor and ask for a firm quote. The...",
890
+ "path": "docs/layouts/gallery/ardent-compressor.mdx",
891
+ "category": [
892
+ "Layouts",
893
+ "Gallery",
894
+ "Ardent Compressor"
895
+ ],
896
+ "source": "storybook-example"
897
+ },
898
+ {
899
+ "title": "Fenwick Window",
900
+ "description": "Show a made-to-measure product as the drawing a workshop would build it from. A joinery, Fenwick & Lowe, sells timber casement windows to order: the customer sets the overall size, the panes across,...",
901
+ "path": "docs/layouts/gallery/fenwick-window.mdx",
902
+ "category": [
903
+ "Layouts",
904
+ "Gallery",
905
+ "Fenwick Window"
906
+ ],
907
+ "source": "storybook-example"
908
+ },
909
+ {
910
+ "title": "Ferrule Bar Station",
911
+ "description": "Let a bar designer lay out a commercial bartender station and hand the result straight to the workshop. A fictional maker, Ferrule Barworks, sells stainless underbar stations built from modules: ice...",
912
+ "path": "docs/layouts/gallery/ferrule-bar-station.mdx",
913
+ "category": [
914
+ "Layouts",
915
+ "Gallery",
916
+ "Ferrule Bar Station"
917
+ ],
918
+ "source": "storybook-example"
919
+ },
920
+ {
921
+ "title": "Kestrel Kettle",
922
+ "description": "Sell a small product from one calm page that looks like the shop's own. A specialty-coffee shop, Aldermoor Coffee, sells its Kestrel pour-over kettle in three finishes, two handle woods and with or...",
923
+ "path": "docs/layouts/gallery/kestrel-kettle.mdx",
924
+ "category": [
925
+ "Layouts",
926
+ "Gallery",
927
+ "Kestrel Kettle"
928
+ ],
929
+ "source": "storybook-example"
930
+ },
931
+ {
932
+ "title": "Sunfold Solar",
933
+ "description": "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...",
934
+ "path": "docs/layouts/gallery/sunfold-solar.mdx",
935
+ "category": [
936
+ "Layouts",
937
+ "Gallery",
938
+ "Sunfold Solar"
939
+ ],
940
+ "source": "storybook-example"
941
+ }
942
+ ],
943
+ "subcategories": []
944
+ },
884
945
  {
885
946
  "name": "Header",
886
947
  "docs": [
@@ -214,6 +214,8 @@ Properties use camelCase (`integrationMode`), while attributes use kebab-case (`
214
214
 
215
215
  Attributes are **write-only from the host's perspective**: setting an attribute (in HTML or via `setAttribute`) flows the value into the property, but the WC **never reflects property changes back to attributes**. To read the current value, always use the JavaScript property, not `getAttribute`.
216
216
 
217
+ Boolean attributes (`readonly`, `expanded`, and a custom property whose `attributeParser` is `webComponentAttributeParsers.boolean`) follow the HTML convention: present without a value (`<salsita-configurator readonly>`, `setAttribute('readonly', '')`) or with their own name as the value (`readonly="readonly"`), they switch the property on. `"true"` and `"false"` work too; any other value is ignored with an error in the console. Removing the attribute resets the property to its default.
218
+
217
219
  Standard property to attribute mapping:
218
220
 
219
221
  | Property | Attribute(s) |