diff --git a/.vscode/settings.json b/.vscode/settings.json index 76a9c3a4..d90d6c9c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -13,6 +13,15 @@ "editor.codeActionsOnSave": { "source.fixAll.eslint": "always" }, + // Enable suggestions inside strings for Tailwind CSS class names + // https://github.com/tailwindlabs/tailwindcss-intellisense#editorquicksuggestions + "editor.quickSuggestions": { + "strings": "on" + }, + "tailwindCSS.experimental.configFile": { + "apps/frontend/src/app/globals.css": "apps/frontend/src/**" + }, + "tailwindCSS.classFunctions": ["tw", "clsx", "cn"], "files.associations": { ".css": "tailwindcss", "*.scss": "tailwindcss" diff --git a/apps/frontend/components.json b/apps/frontend/components.json index d09c9490..b9835b61 100644 --- a/apps/frontend/components.json +++ b/apps/frontend/components.json @@ -12,7 +12,7 @@ "rsc": true, "tsx": true }, - "iconLibrary": "lucide", + "iconLibrary": "fontawesome", "aliases": { "components": "@web/modules/shared/components", "utils": "@web/lib/utils", diff --git a/apps/frontend/package.json b/apps/frontend/package.json index 80d26fdf..2b406af5 100644 --- a/apps/frontend/package.json +++ b/apps/frontend/package.json @@ -59,7 +59,7 @@ "schema-dts": "^1.1.5", "sharp": "^0.34.5", "tailwind-merge": "^3.4.0", - "tailwindcss": "4.1.17", + "tailwindcss": "^4.1.18", "tailwindcss-animate": "^1.0.7", "typescript": "^5.9.3", "zod": "^4.1.13", @@ -67,8 +67,7 @@ "zustand": "^5.0.9" }, "devDependencies": { - "@shrutibalasa/tailwind-grid-auto-fit": "^1.1.0", - "@tailwindcss/postcss": "^4.1.17", + "@tailwindcss/postcss": "^4.1.18", "@types/mdx": "^2.0.13", "@types/react-modal": "^3.16.3", "eslint-config-next": "16.0.8", diff --git a/apps/frontend/postcss.config.js b/apps/frontend/postcss.config.mjs similarity index 56% rename from apps/frontend/postcss.config.js rename to apps/frontend/postcss.config.mjs index b4bee663..297374d8 100644 --- a/apps/frontend/postcss.config.js +++ b/apps/frontend/postcss.config.mjs @@ -1,6 +1,7 @@ -module.exports = { +const config = { plugins: { '@tailwindcss/postcss': {}, - autoprefixer: {}, }, }; + +export default config; diff --git a/apps/frontend/src/app/(content)/(info)/about/page.tsx b/apps/frontend/src/app/(content)/(info)/about/page.tsx index 37916161..d7e9ceea 100644 --- a/apps/frontend/src/app/(content)/(info)/about/page.tsx +++ b/apps/frontend/src/app/(content)/(info)/about/page.tsx @@ -12,7 +12,7 @@ export const metadata: Metadata = { const AboutPage = () => { return ( <> -
+
{ )} -
+
{ {"See what we've been working on!"} -
+
{posts.map((post, i) => ( { width={480} height={360} alt='' - className='rounded-md aspect-[16/9] w-full object-cover transition-all duration-300 mb-2' + className='rounded-md aspect-video w-full object-cover transition-all duration-300 mb-2' /> -

+

{post.title}

diff --git a/apps/frontend/src/app/(content)/(info)/contact/page.tsx b/apps/frontend/src/app/(content)/(info)/contact/page.tsx index ebd20a1a..18f5728d 100644 --- a/apps/frontend/src/app/(content)/(info)/contact/page.tsx +++ b/apps/frontend/src/app/(content)/(info)/contact/page.tsx @@ -11,7 +11,7 @@ export const metadata: Metadata = { const AboutPage = () => { return ( <> -

+
{'< Back'} diff --git a/apps/frontend/src/app/(content)/(info)/help/[id]/page.tsx b/apps/frontend/src/app/(content)/(info)/help/[id]/page.tsx index d776871e..5c372fbc 100644 --- a/apps/frontend/src/app/(content)/(info)/help/[id]/page.tsx +++ b/apps/frontend/src/app/(content)/(info)/help/[id]/page.tsx @@ -46,7 +46,7 @@ const HelpPost = async ({ params }: HelpPageProps) => { return ( <> -
+
{ width={480} height={360} alt={post.title} - className='rounded-2xl aspect-[3/2] object-cover brightness-150 transition-all duration-300' + className='rounded-2xl aspect-3/2 object-cover brightness-150 transition-all duration-300' /> {/* Gradient over the image */} -
+

{post.shortTitle || post.title}

diff --git a/apps/frontend/src/app/(external)/layout.tsx b/apps/frontend/src/app/(external)/layout.tsx index aa9d1eb1..36d17c19 100644 --- a/apps/frontend/src/app/(external)/layout.tsx +++ b/apps/frontend/src/app/(external)/layout.tsx @@ -10,7 +10,7 @@ export default async function LoginLayout({ return ( <>
- + {/* https://nextjs.org/docs/app/building-your-application/optimizing/metadata#json-ld */} @@ -102,7 +111,7 @@ export default function RootLayout({ diff --git a/apps/frontend/src/app/not-found.tsx b/apps/frontend/src/app/not-found.tsx index 618e98f6..e6544d41 100644 --- a/apps/frontend/src/app/not-found.tsx +++ b/apps/frontend/src/app/not-found.tsx @@ -40,13 +40,13 @@ export default function NotFound() { return ( <>
-
+
{/* Background image */}

Oops...

@@ -57,7 +57,7 @@ export default function NotFound() { width={400} height={400} quality={95} - className='object-contain relative md:left-8 top-8 w-64 md:w-full z-[2]' + className='object-contain relative md:left-8 top-8 w-64 md:w-full z-2' />

404 diff --git a/apps/frontend/src/modules/auth/components/loginPage.tsx b/apps/frontend/src/modules/auth/components/loginPage.tsx index 5551d6d3..75a1f05e 100644 --- a/apps/frontend/src/modules/auth/components/loginPage.tsx +++ b/apps/frontend/src/modules/auth/components/loginPage.tsx @@ -51,9 +51,9 @@ export const LoginPage = () => { {/* Vertical divider (mobile) */} -
+
{/* Horizontal divider (desktop) */} -
+
{/* Right half */}
@@ -87,6 +87,7 @@ export const LoginPage = () => { Log in with Google @@ -99,6 +100,7 @@ export const LoginPage = () => { Log in with GitHub @@ -111,6 +113,7 @@ export const LoginPage = () => { Log in with Discord diff --git a/apps/frontend/src/modules/auth/components/loginWithEmailPage.tsx b/apps/frontend/src/modules/auth/components/loginWithEmailPage.tsx index 06367fd3..9607bdec 100644 --- a/apps/frontend/src/modules/auth/components/loginWithEmailPage.tsx +++ b/apps/frontend/src/modules/auth/components/loginWithEmailPage.tsx @@ -14,9 +14,9 @@ export const LoginWithEmailPage = () => { {/* Vertical divider (mobile) */} -
+
{/* Horizontal divider (desktop) */} -
+
{/* Right half */}
diff --git a/apps/frontend/src/modules/browse/EventBanner.tsx b/apps/frontend/src/modules/browse/EventBanner.tsx index 496b0791..81f864fc 100644 --- a/apps/frontend/src/modules/browse/EventBanner.tsx +++ b/apps/frontend/src/modules/browse/EventBanner.tsx @@ -32,7 +32,7 @@ export const EventBanner = () => { }; return ( -
+
{ >
-
+

{' '} {timeLeft === 0 ? ( diff --git a/apps/frontend/src/modules/browse/WelcomeBanner.tsx b/apps/frontend/src/modules/browse/WelcomeBanner.tsx index ba489bc2..63f3e264 100644 --- a/apps/frontend/src/modules/browse/WelcomeBanner.tsx +++ b/apps/frontend/src/modules/browse/WelcomeBanner.tsx @@ -3,7 +3,7 @@ import Link from 'next/link'; export const WelcomeBanner = () => { return ( -

+
{ width={100} height={100} /> -
+

Welcome to Note Block World ! diff --git a/apps/frontend/src/modules/browse/components/HomePageComponent.tsx b/apps/frontend/src/modules/browse/components/HomePageComponent.tsx index 9edcd140..0f9d3ccf 100644 --- a/apps/frontend/src/modules/browse/components/HomePageComponent.tsx +++ b/apps/frontend/src/modules/browse/components/HomePageComponent.tsx @@ -82,7 +82,7 @@ export const HomePageComponent = () => { {/* RECENT SONGS */}
-

Recent songs

+

Recent songs

diff --git a/apps/frontend/src/modules/browse/components/SongCard.tsx b/apps/frontend/src/modules/browse/components/SongCard.tsx index e2e3d4ac..5910abbc 100644 --- a/apps/frontend/src/modules/browse/components/SongCard.tsx +++ b/apps/frontend/src/modules/browse/components/SongCard.tsx @@ -17,7 +17,7 @@ const SongDataDisplay = ({ song }: { song: SongPreviewDtoType | null }) => {
{!song ? ( ) : ( @@ -33,9 +33,9 @@ const SongDataDisplay = ({ song }: { song: SongPreviewDtoType | null }) => {
{/* Song info */} -
+
{/* Song title */} -

+

{song?.title || }

@@ -51,7 +51,7 @@ const SongDataDisplay = ({ song }: { song: SongPreviewDtoType | null }) => { )}

{/* Play icon & count */} -
+
{!song ? ( ) : ( diff --git a/apps/frontend/src/modules/browse/components/SongCardGroup.tsx b/apps/frontend/src/modules/browse/components/SongCardGroup.tsx index c247d636..1d62d49e 100644 --- a/apps/frontend/src/modules/browse/components/SongCardGroup.tsx +++ b/apps/frontend/src/modules/browse/components/SongCardGroup.tsx @@ -1,25 +1,6 @@ -const SongCardGroup = ({ - children, - size = 'md', -}: { - children: React.ReactNode; - size?: 'sm' | 'md' | 'lg' | 'xl'; -}) => { - // Define min column widths for each size - const minWidths = { - sm: '200px', - md: '280px', - lg: '320px', - xl: '400px', - }; - +const SongCardGroup = ({ children }: { children: React.ReactNode }) => { return ( -
+
{children}
); diff --git a/apps/frontend/src/modules/my-songs/components/client/SongRow.tsx b/apps/frontend/src/modules/my-songs/components/client/SongRow.tsx index 418e8f38..9333cb9b 100644 --- a/apps/frontend/src/modules/my-songs/components/client/SongRow.tsx +++ b/apps/frontend/src/modules/my-songs/components/client/SongRow.tsx @@ -41,7 +41,7 @@ export const SongRow = ({ song }: { song?: SongPreviewDtoType | null }) => { > {/* Thumbnail */}
-
+
{!song ? ( ) : ( diff --git a/apps/frontend/src/modules/shared/components/CustomMarkdown.tsx b/apps/frontend/src/modules/shared/components/CustomMarkdown.tsx index fdad1fec..523597ee 100644 --- a/apps/frontend/src/modules/shared/components/CustomMarkdown.tsx +++ b/apps/frontend/src/modules/shared/components/CustomMarkdown.tsx @@ -105,7 +105,7 @@ const code = ({ return ( ); }; diff --git a/apps/frontend/src/modules/shared/components/NoteBlockWorldLogo.tsx b/apps/frontend/src/modules/shared/components/NoteBlockWorldLogo.tsx index 4b83afe1..e302ef18 100644 --- a/apps/frontend/src/modules/shared/components/NoteBlockWorldLogo.tsx +++ b/apps/frontend/src/modules/shared/components/NoteBlockWorldLogo.tsx @@ -16,13 +16,13 @@ export const NoteBlockWorldLogo = ({ let flexConfig, marginConfig; if (orientation === 'horizontal') { - flexConfig = 'flex-row mr-[-2rem]'; + flexConfig = 'flex-row -mr-8'; marginConfig = 'right-8'; } else if (orientation === 'vertical') { - flexConfig = 'flex-col mb-[-2.5rem]'; + flexConfig = 'flex-col -mb-10'; marginConfig = 'bottom-10'; } else { - flexConfig = 'flex-row sm:flex-col mr-[-2rem] sm:mr-0 sm:mb-[-2.5rem]'; + flexConfig = 'flex-row sm:flex-col -mr-8 sm:mr-0 sm:-mb-10'; marginConfig = 'right-8 sm:right-0 sm:bottom-10'; } diff --git a/apps/frontend/src/modules/shared/components/client/Carousel.tsx b/apps/frontend/src/modules/shared/components/client/Carousel.tsx index e28ad30c..add8b9e3 100644 --- a/apps/frontend/src/modules/shared/components/client/Carousel.tsx +++ b/apps/frontend/src/modules/shared/components/client/Carousel.tsx @@ -181,7 +181,7 @@ export const CarouselContent = forwardRef< const { carouselRef } = useCarousel(); return ( -
+
); diff --git a/apps/frontend/src/modules/shared/components/client/Command.tsx b/apps/frontend/src/modules/shared/components/client/Command.tsx index a8c20b3f..05134107 100644 --- a/apps/frontend/src/modules/shared/components/client/Command.tsx +++ b/apps/frontend/src/modules/shared/components/client/Command.tsx @@ -39,7 +39,7 @@ const CommandInput = React.forwardRef< { return (
-
+
{/* Close button */} diff --git a/apps/frontend/src/modules/shared/components/client/ErrorBox.tsx b/apps/frontend/src/modules/shared/components/client/ErrorBox.tsx index b5d2619a..ac56739f 100644 --- a/apps/frontend/src/modules/shared/components/client/ErrorBox.tsx +++ b/apps/frontend/src/modules/shared/components/client/ErrorBox.tsx @@ -3,7 +3,7 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; export const ErrorBox = ({ message }: { message: string }) => { return ( -
+
{message}
diff --git a/apps/frontend/src/modules/shared/components/client/FormElements.tsx b/apps/frontend/src/modules/shared/components/client/FormElements.tsx index 614fcbbc..e96218ef 100644 --- a/apps/frontend/src/modules/shared/components/client/FormElements.tsx +++ b/apps/frontend/src/modules/shared/components/client/FormElements.tsx @@ -1,7 +1,7 @@ import { faQuestionCircle } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import * as SliderPrimitive from '@radix-ui/react-slider'; -import { ComponentPropsWithoutRef, ElementRef, forwardRef } from 'react'; +import { forwardRef } from 'react'; import Skeleton from 'react-loading-skeleton'; import Markdown from 'react-markdown'; @@ -20,7 +20,7 @@ export const Label = forwardRef< const { id, label } = props; return ( -