atproto explorer pdsls.dev
atproto tool

restyle navbar

juli.ee c440ce3a 1cf8db5f

verified
Changed files
+40 -28
src
components
+38 -26
src/components/navbar.tsx
···
});
return (
-
<nav class="flex w-full flex-col px-2 text-sm wrap-anywhere sm:text-base">
-
<div class="relative flex items-center justify-between gap-1">
-
<div class="flex min-h-5 basis-full items-center gap-2 sm:min-h-6">
+
<nav class="flex w-full flex-col text-sm wrap-anywhere sm:text-base">
+
{/* PDS Level */}
+
<div class="group relative flex items-center justify-between gap-1 rounded-md border-[0.5px] border-transparent bg-transparent px-2 py-0.5 transition-all duration-200 hover:border-neutral-300 hover:bg-neutral-50/40 dark:hover:border-neutral-600 dark:hover:bg-neutral-800/40">
+
<div class="flex min-h-5 basis-full items-center gap-1.5 sm:min-h-6">
<Tooltip text="PDS">
-
<span class="iconify lucide--hard-drive shrink-0"></span>
+
<span class="iconify lucide--hard-drive shrink-0 text-neutral-500 transition-colors duration-200 group-hover:text-neutral-700 dark:text-neutral-400 dark:group-hover:text-neutral-200"></span>
</Tooltip>
<Show when={pds()}>
-
<Show when={props.params.repo} fallback={<span>{pds()}</span>}>
+
<Show when={props.params.repo} fallback={<span class="font-medium">{pds()}</span>}>
<A
end
href={pds()!}
-
inactiveClass="text-blue-400 w-full hover:underline active:underline"
+
inactiveClass="text-blue-500 w-full font-medium hover:text-blue-600 transition-colors duration-150 dark:text-blue-400 dark:hover:text-blue-300"
>
{pds()}
</A>
···
<MenuProvider>
<DropdownMenu
icon="lucide--copy"
-
buttonClass="rounded p-0.5 sm:p-1 text-base"
-
menuClass="top-6 p-2 text-xs"
+
buttonClass="rounded p-1 text-base transition-all duration-200 hover:bg-neutral-200/70 active:bg-neutral-300/70 dark:hover:bg-neutral-700/70 dark:active:bg-neutral-600/70"
+
menuClass="top-7 p-2 text-xs"
>
<Show when={pds()}>
<CopyMenu copyContent={pds()!} label="Copy PDS" />
···
</MenuProvider>
</Show>
</div>
-
<div class="flex flex-col flex-wrap">
+
+
<div class="flex flex-col">
<Show when={props.params.repo}>
-
<div class="relative flex items-center justify-between gap-1">
-
<div class="flex basis-full items-center gap-2">
+
{/* Repository Level */}
+
<div class="group relative flex items-center justify-between gap-1 rounded-md border-[0.5px] border-transparent bg-transparent px-2 py-0.5 transition-all duration-200 hover:border-neutral-300 hover:bg-neutral-50/40 dark:hover:border-neutral-600 dark:hover:bg-neutral-800/40">
+
<div class="flex basis-full items-center gap-1.5">
<Tooltip text="Repository">
-
<span class="iconify lucide--book-user"></span>
+
<span class="iconify lucide--book-user text-neutral-500 transition-colors duration-200 group-hover:text-neutral-700 dark:text-neutral-400 dark:group-hover:text-neutral-200"></span>
</Tooltip>
{props.params.collection || location.pathname.includes("/labels") ?
<A
end
href={`/at://${props.params.repo}`}
-
inactiveClass="text-blue-400 hover:underline active:underline w-full"
+
inactiveClass="text-blue-500 w-full font-medium hover:text-blue-600 transition-colors duration-150 dark:text-blue-400 dark:hover:text-blue-300"
>
{showHandle() ? handle() : props.params.repo}
</A>
-
: <span>{showHandle() ? handle() : props.params.repo}</span>}
+
: <span class="font-medium">{showHandle() ? handle() : props.params.repo}</span>}
</div>
<Tooltip text={showHandle() ? "Show DID" : "Show handle"}>
<button
-
class="flex items-center rounded p-0.5 text-base hover:bg-neutral-200 active:bg-neutral-300 sm:p-1 dark:hover:bg-neutral-700 dark:active:bg-neutral-600"
+
class="flex items-center rounded p-1 text-base transition-all duration-200 hover:bg-neutral-200/70 active:bg-neutral-300/70 dark:hover:bg-neutral-700/70 dark:active:bg-neutral-600/70"
onclick={() => {
localStorage.showHandle = !showHandle();
setShowHandle(!showHandle());
}}
>
<span
-
class={`iconify shrink-0 transition-transform duration-400 ${showHandle() ? "rotate-y-180" : ""} lucide--arrow-left-right`}
+
class={`iconify shrink-0 transition-transform duration-300 ease-in-out ${showHandle() ? "rotate-y-180" : ""} lucide--arrow-left-right`}
></span>
</button>
</Tooltip>
</div>
</Show>
+
+
{/* Labels Level */}
<Show
when={
!props.params.collection &&
(props.params.repo in labelerCache || location.pathname.endsWith("/labels"))
}
>
-
<div class="flex items-center gap-2">
-
<span class="iconify lucide--tag"></span>
+
<div class="group flex items-center gap-1.5 rounded-md border-[0.5px] border-transparent bg-transparent px-2 py-0.5 transition-all duration-200 hover:border-neutral-300 hover:bg-neutral-50/40 dark:hover:border-neutral-600 dark:hover:bg-neutral-800/40">
+
<span class="iconify lucide--tag text-neutral-500 transition-colors duration-200 group-hover:text-neutral-700 dark:text-neutral-400 dark:group-hover:text-neutral-200"></span>
<A
end
href={`/at://${props.params.repo}/labels`}
-
inactiveClass="text-blue-400 grow hover:underline active:underline"
+
inactiveClass="text-blue-500 grow font-medium hover:text-blue-600 transition-colors duration-150 dark:text-blue-400 dark:hover:text-blue-300"
>
labels
</A>
</div>
</Show>
+
+
{/* Collection Level */}
<Show when={props.params.collection}>
-
<div class="flex items-center gap-2">
+
<div class="group flex items-center gap-1.5 rounded-md border-[0.5px] border-transparent bg-transparent px-2 py-0.5 transition-all duration-200 hover:border-neutral-300 hover:bg-neutral-50/40 dark:hover:border-neutral-600 dark:hover:bg-neutral-800/40">
<Tooltip text="Collection">
-
<span class="iconify lucide--folder-open"></span>
+
<span class="iconify lucide--folder-open text-neutral-500 transition-colors duration-200 group-hover:text-neutral-700 dark:text-neutral-400 dark:group-hover:text-neutral-200"></span>
</Tooltip>
-
<Show when={props.params.rkey} fallback={<span>{props.params.collection}</span>}>
+
<Show
+
when={props.params.rkey}
+
fallback={<span class="font-medium">{props.params.collection}</span>}
+
>
<A
end
href={`/at://${props.params.repo}/${props.params.collection}`}
-
inactiveClass="text-blue-400 w-full hover:underline active:underline"
+
inactiveClass="text-blue-500 w-full font-medium hover:text-blue-600 transition-colors duration-150 dark:text-blue-400 dark:hover:text-blue-300"
>
{props.params.collection}
</A>
</Show>
</div>
</Show>
+
+
{/* Record Level */}
<Show when={props.params.rkey}>
-
<div class="flex items-center gap-2">
+
<div class="group flex items-center gap-1.5 rounded-md border-[0.5px] border-transparent bg-transparent px-2 py-0.5 transition-all duration-200 hover:border-neutral-300 hover:bg-neutral-50/40 dark:hover:border-neutral-600 dark:hover:bg-neutral-800/40">
<Tooltip text="Record">
-
<span class="iconify lucide--file-json"></span>
+
<span class="iconify lucide--file-json text-neutral-500 transition-colors duration-200 group-hover:text-neutral-700 dark:text-neutral-400 dark:group-hover:text-neutral-200"></span>
</Tooltip>
-
<span>{props.params.rkey}</span>
+
<span class="font-medium">{props.params.rkey}</span>
</div>
</Show>
</div>
+2 -2
src/layout.tsx
···
</Show>
</MetaProvider>
<header
-
class={`dark:shadow-dark-700 dark:bg-dark-300 mb-4 flex w-full items-center justify-between rounded-lg border-[0.5px] border-neutral-300 bg-neutral-50 bg-size-[95%] bg-right bg-no-repeat p-2 shadow-xs [--header-bg:#fafafa] dark:border-neutral-700 dark:[--header-bg:#2d2d2d] ${localStorage.getItem("hrt") === "true" ? "bg-[linear-gradient(to_left,transparent_10%,var(--header-bg)_85%),linear-gradient(to_bottom,#5BCEFA90_0%,#5BCEFA90_20%,#F5A9B890_20%,#F5A9B890_40%,#FFFFFF90_40%,#FFFFFF90_60%,#F5A9B890_60%,#F5A9B890_80%,#5BCEFA90_80%,#5BCEFA90_100%)]" : ""}`}
+
class={`dark:shadow-dark-700 dark:bg-dark-300 mb-3 flex w-full items-center justify-between rounded-lg border-[0.5px] border-neutral-300 bg-neutral-50 bg-size-[95%] bg-right bg-no-repeat p-2 shadow-xs [--header-bg:#fafafa] dark:border-neutral-700 dark:[--header-bg:#2d2d2d] ${localStorage.getItem("hrt") === "true" ? "bg-[linear-gradient(to_left,transparent_10%,var(--header-bg)_85%),linear-gradient(to_bottom,#5BCEFA90_0%,#5BCEFA90_20%,#F5A9B890_20%,#F5A9B890_40%,#FFFFFF90_40%,#FFFFFF90_60%,#F5A9B890_60%,#F5A9B890_80%,#5BCEFA90_80%,#5BCEFA90_100%)]" : ""}`}
style={{
"background-image":
props.params.repo in headers ?
···
</MenuProvider>
</div>
</header>
-
<div class="flex w-full flex-col items-center gap-4 text-pretty">
+
<div class="flex w-full flex-col items-center gap-3 text-pretty">
<Show when={showSearch() || location.pathname === "/"}>
<Search />
</Show>