root.html.heex (1955B)
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="DailyTracker" suffix=" ยท Phoenix Framework" phx-no-format>{assigns[:page_title]}</.live_title> 8 <link phx-track-static rel="stylesheet" href={~p"/assets/css/app.css"} /> 9 <script defer phx-track-static type="text/javascript" src={~p"/assets/js/app.js"}> 10 </script> 11 <script> 12 (() => { 13 const setTheme = (theme) => { 14 if (theme === "system") { 15 localStorage.removeItem("phx:theme"); 16 document.documentElement.removeAttribute("data-theme"); 17 } else { 18 localStorage.setItem("phx:theme", theme); 19 document.documentElement.setAttribute("data-theme", theme); 20 } 21 }; 22 if (!document.documentElement.hasAttribute("data-theme")) { 23 setTheme(localStorage.getItem("phx:theme") || "system"); 24 } 25 window.addEventListener("storage", (e) => e.key === "phx:theme" && setTheme(e.newValue || "system")); 26 27 window.addEventListener("phx:set-theme", (e) => setTheme(e.target.dataset.phxTheme)); 28 })(); 29 </script> 30 </head> 31 <body> 32 <ul class="menu menu-horizontal w-full relative z-10 flex items-center gap-4 px-4 sm:px-6 lg:px-8 justify-end"> 33 <%= if @current_scope do %> 34 <li> 35 {@current_scope.user.email} 36 </li> 37 <li> 38 <.link href={~p"/users/settings"}>Settings</.link> 39 </li> 40 <li> 41 <.link href={~p"/users/log-out"} method="delete">Log out</.link> 42 </li> 43 <% else %> 44 <li> 45 <.link href={~p"/users/register"}>Register</.link> 46 </li> 47 <li> 48 <.link href={~p"/users/log-in"}>Log in</.link> 49 </li> 50 <% end %> 51 </ul> 52 {@inner_content} 53 </body> 54 </html>