Merge pull request #7 from bartvdbraak/feat/content-and-style

New content, style and features
This commit is contained in:
Bart van der Braak 2023-06-15 01:56:47 +02:00 committed by GitHub
commit ddfc979819
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
26 changed files with 360 additions and 73 deletions

View file

@ -1,2 +1,2 @@
ignores: ["@types/node", "@types/react-dom", "autoprefixer", "postcss", "@commitlint/config-conventional", "prettier"] ignores: ["@types/node", "@types/react-dom", "autoprefixer", "postcss", "@commitlint/config-conventional", "prettier", "@t3-oss/env-nextjs"]
skip-missing: false skip-missing: false

4
.env.example Normal file
View file

@ -0,0 +1,4 @@
# -----------------------------------------------------------------------------
# App
# -----------------------------------------------------------------------------
NEXT_PUBLIC_APP_URL=http://localhost:3000

View file

@ -1,79 +1,96 @@
import { Inter, Fjalla_One } from "next/font/google"; import { Inter as FontSans } from "next/font/google";
import localFont from "next/font/local";
import "@/styles/globals.css";
import { siteConfig } from "@/config/site";
import { absoluteUrl, cn } from "@/lib/utils";
import { Analytics } from "@/components/analytics";
import { TailwindIndicator } from "@/components/tailwind-indicator";
import { ThemeProvider } from "@/components/theme-provider"; import { ThemeProvider } from "@/components/theme-provider";
import "tailwindcss/tailwind.css";
import { Metadata } from "next"; export const metadata = {
export const metadata: Metadata = {
title: { title: {
default: "hellob.art", default: siteConfig.name,
template: "%s | hellob.art", template: `%s | ${siteConfig.name}`,
}, },
description: "a simple portfolio made by bart van der braak", description: siteConfig.description,
metadataBase: new URL("https://hellob.art"), keywords: [
openGraph: { "Next.js",
title: "hellob.art", "React",
description: "a simple portfolio made by bart van der braak", "Tailwind CSS",
url: "https://hellob.art", "Server Components",
siteName: "hellob.art", "Radix UI",
locale: "en-US", ],
type: "website", authors: [
}, {
robots: { name: "Bart van der Braak",
index: true, url: siteConfig.url,
follow: true,
googleBot: {
index: true,
follow: true,
"max-video-preview": -1,
"max-image-preview": "large",
"max-snippet": -1,
}, },
],
creator: "shadcn",
themeColor: [
{ media: "(prefers-color-scheme: light)", color: "white" },
{ media: "(prefers-color-scheme: dark)", color: "black" },
],
openGraph: {
type: "website",
locale: "en_US",
url: siteConfig.url,
title: siteConfig.name,
description: siteConfig.description,
siteName: siteConfig.name,
}, },
twitter: { twitter: {
title: "hellob.art",
card: "summary_large_image", card: "summary_large_image",
title: siteConfig.name,
description: siteConfig.description,
images: [`${siteConfig.url}/og.jpg`],
creator: "@bartvdbraak",
}, },
icons: { icons: {
shortcut: "/favicon.png", icon: "/favicon.ico",
shortcut: "/favicon-16x16.png",
apple: "/apple-touch-icon.png",
}, },
manifest: `${siteConfig.url}/site.webmanifest`,
}; };
interface RootLayoutProps { interface RootLayoutProps {
children: React.ReactNode; children: React.ReactNode;
} }
const inter = Inter({ const fontSans = FontSans({
subsets: ["latin"], subsets: ["latin"],
variable: "--font-inter", variable: "--font-sans",
}); });
const fjallaOne = Fjalla_One({ // Font files can be colocated inside of `pages`
subsets: ["latin"], const fontHeading = localFont({
weight: "400", src: "../assets/fonts/CalSans-SemiBold.woff2",
variable: "--font-fjalla-one", variable: "--font-heading",
}); });
interface RootLayoutProps { interface RootLayoutProps {
children: React.ReactNode; children: React.ReactNode;
} }
export default async function RootLayout({ children }: RootLayoutProps) { export default function RootLayout({ children }: RootLayoutProps) {
return ( return (
<> <html lang="en" suppressHydrationWarning>
<html <head />
lang="en" <body
suppressHydrationWarning className={cn(
className={[inter.variable, fjallaOne.variable].join(" ")} "min-h-screen bg-background font-sans antialiased",
fontSans.variable,
fontHeading.variable
)}
> >
<head /> <ThemeProvider attribute="class" defaultTheme="system" enableSystem>
<body className="min-h-screen antialiased"> {children}
<ThemeProvider attribute="class" defaultTheme="dark" enableSystem> <Analytics />
{children} <TailwindIndicator />
</ThemeProvider> </ThemeProvider>
</body> </body>
</html> </html>
</>
); );
} }

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
assets/fonts/Inter-Bold.ttf Normal file

Binary file not shown.

Binary file not shown.

7
components/analytics.tsx Normal file
View file

@ -0,0 +1,7 @@
"use client";
import { Analytics as VercelAnalytics } from "@vercel/analytics/react";
export function Analytics() {
return <VercelAnalytics />;
}

View file

@ -0,0 +1,16 @@
export function TailwindIndicator() {
if (process.env.NODE_ENV === "production") return null;
return (
<div className="fixed bottom-1 left-1 z-50 flex h-6 w-6 items-center justify-center rounded-full bg-gray-800 p-3 font-mono text-xs text-white">
<div className="block sm:hidden">xs</div>
<div className="hidden sm:block md:hidden lg:hidden xl:hidden 2xl:hidden">
sm
</div>
<div className="hidden md:block lg:hidden xl:hidden 2xl:hidden">md</div>
<div className="hidden lg:block xl:hidden 2xl:hidden">lg</div>
<div className="hidden xl:block 2xl:hidden">xl</div>
<div className="hidden 2xl:block">2xl</div>
</div>
);
}

View file

@ -1,7 +1,6 @@
export const siteConfig = { export const siteConfig = {
name: "Taxonomy", name: "hellob.art",
description: description: "a simple portfolio made by bart van der braak.",
"An open source application built using the new router, server components and everything new in Next.js 13.",
url: "https://hellob.art", url: "https://hellob.art",
ogImage: "https://hellob.art/og.jpg", ogImage: "https://hellob.art/og.jpg",
links: { links: {

15
env.mjs Normal file
View file

@ -0,0 +1,15 @@
import { createEnv } from "@t3-oss/env-nextjs";
import { z } from "zod";
export const env = createEnv({
server: {
// This is optional because it's only used in development.
// See https://next-auth.js.org/deployment.
},
client: {
NEXT_PUBLIC_APP_URL: z.string().min(1),
},
runtimeEnv: {
NEXT_PUBLIC_APP_URL: process.env.NEXT_PUBLIC_APP_URL,
},
});

View file

@ -1,6 +1,8 @@
import { ClassValue, clsx } from "clsx"; import { ClassValue, clsx } from "clsx";
import { twMerge } from "tailwind-merge"; import { twMerge } from "tailwind-merge";
import { env } from "@/env.mjs";
export function cn(...inputs: ClassValue[]) { export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs)); return twMerge(clsx(inputs));
} }
@ -13,3 +15,7 @@ export function formatDate(input: string | number): string {
year: "numeric", year: "numeric",
}); });
} }
export function absoluteUrl(path: string) {
return `${env.NEXT_PUBLIC_APP_URL}${path}`;
}

View file

@ -17,9 +17,12 @@
"format:check": "prettier . --check --cache" "format:check": "prettier . --check --cache"
}, },
"dependencies": { "dependencies": {
"@t3-oss/env-nextjs": "^0.4.0",
"@tailwindcss/typography": "^0.5.9",
"@types/node": "20.3.1", "@types/node": "20.3.1",
"@types/react": "18.2.12", "@types/react": "18.2.12",
"@types/react-dom": "18.2.5", "@types/react-dom": "18.2.5",
"@vercel/analytics": "^1.0.1",
"autoprefixer": "10.4.14", "autoprefixer": "10.4.14",
"class-variance-authority": "^0.6.0", "class-variance-authority": "^0.6.0",
"clsx": "^1.2.1", "clsx": "^1.2.1",
@ -32,6 +35,7 @@
"react-dom": "18.2.0", "react-dom": "18.2.0",
"tailwind-merge": "^1.13.1", "tailwind-merge": "^1.13.1",
"tailwindcss": "3.3.2", "tailwindcss": "3.3.2",
"tailwindcss-animate": "^1.0.6",
"typescript": "5.1.3" "typescript": "5.1.3"
}, },
"devDependencies": { "devDependencies": {

View file

@ -1,6 +1,16 @@
lockfileVersion: '6.0' lockfileVersion: '6.0'
settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
dependencies: dependencies:
'@t3-oss/env-nextjs':
specifier: ^0.4.0
version: 0.4.0(typescript@5.1.3)(zod@3.21.4)
'@tailwindcss/typography':
specifier: ^0.5.9
version: 0.5.9(tailwindcss@3.3.2)
'@types/node': '@types/node':
specifier: 20.3.1 specifier: 20.3.1
version: 20.3.1 version: 20.3.1
@ -10,6 +20,9 @@ dependencies:
'@types/react-dom': '@types/react-dom':
specifier: 18.2.5 specifier: 18.2.5
version: 18.2.5 version: 18.2.5
'@vercel/analytics':
specifier: ^1.0.1
version: 1.0.1
autoprefixer: autoprefixer:
specifier: 10.4.14 specifier: 10.4.14
version: 10.4.14(postcss@8.4.24) version: 10.4.14(postcss@8.4.24)
@ -46,6 +59,9 @@ dependencies:
tailwindcss: tailwindcss:
specifier: 3.3.2 specifier: 3.3.2
version: 3.3.2 version: 3.3.2
tailwindcss-animate:
specifier: ^1.0.6
version: 1.0.6(tailwindcss@3.3.2)
typescript: typescript:
specifier: 5.1.3 specifier: 5.1.3
version: 5.1.3 version: 5.1.3
@ -307,6 +323,39 @@ packages:
tslib: 2.5.3 tslib: 2.5.3
dev: false dev: false
/@t3-oss/env-core@0.4.0(typescript@5.1.3)(zod@3.21.4):
resolution: {integrity: sha512-6JlMp0Vru15q/axHzBKsQQjiyGS6k+EsZBY1iErGVmOGzNSoVluBahnYFP7tEkwZ7KoRgSq4NRIc1Ez7SVYuxQ==}
peerDependencies:
typescript: '>=4.7.2'
zod: ^3.0.0
dependencies:
typescript: 5.1.3
zod: 3.21.4
dev: false
/@t3-oss/env-nextjs@0.4.0(typescript@5.1.3)(zod@3.21.4):
resolution: {integrity: sha512-K1u2i+S/uEhjfg++FqWlOzS6x237EARRbWGowH2MkDkFu2q7ZJSiJBJT8e47L7NHWH5IyZrTCM6BdOxyWEnQuQ==}
peerDependencies:
typescript: '>=4.7.2'
zod: ^3.0.0
dependencies:
'@t3-oss/env-core': 0.4.0(typescript@5.1.3)(zod@3.21.4)
typescript: 5.1.3
zod: 3.21.4
dev: false
/@tailwindcss/typography@0.5.9(tailwindcss@3.3.2):
resolution: {integrity: sha512-t8Sg3DyynFysV9f4JDOVISGsjazNb48AeIYQwcL+Bsq5uf4RYL75C1giZ43KISjeDGBaTN3Kxh7Xj/vRSMJUUg==}
peerDependencies:
tailwindcss: '>=3.0.0 || insiders'
dependencies:
lodash.castarray: 4.4.0
lodash.isplainobject: 4.0.6
lodash.merge: 4.6.2
postcss-selector-parser: 6.0.10
tailwindcss: 3.3.2
dev: false
/@types/json5@0.0.29: /@types/json5@0.0.29:
resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
dev: false dev: false
@ -399,6 +448,10 @@ packages:
eslint-visitor-keys: 3.4.1 eslint-visitor-keys: 3.4.1
dev: false dev: false
/@vercel/analytics@1.0.1:
resolution: {integrity: sha512-Ux0c9qUfkcPqng3vrR0GTrlQdqNJ2JREn/2ydrVuKwM3RtMfF2mWX31Ijqo1opSjNAq6rK76PwtANw6kl6TAow==}
dev: false
/acorn-jsx@5.3.2(acorn@8.8.2): /acorn-jsx@5.3.2(acorn@8.8.2):
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies: peerDependencies:
@ -1801,6 +1854,14 @@ packages:
p-locate: 5.0.0 p-locate: 5.0.0
dev: false dev: false
/lodash.castarray@4.4.0:
resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==}
dev: false
/lodash.isplainobject@4.0.6:
resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
dev: false
/lodash.merge@4.6.2: /lodash.merge@4.6.2:
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
dev: false dev: false
@ -2192,6 +2253,14 @@ packages:
postcss-selector-parser: 6.0.13 postcss-selector-parser: 6.0.13
dev: false dev: false
/postcss-selector-parser@6.0.10:
resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==}
engines: {node: '>=4'}
dependencies:
cssesc: 3.0.0
util-deprecate: 1.0.2
dev: false
/postcss-selector-parser@6.0.13: /postcss-selector-parser@6.0.13:
resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==}
engines: {node: '>=4'} engines: {node: '>=4'}
@ -2545,6 +2614,14 @@ packages:
resolution: {integrity: sha512-tRtRN22TDokGi2TuYSvuHQuuW6BJ/zlUEG+iYpAQ9i66msc/0eU/+HPccbPnNNH0mCPp0Ob8thaC8Uy9CxHitQ==} resolution: {integrity: sha512-tRtRN22TDokGi2TuYSvuHQuuW6BJ/zlUEG+iYpAQ9i66msc/0eU/+HPccbPnNNH0mCPp0Ob8thaC8Uy9CxHitQ==}
dev: false dev: false
/tailwindcss-animate@1.0.6(tailwindcss@3.3.2):
resolution: {integrity: sha512-4WigSGMvbl3gCCact62ZvOngA+PRqhAn7si3TQ3/ZuPuQZcIEtVap+ENSXbzWhpojKB8CpvnIsrwBu8/RnHtuw==}
peerDependencies:
tailwindcss: '>=3.0.0 || insiders'
dependencies:
tailwindcss: 3.3.2
dev: false
/tailwindcss@3.3.2: /tailwindcss@3.3.2:
resolution: {integrity: sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==} resolution: {integrity: sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
@ -2767,7 +2844,3 @@ packages:
/zod@3.21.4: /zod@3.21.4:
resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==}
dev: false dev: false
settings:
autoInstallPeers: true
excludeLinksFromLockfile: false

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
public/apple-touch-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

BIN
public/favicon-16x16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 920 B

BIN
public/favicon-32x32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View file

@ -1,8 +1,8 @@
<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg"> <svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg">
<path <path
d="M4 12C5.65685 12 7 10.6569 7 9C7 7.34315 5.65685 6 4 6C2.34315 6 1 7.34315 1 9C1 10.6569 2.34315 12 4 12Z" d="M4 12C5.65685 12 7 10.6569 7 9C7 7.34315 5.65685 6 4 6C2.34315 6 1 7.34315 1 9C1 10.6569 2.34315 12 4 12Z"
stroke="#D9D9D9" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /> stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
<path d="M1 4V12" stroke="#D9D9D9" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /> <path d="M1 4V12" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
<path <path
d="M9 1L8.36667 2.93333C8.33424 3.03374 8.27844 3.12501 8.20386 3.19965C8.12928 3.27429 8.03805 3.33016 7.93767 3.36267L6 4L7.93333 4.63333C8.03374 4.66576 8.12501 4.72156 8.19965 4.79614C8.27429 4.87072 8.33016 4.96195 8.36267 5.06233L9 7L9.63333 5.06667C9.66576 4.96626 9.72156 4.87499 9.79614 4.80035C9.87072 4.72571 9.96195 4.66984 10.0623 4.63733L12 4L10.0667 3.36667C9.96626 3.33424 9.87499 3.27844 9.80035 3.20386C9.72571 3.12928 9.66984 3.03805 9.63733 2.93767L9 1Z" d="M9 1L8.36667 2.93333C8.33424 3.03374 8.27844 3.12501 8.20386 3.19965C8.12928 3.27429 8.03805 3.33016 7.93767 3.36267L6 4L7.93333 4.63333C8.03374 4.66576 8.12501 4.72156 8.19965 4.79614C8.27429 4.87072 8.33016 4.96195 8.36267 5.06233L9 7L9.63333 5.06667C9.66576 4.96626 9.72156 4.87499 9.79614 4.80035C9.87072 4.72571 9.96195 4.66984 10.0623 4.63733L12 4L10.0667 3.36667C9.96626 3.33424 9.87499 3.27844 9.80035 3.20386C9.72571 3.12928 9.66984 3.03805 9.63733 2.93767L9 1Z"
stroke="#EAAF17" stroke-linecap="round" stroke-linejoin="round" /> stroke="#EAAF17" stroke-linecap="round" stroke-linejoin="round" />

Before

Width:  |  Height:  |  Size: 975 B

After

Width:  |  Height:  |  Size: 975 B

BIN
public/og.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

19
public/site.webmanifest Normal file
View file

@ -0,0 +1,19 @@
{
"name": "hellob.art",
"short_name": "hellob.art",
"icons": [
{
"src": "/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/android-chrome-512x512.png",
"sizes": "512x512",
"type": "image/png"
}
],
"theme_color": "#5c5c5c",
"background_color": "#5c5c5c",
"display": "standalone"
}

81
styles/globals.css Normal file
View file

@ -0,0 +1,81 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
@layer base {
:root {
--background: 0 0% 100%;
--foreground: 222.2 47.4% 11.2%;
--muted: 210 40% 96.1%;
--muted-foreground: 215.4 16.3% 46.9%;
--popover: 0 0% 100%;
--popover-foreground: 222.2 47.4% 11.2%;
--border: 214.3 31.8% 91.4%;
--input: 214.3 31.8% 91.4%;
--card: 0 0% 100%;
--card-foreground: 222.2 47.4% 11.2%;
--primary: 222.2 47.4% 11.2%;
--primary-foreground: 210 40% 98%;
--secondary: 210 40% 96.1%;
--secondary-foreground: 222.2 47.4% 11.2%;
--accent: 210 40% 96.1%;
--accent-foreground: 222.2 47.4% 11.2%;
--destructive: 0 100% 50%;
--destructive-foreground: 210 40% 98%;
--ring: 215 20.2% 65.1%;
--radius: 0.5rem;
}
.dark {
--background: 224 71% 4%;
--foreground: 213 31% 91%;
--muted: 223 47% 11%;
--muted-foreground: 215.4 16.3% 56.9%;
--accent: 216 34% 17%;
--accent-foreground: 210 40% 98%;
--popover: 224 71% 4%;
--popover-foreground: 215 20.2% 65.1%;
--border: 216 34% 17%;
--input: 216 34% 17%;
--card: 224 71% 4%;
--card-foreground: 213 31% 91%;
--primary: 210 40% 98%;
--primary-foreground: 222.2 47.4% 1.2%;
--secondary: 222.2 47.4% 11.2%;
--secondary-foreground: 210 40% 98%;
--destructive: 0 63% 31%;
--destructive-foreground: 210 40% 98%;
--ring: 216 34% 17%;
--radius: 0.5rem;
}
}
@layer base {
* {
@apply border-border;
}
body {
@apply bg-background text-foreground;
font-feature-settings: "rlig" 1, "calt" 1;
}
}

View file

@ -1,36 +1,82 @@
const { fontFamily } = require("tailwindcss/defaultTheme"); const { fontFamily } = require("tailwindcss/defaultTheme");
const colors = require("tailwindcss/colors");
/** @type {import('tailwindcss').Config} */ /** @type {import('tailwindcss').Config} */
module.exports = { module.exports = {
content: [ content: [
"./pages/**/*.{js,ts,jsx,tsx,mdx}", "./app/**/*.{ts,tsx}",
"./components/**/*.{js,ts,jsx,tsx,mdx}", "./components/**/*.{ts,tsx}",
"./app/**/*.{js,ts,jsx,tsx,mdx}", "./ui/**/*.{ts,tsx}",
"./content/**/*.{md,mdx}",
], ],
darkMode: ["class"],
theme: { theme: {
container: { container: {
center: true, center: true,
padding: "1.5rem", padding: "2rem",
screens: { screens: {
"2xl": "1440px", "2xl": "1400px",
}, },
}, },
extend: { extend: {
colors: { colors: {
primary: colors.zinc, border: "hsl(var(--border))",
input: "hsl(var(--input))",
ring: "hsl(var(--ring))",
background: "hsl(var(--background))",
foreground: "hsl(var(--foreground))",
primary: {
DEFAULT: "hsl(var(--primary))",
foreground: "hsl(var(--primary-foreground))",
},
secondary: {
DEFAULT: "hsl(var(--secondary))",
foreground: "hsl(var(--secondary-foreground))",
},
destructive: {
DEFAULT: "hsl(var(--destructive))",
foreground: "hsl(var(--destructive-foreground))",
},
muted: {
DEFAULT: "hsl(var(--muted))",
foreground: "hsl(var(--muted-foreground))",
},
accent: {
DEFAULT: "hsl(var(--accent))",
foreground: "hsl(var(--accent-foreground))",
},
popover: {
DEFAULT: "hsl(var(--popover))",
foreground: "hsl(var(--popover-foreground))",
},
card: {
DEFAULT: "hsl(var(--card))",
foreground: "hsl(var(--card-foreground))",
},
},
borderRadius: {
lg: `var(--radius)`,
md: `calc(var(--radius) - 2px)`,
sm: "calc(var(--radius) - 4px)",
}, },
fontFamily: { fontFamily: {
sans: ["Inter", "var(--font-inter)", ...fontFamily.sans], sans: ["var(--font-sans)", ...fontFamily.sans],
display: ["Fjalla One", "var(--font-fjalla-one)"], heading: ["var(--font-heading)", ...fontFamily.sans],
}, },
backgroundImage: { keyframes: {
"gradient-radial": "radial-gradient(var(--tw-gradient-stops))", "accordion-down": {
"gradient-conic": from: { height: 0 },
"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))", to: { height: "var(--radix-accordion-content-height)" },
filter: "brightness(120%) saturate(120%) blur(2px)", },
"accordion-up": {
from: { height: "var(--radix-accordion-content-height)" },
to: { height: 0 },
},
},
animation: {
"accordion-down": "accordion-down 0.2s ease-out",
"accordion-up": "accordion-up 0.2s ease-out",
}, },
}, },
}, },
plugins: [], plugins: [require("tailwindcss-animate"), require("@tailwindcss/typography")],
}; };