Skip to content

feat(site-kit): SiteFooter renders the family footer the products kept writing themselves - #47

Merged
jlc488 merged 1 commit into
mainfrom
feat/site-kit-family-footer
Sep 6, 2026
Merged

feat(site-kit): SiteFooter renders the family footer the products kept writing themselves#47
jlc488 merged 1 commit into
mainfrom
feat/site-kit-family-footer

Conversation

@jlc488

@jlc488 jlc488 commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

가족 제품 셋이 각자 손으로 같은 푸터를 짜 놓고, 각자 "이건 kit을 고쳐야 하는데 그 릴리스를 기다려야 한다"고 주석에 적어 뒀습니다.

VisionLinq family-footer.tsx: "The family footer — the same three rows TraceLinq and AskLinq carry — … site-kit's own SiteFooter takes only a flat link list; extending it is a dds release this page would then wait on."

BookLinq MarketingFrame.tsx: "… is owned here: extending SiteFooter is a dds release this page would then wait on."

두 레포의 행 CSS는 이미 바이트 단위로 같아져 있었습니다. 사본 셋 + 같은 릴리스를 가리키는 메모 셋 = 그 릴리스가 늦은 것입니다. D-118("한 번이라도 쓰면 올린다")로 보면 만기가 세 번 지났습니다.

SiteFooter가 이제 그리는 것

  • 언어 행(선택)locale·localeRegistry(기본값 가족 14개)·onLocaleSelect(고른 값을 쿠키에 남기는 제품용). 안 넘기면 행이 안 나옵니다 — 헤더가 이미 전 언어를 제공하는 제품은 목록 사본을 하나 더 원하지 않습니다.
  • brand.logoSiteBrand에 이미 있던 prop을 푸터가 조용히 버리고 있었습니다. AskLinq만 가족 마크 없이 나가고 있었던 이유이고, 그게 마치 설계인 것처럼 보였던 이유입니다.
  • family — 브랜드 이름 뒤에 가운뎃점으로 잇는 링크들. 점은 aria-hidden이라 스크린리더는 이름만 읽습니다.
  • <bdi>로 감싼 저작권(선택적 copyrightHref). © 2026 DevsLab은 중립·숫자·라틴 런이 섞여 RTL 페이지에서 DevsLab 2026 ©로 재배열됩니다 — 두 소비자가 각각 따로 발견해 따로 고쳐 뒀던 문제입니다.

호환

덧붙이기만 합니다. brand/links/copyright/messages만 넘기던 호출부는 기존 한 행 그대로에 마크만 더해집니다. styles.css에 세 행 규칙(.site-footer__langs·__row·__brand)이 들어가므로 소비자들은 자기 사본을 지울 수 있습니다.

검증

pnpm run verify:site-kit:ui · pnpm run check(docs sync·consumer 벤더링 포함) 통과, 신규 footer.test.tsx 7/7. changeset 포함(minor → 0.7.0).

다음

머지·발행 후 소비자 순서: AskLinq(오늘 어긋난 게 여기) → VisionLinq → BookLinq가 각자 사본 삭제. TraceLinq도 같은 사본을 들고 있으나 그 레포는 제가 건드리지 않는 곳이라 소유자 몫으로 남깁니다.

…t writing themselves

Three products carry a hand-written family footer. VisionLinq's says "the same
three rows TraceLinq and AskLinq carry … site-kit's own SiteFooter takes only a
flat link list; extending it is a dds release this page would then wait on."
BookLinq's says nearly the same sentence. Their CSS for the rows had already
converged byte-for-byte. Three copies and three notes naming the same missing
release is the release being overdue, so here it is.

SiteFooter now renders:

- an optional language row — `locale`, `localeRegistry` (defaults to the
  family's fourteen), `onLocaleSelect` for a product that remembers the pick.
  Omitted, no row: a product whose header already offers every language does
  not want a second copy of the list.
- `brand.logo`. The prop was already in SiteBrand and the footer silently
  dropped it, which is why AskLinq shipped without the family mark while every
  other product drew one — and why that looked like a design decision.
- `family`, links after the brand name separated by middots that are
  aria-hidden, so a screen reader reads the names and not "dot".
- the copyright in `<bdi>`, optionally linked. "© 2026 DevsLab" mixes neutral,
  digit and Latin runs, which the bidi algorithm reorders on an RTL page into
  "DevsLab 2026 ©"; both consumers had found this and isolated it separately.

Additive: a caller passing only brand/links/copyright/messages keeps the single
row it had, plus its mark. `styles.css` gains the three-row rules the consumers
were each maintaining, so they can delete theirs.
@jlc488
jlc488 merged commit 1249d1a into main Sep 6, 2026
2 checks passed
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