cursedbelt 5.85.1 → 5.87.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.
Files changed (46) hide show
  1. package/dist/react/components/ListToolbar.d.ts +8 -4
  2. package/dist/react/components/ListToolbar.d.ts.map +1 -1
  3. package/dist/react/components/ListToolbar.js +15 -11
  4. package/dist/react/components/ListToolbar.js.map +1 -1
  5. package/dist/react/components/Page.d.ts +3 -0
  6. package/dist/react/components/Page.d.ts.map +1 -1
  7. package/dist/react/components/Page.js +3 -0
  8. package/dist/react/components/Page.js.map +1 -1
  9. package/dist/react/engagement/beacon.d.ts +8 -1
  10. package/dist/react/engagement/beacon.d.ts.map +1 -1
  11. package/dist/react/engagement/beacon.js +22 -7
  12. package/dist/react/engagement/beacon.js.map +1 -1
  13. package/dist/react/engagement/beaconClient.d.ts +27 -0
  14. package/dist/react/engagement/beaconClient.d.ts.map +1 -1
  15. package/dist/react/engagement/beaconClient.js +45 -0
  16. package/dist/react/engagement/beaconClient.js.map +1 -1
  17. package/dist/react/engagement/index.d.ts +2 -2
  18. package/dist/react/engagement/index.d.ts.map +1 -1
  19. package/dist/react/engagement/index.js +3 -3
  20. package/dist/react/engagement/index.js.map +1 -1
  21. package/dist/styles-areas/workbench.css +5 -5
  22. package/dist/styles-static.css +7 -0
  23. package/dist/styles-utilities.css +3 -0
  24. package/dist/styles.css +7 -0
  25. package/dist/testing/appleWalk.d.ts +7 -0
  26. package/dist/testing/appleWalk.d.ts.map +1 -1
  27. package/dist/testing/appleWalk.js +19 -1
  28. package/dist/testing/appleWalk.js.map +1 -1
  29. package/dist/testing/designAudit.d.ts +1 -1
  30. package/dist/testing/designAudit.d.ts.map +1 -1
  31. package/dist/testing/designAudit.js +27 -0
  32. package/dist/testing/designAudit.js.map +1 -1
  33. package/package.json +1 -1
  34. package/src/react/components/ListToolbar.tsx +14 -11
  35. package/src/react/components/Page.tsx +3 -0
  36. package/src/react/engagement/beacon.spec.tsx +62 -0
  37. package/src/react/engagement/beacon.tsx +32 -7
  38. package/src/react/engagement/beaconClient.spec.ts +44 -1
  39. package/src/react/engagement/beaconClient.ts +50 -0
  40. package/src/react/engagement/index.ts +4 -2
  41. package/src/styles-areas/workbench.css +5 -5
  42. package/src/styles-static.css +7 -0
  43. package/src/styles-utilities.css +3 -0
  44. package/src/styles.css +7 -0
  45. package/src/testing/appleWalk.ts +17 -1
  46. package/src/testing/designAudit.ts +31 -0
@@ -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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"}
@@ -1,4 +1,4 @@
1
- import { type ReportPlaceOptions } from "./beaconClient.js";
1
+ import { type ReportActionOptions, type ReportPlaceOptions } from "./beaconClient.js";
2
2
  /**
3
3
  * Report `place` whenever it changes.
4
4
  *
@@ -8,6 +8,13 @@ import { type ReportPlaceOptions } from "./beaconClient.js";
8
8
  * placeholder becomes a real row in the console.
9
9
  */
10
10
  export declare function useEngagementBeacon(place: string | null, options?: ReportPlaceOptions): void;
11
+ /**
12
+ * A press handler that reports `action` as used (forge task 3470) — `const onSearch =
13
+ * useEngagementAction("search")`, then call it where the feature RUNS. Stable across renders, so it
14
+ * can sit in a dependency list; fire-and-forget, like everything here. `reportAction` says what it
15
+ * may and may not carry.
16
+ */
17
+ export declare function useEngagementAction(action: string, options?: ReportActionOptions): () => void;
11
18
  /**
12
19
  * Report wherever the browser IS, and keep reporting as it moves.
13
20
  *
@@ -1 +1 @@
1
- {"version":3,"file":"beacon.d.ts","sourceRoot":"","sources":["../../../src/react/engagement/beacon.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,kBAAkB,EAAoC,MAAM,mBAAmB,CAAC;AAE9F;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,GAAE,kBAAuB,GAAG,IAAI,CAQhG;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,IAAI,CAMxE;AAED;;;;;;;;GAQG;AAEH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAGnE"}
1
+ {"version":3,"file":"beacon.d.ts","sourceRoot":"","sources":["../../../src/react/engagement/beacon.tsx"],"names":[],"mappings":"AAQA,OAAO,EACN,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EAIvB,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,GAAE,kBAAuB,GAAG,IAAI,CAWhG;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,MAAM,IAAI,CAKjG;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,IAAI,CASxE;AAED;;;;;;;;GAQG;AAEH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAGnE"}
@@ -5,8 +5,8 @@
5
5
  * no DOM) can import `reportPlace` without pulling React in, and so the app's
6
6
  * own router stays the thing that decides what "a place" is.
7
7
  */
8
- import { useEffect } from "react";
9
- import { reportPlace, startLocationBeacon } from "./beaconClient.js";
8
+ import { useCallback, useEffect } from "react";
9
+ import { reportAction, reportPlace, startLocationBeacon, } from "./beaconClient.js";
10
10
  /**
11
11
  * Report `place` whenever it changes.
12
12
  *
@@ -16,14 +16,29 @@ import { reportPlace, startLocationBeacon } from "./beaconClient.js";
16
16
  * placeholder becomes a real row in the console.
17
17
  */
18
18
  export function useEngagementBeacon(place, options = {}) {
19
- const basePath = options.basePath;
19
+ // 🔴 Every field, not just `basePath` (forge task 3538): rebuilding the object as `{ basePath }`
20
+ // dropped `assumeSignedIn`, so desk — whose door is Cloudflare Access, with no session route —
21
+ // still probed `/api/auth/session` and its 404 put a console error on every page.
22
+ const { basePath, fetchImpl, sessionPath, assumeSignedIn } = options;
20
23
  useEffect(() => {
21
24
  if (!place)
22
25
  return;
23
26
  // Fire and forget; `reportPlace` never rejects. Not awaited on purpose —
24
27
  // a route change must not wait on telemetry.
25
- void reportPlace(place, basePath ? { basePath } : {});
26
- }, [place, basePath]);
28
+ void reportPlace(place, { basePath, fetchImpl, sessionPath, assumeSignedIn });
29
+ }, [place, basePath, fetchImpl, sessionPath, assumeSignedIn]);
30
+ }
31
+ /**
32
+ * A press handler that reports `action` as used (forge task 3470) — `const onSearch =
33
+ * useEngagementAction("search")`, then call it where the feature RUNS. Stable across renders, so it
34
+ * can sit in a dependency list; fire-and-forget, like everything here. `reportAction` says what it
35
+ * may and may not carry.
36
+ */
37
+ export function useEngagementAction(action, options = {}) {
38
+ const { basePath, fetchImpl, sessionPath, assumeSignedIn, place } = options;
39
+ return useCallback(() => {
40
+ void reportAction(action, { basePath, fetchImpl, sessionPath, assumeSignedIn, place });
41
+ }, [action, basePath, fetchImpl, sessionPath, assumeSignedIn, place]);
27
42
  }
28
43
  /**
29
44
  * Report wherever the browser IS, and keep reporting as it moves.
@@ -40,11 +55,11 @@ export function useEngagementBeacon(place, options = {}) {
40
55
  * de-duplicates, so a re-render costs nothing.
41
56
  */
42
57
  export function useLocationBeacon(options = {}) {
43
- const basePath = options.basePath;
58
+ const { basePath, fetchImpl, sessionPath, assumeSignedIn } = options;
44
59
  // Delegates to the plain-JS starter so there is ONE implementation of the
45
60
  // listener set. Most apps call `startLocationBeacon()` from `main.tsx`
46
61
  // instead; this exists for a shell that would rather own the lifetime.
47
- useEffect(() => startLocationBeacon(basePath ? { basePath } : {}), [basePath]);
62
+ useEffect(() => startLocationBeacon({ basePath, fetchImpl, sessionPath, assumeSignedIn }), [basePath, fetchImpl, sessionPath, assumeSignedIn]);
48
63
  }
49
64
  /**
50
65
  * The location beacon as an element, for a shell that mounts declaratively.
@@ -1 +1 @@
1
- {"version":3,"file":"beacon.js","sourceRoot":"","sources":["../../../src/react/engagement/beacon.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAA2B,WAAW,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE9F;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAoB,EAAE,UAA8B,EAAE;IACzF,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,yEAAyE;QACzE,6CAA6C;QAC7C,KAAK,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACvD,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AACvB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAA8B,EAAE;IACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,0EAA0E;IAC1E,uEAAuE;IACvE,uEAAuE;IACvE,SAAS,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AAChF,CAAC;AAED;;;;;;;;GAQG;AACH,gEAAgE;AAChE,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC5D,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtE,OAAO,IAAI,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"beacon.js","sourceRoot":"","sources":["../../../src/react/engagement/beacon.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAGN,YAAY,EACZ,WAAW,EACX,mBAAmB,GACnB,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAoB,EAAE,UAA8B,EAAE;IACzF,iGAAiG;IACjG,+FAA+F;IAC/F,kFAAkF;IAClF,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;IACrE,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,yEAAyE;QACzE,6CAA6C;QAC7C,KAAK,WAAW,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC,CAAC;IAC/E,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,UAA+B,EAAE;IACpF,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAC5E,OAAO,WAAW,CAAC,GAAG,EAAE;QACvB,KAAK,YAAY,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;IACxF,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;AACvE,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAA8B,EAAE;IACjE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;IACrE,0EAA0E;IAC1E,uEAAuE;IACvE,uEAAuE;IACvE,SAAS,CACR,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC,EAC/E,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,CAAC,CAClD,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,gEAAgE;AAChE,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC5D,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtE,OAAO,IAAI,CAAC;AACb,CAAC"}
@@ -94,6 +94,33 @@ export declare function resetEngagementBeacon(): void;
94
94
  * settle it without a timer.
95
95
  */
96
96
  export declare function reportPlace(place: string, options?: ReportPlaceOptions): Promise<boolean>;
97
+ export interface ReportActionOptions extends ReportPlaceOptions {
98
+ /**
99
+ * The place the action happened on. Defaults to where the browser IS — the server resolves it
100
+ * against the manifest exactly as it resolves a view, so the default is right for every app.
101
+ */
102
+ place?: string;
103
+ }
104
+ /**
105
+ * Report that a FEATURE was used — `reportAction("search")` — beside the place it was used on
106
+ * (forge task 3470). Returns whether anything was sent.
107
+ *
108
+ * The owner's question is "what features do they use and ignore"; a page view cannot answer it,
109
+ * because one page holds several features. So the app names the action at the press, from the
110
+ * `actions` list its `routes.manifest.json` declares. The privacy contract is the place's:
111
+ *
112
+ * · 🔴 a NAME, never a value. `reportAction("search")` when a search RUNS — never the query,
113
+ * and never once per keystroke (call it where the search commits, not in an onChange). There
114
+ * is no parameter for a value, so there is nowhere to put one.
115
+ * · an undeclared name records as `other` server-side, so a missing manifest entry shows up as
116
+ * a row rather than as a feature nobody uses.
117
+ * · the same silence: session-probed (the probe's answer is shared with `reportPlace`, one per
118
+ * page load), fire-and-forget, never throws, never logs.
119
+ *
120
+ * NOT de-duplicated, unlike `reportPlace`: three plays are three uses. Only call it from apps
121
+ * whose recorder was mounted WITH `actions` — elsewhere `/action` is a 404 in the console.
122
+ */
123
+ export declare function reportAction(action: string, options?: ReportActionOptions): Promise<boolean>;
97
124
  /** Detaches the listeners `startLocationBeacon` installed. */
98
125
  export type StopBeacon = () => void;
99
126
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"beaconClient.d.ts","sourceRoot":"","sources":["../../../src/react/engagement/beaconClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAEH,2EAA2E;AAC3E,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AAEtD;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,sBAAsB,CAAC;AAEhD,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CACzB;AAaD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAI7C;AAYD,8DAA8D;AAC9D,wBAAgB,qBAAqB,IAAI,IAAI,CAG5C;AAyBD;;;;;GAKG;AACH,wBAAsB,WAAW,CAChC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,kBAAuB,GAC9B,OAAO,CAAC,OAAO,CAAC,CA+BlB;AAED,8DAA8D;AAC9D,MAAM,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC;AAIpC;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,kBAAuB,GAAG,UAAU,CAehF"}
1
+ {"version":3,"file":"beaconClient.d.ts","sourceRoot":"","sources":["../../../src/react/engagement/beaconClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAEH,2EAA2E;AAC3E,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AAEtD;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,sBAAsB,CAAC;AAEhD,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CACzB;AAaD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAI7C;AAYD,8DAA8D;AAC9D,wBAAgB,qBAAqB,IAAI,IAAI,CAG5C;AAyBD;;;;;GAKG;AACH,wBAAsB,WAAW,CAChC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,kBAAuB,GAC9B,OAAO,CAAC,OAAO,CAAC,CA+BlB;AAED,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC9D;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC,CAqBtG;AAED,8DAA8D;AAC9D,MAAM,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC;AAIpC;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,kBAAuB,GAAG,UAAU,CAehF"}
@@ -163,6 +163,51 @@ export async function reportPlace(place, options = {}) {
163
163
  return false;
164
164
  }
165
165
  }
166
+ /**
167
+ * Report that a FEATURE was used — `reportAction("search")` — beside the place it was used on
168
+ * (forge task 3470). Returns whether anything was sent.
169
+ *
170
+ * The owner's question is "what features do they use and ignore"; a page view cannot answer it,
171
+ * because one page holds several features. So the app names the action at the press, from the
172
+ * `actions` list its `routes.manifest.json` declares. The privacy contract is the place's:
173
+ *
174
+ * · 🔴 a NAME, never a value. `reportAction("search")` when a search RUNS — never the query,
175
+ * and never once per keystroke (call it where the search commits, not in an onChange). There
176
+ * is no parameter for a value, so there is nowhere to put one.
177
+ * · an undeclared name records as `other` server-side, so a missing manifest entry shows up as
178
+ * a row rather than as a feature nobody uses.
179
+ * · the same silence: session-probed (the probe's answer is shared with `reportPlace`, one per
180
+ * page load), fire-and-forget, never throws, never logs.
181
+ *
182
+ * NOT de-duplicated, unlike `reportPlace`: three plays are three uses. Only call it from apps
183
+ * whose recorder was mounted WITH `actions` — elsewhere `/action` is a 404 in the console.
184
+ */
185
+ export async function reportAction(action, options = {}) {
186
+ if (!action)
187
+ return false;
188
+ const doFetch = options.fetchImpl ?? globalThis.fetch;
189
+ if (typeof doFetch !== "function")
190
+ return false;
191
+ if (options.assumeSignedIn !== true) {
192
+ sessionAnswer ??= hasSession(options);
193
+ if (!(await sessionAnswer))
194
+ return false;
195
+ }
196
+ const place = options.place ?? (typeof window === "undefined" ? "/" : currentLocationPlace());
197
+ try {
198
+ await doFetch(`${options.basePath ?? ENGAGEMENT_BASE_PATH}/action`, {
199
+ method: "POST",
200
+ headers: { "content-type": "application/json" },
201
+ credentials: "same-origin",
202
+ body: JSON.stringify({ place, action }),
203
+ keepalive: true,
204
+ });
205
+ return true;
206
+ }
207
+ catch {
208
+ return false;
209
+ }
210
+ }
166
211
  let running = null;
167
212
  /**
168
213
  * Start reporting wherever the browser is, and keep reporting as it moves.
@@ -1 +1 @@
1
- {"version":3,"file":"beaconClient.js","sourceRoot":"","sources":["../../../src/react/engagement/beaconClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAEH,2EAA2E;AAC3E,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAEtD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,mBAAmB,CAAC;AAmBhD;;;;;;;;GAQG;AACH,IAAI,YAAY,GAAkB,IAAI,CAAC;AAEvC;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB;IACnC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;IACnD,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AACjC,CAAC;AAED;;;;;;;GAOG;AACH,IAAI,aAAa,GAA4B,IAAI,CAAC;AAElD,8DAA8D;AAC9D,MAAM,UAAU,qBAAqB;IACpC,YAAY,GAAG,IAAI,CAAC;IACpB,aAAa,GAAG,IAAI,CAAC;AACtB,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,UAAU,CAAC,OAA2B;IACpD,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,IAAI,UAAU,CAAC,KAAK,CAAC;IACtD,IAAI,OAAO,OAAO,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IAChD,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,WAAW,IAAI,YAAY,EAAE;YAC9D,WAAW,EAAE,aAAa;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;QAC1B,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAuC,CAAC;QACtE,OAAO,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAChC,KAAa,EACb,UAA8B,EAAE;IAEhC,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,YAAY;QAAE,OAAO,KAAK,CAAC;IACnD,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,IAAI,UAAU,CAAC,KAAK,CAAC;IACtD,IAAI,OAAO,OAAO,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IAEhD,6EAA6E;IAC7E,6EAA6E;IAC7E,0EAA0E;IAC1E,4CAA4C;IAC5C,IAAI,OAAO,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;QACrC,aAAa,KAAK,UAAU,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,CAAC,MAAM,aAAa,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1C,CAAC;IAED,IAAI,KAAK,KAAK,YAAY;QAAE,OAAO,KAAK,CAAC;IACzC,YAAY,GAAG,KAAK,CAAC;IACrB,IAAI,CAAC;QACJ,MAAM,OAAO,CAAC,GAAG,OAAO,CAAC,QAAQ,IAAI,oBAAoB,OAAO,EAAE;YACjE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,mEAAmE;YACnE,6DAA6D;YAC7D,WAAW,EAAE,aAAa;YAC1B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;YAC/B,SAAS,EAAE,IAAI;SACf,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACR,8DAA8D;QAC9D,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC;AAKD,IAAI,OAAO,GAAsB,IAAI,CAAC;AAEtC;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAA8B,EAAE;IACnE,OAAO,EAAE,EAAE,CAAC;IACZ,MAAM,IAAI,GAAG,GAAS,EAAE;QACvB,KAAK,WAAW,CAAC,oBAAoB,EAAE,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC,CAAC;IACF,IAAI,EAAE,CAAC;IACP,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAC5C,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAe,GAAG,EAAE;QAC7B,MAAM,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAC/C,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,GAAG,IAAI,CAAC;IACtC,CAAC,CAAC;IACF,OAAO,GAAG,IAAI,CAAC;IACf,OAAO,IAAI,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"beaconClient.js","sourceRoot":"","sources":["../../../src/react/engagement/beaconClient.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- export { ENGAGEMENT_BASE_PATH, type ReportPlaceOptions, reportPlace, resetEngagementBeacon, SESSION_PATH, type StopBeacon, startLocationBeacon, currentLocationPlace, } from './beaconClient.js';
2
- export { EngagementBeacon, useEngagementBeacon, useLocationBeacon } from './beacon.js';
1
+ export { ENGAGEMENT_BASE_PATH, type ReportActionOptions, type ReportPlaceOptions, reportAction, reportPlace, resetEngagementBeacon, SESSION_PATH, type StopBeacon, startLocationBeacon, currentLocationPlace, } from './beaconClient.js';
2
+ export { EngagementBeacon, useEngagementAction, useEngagementBeacon, useLocationBeacon } from './beacon.js';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/engagement/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,oBAAoB,EACpB,KAAK,kBAAkB,EACvB,WAAW,EACX,qBAAqB,EACrB,YAAY,EACZ,KAAK,UAAU,EACf,mBAAmB,EACnB,oBAAoB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/engagement/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,oBAAoB,EACpB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,YAAY,EACZ,WAAW,EACX,qBAAqB,EACrB,YAAY,EACZ,KAAK,UAAU,EACf,mBAAmB,EACnB,oBAAoB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
@@ -1,5 +1,5 @@
1
- // `cursedbelt/react/engagement-beacon` — the engagement beacon: `reportPlace` and
1
+ // `cursedbelt/react/engagement-beacon` — the engagement beacon: `reportPlace`, `reportAction` and
2
2
  // `startLocationBeacon` (plain JS, no React) and the React hooks over them.
3
- export { ENGAGEMENT_BASE_PATH, reportPlace, resetEngagementBeacon, SESSION_PATH, startLocationBeacon, currentLocationPlace, } from './beaconClient.js';
4
- export { EngagementBeacon, useEngagementBeacon, useLocationBeacon } from './beacon.js';
3
+ export { ENGAGEMENT_BASE_PATH, reportAction, reportPlace, resetEngagementBeacon, SESSION_PATH, startLocationBeacon, currentLocationPlace, } from './beaconClient.js';
4
+ export { EngagementBeacon, useEngagementAction, useEngagementBeacon, useLocationBeacon } from './beacon.js';
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/engagement/index.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,4EAA4E;AAC5E,OAAO,EACN,oBAAoB,EAEpB,WAAW,EACX,qBAAqB,EACrB,YAAY,EAEZ,mBAAmB,EACnB,oBAAoB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/engagement/index.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,4EAA4E;AAC5E,OAAO,EACN,oBAAoB,EAGpB,YAAY,EACZ,WAAW,EACX,qBAAqB,EACrB,YAAY,EAEZ,mBAAmB,EACnB,oBAAoB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
@@ -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. */
@@ -4734,6 +4734,9 @@
4734
4734
  .sm\:max-w-\[var\(--modal-w-sm\)\] {
4735
4735
  max-width: var(--modal-w-sm);
4736
4736
  }
4737
+ .sm\:min-w-40 {
4738
+ min-width: calc(var(--spacing) * 40);
4739
+ }
4737
4740
  .sm\:flex-1 {
4738
4741
  flex: 1;
4739
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. */
@@ -14,6 +14,13 @@ export declare const KEYBOARD_STANDIN = "(() => {\n const real = window.visualV
14
14
  * A resize or a navigation can swap a whole layout — family's phone shell remounts its page behind a
15
15
  * Spinner and fills it ~450ms later, with no DOM mutation in between — and a frame audited before
16
16
  * that is the empty shell. Shared by the Chromium audit (`designBaseline.ts`) and the Apple pass.
17
+ *
18
+ * 🔴 A finite animation on the document's clock is FINISHED, not waited on (forge task 3534). That
19
+ * clock only advances when the browser paints a frame, and a loaded Mac starves frames: a table's
20
+ * 150ms `transition-colors` after the ledger's scheme switch was still mid-way when the 5s cap let
21
+ * the audit in, and binary-server's file rows read as light ink on a light row (FND-9). The audit
22
+ * judges a page at rest, which is exactly where `finish()` puts it; the poll still counts it as
23
+ * motion, so whatever its `transitionend` sets off settles before the audit reads anything.
17
24
  */
18
25
  export declare function settleInPage(): Promise<void>;
19
26
  /** Scrolls the page's main pane to `to` and says how far it can go. */
@@ -1 +1 @@
1
- {"version":3,"file":"appleWalk.d.ts","sourceRoot":"","sources":["../../src/testing/appleWalk.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,KAAK,kBAAkB,EAAe,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACnH,OAAO,EAA6B,KAAK,YAAY,EAA6C,MAAM,iBAAiB,CAAC;AAE1H;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,61BAWxB,CAAC;AAEN;;;;;;;GAOG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAqB5C;AAED,uEAAuE;AACvE,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAQxE;AAED,0HAA0H;AAC1H,wBAAgB,YAAY,IAAI,IAAI,CAKnC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAarD;AAED,+IAA+I;AAC/I,wBAAsB,kBAAkB,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CA0B3G;AAED,2HAA2H;AAC3H,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAGpE;AAED,oCAAoC;AACpC,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED,yGAAyG;AACzG,MAAM,WAAW,SAAU,SAAQ,cAAc;IAC/C,YAAY,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACzD,UAAU,CAAC,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzD,cAAc,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IAC3D,qHAAqH;IACrH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,oGAAoG;IACpG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6GAA6G;IAC7G,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iIAAiI;IACjI,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAKD,2EAA2E;AAC3E,wBAAgB,MAAM,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,eAAe,EAAE,CAErE;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC;IAAE,UAAU,EAAE,eAAe,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CA+CpL"}
1
+ {"version":3,"file":"appleWalk.d.ts","sourceRoot":"","sources":["../../src/testing/appleWalk.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,KAAK,kBAAkB,EAAe,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACnH,OAAO,EAA6B,KAAK,YAAY,EAA6C,MAAM,iBAAiB,CAAC;AAE1H;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,61BAWxB,CAAC;AAEN;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CA8B5C;AAED,uEAAuE;AACvE,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAQxE;AAED,0HAA0H;AAC1H,wBAAgB,YAAY,IAAI,IAAI,CAKnC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAarD;AAED,+IAA+I;AAC/I,wBAAsB,kBAAkB,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CA0B3G;AAED,2HAA2H;AAC3H,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAGpE;AAED,oCAAoC;AACpC,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED,yGAAyG;AACzG,MAAM,WAAW,SAAU,SAAQ,cAAc;IAC/C,YAAY,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACzD,UAAU,CAAC,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzD,cAAc,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IAC3D,qHAAqH;IACrH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,oGAAoG;IACpG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6GAA6G;IAC7G,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iIAAiI;IACjI,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAKD,2EAA2E;AAC3E,wBAAgB,MAAM,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,eAAe,EAAE,CAErE;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC;IAAE,UAAU,EAAE,eAAe,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CA+CpL"}
@@ -43,6 +43,13 @@ export const KEYBOARD_STANDIN = `(() => {
43
43
  * A resize or a navigation can swap a whole layout — family's phone shell remounts its page behind a
44
44
  * Spinner and fills it ~450ms later, with no DOM mutation in between — and a frame audited before
45
45
  * that is the empty shell. Shared by the Chromium audit (`designBaseline.ts`) and the Apple pass.
46
+ *
47
+ * 🔴 A finite animation on the document's clock is FINISHED, not waited on (forge task 3534). That
48
+ * clock only advances when the browser paints a frame, and a loaded Mac starves frames: a table's
49
+ * 150ms `transition-colors` after the ledger's scheme switch was still mid-way when the 5s cap let
50
+ * the audit in, and binary-server's file rows read as light ink on a light row (FND-9). The audit
51
+ * judges a page at rest, which is exactly where `finish()` puts it; the poll still counts it as
52
+ * motion, so whatever its `transitionend` sets off settles before the audit reads anything.
46
53
  */
47
54
  export function settleInPage() {
48
55
  return new Promise((resolve) => {
@@ -54,7 +61,18 @@ export function settleInPage() {
54
61
  observer.observe(document.body, { subtree: true, childList: true, characterData: true, attributes: true });
55
62
  const started = performance.now();
56
63
  const poll = setInterval(() => {
57
- const animating = document.getAnimations().some((a) => a.playState === 'running' && a.effect?.getComputedTiming().endTime !== Infinity);
64
+ const moving = document.getAnimations().filter((a) => a.playState === 'running' && a.effect?.getComputedTiming().endTime !== Infinity);
65
+ for (const a of moving) {
66
+ if (a.timeline !== document.timeline)
67
+ continue; // a scroll-driven one is where the scroll puts it
68
+ try {
69
+ a.finish();
70
+ }
71
+ catch {
72
+ // A negative-rate or zero-length effect that cannot finish is still waited on, as before.
73
+ }
74
+ }
75
+ const animating = moving.length > 0;
58
76
  const loading = [...document.querySelectorAll('.animate-spin, [aria-busy="true"]')].some((el) => el.checkVisibility({ opacityProperty: true, visibilityProperty: true }));
59
77
  calm = changed || animating || loading ? 0 : calm + 1;
60
78
  changed = false;
@@ -1 +1 @@
1
- {"version":3,"file":"appleWalk.js","sourceRoot":"","sources":["../../src/testing/appleWalk.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAA2B,WAAW,EAA6C,MAAM,kBAAkB,CAAC;AACnH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAqB,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE1H;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;KAW3B,CAAC;AAEN;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QACnC,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE;YACzC,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3G,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE;YAC5B,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC;YACxI,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,mCAAmC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC1K,IAAI,GAAG,OAAO,IAAI,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;YACtD,OAAO,GAAG,KAAK,CAAC;YAChB,IAAI,IAAI,IAAI,CAAC,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,IAAI,EAAE,CAAC;gBACpD,aAAa,CAAC,IAAI,CAAC,CAAC;gBACpB,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACtB,qBAAqB,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YACzC,CAAC;QACH,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC,CAAC,CAAC;AACL,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,gBAAgB,CAAC,EAAU;IACzC,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,gBAAgB,IAAI,QAAQ,CAAC,eAAe,EAAE,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAC7G,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,gBAAgB,IAAI,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAC5I,CAAC;IACF,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACtG,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IACpC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACpB,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AAC5E,CAAC;AAED,0HAA0H;AAC1H,MAAM,UAAU,YAAY;IAC1B,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC;QAC9C,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,OAAO,IAAI,MAAM,CAAC,iBAAiB,CAAC;YAAE,SAAS;QAChJ,MAAM,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,CAAC,CAAC,EAAE,YAAY,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/C,EAAE,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACvC,EAAE,CAAC,KAAK,EAAE,CAAC;IACX,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACzE,MAAM,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACvC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,WAAW,CAAC;QACtE,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,YAAY,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,QAAQ,CAAC,aAAa,KAAK,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AAC9E,CAAC;AAED,+IAA+I;AAC/I,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,CAAC,QAAQ,EAAE,IAAI,CAA4B;IAClF,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;IAC7B,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC,IAAI,CAAC;IACnD,oGAAoG;IACpG,oGAAoG;IACpG,8EAA8E;IAC9E,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,MAAM,KAAK,GAAG,EAAE,YAAY,WAAW,IAAI,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9G,MAAM,IAAI,GAAG,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,qBAAqB,EAAE,CAAC;QAC1E,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACzC,MAAM,IAAI,GAAG,KAAK,EAAE,cAAc,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,cAAc,CAAC;QACvH,MAAM,MAAM,GAAG,IAAI,YAAY,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,aAAa,CAAC;QACpE,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,KAAK,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnH,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,qBAAqB,EAAE,CAAC;IAC7C,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC;IACtB,wFAAwF;IACxF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACrH,MAAuE,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACnG,MAAM,IAAI,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC;IACpB,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnH,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IACtI,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9I,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,GAAG,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AAC3I,CAAC;AAED,2HAA2H;AAC3H,MAAM,UAAU,4BAA4B,CAAC,MAAc;IACzD,IAAI,CAAE,MAA8C,CAAC,UAAU;QAAE,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;IACxF,OAAO,OAAQ,MAA8C,CAAC,UAAU,KAAK,UAAU,CAAC;AAC1F,CAAC;AAED,oCAAoC;AACpC,MAAM,UAAU,kBAAkB;IAC/B,MAAwE,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/F,CAAC;AAsBD,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC;AACxG,MAAM,KAAK,GAAG,CAAC,IAAe,EAAE,EAAU,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAE7I,2EAA2E;AAC3E,MAAM,UAAU,MAAM,CAAC,QAA2B;IAChD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7I,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAe,EAAE,KAAa,EAAE,MAAmB,EAAE,UAA6B,EAAE;IACnH,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,GAAG,EAAE,EAAE,KAAK,GAAG,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IACvG,MAAM,IAAI,GAAG,CAAC,MAAc,EAAE,EAAE;QAC9B,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QACzD,MAAM,IAAI,GAAG,GAAG,KAAK,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,MAAM,CAAC;QACnE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,iFAAiF,EAAE,CAAC;IACxI,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,MAAM,QAAQ,GAAG,KAAK,IAAgC,EAAE;QACtD,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACvG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACzH,OAAO,CAAC,GAAG,MAAM,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC;IACF,MAAM,KAAK,GAAsB,EAAE,CAAC;IACpC,wGAAwG;IACxG,MAAM,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACvB,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,MAAM,IAAI,GAAG,CAAC;QAChD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACpF,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;YAC7D,2FAA2F;YAC3F,MAAM,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,QAAQ,EAAE,CAAC,CAAC,CAAC;YAClC,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACjD,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC;gBAAE,MAAM;QAC3B,CAAC;QACD,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,QAAQ,EAAE,CAAC,CAAC,CAAC;QAClC,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IACD,IAAI,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAChE,IAAI,CAAC,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,oFAAoF,EAAE,CAAC,CAAC;aAC1J,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,4BAA4B,EAAE,gBAAgB,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;aACpK,CAAC;YACJ,KAAK,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAU,CAAC,CAAC,CAAC,CAAC;YAC5G,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC;YACxB,MAAM,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"appleWalk.js","sourceRoot":"","sources":["../../src/testing/appleWalk.ts"],"names":[],"mappings":"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"}
@@ -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"}