feat(trendz): rebrand landing to Trendz indigo color palette#517
feat(trendz): rebrand landing to Trendz indigo color palette#517DmytroKhylko wants to merge 2 commits into
Conversation
- Replace ThingsBoard blue (#2A7DEC) with Trendz indigo (#3D50F5) across all landing SVG icons and CSS custom properties - Update surface colors to indigo tints (#f4f5fe, #dcdff9) - Fix hero height on xl: cap at 1000px and subtract header + promo banner height - Remove static padding-top in favour of header-height-aware layout - Widen xl hero container max-width from 1400px to 1520px - Make Metric Explorer CTA full-width on mobile, auto on sm+ - Adjust ProjectScreenFrame hero fill to match new surface tint
vvlladd28
left a comment
There was a problem hiding this comment.
Review summary
Reviewed 16 changed files in feat(trendz): rebrand landing to Trendz indigo color palette. Left 5 comments inline.
The bulk of the PR is a mechanical color swap (#2A7DEC → #3D50F5) across 12 landing SVGs and the Trendz CSS variables, which looks correct, and the ProjectScreenFrame hero variant is only consumed by the Trendz hero so its fill change doesn't leak to other products. The one thing worth a closer look is the hero layout change: the header-aware height calc() was added only at the xl breakpoint, while the base padding-top that offset the fixed header was removed for all widths — so the mobile/tablet hero may now render under the fixed header. The remaining comments are about the rebrand hardcoding the indigo in several places rather than referencing the existing $color-brand token.
This review was auto-generated. Findings may contain errors — please verify before applying changes.
| @@ -289,13 +288,12 @@ const posterImg = await getImage({ | |||
| // 1280px+ — side-by-side layout, max container width | |||
| @include media-up(xl) { | |||
| #trendz-hero { | |||
There was a problem hiding this comment.
This header-aware height calc only kicks in at xl. But the base #trendz-hero rule lost its padding-top: 100px (and this xl block also dropped padding-top: 80px) with nothing replacing the offset below xl. The header is position: fixed, opaque on this page (headerVariant="solid-shadow"), $header-height: 80px tall (plus --promo-h when the promo banner shows), and BaseLayout zeroes --sl-main-pad — so below 1280px the hero now starts at y: 0 under the fixed header. Won't the trendz chip and the top of the H1 be clipped behind it on mobile/tablet? At xl the shorter height keeps the centered content clear, but the sub-xl range seems to have lost its offset. If a full-bleed-under-header look is intended, ignore this — otherwise the base rule probably needs a padding-top (or margin-top) of roughly var(--header-height) + var(--promo-h, 0px).
| @@ -30,13 +30,13 @@ import FAQSection from '../../../components/Trendz/FAQSection.astro'; | |||
| @use '../../../styles/variables' as *; | |||
|
|
|||
| :root { | |||
There was a problem hiding this comment.
#3d50f5 is already defined as $color-brand in src/styles/_variables.scss (documented there as the source of truth for the indigo, and also exposed as the --color-brand CSS var). The previous code referenced a token via #{$color-primary}; this rebrand drops that indirection in favor of the raw hex. Could this be --color-trendz-accent: #{$color-brand} (or var(--color-brand)) instead? Same thought for the surface tints — as written they're floating literals, so the next palette change has to track each one down by hand. (#2336d4 / #6272f7 don't have tokens today, so inlining those is fair.)
| default: base, | ||
| // Lighter fill, larger radius — used in hero video/image frames | ||
| hero: { ...base, radius: '8px', fill: '#e5efff' }, | ||
| hero: { ...base, radius: '8px', fill: '#dcdff9' }, |
There was a problem hiding this comment.
This bakes a Trendz-specific tint (#dcdff9, which equals the page's --color-trendz-surface-accent) into the default of a shared, product-agnostic Services component. Trendz is the only consumer of the hero variant today so it works — but the component already reads a --psf-fill override (which the Trendz page sets on :root), so driving the hero fill from the page via that variable would keep the brand color in one place and avoid this literal silently drifting out of sync on the next rebrand.
| @@ -1,3 +1,3 @@ | |||
| <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> | |||
| <path d="M23.0457 16.2005L17.7505 14.2494L15.7995 8.95422C15.7002 8.68481 15.5206 8.45234 15.285 8.28814C15.0494 8.12394 14.7692 8.0359 14.482 8.0359C14.1949 8.0359 13.9146 8.12394 13.6791 8.28814C13.4435 8.45234 13.2639 8.68481 13.1645 8.95422L11.2135 14.2494L5.91832 16.2005C5.64892 16.2998 5.41643 16.4794 5.25224 16.715C5.08804 16.9505 5 17.2308 5 17.5179C5 17.805 5.08804 18.0854 5.25224 18.321C5.41643 18.5566 5.64892 18.736 5.91832 18.8355L11.2135 20.7864L13.1645 26.0816C13.2639 26.3511 13.4435 26.5835 13.6791 26.7478C13.9146 26.9119 14.1949 27 14.482 27C14.7692 27 15.0494 26.9119 15.285 26.7478C15.5206 26.5835 15.7002 26.3511 15.7995 26.0816L17.7505 20.7864L23.0457 18.8355C23.3151 18.736 23.5476 18.5566 23.7118 18.321C23.876 18.0854 23.9641 17.805 23.9641 17.5179C23.9641 17.2308 23.876 16.9505 23.7118 16.715C23.5476 16.4794 23.3151 16.2998 23.0457 16.2005ZM22.627 17.6996L17.0706 19.7474C16.9883 19.7777 16.9136 19.8254 16.8516 19.8874C16.7896 19.9495 16.7418 20.0243 16.7115 20.1065L14.6636 25.663C14.6499 25.7001 14.6251 25.732 14.5926 25.7546C14.5602 25.7772 14.5216 25.7894 14.482 25.7894C14.4425 25.7894 14.4039 25.7772 14.3714 25.7546C14.339 25.732 14.3142 25.7001 14.3005 25.663L12.2526 20.1065C12.2223 20.0243 12.1745 19.9495 12.1125 19.8874C12.0505 19.8254 11.9758 19.7777 11.8935 19.7474L6.33698 17.6996C6.29992 17.6858 6.26794 17.661 6.24537 17.6286C6.22279 17.5961 6.21069 17.5575 6.21069 17.5179C6.21069 17.4783 6.22279 17.4398 6.24537 17.4073C6.26794 17.3749 6.29992 17.3501 6.33698 17.3364L11.8935 15.2885C11.9758 15.2582 12.0505 15.2104 12.1125 15.1484C12.1745 15.0864 12.2223 15.0117 12.2526 14.9294L14.3005 9.37288C14.3142 9.33581 14.339 9.30384 14.3714 9.28127C14.4039 9.25869 14.4425 9.24659 14.482 9.24659C14.5216 9.24659 14.5602 9.25869 14.5926 9.28127C14.6251 9.30384 14.6499 9.33581 14.6636 9.37288L16.7115 14.9294C16.7418 15.0117 16.7896 15.0864 16.8516 15.1484C16.9136 15.2104 16.9883 15.2582 17.0706 15.2885L22.627 17.3364C22.6642 17.3501 22.6962 17.3749 22.7187 17.4073C22.7412 17.4398 22.7534 17.4783 22.7534 17.5179C22.7534 17.5575 22.7412 17.5961 22.7187 17.6286C22.6962 17.661 22.6642 17.6858 22.627 17.6996ZM17.9119 7.02641C17.9119 6.86587 17.9758 6.71192 18.0892 6.59841C18.2027 6.48489 18.3567 6.42113 18.5172 6.42112H20.333V4.60528C20.333 4.44475 20.3969 4.29079 20.5104 4.17728C20.6239 4.06377 20.7778 4 20.9384 4C21.0989 4 21.2528 4.06377 21.3663 4.17728C21.4798 4.29079 21.5437 4.44475 21.5437 4.60528V6.42112H23.3595C23.52 6.42113 23.674 6.48489 23.7875 6.59841C23.9009 6.71192 23.9648 6.86587 23.9648 7.02641C23.9648 7.18694 23.9009 7.34089 23.7875 7.4544C23.674 7.56792 23.52 7.63168 23.3595 7.63169H21.5437V9.44753C21.5437 9.60806 21.4798 9.76201 21.3663 9.87553C21.2528 9.98904 21.0989 10.0528 20.9384 10.0528C20.7778 10.0528 20.6239 9.98904 20.5104 9.87553C20.3969 9.76201 20.333 9.60806 20.333 9.44753V7.63169H18.5172C18.3567 7.63168 18.2027 7.56792 18.0892 7.4544C17.9758 7.34089 17.9119 7.18694 17.9119 7.02641ZM28 11.8687C28 12.0292 27.9362 12.1831 27.8227 12.2967C27.7092 12.4102 27.5552 12.4739 27.3947 12.4739H26.3859V13.4827C26.3859 13.6433 26.3221 13.7972 26.2086 13.9107C26.0951 14.0243 25.9411 14.088 25.7806 14.088C25.6201 14.088 25.4661 14.0243 25.3526 13.9107C25.2391 13.7972 25.1753 13.6433 25.1753 13.4827V12.4739H24.1665C24.006 12.4739 23.852 12.4102 23.7385 12.2967C23.625 12.1831 23.5612 12.0292 23.5612 11.8687C23.5612 11.7081 23.625 11.5542 23.7385 11.4407C23.852 11.3271 24.006 11.2634 24.1665 11.2634H25.1753V10.2546C25.1753 10.094 25.2391 9.94009 25.3526 9.82657C25.4661 9.71306 25.6201 9.64928 25.7806 9.64928C25.9411 9.64928 26.0951 9.71306 26.2086 9.82657C26.3221 9.94009 26.3859 10.094 26.3859 10.2546V11.2634H27.3947C27.5552 11.2634 27.7092 11.3271 27.8227 11.4407C27.9362 11.5542 28 11.7081 28 11.8687Z" fill="#2A7DEC"/> | |||
| <path d="M23.0457 16.2005L17.7505 14.2494L15.7995 8.95422C15.7002 8.68481 15.5206 8.45234 15.285 8.28814C15.0494 8.12394 14.7692 8.0359 14.482 8.0359C14.1949 8.0359 13.9146 8.12394 13.6791 8.28814C13.4435 8.45234 13.2639 8.68481 13.1645 8.95422L11.2135 14.2494L5.91832 16.2005C5.64892 16.2998 5.41643 16.4794 5.25224 16.715C5.08804 16.9505 5 17.2308 5 17.5179C5 17.805 5.08804 18.0854 5.25224 18.321C5.41643 18.5566 5.64892 18.736 5.91832 18.8355L11.2135 20.7864L13.1645 26.0816C13.2639 26.3511 13.4435 26.5835 13.6791 26.7478C13.9146 26.9119 14.1949 27 14.482 27C14.7692 27 15.0494 26.9119 15.285 26.7478C15.5206 26.5835 15.7002 26.3511 15.7995 26.0816L17.7505 20.7864L23.0457 18.8355C23.3151 18.736 23.5476 18.5566 23.7118 18.321C23.876 18.0854 23.9641 17.805 23.9641 17.5179C23.9641 17.2308 23.876 16.9505 23.7118 16.715C23.5476 16.4794 23.3151 16.2998 23.0457 16.2005ZM22.627 17.6996L17.0706 19.7474C16.9883 19.7777 16.9136 19.8254 16.8516 19.8874C16.7896 19.9495 16.7418 20.0243 16.7115 20.1065L14.6636 25.663C14.6499 25.7001 14.6251 25.732 14.5926 25.7546C14.5602 25.7772 14.5216 25.7894 14.482 25.7894C14.4425 25.7894 14.4039 25.7772 14.3714 25.7546C14.339 25.732 14.3142 25.7001 14.3005 25.663L12.2526 20.1065C12.2223 20.0243 12.1745 19.9495 12.1125 19.8874C12.0505 19.8254 11.9758 19.7777 11.8935 19.7474L6.33698 17.6996C6.29992 17.6858 6.26794 17.661 6.24537 17.6286C6.22279 17.5961 6.21069 17.5575 6.21069 17.5179C6.21069 17.4783 6.22279 17.4398 6.24537 17.4073C6.26794 17.3749 6.29992 17.3501 6.33698 17.3364L11.8935 15.2885C11.9758 15.2582 12.0505 15.2104 12.1125 15.1484C12.1745 15.0864 12.2223 15.0117 12.2526 14.9294L14.3005 9.37288C14.3142 9.33581 14.339 9.30384 14.3714 9.28127C14.4039 9.25869 14.4425 9.24659 14.482 9.24659C14.5216 9.24659 14.5602 9.25869 14.5926 9.28127C14.6251 9.30384 14.6499 9.33581 14.6636 9.37288L16.7115 14.9294C16.7418 15.0117 16.7896 15.0864 16.8516 15.1484C16.9136 15.2104 16.9883 15.2582 17.0706 15.2885L22.627 17.3364C22.6642 17.3501 22.6962 17.3749 22.7187 17.4073C22.7412 17.4398 22.7534 17.4783 22.7534 17.5179C22.7534 17.5575 22.7412 17.5961 22.7187 17.6286C22.6962 17.661 22.6642 17.6858 22.627 17.6996ZM17.9119 7.02641C17.9119 6.86587 17.9758 6.71192 18.0892 6.59841C18.2027 6.48489 18.3567 6.42113 18.5172 6.42112H20.333V4.60528C20.333 4.44475 20.3969 4.29079 20.5104 4.17728C20.6239 4.06377 20.7778 4 20.9384 4C21.0989 4 21.2528 4.06377 21.3663 4.17728C21.4798 4.29079 21.5437 4.44475 21.5437 4.60528V6.42112H23.3595C23.52 6.42113 23.674 6.48489 23.7875 6.59841C23.9009 6.71192 23.9648 6.86587 23.9648 7.02641C23.9648 7.18694 23.9009 7.34089 23.7875 7.4544C23.674 7.56792 23.52 7.63168 23.3595 7.63169H21.5437V9.44753C21.5437 9.60806 21.4798 9.76201 21.3663 9.87553C21.2528 9.98904 21.0989 10.0528 20.9384 10.0528C20.7778 10.0528 20.6239 9.98904 20.5104 9.87553C20.3969 9.76201 20.333 9.60806 20.333 9.44753V7.63169H18.5172C18.3567 7.63168 18.2027 7.56792 18.0892 7.4544C17.9758 7.34089 17.9119 7.18694 17.9119 7.02641ZM28 11.8687C28 12.0292 27.9362 12.1831 27.8227 12.2967C27.7092 12.4102 27.5552 12.4739 27.3947 12.4739H26.3859V13.4827C26.3859 13.6433 26.3221 13.7972 26.2086 13.9107C26.0951 14.0243 25.9411 14.088 25.7806 14.088C25.6201 14.088 25.4661 14.0243 25.3526 13.9107C25.2391 13.7972 25.1753 13.6433 25.1753 13.4827V12.4739H24.1665C24.006 12.4739 23.852 12.4102 23.7385 12.2967C23.625 12.1831 23.5612 12.0292 23.5612 11.8687C23.5612 11.7081 23.625 11.5542 23.7385 11.4407C23.852 11.3271 24.006 11.2634 24.1665 11.2634H25.1753V10.2546C25.1753 10.094 25.2391 9.94009 25.3526 9.82657C25.4661 9.71306 25.6201 9.64928 25.7806 9.64928C25.9411 9.64928 26.0951 9.71306 26.2086 9.82657C26.3221 9.94009 26.3859 10.094 26.3859 10.2546V11.2634H27.3947C27.5552 11.2634 27.7092 11.3271 27.8227 11.4407C27.9362 11.5542 28 11.7081 28 11.8687Z" fill="#3D50F5"/> | |||
There was a problem hiding this comment.
All 12 Trendz landing icons hardcode fill="#3D50F5", which is why this rebrand had to touch 12 SVGs plus the CSS. These are imported with ?raw and injected via set:html, so they render as inline SVG — the repo's existing currentColor convention (~37 other landing SVGs already use fill="currentColor") would apply cleanly here. Switching the fills to currentColor and setting color: var(--color-trendz-accent) on the .tf-card-icon wrapper would make every icon track the single accent token, turning the next rebrand into a one-line CSS change instead of editing 12 assets. Not blocking, but worth considering for the next iteration.
| text-decoration: none; | ||
| transition: background 0.3s; | ||
| white-space: nowrap; | ||
| width: 100%; |
There was a problem hiding this comment.
The blank line right after this width: 100%; has trailing whitespace (tabs) — Prettier/the lint config will flag it, so worth stripping.
Description
Before
After
Type of change
src/content/docs/**)src/content/_includes/**)src/components/**,src/styles/**)src/pages/**,src/data/**)src/data/redirects.ts)releaseskill)Affected products
Trendz
Related issues
Checklist
pnpm checkpasses (Astro / TypeScript)pnpm lint:eslintpassespnpm lint:slugcheckpasses (required if pages were added/renamed/moved across languages)pnpm lint:linkcheckpasses locally — required to merge; run it before requesting review (usepnpm lint:linkcheck:nobuildif you already ran a build)src/data/redirects.ts, andpnpm generate:redirectswas runsrc/data/versions.ts