build: update to tailwindcss v4
Some checks failed
Deploy to GitHub Pages / build (push) Has been cancelled
Deploy to GitHub Pages / deploy (push) Has been cancelled

This commit is contained in:
rzmk 2025-11-24 14:56:30 -05:00
parent bc3770ece5
commit 6a4723760d
9 changed files with 126 additions and 122 deletions

View file

@ -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()],
},
});

BIN
bun.lockb

Binary file not shown.

View file

@ -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",

5
postcss.config.mjs Normal file
View file

@ -0,0 +1,5 @@
export default {
plugins: {
"@tailwindcss/postcss": {},
},
};

View file

@ -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) => (
<div
key={platform}
className={`mx-4 ${
platform === OS
? "text-white text-xl font-bold"
: "text-white"
}`}
className={`mx-4 ${platform === OS
? "text-white text-xl font-bold"
: "text-white"
}`}
>
{downloadData[platform].map(
(download, index) => (
<>
{platform ===
"windows" && (
<div className="flex justify-center">
{/* Might not be an actual download, but store page clicked */}
<a data-rybbit-event="qsv_pro_download" data-rybbit-prop-platform="Microsoft Store" href="https://apps.microsoft.com/detail/xpffdj3f1jsztf?mode=full">
<img
src="https://get.microsoft.com/images/en-us%20light.svg"
width="200"
/>
</a>
</div>
)}
<div className="flex justify-center">
{/* Might not be an actual download, but store page clicked */}
<a data-rybbit-event="qsv_pro_download" data-rybbit-prop-platform="Microsoft Store" href="https://apps.microsoft.com/detail/xpffdj3f1jsztf?mode=full">
<img
src="https://get.microsoft.com/images/en-us%20light.svg"
width="200"
/>
</a>
</div>
)}
<a
key={index}
href={`https://github.com/dathere/qsv-pro-releases/releases/download/${name}/${download[1]}`} // Replace with actual download path
data-rybbit-event="qsv_pro_download"
data-rybbit-prop-platform={download[0]}
className={`block lg:min-w-96 text-white font-bold py-2 px-4 rounded mt-4 ${
platform ===
className={`block lg:min-w-96 text-white font-bold py-2 px-4 rounded mt-4 ${platform ===
OS
? " bg-teal-600 hover:bg-teal-700"
: " bg-blue-500 hover:bg-blue-700"
}`}
? " bg-teal-600 hover:bg-teal-700"
: " bg-blue-500 hover:bg-blue-700"
}`}
download
>
{download[0]}

View file

@ -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";
---
<!DOCTYPE html>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width" />
<link rel="icon" href="/favicon.ico" />
<meta name="generator" content={Astro.generator} />
<!-- Primary Meta Tags -->
<title>{title}</title>
<meta name="title" content={title} />
<meta
name="description"
content="Transform and upload spreadsheet data to CKAN with our streamlined desktop app, featuring 'recipes' for common data wrangling tasks. Based on the qsv CLI tool."
/>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width" />
<link rel="icon" href="/favicon.ico" />
<meta name="generator" content={Astro.generator} />
<!-- Primary Meta Tags -->
<title>{title}</title>
<meta name="title" content={title} />
<meta
name="description"
content="Transform and upload spreadsheet data to CKAN with our streamlined desktop app, featuring 'recipes' for common data wrangling tasks. Based on the qsv CLI tool."
/>
<!-- Open Graph / Facebook -->
<meta property="og:type" content="website" />
<meta property="og:url" content="https://qsvpro.dathere.com" />
<meta property="og:title" content={title} />
<meta
property="og:description"
content="Transform and upload spreadsheet data to CKAN with our streamlined desktop app, featuring 'recipes' for common data wrangling tasks. Based on the qsv CLI tool."
/>
<meta property="og:image" content="/sm-preview.jpg" />
<!-- Open Graph / Facebook -->
<meta property="og:type" content="website" />
<meta property="og:url" content="https://qsvpro.dathere.com" />
<meta property="og:title" content={title} />
<meta
property="og:description"
content="Transform and upload spreadsheet data to CKAN with our streamlined desktop app, featuring 'recipes' for common data wrangling tasks. Based on the qsv CLI tool."
/>
<meta property="og:image" content="/sm-preview.jpg" />
<!-- Twitter -->
<meta property="twitter:card" content="summary_large_image" />
<meta property="twitter:url" content="https://qsvpro.dathere.com" />
<meta property="twitter:title" content={title} />
<meta
property="twitter:description"
content="Transform and upload spreadsheet data to CKAN with our streamlined desktop app, featuring 'recipes' for common data wrangling tasks. Based on the qsv CLI tool."
/>
<meta property="twitter:image" content="/sm-preview.jpg" />
<script is:inline
src="https://mk-analytics.dathere.com/api/script.js"
data-site-id={rybbitSiteId}
data-session-replay="true"
data-track-errors="true"
data-web-vitals="true"
async
defer
></script>
</head>
<body>
<slot />
<style is:global>
html {
font-family: Inter;
background-color: #26272b;
overflow-x: hidden;
scroll-behavior: smooth;
}
</style>
</body>
<!-- Twitter -->
<meta property="twitter:card" content="summary_large_image" />
<meta property="twitter:url" content="https://qsvpro.dathere.com" />
<meta property="twitter:title" content={title} />
<meta
property="twitter:description"
content="Transform and upload spreadsheet data to CKAN with our streamlined desktop app, featuring 'recipes' for common data wrangling tasks. Based on the qsv CLI tool."
/>
<meta property="twitter:image" content="/sm-preview.jpg" />
<script
is:inline
src="https://mk-analytics.dathere.com/api/script.js"
data-site-id={rybbitSiteId}
data-session-replay="true"
data-track-errors="true"
data-web-vitals="true"
async
defer></script>
</head>
<body>
<slot />
<style is:global>
html {
font-family: Inter;
background-color: #26272b;
overflow-x: hidden;
scroll-behavior: smooth;
}
</style>
</body>
</html>

View file

@ -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,22 +48,23 @@ 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 */

19
src/styles/global.css Normal file
View file

@ -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);
}

View file

@ -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",
},
},
},
};