@fasl-work/caos-app-shell 0.22.0 → 0.23.0

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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## [0.23.000] - 2026-11-06
2
+
3
+ ### Added
4
+ - Add the `StoryFrame.mobileStageMinHeight` option for products whose mobile scene, controls and three required callouts need a taller stage. The default remains 300 px and the panel stays below the stage. the product template's story showed the need when the 390 × 844 gate could not keep its plot labels, scrub control and callouts visible together.
5
+
1
6
  ## [0.22.000] - 2026-11-06
2
7
 
3
8
  ### Added
package/VERSION CHANGED
@@ -1 +1 @@
1
- 0.22.000
1
+ 0.23.000
package/dist/index.d.ts CHANGED
@@ -1417,13 +1417,14 @@ interface StoryFrameProps {
1417
1417
  exit: BiText;
1418
1418
  }>;
1419
1419
  autoAdvanceMs?: number;
1420
+ mobileStageMinHeight?: number;
1420
1421
  className?: string;
1421
1422
  }
1422
1423
  /**
1423
1424
  * A guided 3 to 6 step story over the same state as a product App. The product owns each step's real view and panel;
1424
1425
  * the shell owns the stepper, deep links, keyboard behavior, pause-on-interaction, and semantic structure (ADR-0082).
1425
1426
  */
1426
- declare function StoryFrame({ steps, activeId, onStepChange, onExit, labels, autoAdvanceMs, className }: StoryFrameProps): react.JSX.Element | null;
1427
+ declare function StoryFrame({ steps, activeId, onStepChange, onExit, labels, autoAdvanceMs, mobileStageMinHeight, className }: StoryFrameProps): react.JSX.Element | null;
1427
1428
 
1428
1429
  type CalloutState = 'alarm' | 'warning' | 'normal' | 'selected' | 'inactive';
1429
1430
  interface SceneCalloutDef {
package/dist/index.js CHANGED
@@ -4160,7 +4160,10 @@ var DEFAULT_LABELS = {
4160
4160
  pause: { en: "Pause story", es: "Pausar historia" },
4161
4161
  exit: { en: "Return to exploration", es: "Volver a explorar" }
4162
4162
  };
4163
- function StoryFrame({ steps, activeId, onStepChange, onExit, labels = {}, autoAdvanceMs = 5e3, className }) {
4163
+ function StoryFrame({ steps, activeId, onStepChange, onExit, labels = {}, autoAdvanceMs = 5e3, mobileStageMinHeight = 300, className }) {
4164
+ if (!Number.isInteger(mobileStageMinHeight) || mobileStageMinHeight < 300 || mobileStageMinHeight > 900) {
4165
+ throw new RangeError("StoryFrame mobileStageMinHeight must be an integer from 300 through 900 CSS pixels");
4166
+ }
4164
4167
  const lang = useShellLang();
4165
4168
  const [playing, setPlaying] = useState(false);
4166
4169
  const activeIndex = Math.max(0, steps.findIndex((step) => step.id === activeId));
@@ -4204,7 +4207,7 @@ function StoryFrame({ steps, activeId, onStepChange, onExit, labels = {}, autoAd
4204
4207
  }
4205
4208
  }
4206
4209
  if (!active) return null;
4207
- return /* @__PURE__ */ jsxs("section", { className: ["caos-story", "page-body", "wide", className].filter(Boolean).join(" "), "data-story": "", "data-story-step": active.id, "data-step-accent": active.accent, "aria-label": pick(copy.steps, lang), tabIndex: 0, onKeyDown, children: [
4210
+ return /* @__PURE__ */ jsxs("section", { className: ["caos-story", "page-body", "wide", className].filter(Boolean).join(" "), style: { "--caos-story-stage-minimum": `${mobileStageMinHeight}px` }, "data-story": "", "data-story-step": active.id, "data-step-accent": active.accent, "aria-label": pick(copy.steps, lang), tabIndex: 0, onKeyDown, children: [
4208
4211
  /* @__PURE__ */ jsxs("header", { className: "caos-story-header", children: [
4209
4212
  /* @__PURE__ */ jsxs("div", { className: "caos-story-heading", children: [
4210
4213
  /* @__PURE__ */ jsxs("span", { className: "caos-story-verb", children: [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fasl-work/caos-app-shell",
3
- "version": "0.22.0",
3
+ "version": "0.23.0",
4
4
  "description": "Shared web-app shell, workbench primitives, content primitives, design system and measured gate for the CAOS / Faena public apps (ADR-0016, ADR-0017, ADR-0071).",
5
5
  "license": "MIT",
6
6
  "author": "Felipe Santibáñez-Leal",
package/styles.css CHANGED
@@ -1044,9 +1044,9 @@ svg.lucide { flex: none; }
1044
1044
  .caos-story button { min-height: 34px; padding: .3rem .5rem; font-size: .78rem; white-space: nowrap; }
1045
1045
  .caos-story-stepper { grid-auto-columns: minmax(90px, 1fr); grid-auto-flow: column; grid-template-columns: unset; overflow-x: auto; }
1046
1046
  .caos-story-step-headline { display: none; }
1047
- .caos-story-layout { grid-template-columns: minmax(0, 1fr); grid-template-rows: minmax(46dvh, 1fr) auto; }
1047
+ .caos-story-layout { grid-template-columns: minmax(0, 1fr); grid-template-rows: minmax(max(46dvh, var(--caos-story-stage-minimum, 300px)), auto) auto; }
1048
1048
  .caos-story-panel { max-height: 30dvh; }
1049
- .caos-story-stage { min-height: 300px; }
1049
+ .caos-story-stage { min-height: max(300px, var(--caos-story-stage-minimum, 300px)); }
1050
1050
  .caos-scene-callout { padding: .25rem .35rem; }
1051
1051
  }
1052
1052
  @media (prefers-reduced-motion: reduce) {