Music streaming on ATProto!
at main 1.4 kB view raw
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" /> 6 <meta name="csrf-token" content={get_csrf_token()} /> 7 <.live_title default="Comet" suffix=" · Phoenix Framework"> 8 {assigns[:page_title]} 9 </.live_title> 10 <link phx-track-static rel="stylesheet" href={~p"/assets/js/app.css"} /> 11 <link phx-track-static rel="stylesheet" href={~p"/assets/css/app.css"} /> 12 <script defer phx-track-static type="text/javascript" src={~p"/assets/js/app.js"}> 13 </script> 14 <script> 15 (() => { 16 const setTheme = (theme) => { 17 if (theme === "system") { 18 localStorage.removeItem("phx:theme"); 19 document.documentElement.removeAttribute("data-theme"); 20 } else { 21 localStorage.setItem("phx:theme", theme); 22 document.documentElement.setAttribute("data-theme", theme); 23 } 24 }; 25 if (!document.documentElement.hasAttribute("data-theme")) { 26 setTheme(localStorage.getItem("phx:theme") || "system"); 27 } 28 window.addEventListener("storage", (e) => e.key === "phx:theme" && setTheme(e.newValue || "system")); 29 30 window.addEventListener("phx:set-theme", (e) => setTheme(e.target.dataset.phxTheme)); 31 })(); 32 </script> 33 </head> 34 <body> 35 {@inner_content} 36 </body> 37</html>