main
svelte 92 lines 2.56 KB
Raw
1 <script lang="ts">
2 const features = [
3 {
4 eyebrow: 'Relay',
5 title: 'Trustless relay transport',
6 description:
7 'Relays own routing and transport, while the tunnel process owns endpoint behavior.'
8 },
9 {
10 eyebrow: 'TLS',
11 title: 'Client-side tenant TLS',
12 description:
13 'Tenant TLS terminates locally with MITM detection, so relays cannot read plaintext.'
14 },
15 {
16 eyebrow: 'HTTP',
17 title: 'Tunnel-controlled HTTP routing',
18 description:
19 'Mount frontend, API, and other local HTTP services behind one public URL.'
20 },
21 {
22 eyebrow: 'Ports',
23 title: 'Raw TCP and UDP leases',
24 description:
25 'Expose game servers, custom TCP protocols, and datagram services through relay ports.'
26 },
27 {
28 eyebrow: 'Mesh',
29 title: 'Relay pools and multi-hop',
30 description:
31 'Use discovered relays for failover or chain relays to split path visibility.'
32 },
33 {
34 eyebrow: 'Ops',
35 title: 'Self-hosted or public relays',
36 description:
37 'Run your own relay, attach explicit relays, or use the public relay registry.'
38 }
39 ] as const;
40 </script>
41
42 <div class="relative -mx-4 w-auto sm:-mx-6 md:-mx-8">
43 <div class="mx-auto max-w-6xl px-4 pb-5 text-left sm:px-6">
44 <div class="space-y-2">
45 <p
46 class="text-sm font-semibold uppercase tracking-[0.3em]"
47 style="color: var(--neon-cyan);"
48 >
49 Core features
50 </p>
51 <h2
52 class="text-3xl font-semibold tracking-tight"
53 style="color: var(--foreground);"
54 >
55 Built for real localhost publishing
56 </h2>
57 </div>
58 </div>
59 <div class="overflow-hidden border-t" style="border-color: var(--border); background: color-mix(in oklch, var(--border) 70%, transparent);">
60 <div class="grid gap-px sm:grid-cols-2 lg:grid-cols-3">
61 {#each features as { eyebrow, title, description } (title)}
62 <article
63 class="flex min-h-52 bg-background/[0.88] p-6 text-left transition-colors duration-200 hover:bg-background/[0.92] sm:min-h-56 sm:p-7"
64 >
65 <div class="flex h-full flex-col space-y-3">
66 <p
67 class="text-[11px] font-semibold uppercase tracking-[0.24em] text-primary/80"
68 >
69 {eyebrow}
70 </p>
71 <h3
72 class="text-[1.2rem] font-semibold tracking-tight text-foreground sm:text-[1.32rem] sm:leading-tight"
73 >
74 {title}
75 </h3>
76 <p
77 class="max-w-[28ch] text-[0.95rem] leading-6 text-text-muted"
78 >
79 {description}
80 </p>
81 <div class="mt-auto pt-4">
82 <div
83 class="h-px w-12"
84 style="background: var(--gradient-primary-fade);"
85 ></div>
86 </div>
87 </div>
88 </article>
89 {/each}
90 </div>
91 </div>
92 </div>