Skip to content

Lightbox settings for new controls #121

Description

@Darkkal

Parent Issue

Part of #74 — More controls for media in lightbox

Summary

Add new lightbox-specific settings to the existing /settings page under a new "Lightbox" section on the App Settings tab, placed after "Playback & Media". All other sub-issues in #74 depend on these settings.

New AppSettings Fields

// Added to AppSettings in src/types/settings.ts

// Lightbox: Fit & Zoom
lightboxFitMode: "fitBoth" | "fitWidth" | "fitHeight";
lightboxZoomMin: number;   // Minimum zoom %, e.g. 25
lightboxZoomMax: number;   // Maximum zoom %, e.g. 500
lightboxZoomStep: number;  // Increment per +/- click, e.g. 25

// Lightbox: Controls Visibility
lightboxAutoHideControls: boolean;
lightboxAutoHideDelay: number;  // Seconds before auto-hide, e.g. 3

Proposed Defaults

Setting Default Range / Options
lightboxFitMode "fitBoth" "fitBoth" | "fitWidth" | "fitHeight"
lightboxZoomMin 25 10–100
lightboxZoomMax 500 100–1000
lightboxZoomStep 25 5–100
lightboxAutoHideControls false boolean
lightboxAutoHideDelay 3 1–30 (seconds)

Settings UI

Uses the same UI patterns as existing settings: dropdowns for fit mode, number inputs with min/max validation for zoom bounds and timer, toggle switch for auto-hide (delay input disabled when auto-hide is off).

Acceptance Criteria

  • New fields added to AppSettings interface and DEFAULT_SETTINGS
  • Settings page renders a "Lightbox" section with all new controls
  • Fit mode dropdown with 3 options
  • Zoom min/max/step number inputs with range validation
  • Auto-hide toggle + delay input (delay disabled when auto-hide is off)
  • Settings persist via settings.json and are consumed by Lightbox.tsx
  • Schema evolution: new fields gracefully merge with existing settings.json via existing shallow-merge logic in getSettings()

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions