cursedbelt 5.17.0 → 5.18.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.
@@ -0,0 +1,37 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { ControlSize } from '../lib/field.js';
3
+ import { type CardDisplay, type CardSize } from '../lib/cardDisplay.js';
4
+ export interface CardDisplayControlsProps {
5
+ value: CardDisplay;
6
+ onChange: (next: CardDisplay) => void;
7
+ /** Which sizes to offer, in order. Default {@link CARD_SIZES}. */
8
+ sizes?: readonly CardSize[];
9
+ /** What each segment says. Default `L` / `M` / `S`. */
10
+ sizeLabels?: Partial<Record<CardSize, ReactNode>>;
11
+ /** What the words under a card are called, lower-case — `"game titles"`. Default `"titles"`. */
12
+ captionsNoun?: string;
13
+ /** What the image is called, lower-case — `"art"`, `"posters"`. Default `"images"`. */
14
+ imageNoun?: string;
15
+ /**
16
+ * Set when the size does not apply (a list view). The segments stay VISIBLE and inert with
17
+ * this on hover — one UI, never a hidden control.
18
+ */
19
+ sizeDisabledReason?: string | null;
20
+ /** The same, for the captions toggle — `"Titles are always shown in the list view"`. */
21
+ captionsDisabledReason?: string | null;
22
+ /** Height on the shared control scale. Default `sm` — this sits in a toolbar. */
23
+ controlSize?: Extract<ControlSize, 'sm' | 'md'>;
24
+ className?: string;
25
+ }
26
+ /**
27
+ * The S / M / L switch and the captions toggle, side by side. The why, and the model it draws,
28
+ * are in `../lib/cardDisplay.ts`.
29
+ *
30
+ * Controlled: the app owns the state and where it is kept (`useCardDisplay` is the hook for
31
+ * that). The captions toggle is `aria-pressed` when the words are HIDDEN — pressing it is the act
32
+ * of hiding them, and its icon shows the card with or without its lines.
33
+ *
34
+ * Test hooks: `card-size-<size>` on each segment and `card-captions` on the toggle.
35
+ */
36
+ export declare function CardDisplayControls({ value, onChange, sizes, sizeLabels, captionsNoun, imageNoun, sizeDisabledReason, captionsDisabledReason, controlSize, className, }: CardDisplayControlsProps): import("react").JSX.Element;
37
+ //# sourceMappingURL=CardDisplayControls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CardDisplayControls.d.ts","sourceRoot":"","sources":["../../../src/react/components/CardDisplayControls.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAInD,OAAO,EAAc,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAMpF,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACtC,kEAAkE;IAClE,KAAK,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC5B,uDAAuD;IACvD,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAClD,gGAAgG;IAChG,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uFAAuF;IACvF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,wFAAwF;IACxF,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,iFAAiF;IACjF,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,QAAQ,EACR,KAAkB,EAClB,UAAU,EACV,YAAuB,EACvB,SAAoB,EACpB,kBAAyB,EACzB,sBAA6B,EAC7B,WAAkB,EAClB,SAAS,GACV,EAAE,wBAAwB,+BA+D1B"}
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from '../lib/cn.js';
3
+ import { IconButton } from './IconButton.js';
4
+ import { SegmentedControl } from './SegmentedControl.js';
5
+ import { Tooltip } from './Tooltip.js';
6
+ import { CARD_SIZES } from '../lib/cardDisplay.js';
7
+ const DEFAULT_SIZE_LABELS = { large: 'L', medium: 'M', small: 'S' };
8
+ const capitalized = (word) => `${word[0]?.toUpperCase() ?? ''}${word.slice(1)}`;
9
+ /**
10
+ * The S / M / L switch and the captions toggle, side by side. The why, and the model it draws,
11
+ * are in `../lib/cardDisplay.ts`.
12
+ *
13
+ * Controlled: the app owns the state and where it is kept (`useCardDisplay` is the hook for
14
+ * that). The captions toggle is `aria-pressed` when the words are HIDDEN — pressing it is the act
15
+ * of hiding them, and its icon shows the card with or without its lines.
16
+ *
17
+ * Test hooks: `card-size-<size>` on each segment and `card-captions` on the toggle.
18
+ */
19
+ export function CardDisplayControls({ value, onChange, sizes = CARD_SIZES, sizeLabels, captionsNoun = 'titles', imageNoun = 'images', sizeDisabledReason = null, captionsDisabledReason = null, controlSize = 'sm', className, }) {
20
+ const labels = { ...DEFAULT_SIZE_LABELS, ...sizeLabels };
21
+ const { captions } = value;
22
+ const toggle = (_jsx(IconButton, { size: controlSize, variant: 'ghost', disabled: captionsDisabledReason !== null, onClick: () => onChange({ ...value, captions: !captions }), "aria-pressed": !captions, "data-testid": 'card-captions', label: captions
23
+ ? `Hide ${captionsNoun} — show the ${imageNoun} only`
24
+ : `Show ${captionsNoun} under the ${imageNoun}`, tooltip: captions ? `${capitalized(imageNoun)} only — hide the ${captionsNoun}` : `Show the ${captionsNoun}`, children: _jsxs("svg", { viewBox: '0 0 24 24', fill: 'none', stroke: 'currentColor', strokeWidth: 2, strokeLinecap: 'round', strokeLinejoin: 'round', "aria-hidden": 'true', children: [_jsx("rect", { x: '4', y: '3', width: '16', height: '12', rx: '1.5' }), captions ? (_jsxs(_Fragment, { children: [_jsx("line", { x1: '4', y1: '18.5', x2: '20', y2: '18.5' }), _jsx("line", { x1: '4', y1: '21.5', x2: '14', y2: '21.5' })] })) : null] }) }));
25
+ return (_jsxs("div", { className: cn('inline-flex items-center gap-1', className), "data-cb-card-display": '', children: [_jsx(SegmentedControl, { size: controlSize, "aria-label": 'Card size', value: value.size, onChange: (size) => onChange({ ...value, size }), options: sizes.map((size) => ({
26
+ value: size,
27
+ label: labels[size],
28
+ disabled: sizeDisabledReason !== null,
29
+ tooltip: sizeDisabledReason ?? `${capitalized(size)} cards`,
30
+ 'data-testid': `card-size-${size}`,
31
+ })) }), captionsDisabledReason === null ? (toggle) : (_jsx(Tooltip, { content: captionsDisabledReason, children: _jsx("span", { className: 'inline-flex', children: toggle }) }))] }));
32
+ }
33
+ //# sourceMappingURL=CardDisplayControls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CardDisplayControls.js","sourceRoot":"","sources":["../../../src/react/components/CardDisplayControls.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import { type CardDisplay } from '../lib/cardDisplay.js';
2
+ export interface UseCardDisplayOptions {
3
+ /**
4
+ * What to draw on the first frame — a synchronous read (the device's `localStorage`) or the
5
+ * default. Read once. Default {@link DEFAULT_CARD_DISPLAY}.
6
+ */
7
+ initial?: CardDisplay | (() => CardDisplay);
8
+ /**
9
+ * Keep the choice. Called with the SETTLED value after `debounceMs` of quiet, never for a value
10
+ * equal to the last one kept or loaded — so flipping a toggle and back costs nothing. `keepalive`
11
+ * is true when the page is going away, for a `fetch(…, { keepalive })`. A rejected save is
12
+ * retried with the next change.
13
+ */
14
+ save: (display: CardDisplay, options: {
15
+ keepalive: boolean;
16
+ }) => void | Promise<void>;
17
+ /**
18
+ * A stored choice to adopt once — the server's, which follows the person to every device.
19
+ * 🔴 A change made while this is in flight WINS: the stored value is older than the hand.
20
+ * A rejection or `null` keeps what is drawn.
21
+ */
22
+ load?: () => Promise<Partial<CardDisplay> | null>;
23
+ /** Off until the session is known — a signed-out read is a wasted 401. Default true. */
24
+ enabled?: boolean;
25
+ /** How long the choice must hold still before it is kept. Default 800 ms. */
26
+ debounceMs?: number;
27
+ }
28
+ export interface UseCardDisplayResult {
29
+ value: CardDisplay;
30
+ /** Draw it now; keep it once it settles. */
31
+ setValue: (next: CardDisplay) => void;
32
+ /** False until `load` has answered (true at once without one). */
33
+ ready: boolean;
34
+ }
35
+ /**
36
+ * The state behind {@link CardDisplayControls}, and where it is kept — debounced.
37
+ *
38
+ * Owner, flix, 2026-09-28: *"persist the setting to the db, with a slight debounce in case the
39
+ * user is toggling them just to test them and hasn't settled on one yet."* So a burst of taps is
40
+ * ONE save carrying the last value, and a burst that ends where it started is none.
41
+ *
42
+ * Where the value lives is the app's: flix keeps it per account on its server, roms per device
43
+ * in `localStorage`. Both are the same two callbacks.
44
+ *
45
+ * ```tsx
46
+ * const cards = useCardDisplay({ initial: readLocal, load: api.loadCards, save: api.saveCards });
47
+ * <CardDisplayControls value={cards.value} onChange={cards.setValue} captionsNoun='titles' />
48
+ * ```
49
+ */
50
+ export declare function useCardDisplay(options: UseCardDisplayOptions): UseCardDisplayResult;
51
+ //# sourceMappingURL=useCardDisplay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCardDisplay.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/useCardDisplay.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,WAAW,EAAoC,MAAM,uBAAuB,CAAC;AAE3F,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,GAAG,CAAC,MAAM,WAAW,CAAC,CAAC;IAC5C;;;;;OAKG;IACH,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtF;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC;IAClD,wFAAwF;IACxF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,WAAW,CAAC;IACnB,4CAA4C;IAC5C,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACtC,kEAAkE;IAClE,KAAK,EAAE,OAAO,CAAC;CAChB;AAUD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,oBAAoB,CAkFnF"}
@@ -0,0 +1,106 @@
1
+ import { useCallback, useEffect, useRef, useState } from 'react';
2
+ import { DEFAULT_CARD_DISPLAY, isCardSize } from '../lib/cardDisplay.js';
3
+ const same = (a, b) => a.size === b.size && a.captions === b.captions;
4
+ /** A partial stored value laid over what is drawn; anything malformed is ignored, field by field. */
5
+ const merged = (base, stored) => ({
6
+ size: isCardSize(stored.size) ? stored.size : base.size,
7
+ captions: typeof stored.captions === 'boolean' ? stored.captions : base.captions,
8
+ });
9
+ /**
10
+ * The state behind {@link CardDisplayControls}, and where it is kept — debounced.
11
+ *
12
+ * Owner, flix, 2026-09-28: *"persist the setting to the db, with a slight debounce in case the
13
+ * user is toggling them just to test them and hasn't settled on one yet."* So a burst of taps is
14
+ * ONE save carrying the last value, and a burst that ends where it started is none.
15
+ *
16
+ * Where the value lives is the app's: flix keeps it per account on its server, roms per device
17
+ * in `localStorage`. Both are the same two callbacks.
18
+ *
19
+ * ```tsx
20
+ * const cards = useCardDisplay({ initial: readLocal, load: api.loadCards, save: api.saveCards });
21
+ * <CardDisplayControls value={cards.value} onChange={cards.setValue} captionsNoun='titles' />
22
+ * ```
23
+ */
24
+ export function useCardDisplay(options) {
25
+ const { enabled = true, debounceMs = 800 } = options;
26
+ const [value, setState] = useState(() => {
27
+ const initial = options.initial ?? DEFAULT_CARD_DISPLAY;
28
+ return typeof initial === 'function' ? initial() : initial;
29
+ });
30
+ const [ready, setReady] = useState(!(enabled && options.load));
31
+ // The callbacks are read through a ref so an inline arrow at the call site does not restart
32
+ // the load or drop a pending save on every render.
33
+ const callbacks = useRef(options);
34
+ callbacks.current = options;
35
+ const kept = useRef(value);
36
+ const pending = useRef(null);
37
+ const touched = useRef(false);
38
+ const timer = useRef(null);
39
+ const flush = useCallback((keepalive) => {
40
+ if (timer.current)
41
+ clearTimeout(timer.current);
42
+ timer.current = null;
43
+ const next = pending.current;
44
+ pending.current = null;
45
+ if (!next || same(next, kept.current))
46
+ return;
47
+ const previous = kept.current;
48
+ kept.current = next;
49
+ const forget = () => {
50
+ // Not kept after all: the next change (or this one again) must be sent.
51
+ if (kept.current === next)
52
+ kept.current = previous;
53
+ };
54
+ try {
55
+ void Promise.resolve(callbacks.current.save(next, { keepalive })).catch(forget);
56
+ }
57
+ catch {
58
+ forget();
59
+ }
60
+ }, []);
61
+ const setValue = useCallback((next) => {
62
+ touched.current = true;
63
+ setState(next);
64
+ pending.current = next;
65
+ if (timer.current)
66
+ clearTimeout(timer.current);
67
+ timer.current = setTimeout(() => flush(false), debounceMs);
68
+ }, [debounceMs, flush]);
69
+ useEffect(() => {
70
+ const load = callbacks.current.load;
71
+ if (!enabled || !load)
72
+ return;
73
+ let live = true;
74
+ load()
75
+ .then((stored) => {
76
+ if (!live || !stored || touched.current)
77
+ return;
78
+ setState((drawn) => {
79
+ const next = merged(drawn, stored);
80
+ kept.current = next;
81
+ return next;
82
+ });
83
+ })
84
+ .catch(() => {
85
+ // A choice that cannot be read is the one already drawn.
86
+ })
87
+ .finally(() => {
88
+ if (live)
89
+ setReady(true);
90
+ });
91
+ return () => {
92
+ live = false;
93
+ };
94
+ }, [enabled]);
95
+ // A tap in the last `debounceMs` before the tab closes or the view unmounts is still kept.
96
+ useEffect(() => {
97
+ const onHide = () => flush(true);
98
+ globalThis.addEventListener?.('pagehide', onHide);
99
+ return () => {
100
+ globalThis.removeEventListener?.('pagehide', onHide);
101
+ flush(true);
102
+ };
103
+ }, [flush]);
104
+ return { value, setValue, ready };
105
+ }
106
+ //# sourceMappingURL=useCardDisplay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCardDisplay.js","sourceRoot":"","sources":["../../../src/react/hooks/useCardDisplay.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,8 @@ export { Badge, type BadgeProps, type BadgeTone } from './components/Badge.js';
39
39
  export { ChartTablePanel, type ChartTablePanelProps, type ChartTableView, } from './components/ChartTablePanel.js';
40
40
  export * from './companion-link/index.js';
41
41
  export { CardTapTarget, type CardTapTargetProps } from './components/CardTapTarget.js';
42
+ export { CardDisplayControls, type CardDisplayControlsProps } from './components/CardDisplayControls.js';
43
+ export { CARD_SIZES, type CardDisplay, type CardSize, DEFAULT_CARD_DISPLAY, isCardSize, } from './lib/cardDisplay.js';
42
44
  export { hasSelectionWithin } from './lib/textSelection.js';
43
45
  export { ProblemDetailView, type ProblemDetailViewProps, type ProblemExplainView, type ProblemBlockingView, type ProblemGateView, type ProblemReadyTaskView, type ProblemEventView, type ProblemSessionView, type ProblemTriageView, } from './problem-detail/ProblemDetailView.js';
44
46
  export { Button, type ButtonProps, type ButtonSize, type ButtonVariant, buttonVariants, } from './components/Button.js';
@@ -182,6 +184,7 @@ export { type UseCopyToClipboard, useCopyToClipboard } from './hooks/useCopyToCl
182
184
  export { type BoardOver, type CrossContainerContainerApi, type CrossContainerDragOptions, type CrossContainerDragResult, computeBoardMove, computeNetMove, findContainerOf, positionAtIndex, useCrossContainerDrag, } from './hooks/useCrossContainerDrag.js';
183
185
  export { useDebouncedCallback } from './hooks/useDebouncedCallback.js';
184
186
  export { useDebouncedValue } from './hooks/useDebouncedValue.js';
187
+ export { type UseCardDisplayOptions, type UseCardDisplayResult, useCardDisplay } from './hooks/useCardDisplay.js';
185
188
  export { type UseDiscardGuardOptions, type UseDiscardGuardResult, useDiscardGuard, } from './hooks/useDiscardGuard.js';
186
189
  export { type FormValues, jsonEqual, readFormValues, type UseDirtyFormOptions, type UseDirtyFormResult, useDirtyForm, } from './hooks/useDirtyForm.js';
187
190
  export { useDismissibleItems } from './hooks/useDismissibleItems.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"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"}
@@ -44,6 +44,8 @@ export { Badge } from './components/Badge.js';
44
44
  export { ChartTablePanel, } from './components/ChartTablePanel.js';
45
45
  export * from './companion-link/index.js';
46
46
  export { CardTapTarget } from './components/CardTapTarget.js';
47
+ export { CardDisplayControls } from './components/CardDisplayControls.js';
48
+ export { CARD_SIZES, DEFAULT_CARD_DISPLAY, isCardSize, } from './lib/cardDisplay.js';
47
49
  export { hasSelectionWithin } from './lib/textSelection.js';
48
50
  export { ProblemDetailView, } from './problem-detail/ProblemDetailView.js';
49
51
  export { Button, buttonVariants, } from './components/Button.js';
@@ -195,6 +197,7 @@ export { useCopyToClipboard } from './hooks/useCopyToClipboard.js';
195
197
  export { computeBoardMove, computeNetMove, findContainerOf, positionAtIndex, useCrossContainerDrag, } from './hooks/useCrossContainerDrag.js';
196
198
  export { useDebouncedCallback } from './hooks/useDebouncedCallback.js';
197
199
  export { useDebouncedValue } from './hooks/useDebouncedValue.js';
200
+ export { useCardDisplay } from './hooks/useCardDisplay.js';
198
201
  export { useDiscardGuard, } from './hooks/useDiscardGuard.js';
199
202
  export { jsonEqual, readFormValues, useDirtyForm, } from './hooks/useDirtyForm.js';
200
203
  export { useDismissibleItems } from './hooks/useDismissibleItems.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * How a card grid is drawn: how big each card is, and whether the words under the image show.
3
+ *
4
+ * Owner, roms, 2026-09-27: *"Smaller cards could be half that size and maybe a quarter … so the
5
+ * user can scroll faster and see more cards at once"*, and *"a toggle to hide the game info so
6
+ * only the game image is visible"*. Then flix asked for the same pair (2026-09-28), which is why
7
+ * it lives here: two grids with their own copy of an S/M/L switch and a titles toggle drift the
8
+ * first time one of them changes a label or a hit target.
9
+ *
10
+ * 🔴 The SIZE is a word, not a width. What `small` means in pixels is the app's — roms draws box
11
+ * art at 10/7/5 rem, flix draws 2:3 posters — so this names the choice and each grid maps it onto
12
+ * its own column width. A number here would be one app's layout leaking into the other's.
13
+ */
14
+ export type CardSize = 'large' | 'medium' | 'small';
15
+ /** Largest first — the order the switch reads left to right. */
16
+ export declare const CARD_SIZES: readonly CardSize[];
17
+ export declare const isCardSize: (value: unknown) => value is CardSize;
18
+ /** The whole choice. `captions` is whether the words under each image are drawn. */
19
+ export interface CardDisplay {
20
+ size: CardSize;
21
+ captions: boolean;
22
+ }
23
+ /** Large cards with their words — what a grid looks like before anyone has chosen. */
24
+ export declare const DEFAULT_CARD_DISPLAY: CardDisplay;
25
+ //# sourceMappingURL=cardDisplay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cardDisplay.d.ts","sourceRoot":"","sources":["../../../src/react/lib/cardDisplay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEpD,gEAAgE;AAChE,eAAO,MAAM,UAAU,EAAE,SAAS,QAAQ,EAAiC,CAAC;AAE5E,eAAO,MAAM,UAAU,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,QACS,CAAC;AAE/D,oFAAoF;AACpF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,sFAAsF;AACtF,eAAO,MAAM,oBAAoB,EAAE,WAA+C,CAAC"}
@@ -0,0 +1,6 @@
1
+ /** Largest first — the order the switch reads left to right. */
2
+ export const CARD_SIZES = ['large', 'medium', 'small'];
3
+ export const isCardSize = (value) => value === 'large' || value === 'medium' || value === 'small';
4
+ /** Large cards with their words — what a grid looks like before anyone has chosen. */
5
+ export const DEFAULT_CARD_DISPLAY = { size: 'large', captions: true };
6
+ //# sourceMappingURL=cardDisplay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cardDisplay.js","sourceRoot":"","sources":["../../../src/react/lib/cardDisplay.ts"],"names":[],"mappings":"AAeA,gEAAgE;AAChE,MAAM,CAAC,MAAM,UAAU,GAAwB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAE5E,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAc,EAAqB,EAAE,CAC9D,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,OAAO,CAAC;AAQ/D,sFAAsF;AACtF,MAAM,CAAC,MAAM,oBAAoB,GAAgB,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cursedbelt",
3
- "version": "5.17.0",
3
+ "version": "5.18.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.",
@@ -150,6 +150,7 @@ export const AREAS: readonly Area[] = [
150
150
  'components/Button.tsx',
151
151
  'components/ButtonGroup.tsx',
152
152
  'components/ButtonLink.tsx',
153
+ 'components/CardDisplayControls.tsx',
153
154
  'components/CardTapTarget.tsx',
154
155
  'components/Checkbox.tsx',
155
156
  'components/ChoiceGroup.tsx',
@@ -0,0 +1,71 @@
1
+ import { afterEach, describe, expect, mock, test } from 'bun:test';
2
+ import { cleanup, fireEvent, render } from '@testing-library/react';
3
+ import type { CardDisplay } from '../lib/cardDisplay.js';
4
+ import { CardDisplayControls } from './CardDisplayControls.js';
5
+
6
+ afterEach(cleanup);
7
+
8
+ const LARGE_WITH_WORDS: CardDisplay = { size: 'large', captions: true };
9
+
10
+ describe('CardDisplayControls', () => {
11
+ test('a size segment reports the size, keeping the captions choice', () => {
12
+ const onChange = mock((_: CardDisplay) => {});
13
+ const { getByTestId } = render(
14
+ <CardDisplayControls value={{ size: 'large', captions: false }} onChange={onChange} />,
15
+ );
16
+ // Radix Tabs activates on mousedown, not click.
17
+ fireEvent.mouseDown(getByTestId('card-size-small'), { button: 0 });
18
+ expect(onChange).toHaveBeenLastCalledWith({ size: 'small', captions: false });
19
+ });
20
+
21
+ test('the captions toggle flips the words and keeps the size, pressed when they are hidden', () => {
22
+ const onChange = mock((_: CardDisplay) => {});
23
+ const { getByTestId, rerender } = render(
24
+ <CardDisplayControls value={{ size: 'medium', captions: true }} onChange={onChange} captionsNoun='film titles' imageNoun='posters' />,
25
+ );
26
+ const toggle = getByTestId('card-captions');
27
+ expect(toggle.getAttribute('aria-pressed')).toBe('false');
28
+ expect(toggle.getAttribute('aria-label')).toBe('Hide film titles — show the posters only');
29
+ fireEvent.click(toggle);
30
+ expect(onChange).toHaveBeenLastCalledWith({ size: 'medium', captions: false });
31
+
32
+ rerender(
33
+ <CardDisplayControls value={{ size: 'medium', captions: false }} onChange={onChange} captionsNoun='film titles' imageNoun='posters' />,
34
+ );
35
+ expect(getByTestId('card-captions').getAttribute('aria-pressed')).toBe('true');
36
+ expect(getByTestId('card-captions').getAttribute('aria-label')).toBe('Show film titles under the posters');
37
+ });
38
+
39
+ test('offers only the sizes asked for, with the labels asked for', () => {
40
+ const { queryByTestId, getByTestId } = render(
41
+ <CardDisplayControls
42
+ value={LARGE_WITH_WORDS}
43
+ onChange={() => {}}
44
+ sizes={['large', 'small']}
45
+ sizeLabels={{ small: 'Tiny' }}
46
+ />,
47
+ );
48
+ expect(queryByTestId('card-size-medium')).toBeNull();
49
+ expect(getByTestId('card-size-large').textContent).toBe('L');
50
+ expect(getByTestId('card-size-small').textContent).toBe('Tiny');
51
+ });
52
+
53
+ test('a disabled reason leaves both controls visible and inert', () => {
54
+ const onChange = mock((_: CardDisplay) => {});
55
+ const { getByTestId } = render(
56
+ <CardDisplayControls
57
+ value={LARGE_WITH_WORDS}
58
+ onChange={onChange}
59
+ sizeDisabledReason='Card size applies to the grid view'
60
+ captionsDisabledReason='Titles are always shown in the list view'
61
+ />,
62
+ );
63
+ const small = getByTestId('card-size-small') as HTMLButtonElement;
64
+ const toggle = getByTestId('card-captions') as HTMLButtonElement;
65
+ expect(small.disabled).toBe(true);
66
+ expect(toggle.disabled).toBe(true);
67
+ fireEvent.mouseDown(small, { button: 0 });
68
+ fireEvent.click(toggle);
69
+ expect(onChange).not.toHaveBeenCalled();
70
+ });
71
+ });
@@ -0,0 +1,120 @@
1
+ import type { ReactNode } from 'react';
2
+ import { cn } from '../lib/cn.js';
3
+ import type { ControlSize } from '../lib/field.js';
4
+ import { IconButton } from './IconButton.js';
5
+ import { SegmentedControl } from './SegmentedControl.js';
6
+ import { Tooltip } from './Tooltip.js';
7
+ import { CARD_SIZES, type CardDisplay, type CardSize } from '../lib/cardDisplay.js';
8
+
9
+ const DEFAULT_SIZE_LABELS: Readonly<Record<CardSize, ReactNode>> = { large: 'L', medium: 'M', small: 'S' };
10
+
11
+ const capitalized = (word: string): string => `${word[0]?.toUpperCase() ?? ''}${word.slice(1)}`;
12
+
13
+ export interface CardDisplayControlsProps {
14
+ value: CardDisplay;
15
+ onChange: (next: CardDisplay) => void;
16
+ /** Which sizes to offer, in order. Default {@link CARD_SIZES}. */
17
+ sizes?: readonly CardSize[];
18
+ /** What each segment says. Default `L` / `M` / `S`. */
19
+ sizeLabels?: Partial<Record<CardSize, ReactNode>>;
20
+ /** What the words under a card are called, lower-case — `"game titles"`. Default `"titles"`. */
21
+ captionsNoun?: string;
22
+ /** What the image is called, lower-case — `"art"`, `"posters"`. Default `"images"`. */
23
+ imageNoun?: string;
24
+ /**
25
+ * Set when the size does not apply (a list view). The segments stay VISIBLE and inert with
26
+ * this on hover — one UI, never a hidden control.
27
+ */
28
+ sizeDisabledReason?: string | null;
29
+ /** The same, for the captions toggle — `"Titles are always shown in the list view"`. */
30
+ captionsDisabledReason?: string | null;
31
+ /** Height on the shared control scale. Default `sm` — this sits in a toolbar. */
32
+ controlSize?: Extract<ControlSize, 'sm' | 'md'>;
33
+ className?: string;
34
+ }
35
+
36
+ /**
37
+ * The S / M / L switch and the captions toggle, side by side. The why, and the model it draws,
38
+ * are in `../lib/cardDisplay.ts`.
39
+ *
40
+ * Controlled: the app owns the state and where it is kept (`useCardDisplay` is the hook for
41
+ * that). The captions toggle is `aria-pressed` when the words are HIDDEN — pressing it is the act
42
+ * of hiding them, and its icon shows the card with or without its lines.
43
+ *
44
+ * Test hooks: `card-size-<size>` on each segment and `card-captions` on the toggle.
45
+ */
46
+ export function CardDisplayControls({
47
+ value,
48
+ onChange,
49
+ sizes = CARD_SIZES,
50
+ sizeLabels,
51
+ captionsNoun = 'titles',
52
+ imageNoun = 'images',
53
+ sizeDisabledReason = null,
54
+ captionsDisabledReason = null,
55
+ controlSize = 'sm',
56
+ className,
57
+ }: CardDisplayControlsProps) {
58
+ const labels = { ...DEFAULT_SIZE_LABELS, ...sizeLabels };
59
+ const { captions } = value;
60
+ const toggle = (
61
+ <IconButton
62
+ size={controlSize}
63
+ variant='ghost'
64
+ disabled={captionsDisabledReason !== null}
65
+ onClick={() => onChange({ ...value, captions: !captions })}
66
+ aria-pressed={!captions}
67
+ data-testid='card-captions'
68
+ label={
69
+ captions
70
+ ? `Hide ${captionsNoun} — show the ${imageNoun} only`
71
+ : `Show ${captionsNoun} under the ${imageNoun}`
72
+ }
73
+ tooltip={captions ? `${capitalized(imageNoun)} only — hide the ${captionsNoun}` : `Show the ${captionsNoun}`}
74
+ >
75
+ <svg
76
+ viewBox='0 0 24 24'
77
+ fill='none'
78
+ stroke='currentColor'
79
+ strokeWidth={2}
80
+ strokeLinecap='round'
81
+ strokeLinejoin='round'
82
+ aria-hidden='true'
83
+ >
84
+ <rect x='4' y='3' width='16' height='12' rx='1.5' />
85
+ {captions ? (
86
+ <>
87
+ <line x1='4' y1='18.5' x2='20' y2='18.5' />
88
+ <line x1='4' y1='21.5' x2='14' y2='21.5' />
89
+ </>
90
+ ) : null}
91
+ </svg>
92
+ </IconButton>
93
+ );
94
+ return (
95
+ <div className={cn('inline-flex items-center gap-1', className)} data-cb-card-display=''>
96
+ <SegmentedControl<CardSize>
97
+ size={controlSize}
98
+ aria-label='Card size'
99
+ value={value.size}
100
+ onChange={(size) => onChange({ ...value, size })}
101
+ options={sizes.map((size) => ({
102
+ value: size,
103
+ label: labels[size],
104
+ disabled: sizeDisabledReason !== null,
105
+ tooltip: sizeDisabledReason ?? `${capitalized(size)} cards`,
106
+ 'data-testid': `card-size-${size}`,
107
+ }))}
108
+ />
109
+ {captionsDisabledReason === null ? (
110
+ toggle
111
+ ) : (
112
+ // A disabled button takes no pointer events, so its own tooltip can never open —
113
+ // the span carries the reason instead (SegmentedControl does the same per segment).
114
+ <Tooltip content={captionsDisabledReason}>
115
+ <span className='inline-flex'>{toggle}</span>
116
+ </Tooltip>
117
+ )}
118
+ </div>
119
+ );
120
+ }
@@ -0,0 +1,131 @@
1
+ import { afterEach, describe, expect, mock, test } from 'bun:test';
2
+ import { act, cleanup, renderHook, waitFor } from '@testing-library/react';
3
+ import type { CardDisplay } from '../lib/cardDisplay.js';
4
+ import { useCardDisplay } from './useCardDisplay.js';
5
+
6
+ afterEach(cleanup);
7
+
8
+ const WAIT = 20;
9
+ const settle = () => new Promise((resolve) => setTimeout(resolve, WAIT * 3));
10
+
11
+ type Save = (display: CardDisplay, options: { keepalive: boolean }) => void | Promise<void>;
12
+ const saver = (impl?: Save) => mock<Save>(impl ?? (() => {}));
13
+
14
+ describe('useCardDisplay', () => {
15
+ test('starts from `initial`, or large cards with their words', () => {
16
+ expect(renderHook(() => useCardDisplay({ save: () => {} })).result.current.value).toEqual({
17
+ size: 'large',
18
+ captions: true,
19
+ });
20
+ const { result } = renderHook(() =>
21
+ useCardDisplay({ save: () => {}, initial: () => ({ size: 'small', captions: false }) }),
22
+ );
23
+ expect(result.current.value).toEqual({ size: 'small', captions: false });
24
+ expect(result.current.ready).toBe(true);
25
+ });
26
+
27
+ test('draws a change at once and keeps only the SETTLED value of a burst, once', async () => {
28
+ const save = saver();
29
+ const { result } = renderHook(() => useCardDisplay({ save, debounceMs: WAIT }));
30
+ act(() => result.current.setValue({ size: 'medium', captions: true }));
31
+ act(() => result.current.setValue({ size: 'small', captions: true }));
32
+ act(() => result.current.setValue({ size: 'small', captions: false }));
33
+ expect(result.current.value).toEqual({ size: 'small', captions: false });
34
+ expect(save).not.toHaveBeenCalled();
35
+ await settle();
36
+ expect(save).toHaveBeenCalledTimes(1);
37
+ expect(save).toHaveBeenLastCalledWith({ size: 'small', captions: false }, { keepalive: false });
38
+ });
39
+
40
+ test('a burst that ends where it started saves nothing', async () => {
41
+ const save = saver();
42
+ const { result } = renderHook(() => useCardDisplay({ save, debounceMs: WAIT }));
43
+ act(() => result.current.setValue({ size: 'large', captions: false }));
44
+ act(() => result.current.setValue({ size: 'large', captions: true }));
45
+ await settle();
46
+ expect(save).not.toHaveBeenCalled();
47
+ });
48
+
49
+ test('adopts the stored choice, and a stored equal value is not written back', async () => {
50
+ const save = saver();
51
+ const { result } = renderHook(() =>
52
+ useCardDisplay({ save, debounceMs: WAIT, load: async () => ({ size: 'medium', captions: false }) }),
53
+ );
54
+ expect(result.current.ready).toBe(false);
55
+ await waitFor(() => expect(result.current.ready).toBe(true));
56
+ expect(result.current.value).toEqual({ size: 'medium', captions: false });
57
+ act(() => result.current.setValue({ size: 'small', captions: false }));
58
+ act(() => result.current.setValue({ size: 'medium', captions: false }));
59
+ await settle();
60
+ expect(save).not.toHaveBeenCalled();
61
+ });
62
+
63
+ test('🔴 a tap made while the stored choice is in flight wins over it', async () => {
64
+ let answer: (value: Partial<CardDisplay>) => void = () => {};
65
+ const save = saver();
66
+ const { result } = renderHook(() =>
67
+ useCardDisplay({
68
+ save,
69
+ debounceMs: WAIT,
70
+ load: () => new Promise<Partial<CardDisplay>>((resolve) => (answer = resolve)),
71
+ }),
72
+ );
73
+ act(() => result.current.setValue({ size: 'small', captions: true }));
74
+ await act(async () => answer({ size: 'medium', captions: false }));
75
+ await waitFor(() => expect(result.current.ready).toBe(true));
76
+ expect(result.current.value).toEqual({ size: 'small', captions: true });
77
+ await settle();
78
+ expect(save).toHaveBeenLastCalledWith({ size: 'small', captions: true }, { keepalive: false });
79
+ });
80
+
81
+ test('a malformed stored value is ignored field by field; a failed read keeps what is drawn', async () => {
82
+ const { result } = renderHook(() =>
83
+ useCardDisplay({ save: () => {}, load: async () => ({ size: 'huge' as never, captions: false }) }),
84
+ );
85
+ await waitFor(() => expect(result.current.value).toEqual({ size: 'large', captions: false }));
86
+
87
+ const failed = renderHook(() =>
88
+ useCardDisplay({ save: () => {}, load: () => Promise.reject(new Error('500')) }),
89
+ );
90
+ await waitFor(() => expect(failed.result.current.ready).toBe(true));
91
+ expect(failed.result.current.value).toEqual({ size: 'large', captions: true });
92
+ });
93
+
94
+ test('does not read until enabled', async () => {
95
+ const load = mock(async () => ({ size: 'small' as const }));
96
+ const { result, rerender } = renderHook(({ on }) => useCardDisplay({ save: () => {}, load, enabled: on }), {
97
+ initialProps: { on: false },
98
+ });
99
+ expect(result.current.ready).toBe(true);
100
+ expect(load).not.toHaveBeenCalled();
101
+ rerender({ on: true });
102
+ await waitFor(() => expect(result.current.value.size).toBe('small'));
103
+ expect(load).toHaveBeenCalledTimes(1);
104
+ });
105
+
106
+ test('🔴 a rejected save is not counted as kept — the same value goes again', async () => {
107
+ let fail = true;
108
+ const save = saver(() => (fail ? Promise.reject(new Error('offline')) : undefined));
109
+ const { result } = renderHook(() => useCardDisplay({ save, debounceMs: WAIT }));
110
+ act(() => result.current.setValue({ size: 'small', captions: true }));
111
+ await settle();
112
+ expect(save).toHaveBeenCalledTimes(1);
113
+ fail = false;
114
+ act(() => result.current.setValue({ size: 'small', captions: true }));
115
+ await settle();
116
+ expect(save).toHaveBeenCalledTimes(2);
117
+ });
118
+
119
+ test('a change still pending when the page hides or the view unmounts is kept, with keepalive', async () => {
120
+ const save = saver();
121
+ const { result, unmount } = renderHook(() => useCardDisplay({ save, debounceMs: 10_000 }));
122
+ act(() => result.current.setValue({ size: 'medium', captions: true }));
123
+ globalThis.dispatchEvent(new Event('pagehide'));
124
+ expect(save).toHaveBeenLastCalledWith({ size: 'medium', captions: true }, { keepalive: true });
125
+
126
+ act(() => result.current.setValue({ size: 'small', captions: true }));
127
+ unmount();
128
+ expect(save).toHaveBeenLastCalledWith({ size: 'small', captions: true }, { keepalive: true });
129
+ expect(save).toHaveBeenCalledTimes(2);
130
+ });
131
+ });
@@ -0,0 +1,142 @@
1
+ import { useCallback, useEffect, useRef, useState } from 'react';
2
+ import { type CardDisplay, DEFAULT_CARD_DISPLAY, isCardSize } from '../lib/cardDisplay.js';
3
+
4
+ export interface UseCardDisplayOptions {
5
+ /**
6
+ * What to draw on the first frame — a synchronous read (the device's `localStorage`) or the
7
+ * default. Read once. Default {@link DEFAULT_CARD_DISPLAY}.
8
+ */
9
+ initial?: CardDisplay | (() => CardDisplay);
10
+ /**
11
+ * Keep the choice. Called with the SETTLED value after `debounceMs` of quiet, never for a value
12
+ * equal to the last one kept or loaded — so flipping a toggle and back costs nothing. `keepalive`
13
+ * is true when the page is going away, for a `fetch(…, { keepalive })`. A rejected save is
14
+ * retried with the next change.
15
+ */
16
+ save: (display: CardDisplay, options: { keepalive: boolean }) => void | Promise<void>;
17
+ /**
18
+ * A stored choice to adopt once — the server's, which follows the person to every device.
19
+ * 🔴 A change made while this is in flight WINS: the stored value is older than the hand.
20
+ * A rejection or `null` keeps what is drawn.
21
+ */
22
+ load?: () => Promise<Partial<CardDisplay> | null>;
23
+ /** Off until the session is known — a signed-out read is a wasted 401. Default true. */
24
+ enabled?: boolean;
25
+ /** How long the choice must hold still before it is kept. Default 800 ms. */
26
+ debounceMs?: number;
27
+ }
28
+
29
+ export interface UseCardDisplayResult {
30
+ value: CardDisplay;
31
+ /** Draw it now; keep it once it settles. */
32
+ setValue: (next: CardDisplay) => void;
33
+ /** False until `load` has answered (true at once without one). */
34
+ ready: boolean;
35
+ }
36
+
37
+ const same = (a: CardDisplay, b: CardDisplay): boolean => a.size === b.size && a.captions === b.captions;
38
+
39
+ /** A partial stored value laid over what is drawn; anything malformed is ignored, field by field. */
40
+ const merged = (base: CardDisplay, stored: Partial<CardDisplay>): CardDisplay => ({
41
+ size: isCardSize(stored.size) ? stored.size : base.size,
42
+ captions: typeof stored.captions === 'boolean' ? stored.captions : base.captions,
43
+ });
44
+
45
+ /**
46
+ * The state behind {@link CardDisplayControls}, and where it is kept — debounced.
47
+ *
48
+ * Owner, flix, 2026-09-28: *"persist the setting to the db, with a slight debounce in case the
49
+ * user is toggling them just to test them and hasn't settled on one yet."* So a burst of taps is
50
+ * ONE save carrying the last value, and a burst that ends where it started is none.
51
+ *
52
+ * Where the value lives is the app's: flix keeps it per account on its server, roms per device
53
+ * in `localStorage`. Both are the same two callbacks.
54
+ *
55
+ * ```tsx
56
+ * const cards = useCardDisplay({ initial: readLocal, load: api.loadCards, save: api.saveCards });
57
+ * <CardDisplayControls value={cards.value} onChange={cards.setValue} captionsNoun='titles' />
58
+ * ```
59
+ */
60
+ export function useCardDisplay(options: UseCardDisplayOptions): UseCardDisplayResult {
61
+ const { enabled = true, debounceMs = 800 } = options;
62
+ const [value, setState] = useState<CardDisplay>(() => {
63
+ const initial = options.initial ?? DEFAULT_CARD_DISPLAY;
64
+ return typeof initial === 'function' ? initial() : initial;
65
+ });
66
+ const [ready, setReady] = useState(!(enabled && options.load));
67
+
68
+ // The callbacks are read through a ref so an inline arrow at the call site does not restart
69
+ // the load or drop a pending save on every render.
70
+ const callbacks = useRef(options);
71
+ callbacks.current = options;
72
+ const kept = useRef<CardDisplay>(value);
73
+ const pending = useRef<CardDisplay | null>(null);
74
+ const touched = useRef(false);
75
+ const timer = useRef<ReturnType<typeof setTimeout> | null>(null);
76
+
77
+ const flush = useCallback((keepalive: boolean) => {
78
+ if (timer.current) clearTimeout(timer.current);
79
+ timer.current = null;
80
+ const next = pending.current;
81
+ pending.current = null;
82
+ if (!next || same(next, kept.current)) return;
83
+ const previous = kept.current;
84
+ kept.current = next;
85
+ const forget = () => {
86
+ // Not kept after all: the next change (or this one again) must be sent.
87
+ if (kept.current === next) kept.current = previous;
88
+ };
89
+ try {
90
+ void Promise.resolve(callbacks.current.save(next, { keepalive })).catch(forget);
91
+ } catch {
92
+ forget();
93
+ }
94
+ }, []);
95
+
96
+ const setValue = useCallback(
97
+ (next: CardDisplay) => {
98
+ touched.current = true;
99
+ setState(next);
100
+ pending.current = next;
101
+ if (timer.current) clearTimeout(timer.current);
102
+ timer.current = setTimeout(() => flush(false), debounceMs);
103
+ },
104
+ [debounceMs, flush],
105
+ );
106
+
107
+ useEffect(() => {
108
+ const load = callbacks.current.load;
109
+ if (!enabled || !load) return;
110
+ let live = true;
111
+ load()
112
+ .then((stored) => {
113
+ if (!live || !stored || touched.current) return;
114
+ setState((drawn) => {
115
+ const next = merged(drawn, stored);
116
+ kept.current = next;
117
+ return next;
118
+ });
119
+ })
120
+ .catch(() => {
121
+ // A choice that cannot be read is the one already drawn.
122
+ })
123
+ .finally(() => {
124
+ if (live) setReady(true);
125
+ });
126
+ return () => {
127
+ live = false;
128
+ };
129
+ }, [enabled]);
130
+
131
+ // A tap in the last `debounceMs` before the tab closes or the view unmounts is still kept.
132
+ useEffect(() => {
133
+ const onHide = () => flush(true);
134
+ globalThis.addEventListener?.('pagehide', onHide);
135
+ return () => {
136
+ globalThis.removeEventListener?.('pagehide', onHide);
137
+ flush(true);
138
+ };
139
+ }, [flush]);
140
+
141
+ return { value, setValue, ready };
142
+ }
@@ -120,6 +120,14 @@ export {
120
120
  } from './components/ChartTablePanel.js';
121
121
  export * from './companion-link/index.js';
122
122
  export { CardTapTarget, type CardTapTargetProps } from './components/CardTapTarget.js';
123
+ export { CardDisplayControls, type CardDisplayControlsProps } from './components/CardDisplayControls.js';
124
+ export {
125
+ CARD_SIZES,
126
+ type CardDisplay,
127
+ type CardSize,
128
+ DEFAULT_CARD_DISPLAY,
129
+ isCardSize,
130
+ } from './lib/cardDisplay.js';
123
131
  export { hasSelectionWithin } from './lib/textSelection.js';
124
132
  export {
125
133
  ProblemDetailView,
@@ -637,6 +645,7 @@ export {
637
645
  } from './hooks/useCrossContainerDrag.js';
638
646
  export { useDebouncedCallback } from './hooks/useDebouncedCallback.js';
639
647
  export { useDebouncedValue } from './hooks/useDebouncedValue.js';
648
+ export { type UseCardDisplayOptions, type UseCardDisplayResult, useCardDisplay } from './hooks/useCardDisplay.js';
640
649
  export {
641
650
  type UseDiscardGuardOptions,
642
651
  type UseDiscardGuardResult,
@@ -0,0 +1,29 @@
1
+ /**
2
+ * How a card grid is drawn: how big each card is, and whether the words under the image show.
3
+ *
4
+ * Owner, roms, 2026-09-27: *"Smaller cards could be half that size and maybe a quarter … so the
5
+ * user can scroll faster and see more cards at once"*, and *"a toggle to hide the game info so
6
+ * only the game image is visible"*. Then flix asked for the same pair (2026-09-28), which is why
7
+ * it lives here: two grids with their own copy of an S/M/L switch and a titles toggle drift the
8
+ * first time one of them changes a label or a hit target.
9
+ *
10
+ * 🔴 The SIZE is a word, not a width. What `small` means in pixels is the app's — roms draws box
11
+ * art at 10/7/5 rem, flix draws 2:3 posters — so this names the choice and each grid maps it onto
12
+ * its own column width. A number here would be one app's layout leaking into the other's.
13
+ */
14
+ export type CardSize = 'large' | 'medium' | 'small';
15
+
16
+ /** Largest first — the order the switch reads left to right. */
17
+ export const CARD_SIZES: readonly CardSize[] = ['large', 'medium', 'small'];
18
+
19
+ export const isCardSize = (value: unknown): value is CardSize =>
20
+ value === 'large' || value === 'medium' || value === 'small';
21
+
22
+ /** The whole choice. `captions` is whether the words under each image are drawn. */
23
+ export interface CardDisplay {
24
+ size: CardSize;
25
+ captions: boolean;
26
+ }
27
+
28
+ /** Large cards with their words — what a grid looks like before anyone has chosen. */
29
+ export const DEFAULT_CARD_DISPLAY: CardDisplay = { size: 'large', captions: true };