├── app ├── favicon.ico ├── about │ └── page.tsx ├── layout.tsx └── ascii-animation │ └── page.tsx ├── postcss.config.mjs ├── public ├── vercel.svg ├── window.svg ├── file.svg ├── globe.svg ├── next.svg └── frames-fire │ ├── frame_0001.txt │ ├── frame_0002.txt │ ├── frame_0003.txt │ ├── frame_0004.txt │ ├── frame_0005.txt │ ├── frame_0006.txt │ ├── frame_0007.txt │ ├── frame_0008.txt │ ├── frame_0009.txt │ ├── frame_0010.txt │ ├── frame_0011.txt │ ├── frame_0012.txt │ ├── frame_0013.txt │ ├── frame_0014.txt │ ├── frame_0015.txt │ ├── frame_0016.txt │ ├── frame_0017.txt │ ├── frame_0018.txt │ ├── frame_0019.txt │ ├── frame_0020.txt │ ├── frame_0021.txt │ ├── frame_0022.txt │ ├── frame_0023.txt │ ├── frame_0024.txt │ ├── frame_0025.txt │ ├── frame_0026.txt │ ├── frame_0027.txt │ ├── frame_0028.txt │ ├── frame_0029.txt │ ├── frame_0030.txt │ ├── frame_0031.txt │ ├── frame_0032.txt │ ├── frame_0033.txt │ ├── frame_0034.txt │ ├── frame_0035.txt │ ├── frame_0036.txt │ ├── frame_0037.txt │ ├── frame_0038.txt │ ├── frame_0039.txt │ ├── frame_0040.txt │ ├── frame_0041.txt │ ├── frame_0042.txt │ ├── frame_0043.txt │ ├── frame_0044.txt │ ├── frame_0045.txt │ ├── frame_0046.txt │ ├── frame_0047.txt │ ├── frame_0048.txt │ ├── frame_0049.txt │ ├── frame_0050.txt │ ├── frame_0051.txt │ ├── frame_0052.txt │ ├── frame_0053.txt │ ├── frame_0054.txt │ ├── frame_0055.txt │ ├── frame_0056.txt │ ├── frame_0057.txt │ ├── frame_0058.txt │ ├── frame_0059.txt │ ├── frame_0060.txt │ ├── frame_0061.txt │ ├── frame_0062.txt │ ├── frame_0063.txt │ ├── frame_0064.txt │ ├── frame_0065.txt │ ├── frame_0066.txt │ ├── frame_0067.txt │ ├── frame_0068.txt │ ├── frame_0069.txt │ ├── frame_0070.txt │ ├── frame_0071.txt │ ├── frame_0072.txt │ ├── frame_0073.txt │ ├── frame_0074.txt │ ├── frame_0075.txt │ ├── frame_0076.txt │ ├── frame_0077.txt │ └── frame_0078.txt ├── lib └── utils.ts ├── next.config.ts ├── components ├── theme-provider.tsx ├── animated-text.tsx ├── transition-provider.tsx ├── boxes.tsx └── ui │ ├── button.tsx │ └── card.tsx ├── eslint.config.mjs ├── components.json ├── .gitignore ├── tsconfig.json └── package.json /app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/developedbyed/react-gradient-glow/HEAD/app/favicon.ico -------------------------------------------------------------------------------- /postcss.config.mjs: -------------------------------------------------------------------------------- 1 | const config = { 2 | plugins: { 3 | "@tailwindcss/postcss": {}, 4 | }, 5 | }; 6 | export default config; 7 | -------------------------------------------------------------------------------- /public/vercel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lib/utils.ts: -------------------------------------------------------------------------------- 1 | import { clsx, type ClassValue } from "clsx" 2 | import { twMerge } from "tailwind-merge" 3 | 4 | export function cn(...inputs: ClassValue[]) { 5 | return twMerge(clsx(inputs)) 6 | } 7 | -------------------------------------------------------------------------------- /next.config.ts: -------------------------------------------------------------------------------- 1 | import type { NextConfig } from "next"; 2 | 3 | const nextConfig: NextConfig = { 4 | /* config options here */ 5 | experimental: { 6 | useCache: true, 7 | viewTransition: true 8 | } 9 | }; 10 | 11 | export default nextConfig; 12 | -------------------------------------------------------------------------------- /components/theme-provider.tsx: -------------------------------------------------------------------------------- 1 | "use client" 2 | 3 | import * as React from "react" 4 | import { ThemeProvider as NextThemesProvider } from "next-themes" 5 | 6 | export function ThemeProvider({ 7 | children, 8 | ...props 9 | }: React.ComponentProps) { 10 | return {children} 11 | } 12 | 13 | -------------------------------------------------------------------------------- /public/window.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/file.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import { dirname } from "path"; 2 | import { fileURLToPath } from "url"; 3 | import { FlatCompat } from "@eslint/eslintrc"; 4 | 5 | const __filename = fileURLToPath(import.meta.url); 6 | const __dirname = dirname(__filename); 7 | 8 | const compat = new FlatCompat({ 9 | baseDirectory: __dirname, 10 | }); 11 | 12 | const eslintConfig = [ 13 | ...compat.extends("next/core-web-vitals", "next/typescript"), 14 | ]; 15 | 16 | export default eslintConfig; 17 | -------------------------------------------------------------------------------- /components.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://ui.shadcn.com/schema.json", 3 | "style": "new-york", 4 | "rsc": true, 5 | "tsx": true, 6 | "tailwind": { 7 | "config": "tailwind.config.ts", 8 | "css": "app/globals.css", 9 | "baseColor": "neutral", 10 | "cssVariables": true, 11 | "prefix": "" 12 | }, 13 | "aliases": { 14 | "components": "@/components", 15 | "utils": "@/lib/utils", 16 | "ui": "@/components/ui", 17 | "lib": "@/lib", 18 | "hooks": "@/hooks" 19 | }, 20 | "iconLibrary": "lucide" 21 | } -------------------------------------------------------------------------------- /app/about/page.tsx: -------------------------------------------------------------------------------- 1 | 'use cache' 2 | 3 | import Boxes from "@/components/boxes"; 4 | import Link from "next/link"; 5 | 6 | 7 | 8 | export default async function About() { 9 | 10 | return ( 11 |
12 |
13 |

About Page

14 | 15 | Go back home 16 | 17 |
18 | 19 |
20 | ); 21 | } 22 | -------------------------------------------------------------------------------- /components/animated-text.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | 4 | export default function AnimatedText({ text }: { text: string }) { 5 | 6 | return ( 7 |

8 | {text.split("").map((char, index) => ( 9 | 14 | {char === " " ? "\u00A0" : char} 15 | 16 | ))} 17 |

); 18 | }; 19 | 20 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.* 7 | .yarn/* 8 | !.yarn/patches 9 | !.yarn/plugins 10 | !.yarn/releases 11 | !.yarn/versions 12 | 13 | # testing 14 | /coverage 15 | 16 | # next.js 17 | /.next/ 18 | /out/ 19 | 20 | # production 21 | /build 22 | 23 | # misc 24 | .DS_Store 25 | *.pem 26 | 27 | # debug 28 | npm-debug.log* 29 | yarn-debug.log* 30 | yarn-error.log* 31 | .pnpm-debug.log* 32 | 33 | # env files (can opt-in for committing if needed) 34 | .env* 35 | 36 | # vercel 37 | .vercel 38 | 39 | # typescript 40 | *.tsbuildinfo 41 | next-env.d.ts 42 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2017", 4 | "lib": ["dom", "dom.iterable", "esnext"], 5 | "allowJs": true, 6 | "skipLibCheck": true, 7 | "strict": true, 8 | "noEmit": true, 9 | "esModuleInterop": true, 10 | "module": "esnext", 11 | "moduleResolution": "bundler", 12 | "resolveJsonModule": true, 13 | "isolatedModules": true, 14 | "jsx": "preserve", 15 | "incremental": true, 16 | "plugins": [ 17 | { 18 | "name": "next" 19 | } 20 | ], 21 | "paths": { 22 | "@/*": ["./*"] 23 | } 24 | }, 25 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], 26 | "exclude": ["node_modules"] 27 | } 28 | -------------------------------------------------------------------------------- /public/globe.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "animations", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev --turbopack", 7 | "build": "next build", 8 | "start": "next start", 9 | "lint": "next lint" 10 | }, 11 | "dependencies": { 12 | "@radix-ui/react-dropdown-menu": "^2.1.6", 13 | "@radix-ui/react-slot": "^1.1.2", 14 | "@tailwindcss/postcss": "^4.0.4", 15 | "class-variance-authority": "^0.7.1", 16 | "clsx": "^2.1.1", 17 | "lucide-react": "^0.474.0", 18 | "motion": "^12.4.0", 19 | "next": "^15.2.0", 20 | "next-themes": "^0.4.4", 21 | "react": "^19.0.0", 22 | "react-dom": "^19.0.0", 23 | "tailwind-merge": "^3.0.1", 24 | "tailwindcss": "^4.0.4", 25 | "tailwindcss-animate": "^1.0.7" 26 | }, 27 | "devDependencies": { 28 | "@eslint/eslintrc": "^3", 29 | "@types/node": "^20", 30 | "@types/react": "^19", 31 | "@types/react-dom": "^19", 32 | "eslint": "^9", 33 | "eslint-config-next": "15.1.6", 34 | "postcss": "^8.5.1", 35 | "typescript": "^5" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /app/layout.tsx: -------------------------------------------------------------------------------- 1 | import type { Metadata } from "next"; 2 | import { Geist, Geist_Mono } from "next/font/google"; 3 | import "./globals.css"; 4 | import { ThemeProvider } from "@/components/theme-provider"; 5 | import Nav from "@/components/nav"; 6 | 7 | // import { unstable_ViewTransition as ViewTransition } from "react"; 8 | 9 | const geistSans = Geist({ 10 | variable: "--font-geist-sans", 11 | subsets: ["latin"], 12 | }); 13 | 14 | const geistMono = Geist_Mono({ 15 | variable: "--font-geist-mono", 16 | subsets: ["latin"], 17 | }); 18 | 19 | export const metadata: Metadata = { 20 | title: "Create Next App", 21 | description: "Generated by create next app", 22 | } 23 | export default function RootLayout({ 24 | children, 25 | }: Readonly<{ 26 | children: React.ReactNode; 27 | }>) { 28 | return ( 29 | 30 | 31 |