|
2 | 2 | <div class="relative h-fit">
|
3 | 3 | <div class="absolute w-full h-full -z-1 pointer-events-none xl:p-4">
|
4 | 4 | <div class="relative w-full h-full overflow-hidden">
|
5 |
| - <div |
6 |
| - class="absolute bg-gray-800 w-full h-full xl:rounded-2xl" |
7 |
| - /> |
8 |
| - <canvas |
9 |
| - id="canvas" |
10 |
| - class="absolute block w-full h-full xl:rounded-2xl" |
11 |
| - /> |
| 5 | + <div class="absolute bg-gray-800 w-full h-full xl:rounded-2xl" /> |
| 6 | + <canvas id="canvas" class="absolute block w-full h-full xl:rounded-2xl" /> |
12 | 7 | </div>
|
13 | 8 | </div>
|
14 |
| - <header |
15 |
| - id="header" |
16 |
| - class="relative flex justify-center items-center w-full h-fit" |
17 |
| - > |
| 9 | + <header id="header" class="relative flex justify-center items-center w-full h-fit"> |
18 | 10 | <div
|
19 |
| - class="flex flex-col lg:flex-row justify-center items-center gap-4 w-full max-w-6xl mx-auto px-2 md:px-8 py-12" |
20 |
| - > |
21 |
| - <section |
22 |
| - class="flex flex-[4] flex-col gap-6 md:gap-4 px-6 sm:px-0" |
23 |
| - > |
24 |
| - <h1 |
25 |
| - class="text-4xl md:text-6xl text-white font-semibold title-shadow" |
26 |
| - style="line-height: 1.375" |
27 |
| - > |
| 11 | + class="flex flex-col lg:flex-row justify-center items-center gap-4 w-full max-w-6xl mx-auto px-2 md:px-8 py-12"> |
| 12 | + <section class="flex flex-[4] flex-col gap-6 md:gap-4 px-6 sm:px-0"> |
| 13 | + <h1 class="text-4xl md:text-6xl text-white font-semibold title-shadow" style="line-height: 1.375"> |
28 | 14 | Fully Type-Safe<br />Web Framework
|
29 | 15 | </h1>
|
30 | 16 | <p class="text-white/90 text-2xl font-semibold">
|
31 | 17 | Optimized for
|
32 |
| - <a |
33 |
| - href="https://bun.sh" |
34 |
| - target="_blank" |
35 |
| - class="underline" |
36 |
| - > |
| 18 | + <a href="https://bun.sh" target="_blank" class="underline"> |
37 | 19 | Bun
|
38 | 20 | </a>
|
39 | 21 | </p>
|
40 |
| - <ul |
41 |
| - class="text-xl md:text-2xl text-white/90 title-shadow leading-relaxed list-dash leading-loose" |
42 |
| - > |
| 22 | + <ul class="text-xl md:text-2xl text-white/90 title-shadow leading-relaxed list-dash leading-loose"> |
43 | 23 | <li>Familiar Syntax like Express</li>
|
44 | 24 | <li>Fast by default like Fastify</li>
|
45 | 25 | <li>End-to-end type safety like tRPC</li>
|
46 | 26 | </ul>
|
47 | 27 |
|
48 |
| - <div |
49 |
| - class="flex flex-col sm:flex-row justify-start items-start text-2xl gap-2 mt-4" |
50 |
| - > |
51 |
| - <a |
52 |
| - href="/introduction" |
53 |
| - class="px-6 py-3 bg-black/10 hover:bg-black/25 focus:bg-black/25 backdrop-filter backdrop-blur-sm rounded-xl cursor-pointer transition-colors" |
54 |
| - > |
| 28 | + <div class="flex flex-col sm:flex-row justify-start items-start text-2xl gap-2 mt-4"> |
| 29 | + <a href="/introduction" |
| 30 | + class="px-6 py-3 bg-black/10 hover:bg-black/25 focus:bg-black/25 backdrop-filter backdrop-blur-sm rounded-xl cursor-pointer transition-colors"> |
55 | 31 | <p id="start" class="font-semibold text-gray-600">
|
56 | 32 | Get Started
|
57 | 33 | </p>
|
58 | 34 | </a>
|
59 |
| - <a |
60 |
| - href="/integrations/cheat-sheet" |
61 |
| - class="px-6 py-3 text-white/80 font-normal hover:bg-white/10 focus:hover:bg-white/25 backdrop-filter backdrop-blur-sm rounded-xl transition-colors" |
62 |
| - > |
| 35 | + <a href="/integrations/cheat-sheet" |
| 36 | + class="px-6 py-3 text-white/80 font-normal hover:bg-white/10 focus:hover:bg-white/25 backdrop-filter backdrop-blur-sm rounded-xl transition-colors"> |
63 | 37 | Cheat Sheet 👀
|
64 | 38 | </a>
|
65 | 39 | </div>
|
66 |
| - <small class="text-white text-lg opacity-65" |
67 |
| - >ps. it takes < 30 seconds to start</small |
68 |
| - > |
| 40 | + <small class="text-white text-lg opacity-65">ps. it takes < 30 seconds to start</small> |
69 | 41 | </section>
|
70 |
| - <section |
71 |
| - class="flex flex-[3.5] justify-start flex-col gap-6 overflow-auto shadow-2xl max-w-full" |
72 |
| - > |
| 42 | + <section class="flex flex-[3.5] justify-start flex-col gap-6 overflow-auto shadow-2xl max-w-full"> |
73 | 43 | <code
|
74 |
| - class="flex flex-col w-full px-1 backdrop-filter backdrop-blur-sm bg-white/60 dark:bg-black/40 rounded-xl border border-solid border-white/40" |
75 |
| - > |
| 44 | + class="flex flex-col w-full px-1 backdrop-filter backdrop-blur-sm bg-white/60 dark:bg-black/40 rounded-xl border border-solid border-white/40"> |
76 | 45 | <header class="flex w-full px-2 pt-3 gap-1 text-gray-600 dark:text-gray-300">
|
77 |
| - <button |
78 |
| - :class="isActive('typedClient')" |
79 |
| - class="px-2 py-1 rounded-lg transition-colors" |
80 |
| - @click="code = 'typedClient'" |
81 |
| - > |
| 46 | + <button :class="isActive('typedClient')" class="px-2 py-1 rounded-lg transition-colors" |
| 47 | + @click="code = 'typedClient'"> |
82 | 48 | Typed Client
|
83 | 49 | </button>
|
84 |
| - <button |
85 |
| - :class="isActive('swagger')" |
86 |
| - class="px-2 py-1 rounded-lg transition-colors" |
87 |
| - @click="code = 'swagger'" |
88 |
| - > |
| 50 | + <button :class="isActive('swagger')" class="px-2 py-1 rounded-lg transition-colors" |
| 51 | + @click="code = 'swagger'"> |
89 | 52 | Swagger
|
90 | 53 | </button>
|
91 |
| - <button |
92 |
| - :class="isActive('plugins')" |
93 |
| - class="px-2 py-1 rounded-lg transition-colors" |
94 |
| - @click="code = 'plugins'" |
95 |
| - > |
| 54 | + <button :class="isActive('plugins')" class="px-2 py-1 rounded-lg transition-colors" |
| 55 | + @click="code = 'plugins'"> |
96 | 56 | Plugins
|
97 | 57 | </button>
|
98 |
| - <button |
99 |
| - :class="isActive('websocket')" |
100 |
| - class="px-2 py-1 rounded-lg transition-colors" |
101 |
| - @click="code = 'websocket'" |
102 |
| - > |
| 58 | + <button :class="isActive('websocket')" class="px-2 py-1 rounded-lg transition-colors" |
| 59 | + @click="code = 'websocket'"> |
103 | 60 | WebSocket
|
104 | 61 | </button>
|
105 | 62 | </header>
|
106 |
| - <Prism |
107 |
| - language="typescript" |
108 |
| - style="margin: 0" |
109 |
| - :key="code" |
110 |
| - > |
| 63 | + <Prism language="typescript" style="margin: 0" :key="code"> |
111 | 64 | {{ codeSamples[code] }}
|
112 | 65 | </Prism>
|
113 | 66 | </code>
|
@@ -169,13 +122,11 @@ onMounted(() => {
|
169 | 122 |
|
170 | 123 | #header {
|
171 | 124 | --primary: rgba(255, 255, 255, 0.25);
|
172 |
| - background-image: radial-gradient( |
173 |
| - circle, |
174 |
| - var(--primary), |
175 |
| - var(--primary) 1.5px, |
176 |
| - transparent 1.5px, |
177 |
| - transparent |
178 |
| - ); |
| 125 | + background-image: radial-gradient(circle, |
| 126 | + var(--primary), |
| 127 | + var(--primary) 1.5px, |
| 128 | + transparent 1.5px, |
| 129 | + transparent); |
179 | 130 | background-size: 2.5rem 2.5rem;
|
180 | 131 | background-repeat: repeat;
|
181 | 132 | }
|
|
0 commit comments