@@ -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
322363export function ThemeQuickPresets ( { theme, onThemeChange } : ThemeQuickPresetsProps ) : ReactElement {
0 commit comments