registri dei piani in git (AI-OS#309)
Refs gitea:Adriano/AI-OS#310 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,244 @@
|
||||
# Review package: 45e5214..HEAD
|
||||
|
||||
## Commits
|
||||
ba89568 feat: pagina about
|
||||
|
||||
## Files changed
|
||||
src/components/PageHero.astro | 15 ++++
|
||||
src/components/about/Timeline.astro | 34 ++++++++
|
||||
src/pages/about.astro | 165 ++++++++++++++++++++++++++++++++++++
|
||||
3 files changed, 214 insertions(+)
|
||||
|
||||
## Diff
|
||||
diff --git a/src/components/PageHero.astro b/src/components/PageHero.astro
|
||||
new file mode 100644
|
||||
index 0000000..7a4529f
|
||||
--- /dev/null
|
||||
+++ b/src/components/PageHero.astro
|
||||
@@ -0,0 +1,15 @@
|
||||
+---
|
||||
+interface Props { title: string; eyebrow?: string }
|
||||
+const { title, eyebrow } = Astro.props;
|
||||
+---
|
||||
+<section class="phero">
|
||||
+ <div class="container">
|
||||
+ {eyebrow && <p class="eyebrow">{eyebrow}</p>}
|
||||
+ <h1>{title}</h1>
|
||||
+ </div>
|
||||
+</section>
|
||||
+
|
||||
+<style>
|
||||
+ .phero { background: var(--c-bg-alt); padding-block: 70px; }
|
||||
+ .phero h1 { text-transform: lowercase; font-weight: 500; margin: 0; }
|
||||
+</style>
|
||||
diff --git a/src/components/about/Timeline.astro b/src/components/about/Timeline.astro
|
||||
new file mode 100644
|
||||
index 0000000..2eb91dc
|
||||
--- /dev/null
|
||||
+++ b/src/components/about/Timeline.astro
|
||||
@@ -0,0 +1,34 @@
|
||||
+---
|
||||
+const openText = `Il percorso di crescita di InsanityLab si è sviluppato attraverso tappe precise e coerenti con la visione iniziale. Nato nel 2021 con un piccolo team e grandi ambizioni, il progetto ha conosciuto una forte evoluzione nel 2024, anno in cui il servizio si è ampliato attraverso nuovi format come gli small group e una sempre maggiore specializzazione nella profilazione fisica del cliente, grazie a sistemi avanzati di valutazione e monitoraggio. Parallelamente, anche l'area dedicata alla riabilitazione e all'esercizio preventivo si è consolidata, ponendo le basi per un importante salto di qualità.`;
|
||||
+const stages = [
|
||||
+ { label: 'INSANITYLAB 2025', text: 'Contenuto in arrivo: il cliente fornirà il testo di questa tappa.' },
|
||||
+ { label: 'INSANITYLAB 2026', text: 'Contenuto in arrivo: il cliente fornirà il testo di questa tappa.' },
|
||||
+ { label: 'INSANITYLAB OGGI', text: 'Contenuto in arrivo: il cliente fornirà il testo di questa tappa.' },
|
||||
+];
|
||||
+---
|
||||
+<section class="section">
|
||||
+ <div class="container">
|
||||
+ <div class="section-heading">
|
||||
+ <h2>Storylab</h2>
|
||||
+ <p>Scopri la nostra storia: come nasce InsanityLab, perché abbiamo deciso di creare qualcosa di diverso e chi sono i visionari che hanno trasformato questa idea in un nuovo modo di vivere benessere, movimento e salute.</p>
|
||||
+ </div>
|
||||
+ <div class="tl">
|
||||
+ <h3 class="tl__label">INSANITYLAB 2021-2024</h3>
|
||||
+ <p>{openText}</p>
|
||||
+ {stages.map((s) => (
|
||||
+ <details class="tl__stage">
|
||||
+ <summary>+ {s.label}</summary>
|
||||
+ <p>{s.text}</p>
|
||||
+ </details>
|
||||
+ ))}
|
||||
+ </div>
|
||||
+ </div>
|
||||
+</section>
|
||||
+
|
||||
+<style>
|
||||
+ .tl { max-width: 720px; margin-inline: auto; }
|
||||
+ .tl__label { text-transform: uppercase; letter-spacing: .16em; font-size: .9rem; }
|
||||
+ .tl__stage { border-top: 1px solid #e4ded6; padding-block: 14px; }
|
||||
+ .tl__stage summary { cursor: pointer; font-family: var(--font-heading); font-size: .82rem; letter-spacing: .16em; text-transform: uppercase; color: var(--c-heading); list-style: none; }
|
||||
+ .tl__stage summary::-webkit-details-marker { display: none; }
|
||||
+</style>
|
||||
diff --git a/src/pages/about.astro b/src/pages/about.astro
|
||||
new file mode 100644
|
||||
index 0000000..fa8497e
|
||||
--- /dev/null
|
||||
+++ b/src/pages/about.astro
|
||||
@@ -0,0 +1,165 @@
|
||||
+---
|
||||
+import Base from '../layouts/Base.astro';
|
||||
+import PageHero from '../components/PageHero.astro';
|
||||
+import Timeline from '../components/about/Timeline.astro';
|
||||
+import { Image } from 'astro:assets';
|
||||
+import { team } from '../data/team';
|
||||
+import { site } from '../data/site';
|
||||
+const images = import.meta.glob<{ default: ImageMetadata }>('../assets/img/*.{jpg,png}', { eager: true });
|
||||
+const imgOf = (name: string) => Object.entries(images).find(([p]) => p.includes(name))?.[1]?.default;
|
||||
+const founders = team.filter((m) => m.founder);
|
||||
+const staff = team.filter((m) => !m.founder);
|
||||
+export const prerender = true;
|
||||
+---
|
||||
+<Base title="Insanitylab" description="Mission, storia, team e metodo di InsanityLab: un laboratorio esclusivo dove movimento, prevenzione e performance convivono in un approccio personalizzato.">
|
||||
+ <PageHero title="Insanitylab" />
|
||||
+
|
||||
+ <section class="section">
|
||||
+ <div class="container">
|
||||
+ <div class="about-img-row">
|
||||
+ <div class="about-img-row__text section-heading">
|
||||
+ <h2>Mission</h2>
|
||||
+ <p>In InsanityLab crediamo che il movimento non debba essere vissuto come un obbligo o un sacrificio, ma come una forma autentica di cura di sé. La nostra missione è accompagnare ogni persona in un percorso di consapevolezza, aiutandola a riscoprire il benessere fisico e mentale attraverso un approccio sostenibile, concreto e duraturo.</p>
|
||||
+ </div>
|
||||
+ {imgOf('about-training-group') && (
|
||||
+ <div class="about-img-row__img">
|
||||
+ <Image src={imgOf('about-training-group')!} alt="Training group InsanityLab" widths={[600, 900]} sizes="(max-width:767px) 100vw, 50vw" />
|
||||
+ </div>
|
||||
+ )}
|
||||
+ </div>
|
||||
+ </div>
|
||||
+ </section>
|
||||
+
|
||||
+ <section class="section section--alt">
|
||||
+ <div class="container about-2col">
|
||||
+ <div>
|
||||
+ <h2>Direzione</h2>
|
||||
+ <p>Non ci limitiamo ad allenare il corpo: creiamo percorsi personalizzati che uniscono movimento, equilibrio e benessere, attraverso il supporto di professionisti qualificati, programmi su misura e un approccio centrato sulla persona e su risultati duraturi.</p>
|
||||
+ <a class="btn" href="/programs">Scopri</a>
|
||||
+ </div>
|
||||
+ <div>
|
||||
+ <h2>Approccio</h2>
|
||||
+ <p>InsanityLab si distingue per un approccio serio e personalizzato al benessere, basato su competenze specializzate, costanza e cura quotidiana, rivolto a chiunque voglia migliorare il proprio stile di vita in modo consapevole e duraturo.</p>
|
||||
+ <a class="btn btn--dark" href="/contact">Contattaci</a>
|
||||
+ </div>
|
||||
+ </div>
|
||||
+ </section>
|
||||
+
|
||||
+ <section class="section">
|
||||
+ <div class="container">
|
||||
+ <div class="about-img-row about-img-row--reverse">
|
||||
+ <div class="about-img-row__text section-heading">
|
||||
+ <h2>About</h2>
|
||||
+ <p>InsanityLab nasce con l'obiettivo di unire fitness e salute in un unico percorso dedicato al benessere globale, superando il concetto tradizionale di palestra. Un laboratorio esclusivo, guidato da osteopati e chinesiologi e professionisti specializzati, dove movimento, prevenzione e performance convivono all'interno di un approccio personalizzato e consapevole.</p>
|
||||
+ </div>
|
||||
+ {imgOf('about-team-group') && (
|
||||
+ <div class="about-img-row__img">
|
||||
+ <Image src={imgOf('about-team-group')!} alt="Team InsanityLab" widths={[600, 900]} sizes="(max-width:767px) 100vw, 50vw" />
|
||||
+ </div>
|
||||
+ )}
|
||||
+ </div>
|
||||
+ </div>
|
||||
+ </section>
|
||||
+
|
||||
+ <Timeline />
|
||||
+
|
||||
+ <section class="section section--dark">
|
||||
+ <div class="container">
|
||||
+ <div class="section-heading">
|
||||
+ <h2>Convenzioni</h2>
|
||||
+ <p>InsanityLab collabora con aziende, enti e organizzazioni che desiderano investire concretamente nel benessere delle proprie persone, attraverso programmi dedicati alla salute, al movimento e alla qualità della vita. Le convenzioni nascono con l'obiettivo di portare il valore del benessere anche all'interno del contesto professionale, creando percorsi che favoriscano equilibrio fisico, prevenzione e performance quotidiana.</p>
|
||||
+ </div>
|
||||
+ <ul class="conv">
|
||||
+ <li>Le realtà convenzionate possono accedere a programmi di welfare aziendale personalizzati, con percorsi individuali, small group training e classi di gruppo seguiti da professionisti qualificati.</li>
|
||||
+ <li>Ogni collaborazione parte da una consulenza gratuita preliminare per analizzare esigenze e obiettivi, così da sviluppare soluzioni efficaci e sostenibili.</li>
|
||||
+ <li>Le convenzioni vengono definite su misura insieme a InsanityLab, in base alle caratteristiche e alle necessità dell'azienda partner.</li>
|
||||
+ </ul>
|
||||
+ <p class="conv__cta">Per ricevere maggiori informazioni o attivare una convenzione: {site.email} · {site.phone}</p>
|
||||
+ </div>
|
||||
+ </section>
|
||||
+
|
||||
+ <section class="section">
|
||||
+ <div class="container">
|
||||
+ <div class="section-heading">
|
||||
+ <h2>Team</h2>
|
||||
+ <p>Il team di InsanityLab riunisce professionisti specializzati in allenamento, salute e benessere, con un approccio multidisciplinare basato su competenza, personalizzazione e attenzione alla persona.</p>
|
||||
+ </div>
|
||||
+ <div class="tgrid tgrid--founders">
|
||||
+ {founders.map((m) => (
|
||||
+ <article class="tcard">
|
||||
+ {m.image && imgOf(m.image) && <Image src={imgOf(m.image)!} alt={m.name} widths={[300, 500]} sizes="(max-width:767px) 100vw, 33vw" />}
|
||||
+ <h3>{m.shortName}</h3>
|
||||
+ <p class="tcard__role">{m.role}</p>
|
||||
+ <p>{m.bio}</p>
|
||||
+ </article>
|
||||
+ ))}
|
||||
+ </div>
|
||||
+ <p class="section-heading" style="margin-top:60px">Accanto ai fondatori opera un team in continua crescita composto da trainer e professionisti con specializzazioni complementari:</p>
|
||||
+ <div class="tgrid">
|
||||
+ {staff.map((m) => (
|
||||
+ <article class="tcard">
|
||||
+ {m.image && imgOf(m.image) && <Image src={imgOf(m.image)!} alt={m.name} widths={[300, 500]} sizes="(max-width:767px) 100vw, 33vw" />}
|
||||
+ <h3>{m.shortName}</h3>
|
||||
+ <p class="tcard__role">{m.role}</p>
|
||||
+ <p>{m.bio}</p>
|
||||
+ </article>
|
||||
+ ))}
|
||||
+ </div>
|
||||
+ </div>
|
||||
+ </section>
|
||||
+
|
||||
+ <section class="section section--alt">
|
||||
+ <div class="container section-heading">
|
||||
+ <h2>Metodo</h2>
|
||||
+ <p>Il team InsanityLab lavora con un approccio empatico e personalizzato, seguendo ogni persona in un percorso continuo e su misura. Unisce competenze multidisciplinari in allenamento, prevenzione, riabilitazione e performance, supportate da formazione costante. Il metodo si basa su sinergia, condivisione e qualità, per generare risultati concreti e duraturi.</p>
|
||||
+ <p>In poche parole, il team di InsanityLab è composto da professionisti che credono profondamente in ciò che fanno: un gruppo unito da valori condivisi, formato per eccellere e guidato dalla convinzione che il movimento sia uno strumento di benessere, equilibrio e qualità della vita.</p>
|
||||
+ </div>
|
||||
+ </section>
|
||||
+
|
||||
+ <section class="section">
|
||||
+ <div class="container">
|
||||
+ <div class="about-img-row">
|
||||
+ <div class="about-img-row__text section-heading">
|
||||
+ <h2>In-Sanity Studios</h2>
|
||||
+ <p>IN-SANITY STUDIOS è il nuovo spazio professionale nato dall'evoluzione di InsanityLab, dedicato ai professionisti della salute, del benessere e della performance. Più che un semplice insieme di studi professionali, rappresenta un ecosistema multidisciplinare pensato per favorire collaborazione, qualità del servizio e integrazione tra competenze diverse.</p>
|
||||
+ <p>Il progetto nasce con l'obiettivo di offrire a liberi professionisti uno spazio elegante, riservato e già attrezzato, in cui poter svolgere la propria attività all'interno di un contesto consolidato e altamente qualificato, senza dover affrontare i costi e le complessità di una struttura indipendente.</p>
|
||||
+ <p>IN-SANITY STUDIOS si rivolge a figure specializzate nel settore salute e wellness, come fisioterapisti, osteopati, psicologi, nutrizionisti, massaggiatori e altri professionisti dedicati alla cura della persona. Ogni studio è progettato per garantire comfort, professionalità e continuità operativa, all'interno di un ambiente coerente con la filosofia di InsanityLab: mettere il benessere globale della persona al centro del percorso.</p>
|
||||
+ </div>
|
||||
+ {imgOf('about-exterior') && (
|
||||
+ <div class="about-img-row__img">
|
||||
+ <Image src={imgOf('about-exterior')!} alt="In-Sanity Studios" widths={[600, 900]} sizes="(max-width:767px) 100vw, 50vw" />
|
||||
+ </div>
|
||||
+ )}
|
||||
+ </div>
|
||||
+ </div>
|
||||
+ </section>
|
||||
+
|
||||
+ <section class="section section--alt">
|
||||
+ <div class="container section-heading">
|
||||
+ <h2>Vision</h2>
|
||||
+ <p>InsanityLab nasce con l'obiettivo di aiutare le persone a ritrovare energia ed equilibrio attraverso il movimento, promuovendo un approccio autentico, scientifico e umano al benessere. La sua visione va oltre l'estetica e la performance: allenarsi significa prendersi cura di sé, costruendo abitudini sane, sostenibili e orientate alla longevità, alla prevenzione e alla qualità della vita.</p>
|
||||
+ <p>L'obiettivo è diventare un punto di riferimento capace di lasciare un impatto reale nella comunità, trasformando il movimento in uno strumento di salute, consapevolezza e identità.</p>
|
||||
+ </div>
|
||||
+ </section>
|
||||
+</Base>
|
||||
+
|
||||
+<style>
|
||||
+ .about-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 60px; }
|
||||
+ .about-img-row { display: grid; grid-template-columns: 1fr 1fr; gap: 60px; align-items: center; }
|
||||
+ .about-img-row--reverse { direction: rtl; }
|
||||
+ .about-img-row--reverse > * { direction: ltr; }
|
||||
+ .about-img-row__img img { width: 100%; height: auto; display: block; }
|
||||
+ .conv { max-width: 760px; margin: 0 auto 30px; display: grid; gap: 18px; padding-left: 20px; }
|
||||
+ .conv__cta { text-align: center; font-family: var(--font-heading); letter-spacing: .06em; }
|
||||
+ .tgrid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 40px; }
|
||||
+ .tcard img { aspect-ratio: 3/4; object-fit: cover; 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; }
|
||||
+ .about-img-row--reverse { direction: ltr; }
|
||||
+ }
|
||||
+</style>
|
||||
Reference in New Issue
Block a user