From 8da0abe32586ad6cfe42bacb3b045223a73f17f5 Mon Sep 17 00:00:00 2001 From: Fergal Moran Date: Wed, 18 Sep 2024 15:27:18 +0100 Subject: [PATCH] MagicUI added (undecided for now) --- bun.lockb | Bin 402560 -> 402610 bytes components.json | 3 +- package.json | 2 + src/app/(site)/layout.tsx | 1 - src/components/magicui/bento-grid.tsx | 79 +++++++++++++++++++++++++ src/components/magicui/blur-in.tsx | 39 ++++++++++++ src/components/trending-images.tsx | 54 ++++++++++------- src/lib/utils.ts | 2 +- src/styles/globals.css | 9 ++- tailwind.config.ts | 82 +++++++++++++------------- 10 files changed, 202 insertions(+), 69 deletions(-) create mode 100644 src/components/magicui/bento-grid.tsx create mode 100644 src/components/magicui/blur-in.tsx diff --git a/bun.lockb b/bun.lockb index a9cddb0de627e1d29918754ab3cacc686251f692..c37748d479b99c0338681569dbb384c1454406e8 100755 GIT binary patch delta 64083 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 diff --git a/components.json b/components.json index d158417..97caaf1 100644 --- a/components.json +++ b/components.json @@ -14,7 +14,6 @@ "components": "@/components", "utils": "@/lib/utils", "ui": "@/components/ui", - "lib": "@/lib", - "hooks": "@/hooks" + "magicui": "@/components/magicui" } } \ No newline at end of file diff --git a/package.json b/package.json index a0ec4e0..537f861 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "db:migrate": "drizzle-kit migrate", "db:push": "drizzle-kit push", "db:studio": "drizzle-kit studio", + "dev:turbo": "NODE_ENV=development next dev -p 3002 --turbo & local-ssl-proxy --config ./ssl-proxy.json", "dev": "NODE_ENV=development next dev -p 3002 & local-ssl-proxy --config ./ssl-proxy.json", "dev:plain": "next dev", "lint": "next lint", @@ -65,6 +66,7 @@ "date-fns": "^4.0.0", "drizzle-orm": "^0.33.0", "embla-carousel-react": "^8.3.0", + "framer-motion": "^11.5.4", "geist": "^1.3.1", "http-status-codes": "^2.3.0", "input-otp": "^1.2.4", diff --git a/src/app/(site)/layout.tsx b/src/app/(site)/layout.tsx index 7a5573b..5cbcd7d 100644 --- a/src/app/(site)/layout.tsx +++ b/src/app/(site)/layout.tsx @@ -1,4 +1,3 @@ -"use client"; import React from "react"; import { SessionProvider } from "next-auth/react"; diff --git a/src/components/magicui/bento-grid.tsx b/src/components/magicui/bento-grid.tsx new file mode 100644 index 0000000..342a957 --- /dev/null +++ b/src/components/magicui/bento-grid.tsx @@ -0,0 +1,79 @@ +import { ReactNode } from "react"; +import { ArrowRightIcon } from "@radix-ui/react-icons"; + +import { cn } from "@/lib/utils"; +import { Button } from "@/components/ui/button"; + +const BentoGrid = ({ + children, + className, +}: { + children: ReactNode; + className?: string; +}) => { + return ( +
+ {children} +
+ ); +}; + +const BentoCard = ({ + name, + className, + background, + Icon, + description, + href, + cta, +}: { + name: string; + className: string; + background: ReactNode; + Icon: any; + description: string; + href: string; + cta: string; +}) => ( +
+
{background}
+
+ +

+ {name} +

+

{description}

+
+ + +
+
+); + +export { BentoCard, BentoGrid }; diff --git a/src/components/magicui/blur-in.tsx b/src/components/magicui/blur-in.tsx new file mode 100644 index 0000000..8014883 --- /dev/null +++ b/src/components/magicui/blur-in.tsx @@ -0,0 +1,39 @@ +"use client"; + +import { motion } from "framer-motion"; + +import { cn } from "@/lib/utils"; + +interface BlurIntProps { + word: string; + className?: string; + variant?: { + hidden: { filter: string; opacity: number }; + visible: { filter: string; opacity: number }; + }; + duration?: number; +} +const BlurIn = ({ word, className, variant, duration = 1 }: BlurIntProps) => { + const defaultVariants = { + hidden: { filter: "blur(10px)", opacity: 0 }, + visible: { filter: "blur(0px)", opacity: 1 }, + }; + const combinedVariants = variant || defaultVariants; + + return ( + + {word} + + ); +}; + +export default BlurIn; diff --git a/src/components/trending-images.tsx b/src/components/trending-images.tsx index 4fb6aa6..a38d4d7 100644 --- a/src/components/trending-images.tsx +++ b/src/components/trending-images.tsx @@ -1,29 +1,41 @@ -"use client"; +import { BellIcon } from "@radix-ui/react-icons"; -import { useState } from "react"; +import { BentoCard, BentoGrid } from "@/components/magicui/bento-grid"; +import { api } from "@/trpc/server"; -import { api } from "@/trpc/react"; -import Image from "next/image"; +const createGridCard = ( + key: string, + url: string, + title: string, + description: string, + tags: string[], +) => { + const value = { + Icon: BellIcon, + name: title, + description: description, + href: "/", + cta: "Learn more", + background: , + className: "col-span-1 row-start-1 row-end-4", + }; -export function TrendingImages() { - const [latestImages] = api.image.getTrending.useSuspenseQuery(); + return ; +}; +export async function TrendingImages() { + const latestImages = await api.image.getTrending(); return ( -
- {latestImages ? ( - latestImages.map((image) => ( - {image.title - // - )) - ) : ( -

No images yet.

+ + {latestImages.map((image) => + createGridCard( + image.id, + image.url, + image.title ?? "", + image.description ?? "", + image.tags ?? [], + ), )} -
+ ); } diff --git a/src/lib/utils.ts b/src/lib/utils.ts index bd0c391..d084cca 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -1,4 +1,4 @@ -import { clsx, type ClassValue } from "clsx" +import { type ClassValue, clsx } from "clsx" import { twMerge } from "tailwind-merge" export function cn(...inputs: ClassValue[]) { diff --git a/src/styles/globals.css b/src/styles/globals.css index 89b55f8..89f6093 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -1,6 +1,7 @@ @tailwind base; @tailwind components; @tailwind utilities; + @layer base { :root { --background: 0 0% 100%; @@ -22,13 +23,14 @@ --border: 240 5.9% 90%; --input: 240 5.9% 90%; --ring: 240 10% 3.9%; + --radius: 0.5rem; --chart-1: 12 76% 61%; --chart-2: 173 58% 39%; --chart-3: 197 37% 24%; --chart-4: 43 74% 66%; --chart-5: 27 87% 67%; - --radius: 0.5rem } + .dark { --background: 240 10% 3.9%; --foreground: 0 0% 98%; @@ -53,9 +55,10 @@ --chart-2: 160 60% 45%; --chart-3: 30 80% 55%; --chart-4: 280 65% 60%; - --chart-5: 340 75% 55% + --chart-5: 340 75% 55%; } } + @layer base { * { @apply border-border; @@ -63,4 +66,4 @@ body { @apply bg-background text-foreground; } -} +} \ No newline at end of file diff --git a/tailwind.config.ts b/tailwind.config.ts index b104d0f..84287e8 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -1,26 +1,29 @@ -import { type Config } from "tailwindcss"; +import type { Config } from "tailwindcss" -export default { +const config = { darkMode: ["class"], - content: ["./src/**/*.tsx"], + content: [ + './pages/**/*.{ts,tsx}', + './components/**/*.{ts,tsx}', + './app/**/*.{ts,tsx}', + './src/**/*.{ts,tsx}', + ], + prefix: "", theme: { - extend: { - borderRadius: { - lg: "var(--radius)", - md: "calc(var(--radius) - 2px)", - sm: "calc(var(--radius) - 4px)", + container: { + center: true, + padding: "2rem", + screens: { + "2xl": "1400px", }, + }, + extend: { colors: { + border: "hsl(var(--border))", + input: "hsl(var(--input))", + ring: "hsl(var(--ring))", 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))", @@ -29,6 +32,10 @@ export default { 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))", @@ -37,37 +44,28 @@ export default { DEFAULT: "hsl(var(--accent))", foreground: "hsl(var(--accent-foreground))", }, - destructive: { - DEFAULT: "hsl(var(--destructive))", - foreground: "hsl(var(--destructive-foreground))", + popover: { + DEFAULT: "hsl(var(--popover))", + foreground: "hsl(var(--popover-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))", + card: { + DEFAULT: "hsl(var(--card))", + foreground: "hsl(var(--card-foreground))", }, }, + borderRadius: { + lg: "var(--radius)", + md: "calc(var(--radius) - 2px)", + sm: "calc(var(--radius) - 4px)", + }, keyframes: { "accordion-down": { - from: { - height: "0", - }, - to: { - height: "var(--radix-accordion-content-height)", - }, + from: { height: "0" }, + to: { height: "var(--radix-accordion-content-height)" }, }, "accordion-up": { - from: { - height: "var(--radix-accordion-content-height)", - }, - to: { - height: "0", - }, + from: { height: "var(--radix-accordion-content-height)" }, + to: { height: "0" }, }, }, animation: { @@ -77,4 +75,6 @@ export default { }, }, plugins: [require("tailwindcss-animate")], -} satisfies Config; +} satisfies Config + +export default config \ No newline at end of file