From 7ea5ffa4b45d6c9bb7866765129c542d4640a6fc Mon Sep 17 00:00:00 2001 From: Marco Souza Date: Sun, 26 Apr 2026 15:47:47 -0300 Subject: [PATCH] feat: mobile-friendly refactor for all pages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - HeroSection: responsive title (text-3xl→6xl), smaller eyebrow badge, adaptive padding - Hero: flex-col layout on mobile instead of grid-cols-2, centered content - SectionHeader: smaller icon containers and titles on mobile - Section: gradual padding scale (py-12→16→24) - HowToHelp: add sm: breakpoint for 2-column grid - TestimonialGrid: tighter gap on mobile - StepItem: smaller icons and padding for mobile timeline - About page: values and channels grids add sm: breakpoints - CallToAction: responsive icon size and padding - global.css: fix aggressive text scaling on mobile --- src/components/marketing/Hero.astro | 16 +++++++------- src/components/marketing/HowToHelp.astro | 2 +- src/components/marketing/Section.astro | 8 +++---- .../marketing/TestimonialGrid.astro | 2 +- src/components/ui/CallToAction.astro | 22 +++++++++---------- src/components/ui/HeroSection.astro | 20 ++++++++--------- src/components/ui/SectionHeader.astro | 10 ++++----- src/components/ui/StepItem.astro | 12 +++++----- src/pages/about.astro | 4 ++-- src/styles/global.css | 15 +++++++++++-- 10 files changed, 60 insertions(+), 51 deletions(-) diff --git a/src/components/marketing/Hero.astro b/src/components/marketing/Hero.astro index d04350b..2ae269d 100644 --- a/src/components/marketing/Hero.astro +++ b/src/components/marketing/Hero.astro @@ -15,7 +15,7 @@ const { content } = Astro.props; ---
-
-
-

{content.eyebrow}

-

+
+
+

{content.eyebrow}

+

{content.headline}

-

+

{content.subhead}

{(content.primaryCta ?? content.secondaryCta) && ( -

diff --git a/src/components/marketing/HowToHelp.astro b/src/components/marketing/HowToHelp.astro index 8ee4923..a9e23b6 100644 --- a/src/components/marketing/HowToHelp.astro +++ b/src/components/marketing/HowToHelp.astro @@ -10,7 +10,7 @@ const { items } = Astro.props; const t = useTranslations(); --- -
+
{ items.map((item) => (
diff --git a/src/components/marketing/Section.astro b/src/components/marketing/Section.astro index 91ba37c..27d4d93 100644 --- a/src/components/marketing/Section.astro +++ b/src/components/marketing/Section.astro @@ -19,14 +19,14 @@ const bg = ---
-
+
{ eyebrow && ( -

{eyebrow}

+

{eyebrow}

) } -

{title}

- {subtitle &&

{subtitle}

} +

{title}

+ {subtitle &&

{subtitle}

}
diff --git a/src/components/marketing/TestimonialGrid.astro b/src/components/marketing/TestimonialGrid.astro index 9f6bbff..31130cd 100644 --- a/src/components/marketing/TestimonialGrid.astro +++ b/src/components/marketing/TestimonialGrid.astro @@ -10,7 +10,7 @@ const { items } = Astro.props; const t = useTranslations(); --- -
+
{ items.map((item) => (
diff --git a/src/components/ui/CallToAction.astro b/src/components/ui/CallToAction.astro index dc5b662..f781b53 100644 --- a/src/components/ui/CallToAction.astro +++ b/src/components/ui/CallToAction.astro @@ -4,26 +4,24 @@ import { Icon } from 'astro-icon/components'; interface Props { icon: string; title: string; - description: string; + description?: string; class?: string; } const { icon, title, description, class: className = '' } = Astro.props; --- -
-
-
+
+
-
-
-
- -
-

{title}

-

{description}

+
+
+ +
+

{title}

+ {description &&

{description}

} +
-
diff --git a/src/components/ui/HeroSection.astro b/src/components/ui/HeroSection.astro index 7e57b42..44df441 100644 --- a/src/components/ui/HeroSection.astro +++ b/src/components/ui/HeroSection.astro @@ -27,26 +27,26 @@ const { eyebrow, title, subtitle, stats, class: className = '' } = Astro.props;
-
+
{eyebrow && ( -
+
{eyebrow}
)} -

+

{title}

{subtitle && ( -

+

{subtitle}

)} {stats.length > 0 && ( -
+
{stats.map((stat) => { const colorClasses = { primary: 'bg-primary/10 text-primary', @@ -56,13 +56,13 @@ const { eyebrow, title, subtitle, stats, class: className = '' } = Astro.props; }; const color = stat.color ?? 'blue'; return ( -
-
- +
+
+
- {stat.value} - {stat.label} + {stat.value} + {stat.label}
); diff --git a/src/components/ui/SectionHeader.astro b/src/components/ui/SectionHeader.astro index b392233..62b6fab 100644 --- a/src/components/ui/SectionHeader.astro +++ b/src/components/ui/SectionHeader.astro @@ -19,12 +19,12 @@ const colorGradients = { }; --- -
-
- +
+
+
-

{title}

- {subtitle &&

{subtitle}

} +

{title}

+ {subtitle &&

{subtitle}

}
diff --git a/src/components/ui/StepItem.astro b/src/components/ui/StepItem.astro index 726d366..e76d948 100644 --- a/src/components/ui/StepItem.astro +++ b/src/components/ui/StepItem.astro @@ -39,14 +39,14 @@ const COLORS: Record -
- +
  • +
    +
    -
    +
    -

    - {step} +

    + {step} {title}

    {desc}

    diff --git a/src/pages/about.astro b/src/pages/about.astro index 0eed378..e54c0ce 100644 --- a/src/pages/about.astro +++ b/src/pages/about.astro @@ -61,7 +61,7 @@ const description = t('about.hero.subtitle'); class="mb-12" /> -
      +
        {coreValues.map((value, index) => { const cards = [ { from: 'from-blue-500/5', to: 'to-blue-600/10', border: 'hover:border-blue-500/30', gradient: 'from-blue-500 to-blue-600', icon: 'lucide:users' }, @@ -127,7 +127,7 @@ const description = t('about.hero.subtitle'); class="mb-8" /> -
          +
            {communicationChannels.map((ch) => ( ))} diff --git a/src/styles/global.css b/src/styles/global.css index 8cd0b51..e7c2cdd 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -209,8 +209,19 @@ } } -@media (max-width: 720px) { +/* Reduced text size on mobile to keep content readable without aggressive scaling */ +@media (max-width: 640px) { body { - @apply text-lg; + @apply text-base; + } + + h1 { + @apply text-4xl; + } + h2 { + @apply text-3xl; + } + h3 { + @apply text-2xl; } }