feat(ui): expose app theme contract and public components
This commit is contained in:
@@ -1,10 +1,365 @@
|
||||
component ResourcesMegaMenu {
|
||||
props {
|
||||
title = ""
|
||||
description = ""
|
||||
open = false
|
||||
closeLabel = "Close"
|
||||
class = ""
|
||||
}
|
||||
view { <div data-show="open" class="wire-overlay wire-catalog-overlay {class}"><section role="dialog" aria-modal="true" aria-label="{title}" class="wire-dialog"><header><h2 data-show="title" class="wire-dialog__title">{title}</h2><p data-show="description" class="wire-dialog__description">{description}</p></header><slot /><button type="button" class="wire-btn wire-btn--ghost">{closeLabel}</button></section></div> }
|
||||
props {
|
||||
class: string = ""
|
||||
}
|
||||
view {
|
||||
<div
|
||||
class="border-t border-slate-200 bg-white shadow-2xl shadow-slate-950/10 dark:border-white/10 dark:bg-slate-950 dark:shadow-black/30 {class}"
|
||||
>
|
||||
<div class="mx-auto max-w-7xl px-6 py-8 lg:px-10">
|
||||
<div class="grid gap-8 lg:grid-cols-[minmax(0,1.55fr)_minmax(18rem,0.8fr)]">
|
||||
|
||||
<!-- Resource links -->
|
||||
<section>
|
||||
<div class="mb-5 flex items-end justify-between gap-6">
|
||||
<div>
|
||||
<p class="text-xs font-semibold uppercase tracking-[0.16em] text-indigo-600 dark:text-indigo-400">
|
||||
Resources
|
||||
</p>
|
||||
|
||||
<h2 class="mt-2 text-lg font-bold tracking-tight text-slate-950 dark:text-white">
|
||||
Learn, build, and get support
|
||||
</h2>
|
||||
|
||||
<p class="mt-1 text-sm text-slate-500 dark:text-slate-400">
|
||||
Explore practical guides, customer stories, product updates,
|
||||
and security resources.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<a
|
||||
href="/resources"
|
||||
class="group hidden items-center gap-2 text-sm font-semibold text-indigo-600 transition hover:text-indigo-800 dark:text-indigo-400 dark:hover:text-indigo-300 xl:inline-flex"
|
||||
>
|
||||
View all resources
|
||||
|
||||
<span class="icon-[lucide--arrow-right] h-4 w-4 transition-transform group-hover:translate-x-1" aria-hidden="true" ></span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="grid gap-2 md:grid-cols-2">
|
||||
|
||||
<!-- Blog -->
|
||||
<a
|
||||
href="/blog"
|
||||
class="group flex items-start gap-4 rounded-2xl border border-transparent p-4 transition hover:border-indigo-200 hover:bg-indigo-50 dark:hover:border-indigo-500/20 dark:hover:bg-indigo-500/10"
|
||||
>
|
||||
<span
|
||||
class="grid h-11 w-11 shrink-0 place-items-center rounded-xl bg-indigo-100 text-indigo-700 transition group-hover:bg-indigo-600 group-hover:text-white dark:bg-indigo-500/15 dark:text-indigo-300 dark:group-hover:bg-indigo-500 dark:group-hover:text-white"
|
||||
>
|
||||
<span class="icon-[lucide--newspaper] h-5 w-5" aria-hidden="true" ></span>
|
||||
</span>
|
||||
|
||||
<span class="min-w-0">
|
||||
<span class="flex items-center gap-2">
|
||||
<span class="text-sm font-semibold text-slate-950 dark:text-white">
|
||||
Blog
|
||||
</span>
|
||||
|
||||
<span class="icon-[lucide--arrow-up-right] h-3.5 w-3.5 text-slate-300 opacity-0 transition group-hover:translate-x-0.5 group-hover:-translate-y-0.5 group-hover:text-indigo-600 group-hover:opacity-100 dark:text-slate-600 dark:group-hover:text-indigo-300" aria-hidden="true" ></span>
|
||||
</span>
|
||||
|
||||
<span class="mt-1 block text-xs leading-5 text-slate-500 dark:text-slate-400">
|
||||
Product updates, engineering insights, identity trends, and
|
||||
company news.
|
||||
</span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<!-- Customer stories -->
|
||||
<a
|
||||
href="/customers"
|
||||
class="group flex items-start gap-4 rounded-2xl border border-transparent p-4 transition hover:border-violet-200 hover:bg-violet-50 dark:hover:border-violet-500/20 dark:hover:bg-violet-500/10"
|
||||
>
|
||||
<span
|
||||
class="grid h-11 w-11 shrink-0 place-items-center rounded-xl bg-violet-100 text-violet-700 transition group-hover:bg-violet-600 group-hover:text-white dark:bg-violet-500/15 dark:text-violet-300 dark:group-hover:bg-violet-500 dark:group-hover:text-white"
|
||||
>
|
||||
<span class="icon-[lucide--users-round] h-5 w-5" aria-hidden="true" ></span>
|
||||
</span>
|
||||
|
||||
<span class="min-w-0">
|
||||
<span class="flex items-center gap-2">
|
||||
<span class="text-sm font-semibold text-slate-950 dark:text-white">
|
||||
Customer stories
|
||||
</span>
|
||||
|
||||
<span class="icon-[lucide--arrow-up-right] h-3.5 w-3.5 text-slate-300 opacity-0 transition group-hover:translate-x-0.5 group-hover:-translate-y-0.5 group-hover:text-violet-600 group-hover:opacity-100 dark:text-slate-600 dark:group-hover:text-violet-300" aria-hidden="true" ></span>
|
||||
</span>
|
||||
|
||||
<span class="mt-1 block text-xs leading-5 text-slate-500 dark:text-slate-400">
|
||||
See how teams use WrNexus to secure and scale their
|
||||
applications.
|
||||
</span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<!-- Guides -->
|
||||
<a
|
||||
href="/guides"
|
||||
class="group flex items-start gap-4 rounded-2xl border border-transparent p-4 transition hover:border-cyan-200 hover:bg-cyan-50 dark:hover:border-cyan-500/20 dark:hover:bg-cyan-500/10"
|
||||
>
|
||||
<span
|
||||
class="grid h-11 w-11 shrink-0 place-items-center rounded-xl bg-cyan-100 text-cyan-700 transition group-hover:bg-cyan-600 group-hover:text-white dark:bg-cyan-500/15 dark:text-cyan-300 dark:group-hover:bg-cyan-500 dark:group-hover:text-white"
|
||||
>
|
||||
<span class="icon-[lucide--book-marked] h-5 w-5" aria-hidden="true" ></span>
|
||||
</span>
|
||||
|
||||
<span class="min-w-0">
|
||||
<span class="flex items-center gap-2">
|
||||
<span class="text-sm font-semibold text-slate-950 dark:text-white">
|
||||
Guides
|
||||
</span>
|
||||
|
||||
<span class="icon-[lucide--arrow-up-right] h-3.5 w-3.5 text-slate-300 opacity-0 transition group-hover:translate-x-0.5 group-hover:-translate-y-0.5 group-hover:text-cyan-600 group-hover:opacity-100 dark:text-slate-600 dark:group-hover:text-cyan-300" aria-hidden="true" ></span>
|
||||
</span>
|
||||
|
||||
<span class="mt-1 block text-xs leading-5 text-slate-500 dark:text-slate-400">
|
||||
Practical identity, security, SaaS, and architecture
|
||||
walkthroughs.
|
||||
</span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<!-- Help center -->
|
||||
<a
|
||||
href="/help"
|
||||
class="group flex items-start gap-4 rounded-2xl border border-transparent p-4 transition hover:border-emerald-200 hover:bg-emerald-50 dark:hover:border-emerald-500/20 dark:hover:bg-emerald-500/10"
|
||||
>
|
||||
<span
|
||||
class="grid h-11 w-11 shrink-0 place-items-center rounded-xl bg-emerald-100 text-emerald-700 transition group-hover:bg-emerald-600 group-hover:text-white dark:bg-emerald-500/15 dark:text-emerald-300 dark:group-hover:bg-emerald-500 dark:group-hover:text-white"
|
||||
>
|
||||
<span class="icon-[lucide--circle-help] h-5 w-5" aria-hidden="true" ></span>
|
||||
</span>
|
||||
|
||||
<span class="min-w-0">
|
||||
<span class="flex items-center gap-2">
|
||||
<span class="text-sm font-semibold text-slate-950 dark:text-white">
|
||||
Help center
|
||||
</span>
|
||||
|
||||
<span class="icon-[lucide--arrow-up-right] h-3.5 w-3.5 text-slate-300 opacity-0 transition group-hover:translate-x-0.5 group-hover:-translate-y-0.5 group-hover:text-emerald-600 group-hover:opacity-100 dark:text-slate-600 dark:group-hover:text-emerald-300" aria-hidden="true" ></span>
|
||||
</span>
|
||||
|
||||
<span class="mt-1 block text-xs leading-5 text-slate-500 dark:text-slate-400">
|
||||
Find answers for account, workspace, billing, and security
|
||||
questions.
|
||||
</span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<!-- Security -->
|
||||
<a
|
||||
href="/security"
|
||||
class="group flex items-start gap-4 rounded-2xl border border-transparent p-4 transition hover:border-amber-200 hover:bg-amber-50 dark:hover:border-amber-500/20 dark:hover:bg-amber-500/10"
|
||||
>
|
||||
<span
|
||||
class="grid h-11 w-11 shrink-0 place-items-center rounded-xl bg-amber-100 text-amber-700 transition group-hover:bg-amber-600 group-hover:text-white dark:bg-amber-500/15 dark:text-amber-300 dark:group-hover:bg-amber-500 dark:group-hover:text-white"
|
||||
>
|
||||
<span class="icon-[lucide--shield-check] h-5 w-5" aria-hidden="true" ></span>
|
||||
</span>
|
||||
|
||||
<span class="min-w-0">
|
||||
<span class="flex items-center gap-2">
|
||||
<span class="text-sm font-semibold text-slate-950 dark:text-white">
|
||||
Security
|
||||
</span>
|
||||
|
||||
<span class="icon-[lucide--arrow-up-right] h-3.5 w-3.5 text-slate-300 opacity-0 transition group-hover:translate-x-0.5 group-hover:-translate-y-0.5 group-hover:text-amber-600 group-hover:opacity-100 dark:text-slate-600 dark:group-hover:text-amber-300" aria-hidden="true" ></span>
|
||||
</span>
|
||||
|
||||
<span class="mt-1 block text-xs leading-5 text-slate-500 dark:text-slate-400">
|
||||
Learn how WrNexus protects accounts, sessions, and
|
||||
organizations.
|
||||
</span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<!-- Trust center -->
|
||||
<a
|
||||
href="/trust"
|
||||
class="group flex items-start gap-4 rounded-2xl border border-transparent p-4 transition hover:border-rose-200 hover:bg-rose-50 dark:hover:border-rose-500/20 dark:hover:bg-rose-500/10"
|
||||
>
|
||||
<span
|
||||
class="grid h-11 w-11 shrink-0 place-items-center rounded-xl bg-rose-100 text-rose-700 transition group-hover:bg-rose-600 group-hover:text-white dark:bg-rose-500/15 dark:text-rose-300 dark:group-hover:bg-rose-500 dark:group-hover:text-white"
|
||||
>
|
||||
<span class="icon-[lucide--badge-check] h-5 w-5" aria-hidden="true" ></span>
|
||||
</span>
|
||||
|
||||
<span class="min-w-0">
|
||||
<span class="flex items-center gap-2">
|
||||
<span class="text-sm font-semibold text-slate-950 dark:text-white">
|
||||
Trust center
|
||||
</span>
|
||||
|
||||
<span class="icon-[lucide--arrow-up-right] h-3.5 w-3.5 text-slate-300 opacity-0 transition group-hover:translate-x-0.5 group-hover:-translate-y-0.5 group-hover:text-rose-600 group-hover:opacity-100 dark:text-slate-600 dark:group-hover:text-rose-300" aria-hidden="true" ></span>
|
||||
</span>
|
||||
|
||||
<span class="mt-1 block text-xs leading-5 text-slate-500 dark:text-slate-400">
|
||||
Review compliance, privacy, infrastructure, and operational
|
||||
controls.
|
||||
</span>
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<a
|
||||
href="/resources"
|
||||
class="mt-4 flex items-center justify-center gap-2 rounded-xl border border-indigo-200 bg-indigo-50 px-4 py-3 text-sm font-semibold text-indigo-700 transition hover:border-indigo-300 hover:bg-indigo-100 dark:border-indigo-500/20 dark:bg-indigo-500/10 dark:text-indigo-300 dark:hover:border-indigo-500/30 dark:hover:bg-indigo-500/15 xl:hidden"
|
||||
>
|
||||
View all resources
|
||||
|
||||
<span class="icon-[lucide--arrow-right] h-4 w-4" aria-hidden="true" ></span>
|
||||
</a>
|
||||
</section>
|
||||
|
||||
<!-- Featured resource -->
|
||||
<aside
|
||||
class="relative overflow-hidden rounded-3xl border border-indigo-200 bg-linear-to-br from-indigo-50 via-white to-cyan-50 p-6 dark:border-indigo-500/20 dark:from-indigo-500/10 dark:via-slate-900 dark:to-cyan-500/10"
|
||||
>
|
||||
<div aria-hidden="true" class="absolute -right-16 -top-16 h-40 w-40 rounded-full bg-indigo-300/30 blur-3xl dark:bg-indigo-500/10" ></div>
|
||||
|
||||
<div aria-hidden="true" class="absolute -bottom-20 -left-16 h-40 w-40 rounded-full bg-cyan-300/30 blur-3xl dark:bg-cyan-500/10" ></div>
|
||||
|
||||
<div class="relative">
|
||||
<span
|
||||
class="inline-flex items-center gap-2 rounded-full border border-indigo-200 bg-white/80 px-3 py-1.5 text-xs font-semibold text-indigo-700 backdrop-blur-sm dark:border-indigo-500/20 dark:bg-white/5 dark:text-indigo-300"
|
||||
>
|
||||
<span class="icon-[lucide--sparkles] h-3.5 w-3.5" aria-hidden="true" ></span>
|
||||
|
||||
Featured guide
|
||||
</span>
|
||||
|
||||
<div
|
||||
class="mt-5 grid h-12 w-12 place-items-center rounded-2xl bg-indigo-600 text-white shadow-lg shadow-indigo-600/20"
|
||||
>
|
||||
<span class="icon-[lucide--book-open-check] h-6 w-6" aria-hidden="true" ></span>
|
||||
</div>
|
||||
|
||||
<h3 class="mt-5 text-xl font-bold tracking-tight text-slate-950 dark:text-white">
|
||||
The modern SaaS identity checklist
|
||||
</h3>
|
||||
|
||||
<p class="mt-3 text-sm leading-6 text-slate-600 dark:text-slate-400">
|
||||
A practical checklist covering authentication, organizations,
|
||||
permissions, MFA, recovery, sessions, and enterprise SSO.
|
||||
</p>
|
||||
|
||||
<div class="mt-5 space-y-3">
|
||||
<div class="flex items-center gap-3">
|
||||
<span
|
||||
class="grid h-7 w-7 shrink-0 place-items-center rounded-full bg-indigo-100 text-indigo-700 dark:bg-indigo-500/15 dark:text-indigo-300"
|
||||
>
|
||||
<span class="icon-[lucide--check] h-4 w-4" aria-hidden="true" ></span>
|
||||
</span>
|
||||
|
||||
<span class="text-sm text-slate-700 dark:text-slate-300">
|
||||
Secure authentication foundations
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="flex items-center gap-3">
|
||||
<span
|
||||
class="grid h-7 w-7 shrink-0 place-items-center rounded-full bg-indigo-100 text-indigo-700 dark:bg-indigo-500/15 dark:text-indigo-300"
|
||||
>
|
||||
<span class="icon-[lucide--check] h-4 w-4" aria-hidden="true" ></span>
|
||||
</span>
|
||||
|
||||
<span class="text-sm text-slate-700 dark:text-slate-300">
|
||||
Multi-tenant organization design
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="flex items-center gap-3">
|
||||
<span
|
||||
class="grid h-7 w-7 shrink-0 place-items-center rounded-full bg-indigo-100 text-indigo-700 dark:bg-indigo-500/15 dark:text-indigo-300"
|
||||
>
|
||||
<span class="icon-[lucide--check] h-4 w-4" aria-hidden="true" ></span>
|
||||
</span>
|
||||
|
||||
<span class="text-sm text-slate-700 dark:text-slate-300">
|
||||
Recovery and account protection
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a
|
||||
href="/guides/saas-identity-checklist"
|
||||
class="group mt-6 flex h-11 w-full items-center justify-center gap-2 rounded-xl bg-indigo-600 px-4 text-sm font-bold text-white shadow-lg shadow-indigo-600/20 transition hover:-translate-y-0.5 hover:bg-indigo-500 hover:shadow-xl focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500 focus-visible:ring-offset-2 dark:focus-visible:ring-offset-slate-900"
|
||||
>
|
||||
Read the guide
|
||||
|
||||
<span class="icon-[lucide--arrow-right] h-4 w-4 transition-transform group-hover:translate-x-1" aria-hidden="true" ></span>
|
||||
</a>
|
||||
|
||||
<div class="mt-4 flex items-center justify-center gap-4 text-xs text-slate-500 dark:text-slate-400">
|
||||
<span class="inline-flex items-center gap-1.5">
|
||||
<span class="icon-[lucide--clock-3] h-4 w-4" aria-hidden="true" ></span>
|
||||
|
||||
12 min read
|
||||
</span>
|
||||
|
||||
<span class="inline-flex items-center gap-1.5">
|
||||
<span class="icon-[lucide--download] h-4 w-4" aria-hidden="true" ></span>
|
||||
|
||||
PDF available
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
<!-- Bottom resource links -->
|
||||
<div
|
||||
class="mt-7 flex flex-wrap items-center justify-between gap-4 border-t border-slate-200 pt-5 dark:border-white/10"
|
||||
>
|
||||
<div class="flex flex-wrap items-center gap-x-6 gap-y-3">
|
||||
<a
|
||||
href="/webinars"
|
||||
class="inline-flex items-center gap-2 text-sm font-semibold text-slate-600 transition hover:text-indigo-700 dark:text-slate-400 dark:hover:text-indigo-300"
|
||||
>
|
||||
<span class="icon-[lucide--presentation] h-4 w-4" aria-hidden="true" ></span>
|
||||
|
||||
Webinars
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/events"
|
||||
class="inline-flex items-center gap-2 text-sm font-semibold text-slate-600 transition hover:text-indigo-700 dark:text-slate-400 dark:hover:text-indigo-300"
|
||||
>
|
||||
<span class="icon-[lucide--calendar-days] h-4 w-4" aria-hidden="true" ></span>
|
||||
|
||||
Events
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/reports"
|
||||
class="inline-flex items-center gap-2 text-sm font-semibold text-slate-600 transition hover:text-indigo-700 dark:text-slate-400 dark:hover:text-indigo-300"
|
||||
>
|
||||
<span class="icon-[lucide--file-chart-column] h-4 w-4" aria-hidden="true" ></span>
|
||||
|
||||
Reports
|
||||
</a>
|
||||
|
||||
<a
|
||||
href="/newsletter"
|
||||
class="inline-flex items-center gap-2 text-sm font-semibold text-slate-600 transition hover:text-indigo-700 dark:text-slate-400 dark:hover:text-indigo-300"
|
||||
>
|
||||
<span class="icon-[lucide--mail-plus] h-4 w-4" aria-hidden="true" ></span>
|
||||
|
||||
Newsletter
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<a
|
||||
href="/contact"
|
||||
class="group inline-flex items-center gap-2 text-sm font-semibold text-indigo-600 transition hover:text-indigo-800 dark:text-indigo-400 dark:hover:text-indigo-300"
|
||||
>
|
||||
Contact our team
|
||||
|
||||
<span class="icon-[lucide--arrow-up-right] h-4 w-4 transition-transform group-hover:translate-x-0.5 group-hover:-translate-y-0.5" aria-hidden="true" ></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user