Skip to content

Documentation / @expofp/schema / KioskSchema

Variable: KioskSchema ​

ts
const KioskSchema: ZodObject<{
  heading: ZodOptional<ZodNumber>;
  iconSizePercent: ZodOptional<ZodNumber>;
  lat: ZodOptional<ZodNumber>;
  lng: ZodOptional<ZodNumber>;
  mapBearingDegrees: ZodOptional<ZodNumber>;
  mapCenterLat: ZodOptional<ZodNumber>;
  mapCenterLng: ZodOptional<ZodNumber>;
  mapCenterX: ZodOptional<ZodNumber>;
  mapCenterY: ZodOptional<ZodNumber>;
  mapInitialPtScale: ZodOptional<ZodNumber>;
  mapPitch: ZodOptional<ZodNumber>;
  mapPitchDegrees: ZodOptional<ZodNumber>;
  mapPtScale: ZodOptional<ZodNumber>;
  mapRollDegrees: ZodOptional<ZodNumber>;
  mapZoom: ZodOptional<ZodNumber>;
  uiScale: ZodOptional<ZodNumber>;
  x: ZodOptional<ZodNumber>;
  y: ZodOptional<ZodNumber>;
  z: ZodOptional<ZodNullable<ZodUnion<readonly [ZodString, ZodNumber]>>>;
}, $strip>;

The kiosk anchor — the config.kiosk node: where the physical kiosk device stands and how its camera is framed. Applied at boot when the device has no locally-saved kiosk (the on-device SetKiosk flow persists to localStorage and wins over the config; the localStorage['kiosk']='0' device switch disables both). ?kiosk=1/0 keeps toggling kiosk MODE — the mode and the anchor are independent inputs.

The legacy kiosk_x/y/z params are a narrower, per-navigation channel for one purpose: a kiosk's route QR code hands the scanning phone the anchor POSITION so the route's missing starting point resolves there. The framing fields below travel only in this node, never through those params. Note that the scanning phone does end up in kiosk mode and stays there — a pre-existing quirk of how the anchor is stored, not an intended property of the channel; packages/floorplan/src/components/Kiosk/kioskUrlParam.ts traces it.