Skip to content

ALFMOB-266: Integrate typography tokens (Figma-named provider + full call-site migration)#87

Open
khoinguyen-mindera wants to merge 54 commits into
mainfrom
ALFMOB-266-integrate-typography-tokens
Open

ALFMOB-266: Integrate typography tokens (Figma-named provider + full call-site migration)#87
khoinguyen-mindera wants to merge 54 commits into
mainfrom
ALFMOB-266-integrate-typography-tokens

Conversation

@khoinguyen-mindera

@khoinguyen-mindera khoinguyen-mindera commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

ALFMOB-266 — Integrate typography tokens from design token JSON

Ticket: ALFMOB-266 · Epic: ALFMOB-264 · ADR: ALFMOB-293

What & why

Drives the iOS typography system from the generated design tokens (SharedUI/GeneratedTokens/Typography+Generated.swift) instead of hardcoded constants. Per the epic ADR, the public typography surface now uses the Figma token names verbatim — the legacy header/paragraph/small/tiny system is removed. The themed-provider middle layer is kept (DI-injected, mockable); UI code never touches Typography.* directly.

Scope note: this absorbs most of ALFMOB-267 (the full call-site migration) per product direction.

Changes

  • New token-driven providertheme.font.display / heading / body / label / link.*, each a ThemedTypographyStyle value type:
    • theme.font.heading.large("Title") → styled AttributedString (callAsFunction; underline:/strike: params)
    • theme.font.body.medium.uiFontUIFont for UIKit/.font(Font(…))/.withSize sites
  • Bridge TypographyStyle.uiFont: "SF Pro"UIFont.systemFont(ofSize:weight:) (not UIFont(name:)); "Libre Baskerville" → bundled brand face; weight Int → UIFont.Weight (400→.regular, 500→.medium); token line-height + kerning applied via the existing AttributedString.build.
  • Brand font — bundled Libre Baskerville Regular (SIL OFL 1.1, free for commercial use) in Fonts.xcassets + OFL.txt; registered via the existing AlfieApp FontManager.registerAll() launch hook.
  • Migrated all ~250 call sites across ~80 files (SharedUI, DebugMenu, feature modules) to the new API.
  • Removed the legacy Typography{Header,Paragraph,Small,Tiny} protocols/classes; trimmed TypographyProvider; setupAppearance()heading.small.uiFont.
  • Tests — new TypographyStyleFontTests + TypographyProviderTokenTests (pointSize/weight/family resolution, system-vs-UIFont(name:), brand registration, provider == token).

Token mapping (legacy → Figma)

header.h1→heading.large (36→32) · h2→heading.medium · h3→heading.small · paragraph.*→body.medium · small.*→body.small (14→12) · tiny.*→body.small. Underline/strike preserved via params; bold/italic distinctions dropped (legacy already rendered as a single Medium face).

⚠️ Expected visual changes (accepted)

Tokens now apply real line-height, kerning and weights, so themed text shifts app-wide: h1 36→32, small 14→12, body weight → regular, small/tiny converge at 12pt, bold emphasis dropped. Snapshot tests are disabled (pre-existing), so these have no automated visual coverage — value-equality unit tests + a manual DebugMenu Typography check only. Visual polish/baseline refresh is deliberately out of scope.

Verification

./Alfie/scripts/verify.sh --skip-integration → ✅ build + unit tests pass (integration skipped — no local BFF). Multi-lens code review (foundation + migration/adversarial): clean.

Notes

  • No edits to GeneratedTokens/ or project.pbxproj.
  • Planning artifacts (scope/plan/grill/red-team) under Docs/Plans/ALFMOB-266-integrate-typography-tokens/.

🤖 Generated with Claude Code

Copilot AI review requested due to automatic review settings June 29, 2026 09:02

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 migrates Alfie iOS typography to be driven by generated design tokens, exposing a new Figma-named typography surface via ThemeProvider.shared.font and updating all call sites to use it, while bundling/registering the brand font and adding unit coverage for token-to-font bridging.

Changes:

  • Introduces token-driven typography API (theme.font.display/heading/body/label/link) backed by ThemedTypographyStyle (callAsFunction + .uiFont).
  • Removes the legacy header/paragraph/small/tiny typography system and migrates SharedUI, DebugMenu, and feature-module call sites.
  • Adds Libre Baskerville (license + asset catalog entry) and unit tests validating font resolution and provider/token consistency.

Reviewed changes

Copilot reviewed 107 out of 108 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
Docs/Plans/ALFMOB-266-integrate-typography-tokens/scope.md Documents token contract + legacy system scope
Docs/Plans/ALFMOB-266-integrate-typography-tokens/red-team.md Red-team findings and resolutions
Docs/Plans/ALFMOB-266-integrate-typography-tokens/plan.md Full migration plan and ACs
Docs/Plans/ALFMOB-266-integrate-typography-tokens/phase-5-remove-legacy.md Legacy removal steps/checklist
Docs/Plans/ALFMOB-266-integrate-typography-tokens/phase-4-migrate-features-tests.md Feature-module migration steps
Docs/Plans/ALFMOB-266-integrate-typography-tokens/phase-3-migrate-debugmenu.md DebugMenu migration steps
Docs/Plans/ALFMOB-266-integrate-typography-tokens/phase-2-migrate-sharedui.md SharedUI migration steps
Docs/Plans/ALFMOB-266-integrate-typography-tokens/phase-1-foundation.md Foundation bridge/provider plan
Docs/Plans/ALFMOB-266-integrate-typography-tokens/grill.md Decision record for rename-now migration
Docs/Plans/ALFMOB-266-integrate-typography-tokens/dev-foundation.md Phase-1 implementation summary
Docs/Plans/ALFMOB-266-integrate-typography-tokens/dev-3.md Feature-module migration summary
Docs/Plans/ALFMOB-266-integrate-typography-tokens/dev-2.md DebugMenu migration summary
Docs/Plans/ALFMOB-266-integrate-typography-tokens/dev-1.md SharedUI migration summary
Docs/Plans/ALFMOB-266-integrate-typography-tokens/_status.md Work status checklist and verification notes
Alfie/AlfieKit/Tests/SharedUITests/Typography/TypographyStyleFontTests.swift Tests for token→UIFont mapping + invariants
Alfie/AlfieKit/Tests/SharedUITests/Typography/TypographyProviderTokenTests.swift Tests ensuring provider styles match tokens
Alfie/AlfieKit/Sources/Web/UI/WebView.swift Migrates error view typography call sites
Alfie/AlfieKit/Sources/SharedUI/Theme/Typography/TypographyProvider.swift Replaces legacy provider surface with Figma groups
Alfie/AlfieKit/Sources/SharedUI/Theme/Typography/ThemedTypographyStyle.swift Adds callable style wrapper + .uiFont
Alfie/AlfieKit/Sources/SharedUI/Theme/Typography/Specifications/TypographyTinyProtocol.swift Deletes legacy tiny typography spec
Alfie/AlfieKit/Sources/SharedUI/Theme/Typography/Specifications/TypographySmallProtocol.swift Deletes legacy small typography spec
Alfie/AlfieKit/Sources/SharedUI/Theme/Typography/Specifications/TypographyParagraphProtocol.swift Deletes legacy paragraph typography spec
Alfie/AlfieKit/Sources/SharedUI/Theme/Typography/Specifications/TypographyHeaderProtocol.swift Deletes legacy header typography spec
Alfie/AlfieKit/Sources/SharedUI/Theme/Typography/Specifications/TypographyGroups.swift Adds Figma group protocols + implementations
Alfie/AlfieKit/Sources/SharedUI/Theme/Typography/Resources/LibreBaskerville-OFL.txt Adds OFL license text for bundled font
Alfie/AlfieKit/Sources/SharedUI/Theme/Typography/Resources/Fonts.xcassets/LibreBaskerville-Regular.dataset/Contents.json Adds font asset catalog entry
Alfie/AlfieKit/Sources/SharedUI/Theme/Typography/Helpers/TypographyStyle+Font.swift Adds typography token bridge + build(style:)
Alfie/AlfieKit/Sources/SharedUI/Theme/Typography/Helpers/FontNames.swift Adds Libre Baskerville font name + filename mapping
Alfie/AlfieKit/Sources/SharedUI/Theme/ThemeProvider.swift Updates appearance setup to new typography API
Alfie/AlfieKit/Sources/SharedUI/Theme/Segmented/ThemedSegmentedView.swift Migrates segmented view typography
Alfie/AlfieKit/Sources/SharedUI/Theme/Modal/ThemedModal.swift Migrates modal typography
Alfie/AlfieKit/Sources/SharedUI/Theme/Inputs/ThemedInput.swift Migrates input typography + .uiFont usage
Alfie/AlfieKit/Sources/SharedUI/Theme/Components/SizingBanner/SizingSwatchView.swift Migrates sizing swatch typography
Alfie/AlfieKit/Sources/SharedUI/Theme/Components/SizingBanner/ColorAndSizingSelectorHeaderView.swift Migrates sizing header typography
Alfie/AlfieKit/Sources/SharedUI/Theme/Components/SearchBar/ThemedSearchBarView.swift Migrates search bar typography + .uiFont usage
Alfie/AlfieKit/Sources/SharedUI/Theme/Components/RadioButton/RadioButton.swift Migrates radio button typography
Alfie/AlfieKit/Sources/SharedUI/Theme/Components/Loader/ThemedLoaderView.swift Migrates loader typography
Alfie/AlfieKit/Sources/SharedUI/Theme/Components/Loader/LoaderView.swift Migrates loader typography
Alfie/AlfieKit/Sources/SharedUI/Theme/Components/Checkbox/Checkbox.swift Migrates checkbox typography
Alfie/AlfieKit/Sources/SharedUI/Theme/Buttons/ThemedButton.swift Migrates button typography + underline param
Alfie/AlfieKit/Sources/SharedUI/Theme/Accordion/AccordionView.swift Migrates accordion typography
Alfie/AlfieKit/Sources/SharedUI/Helpers/Modifiers/Shimmering/MultilineShimmerEffectModifier.swift Migrates shimmer modifier typography + .uiFont
Alfie/AlfieKit/Sources/SharedUI/Components/Toolbar/ThemedToolbarTitle.swift Migrates toolbar title typography + .uiFont
Alfie/AlfieKit/Sources/SharedUI/Components/Toolbar/ThemedToolbarButton.swift Migrates toolbar button typography + .uiFont
Alfie/AlfieKit/Sources/SharedUI/Components/Tags/Tag.swift Migrates tag typography
Alfie/AlfieKit/Sources/SharedUI/Components/TabControl/TabControl.swift Migrates tab control typography
Alfie/AlfieKit/Sources/SharedUI/Components/SortBy/SortByView.swift Migrates sort-by typography + static Font usage
Alfie/AlfieKit/Sources/SharedUI/Components/Snackbar/SnackbarView.swift Migrates snackbar typography
Alfie/AlfieKit/Sources/SharedUI/Components/ProductCards/VerticalProductCardConfiguration+Extension.swift Migrates card configuration UIFont access
Alfie/AlfieKit/Sources/SharedUI/Components/ProductCards/HorizontalProductCard.swift Migrates product card typography
Alfie/AlfieKit/Sources/SharedUI/Components/Price/PriceComponentView.swift Migrates price typography + .uiFont sizing
Alfie/AlfieKit/Sources/SharedUI/Components/Indicators/PaginatedControl.swift Migrates pagination typography + .uiFont usage
Alfie/AlfieKit/Sources/SharedUI/Components/Indicators/BadgeViewModifier.swift Migrates badge typography
Alfie/AlfieKit/Sources/SharedUI/Components/Indicators/BadgeTabViewModifier.swift Migrates badge appearance UIFont usage
Alfie/AlfieKit/Sources/SharedUI/Components/ErrorView/ErrorView.swift Migrates optional mapping to callable style
Alfie/AlfieKit/Sources/SharedUI/Components/Chips/Chip.swift Migrates chip typography
Alfie/AlfieKit/Sources/SharedUI/Components/Carousel/ProductCarousel/ProductCarouselHeader.swift Migrates carousel header typography
Alfie/AlfieKit/Sources/SharedUI/Components/AppUpdate/ForceAppUpdateView.swift Migrates app update typography
Alfie/AlfieKit/Sources/Search/UI/SearchView.swift Migrates search empty-state typography
Alfie/AlfieKit/Sources/Search/UI/RecentSearchesView.swift Migrates recent-searches typography + underline param
Alfie/AlfieKit/Sources/ProductListing/UI/ProductListingFilterBar.swift Migrates PLP filter bar typography
Alfie/AlfieKit/Sources/ProductListing/UI/ProductListingFilter.swift Migrates static Font constant to .uiFont
Alfie/AlfieKit/Sources/ProductDetails/UI/ProductDetailsView.swift Migrates PDP typography including ErrorView
Alfie/AlfieKit/Sources/ProductDetails/UI/ProductDetailsColorAndSizeSheet.swift Migrates PDP sheet typography + .uiFont
Alfie/AlfieKit/Sources/MyAccount/UI/AccountSectionView.swift Migrates account section typography
Alfie/AlfieKit/Sources/Home/UI/HomeView.swift Migrates home title typography
Alfie/AlfieKit/Sources/DebugMenu/UI/FeatureToggle/FeatureToggleView.swift Migrates feature toggle typography + .uiFont
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Typography/TypographyDemoView.swift Updates demo to new typography groups
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Toolbar/ToolbarDemoView.swift Migrates toolbar demo typography
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Toggle/ToggleDemoView.swift Migrates toggle demo typography
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Tags/TagDemoView.swift Migrates tag demo typography
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/TabControl/TabControlIntrinsicWidthDemoView.swift Migrates tab control demo typography
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/TabControl/TabControlFixedWidthDemoView.swift Migrates tab control demo typography
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/StyleGuideDemoView.swift Migrates style guide demo typography
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Spacing/SpacingDemoView.swift Migrates spacing demo typography
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Snackbars/SnackbarDemoView.swift Migrates snackbar demo typography
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Shimmering/ShimmerDemoView.swift Migrates shimmer demo typography + .uiFont
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Shadow/ShadowDemoView.swift Migrates shadow demo typography
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Segments/SegmentsDemoView.swift Migrates segments demo typography
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/SearchBar/SearchBarDemoView.swift Migrates search bar demo typography
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Pricing/PriceComponentDemoView.swift Migrates pricing demo typography
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/PageControl/PageControlDemoView.swift Migrates page control demo typography
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Motion/MotionDemoView.swift Migrates motion demo typography
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Modal/ModalDemoView.swift Migrates modal demo typography + .uiFont
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Loading/LoadingDemoView.swift Migrates loading demo typography
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Inputs/InputDemoView.swift Migrates input demo typography
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Indicators/BadgeDemoView.swift Migrates badge demo typography
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Iconography/IconographyDemoView.swift Migrates iconography demo typography
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Helper/DemoHelper.swift Migrates demo helper typography
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Dividers/DividerDemoView.swift Migrates divider demo typography
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/CornerRadius/CornerRadiusDemoView.swift Migrates corner radius demo typography
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Components/RadioListDemoView.swift Migrates radio list demo typography
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Components/DatePickerDemoView.swift Migrates date picker demo typography
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Components/ChipsDemoView.swift Migrates chips demo typography
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Colors/ColorsDemoView.swift Migrates colors demo typography
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/CarouselDemoView/CarouselDemoView.swift Migrates carousel demo typography
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Buttons/ButtonDemoView.swift Migrates button demo typography
Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Accordion/AccordionDemoView.swift Migrates accordion demo typography
Alfie/AlfieKit/Sources/DebugMenu/UI/DeepLinking/DeepLinkDemoView.swift Migrates deep link demo typography
Alfie/AlfieKit/Sources/DebugMenu/UI/DebugMenuView.swift Migrates debug menu navigation typography
Alfie/AlfieKit/Sources/DebugMenu/UI/Configuration/AppUpdateDemoView.swift Migrates app update demo typography
Alfie/AlfieKit/Sources/DebugMenu/UI/BrazePush/BrazeDemoView.swift Migrates braze demo typography
Alfie/AlfieKit/Sources/CategorySelector/UI/CategoriesView.swift Migrates categories typography
Alfie/AlfieKit/Sources/CategorySelector/UI/BrandsView.swift Migrates brands typography + .uiFont uses
Alfie/AlfieKit/Sources/AppFeature/UI/TabBarItemView.swift Migrates tab bar item typography
Alfie/AlfieKit/Sources/AppFeature/UI/ForceAppUpdateView.swift Migrates force update typography
Alfie/AlfieKit/Package.swift Adds OFL license file as packaged resource

Comment thread Alfie/AlfieKit/Sources/DebugMenu/UI/Configuration/AppUpdateDemoView.swift Outdated
Comment thread Alfie/AlfieKit/Sources/DebugMenu/UI/Configuration/AppUpdateDemoView.swift Outdated
Comment thread Alfie/AlfieKit/Sources/DebugMenu/UI/Configuration/AppUpdateDemoView.swift Outdated
Comment thread Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Modal/ModalDemoView.swift Outdated
Comment thread Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Modal/ModalDemoView.swift Outdated
Comment thread Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Modal/ModalDemoView.swift Outdated
Comment thread Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Modal/ModalDemoView.swift Outdated

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

Copilot reviewed 107 out of 108 changed files in this pull request and generated 2 comments.

@khoinguyen-mindera khoinguyen-mindera changed the base branch from main to ALFMOB-270-integrate-spacing-shape-tokens June 30, 2026 07:27
Adopt Primitives.Colours.* design tokens; delete legacy Colors.primary/
secondary providers + Colors.xcassets. Conflicts resolved by keeping 266's
typography API (font.display/heading/body/label/link) and taking 274's color
tokens. No legacy Colors.* or old font API remain.
Adopt Primitives.Spacing.* and Sizing.* tokens; rename provider
ThemeProvider -> DesignSystem (font + spacing + shape). Conflicts resolved
keeping 266 typography (font.body/heading/display) + color tokens, taking
270 spacing/shape tokens + DesignSystem name. No legacy Colors/Spacing/
CornerRadius or old font API remain.
…r.xcassets

ThemedToggleView's ColorToggle now references Primitives.Colours.* (greys ->
neutrals, on-state greens -> semanticSuccess) instead of the ToggleColor.xcassets
asset catalog, which is removed. No asset-catalog Color("...") refs remain in
SharedUI. App-shell AccentColor/LaunchScreenBackground kept (build-setting/
storyboard, outside the token pipeline).
Color.white -> Primitives.Colours.neutrals0 (ColorSwatchView); Color.clear /
UIColor.clear -> Primitives.Colours.transparentTransparent(.ui) across app,
SharedUI, AppFeature, CategorySelector. Utils leaf module keeps Color.clear
(no SharedUI dependency; structural GeometryReader background). Also drop the
stale ToggleColor.xcassets resource entry from Package.swift.
@khoinguyen-mindera khoinguyen-mindera force-pushed the ALFMOB-270-integrate-spacing-shape-tokens branch from 7177d70 to eb29256 Compare July 1, 2026 09:51
Base automatically changed from ALFMOB-270-integrate-spacing-shape-tokens to main July 1, 2026 12:40
…typography-tokens

# Conflicts:
#	Alfie/AlfieKit/Sources/AppFeature/UI/ForceAppUpdateView.swift
#	Alfie/AlfieKit/Sources/AppFeature/UI/TabBarItemView.swift
#	Alfie/AlfieKit/Sources/CategorySelector/UI/BrandsView.swift
#	Alfie/AlfieKit/Sources/DebugMenu/UI/Configuration/AppUpdateDemoView.swift
#	Alfie/AlfieKit/Sources/DebugMenu/UI/DeepLinking/DeepLinkDemoView.swift
#	Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Buttons/ButtonDemoView.swift
#	Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/CarouselDemoView/CarouselDemoView.swift
#	Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Colors/ColorsDemoView.swift
#	Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/CornerRadius/CornerRadiusDemoView.swift
#	Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Dividers/DividerDemoView.swift
#	Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Helper/DemoHelper.swift
#	Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Iconography/IconographyDemoView.swift
#	Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Inputs/InputDemoView.swift
#	Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Loading/LoadingDemoView.swift
#	Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Modal/ModalDemoView.swift
#	Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Motion/MotionDemoView.swift
#	Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Pricing/PriceComponentDemoView.swift
#	Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/SearchBar/SearchBarDemoView.swift
#	Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Shadow/ShadowDemoView.swift
#	Alfie/AlfieKit/Sources/DebugMenu/UI/Demo/Shimmering/ShimmerDemoView.swift
#	Alfie/AlfieKit/Sources/ProductDetails/UI/ProductDetailsColorAndSizeSheet.swift
#	Alfie/AlfieKit/Sources/ProductDetails/UI/ProductDetailsView.swift
#	Alfie/AlfieKit/Sources/ProductListing/UI/ProductListingFilter.swift
#	Alfie/AlfieKit/Sources/ProductListing/UI/ProductListingFilterBar.swift
#	Alfie/AlfieKit/Sources/Search/UI/RecentSearchesView.swift
#	Alfie/AlfieKit/Sources/Search/UI/SearchView.swift
#	Alfie/AlfieKit/Sources/SharedUI/Components/AppUpdate/ForceAppUpdateView.swift
#	Alfie/AlfieKit/Sources/SharedUI/Components/Carousel/ProductCarousel/ProductCarouselHeader.swift
#	Alfie/AlfieKit/Sources/SharedUI/Components/Chips/Chip.swift
#	Alfie/AlfieKit/Sources/SharedUI/Components/ErrorView/ErrorView.swift
#	Alfie/AlfieKit/Sources/SharedUI/Components/Indicators/BadgeViewModifier.swift
#	Alfie/AlfieKit/Sources/SharedUI/Components/Price/PriceComponentView.swift
#	Alfie/AlfieKit/Sources/SharedUI/Components/ProductCards/HorizontalProductCard.swift
#	Alfie/AlfieKit/Sources/SharedUI/Components/ProductCards/VerticalProductCardConfiguration+Extension.swift
#	Alfie/AlfieKit/Sources/SharedUI/Components/SortBy/SortByView.swift
#	Alfie/AlfieKit/Sources/SharedUI/Components/Toolbar/ThemedToolbarTitle.swift
#	Alfie/AlfieKit/Sources/SharedUI/Helpers/Modifiers/Shimmering/MultilineShimmerEffectModifier.swift
#	Alfie/AlfieKit/Sources/SharedUI/Theme/Components/ColorBanner/ColorSwatchView.swift
#	Alfie/AlfieKit/Sources/SharedUI/Theme/Components/Loader/LoaderView.swift
#	Alfie/AlfieKit/Sources/SharedUI/Theme/Components/Loader/ThemedLoaderView.swift
#	Alfie/AlfieKit/Sources/SharedUI/Theme/Components/SearchBar/ThemedSearchBarView.swift
#	Alfie/AlfieKit/Sources/SharedUI/Theme/Components/SizingBanner/ColorAndSizingSelectorHeaderView.swift
#	Alfie/AlfieKit/Sources/SharedUI/Theme/DesignSystem.swift
#	Alfie/AlfieKit/Sources/SharedUI/Theme/Inputs/ThemedInput.swift
#	Alfie/AlfieKit/Sources/SharedUI/Theme/Modal/ThemedModal.swift
#	Alfie/AlfieKit/Sources/SharedUI/Theme/Segmented/ThemedSegmentedView.swift
#	Alfie/AlfieKit/Sources/Web/UI/WebView.swift

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

Copilot reviewed 124 out of 125 changed files in this pull request and generated 2 comments.

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

Copilot reviewed 124 out of 125 changed files in this pull request and generated 2 comments.

Comment on lines +16 to +20
override func setUp() {
super.setUp()
// Brand (Display) styles resolve via UIFont(name:), so the bundled face must be registered.
try? FontManager.registerAll()
}
Comment on lines +8 to +12
override func setUp() {
super.setUp()
// The brand (Display) face resolves through UIFont(name:), so it must be registered.
try? FontManager.registerAll()
}

@amccall-mindera amccall-mindera 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.

Approving ALFMOB-266. Typography is now token-driven end-to-end: the UIFont bridge resolves SF Pro via systemFont and the brand face via UIFont(name:) with a safe size/weight-preserving fallback; AttributedString builders reuse the existing line-height/kerning path; Libre Baskerville is bundled and registered at launch; and the provider→token unit tests compare all token fields (family/weight/size/lineHeight/letterSpacing), not just point size. The ~250-site migration and removal of the legacy Header/Paragraph/Small/Tiny protocols are per the epic ADR (absorbing ALFMOB-267) — worth updating the AC wording to match. App-wide visual shifts are accepted per the PR description. Prior Copilot threads reviewed; the remaining try? FontManager.registerAll() in test setup is a minor test-robustness nit, not blocking.

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.

3 participants