Skip to content

Add the TACC branding strip, the footer and the dark header to ui-react #206

Closed

Description

@mosoriob

Part of #79.

Question

Add the TACC and UT Austin chrome to ui-react, behind a runtime switch.

Today the flip in #77 drops the co-branding that mint.tacc.utexas.edu shows now.
ui-react renders the stock shadcn slate palette. It has no branding strip and no footer.
tailwind.config.ts:14 calls those slate values "TACC brand tokens (stubs)". They are not.

What Lit ships

Measured in mint-ui-lit, src/app/mint-app.ts
and src/components/my-footer.ts:

Surface Values
Branding strip #222222, 50px, centred, logos 24px, white separator 1px, white bottom border
Nav bar #222222, white text, 50px, bottom border 1px solid #7F7F7F, Roboto 13px/400
Footer #222222, 50px, right aligned, text #888888, "Powered by MINT" link

Decisions

A /wayfinder grilling session settled these. Do not re-open them here.

  1. Chrome only. Add the strip, add the footer, and repaint the existing Header dark.
    The Sidebar stays light. Do not adopt Lit's top nav. Do not reshape AppShell.
  2. Runtime switch. One flat string key, BRANDING, values tacc or none.
    The default is none. An unbranded deployment must be the default, not an accident.
    The logo paths, link targets and alt text live in the app as a named preset. They do
    not live in the config. This keeps the alt text under code review.
  3. Chrome-scoped CSS variables only. Do not repoint --primary or any other shadcn
    token. That recolours every button, badge and focus ring, and it is out of scope.
  4. Copy the two PNG files from mint-ui-lit/src/assets/images/ into ui-react/public/images/.
    Do not wait for the brand guidelines. See the research ticket.
  5. Footer position. Pin it to the bottom of the viewport, as a sibling of the content row.
    AppShell already owns the full height, so the scroll container does not change.

Work

  • AppShell.tsx — add the strip above Header, add the footer below the content row.
  • New BrandingStrip and Footer components in src/components/layout/.
  • BRANDING in all four config files. They must stay in step:
    src/vite-env.d.ts, scripts/generate-env-config.mjs, scripts/generate-env-config.d.ts,
    public/env-config.js.
  • Correct the wrong comment at tailwind.config.ts:14.

Acceptance

  • Tests assert that the strip and the footer render under BRANDING=tacc, and that the
    strip does not render under none or when the key is absent. Shipping UT logos to ISI
    is the one failure here with real consequences.
  • Max compares the result side by side against the live Lit app.

Activity

  1. added
    wayfinder:taskWayfinder ticket: manual work that unblocks a decision
    on Sep 1, 2026
  2. mosoriob commented on Sep 1, 2026

    @mosoriob
    ContributorAuthor

    Two corrections from #205. Apply them
    while building. Do not re-open the decisions.

    1. Logo height is 28px, not 24px. UT's minimum size rule governs shield height, not
    image height. At height:24px the shield renders 21.7px against a 25px minimum. 28px clears
    it and still fits the 50px strip.

    2. Separator margin is 17px, not 15px. Required side clearance equals the shield width,
    16.9px.

    Everything else in the table above is confirmed correct. #205 measured TACC's own live
    stylesheet: height:50px, background #222, centred, --branding-logo-height — the strip in
    mint-app.ts is a copy of TACC's branding-header, so those values are TACC's, not MINT's
    invention.

    The two PNGs are byte-identical to the files TACC serves today, so copy them with
    confidence. No permission is needed.

    Optional, if it is cheap: tacc-white.png is 100x30 shown at ~80x24, so it is soft on a
    retina screen. TACC serves a vector of its own at
    https://tacc.utexas.edu/static/site_cms/img/org_logos/tacc-formal.svg, drawn with
    fill="currentColor", so it turns white from CSS. Take it or leave it. There is no UT SVG —
    only EPS and PDF.

    Chart and values work moved to #207. This
    ticket is ui-react only.

  3. mosoriob commented on Sep 1, 2026

    @mosoriob
    ContributorAuthor

    Built in #209.

    What shipped

    • BrandingStrip above the header, Footer below the content row, Header repainted dark. The Sidebar stays light, AppShell keeps its shape.
    • BRANDING in all four config files, default none. The preset lives in src/lib/branding.ts.
    • Chrome colours are new CSS variables scoped to .mint-chrome. No shadcn token moved.
    • Both PNGs copied from mint-ui-lit into ui-react/public/images/.
    • The wrong comment at tailwind.config.ts:14 is corrected.

    Both corrections from #205 are applied: 28px logos, 17px separator margin.

    Acceptance

    Tests assert the strip renders under tacc and does not render under none, under an absent key, or under any other value. 950 tests pass; build and lint are clean. I rendered it at 1280x800 and the chrome is right.

    The side-by-side against the live Lit app is still open — that is yours.

    One thing to decide

    Roboto is not bundled. The chrome asks for it and falls back to the platform sans. A Google Fonts link would match Lit exactly but adds a third-party request to an app that also runs in-cluster. I left it out. Say if you want it.

    I left the optional tacc-formal.svg swap out too, to keep the diff to the PNGs you confirmed.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    wayfinder:taskWayfinder ticket: manual work that unblocks a decision

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions