release: sync main with dev (about editor, journal template, icon cleanup) (#449)

Brings `main` up to `dev` after #448 realigned the two branches.

`main` had #431 (portfolio features) but was missing everything that
landed on `dev` since:

- #443 — journal sample story ships as a template, not a live entry
- #445 — last emojis in the public frontend replaced with SVG icons
- #446 — About page toggle + content editor in the admin (@lancetm714's
work, rebased)
- #448 — the merge of `main` into `dev`, resolving the `Icons.tsx` split
and porting `IconEyeOff` into the shared icon file

After this merge both branches carry the same tree. CI on #448
(type-check + tests) passed on the merged state.

---------

Co-authored-by: ralksta <ralksta@users.noreply.github.com>
Co-authored-by: lancetm714 <108419425+lancetm714@users.noreply.github.com>
This commit is contained in:
Ralksta
2026-08-14 21:19:54 +02:00
committed by GitHub
parent 84c7eeef40
commit 6eda34cc50
18 changed files with 943 additions and 526 deletions

View File

@@ -15,6 +15,7 @@
'use client';
import React, { useState, useEffect, useCallback, useLayoutEffect } from 'react';
import { IconPalette, IconX } from './Icons';
const PRESETS = ['studio', 'studio-modern', 'minimal', 'editorial', 'classic', 'noir', 'monograph'];
const FRAMES = ['none', 'passepartout', 'shadow'];
@@ -226,7 +227,11 @@ exifOnHover: ${exifOnHover}`;
boxShadow: '0 4px 24px rgba(0,0,0,0.4)',
}}
>
{open ? '✕' : '🎨'}
{open ? (
<IconX size={18} aria-hidden="true" />
) : (
<IconPalette size={18} aria-hidden="true" />
)}
</button>
{/* ── Panel — anchored bottom-left ────────── */}
@@ -260,7 +265,7 @@ exifOnHover: ${exifOnHover}`;
}}
>
<span style={{ fontWeight: 700, fontSize: 13, letterSpacing: '0.02em' }}>
🎨 Theme Builder
<IconPalette size={13} aria-hidden="true" /> Theme Builder
</span>
<span
style={{