diff --git a/app/portal/page.tsx b/app/portal/page.tsx index 9f890cf6..2d4a8664 100644 --- a/app/portal/page.tsx +++ b/app/portal/page.tsx @@ -14,18 +14,15 @@ import { Sparkles, } from "lucide-react"; -// If you have shadcn/ui Card/Button/Badge already, keep these. +// shadcn/ui import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; -import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; /** - * App Dashboard: Support CTA (simplified hero, no progress meter) - * --------------------------------------------------------------- - * - Minimal hero to match site chrome. - * - No goal/progress UI. - * - Consistent CTA buttons with solid, high-contrast fills. - * - Tips/perks render as inline chips so they wrap smoothly. + * App Dashboard: Support CTA (polished) + * - Stable custom buttons (no hover flicker) + * - Perks on their own lines + * - Copy + outline adjustments per request */ const perks = [ @@ -79,205 +76,200 @@ const adVsCommunity = { ], }; -export default function Page() { - return ( -
- {/* Hero (clean + minimal to match site) */} -
-
- - Community-Funded • Ad-Free • Open Resources - +// Reusable button styles (anchors styled as buttons to avoid shadcn hover conflicts) +const btn = +"inline-flex items-center justify-center rounded-2xl px-5 py-3 text-sm font-medium text-white shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2"; + const btnTeal = `${btn} bg-teal-600 hover:bg-teal-700 focus-visible:ring-teal-500`; + const btnRose = `${btn} bg-rose-600 hover:bg-rose-700 focus-visible:ring-rose-500`; + const btnSky = `${btn} bg-sky-600 hover:bg-sky-700 focus-visible:ring-sky-500`; -

- Keep Laser Everything & MakeArmy free for everyone -

+ export default function Page() { + return ( +
+ {/* Hero */} +
+
+ + Community-Funded • Ad-Free • Open Resources + -

- 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 strings — and that only works if we fund it together. -

+

+ Keep Laser Everything & MakeArmy free for everyone +

- {/* Slim CTA row (consistent shape + solid, high-contrast fills) */} -
- {/* Laser Master Academy — teal */} - +

+ 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 strings — and that only works if we fund it together. +

- {/* Patreon — rose */} - + {/* CTA row (custom anchors = stable hover) */} +
+ + Join Laser Master Academy + - {/* Ko-Fi — sky (high-contrast; no yellow) */} - -
+ + Back on Patreon + - {/* Perks as inline chips (flows naturally, no awkward line breaks) */} -
    - {perks.map((p, i) => ( -
  • - {p.icon} - {p.text} -
  • - ))} -
-
-
+ + Tip on Ko-Fi + +
- {/* Support Options */} -
-
-
-

How you can help—pick what fits

-

- Whether you join the Academy, pledge monthly, or tip once, every contribution sustains the whole community. -

-
+ {/* Perks: each on its own line, centered */} +
    + {perks.map((p, i) => ( +
  • + {p.icon} + {p.text} +
  • + ))} +
+
+
-
- {supportTiers.map((tier) => ( - - -
- {tier.icon} - {tier.name} -
-

{tier.blurb}

-
- -
    - {tier.perks.map((perk) => ( -
  • -
  • - ))} -
- -
-
- ))} -
+ {/* Support Options */} +
+
+
+

How you can help—pick what fits

+

+ Whether you join the Academy, pledge monthly, or tip once, every contribution sustains the whole community. +

+
- {/* Philosophy: Ads vs Community */} -
-
-

Why not just run ads & sponsors?

-

- Because it quietly changes what we make and who we serve. We’d rather be accountable to you. -

-
+
+ {supportTiers.map((tier) => ( + + +
+ {tier.icon} + {tier.name} +
+

{tier.blurb}

+
+ +
    + {tier.perks.map((perk) => ( +
  • +
  • + ))} +
+ + {tier.cta} + +
+
+ ))} +
-
- - -
-
-
- -
    - {adVsCommunity.ads.map((t) => ( -
  • -
  • - ))} -
-
-
+ {/* Philosophy: Ads vs Community */} +
+
+

Why not just run ads & sponsors?

+

+ Because it quietly changes what we make and who we serve. +

+

We’d rather be accountable to you.

+
- - -
-
-
- -
    - {adVsCommunity.community.map((t) => ( -
  • -
  • - ))} -
-
-
-
-
+
+ {/* Dim outline for Advertising box */} + + +
+
+
+ +
    + {adVsCommunity.ads.map((t) => ( +
  • +
  • + ))} +
+
+
- {/* Divider */} -
+ {/* Brighter outline for Community box */} + + +
+
+
+ +
    + {adVsCommunity.community.map((t) => ( +
  • +
  • + ))} +
+
+
+
+
- {/* Other ways */} -
-

No budget? No problem—here’s how to help for free

-
-
    - {[ - "Share our videos with a friend", - "Star + share our repos/tools", - "Submit laser settings & materials", - "Report bugs and suggest features", - ].map((item) => ( -
  • -
  • - ))} -
-
-
+ {/* Divider */} +
- {/* Closing statement */} -
-

- Laser Everything exists because makers before you chose to keep the ladder down. If we each do a small part— - we never need a paywall. -

-
-
-
-
- ); -} + {/* Other ways */} +
+

No budget? No problem—here’s how to help for free

+
+
    + {[ + "Share our videos with a friend", + "Star + share our repos/tools", + "Submit laser settings & materials", + "Report bugs and suggest features", + ].map((item) => ( +
  • +
  • + ))} +
+
+
+ + {/* Closing statement */} +
+

+ Laser Everything exists because makers before you chose to keep the ladder down. If we each do a small part— + we never need a paywall. +

+
+
+ + + ); + }