Skip to content

💄 Redesign /consulting index + card colour tokens - #4939

Merged
isaaclombardssw merged 29 commits into
mainfrom
feature/consulting-card-tokens
Aug 6, 2026
Merged

💄 Redesign /consulting index + card colour tokens#4939
isaaclombardssw merged 29 commits into
mainfrom
feature/consulting-card-tokens

Conversation

@hveraus

@hveraus hveraus commented Jul 29, 2026

Copy link
Copy Markdown
Member

Redesigns the /consulting services index and introduces shared card colour tokens.

Changes:

  • New card tokens in styles.css, exposed to Tailwind as bg-card / bg-card-hover. Defined in both light (#f9f9f9 / #ffffff) and dark (#101010 / #151515) scopes. Card borders use the existing --hairline.
  • /consulting index redesigned: sticky sidebar, tag-filtered sections, new ConsultingCard component. Replaces the old category grid and the ?tag= query-param filter with hash anchors (old ?tag= URLs are still honoured).
  • /consulting opts into the existing home theming system, so it supports the light/dark switcher. Route list is now a single THEMED_ROUTES constant shared by the theme boundary, the pre-paint script and the mega menu.
  • Mobile layout: sidebar collapses to a sticky chip row.
  • New popular boolean on consulting index pages, rendering a POPULAR badge.
  • Section-building logic lives in helpers/consultingSections.ts and is unit-tested.
  • Deletes components/consulting/index/{category,pageCard,tag}.tsx and the framer-motion card animation they carried.

Not included: the homepage imageCards block was briefly moved onto the new tokens and has been reverted. Its dark:opacity-60 → group-hover:opacity-100 mechanism works for gradient presets, which a background-colour token cannot, and merging a token after the Tina-configured class silently disabled the "Card Background Colour" picker. Worth a focused follow-up rather than riding along here.

hveraus added 3 commits July 29, 2026 12:26
Dark-theme surface tokens for card backgrounds (#101010 default, #151515 hover), exposed to Tailwind as bg-card / bg-card-hover so cards across the site can share one definition.
Replace the tag-filter grid with a sticky sidebar + sectioned card layout driven by the home theme (light/dark). Extend the HomeTheme boundary, pre-paint script and mega menu dark scope to /consulting, and give the shell the .dark class so design tokens (incl. the new --card tokens and --hairline border) resolve on this route.
Swap the dark-mode 60%-opacity background trick for the explicit --card / --card-hover tokens, matching the /consulting cards. Border already uses --hairline.
@github-actions

github-actions Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Coverage report

St.
Category Percentage Covered / Total
🔴 Statements 0.94% 448/47864
🔴 Branches 15.02% 85/566
🔴 Functions 2.88% 14/486
🔴 Lines 0.94% 448/47864

Test suite run success

27 tests passing in 3 suites.

Report generated by 🧪jest coverage report action from dd3a9e3

hveraus added 2 commits July 29, 2026 12:47
category/pageCard/tag were only used by the previous tag-filter layout; pageCard still imported the removed useFilterContext export, breaking the next build type check.
Also express the conditional dark class via cn() — prettier-plugin-tailwindcss strips the leading space inside a template-literal conditional, which mangled the class into 'shelldark'.
@hveraus

hveraus commented Jul 29, 2026

Copy link
Copy Markdown
Member Author

/deploy

@github-actions

Copy link
Copy Markdown
Contributor

Deployed changes to https://app-sswwebsite-9eb3-pr-4939.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-4939.azurewebsites.net/ 3 100 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/articles 93 97 59 57 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/company/about-us 67 100 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/company/clients 99 95 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/company/contact-us 81 92 59 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/consulting 98 100 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/consulting/net-upgrade 85 100 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/consulting/web-applications 80 100 59 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/employment 80 95 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/events/angular-superpowers-tour 75 97 56 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/events/ai-workshop 97 91 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/events/ai-workshop-essentials 66 96 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/netug/sydney 80 94 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/training/internship-fullstack 81 91 56 61 0.00 MB 0.00 MB

hveraus added 2 commits July 29, 2026 16:55
New 'Popular' boolean on the consulting index page entries (Tina toggle). When on, the card shows a small uppercase pill next to the title, styled with the existing --consulting-accent token so it follows the light/dark theme.
@hveraus

hveraus commented Jul 29, 2026

Copy link
Copy Markdown
Member Author

/deploy

@github-actions

Copy link
Copy Markdown
Contributor

Deployed changes to https://app-sswwebsite-9eb3-pr-4939.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-4939.azurewebsites.net/ 45 95 56 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/articles 92 97 59 57 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/company/about-us 63 100 56 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/company/clients 99 95 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/company/contact-us 72 92 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/consulting 90 97 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/consulting/net-upgrade 85 100 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/consulting/web-applications 80 100 59 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/employment 68 95 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/events/angular-superpowers-tour 72 97 56 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/events/ai-workshop 86 91 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/events/ai-workshop-essentials 67 96 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/netug/sydney 76 94 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/training/internship-fullstack 80 91 56 61 0.00 MB 0.00 MB

Comment thread app/consulting/index.module.css Outdated
Comment thread app/consulting/index.tsx Outdated
Comment thread app/consulting/index.tsx Outdated
Comment thread app/consulting/index.tsx Outdated
Comment thread app/consulting/index.tsx Outdated

@joshbermanssw joshbermanssw left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

couple changes

@joshbermanssw joshbermanssw added the no-issue This label is used to bypass the PR-Lint check. Should be used for non-coding changes label Jul 29, 2026

@joshbermanssw joshbermanssw left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice direction on the redesign, and the imageCards change is a clean simplification (opacity fade to a real colour transition on shared tokens).

Two things I'd want fixed before this merges, both content losses rather than styling:

  1. 8 cards stop rendering. 6 pages carry no tags at all, so they fall to the [allServices] default and now match no section. On top of that, the new URL dedup drops two distinct cards (Microsoft Azure, Document Management) because they share a page reference with a differently-titled card. Details inline.
  2. The mega menu's two /consulting?tag=... deep links are dead, since the query-param reader is gone. content/megamenu/menu.json lines 38 and 65 need rewriting to the new hashes.

Rest of the comments are smaller: the themed-route list is now duplicated in three places, /consulting has no pre-paint script so it will flash dark to light for light-mode users, and there's a nested <main>.

I've deliberately left the index.module.css file alone here given my earlier comment on it. Worth knowing for whatever replaces it: the inactive nav colour (#aaaaaa on #fafafa) is 2.2:1 in light mode against a 4.5:1 requirement, and the POPULAR badge lands around 3.2:1 in dark, so both need new values wherever those styles end up.

Comment thread app/consulting/index.tsx Outdated
Comment thread app/consulting/index.tsx Outdated
Comment thread app/consulting/index.tsx
Comment thread app/consulting/index.tsx Outdated
Comment thread app/consulting/index.tsx Outdated
Comment thread app/consulting/index.tsx Outdated
Comment thread app/consulting/index.tsx Outdated
Comment thread components/layout/homeTheme.tsx Outdated
Comment thread components/server/MegaMenuWrapper.tsx Outdated
Comment thread styles.css
Copilot AI review requested due to automatic review settings August 5, 2026 00:15

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR aligns the /consulting index page card styling with the homepage by introducing shared “card” design tokens, and updates the consulting index UX to a sectioned, scroll-linked layout with dark/light theme support and a new “Popular” badge flag coming from Tina content.

Changes:

  • Adds shared card background tokens (--card, --card-hover) and exposes them via Tailwind (bg-card, bg-card-hover).
  • Rebuilds the /consulting index into a sidebar + section layout with intersection-based active navigation and “Popular” badge rendering.
  • Expands homepage-scoped theming behavior to also include /consulting (menu + theme boundary logic).

Reviewed changes

Copilot reviewed 11 out of 13 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
tina/collections/consulting.tsx Adds a new popular boolean field to the consulting index schema.
tailwind.config.js Exposes CSS variables as Tailwind colors card and card-hover.
styles.css Defines new dark-mode design tokens --card and --card-hover.
content/consulting/index/index.json Sets popular: true on a consulting card entry.
components/server/MegaMenuWrapper.tsx Treats /consulting like home for themed nav rendering/prepaint.
components/layout/homeTheme.tsx Extends themed-route gating and prepaint logic to /consulting.
components/consulting/index/tag.tsx Removes old tag list UI component (no longer used).
components/consulting/index/pageCard.tsx Removes old consulting card component (replaced by new layout).
components/consulting/index/category.tsx Removes old category renderer (replaced by new layout).
components/blocks/v3/imageCards/imageCards.tsx Switches dark-mode card fill to shared --card/--card-hover tokens.
app/consulting/index.tsx Implements the new consulting index layout, section navigation, and Popular badge.
app/consulting/index.module.css Adds the new consulting index styling (responsive + theme-aware).
Suppressed comments (1)

app/consulting/index.tsx:150

  • This scrollIntoView({ behavior: "smooth" }) ignores the user’s prefers-reduced-motion setting. For accessibility, use auto when reduced motion is requested.
    document.getElementById(id)?.scrollIntoView({
      behavior: "smooth",
      block: "start",
    });

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread app/consulting/index.tsx Outdated
Comment thread app/consulting/index.tsx Outdated
Comment thread app/consulting/index.tsx Outdated
Comment thread components/server/MegaMenuWrapper.tsx Outdated
hveraus and others added 2 commits August 5, 2026 07:32
Addresses review feedback: avoid *.module.css files, and don't add CSS
variables that are only used in one directory — new tokens should be global.

- Delete app/consulting/index.module.css (334 lines, ~30 page-scoped
  --consulting-* vars) and restyle index.tsx with Tailwind utilities only.
  Colours now resolve to the existing global design tokens through `dark:`
  variants, so the page declares no CSS variables of its own and the
  data-theme attribute (read by nothing else) is gone.
- max-md:/max-xl: mirror the old 767px/1279px media queries and the repo's
  custom not-first: variant replaces `.section + .section`, so cascade order
  is unchanged.
- Add only the genuinely missing values to tailwind.config.js theme.extend,
  global and reusable alongside the existing token mappings: brand /
  brand-subtle colours, sunken-glow / sunken-scrim background images,
  sidebar grid columns, z-15, and header-offset spacing.

Visual fixes requested alongside the refactor:
- Sidebar heading is now "SSW Services", pinned to one line, and shares a
  single type scale with the category headings (semibold, text-xl at md,
  text-2xl at xl) so the two stay in lockstep.
- Card and chip borders use border-0.75 instead of a bare `border`, which is
  3px in this repo's borderWidth scale (the module had 1px).
- Left nav items no longer take a hover background; the label still brightens.

Note for anyone touching this file: cn() is twMerge, which silently drops
utilities built from custom theme keys. It collapses two bg-* classes into
one, so the flat page colour is baked into the sunken-glow gradient as a
second layer; and it eats a bare `outline` next to outline-2, so focus uses
ring-* instead.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Addresses review comments on PR #4939.

Content losses:
- 6 pages with no `tags` at all fell to the `[allServices]` default and
  matched zero rendered sections, silently disappearing. They now also get
  `otherServices`, landing in the existing "Other SSW Services" catch-all —
  the same bucket every other untagged-by-convention page already uses.
- The url-only dedup in allMappedPages dropped "Microsoft Azure" and
  "Document Management" because they share a page reference with a
  differently-titled card ("Azure AI", "SharePoint"). Re-keyed on
  `${url}|${title}` so distinct cards survive but an actual copy-paste
  duplicate (same url *and* title) is still caught.
- content/megamenu/menu.json's two `/consulting?tag=...` links were dead
  (the query-param reader was removed in the sidebar redesign). Rewritten to
  the equivalent `#consulting-<slug>` hashes.

Smaller fixes:
- The `/`+`/consulting` themed-route list was duplicated in homeTheme.tsx
  (twice) and MegaMenuWrapper.tsx. Consolidated into one `THEMED_ROUTES`
  array, re-exported as `isThemedRoute` for MegaMenuWrapper to reuse.
- /consulting had no pre-paint script, so light-mode users saw a dark-to-light
  flash on load. It now renders via HomeThemeShell (extended with a
  `className` override) instead of a hand-rolled wrapper, picking up the same
  script the homepage uses.
- The page rendered its own <main>, nested inside PageLayout's — changed to
  a <div>.

Filter behaviour (follow-up ask): re-added "All SSW Services" as a real,
clickable sidebar entry — selecting it shows every section; selecting any
other tag now hides the rest, instead of just scrolling to it among
everything else. A hash on load (e.g. the mega menu's
#consulting-platform-development) selects that filter directly.

In the "All" view specifically, a page tagged under several sections (e.g.
"Microsoft Azure" is both Cloud and Infrastructure and Platform Development)
is claimed by its smallest matching section rather than repeating in every
one. Claiming has to run smallest-first, not sidebar order: every Content
Management Systems page is also tagged Website Development, so claiming
top-down handed all 8 to the broader bucket and erased the CMS heading
entirely. Verified against the real content data (no browser available in
this sandbox) that every section keeps at least one card and the total count
across the All view matches the total unique-page count exactly.

Also extracted the card markup into components/consulting/consultingCard/,
per review feedback to make it reusable rather than inline in the .map().

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

hveraus commented Aug 6, 2026

Copy link
Copy Markdown
Member Author

Hi @hveraus and @joshbermanssw

I know this is more about design, but...

  1. Should we create a new category to reduce the many "Other Services" list?

E.g.

Software Engineering & Delivery

  • Azure DevOps to GitHub Migration
  • Clean Architecture
  • Vertical Slice Architecture
  • Strategic Architecture
  • Software Auditing
  • ALM + GitHub + Azure DevOps
  • DevOps
  • Scrum
  • Kubernetes
  • Access Database Upsizing
  • Test Practice

There are too many items on that indexing page, we should add a tracker to review how many of them are not clicked, and hide them, we should do it in another PBI

hveraus and others added 2 commits August 6, 2026 03:51
Clicking a sidebar filter scrolled immediately, before React re-rendered
the (now much shorter) filtered grid. The browser then clamped that
scroll position against the new, shorter page, which could dump the
viewport at the very bottom with the section heading and sidebar both
scrolled off-screen — or, if the fix was to drop the scroll entirely,
leave it clamped there with nothing to correct it.

Scroll now happens inside requestAnimationFrame, after the filtered
content has committed, and only ever moves the viewport up to bring
the filtered section's top into view — so a click from the top of the
page no longer causes a gratuitous jump either.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@hveraus

hveraus commented Aug 6, 2026

Copy link
Copy Markdown
Member Author

Action points

  1. Make card hover states consistent

    • Remove the background-color change used in light mode.
    • Keep the red arrow animation.
    • Use a border-color change for hover in both light and dark mode.

Done. except the first one, there are subtle background change on both dark and light mode, I think it's nice.

  1. Improve text contrast

    • Darken inactive sidebar items in light mode.
    • Lighten breadcrumbs and other secondary text in dark mode.
    • Use consistent, theme-specific gray values.

Done.

  1. Remove repeated “SSW” wording

    • Change All SSW Services to All Services.
    • Change Other SSW Services to Other Services.
    • Rename the heading to Other Services.

Done.

  1. Remove or temporarily hide SSW Digital

    • Its website looks outdated and should not be promoted until it has been refreshed.

Not done, we'll clean up the index page in another PBI.

  1. Check category navigation

    • Keep the distinction clear: All Services displays everything, while an individual category displays only services within that category.
    • Ensure the active category remains visually clear, including on hover.

Done.

isaaclombardssw and others added 3 commits August 6, 2026 16:06
- imageCards: restore the Tina card-background picker. Merging the shared
  token after cardBackgroundClass made tailwind-merge drop every configured
  bg-*, so the CMS control was silently inert.
- consultingCard: use CustomLink again, restoring next/link soft nav and
  prefetch for internal cards and target/rel for external ones.
- /consulting: honour hashchange and popstate, so the mega menu's deep links
  work when already on the page; re-accept legacy ?tag= URLs.
- /consulting: use "instant", not "auto", for reduced motion. scroll-smooth is
  set globally on html, and "auto" defers to it.
- /consulting: let modified clicks through so categories can open in a new tab.
- Extract the section-building logic to helpers/consultingSections.ts and cover
  the smallest-section-claims-a-shared-page rule with tests.
- Revert unrelated tsconfig.json churn auto-written by next dev. Next forces
  jsx: preserve, so react-jsx would have churned back on the next build.
- Rename isHome to isThemed and correct the now-stale homepage-only comments.
- Trim the heaviest inline comments.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VRcoUyMuvLA51GPLK1Bdwo
- Revert imageCards.tsx to main. Moving it onto the card tokens broke the
  Tina "Card Background Colour" picker, and the reorder that fixed that made
  the dark hover a no-op (home.json picks #151515, same as --card-hover) and
  repainted light-mode cards. The opacity mechanism also works for the
  gradient presets, which a background-colour token cannot. Better as its own
  PR than riding along with the /consulting redesign.
- /consulting: reset to All Services when the URL matches no section, so
  going Back out of a filtered view doesn't leave a stale filter.
- /consulting: drop empty sections instead of rendering a bare heading.
- /consulting: document that hashchange/popstate cannot cover same-page
  mega-menu clicks (App Router uses pushState; vercel/next.js#62670).
- consultingCard: description is optional, matching its source type.
- consultingSections: unexport helpers with no external callers.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VRcoUyMuvLA51GPLK1Bdwo
- The legacy ?tag= fallback was ORed with the hash, so with both present
  sidebar order decided the winner: /consulting?tag=Design#consulting-cloud-
  and-infrastructure resolved to Design. The hash now wins outright and
  ?tag= is only consulted when there is no hash.
- That state was reachable because replaceState("#id") resolves relatively
  and preserved an existing query string. Rebuild the URL from pathname.
- Drop sidebar rows with no tag reference. The Tina field isn't required, and
  such a row rendered a filter that selected nothing and blanked the page.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VRcoUyMuvLA51GPLK1Bdwo
@isaaclombardssw isaaclombardssw changed the title 💄 Redesign /consulting index + shared card color tokens 💄 Redesign /consulting index + card colour tokens Aug 6, 2026
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VRcoUyMuvLA51GPLK1Bdwo
@isaaclombardssw

Copy link
Copy Markdown
Member

/deploy

@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

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

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

@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

🚀 Lighthouse Report

🌐 URL ⚡ Performance ♿ Accessibility ✅ Best Practices 🔍 SEO 📦 Bundle Size 🗑️ Unused Bundle
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/ 44 100 56 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/articles 100 97 59 57 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/company/about-us 67 100 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/company/clients 90 95 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/company/contact-us 81 92 59 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/consulting 89 97 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/consulting/net-upgrade 84 100 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/consulting/web-applications 81 100 59 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/employment 77 95 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/events/angular-superpowers-tour 57 97 56 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/events/ai-workshop 75 91 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/events/ai-workshop-essentials 61 96 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/netug/sydney 78 94 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/training/internship-fullstack 83 91 59 61 0.00 MB 0.00 MB

The 72px offset was clearing a sticky site header that doesn't exist, so
cards scrolled through the gap in full view above the bar instead of
sliding under its scrim and blur. Verified on the deploy preview.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VRcoUyMuvLA51GPLK1Bdwo
@isaaclombardssw

Copy link
Copy Markdown
Member

/deploy

@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

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

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

@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

🚀 Lighthouse Report

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

@isaaclombardssw isaaclombardssw left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ This is good to me, but would be good to get another review?

text-brand was layered on top of dark:text-muted-foreground. tailwind-merge
keeps both since they are different variant groups, and
'.dark .dark:text-muted-foreground' outranks a bare '.text-brand' on
specificity, so in dark mode the active item rendered rgba(255,255,255,0.78)
- identical to the inactive ones. Active and inactive colours are now
mutually exclusive rather than layered.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VRcoUyMuvLA51GPLK1Bdwo
@isaaclombardssw

Copy link
Copy Markdown
Member

/deploy

@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

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

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

@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

🚀 Lighthouse Report

🌐 URL ⚡ Performance ♿ Accessibility ✅ Best Practices 🔍 SEO 📦 Bundle Size 🗑️ Unused Bundle
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/ 42 100 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/articles 87 97 59 57 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/company/about-us 69 100 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/company/clients 99 95 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/company/contact-us 80 92 59 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/consulting 84 97 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/consulting/net-upgrade 77 100 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/consulting/web-applications 69 100 59 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/employment 64 95 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/events/angular-superpowers-tour 52 97 56 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/events/ai-workshop 94 91 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/events/ai-workshop-essentials 71 96 59 69 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/netug/sydney 71 94 56 61 0.00 MB 0.00 MB
https://app-sswwebsite-9eb3-pr-4939.azurewebsites.net/training/internship-fullstack 79 91 59 61 0.00 MB 0.00 MB

@babakamyljanovssw babakamyljanovssw left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@isaaclombardssw
isaaclombardssw enabled auto-merge (squash) August 6, 2026 23:33
@isaaclombardssw isaaclombardssw removed the no-issue This label is used to bypass the PR-Lint check. Should be used for non-coding changes label Aug 6, 2026
Tiago's 'Update branch' merge (19ac2b4) landed with no workflow runs and
no check-runs at all, leaving the PR BLOCKED on required checks. Actions is
healthy repo-wide, so this just re-fires the pull_request synchronize event.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VRcoUyMuvLA51GPLK1Bdwo
@isaaclombardssw
isaaclombardssw merged commit d441fd6 into main Aug 6, 2026
8 checks passed
@isaaclombardssw
isaaclombardssw deleted the feature/consulting-card-tokens branch August 6, 2026 23:51
designbyalex added a commit that referenced this pull request Aug 7, 2026
Resolved conflict in tina/tina-lock.json by regenerating it from the
merged schema rather than hand-merging — the file is 30MB of minified
single-line JSON, so the whole file is one conflict hunk and a textual
merge is not possible.

Verified the regenerated lock contains both sides' schema changes:
footer.bottomBar.poweredBy has the new `logo` field (this branch) and
the consulting collection reflects main's redesign (#4939).
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.

💄 Redesign the /consulting services index (dark mode, filtering, shared card tokens)

7 participants