├── static
├── input.css
└── output.css
├── Makefile
├── README.md
├── package.json
├── index.tsx
├── tsconfig.json
├── src
├── Layouts.tsx
└── Home.tsx
└── bun.lock
/static/input.css:
--------------------------------------------------------------------------------
1 | @import "tailwindcss";
2 |
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | dev:
2 | bun run --hot index.tsx
3 |
4 | build:
5 | bun build --compile index.tsx --outfile goblin
6 |
7 | tw:
8 | tailwindcss -i './static/input.css' -o './static/output.css' --watch
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # goblin
2 |
3 | To install dependencies:
4 |
5 | ```bash
6 | bun install
7 | ```
8 |
9 | To run:
10 |
11 | ```bash
12 | bun run index.ts
13 | ```
14 |
15 | This project was created using `bun init` in bun v1.3.4. [Bun](https://bun.com)
16 | is a fast all-in-one JavaScript runtime.
17 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "goblin",
3 | "module": "index.ts",
4 | "type": "module",
5 | "private": true,
6 | "devDependencies": {
7 | "@types/bun": "latest"
8 | },
9 | "peerDependencies": {
10 | "typescript": "^5"
11 | },
12 | "dependencies": {
13 | "@types/react": "^19.2.7",
14 | "@types/react-dom": "^19.2.3",
15 | "react": "^19.2.3",
16 | "react-dom": "^19.2.3",
17 | "server": "react-dom/server",
18 | "xerus": "github:phillip-england/xerus"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/index.tsx:
--------------------------------------------------------------------------------
1 | // 1. Change import source
2 | import { renderToString } from "react-dom/server";
3 | import { HTTPContext, Xerus } from "xerus";
4 | import { Home } from "./src/Home";
5 | import { embedDir } from "xerus" with { type: "macro" };
6 |
7 | const app = new Xerus();
8 |
9 | let embeddedDir = embedDir("/Users/phillipengland/src/goblin/static");
10 | app.embed("/static", embeddedDir);
11 |
12 | app.get("/", async (c: HTTPContext) => {
13 | c.html(renderToString());
14 | });
15 |
16 | await app.listen(8080);
17 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | // Environment setup & latest features
4 | "lib": ["ESNext"],
5 | "target": "ESNext",
6 | "module": "Preserve",
7 | "moduleDetection": "force",
8 | "jsx": "react-jsx",
9 | "allowJs": true,
10 |
11 | // Bundler mode
12 | "moduleResolution": "bundler",
13 | "allowImportingTsExtensions": true,
14 | "verbatimModuleSyntax": true,
15 | "noEmit": true,
16 |
17 | // Best practices
18 | "strict": true,
19 | "skipLibCheck": true,
20 | "noFallthroughCasesInSwitch": true,
21 | "noUncheckedIndexedAccess": true,
22 | "noImplicitOverride": true,
23 |
24 | // Some stricter flags (disabled by default)
25 | "noUnusedLocals": false,
26 | "noUnusedParameters": false,
27 | "noPropertyAccessFromIndexSignature": false
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/Layouts.tsx:
--------------------------------------------------------------------------------
1 |
2 |
3 | export function Layout(props: {
4 | title: string;
5 | children: React.ReactNode
6 | }) {
7 | return (
8 |
9 |
10 |
11 |
12 |
13 | {props.title}
14 |
15 |
16 |
20 |
21 | Goblin
22 | Sneaky Little Prompts
23 |
24 | {props.children}
25 |
26 |
27 |
28 | );
29 | }
--------------------------------------------------------------------------------
/src/Home.tsx:
--------------------------------------------------------------------------------
1 | import { Layout } from "./Layouts";
2 |
3 | export function Home() {
4 | return (
5 |
6 |
29 |
30 | );
31 | }
32 |
--------------------------------------------------------------------------------
/bun.lock:
--------------------------------------------------------------------------------
1 | {
2 | "lockfileVersion": 1,
3 | "configVersion": 1,
4 | "workspaces": {
5 | "": {
6 | "name": "goblin",
7 | "dependencies": {
8 | "@types/react": "^19.2.7",
9 | "@types/react-dom": "^19.2.3",
10 | "xerus": "github:phillip-england/xerus",
11 | "react": "^19.2.3",
12 | "react-dom": "^19.2.3",
13 | "server": "react-dom/server",
14 | },
15 | "devDependencies": {
16 | "@types/bun": "latest",
17 | },
18 | "peerDependencies": {
19 | "typescript": "^5",
20 | },
21 | },
22 | },
23 | "packages": {
24 | "@types/bun": ["@types/bun@1.3.5", "", { "dependencies": { "bun-types": "1.3.5" } }, "sha512-RnygCqNrd3srIPEWBd5LFeUYG7plCoH2Yw9WaZGyNmdTEei+gWaHqydbaIRkIkcbXwhBT94q78QljxN0Sk838w=="],
25 |
26 | "@types/node": ["@types/node@25.0.3", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA=="],
27 |
28 | "@types/react": ["@types/react@19.2.7", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg=="],
29 |
30 | "@types/react-dom": ["@types/react-dom@19.2.3", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ=="],
31 |
32 | "bun-types": ["bun-types@1.3.5", "", { "dependencies": { "@types/node": "*" } }, "sha512-inmAYe2PFLs0SUbFOWSVD24sg1jFlMPxOjOSSCYqUgn4Hsc3rDc7dFvfVYjFPNHtov6kgUeulV4SxbuIV/stPw=="],
33 |
34 | "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="],
35 |
36 | "react": ["react@19.2.3", "", {}, "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA=="],
37 |
38 | "react-dom": ["react-dom@19.2.3", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.3" } }, "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg=="],
39 |
40 | "scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="],
41 |
42 | "server": ["server@github:react-dom/server#9c6de71", {}, "react-dom-server-9c6de71"],
43 |
44 | "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
45 |
46 | "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="],
47 |
48 | "xerus": ["xerus@github:phillip-england/xerus#015b9ff", { "dependencies": { "@types/node": "^25.0.3", "typescript": "^5.0.0", "zod": "^4.2.1" }, "bin": { "xerus": "./xerus.ts" } }, "Phillip-England-xerus-015b9ff"],
49 |
50 | "zod": ["zod@4.2.1", "", {}, "sha512-0wZ1IRqGGhMP76gLqz8EyfBXKk0J2qo2+H3fi4mcUP/KtTocoX08nmIAHl1Z2kJIZbZee8KOpBCSNPRgauucjw=="],
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/static/output.css:
--------------------------------------------------------------------------------
1 | /*! tailwindcss v4.0.0 | MIT License | https://tailwindcss.com */
2 | @layer theme, base, components, utilities;
3 | @layer theme {
4 | :root {
5 | --font-sans: ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
6 | 'Segoe UI Symbol', 'Noto Color Emoji';
7 | --font-serif: ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif;
8 | --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono',
9 | 'Courier New', monospace;
10 | --color-red-50: oklch(0.971 0.013 17.38);
11 | --color-red-100: oklch(0.936 0.032 17.717);
12 | --color-red-200: oklch(0.885 0.062 18.334);
13 | --color-red-300: oklch(0.808 0.114 19.571);
14 | --color-red-400: oklch(0.704 0.191 22.216);
15 | --color-red-500: oklch(0.637 0.237 25.331);
16 | --color-red-600: oklch(0.577 0.245 27.325);
17 | --color-red-700: oklch(0.505 0.213 27.518);
18 | --color-red-800: oklch(0.444 0.177 26.899);
19 | --color-red-900: oklch(0.396 0.141 25.723);
20 | --color-red-950: oklch(0.258 0.092 26.042);
21 | --color-orange-50: oklch(0.98 0.016 73.684);
22 | --color-orange-100: oklch(0.954 0.038 75.164);
23 | --color-orange-200: oklch(0.901 0.076 70.697);
24 | --color-orange-300: oklch(0.837 0.128 66.29);
25 | --color-orange-400: oklch(0.75 0.183 55.934);
26 | --color-orange-500: oklch(0.705 0.213 47.604);
27 | --color-orange-600: oklch(0.646 0.222 41.116);
28 | --color-orange-700: oklch(0.553 0.195 38.402);
29 | --color-orange-800: oklch(0.47 0.157 37.304);
30 | --color-orange-900: oklch(0.408 0.123 38.172);
31 | --color-orange-950: oklch(0.266 0.079 36.259);
32 | --color-amber-50: oklch(0.987 0.022 95.277);
33 | --color-amber-100: oklch(0.962 0.059 95.617);
34 | --color-amber-200: oklch(0.924 0.12 95.746);
35 | --color-amber-300: oklch(0.879 0.169 91.605);
36 | --color-amber-400: oklch(0.828 0.189 84.429);
37 | --color-amber-500: oklch(0.769 0.188 70.08);
38 | --color-amber-600: oklch(0.666 0.179 58.318);
39 | --color-amber-700: oklch(0.555 0.163 48.998);
40 | --color-amber-800: oklch(0.473 0.137 46.201);
41 | --color-amber-900: oklch(0.414 0.112 45.904);
42 | --color-amber-950: oklch(0.279 0.077 45.635);
43 | --color-yellow-50: oklch(0.987 0.026 102.212);
44 | --color-yellow-100: oklch(0.973 0.071 103.193);
45 | --color-yellow-200: oklch(0.945 0.129 101.54);
46 | --color-yellow-300: oklch(0.905 0.182 98.111);
47 | --color-yellow-400: oklch(0.852 0.199 91.936);
48 | --color-yellow-500: oklch(0.795 0.184 86.047);
49 | --color-yellow-600: oklch(0.681 0.162 75.834);
50 | --color-yellow-700: oklch(0.554 0.135 66.442);
51 | --color-yellow-800: oklch(0.476 0.114 61.907);
52 | --color-yellow-900: oklch(0.421 0.095 57.708);
53 | --color-yellow-950: oklch(0.286 0.066 53.813);
54 | --color-lime-50: oklch(0.986 0.031 120.757);
55 | --color-lime-100: oklch(0.967 0.067 122.328);
56 | --color-lime-200: oklch(0.938 0.127 124.321);
57 | --color-lime-300: oklch(0.897 0.196 126.665);
58 | --color-lime-400: oklch(0.841 0.238 128.85);
59 | --color-lime-500: oklch(0.768 0.233 130.85);
60 | --color-lime-600: oklch(0.648 0.2 131.684);
61 | --color-lime-700: oklch(0.532 0.157 131.589);
62 | --color-lime-800: oklch(0.453 0.124 130.933);
63 | --color-lime-900: oklch(0.405 0.101 131.063);
64 | --color-lime-950: oklch(0.274 0.072 132.109);
65 | --color-green-50: oklch(0.982 0.018 155.826);
66 | --color-green-100: oklch(0.962 0.044 156.743);
67 | --color-green-200: oklch(0.925 0.084 155.995);
68 | --color-green-300: oklch(0.871 0.15 154.449);
69 | --color-green-400: oklch(0.792 0.209 151.711);
70 | --color-green-500: oklch(0.723 0.219 149.579);
71 | --color-green-600: oklch(0.627 0.194 149.214);
72 | --color-green-700: oklch(0.527 0.154 150.069);
73 | --color-green-800: oklch(0.448 0.119 151.328);
74 | --color-green-900: oklch(0.393 0.095 152.535);
75 | --color-green-950: oklch(0.266 0.065 152.934);
76 | --color-emerald-50: oklch(0.979 0.021 166.113);
77 | --color-emerald-100: oklch(0.95 0.052 163.051);
78 | --color-emerald-200: oklch(0.905 0.093 164.15);
79 | --color-emerald-300: oklch(0.845 0.143 164.978);
80 | --color-emerald-400: oklch(0.765 0.177 163.223);
81 | --color-emerald-500: oklch(0.696 0.17 162.48);
82 | --color-emerald-600: oklch(0.596 0.145 163.225);
83 | --color-emerald-700: oklch(0.508 0.118 165.612);
84 | --color-emerald-800: oklch(0.432 0.095 166.913);
85 | --color-emerald-900: oklch(0.378 0.077 168.94);
86 | --color-emerald-950: oklch(0.262 0.051 172.552);
87 | --color-teal-50: oklch(0.984 0.014 180.72);
88 | --color-teal-100: oklch(0.953 0.051 180.801);
89 | --color-teal-200: oklch(0.91 0.096 180.426);
90 | --color-teal-300: oklch(0.855 0.138 181.071);
91 | --color-teal-400: oklch(0.777 0.152 181.912);
92 | --color-teal-500: oklch(0.704 0.14 182.503);
93 | --color-teal-600: oklch(0.6 0.118 184.704);
94 | --color-teal-700: oklch(0.511 0.096 186.391);
95 | --color-teal-800: oklch(0.437 0.078 188.216);
96 | --color-teal-900: oklch(0.386 0.063 188.416);
97 | --color-teal-950: oklch(0.277 0.046 192.524);
98 | --color-cyan-50: oklch(0.984 0.019 200.873);
99 | --color-cyan-100: oklch(0.956 0.045 203.388);
100 | --color-cyan-200: oklch(0.917 0.08 205.041);
101 | --color-cyan-300: oklch(0.865 0.127 207.078);
102 | --color-cyan-400: oklch(0.789 0.154 211.53);
103 | --color-cyan-500: oklch(0.715 0.143 215.221);
104 | --color-cyan-600: oklch(0.609 0.126 221.723);
105 | --color-cyan-700: oklch(0.52 0.105 223.128);
106 | --color-cyan-800: oklch(0.45 0.085 224.283);
107 | --color-cyan-900: oklch(0.398 0.07 227.392);
108 | --color-cyan-950: oklch(0.302 0.056 229.695);
109 | --color-sky-50: oklch(0.977 0.013 236.62);
110 | --color-sky-100: oklch(0.951 0.026 236.824);
111 | --color-sky-200: oklch(0.901 0.058 230.902);
112 | --color-sky-300: oklch(0.828 0.111 230.318);
113 | --color-sky-400: oklch(0.746 0.16 232.661);
114 | --color-sky-500: oklch(0.685 0.169 237.323);
115 | --color-sky-600: oklch(0.588 0.158 241.966);
116 | --color-sky-700: oklch(0.5 0.134 242.749);
117 | --color-sky-800: oklch(0.443 0.11 240.79);
118 | --color-sky-900: oklch(0.391 0.09 240.876);
119 | --color-sky-950: oklch(0.293 0.066 243.157);
120 | --color-blue-50: oklch(0.97 0.014 254.604);
121 | --color-blue-100: oklch(0.932 0.032 255.585);
122 | --color-blue-200: oklch(0.882 0.059 254.128);
123 | --color-blue-300: oklch(0.809 0.105 251.813);
124 | --color-blue-400: oklch(0.707 0.165 254.624);
125 | --color-blue-500: oklch(0.623 0.214 259.815);
126 | --color-blue-600: oklch(0.546 0.245 262.881);
127 | --color-blue-700: oklch(0.488 0.243 264.376);
128 | --color-blue-800: oklch(0.424 0.199 265.638);
129 | --color-blue-900: oklch(0.379 0.146 265.522);
130 | --color-blue-950: oklch(0.282 0.091 267.935);
131 | --color-indigo-50: oklch(0.962 0.018 272.314);
132 | --color-indigo-100: oklch(0.93 0.034 272.788);
133 | --color-indigo-200: oklch(0.87 0.065 274.039);
134 | --color-indigo-300: oklch(0.785 0.115 274.713);
135 | --color-indigo-400: oklch(0.673 0.182 276.935);
136 | --color-indigo-500: oklch(0.585 0.233 277.117);
137 | --color-indigo-600: oklch(0.511 0.262 276.966);
138 | --color-indigo-700: oklch(0.457 0.24 277.023);
139 | --color-indigo-800: oklch(0.398 0.195 277.366);
140 | --color-indigo-900: oklch(0.359 0.144 278.697);
141 | --color-indigo-950: oklch(0.257 0.09 281.288);
142 | --color-violet-50: oklch(0.969 0.016 293.756);
143 | --color-violet-100: oklch(0.943 0.029 294.588);
144 | --color-violet-200: oklch(0.894 0.057 293.283);
145 | --color-violet-300: oklch(0.811 0.111 293.571);
146 | --color-violet-400: oklch(0.702 0.183 293.541);
147 | --color-violet-500: oklch(0.606 0.25 292.717);
148 | --color-violet-600: oklch(0.541 0.281 293.009);
149 | --color-violet-700: oklch(0.491 0.27 292.581);
150 | --color-violet-800: oklch(0.432 0.232 292.759);
151 | --color-violet-900: oklch(0.38 0.189 293.745);
152 | --color-violet-950: oklch(0.283 0.141 291.089);
153 | --color-purple-50: oklch(0.977 0.014 308.299);
154 | --color-purple-100: oklch(0.946 0.033 307.174);
155 | --color-purple-200: oklch(0.902 0.063 306.703);
156 | --color-purple-300: oklch(0.827 0.119 306.383);
157 | --color-purple-400: oklch(0.714 0.203 305.504);
158 | --color-purple-500: oklch(0.627 0.265 303.9);
159 | --color-purple-600: oklch(0.558 0.288 302.321);
160 | --color-purple-700: oklch(0.496 0.265 301.924);
161 | --color-purple-800: oklch(0.438 0.218 303.724);
162 | --color-purple-900: oklch(0.381 0.176 304.987);
163 | --color-purple-950: oklch(0.291 0.149 302.717);
164 | --color-fuchsia-50: oklch(0.977 0.017 320.058);
165 | --color-fuchsia-100: oklch(0.952 0.037 318.852);
166 | --color-fuchsia-200: oklch(0.903 0.076 319.62);
167 | --color-fuchsia-300: oklch(0.833 0.145 321.434);
168 | --color-fuchsia-400: oklch(0.74 0.238 322.16);
169 | --color-fuchsia-500: oklch(0.667 0.295 322.15);
170 | --color-fuchsia-600: oklch(0.591 0.293 322.896);
171 | --color-fuchsia-700: oklch(0.518 0.253 323.949);
172 | --color-fuchsia-800: oklch(0.452 0.211 324.591);
173 | --color-fuchsia-900: oklch(0.401 0.17 325.612);
174 | --color-fuchsia-950: oklch(0.293 0.136 325.661);
175 | --color-pink-50: oklch(0.971 0.014 343.198);
176 | --color-pink-100: oklch(0.948 0.028 342.258);
177 | --color-pink-200: oklch(0.899 0.061 343.231);
178 | --color-pink-300: oklch(0.823 0.12 346.018);
179 | --color-pink-400: oklch(0.718 0.202 349.761);
180 | --color-pink-500: oklch(0.656 0.241 354.308);
181 | --color-pink-600: oklch(0.592 0.249 0.584);
182 | --color-pink-700: oklch(0.525 0.223 3.958);
183 | --color-pink-800: oklch(0.459 0.187 3.815);
184 | --color-pink-900: oklch(0.408 0.153 2.432);
185 | --color-pink-950: oklch(0.284 0.109 3.907);
186 | --color-rose-50: oklch(0.969 0.015 12.422);
187 | --color-rose-100: oklch(0.941 0.03 12.58);
188 | --color-rose-200: oklch(0.892 0.058 10.001);
189 | --color-rose-300: oklch(0.81 0.117 11.638);
190 | --color-rose-400: oklch(0.712 0.194 13.428);
191 | --color-rose-500: oklch(0.645 0.246 16.439);
192 | --color-rose-600: oklch(0.586 0.253 17.585);
193 | --color-rose-700: oklch(0.514 0.222 16.935);
194 | --color-rose-800: oklch(0.455 0.188 13.697);
195 | --color-rose-900: oklch(0.41 0.159 10.272);
196 | --color-rose-950: oklch(0.271 0.105 12.094);
197 | --color-slate-50: oklch(0.984 0.003 247.858);
198 | --color-slate-100: oklch(0.968 0.007 247.896);
199 | --color-slate-200: oklch(0.929 0.013 255.508);
200 | --color-slate-300: oklch(0.869 0.022 252.894);
201 | --color-slate-400: oklch(0.704 0.04 256.788);
202 | --color-slate-500: oklch(0.554 0.046 257.417);
203 | --color-slate-600: oklch(0.446 0.043 257.281);
204 | --color-slate-700: oklch(0.372 0.044 257.287);
205 | --color-slate-800: oklch(0.279 0.041 260.031);
206 | --color-slate-900: oklch(0.208 0.042 265.755);
207 | --color-slate-950: oklch(0.129 0.042 264.695);
208 | --color-gray-50: oklch(0.985 0.002 247.839);
209 | --color-gray-100: oklch(0.967 0.003 264.542);
210 | --color-gray-200: oklch(0.928 0.006 264.531);
211 | --color-gray-300: oklch(0.872 0.01 258.338);
212 | --color-gray-400: oklch(0.707 0.022 261.325);
213 | --color-gray-500: oklch(0.551 0.027 264.364);
214 | --color-gray-600: oklch(0.446 0.03 256.802);
215 | --color-gray-700: oklch(0.373 0.034 259.733);
216 | --color-gray-800: oklch(0.278 0.033 256.848);
217 | --color-gray-900: oklch(0.21 0.034 264.665);
218 | --color-gray-950: oklch(0.13 0.028 261.692);
219 | --color-zinc-50: oklch(0.985 0 0);
220 | --color-zinc-100: oklch(0.967 0.001 286.375);
221 | --color-zinc-200: oklch(0.92 0.004 286.32);
222 | --color-zinc-300: oklch(0.871 0.006 286.286);
223 | --color-zinc-400: oklch(0.705 0.015 286.067);
224 | --color-zinc-500: oklch(0.552 0.016 285.938);
225 | --color-zinc-600: oklch(0.442 0.017 285.786);
226 | --color-zinc-700: oklch(0.37 0.013 285.805);
227 | --color-zinc-800: oklch(0.274 0.006 286.033);
228 | --color-zinc-900: oklch(0.21 0.006 285.885);
229 | --color-zinc-950: oklch(0.141 0.005 285.823);
230 | --color-neutral-50: oklch(0.985 0 0);
231 | --color-neutral-100: oklch(0.97 0 0);
232 | --color-neutral-200: oklch(0.922 0 0);
233 | --color-neutral-300: oklch(0.87 0 0);
234 | --color-neutral-400: oklch(0.708 0 0);
235 | --color-neutral-500: oklch(0.556 0 0);
236 | --color-neutral-600: oklch(0.439 0 0);
237 | --color-neutral-700: oklch(0.371 0 0);
238 | --color-neutral-800: oklch(0.269 0 0);
239 | --color-neutral-900: oklch(0.205 0 0);
240 | --color-neutral-950: oklch(0.145 0 0);
241 | --color-stone-50: oklch(0.985 0.001 106.423);
242 | --color-stone-100: oklch(0.97 0.001 106.424);
243 | --color-stone-200: oklch(0.923 0.003 48.717);
244 | --color-stone-300: oklch(0.869 0.005 56.366);
245 | --color-stone-400: oklch(0.709 0.01 56.259);
246 | --color-stone-500: oklch(0.553 0.013 58.071);
247 | --color-stone-600: oklch(0.444 0.011 73.639);
248 | --color-stone-700: oklch(0.374 0.01 67.558);
249 | --color-stone-800: oklch(0.268 0.007 34.298);
250 | --color-stone-900: oklch(0.216 0.006 56.043);
251 | --color-stone-950: oklch(0.147 0.004 49.25);
252 | --color-black: #000;
253 | --color-white: #fff;
254 | --spacing: 0.25rem;
255 | --breakpoint-sm: 40rem;
256 | --breakpoint-md: 48rem;
257 | --breakpoint-lg: 64rem;
258 | --breakpoint-xl: 80rem;
259 | --breakpoint-2xl: 96rem;
260 | --container-3xs: 16rem;
261 | --container-2xs: 18rem;
262 | --container-xs: 20rem;
263 | --container-sm: 24rem;
264 | --container-md: 28rem;
265 | --container-lg: 32rem;
266 | --container-xl: 36rem;
267 | --container-2xl: 42rem;
268 | --container-3xl: 48rem;
269 | --container-4xl: 56rem;
270 | --container-5xl: 64rem;
271 | --container-6xl: 72rem;
272 | --container-7xl: 80rem;
273 | --text-xs: 0.75rem;
274 | --text-xs--line-height: calc(1 / 0.75);
275 | --text-sm: 0.875rem;
276 | --text-sm--line-height: calc(1.25 / 0.875);
277 | --text-base: 1rem;
278 | --text-base--line-height: calc(1.5 / 1);
279 | --text-lg: 1.125rem;
280 | --text-lg--line-height: calc(1.75 / 1.125);
281 | --text-xl: 1.25rem;
282 | --text-xl--line-height: calc(1.75 / 1.25);
283 | --text-2xl: 1.5rem;
284 | --text-2xl--line-height: calc(2 / 1.5);
285 | --text-3xl: 1.875rem;
286 | --text-3xl--line-height: calc(2.25 / 1.875);
287 | --text-4xl: 2.25rem;
288 | --text-4xl--line-height: calc(2.5 / 2.25);
289 | --text-5xl: 3rem;
290 | --text-5xl--line-height: 1;
291 | --text-6xl: 3.75rem;
292 | --text-6xl--line-height: 1;
293 | --text-7xl: 4.5rem;
294 | --text-7xl--line-height: 1;
295 | --text-8xl: 6rem;
296 | --text-8xl--line-height: 1;
297 | --text-9xl: 8rem;
298 | --text-9xl--line-height: 1;
299 | --font-weight-thin: 100;
300 | --font-weight-extralight: 200;
301 | --font-weight-light: 300;
302 | --font-weight-normal: 400;
303 | --font-weight-medium: 500;
304 | --font-weight-semibold: 600;
305 | --font-weight-bold: 700;
306 | --font-weight-extrabold: 800;
307 | --font-weight-black: 900;
308 | --tracking-tighter: -0.05em;
309 | --tracking-tight: -0.025em;
310 | --tracking-normal: 0em;
311 | --tracking-wide: 0.025em;
312 | --tracking-wider: 0.05em;
313 | --tracking-widest: 0.1em;
314 | --leading-tight: 1.25;
315 | --leading-snug: 1.375;
316 | --leading-normal: 1.5;
317 | --leading-relaxed: 1.625;
318 | --leading-loose: 2;
319 | --radius-xs: 0.125rem;
320 | --radius-sm: 0.25rem;
321 | --radius-md: 0.375rem;
322 | --radius-lg: 0.5rem;
323 | --radius-xl: 0.75rem;
324 | --radius-2xl: 1rem;
325 | --radius-3xl: 1.5rem;
326 | --radius-4xl: 2rem;
327 | --shadow-2xs: 0 1px rgb(0 0 0 / 0.05);
328 | --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05);
329 | --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
330 | --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
331 | --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
332 | --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
333 | --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);
334 | --inset-shadow-2xs: inset 0 1px rgb(0 0 0 / 0.05);
335 | --inset-shadow-xs: inset 0 1px 1px rgb(0 0 0 / 0.05);
336 | --inset-shadow-sm: inset 0 2px 4px rgb(0 0 0 / 0.05);
337 | --drop-shadow-xs: 0 1px 1px rgb(0 0 0 / 0.05);
338 | --drop-shadow-sm: 0 1px 2px rgb(0 0 0 / 0.15);
339 | --drop-shadow-md: 0 3px 3px rgb(0 0 0 / 0.12);
340 | --drop-shadow-lg: 0 4px 4px rgb(0 0 0 / 0.15);
341 | --drop-shadow-xl: 0 9px 7px rgb(0 0 0 / 0.1);
342 | --drop-shadow-2xl: 0 25px 25px rgb(0 0 0 / 0.15);
343 | --ease-in: cubic-bezier(0.4, 0, 1, 1);
344 | --ease-out: cubic-bezier(0, 0, 0.2, 1);
345 | --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
346 | --animate-spin: spin 1s linear infinite;
347 | --animate-ping: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;
348 | --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
349 | --animate-bounce: bounce 1s infinite;
350 | --blur-xs: 4px;
351 | --blur-sm: 8px;
352 | --blur-md: 12px;
353 | --blur-lg: 16px;
354 | --blur-xl: 24px;
355 | --blur-2xl: 40px;
356 | --blur-3xl: 64px;
357 | --perspective-dramatic: 100px;
358 | --perspective-near: 300px;
359 | --perspective-normal: 500px;
360 | --perspective-midrange: 800px;
361 | --perspective-distant: 1200px;
362 | --aspect-video: 16 / 9;
363 | --default-transition-duration: 150ms;
364 | --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
365 | --default-font-family: var(--font-sans);
366 | --default-font-feature-settings: var(--font-sans--font-feature-settings);
367 | --default-font-variation-settings: var(--font-sans--font-variation-settings);
368 | --default-mono-font-family: var(--font-mono);
369 | --default-mono-font-feature-settings: var(--font-mono--font-feature-settings);
370 | --default-mono-font-variation-settings: var(--font-mono--font-variation-settings);
371 | }
372 | }
373 | @layer base {
374 | *, ::after, ::before, ::backdrop, ::file-selector-button {
375 | box-sizing: border-box;
376 | margin: 0;
377 | padding: 0;
378 | border: 0 solid;
379 | }
380 | html, :host {
381 | line-height: 1.5;
382 | -webkit-text-size-adjust: 100%;
383 | tab-size: 4;
384 | font-family: var( --default-font-family, ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji' );
385 | font-feature-settings: var(--default-font-feature-settings, normal);
386 | font-variation-settings: var(--default-font-variation-settings, normal);
387 | -webkit-tap-highlight-color: transparent;
388 | }
389 | body {
390 | line-height: inherit;
391 | }
392 | hr {
393 | height: 0;
394 | color: inherit;
395 | border-top-width: 1px;
396 | }
397 | abbr:where([title]) {
398 | -webkit-text-decoration: underline dotted;
399 | text-decoration: underline dotted;
400 | }
401 | h1, h2, h3, h4, h5, h6 {
402 | font-size: inherit;
403 | font-weight: inherit;
404 | }
405 | a {
406 | color: inherit;
407 | -webkit-text-decoration: inherit;
408 | text-decoration: inherit;
409 | }
410 | b, strong {
411 | font-weight: bolder;
412 | }
413 | code, kbd, samp, pre {
414 | font-family: var( --default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace );
415 | font-feature-settings: var(--default-mono-font-feature-settings, normal);
416 | font-variation-settings: var(--default-mono-font-variation-settings, normal);
417 | font-size: 1em;
418 | }
419 | small {
420 | font-size: 80%;
421 | }
422 | sub, sup {
423 | font-size: 75%;
424 | line-height: 0;
425 | position: relative;
426 | vertical-align: baseline;
427 | }
428 | sub {
429 | bottom: -0.25em;
430 | }
431 | sup {
432 | top: -0.5em;
433 | }
434 | table {
435 | text-indent: 0;
436 | border-color: inherit;
437 | border-collapse: collapse;
438 | }
439 | :-moz-focusring {
440 | outline: auto;
441 | }
442 | progress {
443 | vertical-align: baseline;
444 | }
445 | summary {
446 | display: list-item;
447 | }
448 | ol, ul, menu {
449 | list-style: none;
450 | }
451 | img, svg, video, canvas, audio, iframe, embed, object {
452 | display: block;
453 | vertical-align: middle;
454 | }
455 | img, video {
456 | max-width: 100%;
457 | height: auto;
458 | }
459 | button, input, select, optgroup, textarea, ::file-selector-button {
460 | font: inherit;
461 | font-feature-settings: inherit;
462 | font-variation-settings: inherit;
463 | letter-spacing: inherit;
464 | color: inherit;
465 | border-radius: 0;
466 | background-color: transparent;
467 | opacity: 1;
468 | }
469 | :where(select:is([multiple], [size])) optgroup {
470 | font-weight: bolder;
471 | }
472 | :where(select:is([multiple], [size])) optgroup option {
473 | padding-inline-start: 20px;
474 | }
475 | ::file-selector-button {
476 | margin-inline-end: 4px;
477 | }
478 | ::placeholder {
479 | opacity: 1;
480 | color: color-mix(in oklab, currentColor 50%, transparent);
481 | }
482 | textarea {
483 | resize: vertical;
484 | }
485 | ::-webkit-search-decoration {
486 | -webkit-appearance: none;
487 | }
488 | ::-webkit-date-and-time-value {
489 | min-height: 1lh;
490 | text-align: inherit;
491 | }
492 | ::-webkit-datetime-edit {
493 | display: inline-flex;
494 | }
495 | ::-webkit-datetime-edit-fields-wrapper {
496 | padding: 0;
497 | }
498 | ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {
499 | padding-block: 0;
500 | }
501 | :-moz-ui-invalid {
502 | box-shadow: none;
503 | }
504 | button, input:where([type='button'], [type='reset'], [type='submit']), ::file-selector-button {
505 | appearance: button;
506 | }
507 | ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {
508 | height: auto;
509 | }
510 | [hidden]:where(:not([hidden='until-found'])) {
511 | display: none !important;
512 | }
513 | }
514 | @layer utilities {
515 | .absolute {
516 | position: absolute;
517 | }
518 | .relative {
519 | position: relative;
520 | }
521 | .static {
522 | position: static;
523 | }
524 | .top-0 {
525 | top: calc(var(--spacing) * 0);
526 | }
527 | .right-0 {
528 | right: calc(var(--spacing) * 0);
529 | }
530 | .right-50 {
531 | right: calc(var(--spacing) * 50);
532 | }
533 | .bottom-0 {
534 | bottom: calc(var(--spacing) * 0);
535 | }
536 | .bottom-50 {
537 | bottom: calc(var(--spacing) * 50);
538 | }
539 | .m-2 {
540 | margin: calc(var(--spacing) * 2);
541 | }
542 | .m-4 {
543 | margin: calc(var(--spacing) * 4);
544 | }
545 | .block {
546 | display: block;
547 | }
548 | .flex {
549 | display: flex;
550 | }
551 | .h-4 {
552 | height: calc(var(--spacing) * 4);
553 | }
554 | .h-5 {
555 | height: calc(var(--spacing) * 5);
556 | }
557 | .h-6 {
558 | height: calc(var(--spacing) * 6);
559 | }
560 | .h-full {
561 | height: 100%;
562 | }
563 | .min-h-screen {
564 | min-height: 100vh;
565 | }
566 | .w-4 {
567 | width: calc(var(--spacing) * 4);
568 | }
569 | .w-5 {
570 | width: calc(var(--spacing) * 5);
571 | }
572 | .w-6 {
573 | width: calc(var(--spacing) * 6);
574 | }
575 | .w-full {
576 | width: 100%;
577 | }
578 | .cursor-pointer {
579 | cursor: pointer;
580 | }
581 | .resize-none {
582 | resize: none;
583 | }
584 | .flex-col {
585 | flex-direction: column;
586 | }
587 | .items-center {
588 | align-items: center;
589 | }
590 | .justify-center {
591 | justify-content: center;
592 | }
593 | .gap-1 {
594 | gap: calc(var(--spacing) * 1);
595 | }
596 | .gap-8 {
597 | gap: calc(var(--spacing) * 8);
598 | }
599 | .rounded {
600 | border-radius: 0.25rem;
601 | }
602 | .rounded-full {
603 | border-radius: calc(infinity * 1px);
604 | }
605 | .rounded-lg {
606 | border-radius: var(--radius-lg);
607 | }
608 | .border {
609 | border-style: var(--tw-border-style);
610 | border-width: 1px;
611 | }
612 | .border-gray-700 {
613 | border-color: var(--color-gray-700);
614 | }
615 | .border-gray-900 {
616 | border-color: var(--color-gray-900);
617 | }
618 | .bg-black {
619 | background-color: var(--color-black);
620 | }
621 | .p-1 {
622 | padding: calc(var(--spacing) * 1);
623 | }
624 | .p-2 {
625 | padding: calc(var(--spacing) * 2);
626 | }
627 | .p-4 {
628 | padding: calc(var(--spacing) * 4);
629 | }
630 | .p-8 {
631 | padding: calc(var(--spacing) * 8);
632 | }
633 | .font-mono {
634 | font-family: var(--font-mono);
635 | }
636 | .text-3xl {
637 | font-size: var(--text-3xl);
638 | line-height: var(--tw-leading, var(--text-3xl--line-height));
639 | }
640 | .text-sm {
641 | font-size: var(--text-sm);
642 | line-height: var(--tw-leading, var(--text-sm--line-height));
643 | }
644 | .text-gray-800 {
645 | color: var(--color-gray-800);
646 | }
647 | .text-white {
648 | color: var(--color-white);
649 | }
650 | .focus\:border-gray-200 {
651 | &:focus {
652 | border-color: var(--color-gray-200);
653 | }
654 | }
655 | .focus\:border-gray-500 {
656 | &:focus {
657 | border-color: var(--color-gray-500);
658 | }
659 | }
660 | .focus\:ring-0 {
661 | &:focus {
662 | --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentColor);
663 | box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
664 | }
665 | }
666 | .focus\:outline-none {
667 | &:focus {
668 | --tw-outline-style: none;
669 | outline-style: none;
670 | }
671 | }
672 | .dark\:text-white {
673 | @media (prefers-color-scheme: dark) {
674 | color: var(--color-white);
675 | }
676 | }
677 | }
678 | @keyframes spin {
679 | to {
680 | transform: rotate(360deg);
681 | }
682 | }
683 | @keyframes ping {
684 | 75%, 100% {
685 | transform: scale(2);
686 | opacity: 0;
687 | }
688 | }
689 | @keyframes pulse {
690 | 50% {
691 | opacity: 0.5;
692 | }
693 | }
694 | @keyframes bounce {
695 | 0%, 100% {
696 | transform: translateY(-25%);
697 | animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
698 | }
699 | 50% {
700 | transform: none;
701 | animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
702 | }
703 | }
704 | @property --tw-border-style {
705 | syntax: "*";
706 | inherits: false;
707 | initial-value: solid;
708 | }
709 | @property --tw-shadow {
710 | syntax: "*";
711 | inherits: false;
712 | initial-value: 0 0 #0000;
713 | }
714 | @property --tw-shadow-color {
715 | syntax: "*";
716 | inherits: false;
717 | }
718 | @property --tw-inset-shadow {
719 | syntax: "*";
720 | inherits: false;
721 | initial-value: 0 0 #0000;
722 | }
723 | @property --tw-inset-shadow-color {
724 | syntax: "*";
725 | inherits: false;
726 | }
727 | @property --tw-ring-color {
728 | syntax: "*";
729 | inherits: false;
730 | }
731 | @property --tw-ring-shadow {
732 | syntax: "*";
733 | inherits: false;
734 | initial-value: 0 0 #0000;
735 | }
736 | @property --tw-inset-ring-color {
737 | syntax: "*";
738 | inherits: false;
739 | }
740 | @property --tw-inset-ring-shadow {
741 | syntax: "*";
742 | inherits: false;
743 | initial-value: 0 0 #0000;
744 | }
745 | @property --tw-ring-inset {
746 | syntax: "*";
747 | inherits: false;
748 | }
749 | @property --tw-ring-offset-width {
750 | syntax: "";
751 | inherits: false;
752 | initial-value: 0px;
753 | }
754 | @property --tw-ring-offset-color {
755 | syntax: "*";
756 | inherits: false;
757 | initial-value: #fff;
758 | }
759 | @property --tw-ring-offset-shadow {
760 | syntax: "*";
761 | inherits: false;
762 | initial-value: 0 0 #0000;
763 | }
764 |
--------------------------------------------------------------------------------