Skip to content

💄 Add light/dark mode toggle to the v3 homepage#4867

Draft
joshbermanssw wants to merge 13 commits into
mainfrom
feat/v3-home-dark-light-mode
Draft

💄 Add light/dark mode toggle to the v3 homepage#4867
joshbermanssw wants to merge 13 commits into
mainfrom
feat/v3-home-dark-light-mode

Conversation

@joshbermanssw

Copy link
Copy Markdown
Member

TL;DR

The v3 homepage was dark-only. This adds a light/dark toggle scoped to the homepage and migrates the homepage blocks off hardcoded dark colours (text-white, text-gray-*, bg-sswCard, border-sswBorder) to theme tokens (text-foreground, text-muted-foreground, border-hairline) so light mode renders correctly — dark mode is byte-for-byte unchanged.

How

  • HomeThemeProvider + HomeThemeShell apply .dark to a homepage-scoped wrapper (not <html>), so Tailwind dark: variants and the design-token CSS vars resolve from that ancestor.
  • A floating ThemeToggle flips/persists the choice (localStorage), defaulting to dark.
  • Each migrated block keeps its exact dark appearance via dark: variants; only the light path is new.

Reviewer notes

  • Scoped, not global. .dark lives on a homepage wrapper only — other routes (including the always-.dark consulting v2 pages that share these v3 blocks) are unaffected.
  • Media stays dark by design. videoHero, heroBox, image-overlay cards, the countdown, SSW-red badges and the WebGL globe read as dark panels in both themes — their text sits over video/photos.
  • Toggle placement is temporary. Bottom-left floating button until the megamenu header extension point is sorted.

Status

Draft — functionally complete and lint-clean; opening for a preview deploy + visual review.

🤖 Generated with Claude Code

Scope a theme to the v3 homepage via HomeThemeProvider/HomeThemeShell
(applies `.dark` to a homepage wrapper, not <html>, so other routes are
untouched) plus a floating ThemeToggle. Migrate the homepage blocks off
hardcoded darks (text-white / text-gray-* / bg-sswCard / border-sswBorder)
to theme tokens (text-foreground, text-muted-foreground, border-hairline),
preserving the exact dark look with `dark:` variants. Media/hero surfaces
(videoHero, heroBox, image-overlay cards, countdown, SSW-red badges, globe)
stay always-dark by design.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@joshbermanssw

Copy link
Copy Markdown
Member Author

/deploy

@github-actions

Copy link
Copy Markdown
Contributor

No linked issues found. Please add the corresponding issues in the pull request description.
Use GitHub automation to close the issue when a PR is merged

@github-actions

github-actions Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Coverage report

St.
Category Percentage Covered / Total
🔴 Statements 0.18% 84/46983
🔴 Branches 5.03% 25/497
🔴 Functions 0.84% 4/475
🔴 Lines 0.18% 84/46983

Test suite run success

13 tests passing in 1 suite.

Report generated by 🧪jest coverage report action from b855e24

@github-actions

Copy link
Copy Markdown
Contributor

Deployed changes to https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net

ℹ️ Staging slots are no longer created automatically - comment /deploy to deploy new commits.

@github-actions

Copy link
Copy Markdown
Contributor

🚀 Lighthouse Report

🌐 URL ⚡ Performance ♿ Accessibility ✅ Best Practices 🔍 SEO 📦 Bundle Size 🗑️ Unused Bundle
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/ 56 93 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/articles 91 97 59 57 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/company/about-us 67 97 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/company/clients 94 92 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/company/contact-us 76 92 59 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/consulting 50 88 56 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/consulting/net-upgrade 66 92 56 54 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/consulting/web-applications 69 95 59 54 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/employment 66 92 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/events/angular-superpowers-tour 69 97 56 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/events/ai-workshop 94 91 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/events/ai-workshop-essentials 26 95 59 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/netug/sydney 79 94 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/training/internship-fullstack 80 91 59 61 0.00 MB 0.00 MB

…ht mode

`bg-foreground/30` compiled to no CSS (Tailwind can't apply an opacity
modifier to a plain var() colour), so inactive mobile-carousel dots were
transparent — use `bg-foreground opacity-30` instead. Pin the always-dark
HighlightCard arrow circle to `bg-white text-black` so it doesn't invert
to a near-black circle on its photo in light mode.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@joshbermanssw

Copy link
Copy Markdown
Member Author

/deploy

@github-actions

Copy link
Copy Markdown
Contributor

Deployed changes to https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net

ℹ️ Staging slots are no longer created automatically - comment /deploy to deploy new commits.

@github-actions

Copy link
Copy Markdown
Contributor

🚀 Lighthouse Report

🌐 URL ⚡ Performance ♿ Accessibility ✅ Best Practices 🔍 SEO 📦 Bundle Size 🗑️ Unused Bundle
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/ 17 93 56 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/articles 80 97 59 57 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/company/about-us 64 97 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/company/clients 80 92 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/company/contact-us 65 92 59 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/consulting 53 88 56 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/consulting/net-upgrade 61 92 56 54 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/consulting/web-applications 59 95 59 54 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/employment 75 92 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/events/angular-superpowers-tour 69 97 56 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/events/ai-workshop 93 91 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/events/ai-workshop-essentials 49 95 59 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/netug/sydney 73 94 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/training/internship-fullstack 78 91 59 61 0.00 MB 0.00 MB

joshbermanssw and others added 2 commits July 16, 2026 11:21
Hoist HomeThemeProvider to the root layout so the header shares the theme,
and scope a full-bleed themed bar to the homepage only (`ssw-home-nav`).
Replace the floating toggle with a Figma-matching actions cluster
(search, language globe, sun/moon toggle, divider, "Let's Talk" pill) injected
via the menu's rightSideActionsOverride, and default the theme to the OS
preference. Consumes SSW.MegaMenu#feat/v3-home-dark-light-mode as a temporary
git dependency (swap for the published version once #146 lands).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ht-mode

# Conflicts:
#	components/blocks/v3/logoCarousel/logoCarousel.tsx
#	components/server/MegaMenuWrapper.tsx
@joshbermanssw

Copy link
Copy Markdown
Member Author

/deploy

@github-actions

Copy link
Copy Markdown
Contributor

Deployed changes to https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net

ℹ️ Staging slots are no longer created automatically - comment /deploy to deploy new commits.

@github-actions

Copy link
Copy Markdown
Contributor

🚀 Lighthouse Report

🌐 URL ⚡ Performance ♿ Accessibility ✅ Best Practices 🔍 SEO 📦 Bundle Size 🗑️ Unused Bundle
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/ 27 93 56 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/articles 43 97 59 57 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/company/about-us 42 97 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/company/clients 42 92 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/company/contact-us 43 92 59 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/consulting 42 88 56 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/consulting/net-upgrade 42 95 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/consulting/web-applications 42 95 59 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/employment 37 92 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/events/angular-superpowers-tour 41 97 56 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/events/ai-workshop 61 91 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/events/ai-workshop-essentials 27 95 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/netug/sydney 41 94 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/training/internship-fullstack 50 91 59 61 0.00 MB 0.00 MB

@joshbermanssw

Copy link
Copy Markdown
Member Author

/deploy

@github-actions

Copy link
Copy Markdown
Contributor

Deployed changes to https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net

ℹ️ Staging slots are no longer created automatically - comment /deploy to deploy new commits.

@github-actions

Copy link
Copy Markdown
Contributor

🚀 Lighthouse Report

🌐 URL ⚡ Performance ♿ Accessibility ✅ Best Practices 🔍 SEO 📦 Bundle Size 🗑️ Unused Bundle
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/ 48 93 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/articles 42 97 59 57 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/company/about-us 41 97 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/company/clients 40 92 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/company/contact-us 44 92 59 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/consulting 41 88 56 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/consulting/net-upgrade 32 95 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/consulting/web-applications 38 95 59 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/employment 39 92 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/events/angular-superpowers-tour 39 97 56 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/events/ai-workshop 60 91 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/events/ai-workshop-essentials 27 95 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/netug/sydney 45 94 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/training/internship-fullstack 52 91 59 61 0.00 MB 0.00 MB

…reviews

- Unify all homepage cards on the People-card look: white surface +
  hairline border in light mode, shadows removed (dark unchanged)
- Match the hero scoop to the gray-50 section beneath it and flip the
  scoop arrows to black-on-light so they stay visible in light mode
- Center the hero scoop and lay out the nav actions row properly on
  mobile; reclaim nav gutters in the 1280-1360 band so the Let's Talk
  pill never clips (pairs with the MegaMenu dark-logo easing)
- Swap Newcastle/Sydney globe label offsets to match geography
- Show split light/dark previews with both hex values in the Tina
  background colour picker
- Pin ssw.megamenu to the latest theme branch commit

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@joshbermanssw

Copy link
Copy Markdown
Member Author

/deploy

1 similar comment
@joshbermanssw

Copy link
Copy Markdown
Member Author

/deploy

@github-actions

Copy link
Copy Markdown
Contributor

Deployed changes to https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net

ℹ️ Staging slots are no longer created automatically - comment /deploy to deploy new commits.

@github-actions

Copy link
Copy Markdown
Contributor

🚀 Lighthouse Report

🌐 URL ⚡ Performance ♿ Accessibility ✅ Best Practices 🔍 SEO 📦 Bundle Size 🗑️ Unused Bundle
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/ 27 93 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/articles 47 97 59 57 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/company/about-us 49 97 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/company/clients 51 92 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/company/contact-us 50 92 59 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/consulting 56 88 56 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/consulting/net-upgrade 48 95 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/consulting/web-applications 46 95 59 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/employment 45 92 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/events/angular-superpowers-tour 40 97 56 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/events/ai-workshop 66 91 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/events/ai-workshop-essentials 28 95 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/netug/sydney 51 94 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/training/internship-fullstack 41 91 59 61 0.00 MB 0.00 MB

…gamenu

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@joshbermanssw

Copy link
Copy Markdown
Member Author

/deploy

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@joshbermanssw

Copy link
Copy Markdown
Member Author

/deploy

…asset

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@joshbermanssw

Copy link
Copy Markdown
Member Author

/deploy

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@joshbermanssw

Copy link
Copy Markdown
Member Author

/deploy

…own theming

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@joshbermanssw

Copy link
Copy Markdown
Member Author

/deploy

@github-actions

Copy link
Copy Markdown
Contributor

Deployed changes to https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net

ℹ️ Staging slots are no longer created automatically - comment /deploy to deploy new commits.

@github-actions

Copy link
Copy Markdown
Contributor

🚀 Lighthouse Report

🌐 URL ⚡ Performance ♿ Accessibility ✅ Best Practices 🔍 SEO 📦 Bundle Size 🗑️ Unused Bundle
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/ 22 93 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/articles 47 97 59 57 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/company/about-us 45 97 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/company/clients 51 92 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/company/contact-us 48 92 59 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/consulting 59 88 56 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/consulting/net-upgrade 47 95 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/consulting/web-applications 50 95 59 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/employment 44 92 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/events/angular-superpowers-tour 42 97 56 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/events/ai-workshop 57 91 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/events/ai-workshop-essentials 25 95 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/netug/sydney 51 94 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/training/internship-fullstack 54 91 59 61 0.00 MB 0.00 MB

The homepage theme was resolved in a useEffect (after first paint), so the
server-rendered dark default visibly flipped to the visitor's light theme on
load. Resolve it before paint instead:

- Co-located inline script inside each homepage theme scope sets `.dark` on its
  wrapper during HTML parsing, gated to `/`, so first paint already matches the
  resolved theme
- Seed HomeThemeProvider's state from the same resolver (+ suppressHydrationWarning)
  so React's first client render agrees and never flips
- Drive the last JS-`isDark` visuals from CSS so they resolve pre-paint too:
  nav bar bg/border via --home-nav-* vars, hero scoop via .home-scoop-fill,
  nav divider + sun/moon icon via `dark:` classes
- Static toggle aria-label (avoids a suppressed-hydration stale label)
- Delete the unused floating themeToggle

Theme stays scoped to the homepage — non-home routes emit no scope, no script,
no toggle.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@joshbermanssw

Copy link
Copy Markdown
Member Author

/deploy

@github-actions

Copy link
Copy Markdown
Contributor

Deployed changes to https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net

ℹ️ Staging slots are no longer created automatically - comment /deploy to deploy new commits.

@github-actions

Copy link
Copy Markdown
Contributor

🚀 Lighthouse Report

🌐 URL ⚡ Performance ♿ Accessibility ✅ Best Practices 🔍 SEO 📦 Bundle Size 🗑️ Unused Bundle
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/ 18 95 56 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/articles 92 97 59 57 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/company/about-us 70 97 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/company/clients 93 92 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/company/contact-us 73 92 59 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/consulting 47 88 56 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/consulting/net-upgrade 68 95 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/consulting/web-applications 63 95 59 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/employment 60 92 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/events/angular-superpowers-tour 61 97 56 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/events/ai-workshop 81 91 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/events/ai-workshop-essentials 25 95 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/netug/sydney 79 94 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/training/internship-fullstack 81 91 59 61 0.00 MB 0.00 MB

The textures keyed their gradient/filter ids off useId, whose tree-position
value shifted once a sibling (the theme pre-paint script) was added before them,
desyncing the server vs client render and throwing React #418 in prod. Derive
the ids from the card index instead — deterministic across server and client.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@joshbermanssw

Copy link
Copy Markdown
Member Author

/deploy

@github-actions

Copy link
Copy Markdown
Contributor

Deployed changes to https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net

ℹ️ Staging slots are no longer created automatically - comment /deploy to deploy new commits.

@github-actions

Copy link
Copy Markdown
Contributor

🚀 Lighthouse Report

🌐 URL ⚡ Performance ♿ Accessibility ✅ Best Practices 🔍 SEO 📦 Bundle Size 🗑️ Unused Bundle
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/ 28 93 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/articles 92 97 59 57 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/company/about-us 70 97 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/company/clients 74 92 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/company/contact-us 57 92 59 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/consulting 59 88 56 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/consulting/net-upgrade 63 95 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/consulting/web-applications 64 95 59 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/employment 70 92 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/events/angular-superpowers-tour 68 97 56 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/events/ai-workshop 82 91 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/events/ai-workshop-essentials 27 95 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/netug/sydney 77 94 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/training/internship-fullstack 91 91 59 61 0.00 MB 0.00 MB

The inline pre-paint script runs (and mutates the DOM) before React hydrates, so
React 19's production hydration flagged its contents as a mismatch and threw #418,
regenerating the homepage subtree. Mark it suppressHydrationWarning so React skips
re-validating it. Verified against a local production build: 0 console errors,
theme still resolves before first paint.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@joshbermanssw

Copy link
Copy Markdown
Member Author

/deploy

@github-actions

Copy link
Copy Markdown
Contributor

Deployed changes to https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net

ℹ️ Staging slots are no longer created automatically - comment /deploy to deploy new commits.

@joshbermanssw

Copy link
Copy Markdown
Member Author

/deploy

@github-actions

Copy link
Copy Markdown
Contributor

Deployed changes to https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net

ℹ️ Staging slots are no longer created automatically - comment /deploy to deploy new commits.

@github-actions

Copy link
Copy Markdown
Contributor

🚀 Lighthouse Report

🌐 URL ⚡ Performance ♿ Accessibility ✅ Best Practices 🔍 SEO 📦 Bundle Size 🗑️ Unused Bundle
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/ 37 93 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/articles 88 97 59 57 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/company/about-us 69 97 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/company/clients 99 92 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/company/contact-us 81 92 59 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/consulting 56 88 56 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/consulting/net-upgrade 59 95 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/consulting/web-applications 61 95 59 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/employment 70 92 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/events/angular-superpowers-tour 66 97 56 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/events/ai-workshop 93 91 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/events/ai-workshop-essentials 32 95 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/netug/sydney 71 94 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4867.azurewebsites.net/training/internship-fullstack 93 91 59 61 0.00 MB 0.00 MB

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant