1
0

feat: responsiveness

This commit is contained in:
2026-03-11 11:52:31 +01:00
parent 005830726e
commit cffcefa150
22 changed files with 528 additions and 1087 deletions
+7 -1
View File
@@ -1,5 +1,5 @@
// @ts-check // @ts-check
import { defineConfig, passthroughImageService } from "astro/config"; import { defineConfig, passthroughImageService, fontProviders } from "astro/config";
import partytown from "@astrojs/partytown"; import partytown from "@astrojs/partytown";
import sitemap from "@astrojs/sitemap"; import sitemap from "@astrojs/sitemap";
@@ -25,5 +25,11 @@ export default defineConfig({
image: { image: {
service: passthroughImageService(), service: passthroughImageService(),
}, },
fonts: [{
name: 'Poppins',
cssVariable: '--font-poppins',
provider: fontProviders.fontsource(),
weights: [400, 600, 700]
}],
site: "https://tideshiftdigital.com", site: "https://tideshiftdigital.com",
}); });
+5 -5
View File
@@ -9,13 +9,13 @@
"astro": "astro" "astro": "astro"
}, },
"dependencies": { "dependencies": {
"@astrojs/partytown": "^2.1.4", "@astrojs/partytown": "^2.1.5",
"@astrojs/sitemap": "^3.7.0", "@astrojs/sitemap": "^3.7.1",
"@astrojs/vue": "^5.1.4", "@astrojs/vue": "^6.0.0",
"@astrolib/seo": "1.0.0-beta.8", "@astrolib/seo": "1.0.0-beta.8",
"astro": "^5.18.0", "astro": "^6.0.2",
"astro-robots-txt": "^1.0.0", "astro-robots-txt": "^1.0.0",
"gsap": "^3.14.2", "gsap": "^3.14.2",
"vue": "^3.5.29" "vue": "^3.5.30"
} }
} }
+423 -1047
View File
File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+2 -7
View File
@@ -24,12 +24,7 @@
oklch(0% 0 0 / 0.3) 100% oklch(0% 0 0 / 0.3) 100%
); );
--font-sans: --fs-page-title: clamp(2.5rem, 5vw + 1rem, 5.625rem);
"Poppins", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue",
sans-serif;
--fs-page-title: clamp(3rem, 5vw + 1rem, 5.625rem);
--fs-md: clamp(1.125rem, 2vw, 1.25rem); --fs-md: clamp(1.125rem, 2vw, 1.25rem);
--fs-lg: clamp(1.25rem, 2vw, 1.5rem); --fs-lg: clamp(1.25rem, 2vw, 1.5rem);
@@ -58,7 +53,7 @@
body { body {
background-color: var(--clr-dark-400); background-color: var(--clr-dark-400);
color: white; color: white;
font-family: var(--font-sans); font-family: var(--font-poppins);
} }
* { * {
+15 -2
View File
@@ -38,19 +38,28 @@ import SkipNavLink from "./SkipNavLink.astro";
} }
.header-logo { .header-logo {
grid-column: 1 / 7;
/* @media screen and (min-width: 50rem) {
grid-column: 1 / 3; grid-column: 1 / 3;
} */
} }
.logo { .logo {
width: 12.5rem; width: 8rem;
transform: translate3d(-0.75rem, 0, 0); transform: translate3d(-0.75rem, 0, 0);
@media screen and (min-width: 50rem) {
grid-column: 1 / 3;
width: 12.5rem;
}
} }
.header-contact { .header-contact {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 0.5rem; gap: 0.5rem;
grid-column: -1 / -3; grid-column: -7 / -1;
justify-self: end; justify-self: end;
font-size: var(--fs-md); font-size: var(--fs-md);
@@ -58,6 +67,10 @@ import SkipNavLink from "./SkipNavLink.astro";
text-transform: uppercase; text-transform: uppercase;
letter-spacing: var(--tracking-tight); letter-spacing: var(--tracking-tight);
line-height: var(--leading-title); line-height: var(--leading-title);
/* @media screen and (min-width: 64rem) {
grid-column: -1 / -3;
} */
} }
.icon { .icon {
+47 -9
View File
@@ -40,17 +40,39 @@ import ArrowDown from "../icons/ArrowDown.astro";
padding-inline: var(--padding-x); padding-inline: var(--padding-x);
max-width: var(--max-content-width); max-width: var(--max-content-width);
margin-inline: auto; margin-inline: auto;
@media screen (min-width: 21rem) {
}
} }
.image-wrapper { .image-wrapper {
grid-column: -1 / -6; grid-column: 4 / -1;
grid-row: 1; grid-row: 1;
/* width: 100%; */
max-height: clamp(400px, 70vh, 1000px); max-height: clamp(400px, 70vh, 1000px);
position: relative;
z-index: -1;
@media screen and (min-width: 50rem) {
grid-column: 5 / -1;
}
@media screen and (min-width: 75rem) {
grid-column: -1 / -6;
}
}
.image-wrapper::after {
content: "";
display: block;
width: 100%;
height: 100%;
background: var(--gradient-overlay);
position: absolute;
top: 0;
left: 0;
z-index: 1;
@media screen and (max-width: 63.9375rem) {
backdrop-filter: blur(10px);
}
} }
.image { .image {
@@ -73,7 +95,7 @@ import ArrowDown from "../icons/ArrowDown.astro";
} }
h1 { h1 {
grid-column: 2 / -2; grid-column: 1 / -1;
grid-row: 1; grid-row: 1;
align-self: end; align-self: end;
@@ -82,18 +104,34 @@ import ArrowDown from "../icons/ArrowDown.astro";
letter-spacing: var(--tracking-narrow); letter-spacing: var(--tracking-narrow);
font-weight: 600; font-weight: 600;
@media screen and (min-width: 50rem) {
grid-column: 2 / -2;
}
@media screen and (min-width: 64rem) {
grid-column: 2 / -2;
}
& span { & span {
display: block; display: block;
} }
} }
p { p {
grid-column: 3 / -5; grid-column: 2 / -1;
grid-row: 2; grid-row: 2;
max-width: 45ch; max-width: 45ch;
font-size: var(--fs-md); font-size: var(--fs-md);
line-height: var(--leading-paragraph); line-height: var(--leading-paragraph);
@media screen and (min-width: 50rem) {
grid-column: 3 / -5;
}
@media screen and (min-width: 64rem) {
grid-column: 3 / -5;
}
} }
.down { .down {
@@ -140,7 +178,7 @@ import ArrowDown from "../icons/ArrowDown.astro";
tl.addLabel("arrow", 1.5); tl.addLabel("arrow", 1.5);
tl.from( tl.from(
heroSection.querySelector(".image"), heroSection.querySelector(".image-wrapper"),
{ {
duration: 2, duration: 2,
opacity: 0, opacity: 0,
+1 -1
View File
@@ -33,7 +33,7 @@ const { title, image, items } = Astro.props;
.card { .card {
display: grid; display: grid;
grid-template-rows: auto 1fr auto; grid-template-rows: auto 1fr auto;
min-height: 12rem; max-height: 24rem;
& > * { & > * {
grid-column: 1; grid-column: 1;
+20 -8
View File
@@ -63,30 +63,41 @@ const services: Array<ComponentProps<typeof ServicesCard>> = [
} }
.heading { .heading {
@media (min-width: 50rem) {
display: grid; display: grid;
grid-template-columns: subgrid;
grid-column: 1 / -1; grid-column: 1 / -1;
@media screen and (max-width: 63.9375rem) {
row-gap: 1rem;
}
@media screen and (min-width: 64rem) {
grid-template-columns: subgrid;
} }
& h2 { & h2 {
grid-column: 1 / 6; grid-column: 1 / -1;
height: max-content; height: max-content;
font-size: var(--fs-xl); font-size: var(--fs-xl);
line-height: var(--leading-title); line-height: var(--leading-title);
letter-spacing: var(--tracking-narrow); letter-spacing: var(--tracking-narrow);
@media screen and (min-width: 64rem) {
grid-column: 1 / 7;
}
} }
& p { & p {
grid-column: -1 / -6; grid-column: 1 / -1;
justify-self: end; max-width: 46ch;
font-size: var(--fs-lg); font-size: var(--fs-lg);
line-height: var(--leading-paragraph); line-height: var(--leading-paragraph);
@media (min-width: 50rem) { @media screen and (min-width: 64rem) {
grid-column: -7 / -1;
max-width: 32ch; max-width: 32ch;
justify-self: end;
} }
} }
} }
@@ -97,10 +108,11 @@ const services: Array<ComponentProps<typeof ServicesCard>> = [
grid-column: 1 / -1; grid-column: 1 / -1;
list-style: none; list-style: none;
margin-top: 7rem; margin-top: 4rem;
@media (min-width: 50rem) { @media (min-width: 75rem) {
grid-template-columns: repeat(3, 1fr); grid-template-columns: repeat(3, 1fr);
margin-top: 7rem;
} }
} }
</style> </style>
+3 -1
View File
@@ -93,10 +93,12 @@ function formatIndex(index: number) {
} }
span { span {
display: inline-block;
height: max-content;
grid-row: 1; grid-row: 1;
grid-column: 1 / 4; grid-column: 1 / 4;
font-size: 15.625rem; font-size: clamp(10rem, 16vw, 15.625rem);
font-weight: 600; font-weight: 600;
line-height: var(--leading-tightest); line-height: var(--leading-tightest);
} }
+3 -4
View File
@@ -3,6 +3,7 @@ import Footer from "../components/Footer.astro";
import GlobalStyles from "../components/GlobalStyles.astro"; import GlobalStyles from "../components/GlobalStyles.astro";
import Header from "../components/Header.astro"; import Header from "../components/Header.astro";
import PlausibleAnalytics from "../components/PlausibleAnalytics.astro"; import PlausibleAnalytics from "../components/PlausibleAnalytics.astro";
import { Font } from "astro:assets";
const { pageTitle } = Astro.props; const { pageTitle } = Astro.props;
const title = pageTitle const title = pageTitle
@@ -17,9 +18,7 @@ const title = pageTitle
<meta name="viewport" content="width=device-width" /> <meta name="viewport" content="width=device-width" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" /> <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="generator" content={Astro.generator} /> <meta name="generator" content={Astro.generator} />
<title> <title>{title}</title>
{title}
</title>
<meta <meta
name="description" name="description"
content="From concept to launch - websites, apps, and digital solutions that work hard, so you can play hard. Personal sites, ecommerce platforms, and custom web apps built by Michael Rieger in Vienna." content="From concept to launch - websites, apps, and digital solutions that work hard, so you can play hard. Personal sites, ecommerce platforms, and custom web apps built by Michael Rieger in Vienna."
@@ -47,7 +46,7 @@ const title = pageTitle
content="From concept to launch - websites, apps, and digital solutions that work hard, so you can play hard. Based in Vienna." content="From concept to launch - websites, apps, and digital solutions that work hard, so you can play hard. Based in Vienna."
/> />
<meta name="twitter:image" content="/assets/img/og-image.jpg" /> <meta name="twitter:image" content="/assets/img/og-image.jpg" />
<Font cssVariable="--font-poppins" preload />
<PlausibleAnalytics /> <PlausibleAnalytics />
</head> </head>
<body> <body>