feat(THI-53): modernize glossary + compare - #24
Merged
tdody merged 1 commit intoApr 19, 2026
Merged
Conversation
Glossary (pages/GlossaryPage.tsx) - Editorial header: caps label + serif 44px "Every term, defined." title + search input on the right (live filter over term / definition / formula) - Category <Segmented> (All / Metrics / Revenue / Expenses / Financing / Tax) filters the visible entries - A–Z index row: 26 JetBrains Mono buttons, border-rule-strong when entries exist for that letter, disabled + opacity-40 + cursor-not-allowed when empty. Clicking scrolls to the letter section. - Sections grid: 80px serif letter column (48px leading-none) + entry list on the right - Entry layout: serif 22px term, caps category pill, ink-2 body, optional Formula box (border + mono value + caps "Formula" label), optional Related row (caps "Related" + accent buttons that smooth-scroll and briefly ring-accent the target) - No-match state uses the dashed-border EmptyState pattern from THI-47 Compare (components/Comparison/ComparisonView.tsx) - Breadcrumb "← All properties" replacing the old indigo back button - Caps label "Compare · N" + serif 44px "Side by side" title - Full-width table with fixed 220px metric label column + per-property columns (serif name, ink-3 city · scenario subtitle) - Best-value highlighting now adds a caps "Best" pill (border-accent + text-accent) next to the winning cell in addition to accent-coloring the value. Non-best cells are text-ink. - Verdict row uses caps labels with accent / warn / negative tones (Strong / Marginal / Negative) - All indigo / sky / emerald / red / slate classes replaced with tokens Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Modernizes the two remaining standalone pages around the THI-45/46 design system.
Glossary (
pages/GlossaryPage.tsx)<Segmented>with All / Metrics / Revenue / Expenses / Financing / Taxborder-rule-strongwith hover accent when entries exist, disabledopacity-40 cursor-not-allowedwhen empty. Click scrolls to the letter section.text-[48px] leading-none) + entry list on the rightEmptyStatepattern matching THI-47Compare (
components/Comparison/ComparisonView.tsx)city · scenariosubtitle)border-accent text-accent) next to the winning cell in addition to accent-coloring the value. Non-best cells aretext-ink.Preserved behavior
ComparePage.tsxwrapper unchanged — still parses?ids=…and hands toComparisonViewgetBestIndex/getVerdictlogic identicaldata/glossary.ts, 72 entries, 5 categories)Test plan
npm run lint— cleannpm run build— passes, CSS 48.26 kB (-3 kB), 118 modules/compare?ids=a,b,c, best-value pill appears next to winning cell per row, verdict row renders tones correctly🤖 Generated with Claude Code