122 lines
3.5 KiB
Markdown
122 lines
3.5 KiB
Markdown
|
|
# Theming
|
||
|
|
|
||
|
|
Control the visual identity of your gallery from `content/gallery.yaml`. Choose a built-in preset or customize individual properties — no CSS editing required.
|
||
|
|
|
||
|
|
## Quick Start
|
||
|
|
|
||
|
|
Add a single line to your `gallery.yaml`:
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
theme: minimal
|
||
|
|
```
|
||
|
|
|
||
|
|
That's it. Your entire gallery switches to the minimal theme.
|
||
|
|
|
||
|
|
## Built-in Presets
|
||
|
|
|
||
|
|
| Preset | Look | Accent | Fonts | Corners | Frame | Grain |
|
||
|
|
|--------|------|--------|-------|---------|-------|-------|
|
||
|
|
| **studio** | Leica-inspired, editorial | 🔴 `#e60012` | Playfair Display + DM Sans | Sharp | Passepartout | ✓ |
|
||
|
|
| **minimal** | Clean, no distractions | ⚪ `#666666` | Inter | Sharp | None | ✗ |
|
||
|
|
| **editorial** | Magazine feel | ⚫ `#1a1a1a` | Libre Baskerville + Source Sans | Slight | Shadow | ✗ |
|
||
|
|
| **classic** | Warm, inviting | 🟡 `#8b6914` | Cormorant Garamond + Lato | Rounded | None | ✗ |
|
||
|
|
|
||
|
|
Default is `studio` if no theme is specified.
|
||
|
|
|
||
|
|
## Custom Theme
|
||
|
|
|
||
|
|
Start from any preset and override individual properties:
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
theme:
|
||
|
|
preset: studio # base preset to extend (default: studio)
|
||
|
|
accent: "#2563eb" # brand/accent color (any hex)
|
||
|
|
fonts:
|
||
|
|
heading: "Inter" # Google Fonts name for headings
|
||
|
|
body: "Inter" # body text
|
||
|
|
caption: "JetBrains Mono" # EXIF captions
|
||
|
|
radius: 8 # border-radius in px (0 = sharp corners)
|
||
|
|
photoFrame: none # "none" | "passepartout" | "shadow"
|
||
|
|
grain: false # film grain overlay on photos
|
||
|
|
headerDot: false # accent-colored dot in the nav bar
|
||
|
|
heroStyle: split # "split" | "fullbleed" | "minimal"
|
||
|
|
```
|
||
|
|
|
||
|
|
All properties are optional — omitted values fall back to the preset defaults.
|
||
|
|
|
||
|
|
## Properties Reference
|
||
|
|
|
||
|
|
### `accent`
|
||
|
|
|
||
|
|
The brand color used for hover effects, navigation highlights, the header dot, and OG social preview images.
|
||
|
|
|
||
|
|
### `fonts`
|
||
|
|
|
||
|
|
Google Fonts names. Fonts are loaded automatically — just use the name as it appears on [fonts.google.com](https://fonts.google.com). Three font slots:
|
||
|
|
|
||
|
|
- **heading** — album titles, hero title, section labels
|
||
|
|
- **body** — navigation, descriptions, UI text
|
||
|
|
- **caption** — EXIF metadata, photo captions
|
||
|
|
|
||
|
|
### `radius`
|
||
|
|
|
||
|
|
Border radius in pixels applied to photo grid items and album cards:
|
||
|
|
- `0` — sharp, editorial corners
|
||
|
|
- `4-8` — subtle rounding
|
||
|
|
- `12+` — soft, modern feel
|
||
|
|
|
||
|
|
### `photoFrame`
|
||
|
|
|
||
|
|
How photos are framed in the grid:
|
||
|
|
|
||
|
|
- **`none`** — photos fill the grid cell directly
|
||
|
|
- **`passepartout`** — museum-style mat border around each photo with print-style EXIF captions below
|
||
|
|
- **`shadow`** — subtle drop shadow behind each photo
|
||
|
|
|
||
|
|
### `grain`
|
||
|
|
|
||
|
|
When `true`, a subtle film grain texture overlays each photo in the grid. Adds an analog, filmic character.
|
||
|
|
|
||
|
|
### `headerDot`
|
||
|
|
|
||
|
|
When `true`, shows a small accent-colored dot in the navigation bar (inspired by the Leica red dot).
|
||
|
|
|
||
|
|
### `heroStyle`
|
||
|
|
|
||
|
|
Controls the homepage hero layout:
|
||
|
|
- **`split`** — title/nav on the left, hero image on the right (default)
|
||
|
|
- **`fullbleed`** — hero image fills the entire viewport
|
||
|
|
- **`minimal`** — text-only, no hero image
|
||
|
|
|
||
|
|
## Examples
|
||
|
|
|
||
|
|
### Minimal portfolio
|
||
|
|
```yaml
|
||
|
|
theme:
|
||
|
|
preset: minimal
|
||
|
|
accent: "#0066cc"
|
||
|
|
fonts:
|
||
|
|
heading: "Outfit"
|
||
|
|
body: "Outfit"
|
||
|
|
```
|
||
|
|
|
||
|
|
### Film photography blog
|
||
|
|
```yaml
|
||
|
|
theme:
|
||
|
|
preset: studio
|
||
|
|
accent: "#d4a017"
|
||
|
|
grain: true
|
||
|
|
photoFrame: passepartout
|
||
|
|
```
|
||
|
|
|
||
|
|
### Modern magazine
|
||
|
|
```yaml
|
||
|
|
theme:
|
||
|
|
preset: editorial
|
||
|
|
radius: 12
|
||
|
|
fonts:
|
||
|
|
heading: "Fraunces"
|
||
|
|
body: "Inter"
|
||
|
|
caption: "IBM Plex Mono"
|
||
|
|
```
|