Skip to content

Commit 7595218

Browse files
committed
feat: Hellenic Mode.
1 parent 7c79fe2 commit 7595218

File tree

6 files changed

+73
-3
lines changed

6 files changed

+73
-3
lines changed

src/components/CommandPalette.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ const CommandPalette = ({isOpen, setIsOpen, openGenericModal, toggleDigitalRain}
6262
isCyberpunk, toggleCyberpunk,
6363
isGameboy, toggleGameboy,
6464
isComic, toggleComic,
65-
isSketchbook, toggleSketchbook
65+
isSketchbook, toggleSketchbook,
66+
isHellenic, toggleHellenic
6667
} = useVisualSettings();
6768

6869
const filteredItems = filterItems(items, searchTerm);
@@ -277,6 +278,14 @@ const CommandPalette = ({isOpen, setIsOpen, openGenericModal, toggleDigitalRain}
277278
duration: 2000
278279
});
279280
break;
281+
case 'toggleHellenicMode':
282+
toggleHellenic();
283+
addToast({
284+
title: !isHellenic ? 'Hellenic Mode On' : 'Hellenic Mode Off',
285+
message: !isHellenic ? 'Welcome to Olympus.' : 'Leaving the Agora.',
286+
duration: 2000
287+
});
288+
break;
280289
case 'showTime': {
281290
openGenericModal('Current Time', <LiveClock/>);
282291
break;

src/context/VisualSettingsContext.js

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export const VisualSettingsProvider = ({children}) => {
2121
const [isGameboy, setIsGameboy] = usePersistentState('is-gameboy', false);
2222
const [isComic, setIsComic] = usePersistentState('is-comic', false);
2323
const [isSketchbook, setIsSketchbook] = usePersistentState('is-sketchbook', false);
24+
const [isHellenic, setIsHellenic] = usePersistentState('is-hellenic', false);
2425

2526
useEffect(() => {
2627
if (isInverted) {
@@ -126,6 +127,14 @@ export const VisualSettingsProvider = ({children}) => {
126127
}
127128
}, [isSketchbook]);
128129

130+
useEffect(() => {
131+
if (isHellenic) {
132+
document.body.classList.add('hellenic-mode');
133+
} else {
134+
document.body.classList.remove('hellenic-mode');
135+
}
136+
}, [isHellenic]);
137+
129138
const toggleInvert = () => setIsInverted(prev => !prev);
130139
const toggleRetro = () => setIsRetro(prev => !prev);
131140
const toggleParty = () => setIsParty(prev => !prev);
@@ -139,6 +148,7 @@ export const VisualSettingsProvider = ({children}) => {
139148
const toggleGameboy = () => setIsGameboy(prev => !prev);
140149
const toggleComic = () => setIsComic(prev => !prev);
141150
const toggleSketchbook = () => setIsSketchbook(prev => !prev);
151+
const toggleHellenic = () => setIsHellenic(prev => !prev);
142152

143153
return (
144154
<VisualSettingsContext.Provider value={{
@@ -154,7 +164,8 @@ export const VisualSettingsProvider = ({children}) => {
154164
isCyberpunk, toggleCyberpunk,
155165
isGameboy, toggleGameboy,
156166
isComic, toggleComic,
157-
isSketchbook, toggleSketchbook
167+
isSketchbook, toggleSketchbook,
168+
isHellenic, toggleHellenic
158169
}}>
159170
{children}
160171
</VisualSettingsContext.Provider>);

src/hooks/useSearchableData.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ const useSearchableData = () => {
117117
{ title: 'Toggle Game Boy Mode', type: 'command', commandId: 'toggleGameboyMode' },
118118
{ title: 'Toggle Comic Book Mode', type: 'command', commandId: 'toggleComicMode' },
119119
{ title: 'Toggle Sketchbook Mode', type: 'command', commandId: 'toggleSketchbookMode' },
120+
{ title: 'Toggle Hellenic Mode', type: 'command', commandId: 'toggleHellenicMode' },
120121
];
121122

122123
setItems([...staticRoutes, ...customCommands, ...allPosts, ...allProjects, ...allLogs, ...allApps]);

src/index.css

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -517,3 +517,43 @@ body.sketchbook-mode img {
517517
border: 2px solid #333;
518518
box-shadow: 2px 2px 5px rgba(0,0,0,0.2);
519519
}
520+
521+
/* Hellenic Mode */
522+
body.hellenic-mode {
523+
background-color: #fdfbf7 !important;
524+
color: #2c3e50 !important;
525+
font-family: 'Cinzel', 'Trajan Pro', 'Times New Roman', serif !important;
526+
background-image:
527+
radial-gradient(circle at 100% 150%, #fdfbf7 24%, #f5f3ef 25%, #f5f3ef 28%, #fdfbf7 29%, #fdfbf7 36%, #f5f3ef 36%, #f5f3ef 40%, transparent 40%, transparent),
528+
radial-gradient(circle at 0 150%, #fdfbf7 24%, #f5f3ef 25%, #f5f3ef 28%, #fdfbf7 29%, #fdfbf7 36%, #f5f3ef 36%, #f5f3ef 40%, transparent 40%, transparent),
529+
radial-gradient(circle at 50% 100%, #f5f3ef 10%, #fdfbf7 11%, #fdfbf7 23%, #f5f3ef 24%, #f5f3ef 30%, #fdfbf7 31%, #fdfbf7 43%, #f5f3ef 44%, #f5f3ef 50%, #fdfbf7 51%, #fdfbf7 63%, #f5f3ef 64%, #f5f3ef 71%, transparent 71%, transparent),
530+
radial-gradient(circle at 100% 50%, #f5f3ef 5%, #fdfbf7 6%, #fdfbf7 15%, #f5f3ef 16%, #f5f3ef 20%, #fdfbf7 21%, #fdfbf7 30%, #f5f3ef 31%, #f5f3ef 35%, #fdfbf7 36%, #fdfbf7 45%, #f5f3ef 46%, #f5f3ef 49%, transparent 50%, transparent),
531+
radial-gradient(circle at 0 50%, #f5f3ef 5%, #fdfbf7 6%, #fdfbf7 15%, #f5f3ef 16%, #f5f3ef 20%, #fdfbf7 21%, #fdfbf7 30%, #f5f3ef 31%, #f5f3ef 35%, #fdfbf7 36%, #fdfbf7 45%, #f5f3ef 46%, #f5f3ef 49%, transparent 50%, transparent);
532+
background-size: 50px 25px;
533+
}
534+
535+
body.hellenic-mode * {
536+
border-color: #d4af37 !important;
537+
box-shadow: inset 1px 1px 3px rgba(0,0,0,0.1);
538+
}
539+
540+
body.hellenic-mode a {
541+
color: #005b96 !important;
542+
text-transform: uppercase;
543+
letter-spacing: 1px;
544+
font-weight: bold;
545+
}
546+
547+
body.hellenic-mode img {
548+
filter: contrast(1.1) sepia(0.2);
549+
border: 4px double #d4af37 !important;
550+
}
551+
552+
body.hellenic-mode h1,
553+
body.hellenic-mode h2,
554+
body.hellenic-mode h3 {
555+
color: #005b96 !important;
556+
text-transform: uppercase;
557+
letter-spacing: 2px;
558+
text-shadow: 1px 1px 0 #d4af37;
559+
}

src/pages/CommandsPage.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ const commandsData = [
6060
{ title: "Toggle Game Boy Mode", description: "Switch to a 4-color retro handheld look. (Easter Egg)", color: "lime" },
6161
{ title: "Toggle Comic Book Mode", description: "Switch to a vibrant pop-art comic style. (Easter Egg)", color: "red" },
6262
{ title: "Toggle Sketchbook Mode", description: "Switch to a hand-drawn sketchbook style. (Easter Egg)", color: "stone" },
63+
{ title: "Toggle Hellenic Mode", description: "Switch to a classical Greek architecture style. (Easter Egg)", color: "amber" },
6364
]
6465
},
6566
{

src/pages/SettingsPage.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ const SettingsPage = () => {
4646
isCyberpunk, toggleCyberpunk,
4747
isGameboy, toggleGameboy,
4848
isComic, toggleComic,
49-
isSketchbook, toggleSketchbook
49+
isSketchbook, toggleSketchbook,
50+
isHellenic, toggleHellenic
5051
} = useVisualSettings();
5152

5253
const {addToast} = useToast();
@@ -265,6 +266,13 @@ const SettingsPage = () => {
265266
checked={isSketchbook}
266267
onChange={toggleSketchbook}
267268
/>
269+
<div className="mb-4"></div>
270+
<CustomToggle
271+
id="enable-hellenic-mode"
272+
label="> Hellenic Mode"
273+
checked={isHellenic}
274+
onChange={toggleHellenic}
275+
/>
268276
</div>
269277
{/* Sidebar Stuff */}
270278
<h1 className="text-3xl font-arvo font-normal mb-4 text-app">

0 commit comments

Comments
 (0)