From 0c75d50a114fd49b94ce7213e6494ef8aa71327a Mon Sep 17 00:00:00 2001 From: Milian Date: Mon, 8 Dec 2025 19:21:48 +0100 Subject: [PATCH 1/4] prepare basic contact form --- astro.config.mjs | 5 + package-lock.json | 552 ++++++++++++++++++++++++++++++++++++++- package.json | 4 +- src/layouts/Layout.astro | 4 + src/pages/contact.mdx | 142 +++++++++- src/styles/global.css | 1 + tailwind.config.js | 8 + 7 files changed, 712 insertions(+), 4 deletions(-) create mode 100644 src/styles/global.css create mode 100644 tailwind.config.js diff --git a/astro.config.mjs b/astro.config.mjs index a3dfa8e..838507e 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -1,5 +1,6 @@ // @ts-check import { defineConfig } from 'astro/config'; +import tailwindcss from '@tailwindcss/vite'; import markdoc from '@astrojs/markdoc'; @@ -14,6 +15,10 @@ import node from '@astrojs/node'; // https://astro.build/config export default defineConfig({ integrations: [markdoc(), mdx(), icon(), vue()], + + vite: { + plugins: [tailwindcss()], + }, adapter: node({ mode: 'standalone' diff --git a/package-lock.json b/package-lock.json index e47a64d..8c3b753 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,9 +13,11 @@ "@astrojs/node": "^9.5.0", "@astrojs/vue": "^5.1.1", "@iconify-json/mdi": "^1.2.3", + "@tailwindcss/vite": "^4.1.17", "astro": "^5.14.6", "astro-icon": "^1.1.5", "swiper": "^12.0.2", + "tailwindcss": "^4.1.17", "vue": "^3.5.22" } }, @@ -2113,6 +2115,263 @@ "tslib": "^2.8.0" } }, + "node_modules/@tailwindcss/node": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.17.tgz", + "integrity": "sha512-csIkHIgLb3JisEFQ0vxr2Y57GUNYh447C8xzwj89U/8fdW8LhProdxvnVH6U8M2Y73QKiTIH+LWbK3V2BBZsAg==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.4", + "enhanced-resolve": "^5.18.3", + "jiti": "^2.6.1", + "lightningcss": "1.30.2", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.17" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.17.tgz", + "integrity": "sha512-F0F7d01fmkQhsTjXezGBLdrl1KresJTcI3DB8EkScCldyKp3Msz4hub4uyYaVnk88BAS1g5DQjjF6F5qczheLA==", + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.17", + "@tailwindcss/oxide-darwin-arm64": "4.1.17", + "@tailwindcss/oxide-darwin-x64": "4.1.17", + "@tailwindcss/oxide-freebsd-x64": "4.1.17", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.17", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.17", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.17", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.17", + "@tailwindcss/oxide-linux-x64-musl": "4.1.17", + "@tailwindcss/oxide-wasm32-wasi": "4.1.17", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.17", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.17" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.17.tgz", + "integrity": "sha512-BMqpkJHgOZ5z78qqiGE6ZIRExyaHyuxjgrJ6eBO5+hfrfGkuya0lYfw8fRHG77gdTjWkNWEEm+qeG2cDMxArLQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.17.tgz", + "integrity": "sha512-EquyumkQweUBNk1zGEU/wfZo2qkp/nQKRZM8bUYO0J+Lums5+wl2CcG1f9BgAjn/u9pJzdYddHWBiFXJTcxmOg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.17.tgz", + "integrity": "sha512-gdhEPLzke2Pog8s12oADwYu0IAw04Y2tlmgVzIN0+046ytcgx8uZmCzEg4VcQh+AHKiS7xaL8kGo/QTiNEGRog==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.17.tgz", + "integrity": "sha512-hxGS81KskMxML9DXsaXT1H0DyA+ZBIbyG/sSAjWNe2EDl7TkPOBI42GBV3u38itzGUOmFfCzk1iAjDXds8Oh0g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.17.tgz", + "integrity": "sha512-k7jWk5E3ldAdw0cNglhjSgv501u7yrMf8oeZ0cElhxU6Y2o7f8yqelOp3fhf7evjIS6ujTI3U8pKUXV2I4iXHQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.17.tgz", + "integrity": "sha512-HVDOm/mxK6+TbARwdW17WrgDYEGzmoYayrCgmLEw7FxTPLcp/glBisuyWkFz/jb7ZfiAXAXUACfyItn+nTgsdQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.17.tgz", + "integrity": "sha512-HvZLfGr42i5anKtIeQzxdkw/wPqIbpeZqe7vd3V9vI3RQxe3xU1fLjss0TjyhxWcBaipk7NYwSrwTwK1hJARMg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.17.tgz", + "integrity": "sha512-M3XZuORCGB7VPOEDH+nzpJ21XPvK5PyjlkSFkFziNHGLc5d6g3di2McAAblmaSUNl8IOmzYwLx9NsE7bplNkwQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.17.tgz", + "integrity": "sha512-k7f+pf9eXLEey4pBlw+8dgfJHY4PZ5qOUFDyNf7SI6lHjQ9Zt7+NcscjpwdCEbYi6FI5c2KDTDWyf2iHcCSyyQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.17.tgz", + "integrity": "sha512-cEytGqSSoy7zK4JRWiTCx43FsKP/zGr0CsuMawhH67ONlH+T79VteQeJQRO/X7L0juEUA8ZyuYikcRBf0vsxhg==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.6.0", + "@emnapi/runtime": "^1.6.0", + "@emnapi/wasi-threads": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.0.7", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.17.tgz", + "integrity": "sha512-JU5AHr7gKbZlOGvMdb4722/0aYbU+tN6lv1kONx0JK2cGsh7g148zVWLM0IKR3NeKLv+L90chBVYcJ8uJWbC9A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.17.tgz", + "integrity": "sha512-SKWM4waLuqx0IH+FMDUw6R66Hu4OuTALFgnleKbqhgGU30DY20NORZMZUKgLRjQXNN2TLzKvh48QXTig4h4bGw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.17.tgz", + "integrity": "sha512-4+9w8ZHOiGnpcGI6z1TVVfWaX/koK7fKeSYF3qlYg2xpBtbteP2ddBxiarL+HVgfSJGeK5RIxRQmKm4rTJJAwA==", + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.1.17", + "@tailwindcss/oxide": "4.1.17", + "tailwindcss": "4.1.17" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7" + } + }, "node_modules/@trysound/sax": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", @@ -3602,7 +3861,6 @@ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "license": "Apache-2.0", - "optional": true, "engines": { "node": ">=8" } @@ -3786,6 +4044,19 @@ "once": "^1.4.0" } }, + "node_modules/enhanced-resolve": { + "version": "5.18.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", + "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -5031,6 +5302,16 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "license": "ISC" }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "license": "MIT", + "peer": true, + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -5100,6 +5381,256 @@ "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", "license": "MIT" }, + "node_modules/lightningcss": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz", + "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==", + "license": "MPL-2.0", + "peer": true, + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.30.2", + "lightningcss-darwin-arm64": "1.30.2", + "lightningcss-darwin-x64": "1.30.2", + "lightningcss-freebsd-x64": "1.30.2", + "lightningcss-linux-arm-gnueabihf": "1.30.2", + "lightningcss-linux-arm64-gnu": "1.30.2", + "lightningcss-linux-arm64-musl": "1.30.2", + "lightningcss-linux-x64-gnu": "1.30.2", + "lightningcss-linux-x64-musl": "1.30.2", + "lightningcss-win32-arm64-msvc": "1.30.2", + "lightningcss-win32-x64-msvc": "1.30.2" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz", + "integrity": "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz", + "integrity": "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz", + "integrity": "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz", + "integrity": "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz", + "integrity": "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz", + "integrity": "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz", + "integrity": "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz", + "integrity": "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz", + "integrity": "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz", + "integrity": "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz", + "integrity": "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, "node_modules/local-pkg": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.1.tgz", @@ -7654,6 +8185,25 @@ "node": ">= 4.7.0" } }, + "node_modules/tailwindcss": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.17.tgz", + "integrity": "sha512-j9Ee2YjuQqYT9bbRTfTZht9W/ytp5H+jJpZKiYdP/bpnXARAuELt9ofP0lPnmHjbga7SNQIxdTAXCmtKVYjN+Q==", + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/tar": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", diff --git a/package.json b/package.json index 9030cf8..e301022 100644 --- a/package.json +++ b/package.json @@ -14,9 +14,11 @@ "@astrojs/node": "^9.5.0", "@astrojs/vue": "^5.1.1", "@iconify-json/mdi": "^1.2.3", + "@tailwindcss/vite": "^4.1.17", "astro": "^5.14.6", "astro-icon": "^1.1.5", "swiper": "^12.0.2", + "tailwindcss": "^4.1.17", "vue": "^3.5.22" } -} \ No newline at end of file +} diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index e455c61..6a3a222 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -1,3 +1,7 @@ +--- +import '../styles/global.css'; +--- + diff --git a/src/pages/contact.mdx b/src/pages/contact.mdx index 8961730..d96d231 100644 --- a/src/pages/contact.mdx +++ b/src/pages/contact.mdx @@ -6,7 +6,7 @@ headline: "Contact" sub_headline: "Any questions? Contact us!" --- -If you have any questions, drop us an email at info[at]munichmakerlab.de or join our slack below +If you have any questions, drop us an email via the contact form or join our slack below ## Messenger Slack @@ -16,4 +16,142 @@ Our main communication platform is slack. ## Socialmedia -Check out our different Socialmedia channels below in the footer \ No newline at end of file +Check out our different Socialmedia channels below in the footer + +## Contact form + +
+ + + + +
+ +
+ Please provide your full name. +
+
+
+ +
+ Please provide your email address. +
+
+ Please provide a valid email address. +
+
+
+ +
+ Please enter your message. +
+
+ +
+
+ + + + \ No newline at end of file diff --git a/src/styles/global.css b/src/styles/global.css new file mode 100644 index 0000000..a461c50 --- /dev/null +++ b/src/styles/global.css @@ -0,0 +1 @@ +@import "tailwindcss"; \ No newline at end of file diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..b15a05a --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,8 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: ['./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}'], + theme: { + extend: {}, + }, + plugins: [], +} \ No newline at end of file From f82dffd2c8f2debee080a618b90b1ddfc99e65fe Mon Sep 17 00:00:00 2001 From: Milian Date: Mon, 8 Dec 2025 20:58:47 +0100 Subject: [PATCH 2/4] fix contact form and css --- package.json | 2 +- src/components/ContactForm.astro | 113 ++++++++++++++++++++++++ src/layouts/Content.astro | 1 + src/layouts/Layout.astro | 2 - src/pages/contact.mdx | 144 ++----------------------------- src/styles/contact-form.css | 19 ++++ src/styles/global.css | 1 - 7 files changed, 140 insertions(+), 142 deletions(-) create mode 100644 src/components/ContactForm.astro create mode 100644 src/styles/contact-form.css delete mode 100644 src/styles/global.css diff --git a/package.json b/package.json index e301022..dca0177 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "website", "type": "module", - "version": "0.0.1", + "version": "0.0.2", "scripts": { "dev": "astro dev", "build": "astro build", diff --git a/src/components/ContactForm.astro b/src/components/ContactForm.astro new file mode 100644 index 0000000..cdab56a --- /dev/null +++ b/src/components/ContactForm.astro @@ -0,0 +1,113 @@ +--- +// Contact form component +import '../styles/contact-form.css'; +--- + +
+ + + + +
+ +
+ Please provide your full name. +
+
+
+ +
+ Please provide your email address. +
+
+ Please provide a valid email address. +
+
+
+ +
+ Please enter your message. +
+
+ +
+
+ + \ No newline at end of file diff --git a/src/layouts/Content.astro b/src/layouts/Content.astro index 4152094..bd05a5f 100644 --- a/src/layouts/Content.astro +++ b/src/layouts/Content.astro @@ -4,6 +4,7 @@ import Footer from '../components/Footer.astro' import ClientRouter from 'astro/components/ClientRouter.astro' import Navbar from '../components/Navbar.vue' + const { frontmatter } = Astro.props --- diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index 6a3a222..2d286d6 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -1,6 +1,4 @@ --- -import '../styles/global.css'; ---- diff --git a/src/pages/contact.mdx b/src/pages/contact.mdx index d96d231..7eb7b64 100644 --- a/src/pages/contact.mdx +++ b/src/pages/contact.mdx @@ -6,152 +6,20 @@ headline: "Contact" sub_headline: "Any questions? Contact us!" --- +import ContactForm from '../components/ContactForm.astro'; + If you have any questions, drop us an email via the contact form or join our slack below -## Messenger Slack +# Messenger Slack Our main communication platform is slack. [Join](https://slack.munichmakerlab.de/) our slack or [login](https://munichmakerlab.slack.com/) :-) -## Socialmedia +# Socialmedia Check out our different Socialmedia channels below in the footer -## Contact form - -
- - - - -
- -
- Please provide your full name. -
-
-
- -
- Please provide your email address. -
-
- Please provide a valid email address. -
-
-
- -
- Please enter your message. -
-
- -
-
- - - - \ No newline at end of file + \ No newline at end of file diff --git a/src/styles/contact-form.css b/src/styles/contact-form.css new file mode 100644 index 0000000..b412ab6 --- /dev/null +++ b/src/styles/contact-form.css @@ -0,0 +1,19 @@ +@import "tailwindcss"; + +.invalid-feedback, +.empty-feedback { + display: none; +} + +.was-validated :placeholder-shown:invalid ~ .empty-feedback { + display: block; +} + +.was-validated :not(:placeholder-shown):invalid ~ .invalid-feedback { + display: block; +} + +.is-invalid, +.was-validated :invalid { + border-color: #dc3545; +} \ No newline at end of file diff --git a/src/styles/global.css b/src/styles/global.css deleted file mode 100644 index a461c50..0000000 --- a/src/styles/global.css +++ /dev/null @@ -1 +0,0 @@ -@import "tailwindcss"; \ No newline at end of file From 07f49d255d1a9e88a87eba596fb09643b8a4f559 Mon Sep 17 00:00:00 2001 From: Milian Date: Mon, 8 Dec 2025 21:26:58 +0100 Subject: [PATCH 3/4] improve footer --- src/components/Footer.astro | 79 +++++++++++++++++++++++++++++-------- 1 file changed, 62 insertions(+), 17 deletions(-) diff --git a/src/components/Footer.astro b/src/components/Footer.astro index 13ebd47..0a9bdd9 100644 --- a/src/components/Footer.astro +++ b/src/components/Footer.astro @@ -6,36 +6,32 @@ import { Icon } from 'astro-icon/components' -
- Former channels: +
+ Former channels: + -
Munich Maker Lab e.V. @@ -65,16 +60,66 @@ import { Icon } from 'astro-icon/components' border-top: 1px solid #eee; } + .links { + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 1rem; + margin-bottom: 1rem; + } + .links>a { text-decoration: none; color: var(--text-color); font-size: 2rem; + display: flex; + align-items: center; + justify-content: center; + } + + .links > div { + display: flex; + flex-direction: column; + align-items: center; + gap: 0.5rem; + margin-top: 1rem; + } + + .links > div span { + font-size: 0.8rem; + color: #666; + font-weight: 500; + } + + .links > div > a { + font-size: 1.5rem; } - .text { - text-align: center; - font-size: .7rem; - color: #888; + .former-channels { + display: flex; + flex-direction: column; + align-items: center; + gap: 0.5rem; + margin-top: 1rem; + } + + .former-channels span { + font-size: 0.8rem; + color: #666; + font-weight: 500; + } + + .former-links { + display: flex; + gap: 1rem; + justify-content: center; + } + + .former-links a { + font-size: 1.5rem; + display: flex; + align-items: center; + justify-content: center; } .text a { From 4c5bc739364a10574f9ff09799fda5f681aff456 Mon Sep 17 00:00:00 2001 From: Milian Date: Mon, 8 Dec 2025 21:46:55 +0100 Subject: [PATCH 4/4] fix styling; add contact form imprint --- ...ontactForm.astro => InfoContactForm.astro} | 8 +- src/components/VorstandContactForm.astro | 118 ++++++++++++++++++ src/pages/about.mdx | 2 +- src/pages/contact.mdx | 4 +- src/pages/imprint.mdx | 6 +- src/styles/contact-form.css | 2 - 6 files changed, 132 insertions(+), 8 deletions(-) rename src/components/{ContactForm.astro => InfoContactForm.astro} (97%) create mode 100644 src/components/VorstandContactForm.astro diff --git a/src/components/ContactForm.astro b/src/components/InfoContactForm.astro similarity index 97% rename from src/components/ContactForm.astro rename to src/components/InfoContactForm.astro index cdab56a..5757907 100644 --- a/src/components/ContactForm.astro +++ b/src/components/InfoContactForm.astro @@ -3,6 +3,7 @@ import '../styles/contact-form.css'; --- +
+
\ No newline at end of file + + + \ No newline at end of file diff --git a/src/components/VorstandContactForm.astro b/src/components/VorstandContactForm.astro new file mode 100644 index 0000000..c89786a --- /dev/null +++ b/src/components/VorstandContactForm.astro @@ -0,0 +1,118 @@ +--- +import '../styles/contact-form.css'; +--- + +
+
+ + + + +
+ +
+ Please provide your full name. +
+
+
+ +
+ Please provide your email address. +
+
+ Please provide a valid email address. +
+
+
+ +
+ Please enter your message. +
+
+ +
+
+
+ + + + \ No newline at end of file diff --git a/src/pages/about.mdx b/src/pages/about.mdx index d05a305..c901ad2 100644 --- a/src/pages/about.mdx +++ b/src/pages/about.mdx @@ -62,5 +62,5 @@ bank details: > BIC: SSKMDEMMXXX > Bank: Stadtsparkasse München -Make sure to send us an email to vorstand[at]munichmakerlab.de, +Make sure to send us an message via the contact form here, so we can get you your receipt. diff --git a/src/pages/contact.mdx b/src/pages/contact.mdx index 7eb7b64..e499cab 100644 --- a/src/pages/contact.mdx +++ b/src/pages/contact.mdx @@ -6,7 +6,7 @@ headline: "Contact" sub_headline: "Any questions? Contact us!" --- -import ContactForm from '../components/ContactForm.astro'; +import InfoContactForm from '../components/InfoContactForm.astro'; If you have any questions, drop us an email via the contact form or join our slack below @@ -22,4 +22,4 @@ Check out our different Socialmedia channels below in the footer # Contact form - \ No newline at end of file + \ No newline at end of file diff --git a/src/pages/imprint.mdx b/src/pages/imprint.mdx index dc9fbe3..a62e599 100644 --- a/src/pages/imprint.mdx +++ b/src/pages/imprint.mdx @@ -6,6 +6,8 @@ headline: "Impressum" sub_headline: "More legal stuff" --- +import VorstandContactForm from '../components/VorstandContactForm.astro'; + Diese Webseite und alle weiteren Angebote unter der Domain munichmakerlab.de werden betrieben vom Munich Maker Lab e.V. (Amtsgericht München VR 205448). @@ -20,9 +22,9 @@ der Vorstand. - 2. Vorsitzender: Adrian Menzel - Kassenwart: Charel Lallemang -## Kontakt +## Kontakt Vorstand -E-Mail: vorstand[at]munichmakerlab.de + ## Anschrift diff --git a/src/styles/contact-form.css b/src/styles/contact-form.css index b412ab6..d183192 100644 --- a/src/styles/contact-form.css +++ b/src/styles/contact-form.css @@ -1,5 +1,3 @@ -@import "tailwindcss"; - .invalid-feedback, .empty-feedback { display: none;