Compare commits
10 Commits
5c8c7ccf45
...
8222ca27fd
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8222ca27fd | ||
| 8d66cb9047 | |||
|
|
661153109c | ||
|
|
47cd40564f | ||
|
|
42b73eea1c | ||
|
|
db879eb8d8 | ||
|
|
cc73c982f2 | ||
|
|
936e930492 | ||
|
|
bbe8e96231 | ||
|
|
7b042cbaed |
@@ -20,6 +20,12 @@ You can start editing the page by modifying `app/page.tsx`. The page auto-update
|
|||||||
|
|
||||||
This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
|
This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
|
||||||
|
|
||||||
|
## Production Build
|
||||||
|
|
||||||
|
```docker compose build --no-cache```
|
||||||
|
|
||||||
|
```docker compose up -d --force-recreate```
|
||||||
|
|
||||||
## Learn More
|
## Learn More
|
||||||
|
|
||||||
To learn more about Next.js, take a look at the following resources:
|
To learn more about Next.js, take a look at the following resources:
|
||||||
|
|||||||
BIN
ai_docs/images/favicon_io/android-chrome-192x192.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
ai_docs/images/favicon_io/android-chrome-512x512.png
Normal file
|
After Width: | Height: | Size: 125 KiB |
BIN
ai_docs/images/favicon_io/apple-touch-icon.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
ai_docs/images/favicon_io/favicon-16x16.png
Normal file
|
After Width: | Height: | Size: 567 B |
BIN
ai_docs/images/favicon_io/favicon-32x32.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
ai_docs/images/favicon_io/favicon.ico
Normal file
|
After Width: | Height: | Size: 15 KiB |
1
ai_docs/images/favicon_io/site.webmanifest
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
|
||||||
@@ -1,5 +1,3 @@
|
|||||||
version: '3.8'
|
|
||||||
|
|
||||||
services:
|
services:
|
||||||
web:
|
web:
|
||||||
build:
|
build:
|
||||||
@@ -12,10 +10,10 @@ services:
|
|||||||
restart: always
|
restart: always
|
||||||
labels:
|
labels:
|
||||||
- traefik.enable=true
|
- traefik.enable=true
|
||||||
- traefik.http.routers.qplp.entrypoints=websecure
|
- traefik.http.routers.quarryparty.rule=Host(`steinbruchfest.at`) || Host(`www.steinbruchfest.at`)
|
||||||
- traefik.http.routers.qplp.rule=Host(`poc.haider.app`)
|
- traefik.http.routers.quarryparty.entrypoints=websecure
|
||||||
- traefik.http.routers.qplp.tls=true
|
- traefik.http.routers.quarryparty.tls=true
|
||||||
- traefik.http.routers.qplp.tls.certresolver=production
|
- traefik.http.routers.quarryparty.tls.certresolver=production
|
||||||
- traefik.docker.network=traefik_nw_public
|
- traefik.docker.network=traefik_nw_public
|
||||||
networks:
|
networks:
|
||||||
- traefik_nw_public
|
- traefik_nw_public
|
||||||
|
|||||||
1233
package-lock.json
generated
@@ -9,9 +9,9 @@
|
|||||||
"lint": "next lint"
|
"lint": "next lint"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"next": "15.3.4",
|
"next": "16.0.7",
|
||||||
"react": "^19.0.0",
|
"react": "19.2.1",
|
||||||
"react-dom": "^19.0.0",
|
"react-dom": "19.2.1",
|
||||||
"react-icons": "^5.5.0"
|
"react-icons": "^5.5.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
"@types/react": "^19",
|
"@types/react": "^19",
|
||||||
"@types/react-dom": "^19",
|
"@types/react-dom": "^19",
|
||||||
"eslint": "^9",
|
"eslint": "^9",
|
||||||
"eslint-config-next": "15.3.4",
|
"eslint-config-next": "16.0.7",
|
||||||
"tailwindcss": "^4",
|
"tailwindcss": "^4",
|
||||||
"typescript": "^5"
|
"typescript": "^5"
|
||||||
}
|
}
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 101 KiB |
BIN
public/images/android-chrome-512x512.png
Normal file
|
After Width: | Height: | Size: 125 KiB |
BIN
public/images/dj_baecksn.png
Normal file
|
After Width: | Height: | Size: 2.0 MiB |
|
Before Width: | Height: | Size: 218 KiB |
@@ -1,5 +1,4 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import Header from '../../components/layout/Header';
|
|
||||||
|
|
||||||
export default function ImpressumPage() {
|
export default function ImpressumPage() {
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -18,6 +18,16 @@ const geistMono = Geist_Mono({
|
|||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: "Steinbruchfest 2025",
|
title: "Steinbruchfest 2025",
|
||||||
description: "Steinbruchfest und 150 Jahr-Feier der Freiwillige Feuerwehr Friedberg",
|
description: "Steinbruchfest und 150 Jahr-Feier der Freiwillige Feuerwehr Friedberg",
|
||||||
|
openGraph: {
|
||||||
|
images: [ { width: 512, height: 512, url: 'https://steinbruchfest.at/images/android-chrome-512x512.png', type: 'image/png' } ],
|
||||||
|
type: "website",
|
||||||
|
url: "https://steinbruchfest.at",
|
||||||
|
title: "Steinbruchfest 2025",
|
||||||
|
description: "Steinbruchfest und 150 Jahr-Feier der Freiwillige Feuerwehr Friedberg",
|
||||||
|
locale: "de_AT",
|
||||||
|
siteName: "Steinbruchfest 2025"
|
||||||
|
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function RootLayout({
|
export default function RootLayout({
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ export default function CookieBanner() {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="fixed bottom-0 inset-x-0 bg-gray-800 text-white p-4 flex flex-col items-center z-50">
|
<div className="fixed bottom-0 inset-x-0 bg-gray-800 text-white p-4 flex flex-col items-center z-50">
|
||||||
<p className="text-center max-w-prose mx-auto">Wir verwenden Cookies, um Ihre Erfahrung zu verbessern.</p>
|
<p className="text-center max-w-prose mx-auto">Beim Steinbruchfest gibt es dann frische Mehlspeisen. Hier leider nur technisch notwendige Cookies</p>
|
||||||
<button onClick={handleAccept} className="bg-white text-black px-4 py-2 rounded-full mt-2">Akzeptieren</button>
|
<button onClick={handleAccept} className="bg-white text-black px-4 py-2 rounded-full mt-2">Akzeptieren</button>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
83
src/components/Lauser.tsx
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
|
||||||
|
export default function Lauser() {
|
||||||
|
return (
|
||||||
|
<svg
|
||||||
|
className="w-full h-full object-cover"
|
||||||
|
version="1.1"
|
||||||
|
id="svg2"
|
||||||
|
width="1122.52"
|
||||||
|
height="793.70667"
|
||||||
|
viewBox="0 0 1122.52 793.70667"
|
||||||
|
xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<defs
|
||||||
|
id="defs6">
|
||||||
|
<clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath20">
|
||||||
|
<path
|
||||||
|
d="M 0,595.28 H 841.89 V 0 H 0 Z"
|
||||||
|
id="path18" />
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
<g
|
||||||
|
id="g8"
|
||||||
|
transform="matrix(1.3333333,0,0,-1.3333333,0,793.70667)">
|
||||||
|
<g
|
||||||
|
id="g10"
|
||||||
|
transform="translate(116.1533,428.5979)">
|
||||||
|
<path
|
||||||
|
d="m 0,0 v -202.099 h 43.307 v -34.646 H -36.089 V 0 Z"
|
||||||
|
style={{ fill: "#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none" }}
|
||||||
|
id="path12" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g14">
|
||||||
|
<g
|
||||||
|
id="g16"
|
||||||
|
clipPath="url(#clipPath20)">
|
||||||
|
<g
|
||||||
|
id="g22"
|
||||||
|
transform="translate(231.6387,382.404)">
|
||||||
|
<path
|
||||||
|
d="M 0,0 V -98.163 H 21.654 V 0 c 0,3.271 -1.108,6.013 -3.321,8.228 -2.214,2.213 -4.716,3.32 -7.506,3.32 -2.792,0 -5.294,-1.107 -7.507,-3.32 C 1.105,6.013 0,3.271 0,0 m 57.743,0 v -98.163 h 14.436 v -34.646 H 57.743 v -57.742 H 21.654 v 57.742 H 0 v -57.742 h -36.089 v 57.742 h -14.436 v 34.646 h 14.436 V 0 c 0,12.606 4.547,23.458 13.642,32.552 9.094,9.095 20.185,13.642 33.274,13.642 13.087,0 24.18,-4.547 33.275,-13.642 C 53.196,23.458 57.743,12.606 57.743,0"
|
||||||
|
style={{ fill: "#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none" }}
|
||||||
|
id="path24" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g26"
|
||||||
|
transform="translate(383.2144,428.5979)">
|
||||||
|
<path
|
||||||
|
d="m 0,0 h 36.089 v -190.551 c 0,-12.609 -4.547,-23.458 -13.642,-32.552 -9.094,-9.095 -20.187,-13.642 -33.274,-13.642 -13.089,0 -24.18,4.547 -33.274,13.642 -9.095,9.094 -13.642,19.943 -13.642,32.552 V 0 h 36.089 v -190.551 c 0,-3.273 1.106,-6.016 3.321,-8.229 2.212,-2.215 4.714,-3.319 7.506,-3.319 2.79,0 5.292,1.104 7.507,3.319 2.213,2.213 3.32,4.956 3.32,8.229 z"
|
||||||
|
style={{ fill: "#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none" }}
|
||||||
|
id="path28" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g30"
|
||||||
|
transform="translate(497.9775,315.5666)">
|
||||||
|
<path
|
||||||
|
d="m 0,0 c 14.916,-14.918 22.376,-31.133 22.376,-48.648 0,-20.596 -7.362,-38.255 -22.087,-52.979 -14.725,-14.725 -33.829,-22.086 -57.31,-22.086 v 34.645 c 13.184,0 23.697,3.92 31.542,11.765 7.843,7.843 11.765,17.395 11.765,28.655 0,10.682 -3.561,19.871 -10.682,27.572 l -10.25,10.393 c -14.917,14.916 -22.375,31.132 -22.375,48.649 0,20.593 7.363,38.254 22.086,52.979 14.725,14.724 33.828,22.086 57.311,22.086 V 78.386 c -13.187,0 -23.7,-3.923 -31.542,-11.765 -7.846,-7.845 -11.766,-17.395 -11.766,-28.655 0,-10.683 3.56,-19.874 10.683,-27.572 z"
|
||||||
|
style={{ fill: "#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none" }}
|
||||||
|
id="path32" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g34"
|
||||||
|
transform="translate(635.8398,428.5979)">
|
||||||
|
<path
|
||||||
|
d="M 0,0 V -34.646 H -43.308 V -57.743 H 14.436 V -92.388 H -43.308 V -202.099 H 0 v -34.646 h -79.396 v 144.357 h -14.436 v 34.645 h 14.436 V 0 Z"
|
||||||
|
style={{ fill: "#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none" }}
|
||||||
|
id="path36" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g38"
|
||||||
|
transform="translate(708.0176,387.8894)">
|
||||||
|
<path
|
||||||
|
d="m 0,0 v -97.585 c 4.331,1.538 9.672,4.858 16.023,9.96 13.376,10.683 20.067,23.625 20.067,38.833 0,15.204 -6.691,28.149 -20.067,38.832 C 9.672,-4.861 4.331,-1.541 0,0 m 0,-145.801 v -50.235 H -36.089 V 40.708 c 31.372,0 57.26,-8.733 77.664,-26.2 20.402,-17.467 30.604,-38.568 30.604,-63.3 0,-24.735 -10.202,-45.812 -30.604,-63.229 -7.026,-6.063 -13.522,-10.587 -19.488,-13.57 l 52.835,-70.445 H 37.678 Z"
|
||||||
|
style={{ fill: "#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none" }}
|
||||||
|
id="path40" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -3,11 +3,8 @@ import MobileImageLandscape from "../MobileImageLandscape";
|
|||||||
|
|
||||||
export default function Hero() {
|
export default function Hero() {
|
||||||
return (
|
return (
|
||||||
<section className="relative w-full min-h-screen bg-flyer-yellow flex flex-col">
|
<section className="relative w-full bg-flyer-yellow flex flex-col">
|
||||||
<div className="w-full h-[50vh]">
|
<div className="w-full h-[25vh] mt-4 flex flex-col text-center text-black">
|
||||||
<MobileImageLandscape />
|
|
||||||
</div>
|
|
||||||
<div className="w-full h-[50vh] flex flex-col text-center text-black">
|
|
||||||
<div className="md:hidden">
|
<div className="md:hidden">
|
||||||
<h1 className="text-6xl font-bold font-stick">STEIN</h1>
|
<h1 className="text-6xl font-bold font-stick">STEIN</h1>
|
||||||
<h1 className="text-6xl font-bold font-stick">BRUCH</h1>
|
<h1 className="text-6xl font-bold font-stick">BRUCH</h1>
|
||||||
@@ -18,6 +15,10 @@ export default function Hero() {
|
|||||||
</div>
|
</div>
|
||||||
<p className="text-2xl md:text-4xl mt-4">16. + 17. Aug.</p>
|
<p className="text-2xl md:text-4xl mt-4">16. + 17. Aug.</p>
|
||||||
</div>
|
</div>
|
||||||
|
<div className="w-full h-[50vh]">
|
||||||
|
<MobileImageLandscape />
|
||||||
|
</div>
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import Lauser from "../Lauser";
|
||||||
|
|
||||||
export default function Program() {
|
export default function Program() {
|
||||||
return (
|
return (
|
||||||
<section id="program" className="py-20 bg-white">
|
<section id="program" className="py-20 bg-white">
|
||||||
@@ -7,12 +9,22 @@ export default function Program() {
|
|||||||
<div className="flex-1 mb-8 md:mb-0">
|
<div className="flex-1 mb-8 md:mb-0">
|
||||||
<h3 className="text-xl md:text-2xl font-bold mb-4">Samstag</h3>
|
<h3 className="text-xl md:text-2xl font-bold mb-4">Samstag</h3>
|
||||||
<p>Beginn: 19 Uhr</p>
|
<p>Beginn: 19 Uhr</p>
|
||||||
<p>Ab 21 Uhr Musik: <span className="font-bold">LAUSER</span></p>
|
<p>Ab 21 Uhr Musik</p>
|
||||||
|
<div className="aspect-[682/466] w-40 max-w-xs">
|
||||||
|
<a href="https://www.lauser.at/" target="_blank" rel="noopener noreferrer">
|
||||||
|
<Lauser></Lauser>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div className="aspect-[682/466] w-40 max-w-xs">
|
||||||
|
<img src="/images/dj_baecksn.png" alt="DJ BÄCKSN" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex-1">
|
<div className="flex-1">
|
||||||
<h3 className="text-xl md:text-2xl font-bold mb-4">Sonntag</h3>
|
<h3 className="text-xl md:text-2xl font-bold mb-4">Sonntag</h3>
|
||||||
<p>Ab 8.45 Uhr Hl. Messe</p>
|
<p>Ab 8.45 Uhr Hl. Messe</p>
|
||||||
<p>Musik: <span className="font-bold">MGV Wechselklang</span></p>
|
<p>Musik: <span className="font-bold">MGV Wechselklang</span></p>
|
||||||
|
<p className="mt-4">Festakt 150 Jahre FF Friedberg</p>
|
||||||
|
<p className="mt-4">Präsentation der neuen Feuerwehrchronik</p>
|
||||||
<p className="mt-4">Frühschoppen mit der <span className="font-bold">Stadtkapelle Friedberg</span></p>
|
<p className="mt-4">Frühschoppen mit der <span className="font-bold">Stadtkapelle Friedberg</span></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,7 +1,11 @@
|
|||||||
{
|
{
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"target": "ES2017",
|
"target": "ES2017",
|
||||||
"lib": ["dom", "dom.iterable", "esnext"],
|
"lib": [
|
||||||
|
"dom",
|
||||||
|
"dom.iterable",
|
||||||
|
"esnext"
|
||||||
|
],
|
||||||
"allowJs": true,
|
"allowJs": true,
|
||||||
"skipLibCheck": true,
|
"skipLibCheck": true,
|
||||||
"strict": true,
|
"strict": true,
|
||||||
@@ -11,7 +15,7 @@
|
|||||||
"moduleResolution": "bundler",
|
"moduleResolution": "bundler",
|
||||||
"resolveJsonModule": true,
|
"resolveJsonModule": true,
|
||||||
"isolatedModules": true,
|
"isolatedModules": true,
|
||||||
"jsx": "preserve",
|
"jsx": "react-jsx",
|
||||||
"incremental": true,
|
"incremental": true,
|
||||||
"plugins": [
|
"plugins": [
|
||||||
{
|
{
|
||||||
@@ -19,9 +23,19 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"paths": {
|
"paths": {
|
||||||
"@/*": ["./src/*"]
|
"@/*": [
|
||||||
|
"./src/*"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
|
"include": [
|
||||||
"exclude": ["node_modules"]
|
"next-env.d.ts",
|
||||||
|
"**/*.ts",
|
||||||
|
"**/*.tsx",
|
||||||
|
".next/types/**/*.ts",
|
||||||
|
".next/dev/types/**/*.ts"
|
||||||
|
],
|
||||||
|
"exclude": [
|
||||||
|
"node_modules"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|||||||