From 5812a520c9cbb28064b87274c27c887cace8ce6c Mon Sep 17 00:00:00 2001 From: Markus Thielker Date: Tue, 17 Dec 2024 20:01:23 +0100 Subject: [PATCH] Initial commit --- .gitignore | 44 ++++++++++++++++++ .idea/.gitignore | 8 ++++ .idea/git_toolbox_blame.xml | 6 +++ .idea/misc.xml | 6 +++ .idea/modules.xml | 8 ++++ README.md | 36 +++++++++++++++ bun.lockb | Bin 0 -> 169987 bytes components.json | 21 +++++++++ eslint.config.mjs | 16 +++++++ next.config.ts | 7 +++ package.json | 35 ++++++++++++++ postcss.config.mjs | 8 ++++ src/app/favicon.ico | Bin 0 -> 25931 bytes src/app/globals.css | 46 +++++++++++++++++++ src/app/layout.tsx | 35 ++++++++++++++ src/app/page.tsx | 9 ++++ src/components/ui/button.tsx | 56 ++++++++++++++++++++++ src/components/ui/card.tsx | 79 ++++++++++++++++++++++++++++++++ src/components/ui/input.tsx | 22 +++++++++ src/components/ui/separator.tsx | 31 +++++++++++++ src/components/ui/tabs.tsx | 55 ++++++++++++++++++++++ src/lib/utils.ts | 6 +++ tailwind.config.ts | 62 +++++++++++++++++++++++++ tsconfig.json | 27 +++++++++++ 24 files changed, 623 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/git_toolbox_blame.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 README.md create mode 100755 bun.lockb create mode 100644 components.json create mode 100644 eslint.config.mjs create mode 100644 next.config.ts create mode 100644 package.json create mode 100644 postcss.config.mjs create mode 100644 src/app/favicon.ico create mode 100644 src/app/globals.css create mode 100644 src/app/layout.tsx create mode 100644 src/app/page.tsx create mode 100644 src/components/ui/button.tsx create mode 100644 src/components/ui/card.tsx create mode 100644 src/components/ui/input.tsx create mode 100644 src/components/ui/separator.tsx create mode 100644 src/components/ui/tabs.tsx create mode 100644 src/lib/utils.ts create mode 100644 tailwind.config.ts create mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..40b6436 --- /dev/null +++ b/.gitignore @@ -0,0 +1,44 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# env files (can opt-in for committing if needed) +.env* + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts + +# intellij +.idea/ diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/git_toolbox_blame.xml b/.idea/git_toolbox_blame.xml new file mode 100644 index 0000000..7dc1249 --- /dev/null +++ b/.idea/git_toolbox_blame.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..639900d --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..074c5bf --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..e215bc4 --- /dev/null +++ b/README.md @@ -0,0 +1,36 @@ +This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..dd470a8d2ed738d8395527717f44196cd1a8ffc6 GIT binary patch literal 169987 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 GzyA+8U2JFo literal 0 HcmV?d00001 diff --git a/components.json b/components.json new file mode 100644 index 0000000..d710b49 --- /dev/null +++ b/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "default", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "tailwind.config.ts", + "css": "src/app/globals.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "iconLibrary": "lucide" +} \ No newline at end of file diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..c85fb67 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,16 @@ +import { dirname } from "path"; +import { fileURLToPath } from "url"; +import { FlatCompat } from "@eslint/eslintrc"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +const compat = new FlatCompat({ + baseDirectory: __dirname, +}); + +const eslintConfig = [ + ...compat.extends("next/core-web-vitals", "next/typescript"), +]; + +export default eslintConfig; diff --git a/next.config.ts b/next.config.ts new file mode 100644 index 0000000..e9ffa30 --- /dev/null +++ b/next.config.ts @@ -0,0 +1,7 @@ +import type { NextConfig } from "next"; + +const nextConfig: NextConfig = { + /* config options here */ +}; + +export default nextConfig; diff --git a/package.json b/package.json new file mode 100644 index 0000000..a5721d6 --- /dev/null +++ b/package.json @@ -0,0 +1,35 @@ +{ + "name": "portfolio", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@radix-ui/react-separator": "^1.1.1", + "@radix-ui/react-slot": "^1.1.1", + "@radix-ui/react-tabs": "^1.1.2", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "lucide-react": "^0.468.0", + "next": "15.1.0", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "tailwind-merge": "^2.5.5", + "tailwindcss-animate": "^1.0.7" + }, + "devDependencies": { + "typescript": "^5", + "@types/node": "^20", + "@types/react": "^19", + "@types/react-dom": "^19", + "postcss": "^8", + "tailwindcss": "^3.4.1", + "eslint": "^9", + "eslint-config-next": "15.1.0", + "@eslint/eslintrc": "^3" + } +} diff --git a/postcss.config.mjs b/postcss.config.mjs new file mode 100644 index 0000000..1a69fd2 --- /dev/null +++ b/postcss.config.mjs @@ -0,0 +1,8 @@ +/** @type {import('postcss-load-config').Config} */ +const config = { + plugins: { + tailwindcss: {}, + }, +}; + +export default config; diff --git a/src/app/favicon.ico b/src/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..718d6fea4835ec2d246af9800eddb7ffb276240c GIT binary patch literal 25931 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 LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/src/app/globals.css b/src/app/globals.css new file mode 100644 index 0000000..b83bc98 --- /dev/null +++ b/src/app/globals.css @@ -0,0 +1,46 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +body { + font-family: Arial, Helvetica, sans-serif; +} + +@layer base { + :root { + --background: 20 14.3% 4.1%; + --foreground: 60 9.1% 97.8%; + --card: 20 14.3% 4.1%; + --card-foreground: 60 9.1% 97.8%; + --popover: 20 14.3% 4.1%; + --popover-foreground: 60 9.1% 97.8%; + --primary: 20.5 90.2% 48.2%; + --primary-foreground: 60 9.1% 97.8%; + --secondary: 12 6.5% 15.1%; + --secondary-foreground: 60 9.1% 97.8%; + --muted: 12 6.5% 15.1%; + --muted-foreground: 24 5.4% 63.9%; + --accent: 12 6.5% 15.1%; + --accent-foreground: 60 9.1% 97.8%; + --destructive: 0 72.2% 50.6%; + --destructive-foreground: 60 9.1% 97.8%; + --border: 12 6.5% 15.1%; + --input: 12 6.5% 15.1%; + --ring: 20.5 90.2% 48.2%; + --chart-1: 220 70% 50%; + --chart-2: 160 60% 45%; + --chart-3: 30 80% 55%; + --chart-4: 280 65% 60%; + --chart-5: 340 75% 55%; + --radius: 1.5rem + } +} + +@layer base { + * { + @apply border-border; + } + body { + @apply bg-background text-foreground; + } +} diff --git a/src/app/layout.tsx b/src/app/layout.tsx new file mode 100644 index 0000000..b3a379a --- /dev/null +++ b/src/app/layout.tsx @@ -0,0 +1,35 @@ +import type { Metadata } from "next"; +import { Geist, Geist_Mono } from "next/font/google"; +import "./globals.css"; +import React from 'react'; + +const geistSans = Geist({ + variable: "--font-geist-sans", + subsets: ["latin"], +}); + +const geistMono = Geist_Mono({ + variable: "--font-geist-mono", + subsets: ["latin"], +}); + +export const metadata: Metadata = { + title: "Create Next App", + description: "Generated by create next app", +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + + {children} + + + ); +} diff --git a/src/app/page.tsx b/src/app/page.tsx new file mode 100644 index 0000000..d9b503d --- /dev/null +++ b/src/app/page.tsx @@ -0,0 +1,9 @@ +import React from 'react'; + +export default async function Home() { + return ( +
+ +
+ ); +} diff --git a/src/components/ui/button.tsx b/src/components/ui/button.tsx new file mode 100644 index 0000000..36496a2 --- /dev/null +++ b/src/components/ui/button.tsx @@ -0,0 +1,56 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const buttonVariants = cva( + "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", + { + variants: { + variant: { + default: "bg-primary text-primary-foreground hover:bg-primary/90", + destructive: + "bg-destructive text-destructive-foreground hover:bg-destructive/90", + outline: + "border border-input bg-background hover:bg-accent hover:text-accent-foreground", + secondary: + "bg-secondary text-secondary-foreground hover:bg-secondary/80", + ghost: "hover:bg-accent hover:text-accent-foreground", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: "h-10 px-4 py-2", + sm: "h-9 rounded-md px-3", + lg: "h-11 rounded-md px-8", + icon: "h-10 w-10", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + } +) + +export interface ButtonProps + extends React.ButtonHTMLAttributes, + VariantProps { + asChild?: boolean +} + +const Button = React.forwardRef( + ({ className, variant, size, asChild = false, ...props }, ref) => { + const Comp = asChild ? Slot : "button" + return ( + + ) + } +) +Button.displayName = "Button" + +export { Button, buttonVariants } diff --git a/src/components/ui/card.tsx b/src/components/ui/card.tsx new file mode 100644 index 0000000..038a2dd --- /dev/null +++ b/src/components/ui/card.tsx @@ -0,0 +1,79 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +const Card = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +Card.displayName = "Card" + +const CardHeader = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +CardHeader.displayName = "CardHeader" + +const CardTitle = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +CardTitle.displayName = "CardTitle" + +const CardDescription = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +CardDescription.displayName = "CardDescription" + +const CardContent = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +CardContent.displayName = "CardContent" + +const CardFooter = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +CardFooter.displayName = "CardFooter" + +export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent } diff --git a/src/components/ui/input.tsx b/src/components/ui/input.tsx new file mode 100644 index 0000000..68551b9 --- /dev/null +++ b/src/components/ui/input.tsx @@ -0,0 +1,22 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +const Input = React.forwardRef>( + ({ className, type, ...props }, ref) => { + return ( + + ) + } +) +Input.displayName = "Input" + +export { Input } diff --git a/src/components/ui/separator.tsx b/src/components/ui/separator.tsx new file mode 100644 index 0000000..12d81c4 --- /dev/null +++ b/src/components/ui/separator.tsx @@ -0,0 +1,31 @@ +"use client" + +import * as React from "react" +import * as SeparatorPrimitive from "@radix-ui/react-separator" + +import { cn } from "@/lib/utils" + +const Separator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>( + ( + { className, orientation = "horizontal", decorative = true, ...props }, + ref + ) => ( + + ) +) +Separator.displayName = SeparatorPrimitive.Root.displayName + +export { Separator } diff --git a/src/components/ui/tabs.tsx b/src/components/ui/tabs.tsx new file mode 100644 index 0000000..26eb109 --- /dev/null +++ b/src/components/ui/tabs.tsx @@ -0,0 +1,55 @@ +"use client" + +import * as React from "react" +import * as TabsPrimitive from "@radix-ui/react-tabs" + +import { cn } from "@/lib/utils" + +const Tabs = TabsPrimitive.Root + +const TabsList = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +TabsList.displayName = TabsPrimitive.List.displayName + +const TabsTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +TabsTrigger.displayName = TabsPrimitive.Trigger.displayName + +const TabsContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +TabsContent.displayName = TabsPrimitive.Content.displayName + +export { Tabs, TabsList, TabsTrigger, TabsContent } diff --git a/src/lib/utils.ts b/src/lib/utils.ts new file mode 100644 index 0000000..bd0c391 --- /dev/null +++ b/src/lib/utils.ts @@ -0,0 +1,6 @@ +import { clsx, type ClassValue } from "clsx" +import { twMerge } from "tailwind-merge" + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)) +} diff --git a/tailwind.config.ts b/tailwind.config.ts new file mode 100644 index 0000000..266c06d --- /dev/null +++ b/tailwind.config.ts @@ -0,0 +1,62 @@ +import type { Config } from "tailwindcss"; + +export default { + darkMode: ["class"], + content: [ + "./src/pages/**/*.{js,ts,jsx,tsx,mdx}", + "./src/components/**/*.{js,ts,jsx,tsx,mdx}", + "./src/app/**/*.{js,ts,jsx,tsx,mdx}", + ], + theme: { + extend: { + colors: { + background: 'hsl(var(--background))', + foreground: 'hsl(var(--foreground))', + card: { + DEFAULT: 'hsl(var(--card))', + foreground: 'hsl(var(--card-foreground))' + }, + popover: { + DEFAULT: 'hsl(var(--popover))', + foreground: 'hsl(var(--popover-foreground))' + }, + primary: { + DEFAULT: 'hsl(var(--primary))', + foreground: 'hsl(var(--primary-foreground))' + }, + secondary: { + DEFAULT: 'hsl(var(--secondary))', + foreground: 'hsl(var(--secondary-foreground))' + }, + muted: { + DEFAULT: 'hsl(var(--muted))', + foreground: 'hsl(var(--muted-foreground))' + }, + accent: { + DEFAULT: 'hsl(var(--accent))', + foreground: 'hsl(var(--accent-foreground))' + }, + destructive: { + DEFAULT: 'hsl(var(--destructive))', + foreground: 'hsl(var(--destructive-foreground))' + }, + border: 'hsl(var(--border))', + input: 'hsl(var(--input))', + ring: 'hsl(var(--ring))', + chart: { + '1': 'hsl(var(--chart-1))', + '2': 'hsl(var(--chart-2))', + '3': 'hsl(var(--chart-3))', + '4': 'hsl(var(--chart-4))', + '5': 'hsl(var(--chart-5))' + } + }, + borderRadius: { + lg: 'var(--radius)', + md: 'calc(var(--radius) - 2px)', + sm: 'calc(var(--radius) - 4px)' + } + } + }, + plugins: [require("tailwindcss-animate")], +} satisfies Config; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..c133409 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "target": "ES2017", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./src/*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +}