From eb38f8865fbab1a47a55a57ac7119a21224a81ea Mon Sep 17 00:00:00 2001 From: codey Date: Wed, 26 Nov 2025 09:17:30 -0500 Subject: [PATCH] - LyricSearch: misc/field focus, validation - Nav: further improvements --- public/images/zim.png | Bin 0 -> 66349 bytes src/assets/styles/global.css | 5 +++ src/components/Login.jsx | 4 +- src/components/LyricSearch.jsx | 10 +++++ src/layouts/Nav.astro | 73 ++++++++++++++++++++++++++++----- 5 files changed, 80 insertions(+), 12 deletions(-) create mode 100644 public/images/zim.png diff --git a/public/images/zim.png b/public/images/zim.png new file mode 100644 index 0000000000000000000000000000000000000000..805683b0c1c280fe884d723ba7a658775ae514a0 GIT binary patch literal 66349 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 literal 0 HcmV?d00001 diff --git a/src/assets/styles/global.css b/src/assets/styles/global.css index da01f36..814df3c 100644 --- a/src/assets/styles/global.css +++ b/src/assets/styles/global.css @@ -195,6 +195,11 @@ blockquote p:first-of-type::after { Custom */ +.logo-auth { + height: 64px; + width: 64px; +} + .footer { display: grid; align-items: end; diff --git a/src/components/Login.jsx b/src/components/Login.jsx index ba46f84..0a1022e 100644 --- a/src/components/Login.jsx +++ b/src/components/Login.jsx @@ -101,8 +101,8 @@ export default function LoginPage() {

- Logo - Authentication Required + Logo + Log In

diff --git a/src/components/LyricSearch.jsx b/src/components/LyricSearch.jsx index 1dd4ed9..0132b1a 100644 --- a/src/components/LyricSearch.jsx +++ b/src/components/LyricSearch.jsx @@ -324,6 +324,16 @@ export function LyricSearchInputField({ id, placeholder, setShowLyrics }) { const statusTitle = statusLabels[inputStatus]; const StatusIcon = statusIcons[inputStatus] || RemoveRoundedIcon; + useEffect(() => { + const inputEl = autoCompleteInputRef.current; + if (!inputEl) return; + if (statusTitle) { + inputEl.setAttribute("title", statusTitle); + } else { + inputEl.removeAttribute("title"); + } + }, [statusTitle]); + return (
diff --git a/src/layouts/Nav.astro b/src/layouts/Nav.astro index 3842447..13a32aa 100644 --- a/src/layouts/Nav.astro +++ b/src/layouts/Nav.astro @@ -2,7 +2,7 @@ import { metaData, API_URL } from "../config"; import { Icon } from "astro-icon/components"; -const isLoggedIn = Astro.cookies.get('access_token') || Astro.cookies.get('refresh_token'); +const isLoggedIn = Boolean(Astro.cookies.get('access_token') || Astro.cookies.get('refresh_token')); const padlockIconSvg = ` @@ -21,14 +21,27 @@ const externalLinkIconSvg = ` const navItems = [ { label: "Home", href: "/" }, { label: "Radio", href: "/radio" }, - { label: "Memes", href: "/memes" }, - { label: "Lighting", href: "/lighting", auth: true, icon: "padlock" }, - { label: "TRip", href: "/TRip", auth: true, icon: "padlock" }, + { label: "Memes", href: "/memes" }, + { label: "Lighting", href: "/lighting", auth: true }, + { label: "TRip", href: "/TRip", auth: true, icon: "pirate" }, { label: "Status", href: "https://status.boatson.boats", icon: "external" }, { label: "Git", href: "https://kode.boatson.boats", icon: "external" }, + { label: "Login", href: "/login", guestOnly: true }, ...(isLoggedIn ? [{ label: "Logout", href: "#logout", onclick: "handleLogout()" }] : []), ]; +const visibleNavItems = navItems.filter((item) => { + if (item.auth && !isLoggedIn) { + return false; + } + + if (item.guestOnly && isLoggedIn) { + return false; + } + + return true; +}); + const currentPath = Astro.url.pathname; --- @@ -37,7 +50,7 @@ const currentPath = Astro.url.pathname;
-
+