Skip to content

Commit 6501422

Browse files
committed
feat(ui): add gruvbox and highcontrast theme icons
1 parent 5d9aa92 commit 6501422

1 file changed

Lines changed: 42 additions & 1 deletion

File tree

app/customize/components/ThemeQuickPresets.tsx

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,46 @@ function IconSynthwave({ bg, text, accent }: IC): ReactElement {
305305
);
306306
}
307307

308-
const ICON_MAP: Record<string, (c: IC) => ReactElement> = {
308+
function IconGruvbox({ text, accent }: IC): ReactElement {
309+
return (
310+
<svg width="22" height="22" viewBox="0 0 28 28" fill="none" aria-hidden="true">
311+
{/* lantern body */}
312+
<rect x="10" y="13" width="8" height="10" rx="1.5" fill={text} opacity="0.75" />
313+
{/* lantern top cap */}
314+
<rect x="9" y="12" width="10" height="2.5" rx="1" fill={text} opacity="0.85" />
315+
{/* handle */}
316+
<path
317+
d="M12 12 Q14 6 16 12"
318+
stroke={text}
319+
strokeWidth="1.4"
320+
strokeLinecap="round"
321+
fill="none"
322+
opacity="0.6"
323+
/>
324+
{/* warm glow */}
325+
<ellipse cx="14" cy="18" rx="2.8" ry="3.5" fill={accent} opacity="0.85" />
326+
{/* flame core */}
327+
<path d="M14 15 Q12.5 18 14 20 Q15.5 18 14 15 Z" fill={accent} opacity="0.95" />
328+
</svg>
329+
);
330+
}
331+
332+
function IconHighcontrast({ text, accent }: IC): ReactElement {
333+
return (
334+
<svg width="22" height="22" viewBox="0 0 28 28" fill="none" aria-hidden="true">
335+
{/* outer eye shape */}
336+
<path d="M2 14 C6 6 22 6 26 14 C22 22 6 22 2 14 Z" fill={accent} opacity="0.88" />
337+
{/* iris */}
338+
<circle cx="14" cy="14" r="5" fill={text} opacity="0.9" />
339+
{/* pupil */}
340+
<circle cx="14" cy="14" r="2.2" fill="#000" opacity="0.95" />
341+
{/* catchlight */}
342+
<circle cx="15.8" cy="12.5" r="1.2" fill="#fff" opacity="0.85" />
343+
</svg>
344+
);
345+
}
346+
347+
const ICON_MAP: Record<ThemeKey, (c: IC) => ReactElement> = {
309348
dark: (c) => <IconDark {...c} />,
310349
light: (c) => <IconLight {...c} />,
311350
neon: (c) => <IconNeon {...c} />,
@@ -317,6 +356,8 @@ const ICON_MAP: Record<string, (c: IC) => ReactElement> = {
317356
rose: (c) => <IconRose {...c} />,
318357
nord: (c) => <IconNord {...c} />,
319358
synthwave: (c) => <IconSynthwave {...c} />,
359+
gruvbox: (c) => <IconGruvbox {...c} />,
360+
highcontrast: (c) => <IconHighcontrast {...c} />,
320361
};
321362

322363
export function ThemeQuickPresets({ theme, onThemeChange }: ThemeQuickPresetsProps): ReactElement {

0 commit comments

Comments
 (0)