Compare commits
2 Commits
main
..
1411e6816d
| Author | SHA1 | Date | |
|---|---|---|---|
| 1411e6816d | |||
| 87186db304 |
@@ -0,0 +1,5 @@
|
||||
node_modules
|
||||
.astro
|
||||
dist
|
||||
.git
|
||||
*.md
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
# build output
|
||||
dist/
|
||||
# generated types
|
||||
.astro/
|
||||
|
||||
# dependencies
|
||||
node_modules/
|
||||
|
||||
# logs
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
|
||||
|
||||
# environment variables
|
||||
.env
|
||||
.env.production
|
||||
|
||||
# macOS-specific files
|
||||
.DS_Store
|
||||
|
||||
# jetbrains setting folder
|
||||
.idea/
|
||||
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"recommendations": ["astro-build.astro-vscode"],
|
||||
"unwantedRecommendations": []
|
||||
}
|
||||
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"command": "./node_modules/.bin/astro dev",
|
||||
"name": "Development server",
|
||||
"request": "launch",
|
||||
"type": "node-terminal"
|
||||
}
|
||||
]
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
# ── Étape 1 : build ──────────────────────────────────────────────
|
||||
FROM node:22-alpine AS builder
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY package.json package-lock.json ./
|
||||
RUN npm ci
|
||||
|
||||
COPY . .
|
||||
RUN npm run build
|
||||
|
||||
# ── Étape 2 : serveur statique ───────────────────────────────────
|
||||
FROM nginx:alpine
|
||||
|
||||
COPY --from=builder /app/dist /usr/share/nginx/html
|
||||
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
||||
|
||||
EXPOSE 80
|
||||
@@ -1,2 +1,43 @@
|
||||
# Le-site-de-ma-mamounette
|
||||
# Astro Starter Kit: Minimal
|
||||
|
||||
```sh
|
||||
npm create astro@latest -- --template minimal
|
||||
```
|
||||
|
||||
> 🧑🚀 **Seasoned astronaut?** Delete this file. Have fun!
|
||||
|
||||
## 🚀 Project Structure
|
||||
|
||||
Inside of your Astro project, you'll see the following folders and files:
|
||||
|
||||
```text
|
||||
/
|
||||
├── public/
|
||||
├── src/
|
||||
│ └── pages/
|
||||
│ └── index.astro
|
||||
└── package.json
|
||||
```
|
||||
|
||||
Astro looks for `.astro` or `.md` files in the `src/pages/` directory. Each page is exposed as a route based on its file name.
|
||||
|
||||
There's nothing special about `src/components/`, but that's where we like to put any Astro/React/Vue/Svelte/Preact components.
|
||||
|
||||
Any static assets, like images, can be placed in the `public/` directory.
|
||||
|
||||
## 🧞 Commands
|
||||
|
||||
All commands are run from the root of the project, from a terminal:
|
||||
|
||||
| Command | Action |
|
||||
| :------------------------ | :----------------------------------------------- |
|
||||
| `npm install` | Installs dependencies |
|
||||
| `npm run dev` | Starts local dev server at `localhost:4321` |
|
||||
| `npm run build` | Build your production site to `./dist/` |
|
||||
| `npm run preview` | Preview your build locally, before deploying |
|
||||
| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` |
|
||||
| `npm run astro -- --help` | Get help using the Astro CLI |
|
||||
|
||||
## 👀 Want to learn more?
|
||||
|
||||
Feel free to check [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat).
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
// @ts-check
|
||||
import { defineConfig } from 'astro/config';
|
||||
|
||||
import tailwindcss from '@tailwindcss/vite';
|
||||
|
||||
// https://astro.build/config
|
||||
export default defineConfig({
|
||||
vite: {
|
||||
plugins: [tailwindcss()]
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,6 @@
|
||||
services:
|
||||
web:
|
||||
build: .
|
||||
ports:
|
||||
- "127.0.0.1:8082:80"
|
||||
restart: unless-stopped
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
server {
|
||||
listen 80;
|
||||
server_name _;
|
||||
|
||||
root /usr/share/nginx/html;
|
||||
index index.html;
|
||||
|
||||
# Compression
|
||||
gzip on;
|
||||
gzip_types text/plain text/css application/javascript image/svg+xml;
|
||||
|
||||
# Cache long durée pour les assets avec hash
|
||||
location ~* \.(js|css|woff2?|png|jpg|jpeg|webp|svg|ico)$ {
|
||||
expires 1y;
|
||||
add_header Cache-Control "public, immutable";
|
||||
}
|
||||
|
||||
# Toujours servir index.html (site one-page)
|
||||
location / {
|
||||
try_files $uri $uri/ /index.html;
|
||||
}
|
||||
}
|
||||
Generated
+5359
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"name": "evolved-event",
|
||||
"type": "module",
|
||||
"version": "0.0.1",
|
||||
"engines": {
|
||||
"node": ">=22.12.0"
|
||||
},
|
||||
"scripts": {
|
||||
"dev": "astro dev",
|
||||
"build": "astro build",
|
||||
"preview": "astro preview",
|
||||
"astro": "astro"
|
||||
},
|
||||
"dependencies": {
|
||||
"@tailwindcss/vite": "^4.3.0",
|
||||
"astro": "^6.4.2",
|
||||
"lucide-astro": "^0.556.0",
|
||||
"tailwindcss": "^4.3.0"
|
||||
}
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 655 B |
@@ -0,0 +1,9 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 128 128">
|
||||
<path d="M50.4 78.5a75.1 75.1 0 0 0-28.5 6.9l24.2-65.7c.7-2 1.9-3.2 3.4-3.2h29c1.5 0 2.7 1.2 3.4 3.2l24.2 65.7s-11.6-7-28.5-7L67 45.5c-.4-1.7-1.6-2.8-2.9-2.8-1.3 0-2.5 1.1-2.9 2.7L50.4 78.5Zm-1.1 28.2Zm-4.2-20.2c-2 6.6-.6 15.8 4.2 20.2a17.5 17.5 0 0 1 .2-.7 5.5 5.5 0 0 1 5.7-4.5c2.8.1 4.3 1.5 4.7 4.7.2 1.1.2 2.3.2 3.5v.4c0 2.7.7 5.2 2.2 7.4a13 13 0 0 0 5.7 4.9v-.3l-.2-.3c-1.8-5.6-.5-9.5 4.4-12.8l1.5-1a73 73 0 0 0 3.2-2.2 16 16 0 0 0 6.8-11.4c.3-2 .1-4-.6-6l-.8.6-1.6 1a37 37 0 0 1-22.4 2.7c-5-.7-9.7-2-13.2-6.2Z" />
|
||||
<style>
|
||||
path { fill: #000; }
|
||||
@media (prefers-color-scheme: dark) {
|
||||
path { fill: #FFF; }
|
||||
}
|
||||
</style>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 749 B |
@@ -0,0 +1,49 @@
|
||||
<section id="about" class="py-32 scroll-mt-20">
|
||||
<div class="max-w-6xl mx-auto px-6">
|
||||
<div class="grid md:grid-cols-2 gap-16 items-center">
|
||||
|
||||
<div>
|
||||
<span class="block text-xs tracking-[0.3em] uppercase text-primary mb-5">
|
||||
Le gîte
|
||||
</span>
|
||||
<h2 class="font-serif text-5xl md:text-6xl font-light leading-tight mb-8">
|
||||
Un havre de paix<br/>au bord de l'Allier
|
||||
</h2>
|
||||
<p class="text-dark/70 leading-relaxed mb-8">
|
||||
Ancien moulin rénové avec soin, mêlant authenticité, pierre naturelle
|
||||
et confort moderne. Laissez-vous bercer par le doux bruit de l'eau
|
||||
et la beauté des paysages environnants.
|
||||
</p>
|
||||
<ul class="space-y-3 list-none">
|
||||
<li class="flex items-center gap-3 text-dark/70">
|
||||
<span class="w-1.5 h-1.5 rounded-full bg-primary flex-shrink-0"></span>
|
||||
6 couchages
|
||||
</li>
|
||||
<li class="flex items-center gap-3 text-dark/70">
|
||||
<span class="w-1.5 h-1.5 rounded-full bg-primary flex-shrink-0"></span>
|
||||
Terrasse avec vue sur la rivière
|
||||
</li>
|
||||
<li class="flex items-center gap-3 text-dark/70">
|
||||
<span class="w-1.5 h-1.5 rounded-full bg-primary flex-shrink-0"></span>
|
||||
Nature préservée
|
||||
</li>
|
||||
<li class="flex items-center gap-3 text-dark/70">
|
||||
<span class="w-1.5 h-1.5 rounded-full bg-primary flex-shrink-0"></span>
|
||||
Repas maison disponibles
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="relative">
|
||||
<img
|
||||
src="https://images.unsplash.com/photo-1480074568708-e7b720bb3f09?auto=format&fit=crop&w=800&q=80"
|
||||
alt="Intérieur du gîte"
|
||||
class="w-full h-[500px] object-cover rounded-sm object-center"
|
||||
/>
|
||||
<div class="absolute -bottom-5 -left-5 w-40 h-40 border border-primary/25 -z-10"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
<section id="contact" class="py-32 bg-secondary/20 scroll-mt-20">
|
||||
<div class="max-w-6xl mx-auto px-6">
|
||||
<div class="grid md:grid-cols-2 gap-16">
|
||||
|
||||
<!-- Infos -->
|
||||
<div>
|
||||
<span class="block text-xs tracking-[0.3em] uppercase text-primary mb-5">
|
||||
Contact
|
||||
</span>
|
||||
<h2 class="font-serif text-5xl md:text-6xl font-light leading-tight mb-8">
|
||||
Réservez<br/>votre séjour
|
||||
</h2>
|
||||
<p class="text-dark/70 leading-relaxed mb-10">
|
||||
Une question ou une demande de réservation ?
|
||||
N'hésitez pas à nous contacter, nous répondons sous 24h.
|
||||
</p>
|
||||
<div class="space-y-4 text-dark/70">
|
||||
<div class="flex items-center gap-4">
|
||||
<span class="text-primary font-serif text-xl">→</span>
|
||||
<span>06 00 00 00 00</span>
|
||||
</div>
|
||||
<div class="flex items-center gap-4">
|
||||
<span class="text-primary font-serif text-xl">→</span>
|
||||
<span>contact@moulindesrives.fr</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Formulaire -->
|
||||
<form class="space-y-4">
|
||||
<input
|
||||
type="text"
|
||||
name="nom"
|
||||
placeholder="Votre nom"
|
||||
class="w-full bg-white border border-secondary px-4 py-3 text-dark placeholder:text-dark/40 focus:outline-none focus:border-primary transition-colors"
|
||||
/>
|
||||
<input
|
||||
type="email"
|
||||
name="email"
|
||||
placeholder="Votre adresse email"
|
||||
class="w-full bg-white border border-secondary px-4 py-3 text-dark placeholder:text-dark/40 focus:outline-none focus:border-primary transition-colors"
|
||||
/>
|
||||
<textarea
|
||||
name="message"
|
||||
rows="5"
|
||||
placeholder="Votre message (dates souhaitées, nombre de personnes...)"
|
||||
class="w-full bg-white border border-secondary px-4 py-3 text-dark placeholder:text-dark/40 focus:outline-none focus:border-primary transition-colors resize-none"
|
||||
></textarea>
|
||||
<button
|
||||
type="submit"
|
||||
class="w-full bg-primary text-white py-4 text-xs tracking-[0.25em] uppercase hover:bg-primary/80 transition-colors"
|
||||
>
|
||||
Envoyer le message
|
||||
</button>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -0,0 +1,25 @@
|
||||
---
|
||||
import { BedDouble, Trees, CookingPot, Wifi } from 'lucide-astro';
|
||||
|
||||
const features = [
|
||||
{ icon: BedDouble, label: '3 chambres' },
|
||||
{ icon: Trees, label: 'Nature préservée' },
|
||||
{ icon: CookingPot,label: 'Repas maison' },
|
||||
{ icon: Wifi, label: 'Wifi inclus' },
|
||||
];
|
||||
---
|
||||
|
||||
<section class="py-20 bg-dark">
|
||||
<div class="max-w-6xl mx-auto px-6">
|
||||
<div class="grid grid-cols-2 md:grid-cols-4 gap-8 text-center">
|
||||
{features.map(({ icon: Icon, label }) => (
|
||||
<div class="flex flex-col items-center gap-4 text-white/60 group">
|
||||
<div class="w-14 h-14 flex items-center justify-center border border-white/20 group-hover:border-primary transition-colors">
|
||||
<Icon class="w-5 h-5" />
|
||||
</div>
|
||||
<span class="text-xs tracking-[0.2em] uppercase">{label}</span>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -0,0 +1,35 @@
|
||||
<section id="food" class="py-32 bg-secondary/20 scroll-mt-20">
|
||||
<div class="max-w-6xl mx-auto px-6">
|
||||
<div class="grid md:grid-cols-2 gap-16 items-center">
|
||||
|
||||
<!-- Image -->
|
||||
<div class="relative order-2 md:order-1">
|
||||
<img
|
||||
src="https://images.unsplash.com/photo-1414235077428-338989a2e8c0?auto=format&fit=crop&w=800&q=80"
|
||||
alt="Repas fait maison"
|
||||
class="w-full h-[500px] object-cover rounded-sm"
|
||||
/>
|
||||
<div class="absolute -top-5 -right-5 w-40 h-40 border border-primary/25 -z-10"></div>
|
||||
</div>
|
||||
|
||||
<!-- Texte -->
|
||||
<div class="order-1 md:order-2">
|
||||
<span class="block text-xs tracking-[0.3em] uppercase text-primary mb-5">
|
||||
Restauration
|
||||
</span>
|
||||
<h2 class="font-serif text-5xl md:text-6xl font-light leading-tight mb-8">
|
||||
Des repas maison<br/>avec des produits locaux
|
||||
</h2>
|
||||
<p class="text-dark/70 leading-relaxed mb-6">
|
||||
Cuisine authentique et conviviale préparée à partir de produits
|
||||
frais et locaux. Chaque repas est une invitation à découvrir
|
||||
les saveurs du terroir auvergnat.
|
||||
</p>
|
||||
<p class="text-dark/70 leading-relaxed">
|
||||
Sur réservation : petits-déjeuners et dîners en table d'hôte.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -0,0 +1,6 @@
|
||||
<footer class="bg-dark py-10">
|
||||
<div class="max-w-6xl mx-auto px-6 flex flex-col md:flex-row items-center justify-between gap-4">
|
||||
<span class="font-serif text-xl text-white/70">Le Moulin des Rives</span>
|
||||
<span class="text-white/30 text-sm">© 2026 · Tous droits réservés</span>
|
||||
</div>
|
||||
</footer>
|
||||
@@ -0,0 +1,38 @@
|
||||
<section id="gallery" class="py-32 scroll-mt-20">
|
||||
<div class="max-w-6xl mx-auto px-6">
|
||||
|
||||
<div class="mb-14 text-center">
|
||||
<span class="block text-xs tracking-[0.3em] uppercase text-primary mb-4">Galerie</span>
|
||||
<h2 class="font-serif text-5xl font-light">Découvrez le lieu</h2>
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-2 md:grid-cols-3 gap-4">
|
||||
<img
|
||||
src="https://images.unsplash.com/photo-1480074568708-e7b720bb3f09?auto=format&fit=crop&w=800&q=80"
|
||||
alt="Extérieur du gîte"
|
||||
class="w-full h-64 object-cover rounded-sm"
|
||||
/>
|
||||
<img
|
||||
src="https://images.unsplash.com/photo-1566665797739-1674de7a421a?auto=format&fit=crop&w=800&q=80"
|
||||
alt="Chambre"
|
||||
class="w-full h-64 object-cover rounded-sm"
|
||||
/>
|
||||
<img
|
||||
src="https://images.unsplash.com/photo-1556909114-f6e7ad7d3136?auto=format&fit=crop&w=800&q=80"
|
||||
alt="Cuisine"
|
||||
class="w-full h-64 object-cover rounded-sm"
|
||||
/>
|
||||
<img
|
||||
src="https://images.unsplash.com/photo-1441974231531-c6227db76b6e?auto=format&fit=crop&w=800&q=80"
|
||||
alt="Rivière et forêt"
|
||||
class="w-full h-64 object-cover rounded-sm"
|
||||
/>
|
||||
<img
|
||||
src="https://images.unsplash.com/photo-1500534314209-a25ddb2bd429?auto=format&fit=crop&w=1200&q=80"
|
||||
alt="Vue panoramique"
|
||||
class="w-full h-64 object-cover rounded-sm col-span-2 md:col-span-2"
|
||||
/>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
@@ -0,0 +1,47 @@
|
||||
<section class="relative h-screen flex items-center justify-center overflow-hidden">
|
||||
<!-- Image de fond -->
|
||||
<div class="absolute inset-0">
|
||||
<img
|
||||
src="https://images.unsplash.com/photo-1464822759023-fed622ff2c3b?auto=format&fit=crop&w=1920&q=80"
|
||||
alt="Vallée de l'Allier"
|
||||
class="w-full h-full object-cover"
|
||||
/>
|
||||
<div class="absolute inset-0 bg-dark/50"></div>
|
||||
</div>
|
||||
|
||||
<!-- Contenu centré -->
|
||||
<div class="relative z-10 text-center text-white px-6 max-w-4xl mx-auto">
|
||||
<span class="block text-xs tracking-[0.4em] uppercase text-white/60 mb-6">
|
||||
Gîte de charme · Vallée de l'Allier
|
||||
</span>
|
||||
|
||||
<h1 class="font-serif text-7xl md:text-9xl font-light leading-none mb-6">
|
||||
Le Moulin<br/>des Rives
|
||||
</h1>
|
||||
|
||||
<p class="text-lg text-white/70 font-light mb-12 max-w-lg mx-auto">
|
||||
Un lieu chaleureux et authentique au cœur de la nature.
|
||||
</p>
|
||||
|
||||
<div class="flex flex-col sm:flex-row gap-4 justify-center">
|
||||
<a
|
||||
href="#contact"
|
||||
class="bg-primary text-white px-10 py-4 text-xs tracking-[0.25em] uppercase hover:bg-primary/80 transition-colors"
|
||||
>
|
||||
Réserver votre séjour
|
||||
</a>
|
||||
<a
|
||||
href="#about"
|
||||
class="border border-white/60 text-white px-10 py-4 text-xs tracking-[0.25em] uppercase hover:bg-white/10 transition-colors"
|
||||
>
|
||||
Découvrir
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Indicateur de défilement -->
|
||||
<div class="absolute bottom-8 left-1/2 -translate-x-1/2 flex flex-col items-center gap-2 text-white/40">
|
||||
<span class="text-[10px] tracking-widest uppercase">Défiler</span>
|
||||
<div class="w-px h-8 bg-white/30"></div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -0,0 +1,38 @@
|
||||
<section class="py-32">
|
||||
<div class="max-w-6xl mx-auto px-6">
|
||||
<div class="grid md:grid-cols-2 gap-16 items-center">
|
||||
|
||||
<div>
|
||||
<span class="block text-xs tracking-[0.3em] uppercase text-primary mb-5">
|
||||
Localisation
|
||||
</span>
|
||||
<h2 class="font-serif text-5xl md:text-6xl font-light leading-tight mb-8">
|
||||
Au cœur de la<br/>vallée de l'Allier
|
||||
</h2>
|
||||
<p class="text-dark/70 leading-relaxed mb-8">
|
||||
Entre rivière, forêts et villages de caractère.
|
||||
Facilement accessible depuis les grandes villes.
|
||||
</p>
|
||||
<div class="space-y-3 text-dark/70 text-sm">
|
||||
<div class="flex items-center gap-3">
|
||||
<span class="text-primary">—</span>
|
||||
<span>Vallée de l'Allier, Auvergne</span>
|
||||
</div>
|
||||
<div class="flex items-center gap-3">
|
||||
<span class="text-primary">—</span>
|
||||
<span>Accessible en voiture et en train</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--
|
||||
Remplacez le contenu de cette div par l'iframe Google Maps :
|
||||
Allez sur maps.google.com → partagez → intégrer une carte → copiez l'iframe
|
||||
-->
|
||||
<div class="h-[420px] bg-secondary/40 rounded-sm flex items-center justify-center text-dark/40 text-sm">
|
||||
Carte à intégrer (iframe Google Maps)
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -0,0 +1,16 @@
|
||||
<header class="fixed top-0 left-0 right-0 z-50 bg-cream/95 backdrop-blur-sm border-b border-secondary/60">
|
||||
<div class="max-w-6xl mx-auto px-6 py-4 flex items-center justify-between">
|
||||
<a href="#" class="font-serif text-2xl text-dark tracking-wide">
|
||||
Le Moulin des Rives
|
||||
</a>
|
||||
|
||||
<nav class="hidden md:flex items-center gap-8">
|
||||
<a href="#about" class="text-xs tracking-[0.2em] uppercase text-dark/60 hover:text-primary transition-colors">Le gîte</a>
|
||||
<a href="#gallery" class="text-xs tracking-[0.2em] uppercase text-dark/60 hover:text-primary transition-colors">Galerie</a>
|
||||
<a href="#food" class="text-xs tracking-[0.2em] uppercase text-dark/60 hover:text-primary transition-colors">Restauration</a>
|
||||
<a href="#contact" class="text-xs tracking-[0.2em] uppercase bg-primary text-white px-6 py-2.5 hover:bg-primary/80 transition-colors">
|
||||
Réserver
|
||||
</a>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
@@ -0,0 +1,38 @@
|
||||
---
|
||||
import '../styles/global.css';
|
||||
|
||||
interface Props {
|
||||
title?: string;
|
||||
}
|
||||
|
||||
const {
|
||||
title = 'Le Moulin des Rives'
|
||||
} = Astro.props;
|
||||
---
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
|
||||
<title>{title}</title>
|
||||
|
||||
<meta
|
||||
name="description"
|
||||
content="Gîte de charme dans la vallée de l’Allier avec restauration et hébergement au cœur de la nature."
|
||||
/>
|
||||
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@400;500;600;700&family=Inter:wght@300;400;500;600&display=swap"
|
||||
rel="stylesheet"
|
||||
>
|
||||
</head>
|
||||
|
||||
<body class="bg-cream text-dark font-sans antialiased">
|
||||
<slot />
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,29 @@
|
||||
---
|
||||
import MainLayout from '../layouts/MainLayout.astro';
|
||||
|
||||
import Navbar from '../components/Navbar.astro';
|
||||
import Hero from '../components/Hero.astro';
|
||||
import About from '../components/About.astro';
|
||||
import Features from '../components/Features.astro';
|
||||
import Gallery from '../components/Gallery.astro';
|
||||
import Food from '../components/Food.astro';
|
||||
import Location from '../components/Location.astro';
|
||||
import Contact from '../components/Contact.astro';
|
||||
import Footer from '../components/Footer.astro';
|
||||
---
|
||||
|
||||
<MainLayout>
|
||||
<Navbar />
|
||||
<Hero />
|
||||
|
||||
<main>
|
||||
<About />
|
||||
<Features />
|
||||
<Gallery />
|
||||
<Food />
|
||||
<Location />
|
||||
<Contact />
|
||||
</main>
|
||||
|
||||
<Footer />
|
||||
</MainLayout>
|
||||
@@ -0,0 +1,14 @@
|
||||
@import "tailwindcss";
|
||||
|
||||
@theme {
|
||||
--color-primary: #8b8d62;
|
||||
--color-secondary: #d9d2c3;
|
||||
--color-cream: #f5f2eb;
|
||||
--color-dark: #1f1f1f;
|
||||
--font-serif: 'Cormorant Garamond', serif;
|
||||
--font-sans: 'Inter', sans-serif;
|
||||
}
|
||||
|
||||
html {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"extends": "astro/tsconfigs/strict",
|
||||
"include": [".astro/types.d.ts", "**/*"],
|
||||
"exclude": ["dist"]
|
||||
}
|
||||
Reference in New Issue
Block a user