@salsita-ai/sdk 0.50.0-develop.d815756961 → 0.50.0-develop.d87b28256e

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 (101) hide show
  1. package/dist/configurator/ConfiguratorApp.js +1 -1
  2. package/dist/configurator/application-runtime/extensions/systems/camera-control-system/camera-control-system.d.ts +1 -1
  3. package/dist/configurator/common/configurator-interface.d.ts +28 -1
  4. package/dist/configurator/common/configurator-interface.js +1 -1
  5. package/dist/configurator/configuration-not-found-page/create-configuration-not-found-page.d.ts +9 -0
  6. package/dist/configurator/configuration-not-found-page/create-configuration-not-found-page.js +1 -0
  7. package/dist/configurator/configuration-not-found-page/index.d.ts +1 -0
  8. package/dist/configurator/configuration-not-found-page/index.js +1 -1
  9. package/dist/configurator/configurator-context/ConfiguratorResponsiveProvider.d.ts +12 -0
  10. package/dist/configurator/configurator-context/ConfiguratorResponsiveProvider.js +1 -0
  11. package/dist/configurator/configurator-context/PreviewContextProvider.js +1 -1
  12. package/dist/configurator/configurator-context/ViewportStateSync.d.ts +2 -2
  13. package/dist/configurator/configurator-context/ViewportStateSync.js +1 -1
  14. package/dist/configurator/configurator-context/configurator-hooks/layout-hooks.d.ts +6 -0
  15. package/dist/configurator/configurator-error-page/BuiltInConfiguratorErrorPage.d.ts +6 -0
  16. package/dist/configurator/configurator-error-page/BuiltInConfiguratorErrorPage.js +1 -0
  17. package/dist/configurator/configurator-error-page/ConfiguratorErrorPageElement.d.ts +12 -0
  18. package/dist/configurator/configurator-error-page/ConfiguratorErrorPageElement.js +1 -0
  19. package/dist/configurator/configurator-error-page/create-configurator-error-page.d.ts +9 -0
  20. package/dist/configurator/configurator-error-page/create-configurator-error-page.js +1 -0
  21. package/dist/configurator/configurator-error-page/index.d.ts +3 -0
  22. package/dist/configurator/configurator-error-page/index.js +1 -0
  23. package/dist/configurator/index.d.ts +2 -0
  24. package/dist/configurator/index.js +1 -1
  25. package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
  26. package/dist/configurator/pages/PresetCreationErrorPage.d.ts +1 -1
  27. package/dist/configurator/pages/PresetCreationErrorPage.js +1 -1
  28. package/dist/configurator/pages/default-configurator-elements.d.ts +3 -2
  29. package/dist/configurator/pages/default-configurator-elements.js +1 -1
  30. package/dist/configurator/pages/error-boundaries/GeneralErrorBoundary.js +1 -1
  31. package/dist/configurator/ui/configurator-layout/slots/mobile-tabs/use-mobile-tabs.d.ts +1 -1
  32. package/dist/configurator/ui/configurator-layout/slots/mobile-tabs/use-mobile-tabs.js +1 -1
  33. package/dist/configurator/ui/configurator-layout/slots/sidebar-tabs/use-sidebar-tabs.d.ts +1 -1
  34. package/dist/configurator/ui/configurator-layout/slots/sidebar-tabs/use-sidebar-tabs.js +1 -1
  35. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.d.ts +1 -1
  36. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.js +1 -1
  37. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.d.ts +1 -1
  38. package/dist/configurator/ui/phoenix-layout-elements/AppLoader.js +3 -3
  39. package/dist/configurator/ui/phoenix-layout-elements/header/common/horizontal-tabs/DesktopHorizontalTabs.js +1 -1
  40. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/DesktopNavigationSteps.d.ts +1 -1
  41. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/DesktopNavigationSteps.js +1 -1
  42. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.d.ts +2 -8
  43. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.js +1 -1
  44. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/FinalizeActions.js +1 -1
  45. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/NextStepButton.js +1 -1
  46. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/PreviousStepButton.js +1 -1
  47. package/dist/docs/index.json +1 -1
  48. package/dist/docs/other-features/error-5xx.mdx +1 -1
  49. package/dist/docs/other-features/not-found-404.mdx +1 -1
  50. package/dist/docs/phoenix/configurator-interface.mdx +110 -58
  51. package/dist/docs/phoenix/finalization.mdx +1 -1
  52. package/dist/docs/phoenix/layout-slots.mdx +11 -11
  53. package/dist/docs/phoenix/testing.mdx +1 -1
  54. package/dist/phoenix/services/swc.js +1 -1
  55. package/dist/react-sdk/domain-context/index.d.ts +2 -0
  56. package/dist/react-sdk/domain-context/index.js +1 -1
  57. package/dist/react-sdk/domain-context/system-hooks/step-navigation-hooks.d.ts +57 -0
  58. package/dist/react-sdk/domain-context/system-hooks/step-navigation-hooks.js +1 -0
  59. package/dist/react-sdk/domain-context/system-hooks/tab-navigation-hooks.d.ts +61 -0
  60. package/dist/react-sdk/domain-context/system-hooks/tab-navigation-hooks.js +1 -0
  61. package/dist/react-sdk/elements/configurator-error-page-props.d.ts +20 -0
  62. package/dist/react-sdk/elements/configurator-error-page-props.js +1 -0
  63. package/dist/react-sdk/elements/index.d.ts +1 -0
  64. package/dist/react-sdk/handlers/FinalizeActionRunner.d.ts +13 -0
  65. package/dist/react-sdk/handlers/FinalizeActionRunner.js +1 -0
  66. package/dist/react-sdk/handlers/FinalizeActionsHost.d.ts +10 -0
  67. package/dist/react-sdk/handlers/FinalizeActionsHost.js +1 -0
  68. package/dist/react-sdk/handlers/FinalizeActionsProvider.d.ts +11 -0
  69. package/dist/react-sdk/handlers/FinalizeActionsProvider.js +1 -0
  70. package/dist/react-sdk/handlers/finalize-actions-context.d.ts +6 -0
  71. package/dist/react-sdk/handlers/finalize-actions-context.js +1 -0
  72. package/dist/react-sdk/handlers/finalize-actions-store.d.ts +23 -0
  73. package/dist/react-sdk/handlers/finalize-actions-store.js +1 -0
  74. package/dist/react-sdk/handlers/index.d.ts +5 -0
  75. package/dist/react-sdk/handlers/index.js +1 -1
  76. package/dist/react-sdk/handlers/use-finalize-action.d.ts +3 -2
  77. package/dist/react-sdk/handlers/use-finalize-action.js +1 -1
  78. package/dist/react-sdk/handlers/use-finalize-actions.d.ts +53 -0
  79. package/dist/react-sdk/handlers/use-finalize-actions.js +1 -0
  80. package/dist/react-sdk/index.d.ts +1 -0
  81. package/dist/react-sdk/index.js +1 -1
  82. package/dist/react-sdk/responsive-state/ResponsiveStateProvider.d.ts +25 -0
  83. package/dist/react-sdk/responsive-state/ResponsiveStateProvider.js +1 -0
  84. package/dist/react-sdk/responsive-state/canvas-padding.d.ts +14 -0
  85. package/dist/react-sdk/responsive-state/canvas-padding.js +1 -0
  86. package/dist/react-sdk/responsive-state/index.d.ts +5 -0
  87. package/dist/react-sdk/responsive-state/index.js +1 -0
  88. package/dist/react-sdk/responsive-state/responsive-state-manager.d.ts +111 -0
  89. package/dist/react-sdk/responsive-state/responsive-state-manager.js +1 -0
  90. package/dist/react-sdk/responsive-state/use-responsive-state-manager.d.ts +10 -0
  91. package/dist/react-sdk/responsive-state/use-responsive-state-manager.js +1 -0
  92. package/dist/react-sdk/responsive-state/use-responsive-state.d.ts +11 -0
  93. package/dist/react-sdk/responsive-state/use-responsive-state.js +1 -0
  94. package/dist/ui-sdk/responsive-application/ResponsiveApplicationProvider.d.ts +9 -0
  95. package/dist/ui-sdk/responsive-application/ResponsiveApplicationProvider.js +1 -1
  96. package/dist/ui-sdk/responsive-application/index.d.ts +1 -0
  97. package/dist/ui-sdk/responsive-application/responsive-state-store.d.ts +57 -0
  98. package/dist/ui-sdk/responsive-application/responsive-state-store.js +1 -0
  99. package/dist/ui-sdk/responsive-application/use-store-responsive-info.d.ts +7 -0
  100. package/dist/ui-sdk/responsive-application/use-store-responsive-info.js +1 -0
  101. package/package.json +7 -6
@@ -1 +1 @@
1
- import{jsx as e,jsxs as o,Fragment as t}from"react/jsx-runtime";import{GlobalStyles as i,styled as r}from"@mui/material";import{useObservableEagerState as n}from"observable-hooks";import{useEffect as a,useRef as s}from"react";import{useResizeObserver as l}from"usehooks-ts";import{attrf as d,commonStyles as p}from"../common/index.js";import{ResponsiveContext as m,useResponsiveInfo as c}from"./ResponsiveProvider.js";let v="animating",f="expanded",y="hidden",u=e(i,{styles:({palette:e,typography:o})=>({":host":{all:"initial",interpolateSize:"allow-keywords",blockSize:"100%",boxSizing:"border-box",display:"block",overscrollBehavior:"contain",":where(*, *::after, *::before)":{boxSizing:"border-box"},backgroundColor:e.background.default,color:e.text.primary,fontFamily:o.fontFamily,...o.body1,MozOsxFontSmoothing:"grayscale",WebkitFontSmoothing:"antialiased",WebkitTextSizeAdjust:"100%"}})}),x=r("div")(()=>({...p.transition.fadeIn,blockSize:"100%",containerName:"app",containerType:"inline-size",contentVisibility:"auto",display:"grid",overflow:"auto",position:"relative",[`&[data-responsive-app*="${v}"]`]:{overflow:"clip"},[`&[data-responsive-app*="${f}"]`]:{inset:0,position:"fixed",zIndex:"var(--phx-app-index)"},[`&[data-responsive-app*="${y}"]`]:{contentVisibility:"hidden"}})),b=r("div")(()=>({position:"relative"}));export const ResponsiveApplicationProvider=i=>{let{children:r,containerZIndex:p}=i,h=s(null),w=c(h);l({ref:h,onResize:()=>{w.update()}});let{isAnimating:g,isExpanded:k,isHidden:z}=w,{height:S}=n(w.viewport$);return a(()=>{if(!k)return;let e=document.documentElement.style.overflow,o=document.body.style.overflow;return document.documentElement.style.setProperty("overflow","hidden"),document.body.style.setProperty("overflow","hidden"),()=>{document.documentElement.style.setProperty("overflow",e),document.body.style.setProperty("overflow",o)}},[k]),o(t,{children:[u,e(m.Provider,{value:w,children:e(x,{ref:h,"data-responsive-app":d({state:{[`${v}`]:g,[`${f}`]:k,[`${y}`]:z}}),inert:z?"":void 0,sx:{"--phx-app-index":p},children:e(b,{sx:{"--phx-app-height":S+"px"},children:r})})})]})};
1
+ import{jsx as e,jsxs as o,Fragment as t}from"react/jsx-runtime";import{GlobalStyles as i,styled as r}from"@mui/material";import{useObservableEagerState as n}from"observable-hooks";import{useEffect as a,useRef as s}from"react";import{useResizeObserver as l}from"usehooks-ts";import{attrf as d,commonStyles as p}from"../common/index.js";import{ResponsiveContext as m,useResponsiveInfo as c}from"./ResponsiveProvider.js";import{useStoreResponsiveInfo as f}from"./use-store-responsive-info.js";let u="animating",v="expanded",x="hidden",y=e(i,{styles:({palette:e,typography:o})=>({":host":{all:"initial",interpolateSize:"allow-keywords",blockSize:"100%",boxSizing:"border-box",display:"block",overscrollBehavior:"contain",":where(*, *::after, *::before)":{boxSizing:"border-box"},backgroundColor:e.background.default,color:e.text.primary,fontFamily:o.fontFamily,...o.body1,MozOsxFontSmoothing:"grayscale",WebkitFontSmoothing:"antialiased",WebkitTextSizeAdjust:"100%"}})}),b=r("div")(()=>({...p.transition.fadeIn,blockSize:"100%",containerName:"app",containerType:"inline-size",contentVisibility:"auto",display:"grid",overflow:"auto",position:"relative",[`&[data-responsive-app*="${u}"]`]:{overflow:"clip"},[`&[data-responsive-app*="${v}"]`]:{inset:0,position:"fixed",zIndex:"var(--phx-app-index)"},[`&[data-responsive-app*="${x}"]`]:{contentVisibility:"hidden"}})),h=r("div")(()=>({position:"relative"})),w=i=>{let{children:r,containerRef:s,containerZIndex:p,info:c}=i;l({ref:s,onResize:()=>{c.update()}});let{isAnimating:f,isExpanded:w,isHidden:g}=c,{height:k}=n(c.viewport$);return a(()=>{if(!w)return;let e=document.documentElement.style.overflow,o=document.body.style.overflow;return document.documentElement.style.setProperty("overflow","hidden"),document.body.style.setProperty("overflow","hidden"),()=>{document.documentElement.style.setProperty("overflow",e),document.body.style.setProperty("overflow",o)}},[w]),o(t,{children:[y,e(m.Provider,{value:c,children:e(b,{ref:s,"data-responsive-app":d({state:{[`${u}`]:f,[`${v}`]:w,[`${x}`]:g}}),inert:g?"":void 0,sx:{"--phx-app-index":p},children:e(h,{sx:{"--phx-app-height":k+"px"},children:r})})})]})},g=o=>{let t=s(null),i=c(t);return e(w,{...o,containerRef:t,info:i})},k=o=>{let{store:t,...i}=o,r=s(null),n=f(r,t);return e(w,{...i,containerRef:r,info:n})};export const ResponsiveApplicationProvider=o=>{let{children:t,containerZIndex:i,store:r}=o;return r?e(k,{containerZIndex:i,store:r,children:t}):e(g,{containerZIndex:i,children:t})};
@@ -1,2 +1,3 @@
1
1
  export { ResponsiveApplicationProvider, type ResponsiveApplicationProviderProps, } from './ResponsiveApplicationProvider.js';
2
2
  export { type CanvasPadding, Responsive, useResponsiveInfo, useResponsive, ResponsiveContext, type ResponsiveInfo, } from './ResponsiveProvider.js';
3
+ export { type ResponsiveStateSnapshot, type ResponsiveStateStore } from './responsive-state-store.js';
@@ -0,0 +1,57 @@
1
+ import type { BehaviorSubject, Observable } from 'rxjs';
2
+ import type { CanvasPadding } from './ResponsiveProvider.js';
3
+ /**
4
+ * The responsive state a `ResponsiveStateStore` holds.
5
+ *
6
+ * @internal Runtime plumbing behind the `store` prop of `ResponsiveApplicationProvider`, for the
7
+ * SDK's own configurator.
8
+ */
9
+ export interface ResponsiveStateSnapshot {
10
+ readonly isPhone: boolean;
11
+ readonly isMobile: boolean;
12
+ readonly isTablet: boolean;
13
+ readonly isDesktop: boolean;
14
+ readonly isLandscape: boolean;
15
+ readonly isPortrait: boolean;
16
+ readonly canvasPadding: CanvasPadding;
17
+ readonly isExpanded: boolean;
18
+ readonly isHidden: boolean;
19
+ readonly isAnimating: boolean;
20
+ }
21
+ /**
22
+ * Responsive state owned outside the UI, which `ResponsiveApplicationProvider` measures its root
23
+ * container into and provides to `useResponsive()`. A mounted Phoenix application passes the
24
+ * `ResponsiveStateManager` of `@salsita-ai/sdk/react`, so its lifecycle reads the same state
25
+ * without the UI.
26
+ *
27
+ * Declared here by shape rather than imported, because `ui-sdk` depends on no other SDK package.
28
+ *
29
+ * @internal Runtime plumbing for the SDK's own configurator; a project mounting
30
+ * `ResponsiveApplicationProvider` leaves `store` out.
31
+ */
32
+ export interface ResponsiveStateStore {
33
+ readonly state$: Observable<ResponsiveStateSnapshot>;
34
+ readonly viewport$: BehaviorSubject<{
35
+ width: number;
36
+ height: number;
37
+ }>;
38
+ readonly getState: () => ResponsiveStateSnapshot;
39
+ readonly setViewport: (viewport: {
40
+ readonly width: number;
41
+ readonly height: number;
42
+ readonly isLandscape: boolean;
43
+ readonly isPortrait: boolean;
44
+ }) => void;
45
+ readonly setBreakpoints: (breakpoints: {
46
+ readonly sm: number;
47
+ readonly md: number;
48
+ readonly lg: number;
49
+ }) => void;
50
+ readonly getCanvasPadding: () => CanvasPadding;
51
+ readonly setCanvasPadding: (padding: CanvasPadding) => void;
52
+ readonly expand: () => void;
53
+ readonly collapse: () => void;
54
+ readonly hide: () => void;
55
+ readonly show: () => void;
56
+ readonly setAnimating: (value: boolean) => void;
57
+ }
@@ -0,0 +1,7 @@
1
+ import type { useResponsiveInfo } from './ResponsiveProvider.js';
2
+ import type { ResponsiveStateStore } from './responsive-state-store.js';
3
+ /**
4
+ * `useResponsiveInfo` over a store owned outside the UI: measures the container into the store,
5
+ * pushes the theme's breakpoints into it, and reads every value back from it.
6
+ */
7
+ export declare const useStoreResponsiveInfo: (elementRef: React.MutableRefObject<HTMLElement | null>, store: ResponsiveStateStore) => ReturnType<typeof useResponsiveInfo>;
@@ -0,0 +1 @@
1
+ import{useTheme as e}from"@mui/material";import{useCallback as t,useLayoutEffect as i,useMemo as a,useSyncExternalStore as s}from"react";import{isMobileOnly as n}from"react-device-detect";import{useResizeObserver as o}from"usehooks-ts";export const useStoreResponsiveInfo=(r,c)=>{let{sm:d,md:p,lg:l}=e().breakpoints.values,u=s(t(e=>{let t=c.state$.subscribe(e);return()=>{t.unsubscribe()}},[c]),c.getState);i(()=>{c.setBreakpoints({sm:d,md:p,lg:l})},[c,d,p,l]);let m=t(e=>{let{width:t,height:i}=e.getBoundingClientRect();c.setViewport({width:t,height:i,isLandscape:window.matchMedia("(orientation: landscape)").matches,isPortrait:window.matchMedia("(orientation: portrait)").matches})},[c]),b=t(e=>{c.setCanvasPadding("function"==typeof e?e(c.getCanvasPadding()):e)},[c]),g=t(()=>{r.current&&m(r.current)},[r,m]);return o({ref:r,onResize:()=>{null!=r.current&&m(r.current)}}),i(()=>{null!=r.current&&m(r.current)},[r,m]),a(()=>({...u,expand:c.expand,collapse:c.collapse,hide:c.hide,show:c.show,isMobileAndMobileLandscape:u.isMobile||u.isLandscape&&u.isTablet&&n,isDesktopExceptMobileLandscape:u.isDesktop&&!(u.isLandscape&&u.isTablet&&n),viewport$:c.viewport$,getCanvasPadding:c.getCanvasPadding,setCanvasPadding:b,update:g,setAnimating:c.setAnimating}),[u,c,b,g])};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salsita-ai/sdk",
3
- "version": "0.50.0-develop.d815756961",
3
+ "version": "0.50.0-develop.d87b28256e",
4
4
  "description": "TypeScript SDK and CLI for building, running, and deploying Phoenix configurator applications.",
5
5
  "keywords": [
6
6
  "salsita",
@@ -287,7 +287,7 @@
287
287
  "three-stdlib": "2.36.1",
288
288
  "troika-three-text": "0.47.2",
289
289
  "ts-pattern": "5.9.0",
290
- "typescript": "npm:@typescript/typescript6@6.0.2",
290
+ "typescript": "6.0.3",
291
291
  "use-font-face-observer": "1.2.2",
292
292
  "usehooks-ts": "3.1.0",
293
293
  "uuid": "14.0.0",
@@ -298,8 +298,8 @@
298
298
  "yaml": "2.9.0",
299
299
  "yargs": "17.7.2",
300
300
  "zod": "3.25.76",
301
- "@salsita-ai/contracts": "0.50.0-develop.d815756961",
302
- "@salsita-ai/common": "0.50.0-develop.d815756961"
301
+ "@salsita-ai/common": "0.50.0-develop.d87b28256e",
302
+ "@salsita-ai/contracts": "0.50.0-develop.d87b28256e"
303
303
  },
304
304
  "devDependencies": {
305
305
  "@clerk/clerk-react": "5.61.8",
@@ -370,7 +370,7 @@
370
370
  "@types/react": "^18.3.8",
371
371
  "@types/react-dom": "^18.3.0",
372
372
  "@types/three": "^0.160.0",
373
- "postprocessing": "^6.36.3",
373
+ "postprocessing": "~6.36.3",
374
374
  "react": "^18.3.1",
375
375
  "react-dom": "^18.3.1",
376
376
  "rxjs": "^7.8.2",
@@ -406,6 +406,7 @@
406
406
  "prettify:fix": "prettier --write .",
407
407
  "verify:fix": "pnpm build && pnpm run ts:check && pnpm docs:verify && pnpm lint:fix && pnpm prettify:fix && pnpm test",
408
408
  "test": "vitest run",
409
- "ts:check": "NODE_OPTIONS=\"--max-old-space-size=8192\" tsc --project ./tsconfig.build.json --emitDeclarationOnly --noEmit --checkers 1"
409
+ "ts:check": "NODE_OPTIONS=\"--max-old-space-size=8192\" tsc --project ./tsconfig.build.json --emitDeclarationOnly --noEmit --checkers 1 && pnpm ts:check:tests",
410
+ "ts:check:tests": "NODE_OPTIONS=\"--max-old-space-size=8192\" tsc --project ./tsconfig.test.json --noEmit --checkers 1"
410
411
  }
411
412
  }