From 6a4723760d6a5788c69415b8d77381cdc870f6c0 Mon Sep 17 00:00:00 2001 From: rzmk <30333942+rzmk@users.noreply.github.com> Date: Mon, 24 Nov 2025 14:56:30 -0500 Subject: [PATCH] build: update to tailwindcss v4 --- astro.config.mjs | 12 +++-- bun.lockb | Bin 243205 -> 207141 bytes package.json | 2 +- postcss.config.mjs | 5 ++ src/components/Hero.jsx | 40 +++++++-------- src/layouts/Layout.astro | 107 ++++++++++++++++++++------------------- src/styles/Theme.css | 29 +++++++---- src/styles/global.css | 19 +++++++ tailwind.config.cjs | 34 ------------- 9 files changed, 126 insertions(+), 122 deletions(-) create mode 100644 postcss.config.mjs create mode 100644 src/styles/global.css delete mode 100644 tailwind.config.cjs diff --git a/astro.config.mjs b/astro.config.mjs index ba46190..5800d68 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -1,8 +1,12 @@ import { defineConfig } from "astro/config"; import react from "@astrojs/react"; -import tailwind from "@astrojs/tailwind"; +import tailwindcss from "@tailwindcss/vite"; export default defineConfig({ - site: "https://qsvpro.dathere.com", - integrations: [react(), tailwind()], -}); + site: "https://qsvpro.dathere.com", + integrations: [react(), tailwindcss()], + + vite: { + plugins: [tailwindcss()], + }, +}); \ No newline at end of file diff --git a/bun.lockb b/bun.lockb index a7a03528f55c1b6717df48321d317ae7fb230c90..602e6db1e8848fd68ba2c0182998318a742643c9 100644 GIT binary patch delta 17696 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 delta 38667 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 diff --git a/package.json b/package.json index d10ddbb..8a57a8d 100644 --- a/package.json +++ b/package.json @@ -11,9 +11,9 @@ "astro": "astro" }, "dependencies": { - "@astrojs/tailwind": "^6.0.2", "@fontsource/inter": "^5.2.8", "@tailwindcss/postcss": "^4.1.17", + "@tailwindcss/vite": "^4.1.17", "astro": "^5.16.0", "embla-carousel-autoplay": "^8.6.0", "embla-carousel-react": "^8.6.0", diff --git a/postcss.config.mjs b/postcss.config.mjs new file mode 100644 index 0000000..c2ddf74 --- /dev/null +++ b/postcss.config.mjs @@ -0,0 +1,5 @@ +export default { + plugins: { + "@tailwindcss/postcss": {}, + }, +}; diff --git a/src/components/Hero.jsx b/src/components/Hero.jsx index 39e48dc..8e1d060 100644 --- a/src/components/Hero.jsx +++ b/src/components/Hero.jsx @@ -70,7 +70,7 @@ export const Hero = () => { } catch (e) { console.error( "Unable to fetch API data from releases repository: " + - String(e) + String(e) ); console.log("Showing default download button to user."); } @@ -142,38 +142,36 @@ export const Hero = () => { (platform) => (
{downloadData[platform].map( (download, index) => ( <> {platform === "windows" && ( -
- {/* Might not be an actual download, but store page clicked */} - - - -
- )} +
+ {/* Might not be an actual download, but store page clicked */} + + + +
+ )} {download[0]} diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index bfdf71a..28fc755 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -1,4 +1,5 @@ --- +import "../styles/global.css"; import "@fontsource/inter"; import "@fontsource/inter/500.css"; import "@fontsource/inter/600.css"; @@ -7,66 +8,66 @@ import "@fontsource/inter/800.css"; import "@fontsource/inter/900.css"; export interface Props { - title: string; + title: string; } const { title } = Astro.props; const rybbitSiteId = "3"; --- - + - - - - - - - {title} - - + + + + + + + {title} + + - - - - - - + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/src/styles/Theme.css b/src/styles/Theme.css index 9fe80b2..96d78c9 100644 --- a/src/styles/Theme.css +++ b/src/styles/Theme.css @@ -1,20 +1,27 @@ +@reference "./global.css"; + /* Typography */ .custom-block-title { @apply text-white text-3xl font-bold tracking-normal; } + .custom-block-big-title { @apply text-white text-4xl xl:text-5xl font-bold tracking-normal; } + .custom-block-subtitle { - @apply text-xs text-customSecondary tracking-wider font-bold uppercase; + @apply text-xs text-customSecondary tracking-wider font-bold uppercase; } + .custom-content-title { @apply text-white text-lg font-bold tracking-normal; } + .custom-content-text-white { @apply text-white text-base leading-relaxed; } + .custom-content-text-gray { @apply text-gray-400 text-base; } @@ -22,14 +29,17 @@ /* Backgrounds */ .custom-bg-dark1 { - @apply bg-customDarkBg1 fill-customDarkBg1; + @apply bg-customDarkBg1 fill-customDarkBg1; } + .custom-bg-dark2 { - @apply bg-customDarkBg2 fill-customDarkBg2; + @apply bg-customDarkBg2 fill-customDarkBg2; } + .custom-bg-dark3 { - @apply bg-customDarkBg3 fill-customDarkBg3; + @apply bg-customDarkBg3 fill-customDarkBg3; } + body, html { @apply bg-customDarkBg2; @@ -38,25 +48,26 @@ html { /* Borders */ .custom-border-gray { - @apply border border-solid border-[rgb(255,255,255,0.15)]; + @apply border border-solid border-customBorderGray; } + .custom-border-gray-darker { - @apply border border-solid border-[rgb(255,255,255,0.07)]; + @apply border border-solid border-customBorderGrayDarker; } /* Buttons */ .custom-button-colored { - @apply rounded-lg font-bold bg-customPrimary text-white flex justify-center items-center hover:bg-[rgb(0,142,200)] cursor-pointer transition; + @apply rounded-lg font-bold bg-customPrimary text-white flex justify-center items-center hover:bg-customButtonColored cursor-pointer transition; } /* Navbar */ .navbar-link { - @apply text-white lg:text-base text-2xl leading-6 mr-4 ml-4 2xl:mr-6 2xl:ml-6 cursor-pointer font-normal lg:font-medium hover:scale-110 transition duration-300 h-full pt-2; + @apply text-white lg:text-base text-2xl leading-6 mr-4 ml-4 2xl:mr-6 2xl:ml-6 cursor-pointer font-normal lg:font-medium hover:scale-110 transition duration-300 h-full pt-2; } /* Preventing FOUC */ @font-face { font-display: var(--fontsource-Inter-font-display, optional); -} +} \ No newline at end of file diff --git a/src/styles/global.css b/src/styles/global.css new file mode 100644 index 0000000..473ceb2 --- /dev/null +++ b/src/styles/global.css @@ -0,0 +1,19 @@ +@import "tailwindcss"; + +@theme { + --color-customPrimary: rgb(0, 122, 255); + --color-customSecondary: rgb(0, 142, 200); + --color-customDarkBg1: rgb(31, 32, 35); + --color-customDarkBg2: rgb(38, 39, 43); + --color-customDarkBg3: rgb(48, 49, 54); + --color-customDarkBg3Hover: rgb(55, 56, 62); + --color-customContentSubtitle: rgb(178, 184, 205); + --color-customGrayBorder: rgb(255, 255, 255, 0.1); + --color-customGrayText: rgb(174, 178, 183); + --color-customDarkBgTransparent: rgb(31, 32, 35, 0.7); + --color-customDarkBgTransparentDarker: rgb(0, 0, 0, 0.5); + --color-customDarkBgTransparentLighter: rgb(48, 49, 54, 0.7); + --color-customBorderGray: rgb(255, 255, 255, 0.15); + --color-customBorderGrayDarker: rgb(255, 255, 255, 0.07); + --color-customButtonColored: rgb(0, 142, 200); +} \ No newline at end of file diff --git a/tailwind.config.cjs b/tailwind.config.cjs deleted file mode 100644 index 3e35051..0000000 --- a/tailwind.config.cjs +++ /dev/null @@ -1,34 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -module.exports = { - content: ["./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}"], - theme: { - extend: { - colors: { - customPrimary: "rgb(0,122,255)", - customSecondary: "rgb(0,142,200)", - customDarkBg1: "rgb(31, 32, 35)", - customDarkBg2: "rgb(38, 39, 43)", - customDarkBg3: "rgb(48, 49, 54)", - customDarkBg3Hover: "rgb(55, 56, 62)", - customContentSubtitle: "rgb(178, 184, 205)", - customGrayBorder: "rgb(255,255,255,0.1)", - customGrayText: "rgb(174, 178, 183)", - customDarkBgTransparent: "rgb(31, 32, 35, 0.7)", - customDarkBgTransparentDarker: "rgb(0,0,0,0.5)", - customDarkBgTransparentLighter: "rgb(48, 49, 54, 0.7)", - }, - fontFamily: { - Inter: "Inter", - }, - screens: { - xs: "530px", - sm: "640px", - md: "768px", - lg: "1024px", - xl: "1280px", - xll: "1400px", - "2xl": "1536px", - }, - }, - }, -};