update lisensi prosess
tests / ci (push) Has been cancelled

This commit is contained in:
Wian Drs
2026-08-25 13:43:55 +07:00
parent 1e80be180e
commit 60946ddf37
58 changed files with 2903 additions and 165 deletions
+175 -12
View File
@@ -1,5 +1,6 @@
import { Head, Link, usePage } from '@inertiajs/react';
import { Cloud, Network, Server, ShieldCheck } from 'lucide-react';
import { BookOpen, Cloud, Network, Server, ShieldCheck } from 'lucide-react';
import PublicThemeToggle from '@/components/public-theme-toggle';
import { dashboard, login } from '@/routes';
export default function Welcome() {
@@ -30,7 +31,7 @@ export default function Welcome() {
return (
<>
<Head title="Network Device Management" />
<main className="min-h-screen bg-slate-950 text-white">
<main className="min-h-screen bg-background text-foreground transition-colors">
<div className="mx-auto flex min-h-screen max-w-6xl flex-col px-6">
<header className="flex items-center justify-between py-6">
<div className="flex items-center gap-3">
@@ -43,17 +44,34 @@ export default function Welcome() {
<div className="font-semibold tracking-wide">
RADIQ NDM
</div>
<div className="text-xs text-sky-300">
<div className="text-xs text-sky-600 dark:text-sky-300">
Network Device Management
</div>
</div>
</div>
<Link
href={auth.user ? dashboard() : login()}
className="rounded-lg bg-sky-500 px-5 py-2.5 text-sm font-semibold text-slate-950 hover:bg-sky-400"
>
{auth.user ? 'Dashboard' : 'Login'}
</Link>
<nav className="flex items-center gap-3">
<PublicThemeToggle />
<Link
href="/documentation/deployment"
className="hidden text-sm text-muted-foreground hover:text-foreground sm:inline"
>
Dokumentasi
</Link>
{!auth.user && (
<Link
href="/register"
className="rounded-lg border border-sky-500/40 px-4 py-2.5 text-sm font-semibold text-sky-600 hover:bg-sky-400/10 dark:text-sky-300"
>
Daftar Tenant
</Link>
)}
<Link
href={auth.user ? dashboard() : login()}
className="rounded-lg bg-sky-500 px-5 py-2.5 text-sm font-semibold text-slate-950 hover:bg-sky-400"
>
{auth.user ? 'Dashboard' : 'Login'}
</Link>
</nav>
</header>
<section className="grid flex-1 items-center gap-12 py-16 lg:grid-cols-2">
<div>
@@ -63,12 +81,27 @@ export default function Welcome() {
<h1 className="text-4xl font-bold tracking-tight sm:text-6xl">
Kelola akses perangkat jaringan dengan aman.
</h1>
<p className="mt-6 max-w-xl text-lg leading-8 text-slate-300">
<p className="mt-6 max-w-xl text-lg leading-8 text-muted-foreground">
Saat karyawan berpindah tugas atau keluar, akun
perangkat dapat dinonaktifkan secara terpusat
tanpa membuka setiap router, OLT, switch, atau
access point satu per satu.
</p>
<div className="mt-8 flex flex-wrap gap-3">
<Link
href="/register"
className="rounded-lg bg-sky-500 px-5 py-3 font-semibold text-slate-950 hover:bg-sky-400"
>
Mulai & Pilih Deployment
</Link>
<Link
href="/documentation/deployment"
className="inline-flex items-center gap-2 rounded-lg border border-border px-5 py-3 font-semibold hover:bg-muted"
>
<BookOpen className="size-4" /> Panduan
Instalasi & Migrasi
</Link>
</div>
</div>
<div className="flex justify-center">
<img
@@ -82,20 +115,150 @@ export default function Welcome() {
{features.map((feature) => (
<article
key={feature.title}
className="rounded-2xl border border-white/10 bg-white/5 p-5"
className="rounded-2xl border border-border bg-card p-5"
>
<feature.icon className="mb-4 size-6 text-sky-400" />
<h2 className="font-semibold">
{feature.title}
</h2>
<p className="mt-2 text-sm leading-6 text-slate-400">
<p className="mt-2 text-sm leading-6 text-muted-foreground">
{feature.text}
</p>
</article>
))}
</section>
<Pricing />
<Roadmap />
</div>
</main>
</>
);
}
const plans = [
{
name: 'Cloud Free',
price: 'Gratis',
deployment: 'Cloud RADIQ',
devices: '5 perangkat',
users: '2 user aplikasi',
featured: false,
},
{
name: 'Cloud Micro',
price: 'Rp99.000',
deployment: 'Cloud RADIQ',
devices: '25 perangkat',
users: '5 user aplikasi',
featured: false,
},
{
name: 'Cloud ISP',
price: 'Rp249.000',
deployment: 'Cloud RADIQ',
devices: '100 perangkat',
users: '15 user aplikasi',
featured: true,
},
{
name: 'Local Micro',
price: 'Rp69.000',
deployment: 'Self-hosted',
devices: '50 perangkat',
users: '5 user aplikasi',
featured: false,
},
{
name: 'Local ISP',
price: 'Rp149.000',
deployment: 'Self-hosted',
devices: '250 perangkat',
users: '20 user aplikasi',
featured: false,
},
];
function Pricing() {
return (
<section id="harga" className="py-16">
<div className="mx-auto max-w-3xl text-center">
<p className="text-sm font-semibold text-sky-600 dark:text-sky-400">
HARGA EARLY ACCESS
</p>
<h2 className="mt-3 text-3xl font-bold">
Lisensi bulanan yang ramah untuk ISP lokal
</h2>
<p className="mt-3 text-muted-foreground">
Tidak ada kontrak tahunan wajib. User perangkat tidak
dihitung sebagai user aplikasi.
</p>
</div>
<div className="mt-9 grid gap-4 md:grid-cols-2 xl:grid-cols-5">
{plans.map((plan) => (
<article
key={plan.name}
className={`relative rounded-2xl border p-5 ${plan.featured ? 'border-sky-500 bg-sky-500/5 shadow-lg shadow-sky-500/10' : 'border-border bg-card'}`}
>
{plan.featured && (
<span className="absolute -top-3 left-4 rounded-full bg-sky-500 px-3 py-1 text-xs font-semibold text-slate-950">
Paling sesuai ISP
</span>
)}
<p className="text-sm font-semibold text-sky-600 dark:text-sky-400">
{plan.deployment}
</p>
<h3 className="mt-2 text-xl font-bold">{plan.name}</h3>
<p className="mt-4 text-2xl font-bold">
{plan.price}
{plan.price !== 'Gratis' && (
<span className="text-sm font-normal text-muted-foreground">
/bulan
</span>
)}
</p>
<ul className="mt-5 space-y-2 text-sm text-muted-foreground">
<li>✓ Hingga {plan.devices}</li>
<li>✓ Hingga {plan.users}</li>
<li>✓ Users Perangkat tanpa batas</li>
<li>✓ Update aplikasi</li>
<li>✓ Dukungan dasar</li>
</ul>
<Link
href="/register"
className="mt-6 block rounded-lg bg-sky-500 px-4 py-2.5 text-center text-sm font-semibold text-slate-950 hover:bg-sky-400"
>
Pilih paket
</Link>
</article>
))}
</div>
<p className="mt-5 text-center text-xs leading-5 text-muted-foreground">
Harga belum termasuk PPN, VPS/server tenant, instalasi khusus,
atau migrasi manual. Harga dapat dievaluasi seiring penambahan
fitur dengan pemberitahuan sebelumnya.
</p>
</section>
);
}
function Roadmap() {
return (
<section className="pb-16">
<div className="rounded-2xl border border-border bg-muted/40 p-7">
<p className="text-sm font-semibold text-sky-600 dark:text-sky-400">
ROADMAP · BELUM TERMASUK FITUR AKTIF
</p>
<h2 className="mt-2 text-2xl font-bold">
RADIQ NDM akan tumbuh bersama kebutuhan operator jaringan.
</h2>
<p className="mt-3 max-w-3xl text-sm leading-6 text-muted-foreground">
Harga early-access saat ini mencerminkan aplikasi yang masih
sekitar 30% dari visi produk. Tahap berikutnya direncanakan
mencakup monitoring terpusat, topologi perangkat, dashboard
NOC, alert status perangkat, histori performa, backup
konfigurasi, dan dukungan vendor tambahan.
</p>
</div>
</section>
);
}