Mercurial
annotate mrjunejune/test/snapshots/blog.snapshot @ 273:e02e2036ef84 default tip
add Layer 2 JRPG component system
Add reusable content and window modals, an isolated component sandbox, shared cyberpunk scroll areas, production-safe cache freshness, and server-rendered JRPG panel state.
Co-authored-by: Copilot <[email protected]>
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Sat, 08 Aug 2026 02:08:08 -0700 |
| parents | 60a876c4587a |
| children |
| rev | line source |
|---|---|
| 129 | 1 <!doctype html> |
| 2 <html lang="en"> | |
| 3 <head> | |
| 4 <meta charset="UTF-8"> | |
| 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
|
256
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
6 <meta name="theme-color" content="#f7f3e8"> |
| 129 | 7 <link rel="icon" type="image/svg+xml" href="/public/epi_all_colors.svg"> |
|
256
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
8 <link rel="manifest" href="/public/manifest.json"> |
|
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
9 <link rel="apple-touch-icon" href="/public/epi_all_colors.svg"> |
| 129 | 10 |
| 11 <link rel="preload" href="/public/fonts/Roboto-Regular.ttf" as="font" crossorigin> | |
| 12 <link rel="preload" href="/public/fonts/Roboto-Thin.ttf"as="font" crossorigin> | |
| 13 | |
| 14 <!-- <link rel="preload" href="/public/fonts/atkinson-regular.woff" as="font" type="font/woff" crossorigin> --> | |
| 15 <!-- <link rel="preload" href="/public/fonts/atkinson-bold.woff" as="font" type="font/woff" crossorigin> --> | |
| 16 | |
| 17 <!-- <link rel="preload" href="/public/fonts/more-sugar.extras.otf" as="font" type="font/otf" crossorigin> --> | |
| 18 <link rel="preload" href="/public/fonts/more-sugar.regular.otf" as="font" type="font/otf" crossorigin> | |
| 19 <link rel="preload" href="/public/fonts/more-sugar.thin.otf" as="font" type="font/otf" crossorigin> | |
|
158
1c0878eb17de
[MrJuneJune] Readme file gets compiled in server side.
June Park <parkjune1995@gmail.com>
parents:
145
diff
changeset
|
20 <link rel="preload" href="/public/epi_all_colors.svg" as="image"> |
| 129 | 21 |
|
256
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
22 <link rel="stylesheet" href="/public/design-system/styles/tokens.css" /> |
|
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
23 <link rel="stylesheet" href="/public/design-system/styles/themes.css" /> |
| 129 | 24 <link rel="preload" href="/base.css" as="style" /> |
| 25 <link rel="stylesheet" href="/base.css" /> | |
|
256
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
26 <link rel="stylesheet" href="/public/design-system/styles/components.css" /> |
|
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
27 <script |
|
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
28 type="module" |
|
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
29 src="/public/design-system/components/index.js" |
|
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
30 ></script> |
| 129 | 31 |
|
256
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
32 <script src="/public/pwa-register.js" defer></script> |
| 129 | 33 |
| 34 </head> | |
| 35 <body> | |
| 36 <style> | |
| 37 :root { | |
| 38 --header-background: var(--white); | |
|
256
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
39 --header-color: var(--black); |
| 129 | 40 --link-hover-accent: var(--awesome); |
| 41 } | |
| 42 | |
|
256
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
43 #themeControl { |
| 129 | 44 position: fixed; |
| 45 top: 20px; | |
| 46 left: 20px; | |
| 47 z-index: 1000; | |
| 48 transition: transform 0.2s ease; | |
| 49 } | |
| 50 | |
|
256
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
51 #themeControl:hover { |
| 129 | 52 transform: scale(1.05); |
| 53 } | |
| 54 | |
|
256
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
55 #themeToggle { |
|
258
60a876c4587a
[ui] Add semantic primitive ownership
MrJuneJune <me@mrjunejune.com>
parents:
256
diff
changeset
|
56 display: flex; |
|
256
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
57 flex-direction: column; |
|
258
60a876c4587a
[ui] Add semantic primitive ownership
MrJuneJune <me@mrjunejune.com>
parents:
256
diff
changeset
|
58 padding: 0; |
|
60a876c4587a
[ui] Add semantic primitive ownership
MrJuneJune <me@mrjunejune.com>
parents:
256
diff
changeset
|
59 border: 0; |
|
60a876c4587a
[ui] Add semantic primitive ownership
MrJuneJune <me@mrjunejune.com>
parents:
256
diff
changeset
|
60 background: transparent; |
|
256
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
61 } |
|
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
62 |
| 129 | 63 /* Professional header */ |
| 64 header { | |
| 65 margin: auto; | |
| 66 padding: 1.5em 1em; | |
| 67 font-family: "More", sans-serif; | |
| 68 width: 720px; | |
| 69 max-width: calc(100% - 2em); | |
| 70 text-align: center; | |
| 71 } | |
| 72 | |
| 73 header h1 { | |
| 74 margin: 0; | |
| 75 font-size: 1.8em; | |
| 76 font-weight: 700; | |
| 77 letter-spacing: -0.5px; | |
| 78 } | |
| 79 | |
| 80 header h1 a { | |
| 81 text-decoration: none; | |
| 82 color: var(--header-color); | |
| 83 } | |
| 84 | |
| 85 header h1 a::before { | |
| 86 display: none; | |
| 87 } | |
| 88 | |
| 89 /* Mobile responsiveness */ | |
| 90 @media (max-width: 720px) { | |
|
256
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
91 #themeControl { |
| 129 | 92 top: 15px; |
| 93 left: 15px; | |
| 94 } | |
| 95 | |
| 96 header { | |
| 97 padding: 1em; | |
| 98 } | |
| 99 | |
| 100 header h1 { | |
| 101 font-size: 1.5em; | |
| 102 } | |
| 103 } | |
| 104 | |
| 105 @media (max-width: 480px) { | |
|
256
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
106 #themeControl { |
| 129 | 107 top: 10px; |
| 108 left: 10px; | |
| 109 } | |
| 110 | |
| 111 #themeToggle img { | |
| 112 height: 40px; | |
| 113 width: 40px; | |
| 114 } | |
| 115 | |
| 116 header h1 { | |
| 117 font-size: 1.3em; | |
| 118 } | |
| 119 } | |
| 120 | |
| 121 #logo { | |
| 122 width: 300px; | |
| 123 } | |
| 124 | |
| 125 /* 1. DEFINE THE DEFAULTS (Light Mode) */ | |
| 126 :root { | |
| 127 --logo-invert: invert(0); | |
| 128 --epi-grayscale: grayscale(0) brightness(1); | |
| 129 } | |
| 130 | |
| 131 /* 2. MANUAL DARK OVERRIDE */ | |
|
256
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
132 html[data-zen-theme="ink"] { |
| 129 | 133 --logo-invert: invert(1); |
| 134 --epi-grayscale: grayscale(1); | |
| 135 } | |
| 136 | |
| 137 /* 3. MANUAL LIGHT OVERRIDE */ | |
|
256
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
138 html[data-zen-theme="paper"] { |
| 129 | 139 --logo-invert: invert(0); |
| 140 --epi-grayscale: brightness(2.9) grayscale(1); | |
| 141 } | |
|
256
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
142 |
|
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
143 html[data-zen-theme="playful"] { |
|
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
144 --logo-invert: invert(0); |
|
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
145 --epi-grayscale: saturate(1.25); |
|
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
146 } |
| 129 | 147 |
| 148 /* 4. SYSTEM PREFERENCE */ | |
| 149 @media (prefers-color-scheme: dark) { | |
|
256
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
150 :root:not([data-zen-theme]) { |
| 129 | 151 --logo-invert: invert(1); |
| 152 } | |
| 153 } | |
| 154 | |
| 155 /* 5. APPLY TO ELEMENTS */ | |
| 156 #logo { | |
| 157 -webkit-filter: var(--logo-invert); | |
| 158 filter: var(--logo-invert); | |
| 159 transition: filter 0.3s ease; | |
| 160 } | |
| 161 | |
| 162 .epi-logo { | |
| 163 -webkit-filter: var(--epi-grayscale); | |
| 164 filter: var(--epi-grayscale); | |
| 165 transition: filter 0.3s ease; | |
| 166 } | |
| 167 </style> | |
| 168 | |
|
258
60a876c4587a
[ui] Add semantic primitive ownership
MrJuneJune <me@mrjunejune.com>
parents:
256
diff
changeset
|
169 <zen-button id="themeControl" appearance="plain" size="xl"> |
|
256
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
170 <button |
|
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
171 id="themeToggle" |
|
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
172 type="button" |
|
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
173 aria-label="Change site theme" |
|
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
174 > |
|
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
175 <img |
|
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
176 id="epiChan" |
|
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
177 class="epi-logo" |
|
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
178 alt="" |
|
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
179 src="/public/epi_all_colors.svg" |
|
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
180 height="50" |
|
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
181 width="50" |
|
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
182 > |
|
258
60a876c4587a
[ui] Add semantic primitive ownership
MrJuneJune <me@mrjunejune.com>
parents:
256
diff
changeset
|
183 <span id="themeName" class="zen-visually-hidden" aria-live="polite">Auto</span> |
|
256
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
184 </button> |
|
30c2196d03d4
[site] Integrate Zenbu themes and components
MrJuneJune <me@mrjunejune.com>
parents:
158
diff
changeset
|
185 </zen-button> |
| 129 | 186 |
| 187 <header> | |
|
258
60a876c4587a
[ui] Add semantic primitive ownership
MrJuneJune <me@mrjunejune.com>
parents:
256
diff
changeset
|
188 <h1><a href="/" data-zen-link-effect="none">MrJuneJune</a></h1> |
| 129 | 189 </header> |
| 190 <script src="/index.js"></script> | |
| 191 | |
| 192 <main> | |
| 193 <h1 class="title" style="margin-bottom: 20px;"> Blogs </h1> | |
| 194 <ul style="list-style: none;"> | |
| 195 <li style="margin-bottom: 20px;"> | |
| 196 <span> January 08 2026 </span> | |
| 197 <p><h4><a href="/blog/websocket-demystified">Websocket Demystified</a></h4></p> | |
| 198 </li> | |
| 199 <li style="margin-bottom: 20px;"> | |
| 200 <span> January 02 2026 </span> | |
| 201 <p><h4><a href="/blog/my-seobeo-journey">Creating Network Library in C</a></h4></p> | |
| 202 </li> | |
| 203 <li style="margin-bottom: 20px;"> | |
| 204 <span> Apr 12 2025 </span> | |
| 205 <p><h4><a href="/blog/wsl2-ssh">WSL2 Cloudtop Setup</a></h4></p> | |
| 206 </li> | |
| 207 <li style="margin-bottom: 20px;"> | |
| 208 <span> Dec 10 2024 </span> | |
| 209 <p><h4><a href="/blog/multithread-in-js">MultiThreading in JS</a></h4></p> | |
| 210 </li> | |
| 211 <li style="margin-bottom: 20px;"> | |
| 212 <span> Nov 23 2024 </span> | |
| 213 <p><h4><a href="/blog/thoughts-on-tdd">My thoughts on TDD</a></h4></p> | |
| 214 </li> | |
| 215 <li style="margin-bottom: 20px;"> | |
| 216 <span> Nov 21 2024 </span> | |
| 217 <p><h4><a href="/blog/optimizing-grass-rendering">Optimizing Random Placement with Colour Noise</a></h4></p> | |
| 218 </li> | |
| 219 <li style="margin-bottom: 20px;"> | |
| 220 <span> Nov 17 2024 </span> | |
| 221 <p><h4><a href="/blog/thoughts-on-ide">My thoughts on IDE</a></h4></p> | |
| 222 </li> | |
| 223 <li style="margin-bottom: 20px;"> | |
| 224 <span> Nov 16 2024 </span> | |
| 225 <p><h4><a href="/blog/optimizing-data-structures">Optimizing Data Structure for Performance</a></h4></p> | |
| 226 </li> | |
| 227 <li style="margin-bottom: 20px;"> | |
| 228 <span> Nov 13 2024 </span> | |
| 229 <p><h4><a href="/blog/wasm-bunny">WASM using c3</a></h4></p> | |
| 230 </li> | |
| 231 </ul> | |
| 232 </main> | |
| 233 <div style="display: flex; align-items: center; justify-content: center; margin: 30px 0px;"> | |
| 234 <small>© 2026 June Park</small> | |
| 235 </div> | |
| 236 | |
| 237 </body> | |
| 238 </html> |