cursedbelt 5.85.0 → 5.86.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.
@@ -73,10 +73,14 @@ export interface ListToolbarProps {
73
73
  * keeps the controls right when everything fits on one line and lets them ride down as
74
74
  * a group when it does not.
75
75
  *
76
- * Except with chips, from `sm:`: a strip sized to its content took the whole row and wrapped the
77
- * controls under it (18 genres in flix, at 1440 AND 2560 — forge task 2560), breaking the one
78
- * line this component exists for. There the row stops wrapping and the strip becomes a scroll
79
- * lane (`flex-1`, `min-w-0` from its own root) between a fixed search box and fixed controls.
76
+ * With chips, from `sm:`, the strip is a scroll lane (`flex-1`, so its basis is 0, with a 10rem floor)
77
+ * between a fixed search box and the controls. Sized to its content it took the whole row and wrapped
78
+ * the controls under it (18 genres in flix, at 1440 AND 2560 — forge task 2560). With a zero basis, its
79
+ * chips never decide where the row breaks; only the floor does. So twenty chips keep one line and
80
+ * scroll. But when the search box, the floor and the controls cannot share the container (station's
81
+ * Queue: three chips in a list pane), the controls wrap under as a group. A row that never wrapped
82
+ * put the view toggle's second half past the pane's edge, with nothing to scroll to it (forge task
83
+ * 3473): FRM-14's one line yields to LAY-10's nothing is cut.
80
84
  *
81
85
  * No `role='toolbar'`: that role promises arrow-key roving focus between its controls,
82
86
  * which would take the arrow keys away from the text box and the native `<select>`
@@ -1 +1 @@
1
- {"version":3,"file":"ListToolbar.d.ts","sourceRoot":"","sources":["../../../src/react/components/ListToolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGxE,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,sFAAsF;IACtF,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAC9B,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IACrC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IACzD,iEAAiE;IACjE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oEAAoE;IACpE,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,iFAAiF;IACjF,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,wFAAwF;IACxF,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,mDAAmD;IACnD,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,KAAK,EACL,SAAgB,EAChB,YAAY,EACZ,UAAkB,EAClB,aAAa,EACb,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,SAAS,EACT,GAAG,IAAI,EACR,EAAE,gBAAgB,+BAuDlB"}
1
+ {"version":3,"file":"ListToolbar.d.ts","sourceRoot":"","sources":["../../../src/react/components/ListToolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGxE,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,sFAAsF;IACtF,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAC9B,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IACrC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IACzD,iEAAiE;IACjE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oEAAoE;IACpE,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,iFAAiF;IACjF,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,wFAAwF;IACxF,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,mDAAmD;IACnD,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AACH,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,KAAK,EACL,SAAgB,EAChB,YAAY,EACZ,UAAkB,EAClB,aAAa,EACb,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,SAAS,EACT,GAAG,IAAI,EACR,EAAE,gBAAgB,+BAsDlB"}
@@ -36,10 +36,14 @@ import { SearchInput } from './SearchInput.js';
36
36
  * keeps the controls right when everything fits on one line and lets them ride down as
37
37
  * a group when it does not.
38
38
  *
39
- * Except with chips, from `sm:`: a strip sized to its content took the whole row and wrapped the
40
- * controls under it (18 genres in flix, at 1440 AND 2560 — forge task 2560), breaking the one
41
- * line this component exists for. There the row stops wrapping and the strip becomes a scroll
42
- * lane (`flex-1`, `min-w-0` from its own root) between a fixed search box and fixed controls.
39
+ * With chips, from `sm:`, the strip is a scroll lane (`flex-1`, so its basis is 0, with a 10rem floor)
40
+ * between a fixed search box and the controls. Sized to its content it took the whole row and wrapped
41
+ * the controls under it (18 genres in flix, at 1440 AND 2560 — forge task 2560). With a zero basis, its
42
+ * chips never decide where the row breaks; only the floor does. So twenty chips keep one line and
43
+ * scroll. But when the search box, the floor and the controls cannot share the container (station's
44
+ * Queue: three chips in a list pane), the controls wrap under as a group. A row that never wrapped
45
+ * put the view toggle's second half past the pane's edge, with nothing to scroll to it (forge task
46
+ * 3473): FRM-14's one line yields to LAY-10's nothing is cut.
43
47
  *
44
48
  * No `role='toolbar'`: that role promises arrow-key roving focus between its controls,
45
49
  * which would take the arrow keys away from the text box and the native `<select>`
@@ -62,17 +66,17 @@ export function ListToolbar({ search, onSearchChange, searchPlaceholder, searchL
62
66
  const showSearch = search !== undefined && onSearchChange !== undefined;
63
67
  const showChips = chips !== undefined && chips.length > 0 && onChipChange !== undefined;
64
68
  const showRight = Boolean(sort) || Boolean(view) || Boolean(actions);
65
- return (_jsxs("div", { ...rest, className: cn('flex flex-wrap items-center gap-x-3 gap-y-2',
66
- // From `sm:` a row WITH chips never wraps: the chips are the one item that can give way
67
- // (a scroll lane), so they take what the search box and the controls leave. Without
68
- // chips nothing on the line can scroll, so it keeps wrapping rather than overflow.
69
- showChips && 'sm:flex-nowrap', className), children: [showSearch ? (_jsx(SearchInput, { syntax: false, value: search, onChange: onSearchChange, placeholder: searchPlaceholder ?? 'Search', "aria-label": searchLabel ?? searchPlaceholder ?? 'Search',
69
+ return (_jsxs("div", { ...rest, className: cn(
70
+ // Wraps only when the search box, the chip lane's FLOOR and the controls do not fit: the lane's
71
+ // basis is 0, so however many chips it holds they scroll rather than break the line.
72
+ 'flex flex-wrap items-center gap-x-3 gap-y-2', className), children: [showSearch ? (_jsx(SearchInput, { syntax: false, value: search, onChange: onSearchChange, placeholder: searchPlaceholder ?? 'Search', "aria-label": searchLabel ?? searchPlaceholder ?? 'Search',
70
73
  // Full width on a phone (the chips then wrap beneath it, still tappable);
71
74
  // a fixed, modest column from `sm:` so the chips share the line rather than
72
75
  // being pushed off it by a box that grows with the container.
73
76
  className: 'w-full min-w-40 sm:w-56 sm:shrink-0' })) : null, showChips ? (_jsx(ChipFilterStrip, { options: [...chips], value: chipValue, onChange: onChipChange, multi: multiChips, ...(chipsAllLabel === undefined ? {} : { allLabel: chipsAllLabel }),
74
77
  // The scroll lane. Sized to its CONTENT, twenty chips took the whole row and pushed
75
- // sort/view onto a second line at 1440 and 2560 (forge task 2560, flix's genres).
76
- className: 'sm:flex-1' })) : null, filters, showRight ? (_jsxs("span", { className: cn('ml-auto flex flex-wrap items-center gap-2', showChips && 'sm:shrink-0 sm:flex-nowrap'), children: [sort, view, actions] })) : null] }));
78
+ // sort/view onto a second line at 1440 and 2560 (forge task 2560, flix's genres). The
79
+ // floor keeps a few chips readable when the controls ride down beside a narrow pane.
80
+ className: 'sm:min-w-40 sm:flex-1' })) : null, filters, showRight ? (_jsxs("span", { className: 'ml-auto flex flex-wrap items-center gap-2', children: [sort, view, actions] })) : null] }));
77
81
  }
78
82
  //# sourceMappingURL=ListToolbar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListToolbar.js","sourceRoot":"","sources":["../../../src/react/components/ListToolbar.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,eAAe,EAAmB,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AA0C/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,MAAM,EACN,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,KAAK,EACL,SAAS,GAAG,IAAI,EAChB,YAAY,EACZ,UAAU,GAAG,KAAK,EAClB,aAAa,EACb,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,SAAS,EACT,GAAG,IAAI,EACU;IACjB,MAAM,UAAU,GAAG,MAAM,KAAK,SAAS,IAAI,cAAc,KAAK,SAAS,CAAC;IACxE,MAAM,SAAS,GAAG,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,KAAK,SAAS,CAAC;IACxF,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAErE,OAAO,CACL,kBACM,IAAI,EACR,SAAS,EAAE,EAAE,CACX,6CAA6C;QAC7C,wFAAwF;QACxF,oFAAoF;QACpF,mFAAmF;QACnF,SAAS,IAAI,gBAAgB,EAC7B,SAAS,CACV,aAEA,UAAU,CAAC,CAAC,CAAC,CAIZ,KAAC,WAAW,IACV,MAAM,EAAE,KAAK,EACb,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,cAAc,EACxB,WAAW,EAAE,iBAAiB,IAAI,QAAQ,gBAC9B,WAAW,IAAI,iBAAiB,IAAI,QAAQ;gBACxD,0EAA0E;gBAC1E,4EAA4E;gBAC5E,8DAA8D;gBAC9D,SAAS,EAAC,qCAAqC,GAC/C,CACH,CAAC,CAAC,CAAC,IAAI,EACP,SAAS,CAAC,CAAC,CAAC,CACX,KAAC,eAAe,IACd,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,EACnB,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,UAAU,KACb,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;gBACpE,oFAAoF;gBACpF,kFAAkF;gBAClF,SAAS,EAAC,WAAW,GACrB,CACH,CAAC,CAAC,CAAC,IAAI,EACP,OAAO,EACP,SAAS,CAAC,CAAC,CAAC,CACX,gBAAM,SAAS,EAAE,EAAE,CAAC,2CAA2C,EAAE,SAAS,IAAI,4BAA4B,CAAC,aACxG,IAAI,EACJ,IAAI,EACJ,OAAO,IACH,CACR,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ListToolbar.js","sourceRoot":"","sources":["../../../src/react/components/ListToolbar.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,eAAe,EAAmB,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AA0C/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,MAAM,EACN,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,KAAK,EACL,SAAS,GAAG,IAAI,EAChB,YAAY,EACZ,UAAU,GAAG,KAAK,EAClB,aAAa,EACb,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,SAAS,EACT,GAAG,IAAI,EACU;IACjB,MAAM,UAAU,GAAG,MAAM,KAAK,SAAS,IAAI,cAAc,KAAK,SAAS,CAAC;IACxE,MAAM,SAAS,GAAG,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,KAAK,SAAS,CAAC;IACxF,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAErE,OAAO,CACL,kBACM,IAAI,EACR,SAAS,EAAE,EAAE;QACX,gGAAgG;QAChG,qFAAqF;QACrF,6CAA6C,EAC7C,SAAS,CACV,aAEA,UAAU,CAAC,CAAC,CAAC,CAIZ,KAAC,WAAW,IACV,MAAM,EAAE,KAAK,EACb,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,cAAc,EACxB,WAAW,EAAE,iBAAiB,IAAI,QAAQ,gBAC9B,WAAW,IAAI,iBAAiB,IAAI,QAAQ;gBACxD,0EAA0E;gBAC1E,4EAA4E;gBAC5E,8DAA8D;gBAC9D,SAAS,EAAC,qCAAqC,GAC/C,CACH,CAAC,CAAC,CAAC,IAAI,EACP,SAAS,CAAC,CAAC,CAAC,CACX,KAAC,eAAe,IACd,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,EACnB,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,UAAU,KACb,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;gBACpE,oFAAoF;gBACpF,sFAAsF;gBACtF,qFAAqF;gBACrF,SAAS,EAAC,uBAAuB,GACjC,CACH,CAAC,CAAC,CAAC,IAAI,EACP,OAAO,EACP,SAAS,CAAC,CAAC,CAAC,CACX,gBAAM,SAAS,EAAC,2CAA2C,aACxD,IAAI,EACJ,IAAI,EACJ,OAAO,IACH,CACR,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC"}
@@ -3,6 +3,9 @@ import { type HTMLAttributes, type ReactNode } from 'react';
3
3
  * The routed content area. Purely structural: a min-height-0 flex column that fills
4
4
  * its slot in the AppShell. It sets NO scroll/overflow and NO background — the single
5
5
  * keyboard-safe `ScrollArea` (task 03) owns scrolling and the shell owns the page bg.
6
+ * 🔴 Its slot must be a flex column: in a plain block it grows to its content, its ScrollArea
7
+ * has nothing to scroll, and the page below the first screen is unreachable (roms, 2026-10-21) —
8
+ * the design audit's LAY-8 fails it.
6
9
  */
7
10
  export declare function Page({ className, ...p }: HTMLAttributes<HTMLDivElement>): import("react").JSX.Element;
8
11
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Page.d.ts","sourceRoot":"","sources":["../../../src/react/components/Page.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,KAAK,SAAS,EAAiD,MAAM,OAAO,CAAC;AAM1H;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,cAAc,CAAC,cAAc,CAAC,+BAEvE;AAED;;;GAGG;AACH,QAAA,MAAM,UAAU;IACd,qDAAqD;;;;;IAErD,6DAA6D;;;;;IAE7D,yEAAyE;;;;;IAEzE;;;;;;OAMG;;;;;IAEH,0EAA0E;;;;;CAElE,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,UAAU,CAAC;AAEhD;;;iDAGiD;AACjD,eAAO,MAAM,eAAe,kCAAuB,CAAC;AAEpD,MAAM,WAAW,kBAAmB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACxE;uDACmD;IACnD,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED;sEACsE;AACtE,wBAAgB,aAAa,CAAC,EAAE,KAAmB,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,kBAAkB,+BAYzF;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,cAAc,CAAC,cAAc,CAAC,+BAWjF;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,SAAS,CAAC;IACjB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,iFAAiF;IACjF,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;gEAC4D;IAC5D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;yEAGqE;IACrE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;uFAEmF;IACnF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;mEAE+D;IAC/D,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAOD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,KAAK,EACL,KAAa,EACb,aAAoB,EACpB,MAAc,EACd,KAAS,EACT,SAAS,EACT,GAAG,IAAI,EACR,EAAE,eAAe,+BA2CjB"}
1
+ {"version":3,"file":"Page.d.ts","sourceRoot":"","sources":["../../../src/react/components/Page.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,KAAK,SAAS,EAAiD,MAAM,OAAO,CAAC;AAM1H;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,cAAc,CAAC,cAAc,CAAC,+BAEvE;AAED;;;GAGG;AACH,QAAA,MAAM,UAAU;IACd,qDAAqD;;;;;IAErD,6DAA6D;;;;;IAE7D,yEAAyE;;;;;IAEzE;;;;;;OAMG;;;;;IAEH,0EAA0E;;;;;CAElE,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,UAAU,CAAC;AAEhD;;;iDAGiD;AACjD,eAAO,MAAM,eAAe,kCAAuB,CAAC;AAEpD,MAAM,WAAW,kBAAmB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACxE;uDACmD;IACnD,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED;sEACsE;AACtE,wBAAgB,aAAa,CAAC,EAAE,KAAmB,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,kBAAkB,+BAYzF;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,cAAc,CAAC,cAAc,CAAC,+BAWjF;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,SAAS,CAAC;IACjB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,iFAAiF;IACjF,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;gEAC4D;IAC5D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;yEAGqE;IACrE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;uFAEmF;IACnF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;mEAE+D;IAC/D,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAOD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,KAAK,EACL,KAAa,EACb,aAAoB,EACpB,MAAc,EACd,KAAS,EACT,SAAS,EACT,GAAG,IAAI,EACR,EAAE,eAAe,+BA2CjB"}
@@ -8,6 +8,9 @@ import { PageGuideButton } from './PageGuideButton.js';
8
8
  * The routed content area. Purely structural: a min-height-0 flex column that fills
9
9
  * its slot in the AppShell. It sets NO scroll/overflow and NO background — the single
10
10
  * keyboard-safe `ScrollArea` (task 03) owns scrolling and the shell owns the page bg.
11
+ * 🔴 Its slot must be a flex column: in a plain block it grows to its content, its ScrollArea
12
+ * has nothing to scroll, and the page below the first screen is unreachable (roms, 2026-10-21) —
13
+ * the design audit's LAY-8 fails it.
11
14
  */
12
15
  export function Page({ className, ...p }) {
13
16
  return _jsx("div", { className: cn('flex min-h-0 min-w-0 flex-1 flex-col', className), ...p });
@@ -1 +1 @@
1
- {"version":3,"file":"Page.js","sourceRoot":"","sources":["../../../src/react/components/Page.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Page.js","sourceRoot":"","sources":["../../../src/react/components/Page.tsx"],"names":[],"mappings":"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"}
@@ -13,6 +13,12 @@
13
13
  * simply there. The animation still runs for 0s, so Radix's `Presence` sees its `animationend`
14
14
  * and unmounts on close exactly as it does with motion on.
15
15
  *
16
+ * 🔴 A closing overlay lets the pointer through (`CLOSED_PASSTHROUGH`, in every constant below). Its
17
+ * exit runs for the whole duration at near-zero opacity, still mounted, and until then it took every
18
+ * click and drag over it: measured in desk (forge task 3488), a drag begun 0.2s after picking a menu
19
+ * item landed on the fading menu's next item instead of the canvas beneath. `e2e/motion.spec.ts`
20
+ * reads `pointer-events` at the instant `data-state` turns `closed`.
21
+ *
16
22
  * Each overlay's own direction stays its own: an anchored panel comes from its anchor's side, a
17
23
  * drawer slides its whole width in from its edge. What they share is the curve and the speed.
18
24
  *
@@ -32,6 +38,6 @@ export declare const DIALOG_MOTION: string;
32
38
  export declare const SCRIM_MOTION: string;
33
39
  /** A drawer's SPEED and curve. Its slide (`slide-in-from-left` …) is its edge's, so it stays at
34
40
  * the call site; this is what makes it ease like every other overlay instead of tw-animate's
35
- * 150ms `ease`. */
36
- export declare const DRAWER_MOTION = "duration-[var(--duration-slow)] ease-[var(--ease-out)] motion-reduce:duration-0";
41
+ * 150ms `ease`, and lets the pointer through while it closes. */
42
+ export declare const DRAWER_MOTION: string;
37
43
  //# sourceMappingURL=overlayMotion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"overlayMotion.d.ts","sourceRoot":"","sources":["../../../src/react/lib/overlayMotion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;4FAE4F;AAC5F,eAAO,MAAM,cAAc,QAKsD,CAAC;AAElF,iGAAiG;AACjG,eAAO,MAAM,eAAe,QAMqD,CAAC;AAElF;kFACkF;AAClF,eAAO,MAAM,aAAa,QAG6E,CAAC;AAExG,2FAA2F;AAC3F,eAAO,MAAM,YAAY,QAGyC,CAAC;AAEnE;;oBAEoB;AACpB,eAAO,MAAM,aAAa,oFAAoF,CAAC"}
1
+ {"version":3,"file":"overlayMotion.d.ts","sourceRoot":"","sources":["../../../src/react/lib/overlayMotion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAOH;;4FAE4F;AAC5F,eAAO,MAAM,cAAc,QAMsD,CAAC;AAElF,iGAAiG;AACjG,eAAO,MAAM,eAAe,QAOqD,CAAC;AAElF;kFACkF;AAClF,eAAO,MAAM,aAAa,QAIN,CAAC;AAErB,2FAA2F;AAC3F,eAAO,MAAM,YAAY,QAIL,CAAC;AAErB;;kEAEkE;AAClE,eAAO,MAAM,aAAa,QAA0G,CAAC"}
@@ -13,18 +13,29 @@
13
13
  * simply there. The animation still runs for 0s, so Radix's `Presence` sees its `animationend`
14
14
  * and unmounts on close exactly as it does with motion on.
15
15
  *
16
+ * 🔴 A closing overlay lets the pointer through (`CLOSED_PASSTHROUGH`, in every constant below). Its
17
+ * exit runs for the whole duration at near-zero opacity, still mounted, and until then it took every
18
+ * click and drag over it: measured in desk (forge task 3488), a drag begun 0.2s after picking a menu
19
+ * item landed on the fading menu's next item instead of the canvas beneath. `e2e/motion.spec.ts`
20
+ * reads `pointer-events` at the instant `data-state` turns `closed`.
21
+ *
16
22
  * Each overlay's own direction stays its own: an anchored panel comes from its anchor's side, a
17
23
  * drawer slides its whole width in from its edge. What they share is the curve and the speed.
18
24
  *
19
25
  * 🔴 Literals only — Tailwind's JIT reads source text (see `tapTarget.ts`). `e2e/motion.spec.ts`
20
26
  * opens each primitive and reads its running animation from `getAnimations()`.
21
27
  */
28
+ /** What every overlay does once it is closing: nothing under the pointer. Important, because
29
+ * Radix writes `pointer-events: auto` INLINE on a dialog's overlay (the body is `none` under a
30
+ * modal) and an inline style beats any class — the scrim kept the pointer with the plain one. */
31
+ const CLOSED_PASSTHROUGH = 'data-[state=closed]:pointer-events-none!';
22
32
  /** A tooltip: the fast speed, a fade and a 4px rise from its trigger's side. Only a DELAYED
23
33
  * open animates — moving between triggers inside the skip-delay window (`instant-open`) swaps
24
34
  * the bubble in place, the way Linear's do, instead of re-fading it on every neighbour. */
25
35
  export const TOOLTIP_MOTION = 'duration-[var(--duration-fast)] ease-[var(--ease-out)] motion-reduce:duration-0 ' +
26
36
  'data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-[0.985] ' +
27
37
  'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 ' +
38
+ CLOSED_PASSTHROUGH + ' ' +
28
39
  'data-[side=bottom]:slide-in-from-top-1 data-[side=top]:slide-in-from-bottom-1 ' +
29
40
  'data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1';
30
41
  /** An anchored panel (popover, menu, select, hover card): base speed, rising from its anchor. */
@@ -32,19 +43,22 @@ export const ANCHORED_MOTION = 'duration-[var(--duration-base)] ease-[var(--ease
32
43
  'data-[state=open]:animate-in data-[state=closed]:animate-out ' +
33
44
  'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 ' +
34
45
  'data-[state=closed]:zoom-out-[0.985] data-[state=open]:zoom-in-[0.985] ' +
46
+ CLOSED_PASSTHROUGH + ' ' +
35
47
  'data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2 ' +
36
48
  'data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2';
37
49
  /** A dialog's panel (Modal, ConfirmDialog, PromptDialog, Lightbox, the palette, a full-screen
38
50
  * dialog): slow speed, rising 8px from below and from 0.985 — `animate-rise`. */
39
51
  export const DIALOG_MOTION = 'duration-[var(--duration-slow)] ease-[var(--ease-out)] motion-reduce:duration-0 ' +
40
52
  'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-[0.985] data-[state=open]:slide-in-from-bottom-2 ' +
41
- 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-[0.985]';
53
+ 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-[0.985] ' +
54
+ CLOSED_PASSTHROUGH;
42
55
  /** The scrim behind a dialog or drawer: a fade at the speed of the panel it sits under. */
43
56
  export const SCRIM_MOTION = 'duration-[var(--duration-slow)] ease-[var(--ease-out)] motion-reduce:duration-0 ' +
44
57
  'data-[state=open]:animate-in data-[state=open]:fade-in-0 ' +
45
- 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0';
58
+ 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 ' +
59
+ CLOSED_PASSTHROUGH;
46
60
  /** A drawer's SPEED and curve. Its slide (`slide-in-from-left` …) is its edge's, so it stays at
47
61
  * the call site; this is what makes it ease like every other overlay instead of tw-animate's
48
- * 150ms `ease`. */
49
- export const DRAWER_MOTION = 'duration-[var(--duration-slow)] ease-[var(--ease-out)] motion-reduce:duration-0';
62
+ * 150ms `ease`, and lets the pointer through while it closes. */
63
+ export const DRAWER_MOTION = 'duration-[var(--duration-slow)] ease-[var(--ease-out)] motion-reduce:duration-0 ' + CLOSED_PASSTHROUGH;
50
64
  //# sourceMappingURL=overlayMotion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"overlayMotion.js","sourceRoot":"","sources":["../../../src/react/lib/overlayMotion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;4FAE4F;AAC5F,MAAM,CAAC,MAAM,cAAc,GACzB,kFAAkF;IAClF,qHAAqH;IACrH,iEAAiE;IACjE,gFAAgF;IAChF,+EAA+E,CAAC;AAElF,iGAAiG;AACjG,MAAM,CAAC,MAAM,eAAe,GAC1B,kFAAkF;IAClF,+DAA+D;IAC/D,6DAA6D;IAC7D,yEAAyE;IACzE,gFAAgF;IAChF,+EAA+E,CAAC;AAElF;kFACkF;AAClF,MAAM,CAAC,MAAM,aAAa,GACxB,kFAAkF;IAClF,sIAAsI;IACtI,qGAAqG,CAAC;AAExG,2FAA2F;AAC3F,MAAM,CAAC,MAAM,YAAY,GACvB,kFAAkF;IAClF,2DAA2D;IAC3D,gEAAgE,CAAC;AAEnE;;oBAEoB;AACpB,MAAM,CAAC,MAAM,aAAa,GAAG,iFAAiF,CAAC"}
1
+ {"version":3,"file":"overlayMotion.js","sourceRoot":"","sources":["../../../src/react/lib/overlayMotion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH;;kGAEkG;AAClG,MAAM,kBAAkB,GAAG,0CAA0C,CAAC;AAEtE;;4FAE4F;AAC5F,MAAM,CAAC,MAAM,cAAc,GACzB,kFAAkF;IAClF,qHAAqH;IACrH,iEAAiE;IACjE,kBAAkB,GAAG,GAAG;IACxB,gFAAgF;IAChF,+EAA+E,CAAC;AAElF,iGAAiG;AACjG,MAAM,CAAC,MAAM,eAAe,GAC1B,kFAAkF;IAClF,+DAA+D;IAC/D,6DAA6D;IAC7D,yEAAyE;IACzE,kBAAkB,GAAG,GAAG;IACxB,gFAAgF;IAChF,+EAA+E,CAAC;AAElF;kFACkF;AAClF,MAAM,CAAC,MAAM,aAAa,GACxB,kFAAkF;IAClF,sIAAsI;IACtI,sGAAsG;IACtG,kBAAkB,CAAC;AAErB,2FAA2F;AAC3F,MAAM,CAAC,MAAM,YAAY,GACvB,kFAAkF;IAClF,2DAA2D;IAC3D,iEAAiE;IACjE,kBAAkB,CAAC;AAErB;;kEAEkE;AAClE,MAAM,CAAC,MAAM,aAAa,GAAG,kFAAkF,GAAG,kBAAkB,CAAC"}
@@ -15,7 +15,7 @@
15
15
  * after an app's responsive variant (task 2124). An app that imports every area gets exactly
16
16
  * what `cursedbelt/styles-utilities.css` emits — proved rule by rule in
17
17
  * src/stylesAreas.spec.ts, which is also what fails when this file is stale.
18
- * 927 candidate(s).
18
+ * 928 candidate(s).
19
19
  *
20
20
  * Written by scripts/generateAreaStyles.ts (`bun run styles:areas`), which
21
21
  * `bun run build` runs. The map of what is in which area, and why the areas are
@@ -88,13 +88,13 @@
88
88
  @source inline("data-[state=checked]:ring-accent data-[state=checked]:text-white");
89
89
  @source inline("data-[state=checked]:translate-x-4 data-[state=closed]:animate-collapsible-up");
90
90
  @source inline("data-[state=closed]:animate-out data-[state=closed]:fade-out-0");
91
- @source inline("data-[state=closed]:slide-out-to-bottom data-[state=closed]:slide-out-to-left");
92
- @source inline("data-[state=closed]:slide-out-to-right data-[state=closed]:zoom-out-[0.985]");
93
- @source inline("data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0");
94
- @source inline("data-[state=delayed-open]:zoom-in-[0.985] data-[state=indeterminate]:bg-accent-solid");
95
- @source inline("data-[state=indeterminate]:border-accent-solid data-[state=indeterminate]:text-white");
96
- @source inline("data-[state=open]:animate-collapsible-down data-[state=open]:animate-in");
97
- @source inline("data-[state=open]:fade-in-0 data-[state=open]:slide-in-from-bottom");
91
+ @source inline("data-[state=closed]:pointer-events-none! data-[state=closed]:slide-out-to-bottom");
92
+ @source inline("data-[state=closed]:slide-out-to-left data-[state=closed]:slide-out-to-right");
93
+ @source inline("data-[state=closed]:zoom-out-[0.985] data-[state=delayed-open]:animate-in");
94
+ @source inline("data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-[0.985]");
95
+ @source inline("data-[state=indeterminate]:bg-accent-solid data-[state=indeterminate]:border-accent-solid");
96
+ @source inline("data-[state=indeterminate]:text-white data-[state=open]:animate-collapsible-down");
97
+ @source inline("data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:slide-in-from-bottom");
98
98
  @source inline("data-[state=open]:slide-in-from-bottom-2 data-[state=open]:slide-in-from-left");
99
99
  @source inline("data-[state=open]:slide-in-from-right data-[state=open]:zoom-in-[0.985]");
100
100
  @source inline("data-[state=unchecked]:bg-muted data-[state=unchecked]:translate-x-0 disable disabled");
@@ -37,8 +37,8 @@
37
37
  @source inline("peer-focus:rounded-lg pl-1 pl-3 pointer-coarse:disabled:opacity-50 pointer-coarse:h-12");
38
38
  @source inline("pointer-coarse:w-12 pr-16 pr-9 pt-1.5 resize-none right-4 ring-1 ring-4 ring-accent/20");
39
39
  @source inline("ring-accent/30 ring-accent/40 ring-border ring-inset ring-ring rounded-2xl");
40
- @source inline("rounded-[var(--radius-device)] scale-[1.01] self-stretch shrink-[2] size-7 sm:flex-1");
41
- @source inline("sm:flex-nowrap sm:shrink-0 sm:w-56 text-muted-foreground/60 text-tone-amber-ink");
42
- @source inline("text-tone-cyan-ink text-tone-emerald-ink text-tone-orange-ink text-tone-purple-ink");
43
- @source inline("text-tone-rose-ink text-tone-sky-ink text-tone-slate-ink text-xl transition-[opacity,transform]");
44
- @source inline("translate-y-0 translate-y-2 w-0 w-88");
40
+ @source inline("rounded-[var(--radius-device)] scale-[1.01] self-stretch shrink-[2] size-7 sm:flex-1 sm:min-w-40");
41
+ @source inline("sm:shrink-0 sm:w-56 text-muted-foreground/60 text-tone-amber-ink text-tone-cyan-ink");
42
+ @source inline("text-tone-emerald-ink text-tone-orange-ink text-tone-purple-ink text-tone-rose-ink");
43
+ @source inline("text-tone-sky-ink text-tone-slate-ink text-xl transition-[opacity,transform] translate-y-0");
44
+ @source inline("translate-y-2 w-0 w-88");
@@ -194,6 +194,13 @@
194
194
  [data-radix-popper-content-wrapper]:has(> [data-cb-tooltip]) {
195
195
  pointer-events: none;
196
196
  }
197
+ /* The same wrapper, under ANY anchored overlay (popover, menu, select, hover card) while it
198
+ closes. Its content lets the pointer through for the exit (`overlayMotion.ts`, forge task 3488),
199
+ but the wrapper is the content's size and still took the click or drag: desk's drawing spec
200
+ began a drag on the canvas 0.2 s after picking a New-menu item, and it landed here. */
201
+ [data-radix-popper-content-wrapper]:has(> [data-state='closed']) {
202
+ pointer-events: none;
203
+ }
197
204
  /* !important: when a modal dialog disables body pointer events, Radix's
198
205
  DismissableLayer re-enables the tooltip layer with an INLINE `pointer-events:
199
206
  auto` — exactly the case (tooltip inside an open modal) this rule exists for. */
@@ -4444,6 +4444,9 @@
4444
4444
  --tw-ring-offset-width: 1px;
4445
4445
  --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
4446
4446
  }
4447
+ .data-\[state\=closed\]\:pointer-events-none\![data-state="closed"] {
4448
+ pointer-events: none !important;
4449
+ }
4447
4450
  .data-\[state\=closed\]\:animate-collapsible-up[data-state="closed"] {
4448
4451
  animation: collapsible-up var(--tw-animation-duration,var(--tw-duration,.2s))var(--tw-ease,ease-out)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);
4449
4452
  }
@@ -4731,6 +4734,9 @@
4731
4734
  .sm\:max-w-\[var\(--modal-w-sm\)\] {
4732
4735
  max-width: var(--modal-w-sm);
4733
4736
  }
4737
+ .sm\:min-w-40 {
4738
+ min-width: calc(var(--spacing) * 40);
4739
+ }
4734
4740
  .sm\:flex-1 {
4735
4741
  flex: 1;
4736
4742
  }
package/dist/styles.css CHANGED
@@ -196,6 +196,13 @@
196
196
  [data-radix-popper-content-wrapper]:has(> [data-cb-tooltip]) {
197
197
  pointer-events: none;
198
198
  }
199
+ /* The same wrapper, under ANY anchored overlay (popover, menu, select, hover card) while it
200
+ closes. Its content lets the pointer through for the exit (`overlayMotion.ts`, forge task 3488),
201
+ but the wrapper is the content's size and still took the click or drag: desk's drawing spec
202
+ began a drag on the canvas 0.2 s after picking a New-menu item, and it landed here. */
203
+ [data-radix-popper-content-wrapper]:has(> [data-state='closed']) {
204
+ pointer-events: none;
205
+ }
199
206
  /* !important: when a modal dialog disables body pointer events, Radix's
200
207
  DismissableLayer re-enables the tooltip layer with an INLINE `pointer-events:
201
208
  auto` — exactly the case (tooltip inside an open modal) this rule exists for. */
@@ -16,7 +16,7 @@
16
16
  * throws `ReferenceError` in the browser.
17
17
  */
18
18
  /** Every rule this audit decides. The IDs are the design guide's, unchanged. */
19
- export declare const DESIGN_RULES: readonly ["LAY-10", "FND-6", "CPY-1", "DAT-16", "LAY-13", "FND-4", "NAV-11", "FRM-12", "NAV-2", "NAV-15", "DAT-1", "LAY-1", "IA-5", "FND-9", "LAY-9", "LAY-14", "LAY-15", "FRM-11", "FND-18"];
19
+ export declare const DESIGN_RULES: readonly ["LAY-10", "LAY-8", "FND-6", "CPY-1", "DAT-16", "LAY-13", "FND-4", "NAV-11", "FRM-12", "NAV-2", "NAV-15", "DAT-1", "LAY-1", "IA-5", "FND-9", "LAY-9", "LAY-14", "LAY-15", "FRM-11", "FND-18"];
20
20
  export type DesignRuleId = (typeof DESIGN_RULES)[number];
21
21
  /** What each rule says, in one line — printed beside every finding so a red reads on its own. */
22
22
  export declare const DESIGN_RULE_TITLES: Record<DesignRuleId, string>;
@@ -1 +1 @@
1
- {"version":3,"file":"designAudit.d.ts","sourceRoot":"","sources":["../../src/testing/designAudit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,gFAAgF;AAChF,eAAO,MAAM,YAAY,+LAsBf,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,iGAAiG;AACjG,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAoB3D,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,YAAY,CAAC;IACnB,kFAAkF;IAClF,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0FAA0F;IAC1F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,yFAAyF;IACzF,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/C,wFAAwF;IACxF,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,8DAA8D;AAC9D,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACpE;AAED,qGAAqG;AACrG,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,oGAAoG;QACpG,eAAe,EAAE,MAAM,CAAC;QACxB,MAAM,EAAE,OAAO,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,UAAU,SAAS;IACjB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,iBAAiB,CA8Y1F;AAED,8FAA8F;AAC9F,wBAAsB,WAAW,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAOpH;AAED,0DAA0D;AAC1D,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,eAAe,EAAE,EAAE,KAAK,SAAK,GAAG,MAAM,CAIxF;AAED,iEAAiE;AACjE,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAU1H"}
1
+ {"version":3,"file":"designAudit.d.ts","sourceRoot":"","sources":["../../src/testing/designAudit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,gFAAgF;AAChF,eAAO,MAAM,YAAY,wMAuBf,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,iGAAiG;AACjG,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAqB3D,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,YAAY,CAAC;IACnB,kFAAkF;IAClF,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0FAA0F;IAC1F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,yFAAyF;IACzF,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/C,wFAAwF;IACxF,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,8DAA8D;AAC9D,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACpE;AAED,qGAAqG;AACrG,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,oGAAoG;QACpG,eAAe,EAAE,MAAM,CAAC;QACxB,MAAM,EAAE,OAAO,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,UAAU,SAAS;IACjB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,iBAAiB,CA2a1F;AAED,8FAA8F;AAC9F,wBAAsB,WAAW,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAOpH;AAED,0DAA0D;AAC1D,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,eAAe,EAAE,EAAE,KAAK,SAAK,GAAG,MAAM,CAIxF;AAED,iEAAiE;AACjE,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAU1H"}
@@ -18,6 +18,7 @@
18
18
  /** Every rule this audit decides. The IDs are the design guide's, unchanged. */
19
19
  export const DESIGN_RULES = [
20
20
  'LAY-10',
21
+ 'LAY-8',
21
22
  'FND-6',
22
23
  'CPY-1',
23
24
  'DAT-16',
@@ -42,6 +43,7 @@ export const DESIGN_RULES = [
42
43
  /** What each rule says, in one line — printed beside every finding so a red reads on its own. */
43
44
  export const DESIGN_RULE_TITLES = {
44
45
  'LAY-10': 'the page scrolls sideways',
46
+ 'LAY-8': 'a ScrollArea taller than the screen that nothing scrolls — what is below the first screen is unreachable',
45
47
  'FND-6': 'visible text under 12px',
46
48
  'CPY-1': 'a run of text over 200 characters outside a prose/help surface',
47
49
  'DAT-16': 'a non-value (`[object Object]`, `undefined`, `NaN`, `null`, `Invalid Date`) on screen',
@@ -143,6 +145,31 @@ export function designProbe({ rules, allowProse, specimens }) {
143
145
  if (scroller.scrollWidth > window.innerWidth + 1) {
144
146
  push('LAY-10', null, `scrollWidth ${scroller.scrollWidth}px > viewport ${window.innerWidth}px`);
145
147
  }
148
+ // ── LAY-8 · a ScrollArea is bounded, or nothing below the first screen is reachable ──
149
+ // roms, 2026-10-21 (forge task 3493): `/stats` and `/settings` put their `Page` in a slot that was
150
+ // a plain block, not a flex column, so the Page grew to its content (2048px in a 900px window),
151
+ // its ScrollArea had nothing to scroll, and under the shell's `overflow: hidden` every pixel below
152
+ // the first screen was unreachable — in production, past every gate. A bounded area is never
153
+ // taller than the screen; one that is, whose bottom no scrolling ancestor and no document scroll
154
+ // can bring into view, is that bug.
155
+ if (on.has('LAY-8')) {
156
+ const scrollsY = (el) => /auto|scroll/.test(getComputedStyle(el).overflowY);
157
+ const clipped = (el) => /hidden|clip/.test(getComputedStyle(el).overflowY);
158
+ const documentScrolls = scroller.scrollHeight > window.innerHeight + 1 && !clipped(document.documentElement) && !clipped(document.body);
159
+ for (const area of document.querySelectorAll('[data-cb-scrollarea]')) {
160
+ if (!shown(area) || !scrollsY(area))
161
+ continue;
162
+ if (area.clientHeight <= window.innerHeight + 1 || area.getBoundingClientRect().bottom <= window.innerHeight + 1)
163
+ continue;
164
+ let reachable = documentScrolls;
165
+ for (let cur = area.parentElement; !reachable && cur && cur !== document.body; cur = cur.parentElement) {
166
+ reachable = scrollsY(cur) && cur.scrollHeight > cur.clientHeight + 1;
167
+ }
168
+ if (!reachable) {
169
+ push('LAY-8', area, `${area.clientHeight}px tall in a ${window.innerHeight}px window, and nothing scrolls it — its Page is not in a flex column (or a slot of definite height)`);
170
+ }
171
+ }
172
+ }
146
173
  // ── Text: FND-6 size floor · CPY-1 run length · DAT-16 non-values ───────────
147
174
  const fnd6 = new Set();
148
175
  const cpy1 = new Set();
@@ -1 +1 @@
1
- {"version":3,"file":"designAudit.js","sourceRoot":"","sources":["../../src/testing/designAudit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"designAudit.js","sourceRoot":"","sources":["../../src/testing/designAudit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,gFAAgF;AAChF,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,QAAQ;IACR,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;IACP,sFAAsF;IACtF,yFAAyF;IACzF,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;CACA,CAAC;AAIX,iGAAiG;AACjG,MAAM,CAAC,MAAM,kBAAkB,GAAiC;IAC9D,QAAQ,EAAE,2BAA2B;IACrC,OAAO,EAAE,0GAA0G;IACnH,OAAO,EAAE,yBAAyB;IAClC,OAAO,EAAE,gEAAgE;IACzE,QAAQ,EAAE,uFAAuF;IACjG,QAAQ,EAAE,6CAA6C;IACvD,OAAO,EAAE,4CAA4C;IACrD,QAAQ,EAAE,uCAAuC;IACjD,QAAQ,EAAE,wCAAwC;IAClD,OAAO,EAAE,yDAAyD;IAClE,QAAQ,EAAE,iGAAiG;IAC3G,OAAO,EAAE,gDAAgD;IACzD,OAAO,EAAE,sDAAsD;IAC/D,MAAM,EAAE,kCAAkC;IAC1C,OAAO,EAAE,kEAAkE;IAC3E,OAAO,EAAE,8EAA8E;IACvF,QAAQ,EAAE,kEAAkE;IAC5E,QAAQ,EAAE,iFAAiF;IAC3F,QAAQ,EAAE,mDAAmD;IAC7D,QAAQ,EAAE,yDAAyD;CACpE,CAAC;AAuDF;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAa;IACrE,MAAM,EAAE,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,GAAG,GAAsB,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG;QACb,SAAS,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,CAAC;QACd,UAAU,EAAE,CAAC;QACb,eAAe,EAAE,CAAC;QAClB,MAAM,EAAE,KAAK;QACb,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/F,MAAM,IAAI,GAAG,qBAAqB,CAAC;IAEnC,MAAM,QAAQ,GAAG,CAAC,EAAW,EAAU,EAAE;QACvC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,GAAG,GAAmB,EAAE,CAAC;QAC7B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YAC9C,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACrC,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;gBACX,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;gBACnC,MAAM;YACR,CAAC;YACD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;YACrH,IAAI,MAAM;gBAAE,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC;iBAClC,CAAC;gBACJ,MAAM,GAAG,GAAG,CAAC,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC9G,IAAI,GAAG,CAAC,MAAM;oBAAE,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9C,CAAC;YACD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpB,GAAG,GAAG,GAAG,CAAC,aAAa,CAAC;QAC1B,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE;QAClC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,EAAW,EAAW,EAAE;QACrC,IAAI,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC;YAAE,OAAO,KAAK,CAAC;QACxE,MAAM,GAAG,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC;QACvC,+EAA+E;QAC/E,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QACpD,+FAA+F;QAC/F,IAAI,OAAO,EAAE,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;YAC7C,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9G,CAAC;QACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClG,CAAC,CAAC;IACF;;;;;;;;;;;OAWG;IACH,MAAM,KAAK,GAAG,sDAAsD,CAAC;IACrE,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7E,MAAM,WAAW,GAAG,CAAC,EAAW,EAAW,EAAE,CAC3C,WAAW,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,qBAAqB,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5F,MAAM,IAAI,GAAG,CAAC,IAAkB,EAAE,EAAkB,EAAE,MAAc,EAAE,EAAE;QACtE,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3F,CAAC,CAAC;IAEF,+EAA+E;IAC/E,MAAM,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,IAAI,QAAQ,CAAC,eAAe,CAAC;IACvE,IAAI,QAAQ,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;QACjD,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,eAAe,QAAQ,CAAC,WAAW,iBAAiB,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;IAClG,CAAC;IAED,wFAAwF;IACxF,mGAAmG;IACnG,gGAAgG;IAChG,mGAAmG;IACnG,6FAA6F;IAC7F,iGAAiG;IACjG,oCAAoC;IACpC,IAAI,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,CAAC,EAAW,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;QACrF,MAAM,OAAO,GAAG,CAAC,EAAW,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;QACpF,MAAM,eAAe,GACnB,QAAQ,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAClH,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,EAAE,CAAC;YACrE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,SAAS;YAC9C,IAAI,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC,MAAM,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC;gBAAE,SAAS;YAC3H,IAAI,SAAS,GAAG,eAAe,CAAC;YAChC,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,SAAS,IAAI,GAAG,IAAI,GAAG,KAAK,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC;gBACvG,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC;YACvE,CAAC;YACD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,IAAI,CACF,OAAO,EACP,IAAI,EACJ,GAAG,IAAI,CAAC,YAAY,gBAAgB,MAAM,CAAC,WAAW,qGAAqG,CAC5J,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,MAAM,IAAI,GAAG,IAAI,GAAG,EAAW,CAAC;IAChC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAW,CAAC;IAChC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAW,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC3C,MAAM,MAAM,GAAG,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IAC9E,MAAM,IAAI,GAAG,iGAAiG,CAAC;IAC/G,MAAM,IAAI,GAAG,uCAAuC,CAAC;IACrD,KAAK,IAAI,IAAI,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;QAClE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,SAAS;QAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;QAC9B,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,mCAAmC,CAAC;YAAE,SAAS;QACrE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAAE,SAAS;QACzB,MAAM,CAAC,SAAS,EAAE,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAClB,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC9D,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC;gBACd,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACb,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,IAAI,QAAQ,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;QAC1D,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IACvG,CAAC;IACD,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACnC,uEAAuE;QACvE,IAAI,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,oCAAoC,CAAC;YAAE,SAAS;QACrH,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,MAAM,iBAAiB,KAAK,CAAC,EAAE,CAAC,WAAW,IAAI,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IAClF,CAAC;IAED,8EAA8E;IAC9E,0FAA0F;IAC1F,6FAA6F;IAC7F,gGAAgG;IAChG,IAAI,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAEpB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;QAC9C,IAAI,KAAkD,CAAC;QACvD,0FAA0F;QAC1F,yFAAyF;QACzF,MAAM,IAAI,GAAG,CAAC,GAAW,EAAe,EAAE;YACxC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,GAAG,KAAK,SAAS;gBAAE,OAAO,GAAG,CAAC;YAClC,IAAI,GAAG,GAAgB,IAAI,CAAC;YAC5B,MAAM,KAAK,GAAG,CAAC,CAAqB,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1H,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,gFAAgF,CAAC,CAAC;YACxG,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,kFAAkF,CAAC,CAAC;YAC3G,IAAI,GAAG;gBAAE,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC1E,IAAI,IAAI;gBAAE,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBACtG,CAAC;gBACJ,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;oBAChD,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;oBACjB,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;oBAClB,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;gBAChE,CAAC;gBACD,IAAI,KAAK,EAAE,CAAC;oBACV,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC5B,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;oBACtB,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC3B,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;oBACzD,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;YACD,IAAI,GAAG;gBAAE,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACpI,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACrB,OAAO,GAAG,CAAC;QACb,CAAC,CAAC;QACF,MAAM,IAAI,GAAG,CAAC,GAAS,EAAE,KAAW,EAAQ,EAAE;YAC5C,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAChH,CAAC,CAAC;QACF,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAO,EAAE,EAAE;YACpC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE;gBACxB,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;gBAClB,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC;YACjE,CAAC,CAAC;YACF,OAAO,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAC;QACF,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC;QAC1E,MAAM,UAAU,GACd,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC,OAAO,CAAC,CAAC;QAC9H,MAAM,MAAM,GAAS,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QACvE,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;YACzB,IAAI,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC;gBAAE,SAAS;YACnE,MAAM,KAAK,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC;YACnC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;gBAAE,SAAS;YACjC,qFAAqF;YACrF,0FAA0F;YAC1F,MAAM,MAAM,GAAW,EAAE,CAAC;YAC1B,IAAI,IAAI,GAAG,CAAC,CAAC;YACb,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,KAAK,IAAI,GAAG,GAAmB,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC;gBAChE,MAAM,EAAE,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;gBACtD,IAAI,EAAE,CAAC,eAAe,KAAK,MAAM,EAAE,CAAC;oBAClC,WAAW,GAAG,IAAI,CAAC;oBACnB,MAAM;gBACR,CAAC;gBACD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;gBACpC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;oBACpB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAChB,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK;wBAAE,MAAM;gBAC5B,CAAC;gBACD,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;YACD,IAAI,WAAW;gBAAE,SAAS;YAC1B,IAAI,MAAM,GAAG,MAAM,CAAC;YACpB,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;gBAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAC9E,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;YAC9D,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3E,MAAM,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;YACxC,MAAM,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC;YAC/E,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC7B,IAAI,KAAK,GAAG,KAAK,GAAG,IAAI,EAAE,CAAC;gBACzB,MAAM,GAAG,GAAG,CAAC,CAAO,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC9G,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,IAAI,QAAQ,GAAG,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,WAAW,IAAI,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;YACpI,CAAC;QACH,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC;IAC/D,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtC,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,gBAAgB,CAAc,sEAAsE,CAAC,EAAE,CAAC;YAChI,0FAA0F;YAC1F,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAc,sBAAsB,CAAC,IAAI,EAAE,CAAC;YACrE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gBAAE,SAAS;YAC7B,6FAA6F;YAC7F,qEAAqE;YACrE,IAAI,EAAE,CAAC,OAAO,KAAK,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,SAAS;YACtD,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,GAAG,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;YAC3C,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,GAAG,EAAE,IAAI,GAAG,CAAC,KAAK,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC;gBAClD,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,WAAW,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC9E,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,WAAW,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACpG,CAAC;QACH,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,IAAI,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACpB,MAAM,OAAO,GACX,kJAAkJ,CAAC;QACrJ,MAAM,IAAI,GAAG,IAAI,GAAG,EAAW,CAAC;QAChC,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;YACzD,MAAM,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC;YAClC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YACpC,IAAI,SAAS,IAAI,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC;gBAAE,SAAS;YAC7D,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC5F,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,SAAS;YAC1D,uFAAuF;YACvF,kDAAkD;YAClD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAC3C,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;gBAClB,KAAK,CAAC,CAAC,CAAC;gBACR,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,QAAQ;gBACnC,CAAC,CAAC,YAAY,CAAC,iBAAiB,CAAC,KAAK,MAAM;gBAC5C,gBAAgB,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAC9C,CAAC;YACF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,SAAS;YAC/B,oFAAoF;YACpF,mFAAmF;YACnF,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC;YACxG,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/H,IAAI,MAAM,IAAI,SAAS;gBAAE,SAAS;YAClC,MAAM,CAAC,WAAW,EAAE,CAAC;YACrB,oDAAoD;YACpD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAqB,CAAC;YAC3C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;gBACtB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;gBAC1D,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACjD,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBAClC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;oBAAE,SAAS;gBAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC,CAAC;gBAClE,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBAChC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBAChC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;oBAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,WAAW,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAC7G,CAAC;QACH,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtE,wFAAwF;IACxF,+FAA+F;IAC/F,MAAM,UAAU,GACd,MAAM,CAAC,UAAU,GAAG,GAAG;QACvB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,CAAC;IACjH,kGAAkG;IAClG,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;IACtG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC7E,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC;IAC7I,CAAC;IAED,+EAA+E;IAC/E,8FAA8F;IAC9F,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC;IAC3D,MAAM,MAAM,GAAG,CAAC,EAAW,EAAkB,EAAE;QAC7C,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAC;QACjF,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACzC,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,QAAgB,EAAE,IAAkB,EAAE,GAAW,EAAE,IAAY,EAAE,EAAE;QAChF,MAAM,GAAG,GAAG,IAAI,GAAG,EAAsB,CAAC;QAC1C,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAAE,SAAS;YACzB,IAAI,SAAS,IAAI,EAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC;gBAAE,SAAS;YAC5D,+EAA+E;YAC/E,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;YACnD,IAAI,KAAK,IAAI,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE;gBAAE,SAAS;YAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,IAAI;gBAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;YAC9B,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBACrB,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,IAAI,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC/G,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,KAAK,CAAC,6BAA6B,EAAE,QAAQ,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAC;IACrE,KAAK,CAAC,iBAAiB,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IAE9C,+EAA+E;IAC/E,IAAI,MAAM,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;QAC7B,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,gBAAgB,CAAC,2CAA2C,CAAC,EAAE,CAAC;YACzF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC1B,yFAAyF;YACzF,6CAA6C;YAC7C,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,gBAAgB,CAAC,6CAA6C,CAAC,EAAE,CAAC;gBACvF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;oBAAE,SAAS;gBAC3B,IAAI,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC;oBAAE,SAAS;gBACpD,qFAAqF;gBACrF,8BAA8B;gBAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC;oBAAE,SAAS;gBACtD,IAAI,CAAE,IAAoB,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;oBAC5C,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,WAAW,6BAA6B,CAAC,CAAC;gBACvG,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,kGAAkG;IAClG,iGAAiG;IACjG,2FAA2F;IAC3F,IAAI,MAAM,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG;YACf,GAAG,QAAQ,CAAC,gBAAgB,CAAC,iEAAiE,CAAC;YAC/F,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC;SACpG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAiB,EAAE,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAClH,gGAAgG;QAChG,8FAA8F;QAC9F,4EAA4E;QAC5E,MAAM,KAAK,GAAG,CAAC,GAAY,EAAE,IAAa,EAAE,EAAE,CAC5C,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC;QAC9G,MAAM,MAAM,GAAG,CAAC,GAAY,EAAE,IAAa,EAAE,EAAE,CAC7C,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;QACvI,gGAAgG;QAChG,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,gBAAgB,CAAC,uCAAuC,CAAC,EAAE,CAAC;YACrF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC1B,MAAM,CAAC,GAAG,GAAG,CAAC,qBAAqB,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;gBAChC,MAAM,CAAC,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC;gBACrC,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;YACH,IAAI,IAAI;gBAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,oBAAoB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,MAAM,OAAO,GACX,0IAA0I,CAAC;IAC7I,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,gBAAgB,CAAc,6CAA6C,CAAC,EAAE,CAAC;QACzG,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,SAAS;QACpC,MAAM,CAAC,UAAU,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS;QAClC,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;QAC/C,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,KAAK;YAAE,SAAS;QACnD,2DAA2D;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACrC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,SAAS;QACxC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC;IAClE,CAAC;IAED,+EAA+E;IAC/E,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAc,sBAAsB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QACzI,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACzC,wFAAwF;YACxF,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,GAAG,OAAO,EAAE,CAAC;gBACzD,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;YAC1G,CAAC;QACH,CAAC;QACD,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,sFAAsF;YACtF,IAAI,EAAE,CAAC,YAAY,CAAC,oBAAoB,CAAC,KAAK,MAAM;gBAAE,SAAS;YAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7E,MAAM,KAAK,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;YAC/C,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,KAAK,GAAG,OAAO,EAAE,CAAC;gBACtD,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,KAAK,IAAI,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AACrC,CAAC;AAED,8FAA8F;AAC9F,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAoB,EAAE,UAA8B,EAAE;IACtF,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;QAClE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,iBAAiB,CAAC,CAAC;IACvF,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,KAAK,EAAE,CAAC,CAAC;AAC5H,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,sBAAsB,CAAC,UAA6B,EAAE,KAAK,GAAG,EAAE;IAC9E,OAAO,UAAU;SACd,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,MAAM,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC;SACjI,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,iEAAiE;AACjE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAoB,EAAE,UAA8B,EAAE;IAC5F,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAChD,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrG,MAAM,IAAI,KAAK,CACb,iBAAiB,MAAM,CAAC,UAAU,CAAC,MAAM,gBAAgB,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,mCAAmC;YACrH,sBAAsB,CAAC,MAAM,CAAC,UAAU,CAAC,CAC5C,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cursedbelt",
3
- "version": "5.85.0",
3
+ "version": "5.86.0",
4
4
  "license": "ISC",
5
5
  "type": "module",
6
6
  "description": "The React design system of the cursedbelt split — components, styles, theme. cursedbelt-core below it; server tier in cursedbelt-server.",
@@ -77,10 +77,14 @@ export interface ListToolbarProps {
77
77
  * keeps the controls right when everything fits on one line and lets them ride down as
78
78
  * a group when it does not.
79
79
  *
80
- * Except with chips, from `sm:`: a strip sized to its content took the whole row and wrapped the
81
- * controls under it (18 genres in flix, at 1440 AND 2560 — forge task 2560), breaking the one
82
- * line this component exists for. There the row stops wrapping and the strip becomes a scroll
83
- * lane (`flex-1`, `min-w-0` from its own root) between a fixed search box and fixed controls.
80
+ * With chips, from `sm:`, the strip is a scroll lane (`flex-1`, so its basis is 0, with a 10rem floor)
81
+ * between a fixed search box and the controls. Sized to its content it took the whole row and wrapped
82
+ * the controls under it (18 genres in flix, at 1440 AND 2560 — forge task 2560). With a zero basis, its
83
+ * chips never decide where the row breaks; only the floor does. So twenty chips keep one line and
84
+ * scroll. But when the search box, the floor and the controls cannot share the container (station's
85
+ * Queue: three chips in a list pane), the controls wrap under as a group. A row that never wrapped
86
+ * put the view toggle's second half past the pane's edge, with nothing to scroll to it (forge task
87
+ * 3473): FRM-14's one line yields to LAY-10's nothing is cut.
84
88
  *
85
89
  * No `role='toolbar'`: that role promises arrow-key roving focus between its controls,
86
90
  * which would take the arrow keys away from the text box and the native `<select>`
@@ -124,11 +128,9 @@ export function ListToolbar({
124
128
  <div
125
129
  {...rest}
126
130
  className={cn(
131
+ // Wraps only when the search box, the chip lane's FLOOR and the controls do not fit: the lane's
132
+ // basis is 0, so however many chips it holds they scroll rather than break the line.
127
133
  'flex flex-wrap items-center gap-x-3 gap-y-2',
128
- // From `sm:` a row WITH chips never wraps: the chips are the one item that can give way
129
- // (a scroll lane), so they take what the search box and the controls leave. Without
130
- // chips nothing on the line can scroll, so it keeps wrapping rather than overflow.
131
- showChips && 'sm:flex-nowrap',
132
134
  className,
133
135
  )}
134
136
  >
@@ -156,13 +158,14 @@ export function ListToolbar({
156
158
  multi={multiChips}
157
159
  {...(chipsAllLabel === undefined ? {} : { allLabel: chipsAllLabel })}
158
160
  // The scroll lane. Sized to its CONTENT, twenty chips took the whole row and pushed
159
- // sort/view onto a second line at 1440 and 2560 (forge task 2560, flix's genres).
160
- className='sm:flex-1'
161
+ // sort/view onto a second line at 1440 and 2560 (forge task 2560, flix's genres). The
162
+ // floor keeps a few chips readable when the controls ride down beside a narrow pane.
163
+ className='sm:min-w-40 sm:flex-1'
161
164
  />
162
165
  ) : null}
163
166
  {filters}
164
167
  {showRight ? (
165
- <span className={cn('ml-auto flex flex-wrap items-center gap-2', showChips && 'sm:shrink-0 sm:flex-nowrap')}>
168
+ <span className='ml-auto flex flex-wrap items-center gap-2'>
166
169
  {sort}
167
170
  {view}
168
171
  {actions}
@@ -8,6 +8,9 @@ import { PageGuideButton } from './PageGuideButton.js';
8
8
  * The routed content area. Purely structural: a min-height-0 flex column that fills
9
9
  * its slot in the AppShell. It sets NO scroll/overflow and NO background — the single
10
10
  * keyboard-safe `ScrollArea` (task 03) owns scrolling and the shell owns the page bg.
11
+ * 🔴 Its slot must be a flex column: in a plain block it grows to its content, its ScrollArea
12
+ * has nothing to scroll, and the page below the first screen is unreachable (roms, 2026-10-21) —
13
+ * the design audit's LAY-8 fails it.
11
14
  */
12
15
  export function Page({ className, ...p }: HTMLAttributes<HTMLDivElement>) {
13
16
  return <div className={cn('flex min-h-0 min-w-0 flex-1 flex-col', className)} {...p} />;
@@ -13,6 +13,12 @@
13
13
  * simply there. The animation still runs for 0s, so Radix's `Presence` sees its `animationend`
14
14
  * and unmounts on close exactly as it does with motion on.
15
15
  *
16
+ * 🔴 A closing overlay lets the pointer through (`CLOSED_PASSTHROUGH`, in every constant below). Its
17
+ * exit runs for the whole duration at near-zero opacity, still mounted, and until then it took every
18
+ * click and drag over it: measured in desk (forge task 3488), a drag begun 0.2s after picking a menu
19
+ * item landed on the fading menu's next item instead of the canvas beneath. `e2e/motion.spec.ts`
20
+ * reads `pointer-events` at the instant `data-state` turns `closed`.
21
+ *
16
22
  * Each overlay's own direction stays its own: an anchored panel comes from its anchor's side, a
17
23
  * drawer slides its whole width in from its edge. What they share is the curve and the speed.
18
24
  *
@@ -20,6 +26,11 @@
20
26
  * opens each primitive and reads its running animation from `getAnimations()`.
21
27
  */
22
28
 
29
+ /** What every overlay does once it is closing: nothing under the pointer. Important, because
30
+ * Radix writes `pointer-events: auto` INLINE on a dialog's overlay (the body is `none` under a
31
+ * modal) and an inline style beats any class — the scrim kept the pointer with the plain one. */
32
+ const CLOSED_PASSTHROUGH = 'data-[state=closed]:pointer-events-none!';
33
+
23
34
  /** A tooltip: the fast speed, a fade and a 4px rise from its trigger's side. Only a DELAYED
24
35
  * open animates — moving between triggers inside the skip-delay window (`instant-open`) swaps
25
36
  * the bubble in place, the way Linear's do, instead of re-fading it on every neighbour. */
@@ -27,6 +38,7 @@ export const TOOLTIP_MOTION =
27
38
  'duration-[var(--duration-fast)] ease-[var(--ease-out)] motion-reduce:duration-0 ' +
28
39
  'data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-[0.985] ' +
29
40
  'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 ' +
41
+ CLOSED_PASSTHROUGH + ' ' +
30
42
  'data-[side=bottom]:slide-in-from-top-1 data-[side=top]:slide-in-from-bottom-1 ' +
31
43
  'data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1';
32
44
 
@@ -36,6 +48,7 @@ export const ANCHORED_MOTION =
36
48
  'data-[state=open]:animate-in data-[state=closed]:animate-out ' +
37
49
  'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 ' +
38
50
  'data-[state=closed]:zoom-out-[0.985] data-[state=open]:zoom-in-[0.985] ' +
51
+ CLOSED_PASSTHROUGH + ' ' +
39
52
  'data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2 ' +
40
53
  'data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2';
41
54
 
@@ -44,15 +57,17 @@ export const ANCHORED_MOTION =
44
57
  export const DIALOG_MOTION =
45
58
  'duration-[var(--duration-slow)] ease-[var(--ease-out)] motion-reduce:duration-0 ' +
46
59
  'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-[0.985] data-[state=open]:slide-in-from-bottom-2 ' +
47
- 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-[0.985]';
60
+ 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-[0.985] ' +
61
+ CLOSED_PASSTHROUGH;
48
62
 
49
63
  /** The scrim behind a dialog or drawer: a fade at the speed of the panel it sits under. */
50
64
  export const SCRIM_MOTION =
51
65
  'duration-[var(--duration-slow)] ease-[var(--ease-out)] motion-reduce:duration-0 ' +
52
66
  'data-[state=open]:animate-in data-[state=open]:fade-in-0 ' +
53
- 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0';
67
+ 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 ' +
68
+ CLOSED_PASSTHROUGH;
54
69
 
55
70
  /** A drawer's SPEED and curve. Its slide (`slide-in-from-left` …) is its edge's, so it stays at
56
71
  * the call site; this is what makes it ease like every other overlay instead of tw-animate's
57
- * 150ms `ease`. */
58
- export const DRAWER_MOTION = 'duration-[var(--duration-slow)] ease-[var(--ease-out)] motion-reduce:duration-0';
72
+ * 150ms `ease`, and lets the pointer through while it closes. */
73
+ export const DRAWER_MOTION = 'duration-[var(--duration-slow)] ease-[var(--ease-out)] motion-reduce:duration-0 ' + CLOSED_PASSTHROUGH;
@@ -15,7 +15,7 @@
15
15
  * after an app's responsive variant (task 2124). An app that imports every area gets exactly
16
16
  * what `cursedbelt/styles-utilities.css` emits — proved rule by rule in
17
17
  * src/stylesAreas.spec.ts, which is also what fails when this file is stale.
18
- * 927 candidate(s).
18
+ * 928 candidate(s).
19
19
  *
20
20
  * Written by scripts/generateAreaStyles.ts (`bun run styles:areas`), which
21
21
  * `bun run build` runs. The map of what is in which area, and why the areas are
@@ -88,13 +88,13 @@
88
88
  @source inline("data-[state=checked]:ring-accent data-[state=checked]:text-white");
89
89
  @source inline("data-[state=checked]:translate-x-4 data-[state=closed]:animate-collapsible-up");
90
90
  @source inline("data-[state=closed]:animate-out data-[state=closed]:fade-out-0");
91
- @source inline("data-[state=closed]:slide-out-to-bottom data-[state=closed]:slide-out-to-left");
92
- @source inline("data-[state=closed]:slide-out-to-right data-[state=closed]:zoom-out-[0.985]");
93
- @source inline("data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0");
94
- @source inline("data-[state=delayed-open]:zoom-in-[0.985] data-[state=indeterminate]:bg-accent-solid");
95
- @source inline("data-[state=indeterminate]:border-accent-solid data-[state=indeterminate]:text-white");
96
- @source inline("data-[state=open]:animate-collapsible-down data-[state=open]:animate-in");
97
- @source inline("data-[state=open]:fade-in-0 data-[state=open]:slide-in-from-bottom");
91
+ @source inline("data-[state=closed]:pointer-events-none! data-[state=closed]:slide-out-to-bottom");
92
+ @source inline("data-[state=closed]:slide-out-to-left data-[state=closed]:slide-out-to-right");
93
+ @source inline("data-[state=closed]:zoom-out-[0.985] data-[state=delayed-open]:animate-in");
94
+ @source inline("data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-[0.985]");
95
+ @source inline("data-[state=indeterminate]:bg-accent-solid data-[state=indeterminate]:border-accent-solid");
96
+ @source inline("data-[state=indeterminate]:text-white data-[state=open]:animate-collapsible-down");
97
+ @source inline("data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:slide-in-from-bottom");
98
98
  @source inline("data-[state=open]:slide-in-from-bottom-2 data-[state=open]:slide-in-from-left");
99
99
  @source inline("data-[state=open]:slide-in-from-right data-[state=open]:zoom-in-[0.985]");
100
100
  @source inline("data-[state=unchecked]:bg-muted data-[state=unchecked]:translate-x-0 disable disabled");
@@ -37,8 +37,8 @@
37
37
  @source inline("peer-focus:rounded-lg pl-1 pl-3 pointer-coarse:disabled:opacity-50 pointer-coarse:h-12");
38
38
  @source inline("pointer-coarse:w-12 pr-16 pr-9 pt-1.5 resize-none right-4 ring-1 ring-4 ring-accent/20");
39
39
  @source inline("ring-accent/30 ring-accent/40 ring-border ring-inset ring-ring rounded-2xl");
40
- @source inline("rounded-[var(--radius-device)] scale-[1.01] self-stretch shrink-[2] size-7 sm:flex-1");
41
- @source inline("sm:flex-nowrap sm:shrink-0 sm:w-56 text-muted-foreground/60 text-tone-amber-ink");
42
- @source inline("text-tone-cyan-ink text-tone-emerald-ink text-tone-orange-ink text-tone-purple-ink");
43
- @source inline("text-tone-rose-ink text-tone-sky-ink text-tone-slate-ink text-xl transition-[opacity,transform]");
44
- @source inline("translate-y-0 translate-y-2 w-0 w-88");
40
+ @source inline("rounded-[var(--radius-device)] scale-[1.01] self-stretch shrink-[2] size-7 sm:flex-1 sm:min-w-40");
41
+ @source inline("sm:shrink-0 sm:w-56 text-muted-foreground/60 text-tone-amber-ink text-tone-cyan-ink");
42
+ @source inline("text-tone-emerald-ink text-tone-orange-ink text-tone-purple-ink text-tone-rose-ink");
43
+ @source inline("text-tone-sky-ink text-tone-slate-ink text-xl transition-[opacity,transform] translate-y-0");
44
+ @source inline("translate-y-2 w-0 w-88");
@@ -194,6 +194,13 @@
194
194
  [data-radix-popper-content-wrapper]:has(> [data-cb-tooltip]) {
195
195
  pointer-events: none;
196
196
  }
197
+ /* The same wrapper, under ANY anchored overlay (popover, menu, select, hover card) while it
198
+ closes. Its content lets the pointer through for the exit (`overlayMotion.ts`, forge task 3488),
199
+ but the wrapper is the content's size and still took the click or drag: desk's drawing spec
200
+ began a drag on the canvas 0.2 s after picking a New-menu item, and it landed here. */
201
+ [data-radix-popper-content-wrapper]:has(> [data-state='closed']) {
202
+ pointer-events: none;
203
+ }
197
204
  /* !important: when a modal dialog disables body pointer events, Radix's
198
205
  DismissableLayer re-enables the tooltip layer with an INLINE `pointer-events:
199
206
  auto` — exactly the case (tooltip inside an open modal) this rule exists for. */
@@ -4444,6 +4444,9 @@
4444
4444
  --tw-ring-offset-width: 1px;
4445
4445
  --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
4446
4446
  }
4447
+ .data-\[state\=closed\]\:pointer-events-none\![data-state="closed"] {
4448
+ pointer-events: none !important;
4449
+ }
4447
4450
  .data-\[state\=closed\]\:animate-collapsible-up[data-state="closed"] {
4448
4451
  animation: collapsible-up var(--tw-animation-duration,var(--tw-duration,.2s))var(--tw-ease,ease-out)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);
4449
4452
  }
@@ -4731,6 +4734,9 @@
4731
4734
  .sm\:max-w-\[var\(--modal-w-sm\)\] {
4732
4735
  max-width: var(--modal-w-sm);
4733
4736
  }
4737
+ .sm\:min-w-40 {
4738
+ min-width: calc(var(--spacing) * 40);
4739
+ }
4734
4740
  .sm\:flex-1 {
4735
4741
  flex: 1;
4736
4742
  }
package/src/styles.css CHANGED
@@ -196,6 +196,13 @@
196
196
  [data-radix-popper-content-wrapper]:has(> [data-cb-tooltip]) {
197
197
  pointer-events: none;
198
198
  }
199
+ /* The same wrapper, under ANY anchored overlay (popover, menu, select, hover card) while it
200
+ closes. Its content lets the pointer through for the exit (`overlayMotion.ts`, forge task 3488),
201
+ but the wrapper is the content's size and still took the click or drag: desk's drawing spec
202
+ began a drag on the canvas 0.2 s after picking a New-menu item, and it landed here. */
203
+ [data-radix-popper-content-wrapper]:has(> [data-state='closed']) {
204
+ pointer-events: none;
205
+ }
199
206
  /* !important: when a modal dialog disables body pointer events, Radix's
200
207
  DismissableLayer re-enables the tooltip layer with an INLINE `pointer-events:
201
208
  auto` — exactly the case (tooltip inside an open modal) this rule exists for. */
@@ -19,6 +19,7 @@
19
19
  /** Every rule this audit decides. The IDs are the design guide's, unchanged. */
20
20
  export const DESIGN_RULES = [
21
21
  'LAY-10',
22
+ 'LAY-8',
22
23
  'FND-6',
23
24
  'CPY-1',
24
25
  'DAT-16',
@@ -46,6 +47,7 @@ export type DesignRuleId = (typeof DESIGN_RULES)[number];
46
47
  /** What each rule says, in one line — printed beside every finding so a red reads on its own. */
47
48
  export const DESIGN_RULE_TITLES: Record<DesignRuleId, string> = {
48
49
  'LAY-10': 'the page scrolls sideways',
50
+ 'LAY-8': 'a ScrollArea taller than the screen that nothing scrolls — what is below the first screen is unreachable',
49
51
  'FND-6': 'visible text under 12px',
50
52
  'CPY-1': 'a run of text over 200 characters outside a prose/help surface',
51
53
  'DAT-16': 'a non-value (`[object Object]`, `undefined`, `NaN`, `null`, `Invalid Date`) on screen',
@@ -200,6 +202,35 @@ export function designProbe({ rules, allowProse, specimens }: ProbeArgs): Design
200
202
  push('LAY-10', null, `scrollWidth ${scroller.scrollWidth}px > viewport ${window.innerWidth}px`);
201
203
  }
202
204
 
205
+ // ── LAY-8 · a ScrollArea is bounded, or nothing below the first screen is reachable ──
206
+ // roms, 2026-10-21 (forge task 3493): `/stats` and `/settings` put their `Page` in a slot that was
207
+ // a plain block, not a flex column, so the Page grew to its content (2048px in a 900px window),
208
+ // its ScrollArea had nothing to scroll, and under the shell's `overflow: hidden` every pixel below
209
+ // the first screen was unreachable — in production, past every gate. A bounded area is never
210
+ // taller than the screen; one that is, whose bottom no scrolling ancestor and no document scroll
211
+ // can bring into view, is that bug.
212
+ if (on.has('LAY-8')) {
213
+ const scrollsY = (el: Element) => /auto|scroll/.test(getComputedStyle(el).overflowY);
214
+ const clipped = (el: Element) => /hidden|clip/.test(getComputedStyle(el).overflowY);
215
+ const documentScrolls =
216
+ scroller.scrollHeight > window.innerHeight + 1 && !clipped(document.documentElement) && !clipped(document.body);
217
+ for (const area of document.querySelectorAll('[data-cb-scrollarea]')) {
218
+ if (!shown(area) || !scrollsY(area)) continue;
219
+ if (area.clientHeight <= window.innerHeight + 1 || area.getBoundingClientRect().bottom <= window.innerHeight + 1) continue;
220
+ let reachable = documentScrolls;
221
+ for (let cur = area.parentElement; !reachable && cur && cur !== document.body; cur = cur.parentElement) {
222
+ reachable = scrollsY(cur) && cur.scrollHeight > cur.clientHeight + 1;
223
+ }
224
+ if (!reachable) {
225
+ push(
226
+ 'LAY-8',
227
+ area,
228
+ `${area.clientHeight}px tall in a ${window.innerHeight}px window, and nothing scrolls it — its Page is not in a flex column (or a slot of definite height)`,
229
+ );
230
+ }
231
+ }
232
+ }
233
+
203
234
  // ── Text: FND-6 size floor · CPY-1 run length · DAT-16 non-values ───────────
204
235
  const fnd6 = new Set<Element>();
205
236
  const cpy1 = new Set<Element>();