services/config/config-schema.jsjavascript
/**
 * Declares every kiosk/device config value the app understands. Values come
 * from URL params (source "param", read live by useConfig in config.jsx and
 * kept alive across navigation), each with type, default and a German
 * description shown in admin/debug contexts.
 *
 * @type {Array<{key: string, source: string, name: string, type: string, default: *, min: number, description: string}>}
 */
export const CONFIG_SCHEMA = [
  {
    key: "screensaverTimeout",
    source: "param",
    name: "screensaverTimeout",
    type: "number",
    default: 180,
    min: 0,
    description: "Sekunden ohne Interaktion, bevor der Screensaver startet.",
  },
  {
    key: "screensaverFadeDuration",
    source: "param",
    name: "screensaverFadeDuration",
    type: "number",
    default: 1000,
    min: 0,
    description: "Dauer der Ein-/Ausblendanimation des Screensavers in Millisekunden.",
  },
  {
    key: "deviceType",
    source: "param",
    name: "deviceType",
    type: "string",
    default: "default",
    description:
      'Erzwingt die Display-Orientierung dieses Kiosks unabhängig von der Route: "landscape" ' +
      'oder "portrait" überschreiben die in PRESENTATION_MODES (presentationModes.js) hinterlegte ' +
      'Vorgabe der aktuellen App, "default" übernimmt sie unverändert. Ausgewertet von ' +
      "useRequiredOrientation (services/orientation.js), das RotateOverlay steuert.",
  },
  {
    key: "defaultMode",
    source: "param",
    name: "defaultMode",
    type: "string",
    default: "all",
    description:
      'Wählt, welcher Screensaver (content.screensavers, siehe Screensaver.jsx) beim Leerlauf gezeigt wird - einer der Modus-Keys aus src/services/presentationModes.js (z.B. "value-partnership").',
  },
  {
    key: "contentFile",
    source: "param",
    name: "contentFile",
    type: "string",
    default: null,
    description:
      "Erzwingt einen bestimmten Pfad zur content.json (statt der Datei, die ContentProvider anhand der aktuellen Route lädt, siehe src/services/presentationModes.js).",
  },
];