@pieai/swimmer-ui-kit 2.11.0 → 2.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,20 @@ Format: [Keep a Changelog](https://keepachangelog.com); versioning: semver.
5
5
 
6
6
  ## Unreleased
7
7
 
8
+ ## 2.12.0 — 2026-09-29
9
+
10
+ - Add optional `useGameCardOrientation` and the bounded `GameCardTilt` input
11
+ on `GameCollectibleCard`. One explicitly enabled hook serves the active card
12
+ in an album. Mounting does not request permission or subscribe to a sensor.
13
+ Secure context, denial, late permission, page visibility and reduced motion
14
+ have explicit state and cleanup; no sensor samples or consent are stored.
15
+ - Preserve pointer/keyboard flipping and all omitted-prop behavior. A pointer
16
+ on the card wins over device tilt; reduced motion zeros both immediately.
17
+ Drag classification still applies under reduced motion, and a keyboard or
18
+ assistive click is not suppressed by a stale pointer gesture.
19
+ - Add an opt-in Storybook example and isolated browser sensor-contract tests.
20
+ Synthetic sensor/permission cases are not physical-device permission evidence.
21
+
8
22
  ## 2.11.0 — 2026-09-28
9
23
 
10
24
  Minor: University's V7 opening screen and card album, and the liquid fix
package/dist/index.d.ts CHANGED
@@ -1431,6 +1431,14 @@ export declare interface GameCardFanProps {
1431
1431
  label: string;
1432
1432
  }
1433
1433
 
1434
+ export declare type GameCardOrientationStatus = 'unavailable' | 'off' | 'requesting' | 'enabled' | 'denied';
1435
+
1436
+ /** Normalized card tilt; zero is level, -1 and 1 are the bounded extremes. */
1437
+ export declare interface GameCardTilt {
1438
+ readonly x: number;
1439
+ readonly y: number;
1440
+ }
1441
+
1434
1442
  export declare function GameCheckbox({ className, label, ...props }: GameCheckboxProps): ReactNode;
1435
1443
 
1436
1444
  export declare interface GameCheckboxProps extends Pick<InputHTMLAttributes<HTMLInputElement>, 'checked' | 'defaultChecked' | 'disabled' | 'name' | 'onChange' | 'required' | 'value'> {
@@ -1469,7 +1477,7 @@ export declare interface GameCollapsiblePanelProps extends Omit<HTMLAttributes<H
1469
1477
  * Under reduced motion the card does not tilt, shine or spin its light, and a
1470
1478
  * flip is instant.
1471
1479
  */
1472
- export declare function GameCollectibleCard({ rarity, title, caption, setLabel, rarityLabel, art, pips, sticker, back, label, faceDown, defaultFaceDown, onFlip, spotlight, sound, className, }: GameCollectibleCardProps): ReactNode;
1480
+ export declare function GameCollectibleCard({ rarity, title, caption, setLabel, rarityLabel, art, pips, sticker, back, label, faceDown, defaultFaceDown, onFlip, spotlight, sound, tilt: externalTilt, className, }: GameCollectibleCardProps): ReactNode;
1473
1481
 
1474
1482
  export declare interface GameCollectibleCardProps {
1475
1483
  readonly rarity: GameCollectibleCardRarity;
@@ -1503,6 +1511,9 @@ export declare interface GameCollectibleCardProps {
1503
1511
  readonly spotlight?: boolean;
1504
1512
  /** Play a synthesized flip sound; browsers allow it only after the page has been tapped. */
1505
1513
  readonly sound?: boolean;
1514
+ /** Optional normalized tilt from one explicitly enabled sensor owner. A
1515
+ * pointer on this card takes precedence; reduced motion always wins. */
1516
+ readonly tilt?: GameCardTilt | null;
1506
1517
  readonly className?: string;
1507
1518
  }
1508
1519
 
@@ -2893,6 +2904,19 @@ declare type Transition = TransitionPreset | SpringConfig | {
2893
2904
 
2894
2905
  declare type TransitionPreset = 'snappy' | 'smooth' | 'bouncy' | 'wobbly';
2895
2906
 
2907
+ /** One optional sensor owner for an album or preview, NOT one per card.
2908
+ * Call enable from a real user action, then pass tilt only to the active card.
2909
+ * No permission, storage, microphone, motion sensor or network request occurs
2910
+ * on mount. Reduced motion cancels consent in flight and requires a new action;
2911
+ * hiding the page pauses samples and recalibrates on return. */
2912
+ export declare function useGameCardOrientation(): {
2913
+ status: GameCardOrientationStatus;
2914
+ tilt: GameCardTilt | null;
2915
+ enable: () => Promise<boolean>;
2916
+ disable: () => void;
2917
+ reducedMotion: boolean;
2918
+ };
2919
+
2896
2920
  /**
2897
2921
  * Whether a waiting screen should appear yet: only once `waiting` has stayed
2898
2922
  * true for `delayMs` without a break. A scene change that finishes inside the