clear old assets, new ci/cd flow

This commit is contained in:
2026-05-26 11:54:41 -04:00
parent 82815009c9
commit 72609755f8
87 changed files with 4132 additions and 7158 deletions

View File

@@ -1,5 +1,5 @@
import { createSignal, onMount, onCleanup, Show } from "solid-js";
import { A } from "@solidjs/router";
import { A, useLocation } from "@solidjs/router";
import { cn } from "~/lib/utils";
import { Button } from "~/components/ui";
import { Typewriter } from "~/components/ui/Typewriter";
@@ -119,11 +119,19 @@ function ThemeToggle() {
);
}
const navLinks = [
const marketingLinks = [
{ label: "Features", href: "/features" },
{ label: "Pricing", href: "/pricing" },
{ label: "Blog", href: "/blog" },
];
const productLinks = [
{ label: "Dashboard", href: "/dashboard" },
{ label: "DarkWatch", href: "/darkwatch" },
{ label: "VoicePrint", href: "/voiceprint" },
{ label: "SpamShield", href: "/spamshield" },
{ label: "HomeTitle", href: "/hometitle" },
{ label: "RemoveBrokers", href: "/removebrokers" },
];
function RealtimeIndicator() {
@@ -174,6 +182,7 @@ function RealtimeIndicator() {
export default function Navbar() {
const [mobileOpen, setMobileOpen] = createSignal(false);
const [scrolled, setScrolled] = createSignal(false);
const location = useLocation();
onMount(() => {
const onScroll = () => {
@@ -183,6 +192,29 @@ export default function Navbar() {
onCleanup(() => window.removeEventListener("scroll", onScroll));
});
const isActive = (href: string) => {
if (href === "/dashboard") return location.pathname === "/dashboard";
return location.pathname.startsWith(href);
};
const NavLink = (props: { href: string; label: string; mobile?: boolean }) => (
<A
href={props.href}
class={cn(
props.mobile
? "block px-3 py-2 rounded-lg text-base font-medium transition-colors"
: "text-sm font-medium transition-colors",
isActive(props.href)
? "text-[var(--color-text-primary)]"
: "text-[var(--color-text-secondary)] hover:text-[var(--color-text-primary)]",
props.mobile && !isActive(props.href) && "hover:bg-[var(--color-bg-secondary)]",
)}
onClick={() => props.mobile && setMobileOpen(false)}
>
{props.label}
</A>
);
return (
<nav
class={cn(
@@ -201,14 +233,12 @@ export default function Navbar() {
</A>
<div class="hidden md:flex items-center gap-6">
{navLinks.map(link => (
<A
href={link.href}
class="text-sm font-medium text-[var(--color-text-secondary)] hover:text-[var(--color-text-primary)] transition-colors"
>
{link.label}
</A>
))}
<SignedOut>
{marketingLinks.map(link => <NavLink href={link.href} label={link.label} />)}
</SignedOut>
<SignedIn>
{productLinks.map(link => <NavLink href={link.href} label={link.label} />)}
</SignedIn>
</div>
<div class="hidden md:flex items-center gap-3">
@@ -216,9 +246,6 @@ export default function Navbar() {
<SignedIn>
<UserButton showName />
<RealtimeIndicator />
<Button variant="secondary" size="sm">
<A href="/dashboard">Dashboard</A>
</Button>
</SignedIn>
<SignedOut>
<Button variant="secondary" size="sm">
@@ -276,19 +303,20 @@ export default function Navbar() {
<Show when={mobileOpen()}>
<div class="md:hidden glass border-t border-[var(--color-border)]">
<div class="px-4 py-4 space-y-1">
{navLinks.map(link => (
<A
href={link.href}
class="block px-3 py-2 rounded-lg text-base font-medium text-[var(--color-text-secondary)] hover:text-[var(--color-text-primary)] hover:bg-[var(--color-bg-secondary)] transition-colors"
onClick={() => setMobileOpen(false)}
>
{link.label}
</A>
))}
<SignedOut>
{marketingLinks.map(link => (
<NavLink href={link.href} label={link.label} mobile />
))}
</SignedOut>
<SignedIn>
{productLinks.map(link => (
<NavLink href={link.href} label={link.label} mobile />
))}
</SignedIn>
<div class="pt-3 flex flex-col gap-2">
<SignedIn>
<Button variant="secondary" class="w-full">
<A href="/dashboard">Dashboard</A>
<A href="/dashboard">Go to Dashboard</A>
</Button>
</SignedIn>
<SignedOut>