dashboard tweaks

This commit is contained in:
makearmy 2025-10-19 00:17:44 -04:00
parent 380a0e6d1c
commit 683cdeb86b

View file

@ -22,59 +22,60 @@ import { Badge } from "@/components/ui/badge";
/** /**
* App Dashboard: Support CTA (simplified hero, no progress meter) * App Dashboard: Support CTA (simplified hero, no progress meter)
* --------------------------------------------------------------- * ---------------------------------------------------------------
* - Strips gradient background and complex card in the hero. * - Minimal hero to match site chrome.
* - Removes goal/progress UI entirely. * - No goal/progress UI.
* - Keeps the rest of the page (support cards, philosophy, free ways) intact. * - Consistent CTA buttons with solid, high-contrast fills.
* - Tips/perks render as inline chips so they wrap smoothly.
*/ */
const perks = [ const perks = [
{ icon: <ShieldCheck className="h-5 w-5" />, text: "No ads. No sponsors. No affiliates." }, { icon: <ShieldCheck className="h-5 w-5" aria-hidden="true" />, text: "No ads. No sponsors. No influence." },
{ icon: <Users className="h-5 w-5" />, text: "Communityfunded, communityfirst priorities." }, { icon: <Users className="h-5 w-5" aria-hidden="true" />, text: "Community-funded, community-first priorities." },
{ icon: <Video className="h-5 w-5" />, text: "Videos, tools, and guides stay open for all." }, { icon: <Video className="h-5 w-5" aria-hidden="true" />, text: "Videos, tools, and guides stay open for all." },
]; ];
const supportTiers = [ const supportTiers = [
{ {
name: "Laser Master Academy", name: "Laser Master Academy",
href: "https://masters.lasereverything.net", href: "https://masters.lasereverything.net",
icon: <Sparkles className="h-6 w-6" />, icon: <Sparkles className="h-6 w-6" aria-hidden="true" />,
blurb: blurb:
"Our flagship learning community on MightyNetworks: structured courses, AMAs, and deeper mentorship.", "Our flagship learning community on MightyNetworks: structured courses, AMAs, and deeper mentorship.",
perks: ["Indepth lessons", "Member Q&A", "Early access when available"], perks: ["In-depth lessons", "Member Q&A", "Early access when available"],
cta: "Join the Academy", cta: "Join the Academy",
}, },
{ {
name: "Patreon", name: "Patreon",
href: "https://www.patreon.com/c/LaserEverything", href: "https://www.patreon.com/c/LaserEverything",
icon: <HeartHandshake className="h-6 w-6" />, icon: <HeartHandshake className="h-6 w-6" aria-hidden="true" />,
blurb: blurb:
"Flexible monthly support to underwrite videos, research, and open tools without monetization strings.", "Flexible monthly support to underwrite videos, research, and open tools without monetization strings.",
perks: ["Support milestones", "Behindthescenes notes", "Community shoutouts"], perks: ["Support milestones", "Behind-the-scenes notes", "Community shout-outs"],
cta: "Back on Patreon", cta: "Back on Patreon",
}, },
{ {
name: "KoFi", name: "Ko-Fi",
href: "https://ko-fi.com/lasereverything", href: "https://ko-fi.com/lasereverything",
icon: <Coffee className="h-6 w-6" />, icon: <Coffee className="h-6 w-6" aria-hidden="true" />,
blurb: blurb:
"Onetime tips that go straight to hosting, development, and production costs—no paywall, just fuel.", "One-time tips that go straight to hosting, development, and production costs—no paywall, just fuel.",
perks: ["Say thanks once", "Help cover a bill", "Keep it free for others"], perks: ["Say thanks once", "Help cover a bill", "Keep it free for others"],
cta: "Tip on KoFi", cta: "Tip on Ko-Fi",
}, },
]; ];
const adVsCommunity = { const adVsCommunity = {
ads: [ ads: [
"Algorithmshaped content", "Algorithm-shaped content",
"Sponsor talking points", "Sponsor talking points",
"Affiliate bias risk", "Influencer bias risk",
"Tracking and interruptions", "Tracking and interruptions",
], ],
community: [ community: [
"Curriculum set by makers", "Curriculum set by makers",
"Honest reviews & hard truths", "Honest reviews & hard truths",
"Open tools without strings", "Open tools without strings",
"Privacyrespecting experience", "Privacy-respecting experience",
], ],
}; };
@ -84,40 +85,76 @@ export default function Page() {
{/* Hero (clean + minimal to match site) */} {/* Hero (clean + minimal to match site) */}
<section className="mx-auto w-full max-w-6xl px-6 py-14 sm:py-16"> <section className="mx-auto w-full max-w-6xl px-6 py-14 sm:py-16">
<div className="text-center"> <div className="text-center">
<Badge variant="secondary" className="mb-4">CommunityFunded AdFree Open Resources</Badge> <Badge variant="secondary" className="mb-4">
Community-Funded Ad-Free Open Resources
</Badge>
<h1 className="text-3xl font-extrabold tracking-tight sm:text-4xl"> <h1 className="text-3xl font-extrabold tracking-tight sm:text-4xl">
Keep Laser Everything & MakeArmy free for everyone Keep Laser Everything & MakeArmy free for everyone
</h1> </h1>
<p className="mx-auto mt-3 max-w-3xl text-balance text-sm text-muted-foreground sm:text-base"> <p className="mx-auto mt-3 max-w-3xl text-balance text-sm text-muted-foreground sm:text-base">
The videos, tools, and docs you use today exist because previous supporters paid it forward. The videos, tools, and docs you use today exist because previous supporters paid it forward.
We want to stay independentno ads, no sponsors, no affiliate stringsand that only works if we fund it together. We want to stay independent no ads, no sponsors, no strings and that only works if we fund it together.
</p> </p>
{/* Slim CTA row */} {/* Slim CTA row (consistent shape + solid, high-contrast fills) */}
<div className="mt-6 flex flex-wrap items-center justify-center gap-3"> <div className="mt-6 flex flex-wrap items-center justify-center gap-3">
<Button asChild size="lg" className="rounded-2xl"> {/* Laser Master Academy — teal */}
<Link href="https://masters.lasereverything.net" target="_blank" rel="noopener noreferrer"> <Button
asChild
size="lg"
className="rounded-2xl bg-teal-600 text-white shadow-sm hover:bg-teal-700 focus-visible:ring-2 focus-visible:ring-teal-500"
>
<Link
href="https://masters.lasereverything.net"
target="_blank"
rel="noopener noreferrer"
aria-label="Join Laser Master Academy"
>
Join Laser Master Academy <ArrowRight className="ml-2 h-4 w-4" /> Join Laser Master Academy <ArrowRight className="ml-2 h-4 w-4" />
</Link> </Link>
</Button> </Button>
<Button asChild variant="secondary" size="lg" className="rounded-2xl">
<Link href="https://www.patreon.com/c/LaserEverything" target="_blank" rel="noopener noreferrer"> {/* Patreon — rose */}
<Button
asChild
size="lg"
className="rounded-2xl bg-rose-600 text-white shadow-sm hover:bg-rose-700 focus-visible:ring-2 focus-visible:ring-rose-500"
>
<Link
href="https://www.patreon.com/c/LaserEverything"
target="_blank"
rel="noopener noreferrer"
aria-label="Back Laser Everything on Patreon"
>
Back on Patreon Back on Patreon
</Link> </Link>
</Button> </Button>
<Button asChild variant="outline" size="lg" className="rounded-2xl">
<Link href="https://ko-fi.com/lasereverything" target="_blank" rel="noopener noreferrer"> {/* Ko-Fi — sky (high-contrast; no yellow) */}
Tip on KoFi <Button
asChild
size="lg"
className="rounded-2xl bg-sky-600 text-white shadow-sm hover:bg-sky-700 focus-visible:ring-2 focus-visible:ring-sky-500"
>
<Link
href="https://ko-fi.com/lasereverything"
target="_blank"
rel="noopener noreferrer"
aria-label="Tip Laser Everything on Ko-Fi"
>
Tip on Ko-Fi
</Link> </Link>
</Button> </Button>
</div> </div>
{/* Trust perks (subtle, inline to keep rhythm) */} {/* Perks as inline chips (flows naturally, no awkward line breaks) */}
<ul className="mx-auto mt-5 grid max-w-2xl grid-cols-1 gap-2 sm:grid-cols-3"> <ul className="mx-auto mt-5 flex max-w-4xl flex-wrap items-center justify-center gap-x-6 gap-y-2 text-muted-foreground">
{perks.map((p, i) => ( {perks.map((p, i) => (
<li key={i} className="flex items-center justify-center gap-2 text-muted-foreground"> <li key={i} className="inline-flex items-center gap-2 text-sm">
{p.icon} {p.icon}
<span className="text-sm">{p.text}</span> <span>{p.text}</span>
</li> </li>
))} ))}
</ul> </ul>
@ -148,7 +185,7 @@ export default function Page() {
<ul className="space-y-2 text-sm"> <ul className="space-y-2 text-sm">
{tier.perks.map((perk) => ( {tier.perks.map((perk) => (
<li key={perk} className="flex items-center gap-2"> <li key={perk} className="flex items-center gap-2">
<CheckCircle2 className="h-4 w-4" /> {perk} <CheckCircle2 className="h-4 w-4" aria-hidden="true" /> {perk}
</li> </li>
))} ))}
</ul> </ul>
@ -175,7 +212,7 @@ export default function Page() {
<Card className="rounded-2xl"> <Card className="rounded-2xl">
<CardHeader> <CardHeader>
<div className="flex items-center gap-2 text-rose-600 dark:text-rose-400"> <div className="flex items-center gap-2 text-rose-600 dark:text-rose-400">
<CircleX className="h-5 w-5" /> <CircleX className="h-5 w-5" aria-hidden="true" />
<CardTitle className="text-base">Advertising / Sponsorship Model</CardTitle> <CardTitle className="text-base">Advertising / Sponsorship Model</CardTitle>
</div> </div>
</CardHeader> </CardHeader>
@ -183,7 +220,7 @@ export default function Page() {
<ul className="space-y-2 text-sm text-muted-foreground"> <ul className="space-y-2 text-sm text-muted-foreground">
{adVsCommunity.ads.map((t) => ( {adVsCommunity.ads.map((t) => (
<li key={t} className="flex items-center gap-2"> <li key={t} className="flex items-center gap-2">
<CircleX className="h-4 w-4" /> {t} <CircleX className="h-4 w-4" aria-hidden="true" /> {t}
</li> </li>
))} ))}
</ul> </ul>
@ -193,15 +230,15 @@ export default function Page() {
<Card className="rounded-2xl border-teal-600/30"> <Card className="rounded-2xl border-teal-600/30">
<CardHeader> <CardHeader>
<div className="flex items-center gap-2 text-teal-700 dark:text-teal-300"> <div className="flex items-center gap-2 text-teal-700 dark:text-teal-300">
<CheckCircle2 className="h-5 w-5" /> <CheckCircle2 className="h-5 w-5" aria-hidden="true" />
<CardTitle className="text-base">CommunityFunded Model</CardTitle> <CardTitle className="text-base">Community-Funded Model</CardTitle>
</div> </div>
</CardHeader> </CardHeader>
<CardContent> <CardContent>
<ul className="space-y-2 text-sm"> <ul className="space-y-2 text-sm">
{adVsCommunity.community.map((t) => ( {adVsCommunity.community.map((t) => (
<li key={t} className="flex items-center gap-2"> <li key={t} className="flex items-center gap-2">
<CheckCircle2 className="h-4 w-4" /> {t} <CheckCircle2 className="h-4 w-4" aria-hidden="true" /> {t}
</li> </li>
))} ))}
</ul> </ul>
@ -225,7 +262,7 @@ export default function Page() {
"Report bugs and suggest features", "Report bugs and suggest features",
].map((item) => ( ].map((item) => (
<li key={item} className="flex items-center gap-2 text-sm text-muted-foreground"> <li key={item} className="flex items-center gap-2 text-sm text-muted-foreground">
<HandCoins className="h-4 w-4" /> {item} <HandCoins className="h-4 w-4" aria-hidden="true" /> {item}
</li> </li>
))} ))}
</ul> </ul>