Mercurial
comparison mrjunejune/test/snapshots/tools_hls_player.snapshot @ 258:60a876c4587a
[ui] Add semantic primitive ownership
Build a layered Zenbu token and sizing system, make authored controls use native-underneath primitives, migrate mrjunejune without imposing visual surfaces, and document/enforce HTML ownership in the catalog and wiki.
Co-authored-by: Copilot <[email protected]>
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Wed, 05 Aug 2026 05:25:40 -0700 |
| parents | 30c2196d03d4 |
| children |
comparison
equal
deleted
inserted
replaced
| 257:609d3c6aff4e | 258:60a876c4587a |
|---|---|
| 55 #themeControl:hover { | 55 #themeControl:hover { |
| 56 transform: scale(1.05); | 56 transform: scale(1.05); |
| 57 } | 57 } |
| 58 | 58 |
| 59 #themeToggle { | 59 #themeToggle { |
| 60 display: flex; | |
| 60 flex-direction: column; | 61 flex-direction: column; |
| 61 min-width: 4.5rem; | 62 padding: 0; |
| 62 padding: 0.35rem; | 63 border: 0; |
| 63 border-radius: 1.5rem; | 64 background: transparent; |
| 64 } | |
| 65 | |
| 66 #themeName { | |
| 67 font-family: "More", sans-serif; | |
| 68 font-size: 0.65rem; | |
| 69 line-height: 1; | |
| 70 } | 65 } |
| 71 | 66 |
| 72 /* Professional header */ | 67 /* Professional header */ |
| 73 header { | 68 header { |
| 74 margin: auto; | 69 margin: auto; |
| 75 padding: 1.5em 1em; | 70 padding: 1.5em 1em; |
| 76 font-family: "More", sans-serif; | 71 font-family: "More", sans-serif; |
| 77 box-shadow: var(--zen-shadow-sm); | |
| 78 width: 720px; | 72 width: 720px; |
| 79 max-width: calc(100% - 2em); | 73 max-width: calc(100% - 2em); |
| 80 text-align: center; | 74 text-align: center; |
| 81 } | 75 } |
| 82 | 76 |
| 174 filter: var(--epi-grayscale); | 168 filter: var(--epi-grayscale); |
| 175 transition: filter 0.3s ease; | 169 transition: filter 0.3s ease; |
| 176 } | 170 } |
| 177 </style> | 171 </style> |
| 178 | 172 |
| 179 <zen-button id="themeControl" variant="quiet"> | 173 <zen-button id="themeControl" appearance="plain" size="xl"> |
| 180 <button | 174 <button |
| 181 id="themeToggle" | 175 id="themeToggle" |
| 182 type="button" | 176 type="button" |
| 183 aria-label="Change site theme" | 177 aria-label="Change site theme" |
| 184 > | 178 > |
| 188 alt="" | 182 alt="" |
| 189 src="/public/epi_all_colors.svg" | 183 src="/public/epi_all_colors.svg" |
| 190 height="50" | 184 height="50" |
| 191 width="50" | 185 width="50" |
| 192 > | 186 > |
| 193 <span id="themeName" aria-live="polite">Auto</span> | 187 <span id="themeName" class="zen-visually-hidden" aria-live="polite">Auto</span> |
| 194 </button> | 188 </button> |
| 195 </zen-button> | 189 </zen-button> |
| 196 | 190 |
| 197 <header> | 191 <header> |
| 198 <h1><a href="/">MrJuneJune</a></h1> | 192 <h1><a href="/" data-zen-link-effect="none">MrJuneJune</a></h1> |
| 199 </header> | 193 </header> |
| 200 <script src="/index.js"></script> | 194 <script src="/index.js"></script> |
| 201 | 195 |
| 202 <main> | 196 <main> |
| 203 <h1>Online HLS Player</h1> | 197 <h1>Online HLS Player</h1> |
| 204 <p>Load an HLS playlist from a URL, or try the sample stream bundled with this site.</p> | 198 <p>Load an HLS playlist from a URL, or try the sample stream bundled with this site.</p> |
| 205 | 199 |
| 206 <form id="hlsForm" class="hls-form"> | 200 <form id="hlsForm" class="hls-form"> |
| 207 <label for="hlsUrl">Playlist URL</label> | 201 <label for="hlsUrl">Playlist URL</label> |
| 208 <div class="hls-url-row"> | 202 <div class="hls-url-row"> |
| 209 <input | 203 <zen-input appearance="plain" size="md"> |
| 210 id="hlsUrl" | 204 <input |
| 211 name="url" | 205 id="hlsUrl" |
| 212 type="text" | 206 name="url" |
| 213 inputmode="url" | 207 type="text" |
| 214 value="/public/hls-sample/h264-ts-stream.m3u8" | 208 inputmode="url" |
| 215 placeholder="https://example.com/stream.m3u8" | 209 value="/public/hls-sample/h264-ts-stream.m3u8" |
| 216 required | 210 placeholder="https://example.com/stream.m3u8" |
| 217 /> | 211 required |
| 218 <button type="submit">Load</button> | 212 /> |
| 219 <button id="sampleButton" type="button">Sample</button> | 213 </zen-input> |
| 214 <zen-button appearance="plain" size="md"> | |
| 215 <button type="submit">Load</button> | |
| 216 </zen-button> | |
| 217 <zen-button appearance="plain" size="md"> | |
| 218 <button id="sampleButton" type="button">Sample</button> | |
| 219 </zen-button> | |
| 220 </div> | 220 </div> |
| 221 </form> | 221 </form> |
| 222 | 222 |
| 223 <fieldset class="hls-local-picker"> | 223 <fieldset class="hls-local-picker"> |
| 224 <legend>Local HLS</legend> | 224 <legend>Local HLS</legend> |
| 225 <p>Select the playlist together with every init and segment file it references.</p> | 225 <p>Select the playlist together with every init and segment file it references.</p> |
| 226 <div class="hls-local-actions"> | 226 <div class="hls-local-actions"> |
| 227 <label class="hls-file-button"> | 227 <label class="hls-file-button"> |
| 228 Choose HLS files | 228 Choose HLS files |
| 229 <input | 229 <zen-input appearance="plain" size="md"> |
| 230 id="hlsFiles" | 230 <input |
| 231 type="file" | 231 id="hlsFiles" |
| 232 accept=".m3u8,.m4s,.mp4,.ts,.aac,.vtt,.key,application/vnd.apple.mpegurl" | 232 type="file" |
| 233 multiple | 233 accept=".m3u8,.m4s,.mp4,.ts,.aac,.vtt,.key,application/vnd.apple.mpegurl" |
| 234 /> | 234 multiple |
| 235 /> | |
| 236 </zen-input> | |
| 235 </label> | 237 </label> |
| 236 <label class="hls-file-button"> | 238 <label class="hls-file-button"> |
| 237 Choose HLS folder | 239 Choose HLS folder |
| 238 <input | 240 <zen-input appearance="plain" size="md"> |
| 239 id="hlsFolder" | 241 <input |
| 240 type="file" | 242 id="hlsFolder" |
| 241 webkitdirectory | 243 type="file" |
| 242 multiple | 244 webkitdirectory |
| 243 /> | 245 multiple |
| 246 /> | |
| 247 </zen-input> | |
| 244 </label> | 248 </label> |
| 245 </div> | 249 </div> |
| 246 </fieldset> | 250 </fieldset> |
| 247 | 251 |
| 248 <div class="hls-player-shell"> | 252 <div class="hls-player-shell"> |