Servizi home, testo promo, fix immagini override e rimozione Antonello
- ServicesGrid: filtra grid !== false come /services (via Small Group, Rehab, Holistic Class, Reformer Class dalla griglia Servizi in home) - promo-eventi: badge "solo per apertura nuova sede Settembre 2026" - MethodSteps e about: .tcard/.method__circle usano :global(img) così gli override <img> di <TImg> (senza cid) ricevono border-radius/object-fit - about: griglia team a flex centrato, ultima riga incompleta non piu a sinistra - team: rimosso Antonello D'Alessandro (staff about e homeTeam) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -36,7 +36,9 @@ const imgOf = (name: string) => Object.entries(images).find(([p]) => p.includes(
|
||||
.method__cta { text-align: center; margin-top: 48px; }
|
||||
.method__row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 30px; text-align: center; position: relative; }
|
||||
.method__circle { position: relative; width: 150px; height: 150px; margin: 0 auto 20px; border: 1px dashed var(--c-accent-dark); border-radius: 50%; padding: 8px; }
|
||||
.method__circle img { border-radius: 50%; width: 100%; height: 100%; object-fit: cover; }
|
||||
/* :global(img) perché gli <img> di override resi da <TImg> non ereditano il cid
|
||||
del componente: senza questo la regola scoped non li raggiungerebbe. */
|
||||
.method__circle :global(img) { border-radius: 50%; width: 100%; height: 100%; object-fit: cover; }
|
||||
.method__circle span { position: absolute; top: -6px; left: -6px; font-family: var(--font-heading); font-size: 2.4rem; color: var(--c-heading); background: var(--c-bg-alt); padding: 0 8px; }
|
||||
.method__step h3 { font-size: .85rem; text-transform: uppercase; letter-spacing: .14em; }
|
||||
.method__step p { font-size: .85rem; color: var(--c-text-light); }
|
||||
|
||||
@@ -2,6 +2,11 @@
|
||||
import { services } from '../../data/services';
|
||||
import { serviceIcons as icons } from '../../data/service-icons';
|
||||
import T from '../content/T.astro';
|
||||
|
||||
// Stessa convenzione di /services: le voci con grid:false (Small Group, Rehab,
|
||||
// Holistic Class, Reformer Class) sono approfondimenti dei riquadri Training e
|
||||
// non compaiono nella griglia Servizi.
|
||||
const gridServices = services.filter((p) => p.grid !== false);
|
||||
---
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
@@ -10,7 +15,7 @@ import T from '../content/T.astro';
|
||||
<T tag="home.services.body" as="p" />
|
||||
</div>
|
||||
<div class="pgrid">
|
||||
{services.map((p, i) => (
|
||||
{gridServices.map((p, i) => (
|
||||
<a class="pgrid__item" href={`/services/${p.slug}`} data-reveal style={`--reveal-delay:${(i % 3) * 0.15}s`}>
|
||||
<svg viewBox="0 0 24 24" fill="none" stroke="var(--c-accent-dark)" stroke-width="1.4" width="52" height="52" aria-hidden="true"><path d={icons[p.slug]} /></svg>
|
||||
<T tag={`service.${p.slug}.title`} as="h3" />
|
||||
|
||||
+1
-3
@@ -11,8 +11,6 @@ export const team: Member[] = [
|
||||
bio: "Trainer – Functional & Movement. Laureando in Scienze Motorie, specializzato in running e atletica leggera." },
|
||||
{ name: "Eleonora Cassani", shortName: "Eleonora", role: "Trainer – Planning Manager", founder: false, imageAbout: "team-eleonora-dark", image: "team-eleonora",
|
||||
bio: "Trainer – Planning Manager. Chinesiologa specializzata in attività preventiva e adattata, con focus su allenamento in gravidanza e post-gravidanza." },
|
||||
{ name: "Antonello D’Alessandro", shortName: "Antonello", role: "Trainer – Exercise & Health", founder: false, imageAbout: "team-antonello-dark", image: "team-antonello",
|
||||
bio: "Trainer – Exercise & Health. Chinesiologo specializzato in attività preventiva e adattata, Dottore in Osteopatia." },
|
||||
{ name: "Alice Roda", shortName: "Alice", role: "Trainer – Functional & Movement", founder: false, imageAbout: "team-alice-dark",
|
||||
bio: "Trainer – Functional & Movement. Laureanda in Scienze Motorie e Preparatore Atletico. Scienza del movimento e massima cura della persona: un approccio al functional training empatico e accogliente, dove l’ascolto umano guida e supporta ogni tuo progresso." },
|
||||
{ name: "Davide Bisagni", shortName: "Davide", role: "Trainer – Functional & Movement", founder: false, imageAbout: "team-davide-dark",
|
||||
@@ -21,4 +19,4 @@ export const team: Member[] = [
|
||||
bio: "Trainer – Pilates, Yoga & Mindfulness. Laureata in Psicologia Clinica e Riabilitazione, insegnante di Pilates, Yoga e Mindfulness, con approccio orientato al benessere e all’equilibrio mente-corpo." },
|
||||
];
|
||||
|
||||
export const homeTeam = ["Donata", "Nicola", "Eleonora", "Antonello"];
|
||||
export const homeTeam = ["Donata", "Nicola", "Eleonora"];
|
||||
|
||||
@@ -149,15 +149,19 @@ export const prerender = false;
|
||||
.conv__cta { text-align: center; font-family: var(--font-heading); letter-spacing: .06em; }
|
||||
.round-img { max-width: 380px; margin: 30px auto 0; }
|
||||
.round-img img { border-radius: 50%; aspect-ratio: 1; object-fit: cover; width: 100%; }
|
||||
.tgrid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 40px; }
|
||||
.tcard img { aspect-ratio: 3/4; object-fit: cover; margin-bottom: 16px; }
|
||||
/* flex + center così l'ultima riga incompleta (es. staff: 5 membri → 2 nell'ultima riga)
|
||||
resta centrata invece di appoggiarsi a sinistra. */
|
||||
.tgrid { display: flex; flex-wrap: wrap; justify-content: center; gap: 40px; }
|
||||
.tcard { width: calc((100% - 80px) / 3); }
|
||||
/* :global(img) perché gli <img> di override resi da <TImg> non ereditano il cid. */
|
||||
.tcard :global(img) { aspect-ratio: 3/4; object-fit: cover; width: 100%; margin-bottom: 16px; }
|
||||
.tcard h3 { text-transform: lowercase; letter-spacing: .2em; }
|
||||
.tcard__role { font-size: .8rem; text-transform: uppercase; letter-spacing: .12em; color: var(--c-accent-dark); }
|
||||
.tcard p { font-size: .9rem; }
|
||||
@media (max-width: 767px) {
|
||||
.about-2col,
|
||||
.tgrid,
|
||||
.about-img-row { grid-template-columns: 1fr; }
|
||||
.tcard { width: 100%; }
|
||||
.about-img-row--reverse { direction: ltr; }
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -21,7 +21,7 @@ export const prerender = false;
|
||||
</section>
|
||||
|
||||
<section class="launch">
|
||||
<div class="badge">solo per il lancio</div>
|
||||
<div class="badge">solo per apertura nuova sede Settembre 2026</div>
|
||||
<h1>Il nostro metodo nasce per durare.</h1>
|
||||
<p class="accent">Per l'apertura, un'eccezione. Solo per poco.</p>
|
||||
<p class="desc">In-Sanity Lab lavora per percorsi strutturati — trimestrali, semestrali — perché i risultati veri si costruiscono nel tempo. Per la nuova apertura, ci sarà un'eccezione: 5 incontri pensati come un vero mini-percorso, non semplici lezioni sciolte.</p>
|
||||
|
||||
Reference in New Issue
Block a user