dashboard tweaks
This commit is contained in:
parent
380a0e6d1c
commit
683cdeb86b
1 changed files with 75 additions and 38 deletions
|
|
@ -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: "Community‑funded, community‑first 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: ["In‑depth 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", "Behind‑the‑scenes notes", "Community shout‑outs"],
|
perks: ["Support milestones", "Behind-the-scenes notes", "Community shout-outs"],
|
||||||
cta: "Back on Patreon",
|
cta: "Back on Patreon",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Ko‑Fi",
|
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:
|
||||||
"One‑time 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 Ko‑Fi",
|
cta: "Tip on Ko-Fi",
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
const adVsCommunity = {
|
const adVsCommunity = {
|
||||||
ads: [
|
ads: [
|
||||||
"Algorithm‑shaped 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",
|
||||||
"Privacy‑respecting 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">Community‑Funded • Ad‑Free • 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 independent—no ads, no sponsors, no affiliate strings—and 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 Ko‑Fi
|
<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">Community‑Funded 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>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue