mirror of
https://github.com/dathere/qsvpro.dathere.com.git
synced 2025-12-19 05:59:24 +00:00
Compare commits
2 commits
d66e01f117
...
6a4723760d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6a4723760d | ||
|
|
bc3770ece5 |
9 changed files with 135 additions and 130 deletions
|
|
@ -1,8 +1,12 @@
|
||||||
import { defineConfig } from "astro/config";
|
import { defineConfig } from "astro/config";
|
||||||
import react from "@astrojs/react";
|
import react from "@astrojs/react";
|
||||||
import tailwind from "@astrojs/tailwind";
|
import tailwindcss from "@tailwindcss/vite";
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
site: "https://qsvpro.dathere.com",
|
site: "https://qsvpro.dathere.com",
|
||||||
integrations: [react(), tailwind()],
|
integrations: [react(), tailwindcss()],
|
||||||
|
|
||||||
|
vite: {
|
||||||
|
plugins: [tailwindcss()],
|
||||||
|
},
|
||||||
});
|
});
|
||||||
BIN
bun.lockb
BIN
bun.lockb
Binary file not shown.
19
package.json
19
package.json
|
|
@ -11,19 +11,20 @@
|
||||||
"astro": "astro"
|
"astro": "astro"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@astrojs/tailwind": "^5.1.5",
|
|
||||||
"@fontsource/inter": "^5.2.8",
|
"@fontsource/inter": "^5.2.8",
|
||||||
"astro": "^4.16.19",
|
"@tailwindcss/postcss": "^4.1.17",
|
||||||
|
"@tailwindcss/vite": "^4.1.17",
|
||||||
|
"astro": "^5.16.0",
|
||||||
"embla-carousel-autoplay": "^8.6.0",
|
"embla-carousel-autoplay": "^8.6.0",
|
||||||
"embla-carousel-react": "^8.6.0",
|
"embla-carousel-react": "^8.6.0",
|
||||||
"framer-motion": "^11.18.2",
|
"framer-motion": "^12.23.24",
|
||||||
"npm-check-updates": "^16.14.20",
|
"npm-check-updates": "^19.1.2",
|
||||||
"tailwindcss": "^3.4.17"
|
"tailwindcss": "^4.1.17"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@astrojs/react": "^3.6.3",
|
"@astrojs/react": "^4.4.2",
|
||||||
"prettier": "3.3.3",
|
"prettier": "3.6.2",
|
||||||
"react": "^18.3.1",
|
"react": "^19.2.0",
|
||||||
"react-dom": "^18.3.1"
|
"react-dom": "^19.2.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
5
postcss.config.mjs
Normal file
5
postcss.config.mjs
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
export default {
|
||||||
|
plugins: {
|
||||||
|
"@tailwindcss/postcss": {},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
@ -70,7 +70,7 @@ export const Hero = () => {
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(
|
console.error(
|
||||||
"Unable to fetch API data from releases repository: " +
|
"Unable to fetch API data from releases repository: " +
|
||||||
String(e)
|
String(e)
|
||||||
);
|
);
|
||||||
console.log("Showing default download button to user.");
|
console.log("Showing default download button to user.");
|
||||||
}
|
}
|
||||||
|
|
@ -142,38 +142,36 @@ export const Hero = () => {
|
||||||
(platform) => (
|
(platform) => (
|
||||||
<div
|
<div
|
||||||
key={platform}
|
key={platform}
|
||||||
className={`mx-4 ${
|
className={`mx-4 ${platform === OS
|
||||||
platform === OS
|
? "text-white text-xl font-bold"
|
||||||
? "text-white text-xl font-bold"
|
: "text-white"
|
||||||
: "text-white"
|
}`}
|
||||||
}`}
|
|
||||||
>
|
>
|
||||||
{downloadData[platform].map(
|
{downloadData[platform].map(
|
||||||
(download, index) => (
|
(download, index) => (
|
||||||
<>
|
<>
|
||||||
{platform ===
|
{platform ===
|
||||||
"windows" && (
|
"windows" && (
|
||||||
<div className="flex justify-center">
|
<div className="flex justify-center">
|
||||||
{/* Might not be an actual download, but store page clicked */}
|
{/* 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">
|
<a data-rybbit-event="qsv_pro_download" data-rybbit-prop-platform="Microsoft Store" href="https://apps.microsoft.com/detail/xpffdj3f1jsztf?mode=full">
|
||||||
<img
|
<img
|
||||||
src="https://get.microsoft.com/images/en-us%20light.svg"
|
src="https://get.microsoft.com/images/en-us%20light.svg"
|
||||||
width="200"
|
width="200"
|
||||||
/>
|
/>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
<a
|
<a
|
||||||
key={index}
|
key={index}
|
||||||
href={`https://github.com/dathere/qsv-pro-releases/releases/download/${name}/${download[1]}`} // Replace with actual download path
|
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-event="qsv_pro_download"
|
||||||
data-rybbit-prop-platform={download[0]}
|
data-rybbit-prop-platform={download[0]}
|
||||||
className={`block lg:min-w-96 text-white font-bold py-2 px-4 rounded mt-4 ${
|
className={`block lg:min-w-96 text-white font-bold py-2 px-4 rounded mt-4 ${platform ===
|
||||||
platform ===
|
|
||||||
OS
|
OS
|
||||||
? " bg-teal-600 hover:bg-teal-700"
|
? " bg-teal-600 hover:bg-teal-700"
|
||||||
: " bg-blue-500 hover:bg-blue-700"
|
: " bg-blue-500 hover:bg-blue-700"
|
||||||
}`}
|
}`}
|
||||||
download
|
download
|
||||||
>
|
>
|
||||||
{download[0]}
|
{download[0]}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
---
|
---
|
||||||
|
import "../styles/global.css";
|
||||||
import "@fontsource/inter";
|
import "@fontsource/inter";
|
||||||
import "@fontsource/inter/500.css";
|
import "@fontsource/inter/500.css";
|
||||||
import "@fontsource/inter/600.css";
|
import "@fontsource/inter/600.css";
|
||||||
|
|
@ -7,66 +8,66 @@ import "@fontsource/inter/800.css";
|
||||||
import "@fontsource/inter/900.css";
|
import "@fontsource/inter/900.css";
|
||||||
|
|
||||||
export interface Props {
|
export interface Props {
|
||||||
title: string;
|
title: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
const { title } = Astro.props;
|
const { title } = Astro.props;
|
||||||
const rybbitSiteId = "3";
|
const rybbitSiteId = "3";
|
||||||
---
|
---
|
||||||
|
|
||||||
<!DOCTYPE html>
|
<!doctype html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width" />
|
<meta name="viewport" content="width=device-width" />
|
||||||
<link rel="icon" href="/favicon.ico" />
|
<link rel="icon" href="/favicon.ico" />
|
||||||
<meta name="generator" content={Astro.generator} />
|
<meta name="generator" content={Astro.generator} />
|
||||||
<!-- Primary Meta Tags -->
|
<!-- Primary Meta Tags -->
|
||||||
<title>{title}</title>
|
<title>{title}</title>
|
||||||
<meta name="title" content={title} />
|
<meta name="title" content={title} />
|
||||||
<meta
|
<meta
|
||||||
name="description"
|
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."
|
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 -->
|
<!-- Open Graph / Facebook -->
|
||||||
<meta property="og:type" content="website" />
|
<meta property="og:type" content="website" />
|
||||||
<meta property="og:url" content="https://qsvpro.dathere.com" />
|
<meta property="og:url" content="https://qsvpro.dathere.com" />
|
||||||
<meta property="og:title" content={title} />
|
<meta property="og:title" content={title} />
|
||||||
<meta
|
<meta
|
||||||
property="og:description"
|
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."
|
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" />
|
<meta property="og:image" content="/sm-preview.jpg" />
|
||||||
|
|
||||||
<!-- Twitter -->
|
<!-- Twitter -->
|
||||||
<meta property="twitter:card" content="summary_large_image" />
|
<meta property="twitter:card" content="summary_large_image" />
|
||||||
<meta property="twitter:url" content="https://qsvpro.dathere.com" />
|
<meta property="twitter:url" content="https://qsvpro.dathere.com" />
|
||||||
<meta property="twitter:title" content={title} />
|
<meta property="twitter:title" content={title} />
|
||||||
<meta
|
<meta
|
||||||
property="twitter:description"
|
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."
|
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" />
|
<meta property="twitter:image" content="/sm-preview.jpg" />
|
||||||
<script is:inline
|
<script
|
||||||
src="https://mk-analytics.dathere.com/api/script.js"
|
is:inline
|
||||||
data-site-id={rybbitSiteId}
|
src="https://mk-analytics.dathere.com/api/script.js"
|
||||||
data-session-replay="true"
|
data-site-id={rybbitSiteId}
|
||||||
data-track-errors="true"
|
data-session-replay="true"
|
||||||
data-web-vitals="true"
|
data-track-errors="true"
|
||||||
async
|
data-web-vitals="true"
|
||||||
defer
|
async
|
||||||
></script>
|
defer></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<slot />
|
<slot />
|
||||||
<style is:global>
|
<style is:global>
|
||||||
html {
|
html {
|
||||||
font-family: Inter;
|
font-family: Inter;
|
||||||
background-color: #26272b;
|
background-color: #26272b;
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
scroll-behavior: smooth;
|
scroll-behavior: smooth;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,27 @@
|
||||||
|
@reference "./global.css";
|
||||||
|
|
||||||
/* Typography */
|
/* Typography */
|
||||||
|
|
||||||
.custom-block-title {
|
.custom-block-title {
|
||||||
@apply text-white text-3xl font-bold tracking-normal;
|
@apply text-white text-3xl font-bold tracking-normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-block-big-title {
|
.custom-block-big-title {
|
||||||
@apply text-white text-4xl xl:text-5xl font-bold tracking-normal;
|
@apply text-white text-4xl xl:text-5xl font-bold tracking-normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-block-subtitle {
|
.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 {
|
.custom-content-title {
|
||||||
@apply text-white text-lg font-bold tracking-normal;
|
@apply text-white text-lg font-bold tracking-normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-content-text-white {
|
.custom-content-text-white {
|
||||||
@apply text-white text-base leading-relaxed;
|
@apply text-white text-base leading-relaxed;
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-content-text-gray {
|
.custom-content-text-gray {
|
||||||
@apply text-gray-400 text-base;
|
@apply text-gray-400 text-base;
|
||||||
}
|
}
|
||||||
|
|
@ -22,14 +29,17 @@
|
||||||
/* Backgrounds */
|
/* Backgrounds */
|
||||||
|
|
||||||
.custom-bg-dark1 {
|
.custom-bg-dark1 {
|
||||||
@apply bg-customDarkBg1 fill-customDarkBg1;
|
@apply bg-customDarkBg1 fill-customDarkBg1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-bg-dark2 {
|
.custom-bg-dark2 {
|
||||||
@apply bg-customDarkBg2 fill-customDarkBg2;
|
@apply bg-customDarkBg2 fill-customDarkBg2;
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-bg-dark3 {
|
.custom-bg-dark3 {
|
||||||
@apply bg-customDarkBg3 fill-customDarkBg3;
|
@apply bg-customDarkBg3 fill-customDarkBg3;
|
||||||
}
|
}
|
||||||
|
|
||||||
body,
|
body,
|
||||||
html {
|
html {
|
||||||
@apply bg-customDarkBg2;
|
@apply bg-customDarkBg2;
|
||||||
|
|
@ -38,22 +48,23 @@ html {
|
||||||
/* Borders */
|
/* Borders */
|
||||||
|
|
||||||
.custom-border-gray {
|
.custom-border-gray {
|
||||||
@apply border border-solid border-[rgb(255,255,255,0.15)];
|
@apply border border-solid border-customBorderGray;
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-border-gray-darker {
|
.custom-border-gray-darker {
|
||||||
@apply border border-solid border-[rgb(255,255,255,0.07)];
|
@apply border border-solid border-customBorderGrayDarker;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Buttons */
|
/* Buttons */
|
||||||
|
|
||||||
.custom-button-colored {
|
.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 */
|
||||||
|
|
||||||
.navbar-link {
|
.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 */
|
/* Preventing FOUC */
|
||||||
|
|
|
||||||
19
src/styles/global.css
Normal file
19
src/styles/global.css
Normal 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);
|
||||||
|
}
|
||||||
|
|
@ -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",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue