gui/App

The SPA shell: a slim brand top-bar (logo + wordmark + a Generate / Gallery / Single view switch

  • a Providers dropdown (image + text providers, each with its BYOK key) + a provider-settings gear + NSFW toggle) over the three top-level views and a privacy footer.

All three views (Home, Gallery, SingleView) stay mounted the whole session and are shown one at a time via a CSS class — so each keeps its full state (and scroll position) when you switch tabs, with no manual save/restore. The shared bits they coordinate on — the saved-image feed, the gallery search query, and the image open in the single view — live here in App. Clicking a generated image (in Home) or a gallery thumbnail opens it in the single view; Back returns to wherever you came from, intact. A shared link (#s=…) seeds settings on load.

The online build (VITE_ONLINE) is a stripped variant: Generate works, but the Gallery/Single tabs, the local image providers, and the NSFW toggle are shown disabled (greyed, with a tooltip + a link to the full desktop version) because they need a local machine; NSFW is also forced off. See lib/online.js.

Description:
  • The SPA shell: a slim brand top-bar (logo + wordmark + a Generate / Gallery / Single view switch

    • a Providers dropdown (image + text providers, each with its BYOK key) + a provider-settings gear + NSFW toggle) over the three top-level views and a privacy footer.

    All three views (Home, Gallery, SingleView) stay mounted the whole session and are shown one at a time via a CSS class — so each keeps its full state (and scroll position) when you switch tabs, with no manual save/restore. The shared bits they coordinate on — the saved-image feed, the gallery search query, and the image open in the single view — live here in App. Clicking a generated image (in Home) or a gallery thumbnail opens it in the single view; Back returns to wherever you came from, intact. A shared link (#s=…) seeds settings on load.

    The online build (VITE_ONLINE) is a stripped variant: Generate works, but the Gallery/Single tabs, the local image providers, and the NSFW toggle are shown disabled (greyed, with a tooltip + a link to the full desktop version) because they need a local machine; NSFW is also forced off. See lib/online.js.

Source:

(require("gui/App"))() → {JSX.Element}

Description:
  • The application root: owns settings and establishes the i18n boundary so the whole shell (and its localized strings) renders under a configured provider.

Source:
Returns:
Type
JSX.Element

Methods

(inner) AppShell(props) → {JSX.Element}

Description:
  • The application shell component (top bar + the views + footer).

Source:
Parameters:
Name Type Description
props object
Properties
Name Type Description
settings object

The current settings.

setSettings function

Update the settings.

Returns:
Type
JSX.Element

(inner) HydratedApp() → {JSX.Element}

Description:
  • The app once the storage cache is hydrated: owns settings and establishes the i18n boundary.

Source:
Returns:
Type
JSX.Element