From c3539cfc117e14c870aef29ff312153344b56d25 Mon Sep 17 00:00:00 2001 From: Gabriel Kaszewski Date: Sun, 7 Sep 2025 01:12:09 +0200 Subject: [PATCH] feat: add Frutiger font, enhance UI with glass effect and shadows, and improve component styling --- thoughts-frontend/app/frutiger-bold.woff | Bin 0 -> 21592 bytes thoughts-frontend/app/frutiger.woff | Bin 0 -> 22376 bytes thoughts-frontend/app/globals.css | 61 +++++++++++++++-- thoughts-frontend/app/layout.tsx | 31 +++++---- thoughts-frontend/app/page.tsx | 2 +- .../app/users/[username]/page.tsx | 64 +++++++++++++----- .../components/follow-button.tsx | 1 + thoughts-frontend/components/header.tsx | 2 +- thoughts-frontend/components/reply-form.tsx | 4 +- thoughts-frontend/components/thought-card.tsx | 8 ++- .../components/thought-thread.tsx | 7 +- thoughts-frontend/components/top-friends.tsx | 16 +++-- thoughts-frontend/components/ui/button.tsx | 7 +- thoughts-frontend/components/ui/card.tsx | 4 +- thoughts-frontend/components/ui/select.tsx | 40 +++++------ thoughts-frontend/components/ui/textarea.tsx | 2 +- 16 files changed, 173 insertions(+), 76 deletions(-) create mode 100644 thoughts-frontend/app/frutiger-bold.woff create mode 100644 thoughts-frontend/app/frutiger.woff diff --git a/thoughts-frontend/app/frutiger-bold.woff b/thoughts-frontend/app/frutiger-bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..fcf723ca287e8821b65f5be6d7cfcdc388c0d735 GIT binary patch literal 21592 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%0DwLMDtBYw|M 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 literal 0 HcmV?d00001 diff --git a/thoughts-frontend/app/globals.css b/thoughts-frontend/app/globals.css index 8fa309e..2234b7d 100644 --- a/thoughts-frontend/app/globals.css +++ b/thoughts-frontend/app/globals.css @@ -42,6 +42,9 @@ --radius-lg: var(--radius); --radius-xl: calc(var(--radius) + 4px); + --background-start: var(--color-sky-blue); + --background-end: var(--color-lime-300); + /* Frutiger Aero Gradients */ --gradient-fa-blue: 135deg, hsl(217 91% 60%) 0%, hsl(200 90% 70%) 100%; --gradient-fa-green: 135deg, hsl(155 70% 55%) 0%, hsl(170 80% 65%) 100%; @@ -59,6 +62,8 @@ --text-shadow-sm: 0 1px 0px rgba(255, 255, 255, 0.4); --text-shadow-md: 0 2px 2px rgba(0, 0, 0, 0.2); --text-shadow-lg: 0 4px 4px rgba(0, 0, 0, 0.2); + + --font-display: var(--font-frutiger), "Arial", "Helvetica", "sans-serif"; } :root { @@ -178,12 +183,11 @@ body { @apply bg-background text-foreground; - background: linear-gradient( - 135deg, - hsl(var(--background)) 0%, - hsl(var(--background)) 70%, - hsl(var(--primary) / 0.1) 100% - ); + background-image: url("/background.jpeg"); + background-size: cover; + background-position: center; + background-attachment: fixed; + background-repeat: no-repeat; } .glossy-effect::before { @@ -263,3 +267,48 @@ z-index: 1; } } + +@layer components { + .shadow-fa-sm { + box-shadow: var(--shadow-fa-sm), var(--fa-inner); + } + .shadow-fa-md { + box-shadow: var(--shadow-fa-md), var(--fa-inner); + } + .shadow-fa-lg { + box-shadow: var(--shadow-fa-lg), var(--fa-inner); + } + .text-shadow-default { + text-shadow: var(--text-shadow-default); + } + .text-shadow-sm { + text-shadow: var(--text-shadow-sm); + } + .text-shadow-md { + text-shadow: var(--text-shadow-md); + } + .text-shadow-lg { + text-shadow: var(--text-shadow-lg); + } + + .glass-effect { + @apply bg-card/70 backdrop-blur-lg border border-white/20 shadow-fa-lg; + } + + .gloss-highlight::before { + content: ""; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 60%; + border-radius: inherit; /* This is key for matching the parent's border radius */ + background: linear-gradient( + 180deg, + rgba(255, 255, 255, 0.5) 0%, + rgba(255, 255, 255, 0) 100% + ); + pointer-events: none; + z-index: 1; + } +} diff --git a/thoughts-frontend/app/layout.tsx b/thoughts-frontend/app/layout.tsx index 8e9b0ed..cf75af0 100644 --- a/thoughts-frontend/app/layout.tsx +++ b/thoughts-frontend/app/layout.tsx @@ -4,22 +4,29 @@ import "./globals.css"; import { AuthProvider } from "@/hooks/use-auth"; import { Toaster } from "@/components/ui/sonner"; import { Header } from "@/components/header"; - -const geistSans = Geist({ - variable: "--font-geist-sans", - subsets: ["latin"], -}); - -const geistMono = Geist_Mono({ - variable: "--font-geist-mono", - subsets: ["latin"], -}); +import localFont from "next/font/local"; export const metadata: Metadata = { title: "Thoughts", description: "A social network for sharing thoughts", }; +const frutiger = localFont({ + src: [ + { + path: "./frutiger.woff", + weight: "normal", + style: "normal", + }, + { + path: "./frutiger-bold.woff", + weight: "bold", + style: "normal", + }, + ], + variable: "--font-frutiger", +}); + export default function RootLayout({ children, }: Readonly<{ @@ -27,9 +34,7 @@ export default function RootLayout({ }>) { return ( - +
{children}
diff --git a/thoughts-frontend/app/page.tsx b/thoughts-frontend/app/page.tsx index 219a1fd..a00fce5 100644 --- a/thoughts-frontend/app/page.tsx +++ b/thoughts-frontend/app/page.tsx @@ -51,7 +51,7 @@ async function FeedPage({ token }: { token: string }) {
-

Your Feed

+

Your Feed

diff --git a/thoughts-frontend/app/users/[username]/page.tsx b/thoughts-frontend/app/users/[username]/page.tsx index 4c51630..8104541 100644 --- a/thoughts-frontend/app/users/[username]/page.tsx +++ b/thoughts-frontend/app/users/[username]/page.tsx @@ -76,26 +76,36 @@ export default async function ProfilePage({ params }: ProfilePageProps) { authorDetails.set(user.username, { avatarUrl: user.avatarUrl }); return ( -
+
{user.customCss && (